//Obtiene los QueryStrings de una URL
function getQueryStrings(URL){  
    try{
        var posIniQS = URL.indexOf('?');
        return URL.substring(posIniQS, URL.length);    
    }         
    catch(e){
        return '';
    }
} 

function Mostrar(idObjeto){
    document.getElementById(idObjeto).style.display = '';
}

function Ocultar(idObjeto){
    document.getElementById(idObjeto).style.display = 'none';
}

function MostrarOcultar(idObjeto){
    if (EsVisible(idObjeto)) Ocultar(idObjeto);
    else Mostrar(idObjeto);
}

function EsVisible(idObjeto){
    if (document.getElementById(idObjeto).style.display == 'none') return false;
    return true;
}

function CookiesPermitidas(){
    return navigator.cookieEnabled;
}

function checkCookies(){
    if(!navigator.cookieEnabled){
        alert('Es necesario tener las cookies activadas');
        return false;
    }
    return true;
}

//Pone a cero (o limpia) los elementos de un panel
function clean(container){
    var i;
    var selects = container.all.tags('select');
    var inputs = container.all.tags('input');
    
    for(i=0; i<selects.length; i++){
        selects[i].value='';
    }
    for(i=0; i<inputs.length; i++){
        switch(inputs[i].type){
            case 'text':
                inputs[i].value='';
                break;
                
            case 'radio':
            case 'checkbox':
                inputs[i].checked=false;
                break;            
        }
    }            
}

//Se usa para pedir el fichero de la foto a través de una ventana modal 
function fileOpen(){       
    var URL = 'Foto.htm';
    var QS = 'foto=basica';
    var ventana, opciones;
    
    switch(navigator.appName)
    {
        case 'Microsoft Internet Explorer':
            opciones = 'dialogWidth:400px; dialogHeight:245px; status:no';
            ventana = window.showModalDialog(URL + '?' + QS, '', opciones);
            
            if (ventana!=undefined){  
              //Llamar al método Anthem que refresca estos controles
              Anthem_InvokePageMethod('SetFoto',[encodeHTML(ventana)]);
            }            
            break;
            
        case 'Netscape':
        default:
            //En este caso, la llamada al método anthem se hará desde la nueva ventana que abramos
            opciones = 'width=400, height=200, status=no, alwaysRaised=yes, dialog=yes, modal=yes, centerscreen=yes';
            window.open(URL + '?' + QS, '', opciones);
            ventana = document.getElementById('imgCV').src;
            break;                    
    }

 
}
       
//Se usa para pedir el fichero de la foto completa a través de una ventana modal 
function fileOpenCompleta(){       
    var URL = 'Foto.htm';
    var QS = 'foto=tcp';    
    var ventana, opciones;               

    switch(navigator.appName)
    {
        case 'Microsoft Internet Explorer':
            opciones = 'dialogWidth:400px; dialogHeight:245px; status:no';
            ventana = window.showModalDialog(URL + '?' + QS, '', opciones);

            if (ventana!=undefined){  
              //Llamar al método Anthem que refresca estos controles
              Anthem_InvokePageMethod('SetFotoCompleta',[encodeHTML(ventana)]);
            }            
            break;
            
        case 'Netscape':
        default:
            opciones = 'width=400, height=200, status=no, alwaysRaised=yes, dialog=yes, modal=yes';
            window.open(URL + '?' + QS, '', opciones);
            ventana = document.getElementById('imgCVCompleta').src;
            break;                    
    }
}

//Sólo permite que haya 3 selects con valores y ninguno repetido
function checkSelects(po_Document, po_Select){
    var li_CurrentId = po_Select.name;	
    var li_CurrentValue = po_Select.value;
    var lv_Selects = po_Document.getElementsByTagName('select');
	
    for (var i=0; i<lv_Selects.length; i++){
        if (lv_Selects[i].name == li_CurrentId) continue; //Nos saltamos el select que ha llamado a la función
        if (lv_Selects[i].value == li_CurrentValue) {
	        lv_Selects[i].selectedIndex -= 1; //!! Esto no provoca el onchange de los demás selects
	        if (i!=0) checkSelects(po_Document, lv_Selects[i]); // Llamada recursiva
	        break;
        }
    }
}

//Indica si la fila por parámetro es una jornada PA
function isPA (po_Document, pi_RowIndex){
    try
    {
        var lv_Selects = po_Document.getElementsByTagName('select');
        return lv_Selects[pi_RowIndex].disabled; 
    }
    catch(e){}
}

//Devuelve el nº de ofertas no-PA seleccionas
function selectedNoPAs(po_Document){
    var lv_Checks = po_Document.getElementsByTagName('input');
    var numChecks = 0;
    var numNoPAs = 0;
    
    for(var i=0; i<lv_Checks.length; i++){
        if (lv_Checks[i].getAttribute('type') == 'checkbox'){
            if (!isPA(po_Document, numChecks) && lv_Checks[i].checked) numNoPAs++;  
            numChecks++;
        }
    }
    return numNoPAs;
}

//Des-selecciona todas las jornadas PA
function unselectPAs(po_Document){
    var lv_Checks = po_Document.getElementsByTagName('input');
    var cont = 0;
    
    for(var i=0; i<lv_Checks.length; i++){
        if (lv_Checks[i].type == 'checkbox'){ 
            if (isPA(po_Document, cont)) lv_Checks[i].checked=false;
            cont++;
        }
    }     
}

//Marca los checks sólo si se cumplen las condiciones de validación
function checkCheckboxes(po_Document, po_Checkbox, pi_RowNumber){ 
    var MAX_OFERTAS = po_Document.getElementById('hidMaxOfertas').value;
    var Value = po_Checkbox.checked;
                          
    if (!isPA(po_Document, pi_RowNumber) && selectedNoPAs(po_Document)>MAX_OFERTAS){
        po_Checkbox.checked=false;
        alert('Sólo puedes seleccionar un máximo de ' + MAX_OFERTAS + ' ofertas'); //###LITERAL###
    }
    else{
        if(isPA(po_Document, pi_RowNumber)) {
            unselectPAs(po_Document);
            po_Checkbox.checked=Value;                    
        }
    }
}

//Abre la ventana de detalles de una oferta determinada
function showDetails(ps_URL, ps_IDOferta, ps_Perfil){
   var URL = ps_URL + "?id=" + ps_IDOferta + "&perf=" + ps_Perfil;
   var opcionesModal = "dialogWidth:550px; dialogHeight:650px; satus:no; resizable:no; help:no";
   var opciones = "width=550, height=650, satus=no, resizable=no, help=no, alwaysRaised=yes, dialog=yes, modal=yes, centerscreen=yes";
   
   switch(navigator.appName)
   {
        case 'Microsoft Internet Explorer':
            window.showModalDialog(URL, "", opcionesModal);
            break;
            
        case 'Netscape':
        default:
            window.open(URL, "", opciones);
            break;
   }
}

//Función para codificar los caracteres de una ruta al estándar HTML
function encodeHTML(value){
    var encodedHtml;

    try{    
        encodedHtml = value.toLowerCase();
        encodedHtml = encodedHtml.replace(new RegExp(/ /g), '%20');
        encodedHtml = encodedHtml.replace(new RegExp(/ñ/g), '%F1');
        encodedHtml = encodedHtml.replace(new RegExp(/á/g), '%E1');
        encodedHtml = encodedHtml.replace(new RegExp(/é/g), '%E9');
        encodedHtml = encodedHtml.replace(new RegExp(/í/g), '%ED');
        encodedHtml = encodedHtml.replace(new RegExp(/ó/g), '%F3');
        encodedHtml = encodedHtml.replace(new RegExp(/ú/g), '%FA');
        
        return encodedHtml;            
    }
    catch(e){
        return value;
    }
}
