//RUTINA QUE VERIFICA SI SE VISITO ALGUNA PÁGINA
var queryString = window.location.search;
if(queryString != null && queryString != '') 
{
	var NAV_CURRENT = queryString.substr(queryString.indexOf('=')+1);
	var NAV_VISITED = NAV_CURRENT;
	var NAV_PAST = NAV_CURRENT;
} else 
	{
		var NAV_CURRENT = '--';
		var NAV_VISITED = '--';
		var NAV_PAST = '--';
	}


//*********VARIABLES GLOBALES*************//
var IS_IMAGE = true;									//variable que determina si el contenido del LEVEL_0 son imágenes o texto
var BASE_URL = '/images/';								//variable con el path hacia las imágenes del menu

var xpos_0 = new Array();								//array que guardará las posiciones x de cada item del nivel 0
var xpos_1 = new Array();								//array que guardará las posiciones x de cada item del nivel 0
var width_LEVEL_0;										//variable con el ancho total del nivel 0
var width_LEVEL_1;										//variable con el ancho total del nivel 1
var width_LEVEL_2 = size_L2;							//variable con el ancho total del nivel 2 definido en array_menu como size_L2
var X_POS_LEVEL_1 = 0;									//posición X de la capa del nivel 1

var	DIV_HEIGHT_LEVEL_0 = 31;							//variable con el valor del alto de la lengüeta del nivel 0
var	DIV_HEIGHT_LEVEL_1 = 24;

var X_POS;												//variable que determina la posición de cada item dentro de cada nivel

var LEVEL_PAST='LEVEL_X';								//variable que guarda el nivel inmediato anterior
var LEVEL_CURRENT;										//variable que guarda el nivel actual

var secs = 0;											//variable global para el conteo de los segundos
var hideMenu;											//identificador para el intervalo para esconder el menu
var showMenu;											//identificador para el intervalo para mostrar el menu
var WAIT_HIDE = 0;										//variable con la cantidad de segundos necesarios para esconder el menu
var WAIT_SHOW = 0;										//variable con la cantidad de segundos necesarios para mostrar el menu

//***************************************//
	
//FUNCION PRINCIPAL QUE ARMA LOS 3 NIVELES DE MENU	
function buildMenu(level)
{
	var divID = 'LEVEL_';								//variable con ID del contenedor madre del nivel

	switch(level.length)
	{
		case 1: divID+='0'; break;
		case 2: divID+='1'; break;
		case 3: divID+='2'; break;
		default: divID+='X';
	}

	if(divID!='LEVEL_X')
	{
		var divMenu = document.getElementById(divID);		//en divMenu tomo el elemento div con id divID
		divMenu.innerHTML = '';

		var typeContent;
		(IS_IMAGE && divID == 'LEVEL_0')? typeContent = eval('typeof img_'+level):typeContent = eval('typeof text_'+level);

		if( typeContent != 'undefined')
		{
			var contentArray;								//variable que representa el array de ese nivel
			(IS_IMAGE && divID == 'LEVEL_0')? contentArray = eval('img_'+level):contentArray = eval('text_'+level);
			
			switch(divID)
			{
				case 'LEVEL_0': 
								
								for(i=0; i<contentArray.length; i++)
								{
									if(IS_IMAGE) contentArray[i] = '<img src="'+BASE_URL+contentArray[i]+'" alt="">';
									divMenu.innerHTML += '<div id="'+(level+i)+'" style="cursor:pointer;"><table cellpadding="0"><tr><td class="'+divID+'_leftSideTab"><img src="/images/spacer.gif" width="8"></td><td class="'+divID+'_centerTab" onmouseover="callMenu(parentNode.parentNode.parentNode.parentNode, \'over\');" onmouseout="callMenu(parentNode.parentNode.parentNode.parentNode, \'out\');" onclick="callMenu(parentNode.parentNode.parentNode.parentNode, \'click\');">'+contentArray[i]+'</td><td class="'+divID+'_rightSideTab"><img src="/images/spacer.gif" width="14"></td></tr></table></div>';
								}
								break;
				case 'LEVEL_1': 
								var className;
								
								for(i=0; i<contentArray.length; i++)
								{
									if(eval('typeof text_'+(level+i))!= 'undefined')
									{
										className = divID+'_centerTab arrow';
									}else className = divID+'_centerTab arrow';
									
									divMenu.innerHTML += '<div style="display:none" id="'+(level+i)+'" onmouseover="callMenu(this, \'over\');" onmouseout="callMenu(this, \'out\');" onclick="callMenu(this, \'click\');" class="'+className+'"><span class="'+divID+'_sep"><img src="/images/spacer.gif" width="8"></span>'+contentArray[i]+'</div>';
								}
								break;
				case 'LEVEL_2': 
								for(i=0; i<contentArray.length; i++)
								{
									divMenu.innerHTML += '<div id="'+(level+i)+'" onmouseover="callMenu(this, \'over\');" onmouseout="callMenu(this, \'out\');" onclick="callMenu(this, \'click\');" class="'+divID+'_centerTab">'+contentArray[i]+'<br><br></div>';
									if(i == contentArray.length-1) divMenu.innerHTML += '<div><img src="'+BASE_URL+'img_2_bg.gif" alt=""></div>';
								}
								break;
				
			}
		}
		placeMenu(divID, level);
	}
}

//FUNCION QUE REUBICA LOS DISTINTOS ITEMS DE CADA MENU
function placeMenu(id, level)
{
	var menu = document.getElementById(id);				//tomo el elemento menu
	var divCollect = menu.getElementsByTagName("div"); 	//tomo la colección de elementos div dentro de menu
	if(level.length < 3) var sizeArray = eval('size_'+level);
	
	switch(id)
	{
		case 'LEVEL_0':
						X_POS = 0;											//defino e inicializo la variable X_POS en cero
						var OVERLAP = 5;									//defino e inicializo variable con el valor de solapamiento de cada lengüeta
						var SIDES_WIDTH = 22;								//defino e inicializo variable con el valor del ancho sumado de los laterales de la lengüeta
						
						for(i=0; i<divCollect.length; i++)
						{
							//reposiciono cada elemento div según el ancho del contenido de cada item y los solapo
							divCollect[i].style.left = X_POS+"px";
							divCollect[i].style.width = sizeArray[i]+"px";
							divCollect[i].style.height = DIV_HEIGHT_LEVEL_0+"px";
							divCollect[i].style.zIndex = (i+1)*10;
							
							
							//asigno valores al array de posiciones
							xpos_0[i]=X_POS;
							
							//incremento X_POS con la longitud del texto de cada item
							X_POS += sizeArray[i]-OVERLAP;
						}
						
						width_LEVEL_0 = xpos_0[(xpos_0.length-1)]+sizeArray[sizeArray.length-1];
						
						checkVisited();
						break;

		case 'LEVEL_1':
						
						SIDES_WIDTH = 7;
						X_POS = 5;
						xpos_1 = new Array();		//elimino los datos anteriores del array
						
						for(i=0; i<divCollect.length; i++)
						{
						if(i==0 && NAV_CURRENT.substr(0,2)==00) {X_POS = -150} //else{ X_POS = 5}
							//reposiciono cada elemento div según el ancho del contenido de cada item y los solapo
							divCollect[i].style.left = X_POS+"px";
							divCollect[i].style.top = DIV_HEIGHT_LEVEL_0+"px";
							
							//asigno el ancho que le corresponde al item corriente
							divCollect[i].style.width = sizeArray[i]+"px";
							divCollect[i].style.height = DIV_HEIGHT_LEVEL_1+"px";
							divCollect[i].style.zIndex = (i+1)*10;
							divCollect[i].style.display = "block";
							
							//asigno valores al array de posiciones
							xpos_1[i]=X_POS;
							
							//incremento X_POS con la longitud del texto de cada item
							X_POS += sizeArray[i];
							
						}
						
						width_LEVEL_1 = xpos_1[(xpos_1.length-1)]+sizeArray[sizeArray.length-1];
						//tomo la posicion del item que selecciono del nivel 0
						var posArr = level.substr(1);
						
						//calculo la posición ideal del submenu
						X_POS_LEVEL_1 = xpos_0[posArr]-(width_LEVEL_1/2);
						if(X_POS_LEVEL_1<0) X_POS_LEVEL_1=0;
							
						if(X_POS_LEVEL_1>0)
						{
							var diff = (X_POS_LEVEL_1 + width_LEVEL_1) - width_LEVEL_0;
							if(diff>0) X_POS_LEVEL_1 -= diff;
						}
						if(X_POS_LEVEL_1<0) X_POS_LEVEL_1=0;
						menu.style.left = X_POS_LEVEL_1+"px";
						//menu.style.display = "block";
						break;
						
		case 'LEVEL_2':
						SIDES_WIDTH = -4;
						
						var posArr = level.substr(2);
						var posArr1 = level.substr(0,2);
						var posArr2 = level.substr(2,3);

						//calculo la diferencia entre el ancho del 2 nivel y el ancho de su padre
						var diff2 = eval('size_'+posArr1+'['+posArr2+']') - (width_LEVEL_2);	

						//calculo la nueva posición
						var X_POS_LEVEL_2 = xpos_1[posArr]+X_POS_LEVEL_1+SIDES_WIDTH+(diff2/2);
						//alert('X_POS_LEVEL_2: '+X_POS_LEVEL_2);
						if(X_POS_LEVEL_2 < 0) X_POS_LEVEL_2 = 0;
						
						menu.style.width = width_LEVEL_2+"px";
						menu.style.left = X_POS_LEVEL_2+"px";
						menu.style.top = DIV_HEIGHT_LEVEL_1+DIV_HEIGHT_LEVEL_0+"px";
						//menu.style.display = "block";
						break;
	}
}

//FUNCION QUE MANEJA LOS EVENTOS DE CADA ITEM, ES LLAMADA DESDE CADA ITEM DE MENU
function callMenu(obj, kind)
{
	LEVEL_CURRENT = obj.parentNode.id;
	switch(kind)
	{
		case 'over':
					clearInterval(showMenu);
					clearInterval(hideMenu);
					secs = 0;

					NAV_PAST = NAV_CURRENT;
					NAV_CURRENT = obj.id;
					switch(LEVEL_CURRENT)
					{
						case 'LEVEL_0':	
										changeStyle(obj.id, LEVEL_CURRENT, 'Over');
										
										if(NAV_PAST!='--' && NAV_PAST.substr(1,1) != NAV_CURRENT.substr(1,1))
										{
											changeStyle(NAV_PAST.substr(0,2), LEVEL_CURRENT, '');
										}
										
										if(LEVEL_PAST=='LEVEL_1' && NAV_PAST.substr(1,1) != NAV_CURRENT.substr(1,1))
										{
											changeStyle(NAV_PAST.substr(0,2), LEVEL_CURRENT, '');
											
											document.getElementById('LEVEL_1').innerHTML = '';
											//escondo el submenu de 3º nivel
										}else if(LEVEL_PAST=='LEVEL_1' && NAV_PAST.substr(1,1) == NAV_CURRENT.substr(1,1))
											{
												changeStyle(NAV_PAST, LEVEL_PAST, '');
											}
										document.getElementById('LEVEL_2').innerHTML = '';
										if(hasLink(obj.id) == -1)showMenu = setInterval(cronoShow, 500);
										break;
						case 'LEVEL_2':
						case 'LEVEL_1':	
										changeStyle(NAV_CURRENT, LEVEL_CURRENT, 'Over');
										//obj.className = LEVEL_CURRENT+'_centerTabOver';
										if(LEVEL_PAST=='LEVEL_1' && NAV_PAST.substr(2,1) != NAV_CURRENT.substr(2,1))
										{
											changeStyle(NAV_PAST, LEVEL_CURRENT, '');
										}
										if(LEVEL_PAST=='LEVEL_0' && NAV_PAST.substr(1,1) != NAV_CURRENT.substr(1,1))
										{
											changeStyle(NAV_PAST, LEVEL_PAST, '');
											changeStyle(NAV_CURRENT.substr(0,2), LEVEL_PAST, 'Over');
										}
										
										if(LEVEL_PAST == 'LEVEL_2' && NAV_PAST.substr(0,3) != NAV_CURRENT.substr(0,3))
										{
											//alert(NAV_PAST.substr(0,3));
											changeStyle(NAV_PAST.substr(0,3), LEVEL_CURRENT, '');
										}
										
										buildMenu(obj.id);
										break;

					}
					obj.style.zIndex = 1000;
					
					
					break;
		case 'out':	NAV_PAST = NAV_CURRENT;
					LEVEL_PAST = LEVEL_CURRENT;
					//secs = 0;
					switch(LEVEL_CURRENT)
					{
						case 'LEVEL_0':												
						case 'LEVEL_1':	
										break;
						case 'LEVEL_2': obj.className = LEVEL_CURRENT+'_centerTab';
										break;
					}
					if(NAV_VISITED != NAV_CURRENT)hideMenu = setInterval(cronoHide, 1000);
					break;
		case 'click':
					clearInterval(showMenu);
					clearInterval(hideMenu);
					secs = 0;
					
					if(hasLink(obj.id) != -1)
					{
						document.menuForm.action = hasLink(obj.id);
						document.menuForm.itemMenu.value = NAV_CURRENT;
						document.menuForm.submit();
					}else buildMenu(obj.id);
					
	}
}

//FUNCION QUE ESCONDE EL MENU EN WAIT_HIDE SEGUNDOS
function cronoHide()
{
	secs++;
	if(secs >= WAIT_HIDE)
	{
		document.getElementById('LEVEL_1').innerHTML = '';
		document.getElementById('LEVEL_2').innerHTML = '';
		
		changeStyle(NAV_CURRENT.substr(0,2), 'LEVEL_0', '');
		
		secs = 0;
		clearInterval(hideMenu);
		
		if(NAV_VISITED != '--')
		{
			NAV_PAST = NAV_CURRENT = NAV_VISITED;
			checkVisited();
		}else 
			{
				NAV_PAST = NAV_CURRENT = '--';
				LEVEL_PAST = 'LEVEL_X';
			}

	}
}

//FUNCION QUE MUESTRA EL MENU EN WAIT_SHOW SEGUNDOS
function cronoShow()
{
	//debug();
	secs++;
	if(secs >= WAIT_SHOW)
	{
		buildMenu(NAV_CURRENT);
		secs = 0;
		clearInterval(showMenu);
	}
}

//FUNCION QUE DETERMINA SI UN ITEM TIENE VINCULO Y LO DEVUELVE
function hasLink(level)
{
	var cant;							//variable que guarda la cantidad de posiciones que debo cortar con el substr
	var target = -1;					//variable que guarda el vínculo del item		
	switch(level.length)
	{
		case 2: cant = 1; break;
		case 3: cant = 2; break;
		case 4: cant = 3; break;
	}
	
	var endArray = level.substr(0,cant);
	var index = level.substr(cant,1);

	if( eval('typeof link_'+endArray) != 'undefined')
	{
		target = eval('link_'+endArray+'['+index+']');
		if(target=='') target=-1;
	}
	
	return target;
	
}

//FUNCION QUE VERIFICA SI HUBO LINK VISITADO Y CAMBIA LOS ESTILOS CORRESPONDIENTES
function checkVisited()
{
	if(NAV_VISITED != '--')
	{	
		switch(NAV_VISITED.length)
		{
			case 2: LEVEL_CURRENT ='LEVEL_0'; break;
			case 3: LEVEL_CURRENT ='LEVEL_1'; break;
			case 4: LEVEL_CURRENT ='LEVEL_2'; break;
		}

		switch(LEVEL_CURRENT)
		{
			case 'LEVEL_0': 
							changeStyle(NAV_VISITED, LEVEL_CURRENT, 'Over');
							break;
			case 'LEVEL_2':
			case 'LEVEL_1': 
							changeStyle(NAV_VISITED.substr(0,2), 'LEVEL_0', 'Over');
							buildMenu(obj.id);

							changeStyle(NAV_VISITED.substr(0,3), 'LEVEL_1', 'Over');
							break;
		}
	}
}

function changeStyle(id, level, kind)
{
	obj = document.getElementById(id);	//tomo el elemento que fue visitado anteriormente
	var zInd;

	switch(level)
	{
		case 'LEVEL_0':
						obj.firstChild.firstChild.firstChild.firstChild.className = level+'_leftSideTab'+kind;
						obj.firstChild.firstChild.firstChild.firstChild.nextSibling.className = level+'_centerTab'+kind;
						
						if(IS_IMAGE)
						{
							var src = obj.firstChild.firstChild.firstChild.firstChild.nextSibling.firstChild.attributes.src;
							switch(kind)
							{
								case 'Over':
											if(src.value.indexOf('_on.gif') == -1) src.value = src.value.substring(0,src.value.indexOf('_off.gif'))+'_on.gif';
											break;
								case '':
											if(src.value.indexOf('_off.gif') == -1) src.value = src.value.substring(0,src.value.indexOf('_on.gif'))+'_off.gif';	
											break;
							}
						}

						obj.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.className = level+'_rightSideTab'+kind;
						obj.className = '-';
						if(kind == 'Over')
						{
							zInd=1000
							obj.className = 'divOver';
						}else 
							{
								zInd=(Number(id.substr(1,1))+1)*10;
								obj.className = '-';
							}
						obj.style.zIndex = zInd;
						break;
		case 'LEVEL_2':				
		case 'LEVEL_1':
						obj = document.getElementById(id);	//tomo el elemento que fue visitado anteriormente
						if(obj.className.indexOf('arrow') != -1) kind += ' arrow';
						obj.className = level+'_centerTab'+kind;
						break;
	}
}