////////////////////////////////////////////////////////////////
// Funciones comunes a la web Recursos Humanos
//
// Autor: Miguel Angel Mulero Martinez
// Autor: Oscar Riaño de Antonio
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
// Crea una ventana nueva con el nombre especificado y el tamanyo
// dado y devuelve un true. Ideal para poner en eventos onSubmit()
// de formularios (coincidiendo con el target)
//
// Param:
//              nombreVentana - Nombre de la ventana a crear
//              ancho - Ancho de la ventana
//              alto - Alto de la ventana
//              minimo - true si queremos sin barras de herramientas
//
function abrirEnVentana(nombreVentana, ancho, alto, minimo) {
        window.open('',nombreVentana, 'height=' + alto + ',width=' + ancho + ',resizable=no,toolbar=no,titlebar=no,scrollbars=yes');
        return true;
}

function abrirPDF(nombreArchivo) {
        window.open('pdf/' + nombreArchivo ,'Guia','');
}

function abrirTexto(idTexto,user) {
        window.open('verTextoLegislacionAction.do?idTexto=' + idTexto + '&user=' + user,'textoLegislacion','');
}

function abrirWord(nombreArchivo) {
        window.open('docs/' + nombreArchivo ,'Especialidad','');
}

function fechaCampoACombos(nomForm, campo, comboDia, comboMes, comboAnio) {
        formulario = eval('document.forms["' + nomForm + '"]');
        elementos=formulario.elements;
        var cDia='';
        var cMes='';
        var cAnio='';
        var elemento='';

        // Recorremos componentes buscando los combos
        for (i=0;i<elementos.length;i++) {
                if (elementos[i].name == comboDia)
                        cDia = elementos[i];
                else if (elementos[i].name == comboMes)
                        cMes = elementos[i];
                else if (elementos[i].name == comboAnio)
                        cAnio = elementos[i];
                else if (elementos[i].name == campo)
                        elemento = elementos[i];

        } // for

          // Solo si es no vacio
          if (elemento!='')
                if (elemento.value != '') {
                // Situamos el valor
                var cadena = elemento.value.split('-');
                        if (cDia!='')
                                cDia.value = cadena[0];
                        if (cMes!='')
                                cMes.value = cadena[1];
                        if (cAnio!='')
                                cAnio.value = cadena[2];
                  } // if


}

function fechaCampoACombosAdm(nomForm, campo, comboDia, comboMes, comboAnio) {
        formulario = eval('document.forms["' + nomForm + '"]');
        elementos=formulario.elements;
        var cDia='';
        var cMes='';
        var cAnio='';
        var elemento='';

        // Recorremos componentes buscando los combos
        for (i=0;i<elementos.length;i++) {
                if (elementos[i].name == comboDia)
                        cDia = elementos[i];
                else if (elementos[i].name == comboMes)
                        cMes = elementos[i];
                else if (elementos[i].name == comboAnio)
                        cAnio = elementos[i];
                else if (elementos[i].name == campo)
                        elemento = elementos[i];

        } // for


          // Solo si es no vacio
          if (elemento!='')
                if (elemento.value != '') {
                // Situamos el valor
                var cadena = elemento.value.split('-');
                        if (cDia!='')
                                cDia.selectedIndex = cadena[0];
                        if (cMes!='')
                                cMes.selectedIndex = cadena[1];
                        if (cAnio!='')
                                cAnio.value = cadena[2];
                  } // if


}

////////////////////////////////////////////////////////////////
// Pasa una fecha de 3 combos a otro campo. Los valores deben estar en los value
// de los option
//
// Param:
//              ComboDia  - Combo con el dia
//              ComboMes  - Combo con el mes
//              ComboAnio - Combo con el agno
//              campo     - Componente que debe recibir el resultado en formato d-m-aaaa
//
//
function fechaCombosACampo(nomForm,comboDia, comboMes, comboAnio, campo,tipoFecha) {

        formulario = eval('document.forms["' + nomForm + '"]');
        elementos=formulario.elements;

        // Recorremos componentes buscando los combos
        for (i=0;i<elementos.length;i++) {
                if (elementos[i].name == comboDia)
                        diaSeleccionado = elementos[i].value;
                else if (elementos[i].name == comboMes)
                        mesSeleccionado = elementos[i].value;
                else if (elementos[i].name == comboAnio)
                        anioSeleccionado = elementos[i].value;
                else if (elementos[i].name == campo)
                        elemento = elementos[i];
        } // for

        /*if (mesSeleccionado=='')
                if (tipoFecha==1)
                        mesSeleccionado='1';
                else
                        mesSeleccionado='12';
        if (anioSeleccionado==''){
                var fecha = new Date();
                anioSeleccionado=fecha.getFullYear();
        }
*/
        //if (comboDia=='')
        //        diaSeleccionado='';
        // Deben estar todos completos
        if (comboDia=="")
                if (tipoFecha==1)
                        diaSeleccionado='1';
                else{
                        if (mesSeleccionado!="")
                                diaSeleccionado=diaMes(mesSeleccionado,anioSeleccionado);
                        else
                                diaSeleccionado=31;

                }

        elemento.value = diaSeleccionado + '-' + mesSeleccionado + '-' + anioSeleccionado;
        if (comboDia==""){
                if (mesSeleccionado=='' && anioSeleccionado==''){
                        elemento.value='';
                }

        }else{
                if (mesSeleccionado=='' && anioSeleccionado=='' && diaSeleccionado==""){
                        elemento.value='';
                }
        }

        /*if (diaSeleccionado=='' || mesSeleccionado=='' || anioSeleccionado=='')
                elemento.value='';
                */


}

function fechaCombosACampoAdm(nomForm,comboDia, comboMes, comboAnio,campo) {

        formulario = eval('document.forms["' + nomForm + '"]');
        elementos=formulario.elements;

        // Recorremos componentes buscando los combos
        for (i=0;i<elementos.length;i++) {
                if (elementos[i].name == comboDia)
                        var diaSeleccionado = elementos[i].value;
                else if (elementos[i].name == comboMes)
                        var mesSeleccionado = elementos[i].value;
                else if (elementos[i].name == comboAnio)
                        var anioSeleccionado = elementos[i].value;
                else if (elementos[i].name == campo)
                        elemento = elementos[i];
        } // for

        if (diaSeleccionado!='' || mesSeleccionado!='' || anioSeleccionado!='')
                elemento.value = diaSeleccionado + '-' + mesSeleccionado + '-' + anioSeleccionado;
        else
                elemento.value="";


}

////////////////////////////////////////////////////////////////
// enviaFormParam
// Envia el formulario especificado con los parametros indicados
// nomForm - Nombre del formulario
// param - Parametro a añadir a la URL (opcional)
//
function enviaFormParam(nomForm,param) {

        // Si es null no ponemos nada
    if (param) {
        // Eliminamos cualquier parametro que tenga
        var action = eval('document.forms["'+nomForm+'"].action').split('?');

        cad = 'document.forms["'+nomForm+'"].action = action[0] + "?'+param+'"'
        eval(cad)
    } // if

    // Enviar
    cad2 = 'document.forms["'+nomForm+'"].submit()'
    eval(cad2)
}


////////////////////////////////////////////////////////////////
// enviaFormTo
// Envia el formulario especificado a la direccion elegida
// nomForm - Nombre de formulario
// dir     - Direccion de envio
//
function enviaFormTo(nomForm,dir) {

    // Si es null no ponemos nada
    if ((nomForm!=null) && (dir!=null)) {

        componente = eval('document.forms["'+nomForm+'"]');
        componente.action=dir
        componente.submit()
    } // if
}

////////////////////////////////////////////////////////////////
// enviaFormToParam
// Envia el formulario especificado a la direccion elegida con el
// parametro especificado
// nomForm - Nombre de formulario
// dir     - Direccion de envio
// param   - Parametros
//
function enviaFormToParam(nomForm,dir,param) {

    // Si es null no ponemos nada
    if ((nomForm!=null) && (dir!=null)) {

        componente = eval('document.forms["'+nomForm+'"]');
        componente.action=dir+'?'+param;
        componente.submit()
    } // if
}

/////////////////////////////////////////////////////////////////
// limpiar
// Función que limpia los elementos de un formulario
// formula - formulario a limpiar
//
function limpiar(formula) {
    // Recorre los elementos
    for (i = 0 ; i < formula.length ; i++) {
                tempobj = formula.elements[i];

                // Text
                if (tempobj.type == "text" || tempobj.type=="textarea")
                        tempobj.value = "";

                // Combo
                else if (tempobj.type == "select-one") {
                        // No es vacio el combo
                        if (tempobj.options[0])
                                tempobj.options[0].selected = true;

                // Checkbox
                } else if (tempobj.type == "checkbox")
                        tempobj.checked = false;

    } // for
}

/////////////////////////////////////////////////////////////////
// limpiar
// Función que limpia los elementos de un formulario
// formula - formulario a limpiar incluido los hidden.
//
function limpiarTodo(formula) {
  for (i = 0 ; i < formula.length ; i++) {
            tempobj = formula.elements[i];

            // Text
            if (tempobj.type == "text" || tempobj.type=="textarea" || tempobj.type=="hidden")
                    tempobj.value = "";

            // Combo
            else if (tempobj.type == "select-one") {
                    // No es vacio el combo
                    if (tempobj.options[0])
                            tempobj.options[0].selected = true;

            // Checkbox
            } else if (tempobj.type == "checkbox")
                    tempobj.checked = false;

    } // for
}


/////////////////////////////////////////////////////////////////
// marcaMaximoCheckbox
// Desmarca todos los checkbox con el nombre especificado, excepto el
// situado en el numero dado
//
// nomForm - nombre del formulario donde esta el checkbox
// nombre  - nombre de los checkbox
// num     - numero de checkbox a dejar tal como esta (empieza desde 0)
//
function marcaMaximoCheckbox(nomFor, nombre, num) {

    // Obtenemos el formulario
    formulario = eval('document.forms["' + nomFor + '"]');

    j=0;  // Checkbox encontrados
    // Recorremos todos los elementos del formulario
    for (i=0; i<formulario.elements.length; i++) {

        // Elemento que estamos inspeccionando
        elemento = formulario.elements[i];
        if ((elemento.type == "checkbox") && (elemento.name == nombre)) {
            if (j != num)
                elemento.checked = false;
            j++;
        } // if
    } // if

}

/////////////////////////////////////////////////////////////////
// habilitaFIP
//
//
function habilitaFIP(nomFor,ch,familia,especialidad) {
    // Obtenemos el formulario
    formulario = eval('document.forms["' + nomFor + '"]');
    elementos=formulario.elements;
    tFamilia ='';
    tEspecialidad='';

        // Recorremos componentes buscando los combos
        for (i=0;i<elementos.length;i++) {
                if (elementos[i].name == familia)
                        tFamilia = elementos[i];
                else if (elementos[i].name == especialidad)
                        tEspecialidad = elementos[i];
        } // for

        if (ch==true){
                tFamilia.disabled=false;
                if (tEspecialidad!='')
                        tEspecialidad.disabled=false;
        }else{
                tFamilia.disabled=true;
                        if (tEspecialidad!='')
                tEspecialidad.disabled=true;
        }

}

/////////////////////////////////////////////////////////////////
// habilitaFIP
//
//
function habilitaFPO(nomFor,ch,destinatario,cMesInicio,cAnioInicio,cMesFin,cAnioFin) {
    // Obtenemos el formulario
    formulario = eval('document.forms["' + nomFor + '"]');
    elementos=formulario.elements;
    var tDestinatario='';

        // Recorremos componentes buscando los combos
        for (i=0;i<elementos.length;i++) {
                if (elementos[i].name == destinatario)
                        tDestinatario = elementos[i];
                else if (elementos[i].name == cMesInicio)
                        cMesI = elementos[i];
                else if (elementos[i].name == cAnioInicio)
                        cAnioI = elementos[i];
                else if (elementos[i].name == cMesFin)
                        cMesF = elementos[i];
                else if (elementos[i].name == cAnioFin)
                        cAnioF = elementos[i];
        } // for

        if (ch==true){
                if (tDestinatario!='')
                        tDestinatario.disabled=false;
                cMesI.disabled=false;
                cAnioI.disabled=false;
                cMesF.disabled=false;
                cAnioF.disabled=false;
        }else{
                tDestinatario.disabled=true;
                cMesI.disabled=true;
                cAnioI.disabled=true;
                cMesF.disabled=true;
                cAnioF.disabled=true;
        }

}


/////////////////////////////////////////////////////////////////
// consigueFecha
// Devuelve la fecha actual en formato X de XXXXX de XXXX
//
//
function consigueFecha() {
        hoy = new Date();
        dia = hoy.getDate();
        mes = hoy.getMonth();
        anyo = hoy.getFullYear();

        switch(mes) {
        case 0:mes='Enero';break;
        case 1:mes='Febrero';break;
        case 2:mes='Marzo';break;
        case 3:mes='Abril';break;
        case 4:mes='Mayo';break;
        case 5:mes='Junio';break;
        case 6:mes='Julio';break;
        case 7:mes='Agosto';break;
        case 8:mes='Septiembre';break;
        case 9:mes='Octubre';break;
        case 10:mes='Noviembre';break;
        case 11:mes='Diciembre';break;
        } // switch

        cadena = dia + ' de ' + mes + ' de ' + anyo;
        return cadena;
}

/////////////////////////////////////////////////////////////////
// limpiar
// Función que limpia los elementos de un formulario
// formula - formulario a limpiar
//
function limpiar(formula) {
    // Recorre los elementos
    for (i = 0 ; i < formula.length ; i++) {
                tempobj = formula.elements[i];

                // Text
                if (tempobj.type == "text" || tempobj.type=="textarea")
                        tempobj.value = "";

                // Combo
                else if (tempobj.type == "select-one") {
                        // No es vacio el combo
                        if (tempobj.options[0])
                                tempobj.options[0].selected = true;

                // Checkbox
                } else if (tempobj.type == "checkbox")
                        tempobj.checked = false;

    } // for
}

/******************************
 * NavegadorInfo
 * Los objetos instanciados de esta clase, contienen informacion sobre el navegador
 * Los valores son:
 * nombre - Nombre del navegador
 * codigonombre - Codigo identificativo del motor de exploracion
 * version - Version del navegador
 * plataforma - Plataforma (Sistema Operativo)
 * javaActivado - Indica si el navegador soporta o no java
 * pantallaWidth - Ancho pantalla
 * pantallaHeight - Alto pantalla
 * codigo - Identificador de explorador para su uso por javascript. Se diferencia
 *                       entre explorer (IE), Netscape 6 o superior (NN6) y Netscape anterior a 6 (NN4)
 */
function NavegadorInfo() {

        this.nombre = navigator.appName;
       this.codigoNombre = navigator.appCodeName;
       this.version = navigator.appVersion.substring(0,4);
       this.plataforma = navigator.platform;
       this.javaActivado = navigator.javaEnabled();
       this.pantallaWidth = screen.width;
       this.pantallaHeight = screen.height;

       // Navegador Netscape
       if (this.nombre=='Netscape') {
               if (this.version < 5) {
                       this.codigo = 'NN4'
               } else {
                       this.codigo = 'NN6'
               } // if-else

       // Explorer
       } else {
               this.codigo = 'IE';
       } // if-else

}

function gotoName(nombre) {

    // Objeto con informacion del navegador
    var navegador = new NavegadorInfo();


    if (navegador.codigo == 'IE' )
        eval("document.location.href='"+nombre+"';");

    else {
        onload = "document.location.href='"+nombre+"';";
        eval("init();document.location.href='" + nombre + "';");
    } // if-else
}


/////////////////////////////////////////////////////////////////
// diasMes
// Devuelve los dias que tiene un mes
//
//
function diaMes(mes,anyo) {

        switch(mes) {
                case '1':
                case '3':
                case '5':
                case '7':
                case '8':
                case '10':
                case '12':return '31';
                case '4':
                case '6':
                case '9':
                case '11':return '30';
                case '2':return(anyoBisiesto(anyo)?'29':'28');
        } // switch

}

/**
    * funcion para comprobar si una año es bisiesto
    * argumento anyo > año extraido de la fecha introducida por el usuario
    */
    function anyoBisiesto(anyo)
    {

        /*
        * primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
        * es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
        */
        if (anyo % 4 != 0)
            return false;
        else
        {
            if (anyo % 100 == 0)
            {
                /**
                * si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
                */
                if (anyo % 400 == 0)
                {
                    return true;
                }
                /**
                * si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
                */
                else
                {
                    return false;
                }
            }
            /**
            * si es divisible por 4 y no es divisible por 100 > el año es bisiesto
            */
            else
            {
                return true;
            }
        }
    }

function cambioTitulo(titulo,combo) {
        enviaFormTo('edicionCursosFIPJCYLActionForm','edicionCursosFIPJCYLAdminAction.do?titulo=' + combo.options[combo.options.selectedIndex].text);

}


/////////////////////////////////////////////////////////////////
// objeto_combo
// Creacion de un objeto de tipo combo para su manejo dinamico
//
// strCombo - nombre del combo asociado

function objeto_combo(nomForm, strCombo){
    var objeto = buscaElemento(nomForm,strCombo);

    // Operaciones
    objeto.nueva_opcion = nueva_opcion;
    objeto.nueva_opcion_prompt = nueva_opcion_prompt;
    objeto.modificar_opcion = modificar_opcion;
    objeto.modificar_opcion_prompt = modificar_opcion_prompt;
    objeto.borrar_opciones_confirm = borrar_opciones_confirm;
    objeto.borrar_opciones = borrar_opciones;
    objeto.borrar_opcionesArray = borrar_opcionesArray;
    objeto.iniciaVectores = iniciaVectores;
    objeto.devuelveVectores = devuelveVectores;

    // Atributos
    objeto.vectorModificados = new Array();
    objeto.vectorModificadosClave = new Array();
    objeto.vectorSinModificar = new Array();
    objeto.vectorSinModificarClave = new Array();
    objeto.vectorNuevos = new Array();
    objeto.vectorNuevosClave = new Array();
    objeto.vectorBorrados = new Array();

    return objeto;
}

/////////////////////////////////////////////////////////////////
// nueva_opcion
// Creacion de una opcion dentro del combo
//
// texto - Texto de la opcion asociada
// valor - Valor de la opcion asociada

function nueva_opcion(texto,valor){
    oNewOption = new Option(texto, valor);
    this.options[this.length]=oNewOption;
    var posicion=buscarClave(this.vectorBorrados,valor);
    // Si esta en borrados los meto en sin modificar
    if (posicion!=-1){
        this.vectorSinModificar.push(texto);
        this.vectorSinModificarClave.push(valor);
        eliminaElemento(this.vectorBorrados,posicion);
     }else{
        this.vectorNuevos.push(texto);
        this.vectorNuevosClave.push(valor);
     }
}

/////////////////////////////////////////////////////////////////
// nueva_opcion_prompt
// Creacion de una opcion dentro del combo recogiendo los valores
// desde una ventana
//

function nueva_opcion_prompt(){
    var texto = (prompt("Introduzca el valor de la opcion", ""))
    if (texto!=null)
        this.nueva_opcion(texto,texto)
}

/////////////////////////////////////////////////////////////////
// modificar_opcion_prompt
// Modificacion de una opcion dentro del combo recogiendo los valores
// desde una ventana
//

function modificar_opcion_prompt(){
    var len = this.options.length;
    var i = (len-1);
    var seleccionados=0;

    while((i >= 0) && (seleccionados<=1)) {
        if ((this.options[i] != null) && (this.options[i].selected == true)){
            seleccionados++;
        }
        i--;
    }
    if (seleccionados>1)
        alert("Debe seleccionar una unica opcion")
    else{
        var texto = (prompt("Modifique el valor de la opcion", this.options[this.options.selectedIndex].text))
        if (texto!=null)
                this.modificar_opcion(texto);
    }

}

////////////////////////////////////////////////////////////////////////////////////////////
// modificar_opcion
// Modifica los valores de la opcion seleccionada
// Parámetros:
//
function modificar_opcion(texto){
            // Actualizacion de los vectores
            var id=this.options[this.options.selectedIndex].value;
            var posicion=buscarClave(this.vectorSinModificarClave,id);
            if (posicion!=-1){

                this.vectorModificadosClave.push(this.vectorSinModificarClave[posicion]);
                this.vectorModificados.push(texto);
                eliminaElemento(this.vectorSinModificarClave,posicion);
                eliminaElemento(this.vectorSinModificar,posicion);
            }else{
                posicion=buscarClave(this.vectorModificadosClave,id);
                if (posicion!=-1){
                        this.vectorModificados.push(texto);
                }else{
                        posicion=buscarClave(this.vectorNuevosClave,id);
                        if (posicion!=-1){
                                this.vectorNuevos[posicion]=texto;
                        }
                }
            }

    var opcion=this.options[this.options.selectedIndex].text=texto;
}

////////////////////////////////////////////////////////////////////////////////////////////
// borrar_opciones
//     Elimina del combo los elementos seleccionados
function borrar_opciones_confirm()
{
    if (confirm('¿Seguro que desea eliminar los elementos seleccionados?'))
        this.borrar_opciones()
}
////////////////////////////////////////////////////////////////////////////////////////////
// borrar_opciones
//     Elimina del combo los elementos seleccionados
function borrar_opciones()
{

    var len = this.options.length;

    for(var i = (len-1); i >= 0; i--) {
        if ((this.options[i] != null) && (this.options[i].selected == true)){
            // Actualizacion de los vectores
            var id=this.options[i].value;
            var posicion=buscarClave(this.vectorSinModificarClave,id);
            if (posicion!=-1){
                this.vectorBorrados.push(this.vectorSinModificarClave[posicion]);
                eliminaElemento(this.vectorSinModificarClave,posicion);
                eliminaElemento(this.vectorSinModificar,posicion);
            }else{
                posicion=buscarClave(this.vectorModificadosClave,id);
                if (posicion!=-1){
                        this.vectorBorrados.push(this.vectorModificadosClave[posicion]);
                        eliminaElemento(this.vectorModificadosClave,posicion);
                        eliminaElemento(this.vectorModificados,posicion);
                }else{
                        posicion=buscarClave(this.vectorNuevos,id);
                        if (posicion!=-1){
                                eliminaElemento(this.vectorNuevos,posicion);
                                eliminaElemento(this.vectorNuevosClave,posicion);
                        }
                }
            }
            this.options[i] = null;
        }
    }

    this.selectedIndex = -1;

}

////////////////////////////////////////////////////////////////////////////////////////////
// borrar_opcionesArray
//     Elimina del combo los elementos seleccionados
function borrar_opcionesArray(vBorrados)
{
    var len = this.options.length;
    for(var i = (len-1); i >= 0; i--) {
        if ((this.options[i] != null) && (buscarClave(vBorrados,this.options[i].value)!=-1)){
            // Actualizacion de los vectores
            var id=this.options[i].value;
            var posicion=buscarClave(this.vectorSinModificarClave,id);
            if (posicion!=-1){
                this.vectorBorrados.push(this.vectorSinModificarClave[posicion]);
                eliminaElemento(this.vectorSinModificarClave,posicion);
                eliminaElemento(this.vectorSinModificar,posicion);
            }else{
                posicion=buscarClave(this.vectorModificadosClave,id);
                if (posicion!=-1){
                        this.vectorBorrados.push(this.vectorModificadosClave[posicion]);
                        eliminaElemento(this.vectorModificadosClave,posicion);
                        eliminaElemento(this.vectorModificados,posicion);
                }else{
                        posicion=buscarClave(this.vectorNuevosClave,id);
                        if (posicion!=-1){
                                eliminaElemento(this.vectorNuevosClave,posicion);
                                eliminaElemento(this.vectorNuevos,posicion);
                        }
                }
            }
            this.options[i] = null;
        }
    }

    this.selectedIndex = -1;

}

//////////////////////////////////////////////////////////////////
// buscaElemento
//     Busca un elemento en un formulario
// Parametros:
//     nomForm - Nombre del formulario
//     nomCampo - Nombre del elemento a buscar
//
function buscaElemento(nomForm,nomCampo) {
        formulario = eval('document.forms["' + nomForm + '"]');
        elementos=formulario.elements;

        // Recorremos componentes buscando los combos
        for (i=0;i<elementos.length;i++) {
                if (elementos[i].name == nomCampo)
                        return elementos[i];
        } // for

        return null;
}

/////////////////////////////////////////////////////////////////
// devuelveVectores
// Creacion de una opcion dentro del combo recogiendo los valores
// desde una ventana
//

function devuelveVectores(){
    var resultado="";
    var separador="";

    // tratamos los registros sin modificar
    for (i=0;i<this.vectorSinModificar.length;i++) {
        resultado+=separador + this.vectorSinModificarClave[i] + "#" + this.vectorSinModificar[i];
        separador="#"
    }
    separador="";
    resultado+="$";
    // tratamos los registros modificados
    for (i=0;i<this.vectorModificados.length;i++) {
        resultado+=separador + this.vectorModificadosClave[i] + "#" + this.vectorModificados[i];
        separador="#"
    }

    separador="";
    resultado+="$";
    // tratamos los registros nuevos
    for (i=0;i<this.vectorNuevos.length;i++) {
        resultado+=separador + this.vectorNuevosClave[i] + "#" + this.vectorNuevos[i];
        separador="#"
    }

    separador="";
    resultado+="$";
    // tratamos los registros borrados
    for (i=0;i<this.vectorBorrados.length;i++) {
        resultado+=separador + this.vectorBorrados[i];
        separador="#"
    }

    return resultado;
}

/////////////////////////////////////////////////////////////////
// iniciaVectores
// Creacion de una opcion dentro del combo recogiendo los valores
// desde una ventana
//

function iniciaVectores(cadena){
    var estados=cadena.split("$");
    // tratamos los registros sin modificar

    if (estados[0].length>0){
            var sinModificar=estados[0].split("#");
            for (i=0;i<sinModificar.length;i=i+2) {
                this.vectorSinModificarClave.push(sinModificar[i])
                this.vectorSinModificar.push(sinModificar[i+1])
                oNewOption = new Option(sinModificar[i+1], sinModificar[i]);
                this.options[this.length]=oNewOption;

            }
    }
    // tratamos los registros modificados

    if (estados[1].length>0){
            var modificados=estados[1].split("#");
            for (i=0;i<modificados.length;i=i+2) {
                this.vectorModificadosClave.push(modificados[i])
                this.vectorModificados.push(modificados[i+1])
                oNewOption = new Option(modificados[i+1], modificados[i]);
                this.options[this.length]=oNewOption;
            }
    }

    // tratamos los registros nuevos
    if (estados[2].length>0){
        var nuevos=estados[2].split("#");
        for (i=0;i<nuevos.length;i=i+2) {
                this.vectorNuevosClave.push(nuevos[i])
                this.vectorNuevos.push(nuevos[i+1])
                oNewOption = new Option(nuevos[i+1], nuevos[i]);
                this.options[this.length]=oNewOption;
        }
    }

    // tratamos los registros borrados
    if (estados[3].length>0){
        var borrados=estados[3].split("#");
        for (i=0;i<borrados.length;i++) {
                this.vectorBorrados.push(borrados[i])
        }
    }

}

/////////////////////////////////////////////////////////////////
// iniciaVectores
// Creacion de una opcion dentro del combo recogiendo los valores
// desde una ventana
//

function actualizaCampo(valor,formulario,campo){
        var elemento=buscaElemento(formulario,campo);
        elemento.value=valor;
}


////////////////////////////////////////////////////////////////////////////////////////////
// buscaClave
//     Busca en el vector el identificador
function buscarClave(vBusqueda,identificador){
    for(var i=0;i<vBusqueda.length; i++) {
        if (vBusqueda[i]== identificador){
           return i;
        }
    }

    return -1;
}

/***************************************Otras funciones de utilidad****************************/
// borra el elemento indice del array y desplaza los demas elementos
function eliminaElemento(arr,indice){
        //var arraux=arr

        // Desplazamiento de los elementos del array
        for(i=indice;i<arr.length;i++){
                arr[i]=arr[i+1]
        }
        arr.pop()
        return arr
}



/////////////////////////////////////////////////////////////////
// objeto_InfoCheckBox
// Creacion de un objeto de tipo combo para su manejo dinamico
//
//

function objeto_InfoCheckBox(){
    var objeto = new Object();

    // Operaciones
    objeto.anadir_opcion = anadir_opcion;
    objeto.borrar_opcion = borrar_opcion;
    objeto.elegir_opcion = elegir_opcion;

    // Atributos
    objeto.vectorAnadidos = new Array();
    objeto.vectorAnadidosTexto = new Array();
    objeto.vectorBorrados = new Array();

    return objeto;
}

////////////////////////////////////////////////////////////////////////////////////////////
// elegir_opcion
//
function elegir_opcion(marcado,valor,texto){
        if (marcado==true)
                this.anadir_opcion(valor,texto);
        else
                this.borrar_opcion(valor)
}

////////////////////////////////////////////////////////////////////////////////////////////
// anadir_opcion
//
function anadir_opcion(valor,texto){
            var posicion=buscarClave(this.vectorBorrados,valor);
            if (posicion!=-1){
                eliminaElemento(this.vectorBorrados,posicion);
            }else{
                this.vectorAnadidos.push(valor);
                this.vectorAnadidosTexto.push(texto);
            }


}


////////////////////////////////////////////////////////////////////////////////////////////
// borrar_opcion
//
function borrar_opcion(valor){
            var posicion=buscarClave(this.vectorAnadidos,valor);
            if (posicion!=-1){
                eliminaElemento(this.vectorAnadidos,posicion);
                eliminaElemento(this.vectorAnadidosTexto,posicion);
            }else{
                this.vectorBorrados.push(valor);
            }
}


////////////////////////////////////////////////////////////////////////////////////////////
// actualizaCombos
//
function actualizaCombos(objeto,combo){
        // Añadir los nuevos
        for(var i=0;i<objeto.vectorAnadidos.length; i++) {
                combo.nueva_opcion(objeto.vectorAnadidosTexto[i],objeto.vectorAnadidos[i])
        }
        // Borrar
        combo.borrar_opcionesArray(objeto.vectorBorrados)
}

////////////////////////////////////////////////////////////////////////////////////////////
// MarcaCheckBox
//
function marcaCheckBox(nomForm,combo){

        // Marco los sin modificar
        for(var i=0;i<combo.vectorSinModificarClave.length; i++) {

                marcaCheck(nomForm,combo.vectorSinModificarClave[i]);
        }
        // Marco los modificados
        for(var i=0;i<combo.vectorModificadosClave.length; i++) {
                marcaCheck(nomForm,combo.vectorModificadosClave[i]);
        }
        // Marco los nuevos
        for(var i=0;i<combo.vectorNuevos.length; i++) {
                marcaCheck(nomForm,combo.vectorNuevosClave[i]);
        }
}

////////////////////////////////////////////////////////////////////////////////////////////
// marcaCheck
//
function marcaCheck(nomForm,valor){

        var formulario = eval('document.forms["' + nomForm + '"]');
        for (var i = 0 ; i < formulario.length ; i++) {
                var tempobj = formulario.elements[i];
                // Checkbox
                if ((tempobj.type == "checkbox") && tempobj.value==valor){
                        tempobj.checked = true;
                        return;
                }
        } // for
}

function listarUnidades(curso,especialidad){
        if (especialidad!="")
                window.open('verListadoUnidadesCompetenciaAction.do?idCurso=' + curso + '&idEspecialidad=' + especialidad,'Listado','resizable=no,toolbar=no,titlebar=no,scrollbars=yes');
        else
                alert("Seleccione primero una especialidad formativa");
}

// Imagenes de los botones
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

