var VEC_MENUES_DINAMICOS = new Array();
var TIPO_MENU_REACCION = 1; 

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("<script type='text/javascript'>location.href='"+url+"';</script>");
		}
}
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)
    {
        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_";

        var PREFIJO_ID="";

        if (id.indexOf("_")!=-1)
        {
            var vtemp = id.split("_");
            PREFIJO_ID=vtemp[0]+"_";
        }


    switch(tipo)
    {
        case TIPO_MENU_PADRE:
            om  = getObj("__MENU_PADRE__"+ly);
            if (!om)
                om  = getObj("__MENU_PADRE__");
                
        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]);

        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]);

        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)
            {
            }
            else
                setget_attr(divel,'onmouseover', 'sh_container("'+PREFIJO_MC+id+'",1);');
        }
    }

    if (out!=null)
    out.appendChild(divel);


    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;
    }

        var item_menu=getObj(id);

        if (tipo==TIPO_MENU_PADRE)
        {
            item_menu_onclick = getObj(PREFIJO_MC_PADRE+id);

            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")
            {
            }
            if (url!="")
            {
                url=str_replace(url,"&amp;","&");
                add_func = "wm_url_onclick('"+ly+"','"+str_new_parent+"','"+url+"');";
            }
            else
            {
                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);
                }
                else
                    if (tipo==TIPO_MENU_HIJO2)
                    {
                        setget_attr(item_menu_onclick,'onclick', ''+add_func+'');
                        obj_href = getObj(PREFIJO_HREF_HIJO2+id);
                    }
                    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
            {
                setget_attr(item_menu_onclick,'onclick', 'void(0);');
            }
        }

   if (clase_seleccionado!="" && item_menu_onclick!=null)
   {
        if (tipo==TIPO_MENU_PADRE)
        {
            var ohref = getObj(PREFIJO_HREF_PADRE+id);
            if (ohref!=null)
                su_class(ohref,clase_seleccionado,1);
        } else {
            if (tipo==TIPO_MENU_HIJO1)
                su_class(PREFIJO_HREF_HIJO+id,clase_seleccionado,2);
            else
                su_class(PREFIJO_HREF_HIJO2+id,clase_seleccionado,2);
        }
     }

    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); } }');
        }
    }

    if (tipo==TIPO_MENU_PADRE && img=="")
    {
        sh_container(PREFIJO_IMAGEN+id,0);
    }
}

function sh_container(ly,p)
{
    if (typeof(ly)!="object")
        ly=getObj(ly);

    if (!ly || ly==null) return;

    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;


    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;
    }
}

/********************************************************************************/

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);
  }
}
