function limitar_textarea(field, maxlimit) {
  if (field.value.length > maxlimit) // if too long...trim it!
      {field.value = field.value.substring(0, maxlimit);
	  alert('Máximo de caracteres permitidos.');}
}


function checkrequired(formulario) {
  //if (document.images) {
     for (i=0;i<formulario.length;i++) {
         var tempobj=formulario.elements[i]; 
         var valor = tempobj.value;		
         var tipo = tempobj.id.substring(0,3); 
         var nombre_campo = tempobj.id.substring(4,30).toUpperCase(); 
         if (tempobj.id.length > 0) {  
            if (((tempobj.type=="text")||(tempobj.type=="textarea")||(tempobj.type=="password")||(tempobj.type=="file"))&&(valor.length==0)&&(nombre_campo.length >0)){
               alert("Por favor introduzca "+nombre_campo+".");	 
	           //tempobj.style.background = "#CCCCCC";  //permitir cambiar el color de fondo del campo
               tempobj.focus();
			   return false;
            }  
			if ((tipo.length > 0)&&(valor.length > 0)) {
 		       switch (tipo){
		          case "num": 
		               if (isNaN(valor)) {
				          alert("El campo: "+nombre_campo+" debe ser numérico"); 
                          tempobj.select();
			              return false;						  						  
				       }
                       break;					
		          case "dts": 
			           if (!validar_fecha(tempobj.name, formulario)) {
                          tempobj.select();
			              return false;						  
				       }
                       break;
			      case "@@@": 
			           var inicio = valor.indexOf("@"); 
					   var fin = valor.lastIndexOf("@"); 
                       if ((inicio != fin) || ((inicio == -1) && (fin == -1)) || ((inicio == 0) && (fin == 0))|| ((inicio == valor.length-1) && (fin == valor.length-1))){
					      alert("El valor del campo: "+nombre_campo+" no contiene un formato válido de correo electrónico.");
                          tempobj.select();
			              return false;						  
                       }
			           break; 
				  case "hhh": 
                       var horas=valor.split(":")[0];
                       var minutos=valor.split(":")[1];
                       var segundos=valor.split(":")[2];
                       if (valor.indexOf("/")==-1) {
                          alert("La hora indicada no tiene el formato correcto: hh:mm o hh:mm:ss");
                          tempobj.select();						  
                     	  return false;
                       }					   
					   if ((horas > "23")||(horas < "0")) {
					      alert("La parte horaria de la hora es incorrecta.\nLas parte horaria va desde 0 a 23.");
                          tempobj.select();
                          return false;						  
					   }
					   if ((minutos > "59")||(minutos < "0")) {
					      alert("Los minutos de la hora son incorrectos.");
                          tempobj.select();
                          return false;						  
					   }
					   if ((segundos > "59")||(segundos < "0")) {
					      alert("La segundos de la hora son incorrectos.");
                          tempobj.select();
                          return false;						  
					   }
				       break;
		          case "txt": break;
		          case "bit": break; 
		          case "ids": break; 
		       } 
            }  
         } 
	 } 
  //} //fin document.images
  return true;  
} 

var a, mes, dia, anyo, febrero;
function anyoBisiesto(anyo){
  if (anyo < 100) var fin = anyo + 1900;
  else var fin = anyo ;
  if (fin % 4 != 0) return false;
  else {
     if (fin % 100 == 0) {
         if (fin % 400 == 0) return true;
         else return false;
     }
     else return true;
  }
}
    
function validar_fecha(nm_campo_, formulario_) {
  var a = eval("formulario_."+nm_campo_+".value");
  
  if (a.indexOf("/")==-1) {
     alert("La fecha indicada no tiene el formato correcto: dd/mm/aaaa");
	 return false;
  }
  
  dia = parseInt(a.split("/")[0],10);
  mes = parseInt(a.split("/")[1],10);
  anyo = parseInt(a.split("/")[2],10);
  if(anyoBisiesto(anyo)) febrero=29;
  else febrero=28;

  if (isNaN(mes) || (mes<1) || (mes>12)) {
     alert("El mes introducido no es valido. Por favor, introduzca un mes correcto");
     return false;       
  }
  if ((isNaN(mes) || (mes==2)) && (isNaN(dia) || (dia<1) || (dia>febrero))) {
     alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
     return false;       
  }

  if ((isNaN(mes) || (mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && (isNaN(dia) || (dia<1) || (dia>31))) {
     alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
     return false;       
  }

  if ((isNaN(mes) || (mes==4) || (mes==6) || (mes==9) || (mes==11)) && (isNaN(dia) || (dia<1) || (dia>30))) {
     alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
     return false;       
  }
  if (isNaN(anyo) || (anyo<1900) || (anyo>3000)) {
     alert("El año introducido no es valido.");
     return false;       	 
  } 
  return true; 
}    
