// ---------------------------------------------------------------------
// 		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)
}

// ---------------------------------------------------------------------
// 		Phone
// ---------------------------------------------------------------------
var ereg_phone = /^[9,6]{1}[0-9]{8}/;
function validPhone(value) {
	return ereg_phone.test(value);
}
