var VEC_MENUES_DINAMICOS = new Array(); var TIPO_MENU_REACCION = 1; //Por defecto onmouseover /*Detección de Versión de Internet Explorer*/ function detect_IE_version(){return (navigator.appName=='Microsoft Internet Explorer')?parseFloat((new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})")).exec(navigator.userAgent)[1]):-1;} function wm_url_onclick(ly, path, url) { if (!VEC_MENUES_DINAMICOS[ly] || VEC_MENUES_DINAMICOS[ly]==null) return false; if (url!="" && Boolean(VEC_MENUES_DINAMICOS[ly][path])) { var ie_ver = detect_IE_version(); if (ie_ver==-1 || ie_ver>6) location.href=url; else document.write(""); } } function write_menu(id,parent,tipo,ly,txt,url,img,mc_class,clase_seleccionado,MENU_CLASE_HREF,MENU_PRINCIPAL_CLASE_MOUSEOUT) { if (VEC_MENUES_DINAMICOS[ly]==null) VEC_MENUES_DINAMICOS[ly] = new Array(); var vectmp_parent = parent.split("."); var str_new_parent = ""; if (vectmp_parent.length>2) { //Elimino el último elemento. vectmp_parent.splice((vectmp_parent.length-1),1); str_new_parent = vectmp_parent.join("."); VEC_MENUES_DINAMICOS[ly][str_new_parent]=1; } else { VEC_MENUES_DINAMICOS[ly][parent]=1; } if (str_new_parent=="") str_new_parent=parent; var out = getObj(ly);if (!out) return; var om,omc,ohref; var in_str="", out_str=""; if (!txt) var txt=""; if (!url) var url=""; if (!img) var img=""; if (!clase_seleccionado) clase_seleccionado=""; var TIPO_MENU_PADRE=0; var TIPO_MENU_HIJO1=1; var TIPO_MENU_HIJO2=2; var TIPO_MENU_SEPARADOR=-1; var TAG_TXT="__MENU_TEXTO__"; var TAG_URL="__MENU_LINK__"; var TAG_IMG_SRC="__MENU_IMAGEN__"; var TAG_IMG_OBJ="__M_IMAGEN__"; var TAG_M_CONTENEDOR_PRINCIPAL="__MENU_CONTENEDOR_PRINCIPAL__"+ly; var TAG_M_CONTENEDOR_PADRE="__MENU_CONTENEDOR_PADRE__"+ly; //Este contiene solo al padre var TAG_HREF_PADRE="__HREF_PADRE__"+ly; var TAG_HREF_HIJO="__HREF_HIJO__"+ly; var TAG_HREF_HIJO2="__HREF_HIJO2__"+ly; var TAG_M_CONTENEDOR="__MENU_CONTENEDOR__"+ly; var TAG_M_CONTENEDOR_H1="__MENU_CONTENEDOR_HIJO1__"+ly; var TAG_M_CONTENEDOR_HIJOS_H1="__MENU_CONTENEDOR_HIJOS_DE_HIJO1__"+ly; var PREFIJO_MC_PRINCIPAL="MC_PRINCIPAL_"; var PREFIJO_MC_PADRE="MC_PADRE"; var PREFIJO_HREF_PADRE="HREF_PADRE_"; var PREFIJO_HREF_HIJO="HREF_HIJO_"; var PREFIJO_HREF_HIJO2="HREF_HIJO2_"; var PREFIJO_MC="MC_"; var PREFIJO_MC_H1="MC_H1_"; var PREFIJO_MC_HIJOS_H1="MC_HIJOS_H1_"; var PREFIJO_IMAGEN="OBJ_M_IMAGEN_"+ly; var PREFIJO_ID=""; /* Agrego éste código por los ids q contienen letras ej. cat_ */ if (id.indexOf("_")!=-1) { var vtemp = id.split("_"); PREFIJO_ID=vtemp[0]+"_"; } switch(tipo) { case TIPO_MENU_PADRE: om = getObj("__MENU_PADRE__"+ly); // alert(om+"--->"+ly); if (!om) om = getObj("__MENU_PADRE__"); /* if (mc_class && mc_class!="") out.className=out.className+" "+mc_class; */ break; case TIPO_MENU_HIJO1: om = getObj("__MENU_HIJO1__"+ly); if (!om) om = getObj("__MENU_HIJO1__"); vec_path = parent.split("."); vec_path.splice(0,1); if (vec_path[0]) out=getObj(PREFIJO_MC+PREFIJO_ID+vec_path[0]); /* if (out==null) alert(id+"--->"+parent+"{"+txt+"}"+"-->path[0]:"+vec_path[0]+"-->"+mc_class+"--->["+PREFIJO_MC+PREFIJO_ID+vec_path[0]+"] ("+out+")"); */ break; case TIPO_MENU_HIJO2: om = getObj("__MENU_HIJO2__"+ly); if (!om) om = getObj("__MENU_HIJO2__"); vec_path = parent.split("."); vec_path.splice(0,2); if (vec_path[0]) out=getObj(PREFIJO_MC_HIJOS_H1+PREFIJO_ID+vec_path[0]); // alert(id+"--->"+parent+"{"+txt+"}"+"-->path[0]:"+vec_path[0]+"-->"+mc_class+"--->["+PREFIJO_MC_HIJOS_H1+PREFIJO_ID+vec_path[0]+"] ("+out+")"); break; default: om = getObj("__MENU_SEPARADOR__"+ly); if (!om) om = getObj("__MENU_SEPARADOR__"); break; } in_str = om.innerHTML; out_str = str_replace(in_str,TAG_TXT,txt); out_str = str_replace(out_str,TAG_URL,url); out_str = str_replace(out_str,TAG_IMG_SRC,img); out_str = str_replace(out_str,TAG_IMG_OBJ,PREFIJO_IMAGEN+id); out_str = str_replace(out_str,TAG_M_CONTENEDOR_PRINCIPAL,PREFIJO_MC_PRINCIPAL+id); out_str = str_replace(out_str,TAG_M_CONTENEDOR_PADRE,PREFIJO_MC_PADRE+id); out_str = str_replace(out_str,TAG_HREF_PADRE,PREFIJO_HREF_PADRE+id); out_str = str_replace(out_str,TAG_HREF_HIJO,PREFIJO_HREF_HIJO+id); out_str = str_replace(out_str,TAG_HREF_HIJO2,PREFIJO_HREF_HIJO2+id); out_str = str_replace(out_str,TAG_M_CONTENEDOR,PREFIJO_MC+id); out_str = str_replace(out_str,TAG_M_CONTENEDOR_H1,PREFIJO_MC_H1+id); out_str = str_replace(out_str,TAG_M_CONTENEDOR_HIJOS_H1,PREFIJO_MC_HIJOS_H1+id); out_str = str_replace(out_str,"\"u\"",""); var divel = document.createElement("DIV"); divel.id = id; divel.innerHTML = out_str; if (TIPO_MENU_REACCION==0) { if (tipo==TIPO_MENU_HIJO1) setget_attr(divel,'onmouseover', 'sh_container("'+PREFIJO_MC_HIJOS_H1+id+'",1);'); else { if (tipo==TIPO_MENU_PADRE) { // setget_attr(divel,'onmouseover', 'sh_container("'+PREFIJO_MC+id+'",1);this.className=this.className+" menuA01_active";'); } else setget_attr(divel,'onmouseover', 'sh_container("'+PREFIJO_MC+id+'",1);'); } } if (out!=null) out.appendChild(divel); /* Si es menu padre entonces agrego la clase */ if (tipo==TIPO_MENU_PADRE && mc_class && mc_class!="") { var obj_MC=getObj(PREFIJO_MC+id); if (obj_MC!=null) if (obj_MC.className.indexOf(mc_class)==-1) obj_MC.className=obj_MC.className+" "+mc_class; } /******************************************************************************* VER DE CAMBIAR var item_menu=getObj(id); POR UN CONTENEDOR DEL MENU EN SI *******************************************************************************/ var item_menu=getObj(id); /* Si tiene url la agrego */ if (tipo==TIPO_MENU_PADRE) { item_menu_onclick = getObj(PREFIJO_MC_PADRE+id); /* AGREGO EVENTO ONMOUSEOVER SOBRE EL MENU PADRE */ ohref = getObj(PREFIJO_HREF_PADRE+id); if (ohref!=null) { if (TIPO_MENU_REACCION==0) setget_attr(ohref,'onmouseover', 'sh_container("'+PREFIJO_MC+id+'",1);su_class("'+PREFIJO_HREF_PADRE+id+'","'+MENU_CLASE_HREF+'",1)'); else setget_attr(ohref,'onmouseover', 'su_class("'+PREFIJO_HREF_PADRE+id+'","'+MENU_CLASE_HREF+'",1);'); } } else { if (tipo==TIPO_MENU_HIJO1) { item_menu_onclick = getObj(PREFIJO_MC_H1+id); } else item_menu_onclick = item_menu; } if (item_menu_onclick!=null) { var add_func=""; var obj_href = null; if (ly=="menu_result") { //alert(txt+"--->"+url); } if (url!="") { //url = unescape(url); url=str_replace(url,"&","&"); add_func = "wm_url_onclick('"+ly+"','"+str_new_parent+"','"+url+"');"; } else { /* if (ly=="productos_result") alert(txt+":"+obj_href+" tipo:"+tipo+" url:"+url+" (add_func):"+add_func+" VEC_MENUES_DINAMICOS:"+VEC_MENUES_DINAMICOS[ly][parent]); */ if (Boolean(VEC_MENUES_DINAMICOS[ly][str_new_parent]) && TIPO_MENU_REACCION!=0) { add_func="void(0);"; } } if (add_func!="" || add_func=="void(0);") { if (tipo==TIPO_MENU_HIJO1) { setget_attr(item_menu_onclick,'onclick', 'sh_container("'+PREFIJO_MC_HIJOS_H1+id+'",-1);'+add_func+''); obj_href = getObj(PREFIJO_HREF_HIJO+id); /* if (ly=="productos_result") alert(txt+":"+obj_href+" tipo:"+tipo+" url:"+url+" (add_func):"+add_func); */ } else if (tipo==TIPO_MENU_HIJO2) { setget_attr(item_menu_onclick,'onclick', ''+add_func+''); obj_href = getObj(PREFIJO_HREF_HIJO2+id); /* if (ly=="productos_result") alert(txt+":"+obj_href+" tipo:"+tipo+" url:"+url+" (add_func):"+add_func); */ } else setget_attr(item_menu_onclick,'onclick', 'sh_container("'+PREFIJO_MC+id+'",-1);'+add_func+''); if (obj_href!=null) setget_attr(obj_href,'href', url); } else { //anulo el click para los menues que no contienen url setget_attr(item_menu_onclick,'onclick', 'void(0);'); } } //Seteo de clase para el menu activo if (clase_seleccionado!="" && item_menu_onclick!=null) { if (tipo==TIPO_MENU_PADRE) { // Averiguo el menu padre para dejarlo marcado var ohref = getObj(PREFIJO_HREF_PADRE+id); if (ohref!=null) su_class(ohref,clase_seleccionado,1); } else { // Aqui solo marco a los hijos seleccionados if (tipo==TIPO_MENU_HIJO1) su_class(PREFIJO_HREF_HIJO+id,clase_seleccionado,2); else su_class(PREFIJO_HREF_HIJO2+id,clase_seleccionado,2); } } /* En el mouseout del contenedor principal, lo oculto */ var obj_cont = getObj(PREFIJO_MC_PRINCIPAL+id); if (tipo==TIPO_MENU_PADRE && obj_cont!=null) { if (TIPO_MENU_REACCION==0) { setget_attr(obj_cont,'onmouseout', 'if (checkMouseLeave(this, event)) { sh_container("'+PREFIJO_MC+id+'",0); if ("'+clase_seleccionado+'"=="") { su_class("'+PREFIJO_HREF_PADRE+id+'","'+MENU_PRINCIPAL_CLASE_MOUSEOUT+'",2); } }'); } } //OCULTO LA IMAGEN DEL MENU PADRE EN CASO DE NO TENER IMAGEN if (tipo==TIPO_MENU_PADRE && img=="") { sh_container(PREFIJO_IMAGEN+id,0); } } function sh_container(ly,p) { // alert(ly); if (typeof(ly)!="object") ly=getObj(ly); if (!ly || ly==null) return; //Excepción caso Onclick if (p==-1) { if (ly.style.display=="") ly.style.display="none"; else ly.style.display=""; return; } if (p) { ly.style.display=""; } else { ly.style.display="none"; } } function su_class(ly,cn,p) { if (typeof(ly)!="object") ly=getObj(ly); if (!ly || ly==null) return; // alert("ly:"+ly.id+"*--"+cn+""); switch(p) { case 0: //QUITAR if (ly.className.indexOf(cn)!=-1) ly.className=ly.className.split(cn).join(""); break; case 1: //AGREGAR if (ly.className.indexOf(cn)==-1) if (ly.className!="") ly.className=ly.className+" "+cn; else ly.className=cn; break; case 2: //SOBREESCRIBIR LAS CLASES ly.className=cn; break; } //alert(ly.id+"-->"+ly.className+"\n"+ly.innerHTML); } /********************************************************************************/ function containsDOM (container, containee) { var isParent = false; do { if ((isParent = container == containee)) break; containee = containee.parentNode; } while (containee != null); return isParent; } function checkMouseEnter (element, evt) { if (element.contains && evt.fromElement) { return !element.contains(evt.fromElement); } else if (evt.relatedTarget) { return !containsDOM(element, evt.relatedTarget); } } function checkMouseLeave (element, evt) { if (element.contains && evt.toElement) { return !element.contains(evt.toElement); } else if (evt.relatedTarget) { return !containsDOM(element, evt.relatedTarget); } }