/********************************************************/
/** 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   										*/
/**		Deja escribir solamente caracteres numéricos	*/
/**  	Se llama desde el onKeyPress()					*/
/** S: true or false									*/
/********************************************************/
 
function OnlyNumber(){
	if (event.keyCode != 43){
     	if (event.keyCode < 48 || event.keyCode > 57 ){
			if (event.keyCode != 44){ // && event.keyCode != 45){ //para poder escribir decimales (.) y (,) y (-)
				event.returnValue = false;
			}
     	}
	}
}


/********************************************************/
/** 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;
			  }
}


/********************************************************/
/** 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) {
   	alert("La entrada de e-mail parece ser incorrecta (chequee @ y .'s)")
   	return false
   }
   var user=matchArray[1]
   var domain=matchArray[2]
   
   if (user.match(userPat)==null) {
       alert("El nombre de usuario parace no ser correcto.")
       return false
   }
   
   var IPArray=domain.match(ipDomainPat)
   if (IPArray!=null) {
   	  for (var i=1;i<=4;i++) {
   	    if (IPArray[i]>255) {
   	        alert("Direccion IP no valida!")
   		return false
   	    }
       }
       return true
   }
   
   var domainArray=domain.match(domainPat)
   if (domainArray==null) {
   	alert("El nombre de dominio parace no ser correcto.")
       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) {
      alert("La direccion de correo debe acabar en 3 letras de dominio o 2 de un pais.");
      return false;
   }
   
   if (len<2) {
      var errStr="Esta direccion es desconocida como IP!"
      alert(errStr);
	  return false;
   }

}

function roundDecimal(nro,d) 
{ 
	for (var i=0; i<nro.length; i++){
		nro = nro.replace(",",".");
	}
	
	var vec_entrada = nro.split(".");
	
	if (vec_entrada.length > 1){
	    nro = vec_entrada[0] + "." + vec_entrada[1]; 
	}else{
		nro = vec_entrada[0];
	}
	
	var m = Math.pow(10,d); 
	var nro2 = nro * m; 
	var result = Math.round(nro2) / m;
	var s_result = String(result);
	
	// si ocurre algunu error que no hemos podido controlar, devuelve '0,00'
	if (isNaN(s_result)){ s_result = "0";}
	
	//miramos si tiene signo menos para tratarlo
	var signe = false
	if (s_result.substr(0,1)=="-"){
		signe = true;
		s_result = s_result.substr(1, s_result.length);
	}
	
	// formateamos la salida con los puntos de miles y la coma de decimales
	s_result = formatCurrency(s_result,".")
	
	//le aplicamos el signo negativo si lo llevaba
	if (signe==true) s_result = "-" + s_result;
	
	//si sólo hay 1 decimal, añadimos un zero a la derecha
	var vec_salida = s_result.split(",");
	if (vec_salida[1].length == 1){
		s_result = s_result + "0"
	}
	
	
	return s_result;
} 