
function Validaciones (nif,tlf,CodPostal, documento)
{
if (!documento) alerta("Falta el argumento DOCUMENTO de la funcion Validaciones");
else {

	if (!ValidaNIF(nif)) {
		eval("document." + documento + ".DNI.focus()");
		return false;
	}
		
	if (!ValidaCodPostal(CodPostal)) {
		eval("document." + documento + ".CodPostal.focus()");
		return false;	
	}
	
	if (!ValidaTlf(tlf)){
		eval("document." + documento + ".TelContacto.focus()");
		return false;
	}
	
		return true;
		
	}
}
	
function ValidaNIF (nif)
{
	stLetrasnif= "TRWAGMYFPDXBNJZSQVHLCKE";
	stLetrasCIF= "ABCDEFGHQSKLM";
	var i;

	if (nif=='')
	{
		alerta('Debe introducir un NIF/CIF');
		return false;
	}
	
	while (nif.indexOf ("-")>-1)
		nif=nif.replace ("-", "");
	
	if (isNaN (nif.substring(1,nif.length-1)))
	{
		alerta('El formato del NIF/CIF introducido no es correcto');
		return false;
	}
	nif=nif.toUpperCase();
	
	if (nif.substring(0,1)=='X' || nif.substring(0,1)=='P' || isNaN(nif.substring(0,1))==false)
	{
		if (nif.substring(0,1)=='X' || nif.substring(0,1)=='P')
			nif=nif.substring (1, nif.length);
		if (isNaN (nif.substring(nif.length-1, nif.length))==false)
		{
			alerta('El NIF/CIF debe incluir una letra al final');
			return false;
		}
		if (nif.substring(nif.length-1, nif.length)!= stLetrasnif.charAt(nif.substring(0,nif.length-1)%23))
		{
			alerta('La letra del NIF/CIF no es correcta. Debiera ser ' + stLetrasnif.charAt(nif.substring(0,nif.length-1)%23));
			return false;
		}
		return true;	
	}
	i=0;
	if (nif.length!=9)
	{
		alerta('El CIF debe tener 9 cifras')
		return false;
	}
	if (isNaN (nif.substring(nif.length-1, nif.length)))
	{
		alerta('El formato del CIF introducido no es correcto');
		return false;
	}
	for (i=0; i<stLetrasCIF.length; i++)
	{
		if (nif.substring (0, 1)==stLetrasCIF.charAt(i))
		{
			break;
		}
	}
	if 	(i==13)
	{
		alerta('La letra inicial del CIF no es correcta');
		return false;
	}	
	var suma;
	suma=0;
	for (i=2; i<nif.length-1; i+=2)

		suma=suma + parseInt(nif.charAt(i),10);
	var aux;
	for (i=1; i<nif.length-1; i+=2) 
	{
		aux=(parseInt(nif.charAt(i),10))*2;
		if ((aux/10)<1)
			aux=aux*10;
		aux= parseInt((aux/10),10) + aux%10;
			suma=suma+aux;
	}
	if ((10-(suma%10))%10!=nif.substring (nif.length-1, nif.length))
	{
		alerta('La última cifra del CIF es incorrecta. Debiera ser ' + (10-(suma%10))%10);
		return false;
	}
	return true;
}
//Este tipo fx no debiera interactuar con la interfaz
function ValidaTlf (tlf)
{
	if (tlf=="")
	{
		alerta('Debe introducir un teléfono de contacto');
		return false;
	}
	if ((tlf.substr(0,1)!='6' && tlf.substr(0,1)!='9') || tlf.length!=9)
	{
		if(!confirma('El teléfono introducido no tiene formato español. ¿Desea continuar?'))
			return false;
	}		
	return true;
}
function ValidaCodPostal (CodPostal)
{
	if (CodPostal=="")
	{
		alerta('Debe introducir el código postal');
		return false;
	}
	if (CodPostal.length!=5)
	{
		alerta('El código postal debe constar de 5 dígitos')
		return false;
	}		
	return true;
}

function CompruebaHoras(este){
	var cadena=este.value;
	if(cadena>=24){
		alerta("Hora errónea");
		este.value='';
		este.focus();
	}
	else if ((cadena.length=='1')&&(cadena<10))este.value='0'+cadena;
}

function CompruebaMinutos(este){
	var cadena=este.value;
	if(cadena>=60){
		alerta("Minutos erróneos");
		este.value='';
		este.focus();
	}
	else if ((cadena.length=='1')&&(cadena<10))este.value='0'+cadena;
}	

function ValidaEmail(email){
	return(email.indexOf('@'));
}

function ValidaWeb(web){
	return(web.indexOf('http://www.'));	
}

function ValidaCodPostalConProvincia(Provincia, CodPostal){
	
	if (Provincia < 10 & Provincia > 0) 
		Provincia = 0 + Provincia;
	if (CodPostal!=null){
		CodPostal = CodPostal.substr(0,(CodPostal.length - 3));
	}
	else
		return -1;
	if (CodPostal != Provincia){
		return Provincia;
	}
	else
		return 1;
}

/*
function ValidarImei(imei, lon, muestra, inicio){
	
	if ((lon == 15)&&(!isNaN(imei)))
		return(imei);
	else{
		cad = BuscaCadena(imei, muestra, inicio);
		if ( (lon == 18) && (cad != -1) && (!isNaN(cad) ) ){
			imei = cad;
			return(imei);
		}
		else{
			return(-1);
		}
	}
}

function BuscaCadena(cad1, muestra, inicio){
	
	if (cad1.substring(inicio,muestra.length) == muestra){
		cad1 = cad1.substring(muestra.length);
		return(cad1);
	}
	else
		return(-1);
}*/

function ValidarImei(imei, lon, muestra, inicio){
	

	switch (imei.length){
	
		case 15:
			if (!isNaN(imei)){
				return(imei);
			}
			else return(-1);
			
		case 16:
			imei = BuscaCadena(imei, 'Philips');
			if ( (imei != -1) && (!isNaN(imei)) )
				return(imei);
			else return(-1);
		
		case 18:
			imei = BuscaCadena(imei, '22s');
			if ( (imei != -1) && (!isNaN(imei)) )
				return(imei);
			else return(-1);
			
		default:
			return (-1);
	}
}

function BuscaCadena(cad1, muestra){
	
	switch (muestra){
	
		case '22s':
			
			if ((cad1.slice(0,3)) == '22s'){
				cad1 = cad1.slice(3);
				return(cad1);
			}
			else
				return(-1);
			
		case 'Philips':
			
			if ( !isNaN(cad1.slice(15,16)) ){
				cad1 = cad1.slice(0,15);
				return(cad1);
			}
			else return(-1);
		
		default:
			return (-1);
	}
}
