//onsubmit="return validar('document.agenda','Nom','Nom','','Lloc','Lloc','','DataInici','Data inici','di','DataFi','Data fi','df','Filtros','f')"

function validar(){
    var color2='#FFFFE1'
    var color='#f9f8f2'
	var args=validar.arguments;
	var numargs=args.length;
	var envia,missatge,tipus
	var incorrecte=''
	
	for (i=1; i<(numargs-1); i+=3)
	{
		if (numargs==3)
		{
			obj=args[0];
			envia=false;
			missatge=args[1]
			tipus=args[2]
		}
		else 
		{
			obj=eval(args[0] + '.' + args[i])
			envia=true;
			missatge='"' + args[i+1] + '"'			
			tipus=args[i+2]
		}
        // obligatori
        if ((tipus=='') || (tipus=='no') || (tipus=='mo')){
				if (obj.value=="")
				{
					if (!incorrecte){obj.focus()};
					incorrecte+=missatge + ' es obligatorio\n'
					obj.style.backgroundColor=color2
					//obj.focus()
				}
				else
				{		
					obj.style.backgroundColor=color
					if (tipus=='no'){tipus='n'};
					if (tipus=='mo'){tipus='m'};
				}
		}

		// mail
        if ((tipus=='m')  && (obj.value!='')){
		obj.value = obj.value.toLowerCase();
		var caracters = "0123456789abcdefghijklmnopqrstuvwxyz._-@";
		var caractersInvalids='';
		for (x=0;x<obj.value.length;x++)
		{
			if (caracters.indexOf(obj.value.charAt(x))==-1)
			{
			caractersInvalids = caractersInvalids + ' ' + obj.value.charAt(x)
			}
		}
		mail=obj.value
		arrob=mail.indexOf('@')
		punt=mail.indexOf('.',arrob+2)
		ultim=mail.length-1		
			if ((arrob==-1) || (punt==-1) || (arrob==0) || (punt==ultim) || (caractersInvalids))
			{
				if (caractersInvalids)
				{
					caractersInvalids = '. Carácteres no válidos:' + caractersInvalids;
				}
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' no es una dirección de E-Mail correcta'+caractersInvalids+'\n'
				obj.style.backgroundColor=color2						
			}
			else
			{		
				obj.style.backgroundColor=color
			}
		}

		
		// filtros
        if (tipus=='f')
		{
			mail=obj.value
			arrob=mail.indexOf('@')
			total=mail.length	
			if ((arrob==-1) || (total<4))
			{
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' Debe tener un mínimo de 3 carácteres y @ \n'
				obj.style.backgroundColor=color2						
			}
			else
			{	
				obj.style.backgroundColor=color
			}
		}

		// número 
        if(tipus=='num'){
			if ((obj.value!=Number(obj.value)) && (obj.value!=''))
			{
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' tiene que ser un número\n'
				obj.style.backgroundColor=color2				
			}
			else
			{		
				obj.style.backgroundColor=color
			}
		}

		// número telefono
        if(tipus=='n'){
			if ((obj.value!=Number(obj.value)) && (obj.value!='')  || (obj.value<100000000))
			{
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' tiene que ser un número de 9 dígitos\n'
				obj.style.backgroundColor=color2				
			}
			else
			{		
				obj.style.backgroundColor=color
			}
		}

		// número tarjeta
        if(tipus=='nt'){
			if ((obj.value!=Number(obj.value)) && (obj.value!='')  || (obj.value<1000000000000000))
			{
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' tiene que ser un número de 16 dígitos\n'
				obj.style.backgroundColor=color2				
			}
			else
			{		
				obj.style.backgroundColor=color
			}
		}

		// número validacion de tarjeta
        if(tipus=='nv'){
			if ((obj.value!=Number(obj.value)) && (obj.value!='')  || (obj.value.length<3))
			{
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' tiene que ser un número de 3 digitos\n'
				obj.style.backgroundColor=color2				
			}
			else
			{		
				obj.style.backgroundColor=color
			}
		}

		// cp
		if (tipus=='cp')
		{

			if ((obj.value!=Number(obj.value)) && (obj.value!='') || (obj.value.length<5))
			{			
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' tiene que ser número de 5 dígitos\n'
				obj.style.backgroundColor=color2				
			}
			else
			{		
				obj.style.backgroundColor=color
			}
		}

		// llargada maxima 
        if(tipus>1){
			if (obj.value.length > tipus)
			{
				if (!incorrecte){obj.focus()};
				incorrecte+= missatge + ' contiene ' + obj.value.length + ' carácteres, no puede ser más largo de ' + tipus + ' \n'
				obj.style.backgroundColor=color2				
			}
			else
			{		
				obj.style.backgroundColor=color
			}
		}

		// validar contraseñas
		if (tipus=='pw')
		{ 
				var obj2=eval(args[0]);
				clave1 = obj2.password.value 
				clave2 = obj2.re_password.value 

				if ((clave1 != clave2) || (clave1 == '')) 
				   		incorrecte+= missatge + ' Las contraseñas tienen que ser iguales\n'
						obj.style.backgroundColor=color2	
		} 

		// data
		if (tipus=='di')
		{
			var obj2=eval(args[0]);
			var Any=obj2.ano.value;
			var Mes=obj2.mes.options[obj2.mes.selectedIndex].value;
			var Dia=obj2.dia.options[obj2.dia.selectedIndex].value;
			if (Dia!=0)
			{
				if ((Any == "") || (Any!=Number(Any)))
				{
					incorrecte+= missatge + " Falta poner el año o no es numerico \n"
				}
				else
				{
					if ((Any<1850) || (Any>2150))
					{
						incorrecte+= missatge + " El año es incorrecto \n"
					}
				}
			    if ((Mes==2) && (Dia>28))
				{
					if (((Any/4)==parseInt(Any/4)) && (Dia<30))
					{
					}
					else
					{
						incorrecte+= missatge + ' La fecha no es correcta \n'
					}
				}
				if ((Mes==4) || (Mes==6) || (Mes==9) || (Mes==11))
				{
					if (Dia>30)
					{
						incorrecte+= missatge + ' La fecha no es correcta \n'
					}
				}

				// Validar que el Nen te menys de 6 anys per rebre el regal
				var today = new Date();
				var Day   = today.getDate();
				var Month = today.getMonth();
				var Year  = today.getYear();
				if((Any==Year-6) && (Month>=Mes))
				  {
					if (Month==Mes)
					{
						if (Day>=Dia)
						{
							incorrecte+= missatge + "El regalo de cumpleaños es para niños menores de 6 años\n"
						}						
					}
					else
					{
						incorrecte+= missatge + " El regalo de cumpleaños es para niños menores de 6 años\n"
					}					
				  }
			}
		}
		
		if (tipus=='fe')
		{
			var obj2=eval(args[0]);
			var Any=obj2.ano.value;
			Any="20"+Any;
			var Mes=obj2.mes.options[obj2.mes.selectedIndex].value;
			var Dia=obj2.dia.options[obj2.dia.selectedIndex].value;
			if (Dia!=0)
			{
				if ((Any == "") || (Any!=Number(Any)))
				{
					incorrecte+= missatge + " Falta poner el año o no es numerico \n"
				}
				else
				{
					if ((Any<999) || (Any>9999))
					{
						incorrecte+= missatge + " El año es incorrecto \n"
					}
				}
			    if ((Mes==2) && (Dia>28))
				{
					if (((Any/4)==parseInt(Any/4)) && (Dia<30))
					{
					}
					else
					{
						incorrecte+= missatge + ' La fecha no es correcta \n'
					}
				}
				if ((Mes==4) || (Mes==6) || (Mes==9) || (Mes==11))
				{
					if (Dia>30)
					{
						incorrecte+= missatge + ' La fecha no es correcta \n'
					}
				}
			}
		}
// NIF	
		
		// opcio -> contiene el valor:	 1 para NIF 	2 para NIE
		//opcio = document.form.nif_nie.options[document.form.nif_nie.selectedIndex].value;

		if ((tipus == 'nif'))
		{
			var NIF=obj.value;
			var temp = Validar_NIF(NIF);

			if (temp >= 1 || temp <= 5)
			{ obj.style.backgroundColor=color2 }
			else
			{ obj.style.backgroundColor=color }
			switch (temp)
			{
			    case 1:
					incorrecte+= missatge + " es incorrecto, escriba 8 Dígitos y la Letra.\n"
					break; 
			    case 2:
					incorrecte+= missatge + " es un campo obligatorio\n"
					break; 
			    case 3:
			        incorrecte+= missatge + " su formato no es correcto.\n"
					break; 
			    case 4:		
			        incorrecte+= missatge + " la letra no es correcta\n"
					break; 					
			    case 5:		
			        incorrecte+= missatge + " es incorrecto, vuelva a teclearlo.\n"
					break; 										
			}
			
		}

// valor del select 
        if(tipus.indexOf('VAL')!=1){
			if (('VAL' + obj.value)==tipus)
			{
				if (!incorrecte){obj.focus()};
				incorrecte+='Debe seleccionar ' + missatge + ' \n'
				//obj.style.backgroundColor=color2				
			}
			else
			{		
				//obj.style.backgroundColor=color
			}
		}

// fi validacio
	}
	if (incorrecte){
	    incorrecte= '\nNo ha rellenado el formulario correctamente:\n\n' + incorrecte
		alert (incorrecte)
	}
	if (envia){
		return (incorrecte=='')
	}
}

// FUNCIÓN para validar el NIF
function Validar_NIF(nNif)
{

  var checkOK = "0123456789-,.";
  var checkStr = nNif;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  var num = 0;
  var lletra = "";	  
  var LetraResult = "";
  var i = 0;
  var j = 0;
  
  if (nNif.length < 9)
  {
    //alert("Escriba 8 Dígitos y la Letra.");
    return 1;
   
  }

  if (nNif == "")
  {
    //alert("Nif es un campo obligatorio");
    return 2;
  }  
  
  for (i = 0;  i < checkStr.length - 1;  i++)
  {
    ch = checkStr.charAt(i);
	num += ch;
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch == ",")
    {
      allNum += ".";
      decPoints++;
    }
    else if (ch != ".")
      allNum += ch;
  }
  
  
  if (!allValid)
  {
	//alert("El formato del NIF no es correcto.");
    return 3;
	
  }
  else
  {
	  lletra = checkStr.charAt(8);
	  LetraResult = FCalcular_NIF(num);
	  if (LetraResult != lletra.toUpperCase())
	  {
	    //alert("La letra no es correcta");
	    return 4;
	  }  
  }

  if (decPoints > 1)
  {
   // alert("Escriba un número válido en el campo NIF.");
    return 5;
  }
  
 // theForm.nif.style.backgroundColor=color;
  return (true);
}

function FCalcular_NIF(FNumero) {
        var cadena = "TRWAGMYFPDXBNJZSQVHLCKE";
		var letra = "";
		
        letra =cadena.substring(FNumero % 23,FNumero % 23+1);
		return letra;
}