﻿
var BaseDir = '/empleos/';
var gTargetSelect;
var gHiddenSelects = null;


function IncluirFiltro( selectId )
{
    document.write('<img src="'+BaseDir+'images/images_content/boton-combo-buscar.gif" onclick="ActivarFiltro( \''+selectId+'\' )" width="19" height="19" style="position: relative; left: -6px;" />');
}


function ActivarFiltro( selectId )
{
    var divFiltro = document.getElementById("divFiltro");
    if ( divFiltro == null ) return;
    if ( divFiltro.style.visibility == "visible" )
    {
        DesactivarFiltro();
        return;
    }
    gTargetSelect = document.getElementById(selectId);
    if ( gTargetSelect == null ) return;
    if ( gTargetSelect.disabled ) return;
    var inputFiltro = document.getElementById("inputFiltro");
    inputFiltro.value = "";
    LlenarSelectFiltro("",null);
    var x = GetAbsLeft(gTargetSelect);
    var y = GetAbsTop(gTargetSelect) + gTargetSelect.offsetHeight;
    if ( navigator != null && navigator.appVersion != null && navigator.appVersion.indexOf("MSIE") >= 0 )
    {
        OcultarSelects(x,y,x+divFiltro.offsetWidth,y+divFiltro.offsetHeight);
    }
    divFiltro.style.left = x + "px";
    divFiltro.style.top = y + "px";
    divFiltro.style.visibility = "visible";
    inputFiltro.focus();
}


function GetAbsLeft( elem )
{
    var left = 0;
    while ( elem != null )
    {
        left += elem.offsetLeft;
        elem = elem.offsetParent;
    }
    return left;
}


function GetAbsTop( elem )
{
    var top = 0;
    while ( elem != null )
    {
        top += elem.offsetTop;
        elem = elem.offsetParent;
    }
    return top;
}


function OcultarSelects(fx1, fy1, fx2, fy2 )
{
    gHiddenSelects = new Array();
    for( var ifrm = 0; ifrm<document.forms.length; ifrm++ )
    {
        for( var iele = 0; iele < document.forms[ifrm].elements.length; iele++ )
        {
            var elem = document.forms[ifrm].elements[iele];
            if ( elem.type.indexOf("select") >= 0 && elem.name != "selectFiltro" && elem.name != gTargetSelect.name )
            {
                var x1 = GetAbsLeft(elem);
                var y1 = GetAbsTop(elem);
                var x2 = x1 + elem.offsetWidth;
                var y2 = y1 + elem.offsetHeight;
                if ( x1 <= fx2 && x2 >= fx1 && y1 <= fy2 && y2 >= fy1 )
                {
                    elem.style.visibility = "hidden";
                    gHiddenSelects.length = gHiddenSelects.length + 1;
                    gHiddenSelects[gHiddenSelects.length-1] = elem;
                }
            }
        }
    }
}


function CargarSeleccionFiltro( value )
{
        gTargetSelect.value = value;
        DesactivarFiltro();
        gTargetSelect.focus();
        try
        {
            gTargetSelect.onchange(gTargetSelect);
        }
        catch ( e )
        {
        }
}


function LlenarSelectFiltro( patron, event )
{
    var filterSelect = document.getElementById("selectFiltro");
    if ( event != null )
    {
        var keyCode = event.keyCode ? event.keyCode : event.charCode;
        if ( keyCode == 13 )
        {
            if ( filterSelect.length == 1 ) {
                CargarSeleccionFiltro(filterSelect.options[0].value);
                return;
            }
        }
        if ( keyCode == 27 )
        {
            DesactivarFiltro();
            gTargetSelect.focus();
            return;
        }
    }
    patron = patron.toUpperCase();
    filterSelect.options.length = 0;
    for( var i = 0; i < gTargetSelect.length; i++ )
    {
        var opText = gTargetSelect.options[i].text;
        var posPatron = opText.toUpperCase().indexOf(patron);
        if ( posPatron >= 0 )
        {
            if ( patron.length > 0 )
                opText = opText.substr(0,posPatron) + ' < ' + opText.substr(posPatron,patron.length) + ' > ' + opText.substr(posPatron+patron.length,opText.length-posPatron+patron.length);
            filterSelect.options.length = filterSelect.options.length + 1;
            filterSelect.options[filterSelect.options.length-1] = new Option( opText, gTargetSelect.options[i].value );
        }
    }
    if ( filterSelect.options.length == 1 )
    {
        var inputFiltro = document.getElementById("inputFiltro");
    }
    return true;
}


function DesactivarFiltro()
{
    document.getElementById("divFiltro").style.visibility = "hidden";
    if  ( gHiddenSelects != null )
    {
        for ( var isel = 0; isel <gHiddenSelects.length; isel++ )
        {
            gHiddenSelects[isel].style.visibility = "visible";
        }
    }
}


