function Chequear(campo,tipo,dato,min,max){
    var errors="";
	
     // Checking input. If "min" and/or "max" is defined the input has to be within the specific range
	if(tipo == "num" || tipo == "string"){
	    var datol=dato.value;
	    if(dato.value.length>0){
			if(tipo== "num" && isNaN(dato.value)){
	            errors+="El valor digitado en "+campo+" no es numerico\n";
//			} else if (min &&  !max && (dato.value.length < min || dato.value.length > max)){
//	            errors+="Error de longitud para "+ campo +"\n";
	        } else if (dato.value.length < min){
	            errors+="Error Longitud Minima "+min+" para "+ campo +"\n";
			} else if (dato.value.length > max){
	            errors+="Error Longitud Maxima "+max+" para "+ campo +" \n";
			} else if (!min && !max && dato.value.length <= 0){
	            errors+="Error Longitud para "+ campo +"\n";
			}
	    }
	} else if(tipo == "email"){
	    if(dato.length!=0){
  			// Checking existense of "@" and ".". The length of the input must be at least 5 characters. The "." must neither be preceding the "@" nor follow it.
			if((dato.value.indexOf("@") == -1) || (dato.value.charAt(0) == ".") || (dato.value.charAt(0) == "@")  || (dato.value.indexOf(".") == -1) || (dato.value.charAt(dato.value.indexOf("@")+1) == ".") || (dato.value.charAt(dato.value.indexOf("@")-1) == ".")){
                errors+="Direccion de e-mail Inválida\n";
            }
            else{
                var Vemail=dato.value;
                var emailPat=/^(.+)@(.+)$/;
			    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
			    var validChars="\[^\\s" + specialChars + "\]";
			    var quotedUser="(\"[^\"]*\")";
			    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
			    var atom=validChars + '+';
			    var word="(" + atom + "|" + quotedUser + ")";
			    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
			    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
			    var matchArray=Vemail.match(emailPat);
			    if (matchArray==null) {
				    errors+="La dirección de e-mail no es valida (revise @ y .'s)";
    			}
    			else{
    			    var user=matchArray[1];
			        var domain=matchArray[2];
			        if (user.match(userPat)==null) {
			            errors+="El nombre de usuario de correo no es valido. ";
			        }
			        else{
			            var IPArray=domain.match(ipDomainPat);
			            if (IPArray!=null) {
	  			            for (var i=1;i<=4;i++) {
				                if (IPArray[i]>255) {
	        			            errors+="La dirección IP no es valida para "+ campo +"!. ";
	    			            }
			                }
		                }
			            var domainArray=domain.match(domainPat)
			            if (domainArray==null) {
				            errors+="El nombre del dominio no es valido para "+ campo +".";
            			}
            			var atomPat=new RegExp(atom,"g")
            			var domArr=domain.match(atomPat)
            			var len=domArr.length
            			if (domArr[domArr.length-1].length<2 ||
                			domArr[domArr.length-1].length>3) {
            			    errors+="La dirección de internet del dominio de servidor de correo debe tener tres letras (Por ejemplo: .com, .net, .edu), o dos letras del pais para "+ campo +". ";
            			}
            			if (len<2) {
                  			errors+="La dirección no contiene el nombre de dominio para "+ campo +"!. ";
            			}
			        }
    			}
            }	
        }
	}else if(tipo == "date"){
		if(dato.length!=0){
	      //script configuration - Please set the wanted time range
	      var year_range_begin = '1930';
	      var year_range_end = '2040';
	
	      //  contains the given date-string
	      var Date;
	
	      //  contains the length of the given date-string
	      var date_length;
	
	      //  contains the number of days of the month
	      var month_length;
	
	      //  These contain the day,month and year of the given date string after
	      //  format correction
	      var Day,Month,Year;
	
	      //  number of points in date-string
	      var point_count = 0;
	
	      //  positions of points in date-string
	      var point_positions = new Array;
	
	      //  the new formated date is filled in here
	      var correct_date_temp = new Array;
	
	      //  start position of the year in the date-string
	      var year_start_pos = 0;
	
	      Date = dato.value;
	      date_length = Date.length;
	
	      if(Date != ""){
	        for(var str_pos = 0;str_pos < date_length; str_pos++){
	          if(Date.charAt(str_pos)<"0" || Date.charAt(str_pos)>"9"){
	            if(Date.charAt(str_pos,1)=='/'){
	              point_count++;
	              if(point_count <= 2){
	                point_positions[point_positions.length] = str_pos;
	              }
	            }
	            else{
	              errors='El valor ' + dato.value + ' No es una fecha valida. Asegurese que usa el formato dd/mm/aaaa.';
	            }
	          }
	        }
	        if(point_count!=2){
	          errors='El valor ' + dato.value + ' No es una fecha valida. Asegurese que usa el formato dd/mm/aaaa.';
	        }
	        //case 1 day-length = 1
	        if(point_positions[0] == 1){
	          correct_date_temp[correct_date_temp.length] = "0";
	          correct_date_temp[correct_date_temp.length] = Date.substr(0,1);
	          correct_date_temp[correct_date_temp.length] = "/";
	          //month-length = 1
	          if(point_positions[1] == 3){
	            correct_date_temp[correct_date_temp.length] = "0";
	            correct_date_temp[correct_date_temp.length] = Date.substr(2,1);
	            correct_date_temp[correct_date_temp.length] = "/";
	            year_start_pos = 4;
	          }
	          //month-length = 2
	          else if(point_positions[1] == 4){
	            correct_date_temp[correct_date_temp.length] = Date.substr(2,2);
	            correct_date_temp[correct_date_temp.length] = "/";
	            year_start_pos = 5;
	          }
	          //point at wrong position
	          else{
	            errors='El valor ' + dato.value + ' No es una fecha valida. Asegurese que usa el formato dd/mm/aaaa.';
	          }
	        }
	        //case 2 day-length = 2
	        else if(point_positions[0] == 2){
	          correct_date_temp[correct_date_temp.length] = Date.substr(0,2);
	          correct_date_temp[correct_date_temp.length] = "/";
	          //month-length = 1
	          if(point_positions[1] == 4){
	            correct_date_temp[correct_date_temp.length] = "0";
	            correct_date_temp[correct_date_temp.length] = Date.substr(3,1);
	            correct_date_temp[correct_date_temp.length] = "/";
	            year_start_pos = 5;
	          }
	          //month-length = 2
	          else if(point_positions[1] == 5){
	            correct_date_temp[correct_date_temp.length] = Date.substr(3,2);
	            correct_date_temp[correct_date_temp.length] = "/";
	            year_start_pos = 6;
	          }
	          //point at wrong position
	          else{
	            errors='El valor ' + dato.value + ' No es una fecha valida. Asegurese que usa el formato dd/mm/aaaa.';
	          }
	        }
	        //year-length = 1
	        if(date_length - year_start_pos == 1){
	          correct_date_temp[correct_date_temp.length] = "200";
	          correct_date_temp[correct_date_temp.length] = Date.substr(year_start_pos,1);
	        }
	        //year-length = 2
	        else if(date_length - year_start_pos == 2){
	          if(Date.substr(year_start_pos,2)<=30){
	            correct_date_temp[correct_date_temp.length] = "20";
	            correct_date_temp[correct_date_temp.length] = Date.substr(year_start_pos,2);
	          }
	          else{
	            correct_date_temp[correct_date_temp.length] = "19";
	            correct_date_temp[correct_date_temp.length] = Date.substr(year_start_pos,2);
	          }
	        }
	        //year-length must be 4
	        else if(date_length - year_start_pos == 4){
	          correct_date_temp[correct_date_temp.length] = Date.substr(year_start_pos,4);
	        }
	        else{
	          errors='El valor ' + dato.value + ' No es una fecha valida. Asegurese que usa el formato dd/mm/aaaa.';
	        }
	        Date = correct_date_temp.join("");
	        dato.value = Date;
	
	        if (Date.length==10 && Date.substring(2,3)=="/" && Date.substring(5,6)=="/"){
	          Day = parseInt(Date.substr(0,2),10);
	          Month = parseInt(Date.substr(3,2),10);
	          Year = parseInt(Date.substr(6,4),10);
	        }
	        else{
	          errors='El valor ' + dato.value + ' No es una fecha valida. Asegurese que usa el formato dd/mm/aaaa.';
	        }
	        if (Month==4 || Month==6 || Month==9 || Month==11){
	          month_length=30;
	        }
	        else if (Month==1 || Month==3 || Month==5 || Month==7 || Month==8 || Month==10 || Month==12){
	          month_length=31;
	        }
	        else if(Month==2 && Year%4==0 && Year%100!=0 || Year%400==0){
	          month_length=29;
	        }
	        else if(Month==2 && Year%4!=0 || Year%100==0 && Year%400!=0){
	          month_length=28;
	        }
	        if (Day>=1 && Day<=month_length && Month>=1 && Month<=12 && Year>=year_range_begin && Year<=year_range_end){
	          errors='';
	        }
	        else{
	          errors='El valor ' + dato.value + ' No es una fecha valida. Asegurese que usa el formato dd/mm/aaaa.';
	        }
	      }
		}
	}
	if(errors){
	    alert('Se encontraron los siguientes errores :\n'+errors);
	    dato.focus();
	    return false;
	}
	else{
	    return true;
  	}
}
  

