// VALIDACIONES:
// Funcion que comprueba que lo introducido es numérico.
function esnumero(s) {
    var reg = new RegExp("^[0-9]+$");
    if (!reg.test(s))
        return false;
    return true;
}
// Funcion que comprueba si un campo esta vacio
function vacio(strAux) {
    var re = new RegExp("^\\s+$");
    if ((strAux == null) || (strAux == "") || (re.test(strAux))) return true;
    return false;
}
// Validación de los campos obligatorios
function valObligatorio(object, name)
{
    var msg = "";
    var valor = "";

   //alert(object.type);
    if (object.type == 'text' || object.type == 'textarea')
        valor = object.value;
    else if (object.type == 'select-one')
        valor = object.options[object.selectedIndex].value;

    if (vacio(valor))
    {
        msg = "El campo '" + name + "' es obligatorio \n";
    }
    return msg;
}
// Validación de los campos fecha formateados (dd/MM/aaaa)
function valFecha(object, name)
{
    var msg = "";
    var valor = "";

   //alert(object.type);
    if (object.type == 'text')
        valor = object.value;
    else if (object.type == 'select-one') // borrar ?
        valor = object.options[object.selectedIndex].value;

    if (!esFechaValida(valor))
    {
        msg = "El campo '" + name + "' no es una fecha válida \n";
    }
    return msg;
}

function esFechaValida(fecha)
{
    var isValida = true;
    var fechaAux = fecha.split("/");
    var dia = fechaAux[0];
    var mes = fechaAux[1];
    var anyo = fechaAux[2];

    isValida = ((!isNaN(dia)) && (!isNaN(mes)) && (!isNaN(anyo)) && (dia > 0) && (dia < 32) && (mes > 0) && (mes < 13) && (anyo > 1500));

	//Comprobamos ahora que nada cambie en relación al objeto date.Así controlamos por ejemplo los años bisiestos
    if (isValida)
    {
        dia = parseInt(dia, 10);
        mes = parseInt(mes, 10);
        anyo = parseInt(anyo, 10);

        var fechaDate = new Date(formatearFechaDate(fecha));

        var mes1 = fechaDate.getMonth() + 1;
        if ((dia != fechaDate.getDate()) || (mes != mes1) || (anyo != fechaDate.getFullYear()))
            isValida = false;
    }

    return isValida;
}

//Pasa una fecha(String) del tipo dd/mm/aaaa a mm/dd/aaaa que es el que maneja javascript
function formatearFechaDate(fecha)
{
    fechaAux = fecha.split("/");
    dia = fechaAux[0];
    mes = fechaAux[1];
    anyo = fechaAux[2];
    return mes + "/" + dia + "/" + anyo;
}//formatearFechaDate(fecha)

function formatearFecha(obj)
{
    if (obj.value != "" && esnumero(obj.value))
    {
        fechaParser = obj.value.split("/");
        dia = fechaParser[0];
        mes = fechaParser[1];
        anio = fechaParser[2];
        if (dia == null || mes == null || anio == null)
        {
            fecha = obj.value;
            obj.value = obj.value.substring(0, 2) + "/" + obj.value.substring(2, 4) + "/" + obj.value.substring(4, 8);
        }
    }
}

// Función para lanzar las validaciones
function validarFormulario(f)
{
    var errores = "";
    if (obligatorios != null)
    {
        for (i = 0; i < obligatorios.length; i++)
        {
            errores += valObligatorio(f.elements[obligatorios[i][0]], obligatorios[i][1]);
        }
    }
    if (fechas != null && errores == "")
    {
        for (i = 0; i < fechas.length; i++)
        {
            errores += valFecha(f.elements[fechas[i][0]], fechas[i][1]);
        }
    }

    if (errores != "")
    {
        alert(errores);
        return false;
    }
    else
        return true;
}



// cuenta atras de caracteres
function calCar(maxLong, campo, contador, nameForm)
{
    var maxLongitud = maxLong;
    var libres = maxLong;
    f = document.forms[nameForm];
    if (f.elements[campo].value.length > maxLongitud)
    {
        f.elements[campo].value = f.elements[campo].value.substring(0, maxLongitud)
        libres = 0
        alert("¡Ha superado el límite!\nRecuerde que dispone de\n" + maxLongitud + " caracteres")
    }
    else
    {
        libres = maxLongitud - f.elements[campo].value.length
    }
    f.elements[contador].value = libres
}


// abrir ventana
function Popup(url, w, h, x, y, name)
{
    strWin1 = 'width=' + w + ',height=' + h + ',top=' + y + ',left=' + x;
    strWin2 = ',directories=0,location=0,status=0,scrollbars=1,toolbar=0,menubar=0,resizable=0';
    win = strWin1 + strWin2;
    eval("open(\'" + url + "\',\'" + name + "\',\'" + win + "\')");
}

/* busqueda de ambitos:
*  variables para paso de datos: formActivo, nameCampo, idCampo.
*/
function buscaAmbito()
{

    var posX = (screen.availWidth - 500) / 2;
    var posY = (screen.availHeight - 400) / 2;
    f = document.forms[formActivo];
    if (f.claveAmbito.value == "")
    {
        alert("Debe indicar la clave para buscar el CONVOCANTE");
        f.claveAmbito.focus();
        return false;
    }
    else
        Popup('/buscaConvocante.do?clave=' + f.claveAmbito.value, 500, 400, posX, posY, 'buscar');

    return false;
}

function buscaTitulacion()
{
  f=document.busqueda_avanzada;
  if (f.claveTitulacion.value=="")
  {
     alert("Debe indicar una clave para buscar por TITULACION");
     f.claveTitulacion.focus();
     return false;
  }
  var posX = (screen.availWidth - 500)/2;
  var posY = (screen.availHeight - 400)/2;
  f=document.forms[formActivo];
  Popup('/buscaTitulacion.do?clave='+f.claveTitulacion.value,500,400,posX,posY,'buscar');

  return false;  
}
function enviarBusquedaAvanzada()
{
    f=document.busqueda_avanzada;
    if (f.clave.value == "")
    {
        alert('El campo Titulo de Oposición no puede estar vacio');
  }
  else
  {
   f.submit();
  }
}

function selectedAll(s)
{
    for (i = 0; i < s.length; i++)
        s.options[i].selected = true;
}

function enviarBusqueda()
{
    f = document.busqueda_avanzada;

    if (f.clave.value == "" && f.ambito.value == "" && f.titulacion.value == "" && f.grupo.value == "" && f.tipo.value == "" && f.personal.value == "")  
    {
        alert('Debe introducir algún criterio de busqueda');
    }
    else
    {
        if (f.clave.value == "") f.clave.disabled=true;
        if (f.ambito.value == "") f.ambito.disabled=true;
        if (f.titulacion.value == "") f.titulacion.disabled=true;
        if (f.grupo.value == "") f.grupo.disabled=true;
        if (f.tipo.value=="") f.tipo.disabled=true;
        if (f.personal.value == "") f.personal.disabled=true;

        f.textoambito.disabled=true;
        f.textotitulacion.disabled=true;
        f.submit();
    }
}

function enviarSuscripcionBoletin()
{
    f=document.suscripcion_boletin;
    if (f.login.value == "" || f.password.value == "")
    {
        alert('Los campos login y password no pueden estar vacios');
    }
    else
    {
       f.submit();
    }
}

//Funciones para mapas
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_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_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.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];}
}
