// ---------------------------------------------------------------------
// 		NIF y NIE
// ---------------------------------------------------------------------

 // devuelve la letra correspondiente a un número DNI
 function letraDni(dni) {
   var lockup = 'TRWAGMYFPDXBNJZSQVHLCKE';
   return lockup.charAt(dni % 23);
 }

 /* Primer caracter X, Y o Z (http://bulma.net/impresion.phtml?nIdNoticia=2248)
	X para NIEs asignados antes de julio de 2008 -> Remplazar por 0
	Y para NIEs asignados despues de julio 2008 -> Remplazar por 1
	Agotada la serie numérica de la Y la norma prevé que se utilice la Z -> Remplazar por 2
*/
var ereg_nie = /^[XYZ]{1}/;

//Pre: nif no empty
 function isNIE(nif) { 
 	return ereg_nie.test(nif.substring(0, 1));
 }
  
 function getNumberNif(nif) {
	size = nif.length;
	
	if(!isNIE(nif)){
		return nif.substring(0, size-1);
	}
	
	/* Remplazar la primera letra X, Y, Z por 0, 1, 2 respectivamente */
	first = nif.substring(0,1);
	number = "0";
	if(first == 'Y') number = "1";
	if(first == 'Z') number = "2";
	
	return  number + nif.substring(1, size-1);	
 }
 
function valid_nif_nie(nif) {
	 if(nif.length == 0) return true;
	 
	 nif = nif.toUpperCase(); 
	 number = getNumberNif(nif);
	 
	 if(parseInt(number) == NaN) return false;
	 
	 return (letraDni(number) == nif.substring(size-1, size));
}

// ---------------------------------------------------------------------
// 		ZipCode
// ---------------------------------------------------------------------
var ereg_zipcode = /^[0-9]{5}$/; 
function validZipCode(value) {
	return ereg_zipcode.test(value);
}

function validZipCodeProvince(value, provinceId) {
	if(!validZipCode(value)) return false;
	
	return (value.substring(0,2) == provinceId)
}

// ---------------------------------------------------------------------
// 		Validacion formulario de login
// ---------------------------------------------------------------------
$(document).ready(function(){
	/* Añadir método para validar DNI*/
	$.validator.addMethod("nienif", function(value, element) {
		return valid_nif_nie(value);
	}, $.validator.messages.dni);
	
	/* Añadir regla para validar codigo postal condicionado a la provincia */
	$.validator.addMethod("zipcode", function(value, element) {
		provincia = $('#ProvinciaId').val();		
		if(provincia == undefined || provincia == "") {
			return validZipCode(value);
		}
		return validZipCodeProvince(value, provincia);
	}, $.validator.messages.validzipcode);
	
	$("#frmLogin").validate();	
});