/* *
*	validacions.js
*	Validacions de tipus de dades.
*	Utilitza la llibreria validatejs.js i la validateTypes.js
*	@author Susana
* 	@since 9-1-2009 
*/

//http://www.mcanam.com/articulos/JavaScript.php?id=16
//Copyright © McAnam.com
function validateCIF(texto)
{
    var pares = 0;
    var impares = 0;
    var suma;
    var ultima;
    var unumero;
    var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
    var xxx;
    
    texto = texto.toUpperCase();
    
    var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
     if (!regular.exec(texto)) return false;
         
     ultima = texto.substr(8,1);

     for (var cont = 1 ; cont < 7 ; cont ++){
         xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
         impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
         pares += parseInt(texto.substr(cont,1));
     }
     xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
     impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
     
     suma = (pares + impares).toString();
     unumero = parseInt(suma.substr(suma.length - 1, 1));
     unumero = (10 - unumero).toString();
     if(unumero == 10) unumero = 0;
     
     if ((ultima == unumero) || (ultima == uletra[unumero]))
         return true;
     else
         return false;

} 

//http://www.jaterli.com/codigo-fuente/Javascript-1/330.html
function validateNIF(nif)
{
	var letras = new Array();
	letras[0]  = "T";
	letras[1]  = "R";
	letras[2]  = "W";
	letras[3]  = "A";
	letras[4]  = "G";
	letras[5]  = "M";
	letras[6]  = "Y";
	letras[7]  = "F";
	letras[8]  = "P";
	letras[9]  = "D";
	letras[10] = "X";
	letras[11] = "B";
	letras[12] = "N";
	letras[13] = "J";
	letras[14] = "Z";
	letras[15] = "S";
	letras[16] = "Q";
	letras[17] = "V";
	letras[18] = "H";
	letras[19] = "L";
	letras[20] = "C";
	letras[21] = "K";
	letras[22] = "E";
	
	//dado un NIF te devuelve si es o no correcto
	var txtError = "";			//texto que se mostraría en caso de error
	var ok = true;				//variable booleana que controla si hay algún error
	var dni=nif.substring(0,nif.length-1);	//del NIF nos quedamos con el DNI
	dni=parseInt(dni);					//al convertirlo a entero, le quitamos los ceros de la izquierda
	var letra=nif.charAt(nif.length-1);		//la letra que nos han pasado
	letra = letra.toUpperCase();	//Ademet la lletra en minúscula i en majuscula
	var letraCorrecta = letras[ dni % 23];	//la letra que debería ser para ese DNI

	if (dni > 99999999){ 
		//txtError += "El DNI tiene a lo sumo 8 cifras\n";
		ok = false;
	} else if(letra < "A" || letra > "Z"){
		//txtError += "El último carácter del NIF debe ser una letra mayúscula"
		ok = false;
	} else if(letra!=letraCorrecta) {
		//txtError += "La letra del NIF es incorrecta";
		ok = false;
	}
	
	if (ok) {
		return true;
	}else{
		//alert(txtError);
		return false;
	}
}

//Funció per actualitzar el número de compte corrent segons les imatges seleccionades. Susana (13-1-2009)
function uptateCC(num,colName)
{
	var id= document.getElementById('act'+colName).value;
	if (id)
	{
		var valor = document.getElementById(id).value;
		var id_cc = id.split("_");
		var cc = id_cc[id_cc.length-1];
	
		switch(cc)
		{
			case "0":
				var long=4;
				break;
			case "1":
				var long=4;
				break;
			case "2":
				var long=2;
				break;
			case "3":
				var long=10;
				break;	
		}
		var first = document.getElementById('first'+colName).value;
		if (first == 1) 
		{
			document.getElementById(id).value = num;
		}
		else if (valor.length < long)
		{
			document.getElementById(id).value = valor+num;			
		}
		document.getElementById('first'+colName).value = 0;
	}
}

function deleteCC(colName)
{
	for (var i=0; i<4;i++)
	{
		document.getElementById('cc_'+colName+'_'+i).value = "";
	}
}

//Funció que valida una adreça de correu
function validateEmail(email)
{
	var f = new Validate();
	
	if(f.isEMailAddr(email))
	{
		return true;
	}
	else
	{
		return false;
	}
}

//Format hh:mm
function validateHora(hora)
{
	if (hora.length != 5)
		return false;
	
	a=hora.charAt(0); //<=2
	b=hora.charAt(1); //<4
	c=hora.charAt(2); //:
	d=hora.charAt(3); //<=5
	e=hora.charAt(4); //Numeric 
	
	numRegExp = /^[0-9]+$/;
	if (!numRegExp.test(a) || !numRegExp.test(b) || !numRegExp.test(d) || !numRegExp.test(e))
		return false;
		
	if ((a==2 && b>3) || (a>2)) 
		return false;
	if (d>5)
		return false;
	if (c!=':') 
		return false;
	
	return true;
}
