function validate(idioma)
	{
	if (idioma=="cat") {missatge="Ha d'omplir tots els camps."}
	if (idioma=="cas") {missatge="Tiene que rellenar todos los campos."}
	if (idioma=="eng") {missatge="All the fields are required."}

	if (document.comanda.contacte_nom.value=="")
		{alert(missatge); document.comanda.contacte_nom.focus(); return false;}
	
	//Val·lidem num de telèfon fixe:
	if (!ValidarNumTel(document.comanda.contacte_tel_fixe.value))
		{
		if (idioma=="cat") {missatge="El telèfon és incorrecte."}
		if (idioma=="cas") {missatge="El teléfono es incorrecto."}
		if (idioma=="eng") {missatge="Invalid phone number."}
		alert(missatge); document.comanda.contacte_tel_fixe.focus(); return false;
		}
		
	//Val·lidem num de telèfon mòbil:
	if (!ValidarNumTel(document.comanda.contacte_tel_mobil.value))
		{
		if (idioma=="cat") {missatge="El telèfon és incorrecte."}
		if (idioma=="cas") {missatge="El teléfono es incorrecto."}
		if (idioma=="eng") {missatge="Invalid phone number."}
		alert(missatge); document.comanda.contacte_tel_mobil.focus(); return false;
		}
	
	//Val·lidem la direcció de correu electrònic:
	if (!ValidarDireccioemail(document.comanda.contacte_email.value))
		{
		if (idioma=="cat") {missatge="La direcció d'email és incorrecta."}
		if (idioma=="cas") {missatge="La dirección de email es incorrecta."}
		if (idioma=="eng") {missatge="Invalid email address."}
		alert(missatge); document.comanda.contacte_email.focus(); return false;
		}
	
	//Mirem que el nom de facturació no estigui buit:
	if (document.comanda.factura_nom.value=="")
		{alert(missatge); document.comanda.factura_nom.focus(); return false;}
	
	if (document.comanda.factura_cif.value=="")
		{
		if (idioma=="cat") {missatge="Ha d'introduir un NIF vàl·lid si vol processar la comanda."}
		if (idioma=="cas") {missatge="Tiene que introducir un NIF válido si quiere procesar el pedido."}
		if (idioma=="eng") {missatge="Invalid NIF."}
		alert(missatge); document.comanda.factura_cif.focus(); return false;
		}
		
	switch (validaNif(document.comanda.factura_cif.value))
		{
		//case 0: if (idioma=="cat") {missatge="El NIF introduit és correcte."}
		//				if (idioma=="cas") {missatge="El NIF introducido es correcto."}
		//				if (idioma=="eng") {missatge="Valid NIF."}
		//				alert(missatge); document.comanda.factura_cif.focus(); return false;
		case 1: if (idioma=="cat") {missatge="El caràcter de control del NIF introduit és incorrecte."}
						if (idioma=="cas") {missatge="El carácter de control del NIF introducido es incorrecto."}
						if (idioma=="eng") {missatge="Invalid NIF."}
						alert(missatge); document.comanda.factura_cif.focus(); return false;
		case 2: if (idioma=="cat") {missatge="Codi de província no vàl·lid, repassi els caràcters 2 i 3."}
						if (idioma=="cas") {missatge="Código de provincia no válido, repase los carácteres 2 y 3."}
						if (idioma=="eng") {missatge="Invalid NIF."}
						alert(missatge); document.comanda.factura_cif.focus(); return false;
		case 3: if (idioma=="cat") {missatge="Ha d'introduir un NIF vàl·lid si vol processar la comanda."}
						if (idioma=="cas") {missatge="Tiene que introducir un NIF válido si quiere procesar el pedido."}
						if (idioma=="eng") {missatge="Invalid NIF."}
						alert(missatge); document.comanda.factura_cif.focus(); return false;
		case 4: if (idioma=="cat") {missatge="El caràcter de control del CIF introduit és incorrecte."}
						if (idioma=="cas") {missatge="El carácter de control del CIF introducido es incorrecto."}
						if (idioma=="eng") {missatge="Invalid CIF."}
						alert(missatge); document.comanda.factura_cif.focus(); return false;
		case 5: if (idioma=="cat") {missatge="El primer caràcter del NIF introduit és incorrecte."}
						if (idioma=="cas") {missatge="El primer carácter del NIF introducido es incorrecto."}
						if (idioma=="eng") {missatge="The first char of NIF is invalid."}
						alert(missatge); document.comanda.factura_cif.focus(); return false;
		case 6: if (idioma=="cat") {missatge="El codi de país del CIF introduit és incorrecte."}
						if (idioma=="cas") {missatge="El código de pais del CIF introducido es incorrecto."}
						if (idioma=="eng") {missatge="Invalid CIF."}
						alert(missatge); document.comanda.factura_cif.focus(); return false;
		}
		
	
	if (document.comanda.factura_address.value=="")
		{alert(missatge); document.comanda.factura_address.focus(); return false;}
	if (document.comanda.factura_poblacio.value=="")
		{alert(missatge); document.comanda.factura_poblacio.focus(); return false;}	
	
	//Val·lidem el codi postal de la direcció de facturació:
	//Mirem que hagin introduit 5 caràcters i que siguin tots numèrics:
	if (!esDigit(document.comanda.factura_cp.value) || (document.comanda.factura_cp.value.length!=5))
		{
		if (idioma=="cat") {missatge="El codi postal de la direcció de facturació ha d'estar format per 5 dígits."}
		if (idioma=="cas") {missatge="El código postal de la dirección de facturación tiene que estar formado por 5 dígitos."}
		if (idioma=="eng") {missatge="The zip code of the billing address should be of 5 characters."}
		alert(missatge); document.comanda.factura_cp.focus(); return false;
		}
	//Mirem que el codi postal es correspongui amb la província seleccionada:
	if (!validaCP_Provincia(document.comanda.factura_cp.value))
		{
		if (idioma=="cat") {missatge="El codi postal de la direcció de facturació no es correspon amb la província de la direcció de facturació."}
		if (idioma=="cas") {missatge="El código postal de la dirección de facturación no se corresponde con la provincia de la dirección de facturación."}
		if (idioma=="eng") {missatge="The zip code of the billing address is not matching the appropriate code of the province of the billing address."}
		alert(missatge); document.comanda.factura_cp.focus(); return false;
		}
	
	if (document.comanda.enviar_nom.value=="")
		{alert(missatge); document.comanda.enviar_nom.focus(); return false;}	
	if (document.comanda.enviar_address.value=="")
		{alert(missatge); document.comanda.enviar_address.focus(); return false;}
	if (document.comanda.enviar_poblacio.value=="")
		{alert(missatge); document.comanda.enviar_poblacio.focus(); return false;}	
	
	//Val·lidem el codi postal de la direcció d'enviament:
	//Mirem que hagin introduit 5 caràcters i que siguin tots numèrics:
	if (!esDigit(document.comanda.enviar_cp.value) || (document.comanda.enviar_cp.value.length!=5))
		{
		if (idioma=="cat") {missatge="El codi postal de la direcció d'enviament ha d'estar format per 5 dígits."}
		if (idioma=="cas") {missatge="El código postal de la dirección de envio tiene que estar formado por 5 dígitos."}
		if (idioma=="eng") {missatge="The zip code of the shipping adresss should be of 5 characters."}
		alert(missatge); document.comanda.factura_cp.focus(); return false;
		}
	//Mirem que el codi postal es correspongui amb la província seleccionada:
	if (!validaCP_Provincia(document.comanda.enviar_cp.value))
		{
		if (idioma=="cat") {missatge="El codi postal de la direcció d'enviament no es correspon amb la província de la direcció d'enviament."}
		if (idioma=="cas") {missatge="El código postal de la dirección d'enviament no se corresponde con la provincia de la dirección de envio."}
		if (idioma=="eng") {missatge="The zip code of the shipping address is not matching the appropriate code of the province of the shipping address."}
		alert(missatge); document.comanda.factura_cp.focus(); return false;
		}
	return true;
	}

function validaNif(cadenaNif)
{
	//Hi ha NIF/CIF amb menys de 9 dígits, en aquests casos afegim 0 al principi:
	while (cadenaNif.length<9) cadenaNif = "0" + cadenaNif;	
	//Convertim l'últim caràcter a majúscules:
	caracterControl=cadenaNif.substring(8,9).toUpperCase();
	
	//Anem a veure si es tracta d'un NIF, CIF... Inicialment posem tipus="desconegut"
	primerCaracter=cadenaNif.substring(0,1).toUpperCase();
	var tipus="desconegut";	
	
	//Si el primer caràcter es troba dins la cadena valorsNif, serà un NIF:
	for (i=0;i<valorsNif.length;i++)
		{if (valorsNif[i]==primerCaracter) tipus="NIF";}
	
	if (tipus=="desconegut")
		{
		for (i=0;i<valorsCif.length;i++)
			{if (valorsCif[i]==primerCaracter) tipus="CIF";}
		}
	
	//Si no hem identificat el tipus com a NIF o CIF vol dir que el NIF/CIF és incorrecte --> sortim i tornem un 5
	if (tipus=="desconegut") return (5);		//El primer caràcter no és vàl·lid.
	if (tipus=="NIF")
		{	
		if (!esDigit(numero)) return 3;   //La part numèrica del NIF no és vàl·lida
		caracterControlCalculat=controlNif [((parseFloat(numero)%23))];
		//L'algoritme diu que a la resta li hem de sumar 1, però això ja ho fem directament quan indexem l'array ja que els índexs comencen en 0				
		if (caracterControl!= caracterControlCalculat) return 1; //El caràcter de control és incorrecte
		}
	return 0; //Està tot bé, el NIF introduit és vàl·lid
}

function mateixa_direccio()
	{
	if (document.comanda.same_address.checked)
		{
		//Si els posem a disabled llavors el request.form() ens dóna buit:
		//document.comanda.enviar_address.disabled=true;
		//document.comanda.enviar_poblacio.disabled=true;
		//document.comanda.enviar_cp.disabled=true;
		//document.comanda.enviar_prov.disabled=true;
		}
		else
		{
		//document.comanda.enviar_address.disabled=false;
		//document.comanda.enviar_poblacio.disabled=false;
		//document.comanda.enviar_cp.disabled=false;
		//document.comanda.enviar_prov.disabled=false;
		}
	}
				
function validaCP_Provincia(f)
{
	if (document.comanda.factura_cp.value.substring(0,2)!=provinciaSeleccionada)
	{return false;}
	return true;
}

function ValidarNumTel(num_tel)
{
	if (num_tel.length!='9')
		{return false;}
	if (!esDigit(num_tel))
		{return false;}
	return true;
}

function ValidarDireccioemail(email) {
    //Si no hi troba res tornem un false:
    if (!valid) 
		{return false;}
		
    valid = true;
		
    //Mirem que hi hagi alguna cosa entre l'arroba i el punt:
		tros = email.substring(1+pos_arroba, pos_ultim_punt);
    //Si no hi troba res tornem un false:
		if (!valid)
		{return false;}
		
		valid = true;
		
		//Mirem que hi hagi 2 o 3 caràcters entre l'últim punt i l'últim caràcter del email:
    tros = email.substring(1+pos_ultim_punt, email.length);    
    if ((tros.length >= 2)&&(tros.length <= 3)) {
        for(i=0;i<tros.length;i++) {
            if (caracters.indexOf(tros.charAt(i)) == -1)
						{valid = false; break;}
        }    
        if (!valid) {
            return false;
        }
    } else {
        return false;
    }
    return true;
}    

function esDigit(cadenaEntrada)
{
for (i=0;i<cadenaEntrada.length;i++)
	{
	}
	return (true);

}

function esTexto(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}

function esLetra(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}	

function esTextoMinusculas(cadenaEntrada) {
    var caracteres = "abcdefghijklmnopqrstuvwxyz0123456789";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}	

function esTextoCompleto(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ -.,?!¿¡;:()ºª$[]{}áÁéÉíÍóÓúÚñÑçÇ";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}	

function esCadenaValida(cadenaEntrada) {
	var caracteresMal = "\'\%\"\^\*\\";
	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteresMal.indexOf(c)!=-1) {
			return false;
		}
	}
	return (true);
}

function y2k(numero) {
    return (numero < 1000) ? numero + 1900 : numero;
}

function validarFecha(dia, mes, anyo) {
    var hoy = new Date();

    anyo = ((!anyo) ? y2k(hoy.getYear()) : anyo);
    mes = ((!mes) ? hoy.getMonth():mes-1);
    if (!dia) return false;
    var test = new Date(anyo, mes, dia);
    if ((y2k(test.getYear()) == anyo) && (mes == test.getMonth()) && (dia == test.getDate()))
    return true;
    else
    return false;
}
