﻿
 // *********** METODOS USADOS PARA CONVERTIR LISTAS A SELECTS (USADO EN XSLT de PROVEEDORES) ****
 
 $.fn.ConvertToSelectBoxes = function(select1, select2, btnAction) {
  
    jQuery_ConvertToSelectBoxes(this, select1, select2, btnAction);
 };
   

 function jQuery_ConvertToSelectBoxes(jqueryUl, select1, select2, btnAction) {


     //Añadir las opciones al primer select box
     LimpiarSelectBox(select1);
     $("li:has(span)", jqueryUl).map(function(index, elem) {
         return $("<option/>").attr("value", index).html($("span", $(elem)).html());
     }).appendTo(select1);

     //Añadir la funcionalidad onChange del select
     select1.change(function() {
        LimpiarSelectBox(select2);
         var liElement = jqueryUl.children("li")[$(this).val()];

         //Poblar el segundo selectbox
         $("li:has(a)", $("ul", liElement)).map(function(index, elem) {
             var url = $("a", $(elem)).attr("href");
             return $("<option/>").attr("value", url).html($("a", $(elem)).html());
         }).appendTo(select2);
     });

     //Lanzar el evento change para el primer país seleccionado
     select1.trigger('change');

     //Ocultar la lista y mostrar los select boxes
     jqueryUl.toggle();
     select1.toggle();
     select2.toggle();

     //Añadir la funcionalidad al botón de accion para que redirija al enlace seleccionado
     btnAction.toggle();
     btnAction.click(function() {
        window.open(select2.val(), '_blank');
     });
 
 }


// *********** METODOS USADOS PARA RELACIONAR DOS SELECTS (USADO EN BUSCADORES) ****

function RelacionarSelects(selectMaestro, selectEsclavo) {
    selectMaestro.change(function() {

        var opcionSeleccionada = selectMaestro.val();

        /*
        if (!$.browser.msie) {
            //Ocultar todas las opciones del select de empresas
            $("option", selectEsclavo).hide();
            $("option", selectEsclavo).attr("disabled", "disabled");
            $("option", selectEsclavo).removeAttr("selected");

            //Mostrar solo las opciones que asociadas al pais seleccionado
            $("option[rel='" + opcionSeleccionada + "']", selectEsclavo).show();
            $("option[rel='" + opcionSeleccionada + "']", selectEsclavo).removeAttr("disabled");
        }
        */
        //else {
            //IE no soporta ocultar options de un select. Se debe replicar la informacion y eliminar/recrear los options
            var selectCopia = $("select[class='selectCopia']", selectEsclavo.parent());

            if (selectCopia.length == 0) {
                //Si aún no se ha creado el select que replica todas las opciones, crearlo
                selectEsclavo.parent().append("<select class='selectCopia' style='display:none'> </select>");

                selectCopia = $("select[class='selectCopia']", selectEsclavo.parent());

                selectEsclavo.find("option[class]").map(function(index, elem) {
                    return $("<option/>")
                        .attr("value", $(elem).val())
                        .attr("class", $(elem).attr("class"))
                        .html($(elem).html());
                }).appendTo(selectCopia);

            }

            //Eliminar todas las opciones del select Esclavo
            selectEsclavo.find("option[class]").remove();

            //Cargar las opciones asociadas al elemento seleccionado en selectMaestro
            $("option[class='" + opcionSeleccionada + "']", selectCopia).map(function(index, elem) {
                return $("<option/>")
                    .attr("value", $(elem).val())
                    .attr("class", $(elem).attr("class"))
                    .html($(elem).html());
            }).appendTo(selectEsclavo);
        //}
    });

    selectMaestro.trigger('change');

}


// *********** METODOS USADOS PARA CONVERTIR UNA LISTA EN UN SELECTBOX DE ENLACES (Ej. en el pie -LinksFooter.xslt-) ****
$.fn.ConvertToSelectBox = function(select1, btnAction, target) {

    jQuery_ConvertToSelectBox(this, select1, btnAction, target);
 };


function jQuery_ConvertToSelectBox(jqueryUl, select1, btnAction, target) {
        
    LimpiarSelectBox(select1);
    //Carga los datos de Combo
    $("li:has(a)", jqueryUl).map(function(index, elem) {
        var url = $("a", $(elem)).attr("href");
        return $("<option/>").attr("value", url).html($("a", $(elem)).html());
    }).appendTo(select1);

    //Ocultar la lista y mostrar los select boxes
    jqueryUl.toggle();
    select1.toggle();

    //Añadir la funcionalidad al botón para que vaya al enlace seleccionado
    if (typeof target == 'undefined') {
        target = "_self";
    }
    
    btnAction.toggle();
    btnAction.click(function() {
        if (target == "_self") {
            window.location = select1.val();
        }
        else {
            window.open(select1.val(), target);
        }
        return false;
    });
 }


// *********** OTROS METODOS DE UTILIDADES USADOS POR LAS FUNCIONALIDADES ANTERIORES ****
function LimpiarSelectBox(selectBox) {
    selectBox
            .find('option')
            .remove()

        ;
}
