// Consejería de Presidencia y Justicia.
// Dirección General de la Función Pública.
// Created Oct 4, 2006.
// Nartex Software
//
// Fichero JavaScript con las funciones comunes que se utilizarán para validar formularios
// y demás tareas.
// ----------------------------------------------------------------------------------------

// función	: getFormUsuario
// param0	: String, id de la convocatoria
// param1	: String, dni del solicitante
// retorno	: boolean (true si documento es válido, de lo contrario false)
// Comprueba si campo.value es un numero de documento válido (NIF, NIE)
function getFormUsuario(idConvocatoria, nif, idSolAnterior) {
	
	if (idSolAnterior.length> 0 && idSolAnterior.length< 22) {
		window.alert('El Id de Solicitud Anterior no es correcto.\n\nAl menos 22 caracteres.');
	} else {
		document.location.href= "proselec.jsp?idConvoca="+idConvocatoria+"&nif="+nif+"&idSolAnterior="+idSolAnterior;
	}
}

// función	: isValidIdDoc
// param	: campo, tipo: objeto / control, nombre del input donde se encuentra en Nro. de documento (no el texto).
// retorno	: boolean (true si documento es válido, de lo contrario false)
// Comprueba si campo.value es un numero de documento válido (NIF, NIE)
function isValidIdDoc(campo) {
	campo.value= campo.value.toUpperCase();
	return (isNIF(campo) || isNIE(campo));
}

// función	: isNIF
// param	: campo, tipo: objeto / control, nombre del input donde se encuentra en Nro. de documento (no el texto).
// retorno	: boolean (true si NIF es válido, de lo contrario false)
// Comprueba si campo.value es un NIF válido.
function isNIF(campo) {
  var inicio; 
  var resto;  
  var patron = /\\\\\\\\D/;  
  var patron1 = /T|R|W|A|G|M|Y|F|P|D|X|B|N|J|Z|S|Q|V|H|L|C|K|E/;
  var Letras_Posibles = "TRWAGMYFPDXBNJZSQVHLCKE" ;
  inicio = campo.value.substring(0,campo.value.length-1);
  resto = campo.value.substring(campo.value.length-1,campo.value.length);
  resto = resto.toUpperCase();
  
  if(campo.value.length > 0)  {
   if((inicio.length == 0) || (inicio.match(patron)) || (!resto.match(patron1)))
         return false;
    numero_documento= ""    
	for (i=0; i < inicio.length; i++) {
		  numero_documento = numero_documento + inicio.charAt(i)
	}
   	pos_corr = (numero_documento%23);
    letra_correcta = Letras_Posibles.charAt(pos_corr);
    if (resto != letra_correcta)
      return false;
    }  else {
    return false;
}
return true;
}

// función	: isNIE
// param	: campo, tipo: objeto / control, nombre del input donde se encuentra en Nro. de documento (no el texto).
// retorno	: boolean (true si NIE es válido, de lo contrario false)
// Comprueba si campo.value es un NIE válido.
function isNIE(campo) {
	var nie= campo.value
	var cadena="TRWAGMYFPDXBNJZSQVHLCKET"; 
	if (nie.length== 9 && (nie.charAt(0)== 'X' || nie.charAt(0)== 'x')) {
		// quitamos la 'X' del comienzo
		nie= nie.substring(1, nie.length);
		var nieLetra= nie.charAt(nie.length - 1);
		nie= nie.substring(0, (nie.length - 1));
		posicion = parseInt(nie) % 23; 
		if (nieLetra== cadena.substring(posicion, posicion+1)) {
			return true;
		}
	}
	return false;
}

function esFecha(Cadena){
	var Fecha= new String(Cadena);	// Crea un string
	var RealFecha= new Date();	// Para sacar la fecha de hoy
	// Cadena Año
	var Ano= new String(Fecha.substring(Fecha.lastIndexOf("/")+1,Fecha.length));
	// Cadena Mes
	var Mes= new String(Fecha.substring(Fecha.indexOf("/")+1,Fecha.lastIndexOf("/")));
	// Cadena Día
	var Dia= new String(Fecha.substring(0,Fecha.indexOf("/")));
	// Valido el año
	if (isNaN(Ano) || Ano.length!=4 || parseFloat(Ano)<1900){
//        	alert('Año inválido')
		return false;
	}
	// Valido el Mes
	if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12 || Mes.length!=2){
//		alert('Mes inválido')
		return false;
	}
	// Valido el Dia
	if (isNaN(Dia) || parseFloat(Dia)<1 || parseFloat(Dia)>31 || Mes.length!=2){
//		alert('Día inválido')
		return false;
	}
	if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2) {
		if ((Mes==2 && esBisiesto(Ano) && Dia > 29) || (Mes==2 && !esBisiesto(Ano) && Dia > 28) || Dia>30) {
//			alert('Día inválido')
			return false;
		}
	}
  return true;
}

function esBisiesto(ano){
  if ((ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0))){
    return true;
  }else{
    return false;
  }
  
}

