﻿/* combobox utilities */

/**
 * Recupera el combobox con el identificador indicado.
 *
 * @param   id       El identificador del combobox.
 * @return      El combobox con el id especificado.
 *
 * @throws      Si no se encuentra ningún combobox con el identificador indicado.
 */
function _cmbGet(id) {
    var callerName;
    try {
        callerName = _cmbGet.caller.toString().match(/function (\w*)/)[1];
    } catch(ex) {
        callerName = 'Unknown';
    }

    var cmb = document.getElementById(id);
    if (cmb == null) throw new Error(callerName + ": Invalid id '" + id + "'");
    if (cmb.tagName.toUpperCase() != 'SELECT') throw new Error(callerName + ": Invalid node type '" + cmb.tagName + "' for id '" + id + "', 'SELECT' type expected");
    
    return cmb;
}

/**
 * Recupera el valor seleccionado del combobox con el identificador indicado.
 *
 * @param   id       El identificador del combobox.
 * @return      El valor seleccionado, o un string vacío '' si no hay ninguno. 
 *
 * @throws      Si no se encuentra ningún combobox con el identificador indicado.
 */
function cmbGetValue(id) {
    var cmb = _cmbGet(id);
   
    if (cmb.hasChildNodes() && cmb.options) {
        return cmb.options[cmb.selectedIndex].value;
    }
    
    return '';
}

/**
 * Selecciona el valor especificado para el combobox con el identificador indicado.
 * Si el combobox no tiene ese valor, entonces esta función no hace nada.
 *
 * @param   id      El identificador del combobox.
 * @param   value   El valor que se quiere seleccionar.
 *
 * @throws      Si no se encuentra ningún combobox con el identificador indicado.
 */
function cmbSelectValue(id, value) {
    var cmb = _cmbGet(id);

    if (cmb.hasChildNodes() && cmb.options) {
        for (i = 0; i < cmb.options.length; i++) {
            if (cmb.options[i].value == value) {
                    //cmb.selectedIndex = i; no funciona
                    try {
                    cmb.options[i].selected=true;
                    } catch (e) {
                    cmb.selectedIndex = i;
                    }
                return;
            }
        }
    }
}

/**
 * Selecciona el valor especificado para el combobox con el identificador indicado.
 * En esta función el valor es un campo compuesto donde los valores estan separados por un caracter determinado
 * Si el combobox no tiene ese valor, entonces esta función no hace nada.
 *
 * @param   id          El identificador del combobox.
 * @param   value       El valor que se quiere seleccionar.
 * @param   charSplit   Caracter que a partir del cual se forman los 'values' de la opciones del combo
 * @param   pos         Posicion del array de valores donde se encuentra el vlaor a comparar
 *
 * @throws      Si no se encuentra ningún combobox con el identificador indicado.
 */
function cmbSelectValueByPos(id, value,charSplit,pos) {
    var cmb = _cmbGet(id);

    if (cmb.hasChildNodes() && cmb.options) {
        for (i = 0; i < cmb.options.length; i++) {
            var valor = cmb.options[i].value;
            var arr = valor.split(charSplit);
            if (arr[pos] == value) {
                //cmb.selectedIndex = i; no funciona
                try {
                    cmb.options[i].selected = true;
                } catch (e) {
                    cmb.selectedIndex = i;
                }
                return;
            }
        }
    }
}

/**
 * Rellena el combobox con los valores indicados en el array. El array estará compuesto
 * por parejas de (valor, texto) de modo que el elemento arr[i] es el 'value' y el elemento
 * arr[i+1] es el texto del 'OPTION' generado.
 *
 * @param   id      El identificador del combobox.
 * @param   arr     Array de parejas (valor, texto) para generar las opciones.
 *
 * @throws      Si no se encuentra ningún combobox con el identificador indicado. 
 */
function cmbSetValues(id, arr) {
    var cmb = _cmbGet(id);

    nodeRemoveAllChilds(cmb);

    for (i = 0; i < arr.length; i += 2) {
        var oOption;        
        oOption = document.createElement("OPTION");
        oOption.value = i;
        oOption.innerHTML = i+1;
        cmb.appendChild(oOption);
    }
}

/**
 * Rellena el combobox con los valores desde min hasta max, abmos inclusive.
 *
 * @param   id      El identificador del combobox.
 * @param   min     Valor mínimo.
 * @param   max     Valor máximo.
 *
 * @throws      Si no se encuentra ningún combobox con el identificador indicado. 
 */
function cmbSetValues(id, min, max) {
    var cmb = _cmbGet(id);

    nodeRemoveAllChilds(id);

    for (i = min; i <= max; i ++) {
        var oOption;        
        oOption = document.createElement("OPTION");
        oOption.value = i;
        oOption.innerHTML = i;
        cmb.appendChild(oOption);
    }
}

/* DOM generic */

/**
 * Elimina todos los nodos hijos del elemento indicado. Si no se encuentra el
 * elemento está función no hace nada.
 *
 * @param   id  El identificador del elemento.
 */
function nodeRemoveAllChilds(id) {
    var obj = document.getElementById(id);
    if (obj != null) {
        while (obj.firstChild) {
            obj.removeChild(obj.firstChild);
        }
    }
}

/* Pop-up */

/**
 * Abre un popup de contenido. Función creada para el nuevo editor HTML.
 *
 * @param   id_con Identificador de contenido.
 * @param   ancho Ancho de la ventana
 * @param   alto Alto de la ventana
 */
function abrir_contenido_popup(url_base, id_con, ancho, alto) {
	    return window.open(url_base + 'home/contenidoPopup.aspx?id=' + id_con , 'Pop', 'toolbar=0,width=' + ancho + ', height=' + alto + ', left=80, top=80');
}

/**

 * Abre un popup de contenido. Función creada para el nuevo editor HTML.

 *

 * @param   id_con Identificador de contenido.

 * @param   ancho Ancho de la ventana

 * @param   alto Alto de la ventana

 */

function abrir_contenido_popup(id_con, ancho, alto) {

          return window.open('../../home/contenidoPopup.aspx?id=' + id_con , 'Pop', 'toolbar=0,width=' + ancho + ', height=' + alto + ', left=80, top=80');

}



function toggle(obj) {
	var el = document.getElementById(obj);
	el.style.display = (el.style.display != 'none' ? 'none' : '' );
}


/* Función para entrar como agencia */
function entrarAgencias(ageEmail,agePassword){
	var url="/agency/login.aspx?email=" + escape(ageEmail) + "&password=" + escape(agePassword) 
	location.href=url;
}
function entrarBoletin(){
  var elemento = document.getElementById("boletin");
  if (elemento.value == "Digite seu e-mail") elemento.value = "";
}
function salirBoletin(){
  var elemento = document.getElementById("boletin");
  if (elemento.value == "") elemento.value = "Digite seu e-mail";
}