//Procedimientos y Funciones para Ocultar controles *************************************
//que se quedan siempre visibles con los paneles Modales
//Modificar este array para incluir los tags de los contrtoles que se quieran ocultar
var lv_ArrayTagNames=new Array("select");
var lv_ControlesOcultos=new Array();
var lv_Controles=document.getElementsByTagName("select");
var li_Cont=0;
var lb_visible=true;

function OcultarControles(po_Document, ps_SenderID)
{
    var i;                     
    var po_Panel = po_Document.getElementById(ps_SenderID); //Objeto que aparecerá por encima de los selects
          
    try
    {
        if (lb_visible){                
            for (i=0; i<lv_Controles.length; i++)
            {
                if (lv_Controles[i].style.display != 'none'){
                    if (EstaEncima(po_Panel, lv_Controles[i])) OcultarControl(lv_Controles[i]);  
                }
            }
        }
        else MostrarControles();
        
        lb_visible = !lb_visible;            
    }
    catch(e)
    {
        window.status = e.description;
    } 
}
      
function OcultarControl(po_Control)
{
    po_Control.style.display='none';
    lv_ControlesOcultos[li_Cont]=po_Control;
    li_Cont++;
}

function MostrarControles()
{
    var i;
    for (i=0; i<li_Cont; i++) lv_ControlesOcultos[i].style.display=''; 
    li_cont=0;
}

//Devuelve true si el primer control está encima del segundo
function EstaEncima(po_Control1, po_Control2){
    var P1=false;
    var P2=false;
    var P3=false;
    var P4=false;
    
    po_Control1.style.display='';
    
    //CONTROL 1
    //punto superior izquierda
    var X1 = getAbsoluteLeft(po_Control1);
    var Y1 = getAbsoluteTop(po_Control1);
    //punto inferior derecha
    var X11 = X1 + 200; //po_Control1.offsetWidth;
    var Y11 = Y1 + 200; //po_Control1.offsetHeight;
    
    //CONTROL 2
    //punto superior izquierda
    var X2 = getAbsoluteLeft(po_Control2);
    var Y2 = getAbsoluteTop(po_Control2);
    //punto inferior derecha
    var X22 = X2 + po_Control2.offsetWidth;
    var Y22 = Y2 + po_Control2.offsetHeight;  
    
    P1 = (X2>=X1 && X2<=X11) && (Y2>=Y1 && Y2<=Y11);
    P2 = (X22>=X1 && X22<=X11) && (Y2>=Y1 && Y2<=Y11);
    P3 = (X2>=X1 && X2<=X11) && (Y22>=Y1 && Y22<=Y11);
    P4 = (X22>=X1 && X22<=X11) && (Y22>=Y1 && Y22<=Y11);
    
    return (P1 || P2 || P3 || P4);
}

//Obtiene el valor Left absoluto respecto a la ventana
function getAbsoluteLeft(Obj){
    var Left=0;
    
    while(Obj){
        Left += Obj.offsetLeft + Obj.clientLeft;
        Obj = Obj.offsetParent;
    }
    return Left;
}

//Obtiene el valor Top absoluto respecto a la ventana
function getAbsoluteTop(Obj){
    var Top=0;
    
    while(Obj){
        Top += Obj.offsetTop + Obj.clientTop;
        Obj = Obj.offsetParent;
    }
    return Top;
} 