var d=document,w=window,wd=window.document;
var ie=n3=n=n6=op=op5=op6=op7=mac=0;
var ll = new Array();		//Array con lista de layers
var tree = new Array();		//Arbol de menues
var hdid;					//timeout id para cerrar TODO
var smid;					//timeout id para cancelar la muestra de un menu
var usa = "pp_menu";
var ds = "<div ";
var de = "</div>";
var num = 0;
var fm=true;
var zi = 100;

function draw_menu(mm,supmen){
	// Array de la configuración de ese menú
	var mc = mm[0];
	//Comienzo del layer + id
	num++;
	tnum = num;
	var tid = usa+"_"+num;
	var td = ds+'id="'+tid+'"';
	
	//Style del layer
	td += " style=\"";
	if(fm){ //Position del layer
		td += "position:relative;";
		td += "visibility:visible;";
	}else{
		td += "position:absolute;";
		td += "visibility:hidden;";
	}
	td += "\"";
	
	//Eventos del layer
	td += " onMouseOver=\"";
	td += "sha();";
	td += "\"";
	td += " onMouseOut=\"";
	td += "lmo();";
	td += "\"";

	//Cierra comienzo del layer
	td += ">";
	
	//Setea el superior
	tree[tid] = !fm?supmen:0;

	//Se agrega a la lista de layers
	if(!fm)
		ll.push(tid);

	//No es mas el primer layer
	fm = false;
	
	//Tabla
	td += "<table width=100% height=100%";
	if(mc[25])//Spacing
		td += " cellspacing="+mc[25];
	else
			td += " cellspacing=0";
	td += " cellpadding=0";
	td += " border=0";
	td += ">";

	//Items de este layer
	for(var i=1;i<mm.length;i++){
		td += "<tr><td>";
		//Comienzo del layer del item + id
		tsid = tid+"_"+i;
		td += ds+'id="'+tsid+'"';

		//Style del item
		td += " style=\"";
		td += "position:relative;";
		if(mc[0]) //Ancho del item
			td += "width:"+mc[0]+"px;";
		if(mc[1]) //Alto del item
			td += "height:"+mc[1]+"px;";
		td += "cursor:pointer;";
		if(mm[i][0]==selmen){
			td += "background-color:"+mc[8]+";";
			td += "border-color:"+mc[17]+";";
			td += "border-width:"+mc[20]+";";
			td += "border-style:"+mc[23]+";";
		}else{
			td += "background-color:"+mc[6]+";";
			td += "border-color:"+mc[15]+";";
			td += "border-width:"+mc[18]+";";
			td += "border-style:"+mc[21]+";";
		}
		td += "\"";
		
		//Eventos del layer
		// onClick
		td += " onClick=\"";
		if(mm[i][2]){
			td += "location='"+mm[i][2]+"';";
		}
		// JavaScript onClick
		if(mm[i][4])
			td += mm[i][4]+";";
		td += "\"";

		// onMouseOver
		td += " onMouseOver=\"";
		td += "chgSty(this.id,true,'"+tid+"',"+(mm[i][0]==selmen)+");";
		var nid = "";
		if(mm[i][5]){
			nid = draw_menu(mm[i][5],tid);
			mc = mm[0];
			td += "setvisible('"+nid+"',this.id,"+mc[4]+");";
		}else{
			td += "setvisible('"+tid+"','"+tid+"',"+mc[4]+");";
		}
		td += "\"";

		// onMouseOut//
		td += " onMouseOut=\"";
		td += "chgSty(this.id,false,'"+tid+"',"+(mm[i][0]==selmen)+");";
		td += "\"";

		//Cierre del layer del item
		td += ">";
		
		//Contenido
		td += "<table";
		if(mc[24])//Padding
			td += " cellpadding="+mc[24];
		else
			td += " cellpadding=0";
		td += " cellspacing=0";
		td += " width=100%";
		td += " height=100%";
		td += ">";
		td += "<tr><td";
		//Alineación del contenido
		if(mc[13])
			td += " align=\""+mc[13]+"\"";
		if(mc[14])
			td += " valign=\""+mc[14]+"\"";
		td += ">";
		td += "<a href=\"#\" class=\""+mc[26]+"\">";
		td += mm[i][1];
		td += "</a>";
		if(nid && mc[9]){
			td += ds+" style=\"";
			td += "position:absolute;";
			td += "left:"+(mc[0]-mc[10]-mc[12])+";";
			td += "top:"+((mc[1]-mc[11])/2)+";";
			td += "\">";
			td += drawImg(mc[9],mc[10],mc[11])+de;
		}
		td += "</td></tr>";
		td += "</table>";
		
		//Cierre del div
		td += de;
		td += "</td></tr>";
	}
	td += "</table>";
	td += de;
	// Escribe el layer
	d.write(td);
	var gd = gei(tid);
	gd.lo = mc[4];
	gd.to = mc[5];
	gd.msbgn = mc[6];
	gd.msbgo = mc[7];
	gd.msbgs = mc[8];
	gd.msborcn = mc[15];
	gd.msborco = mc[16];
	gd.msborcs = mc[17];
	gd.msborwn = mc[18];
	gd.msborwo = mc[19];
	gd.msborws = mc[20];
	gd.msborsn = mc[21];
	gd.msborso = mc[22];
	gd.msborss = mc[23];

	// Set Style
	var gds = gd.style;
	zi--;
	gds.zIndex = zi;
	gds.backgroundColor = mc[27];
	gds.borderColor = mc[28];
	gds.borderWidth = mc[29];
	gds.borderStyle = mc[30];
	if (navigator.appName=="Netscape"&&mc[25]) {
		gds.width = mc[0]+mc[25]+mc[25];
	}else{
		gds.width = mc[0];
	}
	gds.left = mc[2];
	gds.top = mc[3];
	return tid;
};
function gei(tid){
	return d.getElementById(tid);
}
function chgSty(who,over,sc,sel){
	stc = gei(who).style;
	vsc = gei(sc);
	if(over){
		stc.backgroundColor = vsc.msbgo;
		stc.borderColor = vsc.msborco;
		stc.borderWidth = vsc.msborwo;
		stc.borderStyle = vsc.msborso;
	}else{
		if(sel){
			stc.backgroundColor = vsc.msbgs;
			stc.borderColor = vsc.msborcs;
			stc.borderWidth = vsc.msborws;
			stc.borderStyle = vsc.msborss;
		}else{
			stc.backgroundColor = vsc.msbgn;
			stc.borderColor = vsc.msborcn;
			stc.borderWidth = vsc.msborwn;
			stc.borderStyle = vsc.msborsn;
		}
	}
}
function setvisible(id,cid,ms){
	clearTimeout(smid);
	smid = setTimeout("dosetvisible('"+id+"','"+cid+"')",showms);
}
function dosetvisible(id,cid){
	visibles = new Array();
	visibles[0] = id;
	if(cid != id && tree[id]!=0){
		lay = gei(id);
		setpos(cid,tree[id],id,lay.lo,lay.to)
	}
	while (tree[id]!=0){
		visibles.push(tree[id]);
		id = tree[id];
	}
	for(i=0;i<ll.length;i++){
		tl = gei(ll[i]);
		tl.style.visibility = 'hidden';
	}
	for(i=0;i<visibles.length;i++){
		tl = gei(visibles[i]);
		tl.style.visibility = 'visible';
	}
}
function setpos(cd,fd,sd,lo,to){
	cm = gei(cd);
	fm = gei(fd);
	sm = gei(sd);
	fms = fm.style;
	getWS();
	pl = fm.offsetLeft+parseInt(fms.width)-lo;
	if(pl+parseInt(sm.style.width) > winW){
		pl = fm.offsetLeft - parseInt(sm.style.width) + lo;
		if(pl<0)
			pl = 0;
	}
	pt = fm.offsetTop+cm.offsetTop-to;
	if(pt<0)
		pt = 0;
	sm.style.top = pt;
	sm.style.left = pl;
}
function lmo(){
	clearTimeout(smid);
	hdid = setTimeout("ha()",hidems);
}
function sha(){
	clearTimeout(hdid);
}
function ha(){
	clearTimeout(smid);
	for(i=0;i<ll.length;i++){
		tl = gei(ll[i]);
		tls = tl.style;
		tls.visibility = 'hidden';
		tls.left = 0;
		tls.top = 0;
	}
}
function trace(txt){
	tr = gei('trace')
	tr.innerHTML += txt+"<br>";
}
function drawImg(iurl,w,h){
	it = "<img";
	it += " src='"+iurl+"'";
	it += " width='"+w+"'";
	it += " height='"+h+"'";
	it += ">";
	return it;
}
function getWS(){
	if (parseInt(navigator.appVersion)>3) {
		if (navigator.appName=="Netscape") {
			winW = window.innerWidth-16;
			winH = window.innerHeight-16;
		}
		if (navigator.appName.indexOf("Microsoft")!=-1) {
			winW = document.body.offsetWidth-20;
			winH = document.body.offsetHeight-20;
		}
	}
	return(winW,winH)
}
w.onresize = wResize;
function wResize(){
	ha();
}