//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
/// CODI PER EL FUNCIONAMENT DEL NAVEGADOR CENTRAL, I PER A LA UBICACIÓ //
/// DE LA PASTILLA INFERIOR, RESPECTE DEL NAVEGADOR CENTRAL //////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////
// Variables globals que guarden l'estat del navegador central
////////////////////////////////////////////////////////////////////////////

//Pestanya activa(Nivell 1 a NTpaginas)
var gvs_pestanyaActiva = "00";

//Opció Esquerra Activa(Nivell 2 a NTpaginas)
var gvs_opcioEsqActiva = "00";
var gvs_opcioEsqMostrada = "00";

//Time out mentre el qual s'enseya un submenú dret al fer roll-over sobre la seva opció esquerra
var gvt_ensenyarSubApartats;


//////////////////////////////////////////////////////////////////////////
// FUNCIONS per a inicialitzar l'estat del navegador Central            //
// de les seves pestanyes, i dels seus menús esquerra im dret           //
//////////////////////////////////////////////////////////////////////////

//Activa pestanya (NIVELL1), opció esquerra(NIVELL 2) i opció dreta (NIVELL3) actius
//Es preveuen els casos de ninguna opció subopció activa:
//	Normalment, sempre hi haurà una pestanya activa
//	No sempre n'hi ha una opció esquerra activa. SI això pasa, nmo es mostra cap submenú dret
//	No sempre n'hi ha una subopció dreta activa
function inicialitzarNavCentral (pestanyaActiva, opcioEsqActiva, SubOpcioActiva) {

	//1er. Activem pestanya 01 02...
	activarPestanyaNavCentral(pestanyaActiva);
	//Guardem la vars global javaScript per guardad status del panell
	gvs_pestanyaActiva =pestanyaActiva;

	//2on. Activem opcio esquerra activa, si n´hi ha
	if (opcioEsqActiva != "00") {
		//Guardem la vars global javaScript per guardad status del panell
		gvs_opcioEsqActiva = opcioEsqActiva;

		try {
		  //Intentem canviar la CLASS de l'opció esquerra a actiu
		  //Per què fem el TRY? Pot ser que no pugui?
		  //Sí pot ser, si es tracte d'un item de N2 amb nom "pastillainferior"
		  //         que no es visualitza dins el navegador central
		  //És un cas especial d'item N2 que no hem de tractar aquí
		  document.getElementById('navegItem'+opcioEsqActiva).className='navegadorClassOpcioActiva';

		  //Intentem fer visible el sumbmenú dret corresponent a la opció esquerra activa
		  //Pot ser que no existeixi? pq TRY? Sí, si no té subopcions, anirà al Catch sense executar la resta del try
		  document.getElementById('navegadorDivMenuDreta'+opcioEsqActiva).className='navegadorDivMenuDretaVisible';
		
         	  //Per calcular l'alçada de la div dreta per a que el puntejat es vegi correctament
		  completarPuntejat(opcioEsqActiva);
		  
		  //Canviem DIV de opció esquerra activa per mostrar puntejat vermell (si hem pogut activar el submenú abans)
		  document.getElementById('navegDivItem'+opcioEsqActiva).className='navegadorDivOpcioAmbPuntejat';
		  gvs_opcioEsqMostrada = gvs_opcioEsqActiva;

		  //Si en el submenú dret, també hi ha un item actiu, el fem del class actiu
		  //Pot ser que no vagi? Pq el TRY també aquí? Per si es un filll de "pastillainferior"
		  if (SubOpcioActiva != "00") {
			document.getElementById('navegItem'+opcioEsqActiva+'s'+SubOpcioActiva).className='navegadorClassSubOpcioActiva';
		  }


		} catch(errorinfo) {
		  //No existeix menú dret corresponen a la opció esquerra activa--> No es mostra cap menú dret
		  gvs_opcioEsqMostrada = "00";
		}
	}

	//3er. Ara que ja tenim totes les opcions esquerra i dreta visibles, Redimensionem el navegador central
	redimensionarNavCentral(gvs_opcioEsqMostrada);
}

//Mostra el GIF de pestanyes del navegador central, amb la pestanya activa "N"
//Si no, deixa pestanyes amb ninguna opció activa
function activarPestanyaNavCentral(n) {
	if (n != "00") {
		document.getElementById("NavegadorTitol").src='img/Navegador/pestanyesTitol'+n+'.gif';
		document.getElementById("NavegadorPestanyes").src='img/Navegador/pestanyesActiva'+n+'.gif';
	} else {
		document.getElementById("NavegadorTitol").src='img/Navegador/pestanyesTitolBuit.gif';
		document.getElementById("NavegadorPestanyes").src='img/Navegador/pestanyes.gif';
	}
}


//////////////////////////////////////////////////////////////////////////
// FUNCIONS útils per l'efecte mouseover mouseout sobra una pestanya //
//////////////////////////////////////////////////////////////////////////

//1a. Crear efecte mouseover sobre pastilles
function ferEfecteRollOverSobrePestanya(n) {
var lvs_pestanyaN1;

	lvs_pestanyaN1 = "0" + n;

	if (lvs_pestanyaN1 == gvs_pestanyaActiva) {
		MM_swapImgRestore();
		canviarVisibilitat("idDivTriangleOverPestanyes",0);
	} else {
		//1er. Mostrem títol a la dreta de les pestanyes
		MM_swapImage('NavegadorTitol','','img/Navegador/pestanyesTitol'+lvs_pestanyaN1+'_ov.gif',1);
		//2on. Posicionem la div amb el triangle roll over sobre la propia pestanya
		posicionarDivTriangleRollOverPastilles(n);
		//3rt. Mostrem aquest div
		canviarVisibilitat("idDivTriangleOverPestanyes",1);
	}
}

//2a. Crear efecte mouseout sobre pastilles
function treureEfecteRollOverSobrePestanya() {
	//1er. Deixem estat original de títol a la dreta de les pestanyes (el de pestanya la activa)
	MM_swapImgRestore();

	//2on. Amaguem Triangle roll over sobre les pestanyes
	canviarVisibilitat("idDivTriangleOverPestanyes",0);
}

//Posiciona la DIV Triangle roll over sobre la propia pestanya
function posicionarDivTriangleRollOverPastilles(n) {
var newX, newY;
	//Posem n-1 peruqè els items de N1 començes a 2 (item 1 és la Home, i no la contem)
	newX=ubicarXdunObjecte(document.getElementById('navegadorDivMarc'))-8+(38*(n-1));
	newY=ubicarYdunObjecte(document.getElementById('navegadorDivMarc'))-14;
	document.getElementById('idDivTriangleOverPestanyes').style.left=newX+'px';
	document.getElementById('idDivTriangleOverPestanyes').style.top=newY+'px';
}



////////////////////////////////////////////////////////////////////////////////
// FUNCIONS PER A MOSTRAR ELS SUBMENUS DRETS PERTANYENTS A UNA OPCIO ESQUERRA //
////////////////////////////////////////////////////////////////////////////////

//Mostra el submenú dret corresponent a ls opció esquerra "N".
//Aquesta "N" pot ser la activa o no!!!
function ensenyarSubApartats(n) {
var i;
var coordYDivDreta, coordYDivEsquerra;
var altDivDreta;

	//Eliminem timeout per retronar a mostrar el menú dret de l'opció esquerra activa
	eliminarTimerEnsenyarSubApartats();

	//Amaguem els submenu dret mostrat en aquest moment, si és que n'hi ha un mostrat
	if (gvs_opcioEsqMostrada != "00") {
		document.getElementById('navegDivItem'+gvs_opcioEsqMostrada).className='navegadorDivOpcio';
		document.getElementById('navegadorDivMenuDreta'+gvs_opcioEsqMostrada).className='navegadorDivMenuDretaNoVisible';
	}

	//Si s'està demanant de mostrar-ne algún, el mostrem
	if (n != "00") {             
	    try {
		//Intentem fer visible el sumbmenú dret corresponent a la opció esquerra seleccionada
		//Si no existeix tal menú, anirà al Catch sense executar la resta del try
		document.getElementById('navegadorDivMenuDreta'+n).className='navegadorDivMenuDretaVisible';
		
                //Per calcular l'alçada de la div dreta per a que el puntejat es vegi correctament
                completarPuntejat(n);

		//Canviem DIV de opció esquerra seleccionada per mostrar puntejat vermell
		document.getElementById('navegDivItem'+n).className='navegadorDivOpcioAmbPuntejat';
		gvs_opcioEsqMostrada = n;
	    } catch(errorinfo) {
	    	//No existeix menú dret corresponen a la opció esquerra --> No es mostra cap menú dret
		gvs_opcioEsqMostrada = "00";
	    }
	    redimensionarNavCentral(gvs_opcioEsqMostrada);
	//Sino, tornem a mostrar el de l'opcio esquerra activa, guardada a gvs_opcioEsqActiva
	} else {
	    if (gvs_opcioEsqActiva != "00") {
		try {
		    //Intentem fer visible el sumbmenú dret corresponent a la opció esquerra activa
		    //Si no existeix tal menú, anirà al Catch sense executar la resta del try
		    document.getElementById('navegadorDivMenuDreta'+gvs_opcioEsqActiva).className='navegadorDivMenuDretaVisible';
		    
		    //Per calcular l'alçada de la div dreta per a que el puntejat es vegi correctament
		    completarPuntejat(gvs_opcioEsqActiva);

		    document.getElementById('navegDivItem'+gvs_opcioEsqActiva).className='navegadorDivOpcioAmbPuntejat';
		    gvs_opcioEsqMostrada = gvs_opcioEsqActiva;
		} catch(errorinfo) {
		    //No existeix menú dret corresponen a la opció esquerra --> No es mostra cap menú dret
		    gvs_opcioEsqMostrada = "00";
		}

	    } else {
		//Si no hi havia cap activa, no en mostrem cap
		gvs_opcioEsqMostrada = "00";
	    }
	    redimensionarNavCentral(gvs_opcioEsqMostrada);
	}
}

//Elimina timeout que anava a remostrar el menú dret de l'opció esquerra activa
function eliminarTimerEnsenyarSubApartats() {
    clearTimeout(gvt_ensenyarSubApartats);
}

//Genera ui timeout per tornar a mostrar el menú dret de l'opció esquerra activa després d'uns instants
//Quan es crida, s'indica dins N quin submenú dret estem mostrant. Si N==ACTIVA, no cal timeout!!!
function posarTimerPerEnsenyarSubApartats(n) {
	if (n!=gvs_opcioEsqActiva)
	    gvt_ensenyarSubApartats = setTimeout("ensenyarSubApartats('00');", 1200);
}


///////////////////////////////////////////////////////////////////////////////////
// Funcions de calcul de tamany de les divs que implementen el navegador Central //
///////////////////////////////////////////////////////////////////////////////////

//Funció que genera l'alçada del panell d'opcions del navegador central
//N´hi ha un mínim, però si cal, es fa més gran d'aquest mínim
function redimensionarNavCentral(opcioEsqAMesurarElSeuMenuret) {
	var navegadorHeight;
	var navegadorEsquerraHeight, navegadorDretaHeight, navegadorHeightPerDefecte;

	//CÀLCUL VALOR 1. Valor per defecte, com a mínim, tindrà aquest height:
	navegadorHeightPerDefecte = 90;

	//CÀLCUL VALOR 2 Alçada del menú esquerra
	navegadorEsquerraHeight = document.getElementById('navegadorDivMenuEsquerra').scrollHeight;

	//CÀLCUL VALOR 2 Alçada del menú dret, si és que n´hi ha un mostrant-se. Si no, alçada 0.
	if (opcioEsqAMesurarElSeuMenuret != "00") navegadorDretaHeight = document.getElementById('navegadorDivMenuDreta'+opcioEsqAMesurarElSeuMenuret).scrollHeight;
	else navegadorDretaHeight = 0;

	//CÀLCUL del MAXIM dels 3 valors anteriors
	navegadorHeight = Math.max(navegadorEsquerraHeight, navegadorDretaHeight)
	navegadorHeight = Math.max(navegadorHeight, navegadorHeightPerDefecte)

	//Posem aquest valor màxim al panell d'opcions del navegador central
	document.getElementById('navegadorDivMarc').style.height=navegadorHeight+'px';

	//ATENCIÓ: També reubiquem el panell inferior sota aquest navegador central, una vegada redimensionat aquest
	posicionarPastillaInferior(navegadorHeight);
	
	treureEfecteRollOverSobrePestanya();
}


///////////////////////////////////////////////////////////////////////////////////
// Funcions d´operacions amb la PASTILLA INFERIOR d'opcions que apareix, a 
// vegades, sota del navegador central. Ex: En secció d'activitats pedagògiques.
///////////////////////////////////////////////////////////////////////////////////


//Posiciona la DIV de la Pastilla Inferior sota navegador CENTRAL, trepitjant 3px (d'ombra del panell)
//Fa un TRY, perquè pot no existir aquesta pastilla (no totes les seccions en tenene)
function posicionarPastillaInferior(navegadorHeight) {
var newX, newY;
	try
	{
		newX=ubicarXdunObjecte(document.getElementById('navegadorDivMarc'));
		//Teòricament, la newY s´hauria de calcular així:
		//	newY=ubicarYdunObjecte(document.getElementById('navegadorDivMarc'))+document.getElementById('navegadorDivMarc').scrollHeight-1;
		//Però amb Opera anava malament, i, a més, en Mozilla quedava 2 pixels per sota que 
		//en iExplorer. Així que he optat per pasar a aquesta funció el paràmetre navegadorHeight,
		//i he calculat amb aixó quan he de sumar per que es munti una mica sobre l'ombra.
		newY=ubicarYdunObjecte(document.getElementById('navegadorDivMarc'))+navegadorHeight+23;
		document.getElementById('panellSotaNavegador').style.left=newX+'px';
		document.getElementById('panellSotaNavegador').style.top=newY+'px';
	}
	catch(errorinfo)
	{
	}
}

/////////////////////////////////////////////////////////
//Funcions auxiliars a totes les anteriors
/////////////////////////////////////////////////////////
function ubicarXdunObjecte(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function ubicarYdunObjecte(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


function canviarVisibilitat(strDivId,bolVisible){
// 1 per visualitzar 
// 0 per amagar
 //detect browser settings for showing and hiding DIVs
 isNS4 = (document.layers) ? true : false;
 isIE4 = (document.all && !document.getElementById) ? true : false;
 isIE5 = (document.all && document.getElementById) ? true : false;
 isNS6 = (!document.all && document.getElementById) ? true : false;
     
 //identify the element based on browser type
 objElement = document.getElementById(strDivId).style;
 
 if(isNS4){
     if(!bolVisible) {
       objElement.visibility ="hidden"
     } else {
       objElement.visibility ="visible"
     }     
 }else if(isIE4){
     if(!bolVisible) {
       objElement.visibility = "hidden";
     } else {
       objElement.visibility = "visible";
     }
 } else if (isIE5 || isNS6) {
      if(!bolVisible){
         objElement.display = "none";
      } else {
        objElement.display = "";
        }
      }
}



//Si la posició de la div dreta de la opció del menu esquerra activa 
//és més petita que la div del menu esquerra, es a dir, el puntejat es veu
//partit, per tant, s'ha de fer més gran la div dreta per a que coincideixi
//el puntejat vertical i l'horitzontal.
function completarPuntejat(opcio){
	//Per calcular l'alçada de la div dreta per a que el puntejat es vegi correctament
	var coordYDivDreta = ubicarYdunObjecte(document.getElementById('navegadorDivMenuDreta'+opcio));
	var altDivEsquerra = document.getElementById('navegDivItem'+opcio).scrollHeight;
	var altDivDreta = document.getElementById('navegadorDivMenuDreta'+opcio).scrollHeight;
	var coordYDivEsquerra = ubicarYdunObjecte(document.getElementById('navegDivItem'+opcio));
	var propostaNovaAlcadaDIvDreta = coordYDivEsquerra - coordYDivDreta + altDivEsquerra;
	if (altDivDreta < propostaNovaAlcadaDIvDreta) {
	   document.getElementById('navegadorDivMenuDreta'+opcio+'TreureUltimsPuntetsVerticals').className='navegadorDivMenuDretaNoTreureUltimsPuntetsVerticals';			   
	   document.getElementById('navegadorDivMenuDreta'+opcio).style.height= propostaNovaAlcadaDIvDreta-3+'px';  
	}
}