//ELIMINA ESPACIOS DEL DNI Y OTROS CARACTERES
function formateaDNI(dni)
{
	var dniFormateado = "";
	dniFormateado = dni.replace("-", "");
	dniFormateado = dniFormateado.replace("_", "");
	dniFormateado = dniFormateado.replace(" ", "");
	dniFormateado = dniFormateado.replace(".", "");
	dniFormateado = dniFormateado.replace("*", "");
	dniFormateado = dniFormateado.toUpperCase();
	return dniFormateado;
}

//COMPRUEBA QUE EL DNI INTRODUCIDO SEA VALIDO
function dniValido(dni)
{
	var numero = "";
	var let = "";
	var letra = "RWAGMYFPDXBNJZSQVHLCKET";

	dniFormateado = formateaDNI(dni);
	if ((dniFormateado == "00000000T")||(dniFormateado == "11111111T")||(dniFormateado == "22222222J"))
	{
		return false;
	}
	let2 = dniFormateado.substr(0,1);
	if (let2 == "X")
	{
		numero = dniFormateado.substr(1, dniFormateado.length-2);
	}
	else if (let2 == "Y")
	{
		numero = "1"+dniFormateado.substr(1, dniFormateado.length-2);
	}
	else if (let2 == "Z")
	{
		numero = "2"+dniFormateado.substr(1, dniFormateado.length-2);
	}
	else
	{
		numero = dniFormateado.substr(0, dniFormateado.length-1);
	}
	let = dniFormateado.substr(dniFormateado.length-1, 1);
	numero = numero % 23;
	if (numero == 0) numero = 23;
	letra = letra.charAt(numero-1);
	if (letra != let)
	{
		return false;
	}
	else
	{
		document.getElementById('dni').value = dniFormateado;
		return true;
	}
}

//COMPRUEBA QUE SEA UN EMAIL VALIDO
function emailValido(address)
{
	if (address.indexOf('@') < 2)
		return false;
	var name = address.substring(0, address.indexOf('@'));
	var domain = address.substring(address.indexOf('@') + 1);
	var ext = address.substring(address.lastIndexOf('.') + 1);
	var serv = domain.substring(0,domain.indexOf('.'));
	
	if (name.indexOf('(') != -1 || name.indexOf(')') != -1 || name.indexOf('<') != -1 || name.indexOf('>') != -1 || name.indexOf(',') != -1 || name.indexOf(';') != -1 || name.indexOf(':') != -1 || name.indexOf('\\') != -1 || name.indexOf('"') != -1 || name.indexOf('[') != -1 || name.indexOf(']') != -1 || name.indexOf(' ') != -1)
		return false;
	if (domain == 'spam.la' || domain == 'mailinator.com' || domain == 'tempinbox.com' || domain == "" || domain.indexOf('(') != -1 || domain.indexOf(')') != -1 || domain.indexOf('<') != -1 || domain.indexOf('>') != -1 || domain.indexOf(',') != -1 || domain.indexOf('.') == -1 || domain.indexOf(';') != -1 || domain.indexOf(':') != -1 || domain.indexOf('\\') != -1 || domain.indexOf('"') != -1 || domain.indexOf('[') != -1 || domain.indexOf(']') != -1 || domain.indexOf(' ') != -1)
		return false;
	if (serv == "" || serv.length == 1)
		return false;
	
	if (ext == "" || ext.length == 1)
		return false;
	
	return true;
}

//COMPRUEBA SI LA FECHA DE NACIMIENTO PASADA ES MENOR QUE EL PARAMETRO AÑOS
function menorDe(anios, dia, mes, anyo)
{
	var now			= new Date();
	var now_mes		= now.getMonth()+1;
	var now_dia		= now.getDate();


	if (BrowserDetect.browser=="Explorer") var now_anyo = now.getYear();
	else var now_anyo = now.getFullYear();

	if(now_anyo - anyo < anios)
	{
		return true;
	}
	else if (now_anyo - anyo == anios)
	{
		if(now_mes < mes)
		{
			return true;
		}
		else if(now_mes == mes)
		{
			if(now_dia < dia)
			{
				return true;
			}
		}
	}
	return false;
}

//ELIMINA ESPACIOS DEL CP Y OTROS CARACTERES
function formateaCp(cp)
{
	var cpFormateado = "";
	cpFormateado = cp.replace("-", "");
	cpFormateado = cpFormateado.replace("_", "");
	cpFormateado = cpFormateado.replace(",", "");
	cpFormateado = cpFormateado.replace(" ", "");
	cpFormateado = cpFormateado.replace(".", "");
	cpFormateado = cpFormateado.replace("*", "");
	cpFormateado = cpFormateado.toUpperCase();
	return cpFormateado;
}

//VALIDA EL CODIGO POSTAL CON EL CODIGO DE LA PROVINCIA
function cpValido(cp, codigo)
{
	var cod = cp.substring(0, 2);
	if (cod == codigo)
	{return true;}
	else
	{return false;}
}

//VALIDA EL FORMULARIO
function checkFormData()
{
	var todoOk = false;

	if(document.getElementById('nombre').value == '') {
		document.getElementById('nombre').focus();
		alert('Debe especificar el nombre');
		return false;
	}
	if(document.getElementById('primer_apellido').value == '') {
		document.getElementById('primer_apellido').focus();
		alert('Debe especificar el primer apellido');
		return false;
	}

	if(!dniValido(document.getElementById('dni').value)) {
		document.getElementById('dni').focus();
		alert('Debe especificar el DNI correctamente, incluída la letra');
		return false;
	}
	

	if(document.getElementById('dia').selectedIndex < 1) {
		document.getElementById('dia').focus();
		alert('Debe especificar el día de nacimiento');
		return false;
	}
	if(document.getElementById('mes').selectedIndex < 1) {
		document.getElementById('mes').focus();
		alert('Debe especificar el mes de nacimiento');
		return false;
	}
	if(document.getElementById('anio').selectedIndex < 1) {
		document.getElementById('anio').focus();
		alert('Debe especificar el año de nacimiento');
		return false;
	}
	if(menorDe(14, document.getElementById('dia').value,document.getElementById('mes').value,document.getElementById('anio').value)) {
		document.getElementById('permiso').focus();
		alert('Si es menor de 14 años no puede registrarse');
		return false;
	}
	if(menorDe(18, document.getElementById('dia').value,document.getElementById('mes').value,document.getElementById('anio').value)) {
		if(!document.getElementById('permiso').checked) {
			document.getElementById('permiso').focus();
			alert('Debe tener permiso paterno por ser menor de 18 años');
			return false;
		}
	}
	if( !document.getElementById('sexoM').checked && !document.getElementById('sexoH').checked) {
		document.getElementById('sexo').focus();
		alert('Debe especificar el sexo');
		return false;
	}
	if(document.getElementById('via').selectedIndex < 1) {
		document.getElementById('via').focus();
		alert('Debe especificar el tipo de vía');
		return false;
	}
	if(document.getElementById('nombrevia').value == '') {
		document.getElementById('nombrevia').focus();
		alert('Debe especificar el nombre de la vía');
		return false;
	}
	if(document.getElementById('numero').value == '') {
		document.getElementById('numero').focus();
		alert('Debe especificar el número de la vivienda');
		return false;
	}
	if(document.getElementById('poblacion').value == '') {
		document.getElementById('poblacion').focus();
		alert('Debe especificar la población');
		return false;
	}
	if((document.getElementById('provincia').value == '-1') || (document.getElementById('provincia').value == '')){
		document.getElementById('provincia').focus();
		alert('Debe especificar la provincia');
		return false;
	}
	document.getElementById('codpostal').value = formateaCp(document.getElementById('codpostal').value);
	if(document.getElementById('codpostal').value == '') {
		document.getElementById('codpostal').focus();
		alert('Debe especificar el código postal');
		return false;
	}
	if(isNaN(document.getElementById('codpostal').value)){
		
		document.getElementById('codpostal').focus();
		alert('El código postal no es válido');
		return false;
	}

	if(document.getElementById('codpostal').value.length<5) {
		document.getElementById('codpostal').focus();
		alert('El código postal debe tener al menos 5 caracteres');
		return false;
	}
	if((document.getElementById('codpostal').value.substring(2, 3) == "0")&&(document.getElementById('codpostal').value.substring(3, 4) == "0")&&(document.getElementById('codpostal').value.substring(4, 5) == "0")) {
		document.getElementById('codpostal').focus();
		alert('El código postal no es correcto');
		return false;
	}

	if(!cpValido(document.getElementById('codpostal').value, document.getElementById('provincia').value)){
		document.getElementById('codpostal').focus();
		alert('El código postal no se corresponde con la provincia seleccionada');
		return false;
	}

	if((document.getElementById('tlf').value == '')&&(document.getElementById('movil').value == '')) {
		document.getElementById('tlf').focus();
		alert('Debe especificar al menos uno de los teléfonos (fijo o móvil)');
		return false;
	}
	if(isNaN(document.getElementById('tlf').value)){
		document.getElementById('tlf').focus();
		alert('El número de teléfono no es válido');
		return false;
	}

	if(document.getElementById('tlf').value != '')
	if((isNaN(document.getElementById('tlf').value)) || (document.getElementById('tlf').value.length < 9) || (document.getElementById('tlf').value.substring(0, 1) != 9))
	{
		document.getElementById('tlf').focus();
		alert('El número de teléfono no es válido');
		return false;
	}
	
	if(document.getElementById('movil').value != '')
	if((isNaN(document.getElementById('movil').value)) || (document.getElementById('movil').value.length < 9) || (document.getElementById('movil').value.substring(0, 1) != 6))
	{
		document.getElementById('movil').focus();
		alert('El móvil no es válido');
		return false;
	}

	if (document.getElementById('email').value == '')
	{
		document.getElementById('email').focus();
		alert('Debe especificar una dirección de correo electrónico');
		return false;
	}
	else
	{
		if (!emailValido(document.getElementById('email').value))
		{
			document.getElementById('email').focus();
			alert('Debe especificar correctamente la dirección de correo electrónico');
			return false;
		}
	}	

	if(document.getElementById('nper_hogar').value == '-1') {
		document.getElementById('nper_hogar').focus();
		alert('Debe especificar cuantas personas viven en su hogar');
		return false;
	}
	var eH = 0;
	if (document.getElementById('edad_h1').value != "") eH++;
	if (document.getElementById('edad_h2').value != "") eH++;
	if (document.getElementById('edad_h3').value != "") eH++;
	if (document.getElementById('edad_h4').value != "") eH++;
	if (document.getElementById('edad_h5').value != "") eH++;
	if (document.getElementById('edad_h6').value != "") eH++;

	var eM = 0;
	if (document.getElementById('edad_m1').value != "") eM++;
	if (document.getElementById('edad_m2').value != "") eM++;
	if (document.getElementById('edad_m3').value != "") eM++;
	if (document.getElementById('edad_m4').value != "") eM++;
	if (document.getElementById('edad_m5').value != "") eM++;
	if (document.getElementById('edad_m6').value != "") eM++;

	var eTot = eH + eM;

	if (document.getElementById('nper_hogar').value != eTot) {
		document.getElementById('nper_hogar').focus();
		alert('Las edades introducidas no corresponden con el nº de personas en su hogar');
		return false;
	}

	if ((document.getElementById('t_fueraS').checked == false)&&(document.getElementById('t_fueraN').checked == false))
	{
		document.getElementById('nper_hogar').focus();
		alert('Debe especificar si trabaja o no fuera de su hogar');
		return false;
	}


	if(document.getElementById('producto').selectedIndex < 1) {
		document.getElementById('producto').focus();
		alert('Debe especificar el modelo del producto para el que quiere solicitar la extensión de garantía');
		return false;
	}



   	return true;
}

//ENVIO DEL FORMULARIO
function submitForm() {
	if( checkFormData() ) 
	{
		if(!document.getElementById('acepto').checked ) {
			alert('Lo sentimos pero para registrarse es necesario aceptar las condiciones');
			document.getElementById('acepto').focus();
			return false;
		}
		document.getElementById('registro').submit();
	}
	return false;
}


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

BrowserDetect.init();
