function isValidTelef(num){

	//comprobamos que tiene 9 cifras
	if(num.length < 9){
		return false;
		//comprobamos que es un numero
	}else if(isNaN( num )){
		return false;
	}else{
		//comprobamos que el primer digito es 6, 8 o 9
		letra = num.substring(0,1);
		//alert(letra);
		if((letra == '6') || (letra == '9') || (letra == '8'))
			return true;
		else
			return false;
	
	}
}


function isValidCp(num){

	//comprobamos que tiene 4 o 5 cifras
	if((num.length !=5) && (num.length !=4)){
		return false;
		//comprobamos que es un numero
	}else if(isNaN( num )){
		return false;
	}else{
		return true;
	}
}

function str_replace(search, position, replace, subject) {
    var f = search, r = replace, s = subject, p = position;
    var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
    while (j = 0, i--) {
        if (s[i]) {
            while (s[p] = s[p].split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};

        }
    };
    return sa ? s : s[0];
}

//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
function isValidCif(a){

	var temp=a.toUpperCase();
	var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
 
	if (temp!==''){
		//si no tiene un formato valido devuelve error
		if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			return 0;
		}
 
		//comprobacion de NIFs estandar
		if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
			   	return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//algoritmo para comprobacion de codigos tipo CIF


		suma = parseInt(a.charAt(2))+parseInt(a.charAt(4))+parseInt(a.charAt(6));

		for (i = 1; i < 8; i += 2)
		{
			temp1 = 2 * parseInt(a.charAt(i));
			temp1 += '';
			temp1 = temp1.substring(0,1);
			temp2 = 2 * parseInt(a.charAt(i));
			temp2 += '';
			temp2 = temp2.substring(1,2);
			if (temp2 == '')
			{
				temp2 = '0';
			}
 
			suma += (parseInt(temp1) + parseInt(temp2));
		}
		
		suma += '';
		n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
 		
		//comprobacion de NIFs especiales (se calculan como CIFs)
		if (/^[KLM]{1}/.test(temp))
		{
			if (a.charAt(8) == String.fromCharCode(64 + n))
			{
				return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//comprobacion de CIFs
		if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp))
		{
			temp = n + '';
			if (a.charAt(8) == String.fromCharCode(64 + n) || a.charAt(8) == parseInt(temp.substring(temp.length-1, temp.length)))
			{
				return 2;
			}
			else
			{
				return -2;
			}
		}
 
		//comprobacion de NIEs
		//T
		//if (/^[T]{1}/.test(temp))
		if (/^[T]{1}[A-Z0-9]{8}$/.test(temp))
		{
			if (a.charAt(8) == /^[T]{1}[A-Z0-9]{8}$/.test(temp))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
 
		//XYZ
		if (/^[XYZ]{1}/.test(temp))
		{
			pos = str_replace(['X', 'Y', 'Z'], 0, ['0','1','2'], temp).substring(0, 8) % 23;
			//pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
			if (a.charAt(8) == cadenadni.substring(pos, pos + 1))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
	}
 
	return 0;

}

function isValidCp(num){

	//comprobamos que tiene 4 o 5 cifras
	if((num.length !=5) && (num.length !=4)){
		return false;
		//comprobamos que es un numero
	}else if(isNaN( num )){
		return false;
	}else{
		return true;
	}
}


function validate()
{
	var errores			= 0;
	var listaErrores	= "";
	var txt				= "";
	
	//Datos personales
	var name = document.getElementById('name');
	var lastname1 = document.getElementById('lastname1');
	var lastname2 = document.getElementById('lastname2');
	var mail = document.getElementById('mail');
	var phone1 = document.getElementById('phone1');
	var nif = document.getElementById('nif');

	//Comprueba el nombre
	if (name.value==""){
		name.style.borderColor = "red";
		name.style.color = "red";
		errores ++;
		listaErrores += '* Indique su nombre\n';
		
	}
	else{
		name.style.borderColor = "#cccccc";
		name.style.color = "#999999";
	}
	//comprueba el primer apellido
	if (lastname1.value==""){
		lastname1.style.borderColor = "red";
		lastname1.style.color = "red";
		errores ++;
		listaErrores += '* Indique su primer apellido\n';
	}
	else{
		lastname1.style.borderColor = "#cccccc";
		lastname1.style.color = "#999999";
	}
	//comprueba el telefono
	if ((phone1.value=="") || (!isValidTelef(phone1.value))){
		phone1.style.borderColor = "red";
		phone1.style.color = "red";
		errores ++;
		listaErrores += '* Indique el telefono de contacto (que tenga 9 cifras y que empiece por 6, 8 o 9)\n';
	}
	else{
		phone1.style.borderColor = "#cccccc";
		phone1.style.color = "#999999";
	}
	
	//comprueba el email
	if (mail.value=="" ||  Validate(mail, 'mail','pre')==false) {
							
			errores++;
			listaErrores += '* Debe introducir un email valido\n';		
			mail.style.borderColor = "red";
			mail.style.color = "red";
	}
	else
	{
		mail.style.borderColor = "#cccccc";
		mail.style.color = "#999999";
	}
	
	//nif

	if ((nif.value=="") || (isValidCif(nif.value) < 1)){
							
			errores++;
			listaErrores += '* Debe introducir un nif válido (ej. 12345678A)"\n';		
			nif.style.borderColor = "red";
			nif.style.color = "red";
	}
	else
	{
		nif.style.borderColor = "#cccccc";
		nif.style.color = "#999999";
	}
	
	//hora de contacto
	var contactHour = document.getElementById('contactHour').options[document.getElementById('contactHour').selectedIndex].value;
	if (contactHour == 0)
	{
		document.getElementById('contactHour').style.borderColor = "red";
		document.getElementById('contactHour').style.color = "red";
		errores ++;
		listaErrores += '* Indique la hora de contacto\n';
	}
	else
	{
		document.getElementById('contactHour').style.borderColor = "#cccccc";
		document.getElementById('contactHour').style.color = "#999999";
	}
	
	//Domicilio
/*
	var location = document.getElementById('location').options[document.getElementById('location').selectedIndex].value;
	var province = document.getElementById('province').options[document.getElementById('province').selectedIndex].value;
	var viaType = document.getElementById('viaType').options[document.getElementById('viaType').selectedIndex].value;
	var cp = document.getElementById('cp');
	var viaName = document.getElementById('viaName');
	var viaNum = document.getElementById('viaNum');
	var complement = document.getElementById('complement');
*/
	
	//comprueba la provincia
	/*if (province == 0)
	{
		document.getElementById('province').style.borderColor = "red";
		document.getElementById('province').style.color = "red";
		errores ++;
		listaErrores += '* Indique la provincia\n';
	}
	else
	{
		document.getElementById('province').style.borderColor = "#cccccc";
		document.getElementById('province').style.color = "#999999";
	}*/

	//comprueba la localidad
	/*if (location == 0)
	{
		document.getElementById('location').style.borderColor = "red";
		document.getElementById('location').style.color = "red";
		errores ++;
		listaErrores += '* Indique la localidad\n';
	}
	else
	{
		document.getElementById('location').style.borderColor = "#cccccc";
		document.getElementById('location').style.color = "#999999";
	}*/
	//comprobamos el tipo de via
	/*if (viaType == 0)
	{
		document.getElementById('viaType').style.borderColor = "red";
		document.getElementById('viaType').style.color = "red";
		errores ++;
		listaErrores += '* Indique el tipo de via\n';
	}
	else
	{
		document.getElementById('viaType').style.borderColor = "#cccccc";
		document.getElementById('viaType').style.color = "#999999";
	}*/
	//comprobamos el nombre de via
	/*if (viaName.value=="") {
							
			errores++;
			listaErrores += '* Debe introducir un nombre de via valido\n';		
			viaName.style.borderColor = "red";
			viaName.style.color = "red";
	}
	else
	{
		viaName.style.borderColor = "#cccccc";
		viaName.style.color = "#999999";
	}
	//Comprobamos el numero de via
	if (viaNum.value=="") {
							
			errores++;
			listaErrores += '* Debe introducir un numero de via valido\n';		
			viaNum.style.borderColor = "red";
			viaNum.style.color = "red";
	}
	else
	{
		viaNum.style.borderColor = "#cccccc";
		viaNum.style.color = "#999999";
	}
	//Comprobamos el cp
	if ((cp.value=="") || (!isValidCp(cp.value))) {
							
			errores++;
			listaErrores += '* Debe introducir el codigo postal valido(de 4 o 5 digitos) \n';		
			cp.style.borderColor = "red";
			cp.style.color = "red";
	}
	else
	{
		cp.style.borderColor = "#cccccc";
		cp.style.color = "#999999";
	}*/
	
	//Concesionario
	var conLocation = document.getElementById('concessionLocation').options[document.getElementById('concessionLocation').selectedIndex].value;
	var conProvince = document.getElementById('concessionProvince').options[document.getElementById('concessionProvince').selectedIndex].value;
	var con = document.getElementById('concession').options[document.getElementById('concession').selectedIndex].value;
	//provincia del concesionario
	if (conProvince == 0)
	{
		document.getElementById('concessionProvince').style.borderColor = "red";
		document.getElementById('concessionProvince').style.color = "red";
		errores ++;
		listaErrores += '* Indique la provincia del concesionario\n';
	}
	else
	{
		document.getElementById('concessionProvince').style.borderColor = "#cccccc";
		document.getElementById('concessionProvince').style.color = "#999999";
	}
	
	//comprueba la localidad del concesionario
	if (conLocation == 0)
	{
		document.getElementById('concessionLocation').style.borderColor = "red";
		document.getElementById('concessionLocation').style.color = "red";
		errores ++;
		listaErrores += '* Indique la localidad del concesionario\n';
	}
	else
	{
		document.getElementById('concessionLocation').style.borderColor = "#cccccc";
		document.getElementById('concessionLocation').style.color = "#999999";
	}
					
	if (con == 0)
	{
		document.getElementById('concession').style.borderColor = "red";
		document.getElementById('concession').style.color = "red";
		errores ++;
		listaErrores += '* Indique el concesionario\n';
	}
	else
	{
		document.getElementById('concession').style.borderColor = "#cccccc";
		document.getElementById('concession').style.color = "#999999";
	}

	if (errores==0) {
		
		//alert('validado..');
		return(true);
		
	} else {
		
		if (errores=1) alert('Se ha producido el siguiente error: \n\n'+listaErrores);
		else alert('Se han producido los siguientes errores: \n\n'+listaErrores);
		//return (true) //Probamos validacion php
		return(false);
	}
	
	
}

function validateLogin(form){

	var errores			= 0;
	var listaErrores	= "";
	var txt				= "";
	
	var login = document.getElementById('login');
	var pass = document.getElementById('pass');
	

	if (login.value=="") {
							
			errores++;
			listaErrores += '* Debe introducir su nombre de usuario\n';		
			login.style.borderColor = "red";
			login.style.color = "red";
	}
	else
	{
		login.style.borderColor = "#cccccc";
		login.style.color = "#999999";
	}

	if (pass.value==""){
							
			errores++;
			listaErrores += '* Debe introducir su contraseña\n';		
			pass.style.borderColor = "red";
			pass.style.color = "red";
	}
	else
	{
		pass.style.borderColor = "#cccccc";
		pass.style.color = "#999999";
	}
	
	if (errores==0) {
		
		//alert('validado..');
	
		return(true);
		
	} else {
		
		if (errores=1) alert('Se ha producido el siguiente error: \n\n'+listaErrores);
		else alert('Se han producido los siguientes errores: \n\n'+listaErrores);
		//return (true) //Probamos validacion php
		return(false);
	}
}