
//Validacion de campo Input (string)

function InputIsEmpty(valField,mensaje,idioma) {
  if (valField.value=='') {
	   switch(idioma) {
        case 'CA': alert('Has d´introduir un valor correcte a '+mensaje); break;
        default: alert('Debes introducir un valor correcto en '+mensaje); break;
     }
		 return true;
	}
	return false;
}


//Validacion de campo Radio

function RadioIsEmpty(valField,mensaje,idioma) {
  for (var i=0; i<valField.length; i++){
    if (valField[i].checked){
			return false;
    }
  }
  switch(idioma) {
     case 'EN': alert('You must choose an option in '+mensaje); break;
     case 'CA': alert('Has d´especificar alguna opció a '+mensaje); break;
     default: alert('Debes especificar alguna opción en '+mensaje); break;
  }
  return true;
}


//Validacion de campo Select

function SelectIsEmpty(valField,mensaje,idioma) {
	if (valField.selectedIndex == 0) {
     switch(idioma) {
        case 'CA': alert('Has d´especificar alguna opció a '+mensaje); break;
        default: alert('Debes especificar alguna opción en '+mensaje); break;
     }
	   return true;
	}
	return false;
}


//Validacion de campo numérico

function IsNumber(valField,mensaje,oblig,idioma){
	 var campo_str = valField.value;
	 var l=campo_str.length;
	 if (oblig==0 && l==0 ) { return true; }
	 if (oblig==1 && l==0 ) { 
      switch(idioma) {
         case 'CA': alert('És necessari introduir un valor a '+mensaje+'\nI aquest ha de ser numèric'); break;
         default: alert('Es necesario introducir un valor en '+mensaje+'\nY este debe ser numérico'); break;
      }
			return false;
	 }
   if (campo_str!='') {
      campo_num = Number(campo_str);
      if (isNaN(campo_num)) {
         switch(idioma) {
            case 'CA': alert('Has d´introduir un valor numèric a '+mensaje); break;
            default: alert('Debes introducir un valor numérico en '+mensaje); break;
        }
        return false;
      }
   }
   return true;

}

//Validacion de e-mail
function IsEmail(valField,mensaje,oblig,idioma) {

	var email = valField.value;
	var longitud = email.length;
	if (oblig==0 && longitud==0 ) { return true; }
	if (oblig==1 && longitud==0 ) { 
	   switch(idioma) {
        case 'CA': alert('És necessari introduir un valor a '+mensaje+'\nI el e-mail ha de ser vàlid'); break;
        default: alert('Es necesario introducir un valor en '+mensaje+'\nY el e-mail debe ser válido'); break;
     }
	   return false;
	}

	if (!RetEsEmail(email)) {
	   switch(idioma) {
        case 'CA': alert('Has d´introduir un e-mail vàlid a '+mensaje); break;
        default: alert('Debes introducir un e-mail válido en '+mensaje); break;
     }
		 return false;
	}

  return true;

}

function RetEsEmail(email) {
  // @ entremedio: mínimo 1 char antes y 4 (e.g. @a.fr) después.
  // . después de la @, con almenos 2 chars entre ellos
  // . entre 4 (e.g. .firm) y 2 (e.g. .es) chars. antes del final

  var a= email.indexOf('@'), p=email.lastIndexOf('.'), l=email.length;
  if (a<1 || a>l-5 || a>p-2 || p<l-5 || p>l-3) return false;

  // nombre de dominio: solo a-z,0-9,- y .
  // además los especiales (. y -) no deben estar al principio
  // o al final ni debe haber dos especiales seguidos:

  var especial=true;
  for (var i=a+1; i<l; i++) {
    var c= email.charAt(i).toLowerCase();
        if ((c>='0' && c<='9') || (c>='a' && c<='z')) especial=false;
        else if (c=='-' || c=='.') {
          if (especial) return false;
          especial= true;
        }
        else return false;
  }
  
  if (especial) return false;

  return true;
}


//Validacion de campo fecha

function IsDate(quecampo1,quecampo2,quecampo3,mensa,oblig,idioma){

	var dia = quecampo1.value
	var mes = quecampo2.value
	var any = quecampo3.value
	var ldia = dia.length;
	var lmes = mes.length;
	var lany = any.length;

	if (oblig==0 && ldia==0 && lmes==0 && lany==0) { return true; }
	if (oblig==1 && ldia==0 && lmes==0 && lany==0) {
	   switch(idioma) {
        case 'EN': alert('It is necessary to insert a correct value in '+mensa+'\nAnd the date must be correct'); break;
        case 'CA': alert('És necessari introduir un valor a '+mensa+'\nI la data ha de ser correcta'); break;
        default: alert('Es necesario introducir un valor en '+mensa+'\nY la fecha debe ser correcta'); break;
     }
		 return false;
	}

	var datacorrecte = false;
	
	if ((ldia != 0) && (lmes != 0) && (lany != 0)) {

   		if ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12 ) && (dia<=31)) {
			  datacorrecte=true;
    	} else {
	 		  if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && (dia<=30)) {
				  datacorrecte=true;
 	    	} else {
				  if (( any % 4 == 0 && any % 100 != 0 ) || any % 400 == 0 ) {
					  tope = 29;
				  } else {
					  tope = 28;
				  }
				  if (dia<=tope) {
					  datacorrecte=true;
				  }	else {
					  datacorrecte=false;
				  }
        }
		  }	
		  if (mes>12) {datacorrecte=false;}

	//} else {

	  //datacorrecte=false;

  }

	if (datacorrecte) {
		return true;
	} else {
	   switch(idioma) {
        case 'EN': alert('You must insert a correct date in '+mensa); break;
        case 'CA': alert('Has d´introduir una data correcta a '+mensa); break;
        default: alert('Debes introducir una fecha correcta en '+mensa); break;
    }
		return false;
	}

}

// Validación para saber si un campo esta lleno un determinado numero de posiciones

function IsFull(quecampo,mensa,oblig,minlong,idioma) {
	 var campo_str = quecampo.value;
	 var l=campo_str.length;
	 if (oblig==0 && l==0 ) { return true; }
	 if (oblig==1 && l==0 ) {
	    switch(idioma) {
         case 'CA': alert('És necessari introduir un valor a '+mensa+'\nI ha de tenir una longitud mínima de '+minlong+' posiciones'); break;
         default: alert('Es necesario introducir un valor en '+mensa+'\nY debe tener una longitud mínima de '+minlong+' posiciones'); break;
      }
			return false;
	 }
	 if (l < minlong) {
	    switch(idioma) {
         case 'CA': alert('Has d´introduir un valor de longitud mínima de '+minlong+ ' posicions a '+mensa); break;
         default: alert('Debes introducir un valor de longitud mínima de '+minlong+ ' posiciones en '+mensa); break;
      }
			return false;
	 }
   return true;
}
