// validació de correu. 
// Validacions que efectua
// - que existeixi nom d'usuari,domini i extensió
// - que hi hagi l'@ i el . a on toca (nom@domini.extensio)
// - domini minim 2 digits
// - extensió minim 2 digits  
// - que no contingui espais 
// retorna cert si el correu està ben format
function mail_correcte(mail)
{
	var 
		er_ae = /^.+\@.+.+\..+.+$/,
		dada;
	
	if (!er_ae.test(mail)) 
	{
		return false;
	}

	dada = mail;
	
	if (dada.indexOf(' ')!=-1) 
	{
		return false;
	}

	return true;
}
 

// mira si un element està dins d'un array
function in_array(cadena,array_cerca)
{
	var len = array_cerca.length;
	
	for ( var x = 0 ; x <= len ; x++ ) 
	{
		if (  array_cerca[x] == cadena ) 
			return true;
	}
	return false;
}


function imatge_correcte(nom,extensions)
{
	if (nom!= "")	
	{ 
		nom = nom.toLowerCase();
		parts_nom = nom.split(".");
		extensions = String(extensions)
		extensions_array = extensions.split(",");

		// agafem el darrrer element (extensio)
		extensio_fitxer = parts_nom.pop();
	
		
		return in_array(extensio_fitxer,extensions_array);
		
	} 
	else
		return true; 
}



// Validació de luhn (Cal haver  comprovat previament que li passes un número de 16 dígits!!!)
function validacio_luhn(cardNumber)
{
    var sum = 0 ,digit = 0,addend = 0,modulus = 0,parells = 0, j=0;

	for (i = 0; i <16; i++) 
	{
		j++;
    	digit = cardNumber.charAt(i);
		if (parells == 0)
		{
			addend = (digit * 2);
			if (addend > 9) 
			{
				addend -= 9;
			}
		}
		else 
		{ 
			addend = digit * 1;  //Ho he posat perquè a vegades m'el tractava com a string
		}
		sum =	sum + addend;
		if (parells == 0) 
		{
		parells = 1;
		}
		else
		{
		parells = 0;
		}
		
	}

    modulus = sum % 10;
    return modulus == 0;
}

/*
	Comprovem si el numero introduit es un NIF o DNI per a despres cidar a la funcio
	que comprobara si es tracta d'un numero correcte en cada cas
	
	@param: numero		Conte el numero a validar
	
	@return: bol		True si el numero es valid, false si el numero no es valid
*/
function nif_cif_correcte(numero)
{
	var resultat = true;
	// Primer hem de saber si es un NIF o un DNI
	var lletra = numero.substring(0,1);
	
	if(isNaN(lletra))
	{
		// Si es una lletra es tracta d'un CIF
		resultat = cif_correcte(numero);
	}
	else
	{
		// Si es un numero es tracta d'un NIF
		resultat = nif_correcte(numero);
	}
	
	return resultat;
}

// Valida si el NIF indicat es correcte
function nif_correcte(numero)
{	
	var retorna = true;
	
	var dni = numero.substring(0,numero.length-1);
	var lletra = numero.charAt(numero.length-1);
	
	if (!isNaN(lletra))
 	{
 		// Falta la lletra
	  retorna = false;
 	}
	else
 	{
  		var cadena = "TRWAGMYFPDXBNJZSQVHLCKET";
  		var posicion = dni % 23;
  		var lletra_valida = cadena.substring(posicion,posicion+1);
  		
  		if (lletra_valida!=lletra.toUpperCase())
   		{
    		// Nif no valid
		    retorna = false;
   		}
 	}
	
 	return retorna;
}

//	Valida si un cif introduit es correcte
function cif_correcte(cif)
{
	var retorna = true;
	var par = 0;
	var non = 0;
	var lletras="ABCDEFGHKLMNPQS";
	var lletra = cif.charAt(0)
	
	if (!isNaN(lletra))
	{
		// Falta la lletra
	  	retorna = false;
	}
	
	if (cif.length != 9)
	{
	  // El Cif ha de tinde 9 digits
	  retorna = true;
	}
	
	if (lletras.indexOf(lletra.toUpperCase()) == -1)
	{
	  // El comienzo del Cif no es válido
	  retorna = false;
	}
	
	for (var zz=2;zz<8;zz+=2)
	{
	 	par = par + parseInt(cif.charAt(zz));
	}
	
	for (var zz=1;zz<9;zz+=2)
	{
	   	var nn = 2 * parseInt(cif.charAt(zz));
		if (nn > 9) 
			nn = 1+(nn-10);
	  	non = non+nn;
	}
	
	var parcial = par + non;
	
	var control = (10 - ( parcial % 10));
	
	if (control==10) 
		control=0;
	
	if (control != cif.charAt(8))
	{
	  //  El Cif no es valid
	  retorna = false;
	}
	return retorna;
}

/*
	Comprovem mitjançant expresions regulars si la cadena introduida te format URL correcte
*/
function url_correcte(url)
{
	var retorna = false;
	//var expreg = "^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\’\/\\\+&amp;%\$#_]*)?$";
	  var expreg = "^(ht|f)tp(s?)\:\/\/";
	if((url != '')&&(url.match(expreg)))
		retorna = true;
		
	return retorna;
}
