//Función que vamos a utilizar para validar si el día, el mes o el año de una fecha, es
//válido. Le pasamos una subcadena de la fecha tecleada (variable 'num') correspondiente al
//día, el mes o el año, y un numero (variable 'cuantos') con el valor máximo para cada uno.
//La función devuelve 'true' si todo está correcto.


function compruebaNumero(iNum,iCuantos)
{
	var iNumero = 0 + iNum;
	if(iNumero <= 0 || iNumero > iCuantos)
		return false;
	else
		return true;		
}

/*****************************************************************************************/

//Función que valida si dos campos contienen una fecha con formato correcto y
//si la primera fecha es anterior a la segunda.

function validaEntreFechas(dFecha1,dFecha2 )
{
	var auxiliar1="";
	var auxiliar2="";
	var aux1="";
	var aux2="";
	
	auxiliar1=dFecha1;
	auxiliar2=dFecha2;
	aux1=auxiliar1.split("/");
	aux2=auxiliar2.split("/");
	
	
	if (!validarFecha(dFecha1))
		return 0;
	if (!validarFecha(dFecha2))
		return 0;
	var Dia1 = aux1[0]; 
	var enteroDia1 = parseInt(Dia1,10);
	var mes1 =aux1[1];
	var enteroMes1 = parseInt(mes1,10);
	var anno1=aux1[2];
	var enteroAnno1 = parseInt(anno1,10);
	var Dia2 = aux2[0]; 
	var enteroDia2 = parseInt(Dia2,10);
	var mes2=aux2[1];
	var enteroMes2 = parseInt(mes2,10);
	var anno2=aux2[2];
	var enteroAnno2 = parseInt(anno2,10);	
	if(enteroAnno1 > enteroAnno2)        
		return 0;
	else if((enteroAnno1 == enteroAnno2) && (enteroMes1 > enteroMes2))
			return 0;
	     else if (((enteroAnno1 == enteroAnno2) && (enteroMes1 == enteroMes2)) && (enteroDia1 > enteroDia2))
				return 0;
		   	  else 
				return 1;
}

/*********************************************************************************************/

//Función que valida si un campo contiene una fecha con formato correcto.
//Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaFecha(dFecha){
	if (dFecha == "")
		return 2;
	else{
		patron = /^\d\d\/\d\d\/\d\d\d\d$/;
		cadenaEncontrada = dFecha.match(patron);
		if(cadenaEncontrada != null)
		{
			var dia = dFecha.substring(0, 2);
			var mes = dFecha.substring(3, 5);
			var anno = dFecha.substring(6, 10);						
			if(!compruebaNumero(mes, 12))
				return 0;
			else if(!compruebaNumero(dia,NumeroDiasMes(mes,anno)))
		     	return 0;
		     else
				return 1;    
		}
		else
			return 0;
	}
}

/*******************************************************************************************/

//Función que calcula el número de dias que tiene un mes.

function NumeroDiasMes(iMes, iAnno){
	if (EsBisiesto(iAnno)){
		var aDias_Mes = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30,31,30,31);
	}
	else{
		var aDias_Mes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30,31,30,31);
	}
	return aDias_Mes[iMes-1];
}

/*****************************************************************************************/

//Función que calcula si un año es bisiesto.

function EsBisiesto(iAnno){
  	// Esta función comprueba si el año introducido es bisiesto o no.
  	return ((((iAnno % 4) == 0) && ((iAnno % 100) != 0 )) || ((iAnno % 400) == 0));
}

/*******************************************************************************************/

// Función que valida si un campo contiene sólo letras y/o números.
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaNumerosLetras(sCadena){
	if (sCadena == "")
		return 2;
	else{
		var patron = /^[0-9a-zA-Z\Ñ\ñ]+$/
		var cadenaEncontrada = sCadena.match(patron);
		if(cadenaEncontrada != null)
			return 1;
		else
			return 0;
	}
}

/*******************************************************************************************/

// Función que valida si un campo contiene sólo letras, numeros, acentos,
// punto, º, ª, y espacio en blanco.
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaNumerosLetrasyCaracteres(sCadena){
	if (sCadena == "")
		return 2;
	else{
		var patron = /^[0-9a-zA-Z\Ñ\ñ\á\é\í\ó\ú\Á\É\Í\Ó\Ú\.\º\ª\s]+$/
		var cadenaEncontrada = sCadena.match(patron);
		if(cadenaEncontrada != null)
			return 1;
		else
			return 0;
	}
}

/*******************************************************************************************/

// Función que valida si un campo contiene todos los caracteres 
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).
/*
function validaAlfanumerico(sCadena)
{
	
	if (sCadena == "")
		return 2;
	else{
		var patron = /^[0-9a-zA-Z\Ñ\ñ\á\é\í\ó\ú\Á\É\Í\Ó\Ú\·\`\.\º\ª\s\@\#\$\%\&\/\(\)\"\!\¡\'\?\¿\+\*\{\}\]\[\.\:\s\,\;\-\_\<\>\ü]+$/
		var cadenaEncontrada = sCadena.match(patron);
		if(cadenaEncontrada != null)
			return 1;
		else
			return 0;
	}
}*/

/*********************************************************************************************/

// Función que valida si un campo contiene solo números enteros.
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaNumeros(iNumero){
	if (iNumero == "")
		return 2;
	else{
		var patron = /^[0-9]+$/;
		var cadenaEncontrada = iNumero.match(patron);
		if(cadenaEncontrada != null)
			return 1;
		else
			return 0;
	}
}

/**********************************************************************************************/

// Función que valida si un campo contiene un DNI.
// Debe contener de 1 a 8 dígitos numéricos, un guión y una letra 
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaNifCif(Elemento){
	if (Elemento == "")
		return 2;
	else{
		var patron =/^\d{1,8}\-[A-Z\Ñ]$/ 
		var patron1 =/^[A-Z\Ñ]{1}\-\d{1,8}$/;
		var cadenaEncontrada = Elemento.match(patron);
		var cadenaEncontrada1 = Elemento.match(patron1);
		if((cadenaEncontrada != null) || (cadenaEncontrada1 != null))
			return 1;
		else
			return 0;
	}
}

/**********************************************************************************************/

//Función que valida si un campo contiene un número de teléfono con formato correcto.
//Formatos correctos: (929)637453 ó 929793238 ó  969-847980 ó 926/549201
//Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaTelefono(Elemento){
	if (Elemento == "")
		return 2;
	else{
		var patron = /^\([0-9]{3}\)[0-9]{6}$/;
		var patron1 = /^\([0-9]{2}\)[0-9]{7}$/;
		var patron2 = /^[0-9]{9}$/;
		var patron3 = /^[0-9]{3}\-[0-9]{6}$/;
		var patron4 = /^[0-9]{2}\-[0-9]{7}$/;
		var patron5 = /^[0-9]{3}\/[0-9]{7}$/;
		var patron6 = /^[0-9]{2}\/[0-9]{6}$/;
		var cadenaEncontrada = Elemento.match(patron);
		var cadenaEncontrada1 = Elemento.match(patron1);
		var cadenaEncontrada2 = Elemento.match(patron2);
		var cadenaEncontrada3 = Elemento.match(patron3);
		var cadenaEncontrada4 = Elemento.match(patron4);
		var cadenaEncontrada5 = Elemento.match(patron5);
		var cadenaEncontrada6 = Elemento.match(patron6);
		if((cadenaEncontrada != null)|| (cadenaEncontrada1 != null)||(cadenaEncontrada2 != null)||(cadenaEncontrada3 != null)||(cadenaEncontrada4 != null)||(cadenaEncontrada5 != null)||(cadenaEncontrada6 != null))
			return 1;
		else
			return 0;
	}
}

/**********************************************************************************************/

//Función que valida si un campo contiene un código postal con formato correcto.
//Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaCodigoPostal(Elemento){
	if (Elemento == "")
		return 2;
	else{
		var patron = /^[0-9]{5}$/;
		var cadenaEncontrada = Elemento.match(patron);
		if(cadenaEncontrada != null)
			if (Elemento < 50001)	
				   return 1;
			else
				   return 0;
		else
			return 0;
	}
}

/*******************************************************************************************/

// Función que valida si un campo contiene una cantidad de horas correcta menor que 24.
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaHoras(Elemento){
	if (Elemento == "")
		return 2;
	else{
		var patron =/^[0-1]{0,1}[0-9]{1}\:[0-5]{1}[0-9]{1}$/;
		var patron2 =/^[1-2]{1}[0-3]{1}\:[0-5]{1}[0-9]{1}$/;
		var cadenaEncontrada = Elemento.match(patron);
		var cadenaEncontrada2 = Elemento.match(patron2);
		if ((cadenaEncontrada != null)||(cadenaEncontrada2 != null))			
			return 1;
		else
			return 0;		
	}
}

/**********************************************************************************************/

// Función que valida si un campo contiene una cantidad de horas correcta menor que 100.000
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaHorasPrevistas(Elemento){
	if (Elemento == "")
		return 2;
	else{
		var patron =/^[0-9]{0,4}[0-9]{1}\:[0-5]{1}[0-9]{1}$/;
		var patron2 =/^[0-9]{1,4}[0-9]{1}$/;
		var cadenaEncontrada = Elemento.match(patron);
		var cadenaEncontrada2 = Elemento.match(patron2);
		if ((cadenaEncontrada != null)||(cadenaEncontrada2 != null))			
			return 1;
		else
			return 0;		
	}
}

/*******************************************************************************************/

// Función que valida si un campo contiene solo números enteros del 1 al 100.
// Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validaAvance(iNumero){
	if (iNumero == "")
		return 0;
	else{
		var patron = /^[0-9]{1,3}$/;
		var cadenaEncontrada = iNumero.match(patron);
		if(cadenaEncontrada != null){
			if ((iNumero>0) && (iNumero<=100))	
				return 1;
			else
				return 0;	
		}
		else
			return 0;
	}
}



/*********************************************************************************************/

//Función que valida si un campo contiene una fecha con formato correcto.
//Retorna: 0 (valor incorrecto), 1 (valor correcto), 2 (en blanco).

function validarFecha(dFecha){
	
	var auxiliar=""
	var aux=""

	if (dFecha == "")
		return 2;
	else{
		patron = /^\d{1,2}\/\d{1,2}\/\d\d\d\d$/;
		cadenaEncontrada = dFecha.match(patron);
		if(cadenaEncontrada != null)
		{
			auxiliar=dFecha;
			aux=auxiliar.split("/");
			
			var dia = aux[0];
			var mes = aux[1];
			var anno = aux[2];	
							
			if(!compruebaNumero(mes, 12))
				return 0;
			else if(!compruebaNumero(dia,NumeroDiasMes(mes,anno)))
		     	return 0;
		     else
				return 1;    
		}
		else
			return 0;
	}
}

