/********************************************************/
/** CHECK_DATE   										*/
/**		Valida un campo fecha							*/
/**  	Se llama desde el onBlur()	    				*/
/**	E: field     										*/
/** S: true or false									*/
/********************************************************/
function check_Date(field){
	var checkstr = "0123456789";
	var DateField = field;
	var Datevalue = "";
	var DateTemp = "";
	var seperator = "/";
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	var i;
	   err = 0;
	   DateValue = DateField.value;
	   /* Delete all chars except 0..9 */
	   for (i = 0; i < DateValue.length; i++) {
		  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
			 DateTemp = DateTemp + DateValue.substr(i,1);
		  }
	   }
	   DateValue = DateTemp;
	   /* Always change date to 8 digits - string*/
	   /* if year is entered as 2-digit / always assume 20xx */
	   if (DateValue.length == 6) {
		  DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
	   if (DateValue.length != 8) {
		  err = 19;}
	   /* year is wrong if year = 0000 */
	   year = DateValue.substr(4,4);
	   if (year == 0) {
		  err = 20;
	   }
	   /* Validation of month*/
	   month = DateValue.substr(2,2);
	   if ((month < 1) || (month > 12)) {
		  err = 21;
	   }
	   /* Validation of day*/
	   day = DateValue.substr(0,2);
	   if (day < 1) {
		 err = 22;
	   }
	   /* Validation leap-year / february / day */
	   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
		  leap = 1;
	   }
	   if ((month == 2) && (leap == 1) && (day > 29)) {
		  err = 23;
	   }
	   if ((month == 2) && (leap != 1) && (day > 28)) {
		  err = 24;
	   }
	   /* Validation of other months */
	   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
		  err = 25;
	   }
	   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
		  err = 26;
	   }
	   /* if 00 ist entered, no error, deleting the entry */
	   if ((day == 0) && (month == 0) && (year == 00)) {
		  err = 0; day = ""; month = ""; year = ""; seperator = "";
	   }
	   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
	   if (err == 0) {
		  DateField.value = day + seperator + month + seperator + year;
	   }
	   /* Error-message if err != 0 */
	   else {
		  alert("La fecha no es correcta");
		  DateField.select();
		  DateField.focus();
	   }
}	



/********************************************************/
/** MAXLONGFIELD										*/
/**		Permite un maximo de caracteres en un textfield */
/**  	Se llama desde el onChange()					*/
/**	E: field, max										*/
/** S: true or false									*/
/********************************************************/


function MaxLongField(field, max){
	var num = "" + field.value;
	var llarg = num.length;
	if (llarg <= max){
	   return true;
	}else{
	   alert("el maximo de caracteres establecidos para este campo es de " + max);
	   field.value = field.value.substring(0, max);
	}
}


/********************************************************/
/** ONLYNUMBER   	(Con decimales)									*/
/**		Deja escribir solamente caracteres numéricos	*/
/**  	Se llama desde el onKeyPress()					*/
/** S: true or false									*/
/********************************************************/
 
function OnlyNumber(){
	alert("hi");
	if (event.keyCode != 43){
     	if (event.keyCode < 48 || event.keyCode > 57 ){
			if (event.keyCode != 46 && event.keyCode != 44 && event.keyCode != 45){ //para poder escribir decimales (.) y (,) y (-)
				event.returnValue = false;
			}
     	}
	}
}

/********************************************************/
/** soloNumerico   (Sin decimales)						*/
/**		Deja escribir solamente caracteres numéricos	*/
/**  	Se llama desde el onKeyPress()					*/
/** S: true or false									*/
/********************************************************/

function soloNumerico () {
    if (event.keyCode != 43){
     	if (event.keyCode < 48 || event.keyCode > 57 ){
				event.returnValue = false;
     	}
	}
}




/********************************************************/
/** ONLYHOUR     										*/
/**		Deja escribir solamente formato hora			*/
/**  	Se llama desde el onKeyPress()					*/
/** S: true or false									*/
/********************************************************/
 
function OnlyHour(){
	if (event.keyCode != 43){
     	if (event.keyCode < 48 || event.keyCode > 57 ){
			if (event.keyCode != 58){ //para poder escribir (:)
				event.returnValue = false;
			}
     	}
	}
}


/********************************************************/
/** CHECK_HOUR   										*/
/**		Valida un campo hora							*/
/**  	Se llama desde el onBlur()	    				*/
/**	E: field     										*/
/** S: true or false									*/
/********************************************************/


function check_Hour(field){
	var hora=field.value
	if (hora=='') {return}
	if (hora.length>5) {alert("Introdujo una cadena mayor a 8 caracteres");field.focus();field.select();return}
	if (hora.length!=5) {alert("Introducir en formato HH:MM");field.focus();field.select();return}
	var a=hora.charAt(0) //<=2
	var b=hora.charAt(1) //<4
	var c=hora.charAt(2) //:
	var d=hora.charAt(3) //<=5
	if ((a==2 && b>3) || (a>2)) {alert("El valor que introdujo en la Hora no corresponde, introduzca un digito entre 00 y 23");field.focus();field.select();return}
	if (d>5) {alert("El valor que introdujo en los minutos no corresponde, introduzca un digito entre 00 y 59");field.focus();field.select();return}
	if (c!=':') {alert("Introduzca el caracter ':' para separar la hora de los minutos");field.focus();field.select();return}

}	


/********************************************************/
/** NOQUOTATIONMARKS									*/
/**		Deja escribir solamente caracteres numéricos	*/
/**  	Se llama desde el onKeyPress()					*/
/** S: true or false									*/
/********************************************************/
 
function NoQuotationMarks(){
	if (event.keyCode == 39){
		//event.returnValue = false;
		event.keyCode = 180
	}
}


/********************************************************/
/** DELBLANC											*/
/**		Elimina espacios en blanco   					*/
/**	E: obj, p_str										*/
/********************************************************/

function DelBlanc(obj, p_str){
			  for(var i=0; i<p_str.length; i++){
			  		  p_str = p_str.replace(" ","");
			  		  obj.value = p_str;
			  }
}



/********************************************************/
/** VALLIDDATE											*/
/**		valida un campo de fecha					    */
/**	E: formField, fieldLabel							*/
/** S: true or false									*/
/********************************************************/

function validDate(formField,fieldLabel){
    var result = true;
    if (result){
          var elems = formField.value.split("/");
          result = (elems.length == 3); 		 	// Una fecha contiene tres cifras
          if (result){
               var day = parseInt(elems[0],10);
               var month = parseInt(elems[1]);
               var year = parseInt(elems[2],10);
               result = !isNaN(month) && (month > 0) && (month < 13) &&
                    !isNaN(day) && (day > 0) && (day < 32) &&
                    !isNaN(year) && (elems[2].length == 4);
          }
          if (!result){
                	 alert('Por favor introduzca una fecha en formato MM/DD/YYYY en el campo "' + fieldLabel +'".');
                	 formField.focus();    
          }
    } 
    return result;
}



/********************************************************/
/** EMAILCHECK											*/
/**		Valida un campo de email						*/
/**	E: elem												*/
/** S: true or false									*/
/********************************************************/


function emailCheck (elem) {
   
   var emailStr=elem.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=emailStr.match(emailPat)
   if (matchArray==null) {
   	return false
   }
   var user=matchArray[1]
   var domain=matchArray[2]
   
   if (user.match(userPat)==null) {
       return false
   }
   
   var IPArray=domain.match(ipDomainPat)
   if (IPArray!=null) {
   	  for (var i=1;i<=4;i++) {
   	    if (IPArray[i]>255) {
   		return false
   	    }
       }
       return true
   }
   
   var domainArray=domain.match(domainPat)
   if (domainArray==null) {
       return false;
   }
   
   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) {
      return false;
   }
   
   if (len<2) {
      var errStr="Aquesta direcció es desconeguda com IP!"
   	  return false;
   }

}

	function permite(elEvento, permitidos) {
  // Variables que definen los caracteres permitidos
  var numeros = "0123456789,";
  var caracteres = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
  var numeros_caracteres = numeros + caracteres;
  var teclas_especiales = [8, 37, 39, 46];
  // 8 = BackSpace, 46 = Supr, 37 = flecha izquierda, 39 = flecha derecha
 
 
  // Seleccionar los caracteres a partir del parámetro de la función
  switch(permitidos) {
    case 'num':
      permitidos = numeros;
      break;
    case 'car':
      permitidos = caracteres;
      break;
    case 'num_car':
      permitidos = numeros_caracteres;
      break;
  }
 
  // Obtener la tecla pulsada 
  var evento = elEvento || window.event;
  var codigoCaracter = evento.charCode || evento.keyCode;
  var caracter = String.fromCharCode(codigoCaracter);
 
  // Comprobar si la tecla pulsada es alguna de las teclas especiales
  // (teclas de borrado y flechas horizontales)
  var tecla_especial = false;
  for(var i in teclas_especiales) {
    if(codigoCaracter == teclas_especiales[i]) {
      tecla_especial = true;
      break;
    }
  }
 
  // Comprobar si la tecla pulsada se encuentra en los caracteres permitidos
  // o si es una tecla especial
  return permitidos.indexOf(caracter) != -1 || tecla_especial;
}
	
                                             






