﻿//-------------------------------------------------------------------------
//poner un color de fondo a un objeto boton con css
//-------------------------------------------------------------------------
function poner_menu_color(botonMenu1, colorFuente, color){
botonMenu1.style.color = colorFuente;
botonMenu1.style.background = color;
//botonMenu1.style.background = '#FFAAFF';
return false;
}

function poner_menu_color_allChildren(botonMenu1, colorFuente, color) {
    botonMenu1.style.color = colorFuente;
    botonMenu1.style.background = color;
    //botonMenu1.style.background = '#FFAAFF';
    if (botonMenu1.hasChildNodes)
    {
    var m = botonMenu1.children
    for(i=0; i<m.length; i++) {
        poner_menu_color_allChildren(botonMenu1, colorFuente, color)
    }
     return false;
    }
}

////pone color e imagen a un objeto boton con css
//function poner_menu_imagen(botonMenu, colorFuente, color, newImage, divFlot){
//botonMenu.style.background = color + " url(" + newImage + ") no-repeat inherit center right";
//botonMenu.style.color = colorFuente;
//return false;
//}

//pone color e imagen a un objeto boton con css
function poner_menu_imagen(botonMenu, colorFuente, color, newImage) {
    //botonMenu.style.background = color + " url(" + newImage + ") no-repeat inherit center right";
    botonMenu.style.backgroundColor = color;
    botonMenu.style.backgroundImage = 'url(' + newImage + ')';
    botonMenu.style.backgroundRepeat = 'no-repeat';
    botonMenu.style.backgroundAttachment = 'inherit';
    botonMenu.style.backgroundPosition = 'center right';
    botonMenu.style.color = colorFuente;
    return false;
}

//pone color e imagen a un objeto boton con css
function poner_menu_imagen_a_la_izquierda(botonMenu, colorFuente, color, newImage, divFlot) {
    //botonMenu.style.background = color + " url(" + newImage + ") no-repeat inherit center left";
    botonMenu.style.backgroundColor = color;
    botonMenu.style.backgroundImage = 'url(' + newImage + ')';
    botonMenu.style.backgroundRepeat = 'no-repeat';
    botonMenu.style.backgroundAttachment = 'inherit';
    botonMenu.style.backgroundPosition = 'center left';
    botonMenu.style.color = colorFuente;
    return false;
}

//pone color e imagen a un objeto boton con css
function poner_menu_imagen_en_el_centro(botonMenu, colorFuente, color, newImage, cadenaCentrado) {
    //botonMenu.style.background = color + " url(" + newImage + ") no-repeat inherit center left";
    botonMenu.style.backgroundColor = color;
    botonMenu.style.backgroundImage = 'url(' + newImage + ')';
    botonMenu.style.backgroundRepeat = 'no-repeat';
    botonMenu.style.backgroundAttachment = 'inherit';
    botonMenu.style.backgroundPosition = cadenaCentrado;
    botonMenu.style.color = colorFuente;
    return false;
}


//-------------------------------------------------------------------------
//logica de control del menuGrualia
//-------------------------------------------------------------------------
var dissapeardelay = 100; //tiempo en milisegundos que aguantan los menus activos antes de entrar en ellos


function sacar_submenu(boton, divHijo, visibilidadSubMenu, divPropio, fijo, nodoFinal, divPadre, menuHorizontal,menuRTL){

var objBoton = document.getElementById(boton.id);
var objDivHijo = document.getElementById(divHijo);
var objDivPropio = document.getElementById(divPropio);
var objDivPadre = document.getElementById(divPadre);

//si no es nodo final, tendra submenus por lo que es necesario saber donde aparecer este submenu
//aplica los cambios directamente sobre el objDivHijo
if (nodoFinal == 'false')
{
    if (menuHorizontal == 'True')
    {
        if (menuRTL == 'True') 
        {
            findPosRTL(objBoton.id, objDivHijo.id);
        }
        else 
        {
           //calculo de la posicion del hijo de ese nodo para sacarlo en horizontal
           findPos(objBoton.id, objDivHijo.id);
        }
    }
    else
    {
    //calculo de la posicion del hijo de ese nodo para sacarlo en vertical
     findPosMenuVertical(objBoton.id,objDivHijo.id);
    }
}

//RATON FUERA DIV
if (visibilidadSubMenu == 'none')
    {
        
        //al quitarse el raton en un nodo hoja
        if (fijo == 'false' & nodoFinal == 'true') {
            //alert('1');
            //ocultamos el nodo propio y cancelamos la accion de ocultar el padre
            delayhidemenu(objDivPropio);
            clearTimeout(objDivPadre["at_timeout"]);
        }
        
        //si es nodo intermedio
        if (fijo == 'false' & nodoFinal == 'false') 
        {
            //alert('2');
            //ocultamos el nodo propio y cancelamos la accion de ocultar el padre
            delayhidemenu(objDivPropio);
            delayhidemenu(objDivHijo);
            clearTimeout(objDivPadre["at_timeout"]);            
        }
        
        //si es nodo fijo
        if (fijo == 'true' & nodoFinal == 'false') {
            //alert('3');
         //ocultamos al hijo
         delayhidemenu(objDivHijo);
        }
        
    }
    
//RATON ENCIMA DIV    
else
    {
        //mostar submenu, mouse over                 
        
        //mostramos el hijo, el div mismo y el padre (por si acaso)
        objDivHijo.style.display = '';
        objDivPropio.style.display = '';            //asi decimos que el propio menu sobre el que estamos es visible
        objDivPadre.style.display = ''; 
        //cancelamos todos los timers de ocultacion
        clearTimeout(document.getElementById(divHijo)["at_timeout"]);
        clearTimeout(document.getElementById(divPropio)["at_timeout"]);
        clearTimeout(document.getElementById(divPadre)["at_timeout"]);
    }
    

return false;
}




function delayhidemenu(obj){
//esta funcion conecta un timer, cuando llege el tiempo ocultara el div
obj["at_timeout"] = setTimeout("document.getElementById('"+obj.id+"').style.display = 'none'",dissapeardelay);
}

function hidemenu(obj){
obj.style.display = 'none';
//obj.style.visibility = "hidden";
}


//obtiene la posicion del nuevo menu respecto a la posicion del padre, 
//parametro obj --> padre del nuevo menu
function findPosRTL(nombreObjPadre,nombreObjHijo){

var objPadre = document.getElementById(nombreObjPadre);
var objHijo = document.getElementById(nombreObjHijo);

var posX = objPadre.offsetLeft;
var posY = objPadre.offsetTop;

var anchoPadre = objPadre.clientWidth
var altoPadre = objPadre.clientHeight

while(objPadre.offsetParent)
{
    posX = posX + objPadre.offsetParent.offsetLeft;
    posY = posY + objPadre.offsetParent.offsetTop;
    
    //si el padre es igual al padre paramos de buscar para atras
    if(objPadre==document.getElementsByTagName('body')[0]){break}
    else{objPadre=objPadre.offsetParent;}    
}

//la posicion relativa del nuevo menu es x = el ancho del menu padre
//la posicion relativa del nuevo menu es y = igual a la y del padre
var relX = anchoPadre;
var relY = 0;

objHijo.style.left = (posX + relX - anchoPadre - objHijo.clientWidth) + 'px';
objHijo.style.top=(posY + relY)+'px';
//alert('Arabe posX:' + posX + ' relX:' + relX + ', posY:' + posY+ ' relY:' + relY);
}

//obtiene la posicion del nuevo menu respecto a la posicion del padre, 
//parametro obj --> padre del nuevo menu
function findPosMenuVertical(nombreObjPadre,nombreObjHijo){

var objPadre = document.getElementById(nombreObjPadre);
var objHijo = document.getElementById(nombreObjHijo);

var posX = objPadre.offsetLeft;
var posY = objPadre.offsetTop;

var anchoPadre = objPadre.clientWidth
var altoPadre = objPadre.clientHeight

while(objPadre.offsetParent)
{
    posX = posX + objPadre.offsetParent.offsetLeft;
    posY = posY + objPadre.offsetParent.offsetTop;
    
    //si el padre es igual al padre paramos de buscar para atras
    if(objPadre==document.getElementsByTagName('body')[0]){break}
    else{objPadre=objPadre.offsetParent;}    
}

//la posicion relativa del nuevo menu es x = el ancho del menu padre
//la posicion relativa del nuevo menu es y = igual a la y del padre
var relX = 0;
var relY = altoPadre;

objHijo.style.left=(posX+relX)+'px';
objHijo.style.top=(posY+relY)+'px';
//alert('posX:' + posX+ 'relX:' + relX + ', posY:' + posY+ 'relY:' + relY);
}


//obtiene la posicion del nuevo menu respecto a la posicion del padre, 
//parametro obj --> padre del nuevo menu
function findPos(nombreObjPadre, nombreObjHijo) {

    var objPadre = document.getElementById(nombreObjPadre);
    var objHijo = document.getElementById(nombreObjHijo);

    var posX = objPadre.offsetLeft;
    var posY = objPadre.offsetTop;

    var anchoPadre = objPadre.clientWidth
    var altoPadre = objPadre.clientHeight

    while (objPadre.offsetParent) {
        posX = posX + objPadre.offsetParent.offsetLeft;
        posY = posY + objPadre.offsetParent.offsetTop;

        //si el padre es igual al padre paramos de buscar para atras
        if (objPadre == document.getElementsByTagName('body')[0]) { break }
        else { objPadre = objPadre.offsetParent; }
    }

    //la posicion relativa del nuevo menu es x = el ancho del menu padre
    //la posicion relativa del nuevo menu es y = igual a la y del padre
    var relX = anchoPadre;
    var relY = 0;

    objHijo.style.left = (posX + relX) + 'px';
    objHijo.style.top = (posY + relY) + 'px';
    //alert('posX:' + posX+ 'relX:' + relX + ', posY:' + posY+ 'relY:' + relY);
}
