/* Autor: Francesc Espona, 2009 */


var es = new Es();
var posx;
var posy;
var incr=0;
var pos; //desplaçament de la capa
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
var Taulers = new Array();	// Array amb les característiques dels taulers (nom,n_caselles_x,n_caselles_y,amplada,altura)

// Obsolet:
var ample; //amplada de la capa // no s'utilitza
var mida;  //alçada de la finestra (clip) // no s'utilitza
var max_pos; //no s'utilitza
var margex; //marge horitzontal de la finestra //no s'utilitza


//inicialització del tauler
function IniciaTauler(NomTauler,posicio_x,posicio_y,n_caselles_x,n_caselles_y,amplada,altura,marge_entremig) {
	// Casella inicial
	n_casella_x=0;
	n_casella_y=0;

// Obsolet:
//	max_pos=n_taulers*amplada; // no s'utilitza
//	pos=altura; // no s'utilitza
//	margex=marge_entremig;	// Marge entre files o entre columnes
//	mida=altura; 
//	ample=amplada;

	// Desem les dades del tauler
	Taulers.push({nom:NomTauler,n_caselles_x:n_caselles_x,n_caselles_y:n_caselles_y,amplada:amplada,altura:altura});
//	alert("N. Taulers:"+ Taulers.length + ", acabo d'afegir " + Taulers[Taulers.length-1].nom);
//	alert(Taulers[IndexTauler(Taulers,"TaulerPopulars")].amplada);
//	alert(Taulers[Taulers.length-1].amplada);
	
	camaleo=DirCapa(NomTauler);
	PosicionarCapa(camaleo,posicio_x,posicio_y);
	RetallarCapa(camaleo,(n_casella_y*altura),(n_casella_x+1)*amplada,(n_casella_y+1)*altura,n_casella_x*amplada);
	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=0;
var signe_y=0;
var distancia_x,distancia_y;
var iTauler; // índex del tauler

	iTauler=(IndexTauler(Taulers,NomTauler));
	

	// Desplaçament suau
	if (n_caselles_x != 0) {
		signe_x = -1*(Math.abs(n_caselles_x)/n_caselles_x);
	}
	if (n_caselles_y != 0) {
		signe_y = -1*(Math.abs(n_caselles_y)/n_caselles_y);
	}
	distancia_x = Math.abs(n_caselles_x) * Taulers[iTauler].amplada;
	distancia_y = Math.abs(n_caselles_y) * Taulers[iTauler].altura;
	camaleo=DirCapa(NomTauler);
//	alert("CanvioCasella:" + NomTauler + " (x:" + (signe_x * distancia_x) + " y:" + (signe_y * distancia_y) +")");	// (control)

	// Desplacem la capa	
	LliscaCapa(camaleo,distancia_x,distancia_y, 50*signe_x, 50*signe_y);

	// Bastant inútil:
	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);
	}
	if (j>0){
		decr = Math.min(distancia_y,Math.abs(factor_y));
		desp = decr * (Math.abs(factor_y)/factor_y);
		j-= decr;
		MoureCapa(capa,0,desp);
		MoureRetall(capa,-desp,0,-desp,0);
		//document.title=i;	// (control)
		setTimeout("LliscaCapa(camaleo,0,j,1,l)",10);
	}
}
/* No utilitzat de moment
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 IndexTauler(ArrayTaulers,NomCerca) {
// Retorna l'índex del tauler que té el nom indicat, o -1 si no hi ha cap tauler amb el nom indicat
var index=-1;
	for (i in ArrayTaulers) {
		if (ArrayTaulers[i].nom == NomCerca) {
			index=i;
		}
	}
	return index;
}

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 + "px";
}

function AmpladaCapa(capa, amplada) {
var obj = capa.style?capa.style:capa;
	obj.width = amplada + "px";
}

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;
//document.title=obj.clip;	// (control)
  
  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 AlternaBotoMenu () {
	//alert(document.getElementById("bt_alterna_menu").tagName);
	if (document.getElementById("canvia_menu").href == "javascript:CanviaCasella('TaulerMenu',0,-1);AlternaBotoMenu();") {
		document.getElementById("bt_alterna_menu").src="../img/menu_fletxetes_amunt.gif";
		document.getElementById("bt_alterna_menu").alt="Mostra Bifidus Produccions";
		document.getElementById("canvia_menu").href="javascript:CanviaCasella('TaulerMenu',0,+1);AlternaBotoMenu();";
	}
	else {
		document.getElementById("bt_alterna_menu").src="../img/menu_fletxetes_avall.gif";
		document.getElementById("bt_alterna_menu").alt="Mostra Radio Berga";
		document.getElementById("canvia_menu").href="javascript:CanviaCasella('TaulerMenu',0,-1);AlternaBotoMenu();";
	}
}

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

}

