function validarFicha(oFormulario){

	estado = 'true'
	// valido los tipos text y textarea

      for (j=0;j<document.forms[oFormulario].elements.length && estado == 'true';j++){
      	// valido los input
      	if (document.forms[oFormulario].elements[j].type=='text' || document.forms[oFormulario].elements[j].type=='password'){
			estado = validaInput(document.forms[oFormulario].elements[j])
	    	}
      	if (document.forms[oFormulario].elements[j].type=='textarea'){
      	 	estado = validaTextArea(document.forms[oFormulario].elements[j])
      	}
      }
      return estado
}

function validaInput(elemento){

	if ((elemento.requerido=='si') && (elemento.value=='')){
	 switch (elemento.tipovalidacion){
	  case "fecha":
	   alert("Debe rellenar la " + elemento.titulo)
	   return 'false'
	  break;
	  default:
	   alert("Debe rellenar el campo " + elemento.titulo )
	   return 'false'
            }
	 }

	if ((elemento.requerido=='si') || (elemento.value!='')){
		switch (elemento.tipovalidacion)
		{
			case "email":
			      email=elemento.value
				if (email.length < 5){
					alert("Por favor, rellene el " + elemento.titulo +" correctamente");
		   			return 'false'
		   		}
		   		// si tiene un blanco o una #
				if ((email.indexOf("#") !=-1) || (email.indexOf(" ")!=-1)){
					alert("Por favor, rellene el " + elemento.titulo +" correctamente");
		   			return 'false'
				}
				//que tenga arroba y punto
		   		if ((email.indexOf("@") ==-1) || (email.indexOf(".") ==-1)){
					alert("Por favor, rellene el " + elemento.titulo +" correctamente");
		   			return 'false'
				}
				break;
			case "euro":
				if (isNaN(Number(elemento.value))){
					alert("El campo '" + elemento.titulo + "' debe ser un número.");
					return 'false'
				}
				elemento.value = Number(elemento.value) * 100
				break;
			case "fecha":
				break;
			case "numerico":
				if (isNaN(Number(elemento.value))){
					alert("El campo '" + elemento.titulo + "' debe ser un número.");
					return 'false'
				}
				break;
			case "entero":
				if (isNaN(Number(elemento.value))){
					alert("El campo '" + elemento.titulo + "' debe ser un número sin decimales.");
					return 'false'
				}
				else{
					if (parseInt(elemento.value,10)!=elemento.value){
						alert("El campo '" + elemento.titulo + "' debe ser un número sin decimales.");
						return 'false'
					}
				}
				break;
			case "dni":
				if ((elemento.value.length < 8) || (elemento.value.indexOf("-",8)==-1)){
					alert("Por favor, introduzca su NIF correctamente. (formato requerido: xxxxxxxx-x)");
					return 'false';
				}else{
				 if(!validarLetraDNI(elemento.value)){
				  alert("Por favor, introduzca la letra de su NIF correctamente");
				  return 'false';
				 }
				}
				break;
			case 	"alfanumerico":
				break;
			case 	"imagen":
				break;
			case 	"adjunto":
				break;
			case 	"documento":
				break;
			case 	"undefined":
				break;
			default:
		      }
	            }
            return 'true'
}

function validaHidden(elemento){
	if ((elemento.requerido=='si')){
		switch (elemento.tipovalidacion){
		case 	"contenido":
	    		if (eval("document.forms[0]."+elemento.name+"_contenido.value")=="")
	    		{
	    			alert("Por favor, rellene el campo" + elemento.titulo + " correctamente");
	    			return 'false'
	    		}
			break;
		}
	}
	return 'true'
}

function validaTextArea(elemento)
{
	if ((elemento.requerido=='si') && (elemento.value==''))
	{
		alert("Por favor, rellene el campo " + elemento.name )
		return 'false'
	}
	if ((elemento.max_car!='') && ((elemento.value).length>elemento.max_car))
	{
		alert("La longitud del campo '" + elemento.titulo + "' no puede sobrepasar los " + elemento.max_car +" caracteres" )
		return 'false'
	}
	return 'true'
}


function validarLetraDNI(dni){
	var letra = dni.substr(dni.length-1,dni.length);
	var valorDNI = dni.substr(0,dni.length-2);
	var resto=(valorDNI % 23);
    	var letra_NIF;

        switch(resto){
            case 0:
                letra_NIF = "T";
		break;
            case 1:
                letra_NIF = "R";
		break;
            case 2:
                letra_NIF = "W";
		break;
            case 3:
                letra_NIF = "A";
		break;
            case 4:
                letra_NIF = "G";
		break;
            case 5:
                letra_NIF = "M";
		break;
            case 6:
                letra_NIF = "Y";
		break;
            case 7:
                letra_NIF = "F";
		break;
            case 8:
                letra_NIF = "P";
		break;
            case 9:
                letra_NIF = "D";
		break;
            case 10:
                letra_NIF = "X";
		break;
            case 11:
                letra_NIF = "B";
		break;
            case 12:
                letra_NIF = "N";
		break;
            case 13:
                letra_NIF = "J";
		break;
            case 14:
                letra_NIF = "Z";
		break;
            case 15:
                letra_NIF = "S";
		break;
            case 16:
                letra_NIF = "Q";
		break;
            case 17:
                letra_NIF = "V";
		break;
            case 18:
                letra_NIF = "H";
		break;
            case 19:
                letra_NIF = "L";
		break;
            case 20:
                letra_NIF = "C";
		break;
            case 21:
                letra_NIF = "K";
		break;
            case 22:
                letra_NIF = "E";
		break;
        }
	if(letra.toUpperCase()!=letra_NIF){
		return false;
	}
	return true;
}


/*Función para validar la fecha*/

function validarFecha(dia, mes, anno){
	
var leap = 0;
var err = 0;
var i;
err = 0;
 
   /* Se comprueba que el año no sea igual a 0000 */
   if (anno == 0) {
      err = 20;
   }
   /* Validación del mes */
   if ((mes < 1) || (mes > 12)) {
      err = 21;
   }
   /* Validación del dia */
   if (dia < 1) {
     err = 22;
   }
   /* Validación de febrero en función de si es año bisiesto */
   if ((anno % 4 == 0) || (anno % 100 == 0) || (anno % 400 == 0)) {
      leap = 1;
   }
   if ((mes == 2) && (leap == 1) && (dia > 29)) {
      err = 23;
   }
   if ((mes == 2) && (leap != 1) && (dia > 28)) {
      err = 24;
   }
   /* Validación de los otros meses */
   if ((dia > 31) && ((mes == "01") || (mes == "03") || (mes == "05") || (mes == "07") || (mes == "08") || (mes == "10") || (mes == "12"))) {
      err = 25;
   }
    if ((dia > 31) && ((mes == "1") || (mes == "3") || (mes == "5") || (mes == "7") || (mes == "8") || (mes == "10") || (mes == "12"))) {
      err = 25;
   }
   if ((dia > 30) && ((mes == "04") || (mes == "06") || (mes == "09") || (mes == "11"))) {
      err = 26;
   }
    if ((dia > 30) && ((mes == "4") || (mes == "6") || (mes == "9") || (mes == "11"))) {
      err = 26;
   }
   if ((dia == 0) && (mes == 0) && (anno == 00)) {
      err = 0; dia = ""; mes = ""; anno = "";
   }
   
   if (err == 0) {
      return true;
   }
   /* Si hay algún error mensaje de alerta */
   else {
      alert("Formato de fecha incorrecto");
      return false;
   }
}
