var tiempoEsperaMouseOver = 200;
var xmlhttp;
var idCargando = -1;
var divCargando;
var divsCargando = new Array();
var menuLIs = new Array();
var bulFlechita, bulFlechitaAbajo;
var timeOutAuto = 0;
var idMunicipio = 0;
var binario = 0; //variable que define par o impar

function loadMenu(idPadre, idPreview, soloAbrir) {
	if (idCargando == idPadre) return;
	var divPadre = document.getElementById("divMenuHijos_" + idPadre);
	if (idCargando != -1 && idCargando != idPadre) {	//se estaba cargando otro menú, cancelar eso
		divPadre = document.getElementById("divMenuHijos_" + idCargando);
		divPadre.removeChild(divsCargando[idCargando]);
		divPadre.cargado = false;
//		menuLIs[idCargando].style.listStyleImage = bulFlechita.src;
		menuLIs[idCargando].className = "itemMenuLista";
		divPadre = document.getElementById("divMenuHijos_" + idPadre);
		idCargando = -1;
	}
	if (divPadre.cargado) {	//sólo abrirlo o cerrarlo
		if (divPadre.style.display == "none") {	//abrir el menú que ya está cargado
			divPadre.style.display = "block";
//			menuLIs[idPadre].style.listStyleImage = bulFlechitaAbajo.src;
			menuLIs[idPadre].className = "itemMenuListaAb";
		} else if (!soloAbrir) {	//cerrar el menú que ya está cargado
			divPadre.style.display = "none";
//			menuLIs[idPadre].style.listStyleImage = bulFlechita.src;
			menuLIs[idPadre].className = "itemMenuLista";
		}
	} else {	//cargarlo de la base
//		if (idPadre != 0) menuLIs[idPadre].style.listStyleImage = bulFlechitaAbajo.src;
		if (idPadre != 0) menuLIs[idPadre].className = "itemMenuListaAb";
		divsCargando[idPadre] = divCargando.cloneNode(true);
		divPadre.appendChild(divsCargando[idPadre]);
		divPadre.cargado = true;
		idCargando = idPadre;
		url = "hijos.php?idPadre=" + idPadre;
		if (idPreview != null) {
			url += "&preview=" + idPreview;
		}
		if (window.XMLHttpRequest) {	//mozilla, etc.
			xmlhttp=new XMLHttpRequest();
			xmlhttp.onreadystatechange = function() {
				xmlhttpChange(idPadre, idPreview);
			}
			xmlhttp.open("GET",url,true);
			xmlhttp.send(null);
		} else if (window.ActiveXObject) {	//IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
			if (xmlhttp) {
				xmlhttp.onreadystatechange = function() {
					xmlhttpChange(idPadre, idPreview);
				}
				xmlhttp.open("GET",url,true);
				xmlhttp.send();
			}
		}
	}
}

function xmlhttpChange(idPadre, idPreview) {
	if (xmlhttp.readyState==4) {	// if xmlhttp shows "loaded"
		if (xmlhttp.status==200) {	// if "OK"
			parseMenu(xmlhttp.responseText, idPadre);
			idCargando = -1;
			if (menuCamino.length)
				loadMenu(menuCamino.shift(), idPreview);
		} else {
			alert("Problem retrieving XML data");
		}
	}
}

function parseMenu(texto, idPadre) {
	var campos = 5;
	var campoActual = 0;
	var datos = new Array();	//es un arreglo temporal en el q se guarda cada registro
	var divPadre = document.getElementById("divMenuHijos_" + idPadre);

	//quitar "cargando..."
	divPadre.removeChild(divsCargando[idPadre]);

	while (texto.indexOf("|") != -1) {
		datos[campoActual] = texto.substr(0, texto.indexOf("|"));
		texto = texto.substr(texto.indexOf("|") + 1);
		campoActual++;
		if (campoActual == campos) {
			mostrarMenuItem(idPadre, datos);
			//resetear para mostrar otro registro
			campoActual = 0;
			datos = new Array();
		}
	}
	datos[campoActual] = texto;
	mostrarMenuItem(idPadre, datos);
}

function mostrarMenuItem(idPadre, datos) {
	/*
	DIV: menuHijos_0 {
		DIV: itemMenu_4 {
			DIV: tempDiv2 {
				UL: tempUL {
					LI: LI {
						A: vinculo
					}
				}
			}
			DIV: menuHijos_4 {	//este es recursivo
			}
		}
		DIV: itemMenu_6 {
			DIV: tempDiv2 {
				UL: tempUL {
					LI: LI {
						A: vinculo
					}
				}
			}
			DIV: menuHijos_6 {
			}
		}
	}
	*/
	//datos[0] me da el nivel en el que estoy desde 0	
	var tempDiv, tempDiv2, tempVinculo, tempVinculoBul, tempDivHijos, tempUL;	//temporal, se guardan los elementos de cada item
	var divPadre = document.getElementById("divMenuHijos_" + idPadre);
	//mostrar éste
	tempDiv = document.createElement("div");
	
	if(binario){ //determina si es par o impar
		par = "_b";
		binario=0;
	}else{
		par = "";
		binario=0;
	}	
	
	tempDiv.className = "itemMenu_" + datos[0];
	tempDiv.id = "divMenu_" + datos[1];
	
	//el div2
	tempDiv2 = document.createElement("div");
	if (menuActual == datos[1]) {
		tempDiv2.className = "itemMenu2over_" + datos[0];
	} else {
		tempDiv2.className = "itemMenu2_" + datos[0] + par;
		if (datos[4] == "1") {
			tempDiv2.onmouseover = function() {
				claseOver = this.className; //guarda la clase que esta usando
				this.className = "itemMenu2over_" + datos[0];
				if (timeOutAuto != 0) {
					clearTimeout(timeOutAuto);
					timeOutAuto = 0;
				}
				timeOutAuto = setTimeout("loadMenu("+this.dato1+", null, true);", tiempoEsperaMouseOver);
			}
		} else {
			tempDiv2.onmouseover = function() {
				claseOver = this.className; //guarda la clase que esta usando
				this.className = "itemMenu2over_" + datos[0];
			}
		}
		if (datos[4] == "1") {
			tempDiv2.onmouseout = function() {
				this.className = claseOver;
				//this.className = "itemMenu2_" + datos[0];
				if (timeOutAuto != 0) {
					clearTimeout(timeOutAuto);
					timeOutAuto = 0;
				}
			}
		} else {
			tempDiv2.onmouseout = function() {
				this.className = claseOver; // regresa a la clase guardada
				//this.className = "itemMenu2_" + datos[0];
			}
		}
	}
	if (datos[4] == "1") {
		tempDiv2.dato1 = datos[1];
		tempDiv2.onclick = function() {
			loadMenu(this.dato1);
			if (timeOutAuto != 0) {
				clearTimeout(timeOutAuto);
				timeOutAuto = 0;
			}
		}
	}
	
	//el LI
	tempUL = document.createElement("ul");
	tempUL.className = "menuUL_" + datos[0];
	menuLIs[datos[1]] = document.createElement("li");
	
	/*if(datos[0]==0){
		createFlashMarkup(21,14,'images/cuadrados1Glow2.swf',menuLIs[datos[1]]);
//		alert(menuLIs[datos[1]].innerHTML);
//		menuLIs[datos[1]].style.border = "2px solid yellow";
	}*/
	
	if (datos[4] == "1") menuLIs[datos[1]].className = "itemMenuLista";
	else menuLIs[datos[1]].className = "itemMenuListaSin";
//	menuLIs[datos[1]].style.marginLeft = (10*datos[0]+20) + "px";
	
	//el vínculo
	tempVinculo = document.createElement("a");
	tempVinculo.className = "itemMenuVinculo" + (menuActual == datos[1] ? "Over" : "") + "_" + datos[0];
	tempVinculo.innerHTML = '<img src="imgCreate.php?txt='+datos[2]+'&txtcolor=000000&bgcolor=ADADAD&size=8" border="0" style="display:block" id="imgOver_'+datos[1]+'">';
	
	
	if (datos[3] != '') {	//es un vínculo externo
		tempVinculo.href = datos[3];
		tempVinculo.target = "_blank";
	} else {	//es un vínculo normal
		if (datos[1] == -1)	//es el vínculo a Inicio
			tempVinculo.href = "home.php";
		else	//normal
			tempVinculo.href = "main.php?idSeccion=" + datos[1];
	}
	
	//el div para los hijos
	tempDivHijos = document.createElement("div");
	tempDivHijos.id = "divMenuHijos_" + datos[1];
	
	//armar toda la estructura
	menuLIs[datos[1]].appendChild(tempVinculo);
	tempUL.appendChild(menuLIs[datos[1]]);
	tempDiv2.appendChild(tempUL);
	tempDiv.appendChild(tempDiv2);
	tempDiv.appendChild(tempDivHijos);
	divPadre.appendChild(tempDiv);
	
}

function menuInicial() {
	
	divCargando = document.createElement("div");
	divCargando.className = "cargando";
	divCargando.innerHTML = "Cargando menú...";
	
	bulFlechita = new Image();
	bulFlechita.src = "images/flechita.gif";
	bulFlechitaAbajo = new Image();
	bulFlechitaAbajo.src = "images/flechitaAbajo.gif";
	bulSpacer = new Image();
	bulSpacer.src = "images/spacer.gif";

	menuCamino.shift();
}

//para poner flash en el menu
function createFlashMarkup(width,height,uri,elLI){
	
/*	var obj = document.createElement('object');
	obj.setAttribute('classid','clsid:D27CDB6E-AE6D-11cf-96B8-444553540000');
	obj.setAttribute('codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0');
	obj.setAttribute('width',width);
	obj.setAttribute('height',height);
	
	//obj.setAttribute('data',uri);
	
	var p_movie = document.createElement('param');
	p_movie.setAttribute('name','movie');
	p_movie.setAttribute('value',uri);
	obj.appendChild(p_movie);
	
	var p_quality = document.createElement('param');
	p_quality.setAttribute('name','quality');
	p_quality.setAttribute('value','high');
	obj.appendChild(p_quality);
	
	var p_menu = document.createElement('param');
	p_menu.setAttribute('name','menu');
	p_menu.setAttribute('value','false');
	obj.appendChild(p_menu);
	
	var p_wmode = document.createElement('param');
	p_wmode.setAttribute('name','wmode');
	p_wmode.setAttribute('value','transparent');
	obj.appendChild(p_wmode);
	
	var emb = document.createElement('embed');
	emb.setAttribute('src',uri);
	emb.setAttribute('quality','high');
	emb.setAttribute('pluginspage','http://www.macromedia.com/go/getflashplayer');
	emb.setAttribute('type','application/x-shockwave-flash');
	emb.setAttribute('menu','false');
	emb.setAttribute('wmode','transparent');
	emb.setAttribute('width',width);
	emb.setAttribute('height',height);
	elLI.appendChild(emb);

	elLI.appendChild(obj);*/

	var tempDiv = document.createElement('div');
	var tempStr = "";
	tempStr += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="' + width + '" height="' + height + '">';
	tempStr += '<param name="movie" value="' + uri + '">';
	tempStr += '<param name="quality" value="high">';
	tempStr += '<param name="menu" value="false">';
	tempStr += '<param name="wmode" value="transparent">';
	tempStr += '<embed src="' + uri + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + width + '" height="' + height + '" menu="false" wmode="transparent"></embed>';
	tempStr += '</object>';
	tempDiv.className = 'swfMenu';
//	tempDiv.setAttribute("style","float=left");
	tempDiv.style.width = width + "px";
//	tempDiv.style.styleFloat = "left";
//	tempDiv.style.border = "1px solid blue";
	tempDiv.innerHTML = tempStr;
	elLI.appendChild(tempDiv);

	/*var div = document.getElementById(replaceid);
	document.getElementsByTagName('body')[0].replaceChild(obj,div); */
}
