// Obte un element del HTML per el seu ID, metode multinavegador
function getObject(elementId) {
 	 if (document.getElementById) {
 	 	 return document.getElementById(elementId);
 	 } else if (document.all) {
 	 	 return document.all[elementId];
 	 } else if (document.layers) {
 	 	 	 return document.layers[elementId];
 	 } 
 }

// Cambia d'idioma
function setIdioma(idioma) {	
	document.idiomes.idioma.value = idioma;
	document.idiomes.submit();
} 

// Obtenir totes les instancies del tag "tag" i de la classe "cls" 
function getObjectsByTagAndClass(tag, cls) {
	
	var llistaElements = document.getElementsByTagName(tag);
	var llistaResultat = new Array();
	var numResultats = 0;
	
	for(var i=0; i<llistaElements.length; i++) {
		
		var parts = llistaElements[i].className.split(' ');
		
		for(var j=0; j<parts.length; j++) {
			
	 		if( parts[j] == cls ) {
	 	 		llistaResultat[numResultats]=llistaElements[i];
	 	 		numResultats++;
	 		}	 		
		}
	}
	
	return llistaResultat;
}

// Metode per escriure xivatos mentre es desenvolupa...
function emit(id,msg) {
	var o = getObject(id);	
	var node = document.createTextNode(msg);	
	o.appendChild(node);
}

/* ---------------------------------- 
    Metodes per mostrar el tab actiu
   ---------------------------------- */
var currentTabGroup = 0; // El tab group es per si en un futur tingues mes d'un grup de tabs diferents en la mateixa pagina
var currentTabIndex = 0;
var activeTabIndeces = new Array();
activeTabIndeces[0] = 2; // He de posar un valor inicial que existeixi. 
// Ara mateix el 0 no existeix per tal com esta la BD
// Tambe he de vigilar de no posar el mateix que el tab que es vol mostrar a l'inici
var activeTabTimers = new Array();

function activateTab(tabGroup,index){ 		 
	clearTimeout(activeTabTimers[tabGroup]); 		
	currentTabGroup = tabGroup; 		
	currentTabIndex = index;
	
	// Si em passen un grup que no existeix el tab index es 0
	if(activeTabIndeces.length <= tabGroup) {
		activeTabIndeces[tabGroup] = 0; 			
	}
	
	// Miro quin era l'anterior index actiu per aquest tab
	var activeTabIndex = activeTabIndeces[tabGroup]; 
	//emit('contingutTab', 'activa tab: '+tabGroup+' '+index+'tab anterior: '+ activeTabIndex);
	
	if(index != activeTabIndex) { // Si era diferent l'he de canviar, pero amb un temps (es mes maco)
		 activeTabTimers[tabGroup] = setTimeout("activateTabTimer()",150);
	}
}


var subMenuAnt = 'ini';
var subMenuAct = 'ini';
var candidat = 'ini';
var temporitzador;
var numCandidat = 999;

function setRed(numPare,numLink) {
	//emit('xivato','setRed('+numPare+','+numLink);
	//emit('xivato','  subMenuAct: '+subMenuAct+' subMenuAnt: '+subMenuAnt+'\n');
	clearTimeout(temporitzador);
	var nomLink =  'subLink' + numPare + '_' + numLink;	
	if ( nomLink != subMenuAct ) {
		candidat = nomLink;
		numCandidat = numLink;
		temporitzador = setTimeout("setActiu()",150);
	}
}

function setActiu() {
	//emit('xivato','setActiu: ');
	//emit('xivato','  subMenuAct: '+subMenuAct+' subMenuAnt: '+subMenuAnt+'\n');
	subMenuAnt = subMenuAct;
	subMenuAct = candidat;
	var newTab = getObject(subMenuAct);	
	newTab.className = 'tabRed';
	if (subMenuAnt != 'ini') {
		var oldTab = getObject(subMenuAnt);
		oldTab.className = '';
	
	// Ara cal mostrar el text correcte!
	// Primer necessito obenir el div a mostrar
	var tab = 'tab1_'; // Trampa, ho haure de millorar...
	var newTabPanel = getObject(tab + numCandidat);
	// Agafo el div visor
	var activeTabDiv = getObjectsByTagAndClass('div','tabActiu');
		
	if( activeTabDiv.length > 0 ){
		// Hi copio el contingut
		//activeTabDiv[0].className = classeNouTab;
		activeTabDiv[0].innerHTML = newTabPanel.innerHTML;
	}
	
	}
}

function clearRed(numPare,numLink) {
	emit('xivato','Eliminat temporitzador: '+numLink);
	clearTimeout(temporitzador);               
	//var tabLink = 'tabLink' + numPare + '_' + numLink;	
	//var newTab = getObject(tabLink);
	//newTab.className = '';
}

function activateTabTimer() {
	var activeTabIndex = activeTabIndeces[currentTabGroup];
	
	if(currentTabIndex != activeTabIndex) {
		var tabLink = 'tabLink' + currentTabGroup + '_';
		var tab = 'tab' + currentTabGroup + '_';
		
		// Agafo els anteriors
		var activeTab = getObject(tabLink + activeTabIndex);
		var activeTabPanel = getObject(tab + activeTabIndex);
		
		// Agafo els nous
		var newTab = getObject(tabLink + currentTabIndex);
		var newTabPanel = getObject(tab + currentTabIndex);
		
		var classeNouTab = 'tabActiu';
		// Miro quin layout te		
		var newTabLayout = newTabPanel.getAttribute('layout');
		if ( newTabLayout != 'null' ) {
			classeNouTab = classeNouTab + ' ' + newTabLayout;
		}
		
		// Agafo el div visor
		var activeTabDiv = getObjectsByTagAndClass('div','tabActiu');
		
		if( activeTabDiv.length > 0 ){
			// Hi copio el contingut
			activeTabDiv[0].className = classeNouTab;
			activeTabDiv[0].innerHTML = newTabPanel.innerHTML;
			isMouseOver = true;
		}
		
		// Netejo els submenus que faci falta...
		if (subMenuAct != 'ini') {
			//emit('xivato','activateTabTimer: '+tabLink+'  subMenuAct: '+subMenuAct+' subMenuAnt: '+subMenuAnt+'\n');
			var oldSubLink = getObject(subMenuAct);
			subMenuAnt = subMenuAct;
			oldSubLink.className = '';
		}
				
		newTab.className = 'linkActiu';
		activeTabIndeces[currentTabGroup] = currentTabIndex;
		activeTab.className = '';
		/*
		clearTimeout(impT);
		impT = setTimeout("swtI("+currentTabIndex+")", 1000);
		*/
	}
}

/* ---------------------------------- 
    Metodes per ocultar el tab actiu
   ---------------------------------- */
function mouseOutTab(tabGroup,index){
 	clearTimeout(activeTabTimers[tabGroup]);
}

/* ----------------------------------
   Animacio de plegament/desplegament
   ---------------------------------- */

var objectiu; 
var altMax; 
var mnl_oh; 
var plegat=true; 
var timer; 
 	   
function iniAnimacio(id) {	
	// Primer netejem el timer en cas que s'estes fent alguna altre cosa
	if(timer) { 
 		clearInterval(timer);
 		timer = null;
 	}
 	
 	objectiu = getObject(id);
 	
 	altMax = objectiu.offsetHeight; 
 	if(!mnl_oh){ 
 		mnl_oh = altMax; 
 	}
 	
 	plegat = !plegat; 
 	if(plegat) { 
 		objectiu.className = 'plegat'; 
 	}	else { 
 		objectiu.className = 'desplegat'; 
 	}
 	
 	animacio();  	  	
 	timer = setInterval(animacio, 100); 
}

function animacio() {
	var acabat = false;
	
	if(altMax <= 0 && !plegat) { 
 		var o = getObject('masterNavLinks'); 
 		if(null!=o){
 			o.style.display='block';
 		} 
  } 
  
  if(plegat)	altMax -= 5; 
  else				altMax += 5;
   
  if(altMax < 0) { 
  	altMax = 0; 
  } else if(altMax > mnl_oh){ 
  	altMax = mnl_oh;
  	objectiu.style.height="auto";
  	acabat = true;
  }
  
  if(!acabat) 
  	objectiu.style.height = altMax+'px'; 
  	
  if(altMax <= 0 || altMax >= mnl_oh) { 
  	
  	if(altMax <= 0 && plegat) { 
  		var o = getObject('masterNavLinks'); 
  		o.style.display='none';
  	}
  	 
  	clearInterval(timer);
  	timer = null; 	
  } 
}

function enviar() {
	document.feina.submit();
}