/* Autor: Francesc Espona, 2009 */


var es = new Es();
var ample; //amplada de la capa
var mida;  //alçada de la finestra (clip)
var margex; //marge horitzontal de la finestra
var posx;
var posy;
var incr=0;
var pos; //desplaçament de la capa
var max_pos;
var n_casella_x;	// n. de casella en horitzontal (començant des de l'esquerra)
var n_casella_y;	// n. de casella en vertical (començant des de dalt)
var camaleo,i,j,k,l;	// Variables auxiliar per utilitzar-les en els timeouts


//inicialització del tauler
function IniciaTauler(NomTauler,posiciox,posicioy,n_taulers,altura,amplada,marge_entremig) {
	//Inicialitza variables	
	camaleo=DirCapa(NomTauler);
	posx=posiciox;
	posy=posicioy;
	max_pos=n_taulers*amplada;
	mida=altura; 
	ample=amplada;
	margex=marge_entremig;	// Marge entre files o entre columnes
	pos=altura;
	n_casella_x=0;
	n_casella_y=0;
	
	PosicionarCapa(camaleo,posx,posy);
	RetallarCapa(camaleo,(n_casella_y*mida),(n_casella_x+1)*ample,(n_casella_y+1)*mida,n_casella_x*ample);
	VisibilitatCapa(camaleo,"visible");
	//setTimeout("scroll()",4000); //temps abans de començar el scroll

}

function CanviaCasella(NomTauler,n_caselles_x, n_caselles_y) {
// Fa lliscar el tauler n_caselles_x en horitzontal i n_caselles_y en vertical
var signe_x,signe_y;
var distancia_x,distancia_y;

	// Desplaçament suau
	signe_x = -1*(Math.abs(n_caselles_x)/n_caselles_x);
	distancia_x = Math.abs(n_caselles_x) * ample;
	//alert("píxels a moure:"+distancia_x +", signe:"+signe_x);
	// Desplaçament en sentit horitzontal (x)
	camaleo=DirCapa(NomTauler);
	LliscaCapa(camaleo,distancia_x,0,50* signe_x,1);

	n_casella_x += n_caselles_x;
	n_casella_y += n_caselles_y;
	//alert("Mostro la casella ("+n_casella_x+","+n_casella_y+")");
}



function LliscaCapa(capa,distancia_x,distancia_y,factor_x,factor_y) {
// Realitza un desplaçament suau entre caselles, els factors indiquen el sentit i la velocitat
var desp=0;
var decr=0;
	i = distancia_x;
	j = distancia_y;
	k = factor_x;
	l = factor_y;
	camaleo = capa;
	
	if (i>0){
		decr = Math.min(distancia_x,Math.abs(factor_x));
		desp = decr * (Math.abs(factor_x)/factor_x);
		i-= decr;
		MoureCapa(capa,desp,0);
		MoureRetall(capa,0,-desp,0,-desp);
		//document.title=i;	// (control)
		setTimeout("LliscaCapa(camaleo,i,0,k,1)",10);
	}
}

function scroll() {
	if (incr<mida){   //desplaça suaument la quantitat de línies que vulguem
		incr++;
		pos++;
		MoureCapa(Retol,-1,0);
		RetallarCapa(Retol,0+pos,ample-margex,mida+pos,margex);
		setTimeout("scroll()",50); //velocitat de desplaçament
	} else {
		incr=0;
		if (pos<max_pos) {
	        	setTimeout("scroll()",3000);	//pausa entre desplaçaments
		} else {
			pos = 0;
			PosicionarCapa(Retol,posx,posy);
			RetallarCapa(Retol,0+pos,ample-margex,mida,margex);
			scroll();			
            	}
	}
}

function Es() {
    agent  = navigator.userAgent.toLowerCase();
    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);
    this.ns    = ((agent.indexOf('mozilla')   !=   -1) &&
                 ((agent.indexOf('spoofer')   ==   -1) &&
                 (agent.indexOf('compatible') ==   -1)));
    this.ns2   = (this.ns && (this.major      ==    3));
    this.ns3   = (this.ns && (this.major      ==    3));
    this.ns4b  = (this.ns && (this.major      ==    4) &&
                 (this.minor                  <= 4.03));
    this.ns4   = (this.ns && (this.major      >=    4));
    this.ns6    = (this.ns && (this.major     >=    5));	// Mozilla Firefox
    this.ie    = (agent.indexOf("msie")       !=   -1);		// Internet Explorer
    this.ie3   = (this.ie && (this.major      <     4));
    this.ie4   = (this.ie && (this.major      ==    4) &&
                 (agent.indexOf("msie 5.0")   ==   -1));
    this.ie5   = (this.ie && (this.major      ==    4) &&
                 (agent.indexOf("msie 5.0")   !=   -1));
    this.ie55  = (this.ie && (this.major      ==    4) &&
                 (agent.indexOf("msie 5.5")   !=   -1));
}

function DirCapa(nom){
var obj;
	if(es.ns) {
   		 if (es.ns6){
        		 obj = document.getElementById(nom);
    		 } else {
         		obj = document.layers[nom];
    		 }
	} else if(es.ie) {
    		obj = document.all[nom];
	}
	return obj;
}

function ColorFons(capa, color) {
var obj = capa.style?capa.style:capa;
	if (es.ns && !es.ns6) obj.bgColor = color;
	if (es.ie || es.ns6) obj.backgroundColor = color;
}

function VisibilitatCapa(capa, estat) {
var obj = capa.style?capa.style:capa;
	obj.visibility = estat;
}

function AlturaCapa(capa, altura) {
var obj = capa.style?capa.style:capa;
	obj.height = altura;
}

function PosicionarCapa (capa, x, y) {
var obj = capa.style?capa.style:capa;

	if (es.ns)
		if (es.ns6) {
			obj.left = x + "px";
			obj.top  = y + "px";
		}
		else obj.moveTo(x, y);
	if (es.ie) {
		obj.pixelLeft = x;
		obj.pixelTop  = y;
	}
}

function MoureCapa(capa, dx, dy) {
var obj = capa.style?capa.style:capa;

	if (es.ns)
		if (es.ns6) {
			obj.left = parseInt(obj.left) + dx + "px";
			obj.top  = parseInt(obj.top) + dy + "px";
		}
		else obj.moveBy(dx, dy);
	if (es.ie) {
		obj.pixelLeft += dx;
		obj.pixelTop  += dy;
	}
}

function RetallarCapa(capa, top, right, bottom, left){
var obj = capa.style?capa.style:capa;
  
  if (es.ns){
	if (es.ns6) {
		obj.clip = 'rect(' + top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px)';
	} else {
		obj.clip.top = top;
		obj.clip.right = right;
		obj.clip.bottom = bottom;
		obj.clip.left = left;
 	 }
  }
  if (es.ie) {
  		obj.clip = 'rect(' + top + ' ' + right + ' ' + bottom + ' ' + left + ')';
  }
}

function MoureRetall(capa, dtop, dright, dbottom, dleft){
var obj = capa.style?capa.style:capa;
var requadre = new Array();

//document.title=obj.clip;	// (control)

requadre = obj.clip.split(" ");
requadre[0]=requadre[0].substring(5);
requadre[0]=parseInt(requadre[0])+dtop;
requadre[1]=parseInt(requadre[1])+dright;
requadre[2]=parseInt(requadre[2])+dbottom;
requadre[3]=parseInt(requadre[3])+dleft;

	if (es.ns){
		if (es.ns6) {
			obj.clip = 'rect(' + requadre[0] + 'px ' + requadre[1] + 'px ' + requadre[2] + 'px ' + requadre[3] + 'px)';
		} else {
			obj.clip.top = requadre[0];
			obj.clip.right = requadre[1];
			obj.clip.bottom = requadre[2];
			obj.clip.left = requadre[3];
		}
	}
	if (es.ie) {
		obj.clip = 'rect(' + requadre[0] + ' ' + requadre[1] + ' ' + requadre[2] + ' ' + requadre[3] + ')';
	}
}

function AlternaMissatgesContingut(TaulerMissatges,TaulerContingut,quin_mostro) {
var Tauler1;
var Tauler2;

	//Inicialitza variables	
	Tauler1=DirCapa(TaulerMissatges);
	Tauler2=DirCapa(TaulerContingut);
	if (quin_mostro==1) {
		VisibilitatCapa(Tauler1,"visible");
		VisibilitatCapa(Tauler2,"hidden");
		AlturaCapa(Tauler2,0);
	}
	else {
		VisibilitatCapa(Tauler2,"visible");
		VisibilitatCapa(Tauler1,"hidden");
		AlturaCapa(Tauler1,0);
	}

	//setTimeout("scroll()",4000); //temps abans de començar el scroll

}


