function entryOnlyNumbers(e) {
  var key //= (window.event) ? event.keyCode : e.which;
  if (window.event)
    key = event.keyCode
  else
    key = e.which
    
  // Was key that was pressed a numeric character (0-9) or backspace (8)?
  alert(key)
  if (( key > 47 && key < 58 || key == 8 || key == 0 )|| (!(key == 46)))
    return; // if so, do nothing
  else // otherwise, discard character
    if (window.event) //IE
      window.event.returnValue = null;
    else //Firefox
      e.preventDefault();
  
}

function getKeyCode(e){
  var key //= (window.event) ? event.keyCode : e.which;
  if (window.event)
    key = event.keyCode
  else
    key = e.which
    
  return key;
}

function entryOnlyNumber(e, ChrExcp1, ChrExcp2, ChrExcp3){//LISTO
	tecla = getKeyCode(e)
	if (tecla==8 || tecla==37 || tecla==38 || tecla==39 || tecla==40) return true;
	if (tecla==35 || tecla==36) return true;
	if (tecla == 13) return true;
	if ((ChrExcp1) && (tecla == 44)) return true; //Verificar si se puede ingresar comas.
	if ((ChrExcp2) && (tecla == 46)) return true; //Verificar si se puede ingresar puntos.
	if ((ChrExcp3) && (tecla == 58)) return true; //Verificar si se puede ingresar dos puntos.
	if (tecla == 9) return true; //Verificar si se puede ingresar dos puntos.

	patron =/\d/;

	te = String.fromCharCode(tecla);
  if (!patron.test(te)){
		stopEvent(e)
  }
  
  
}

function entryOnlyNumbersForDate(e) {
  var key //= (window.event) ? event.keyCode : e.which;
  if (window.event)
    key = event.keyCode
  else
    key = e.which
    
  // Was key that was pressed a numeric character (0-9) or backspace (8)?
  
  if ( key >= 47 && key < 58 || key == 8 || key == 0 )
    return; // if so, do nothing
  else // otherwise, discard character

    if (window.event) //IE
      window.event.returnValue = null;
    else //Firefox
      e.preventDefault();
}

function entryOnlyNumbersOrLetters(e){
  var key;
  if(window.event){
    key = event.keyCode;
  }else{
    key = e.which;
  }
    
  if(key > 47 && key < 58 || key == 8 || key == 0 || key > 64 && key < 91 || key > 96 && key < 123){
    return;
  }else{
    if(window.event){ //IE
      window.event.returnValue = null;
    }else{  //Firefox
     e.preventDefault();
    } 
  }   
}

function entryNoSpaces(e){
  var key;
  if(window.event){
    key = event.keyCode;
  }else{
    key = e.which;
  }
  
  if(key != 32){
    return;
  }else{
    if(window.event){ //IE
      window.event.returnValue = null;
    }else{  //Firefox
     e.preventDefault();
    } 
  } 
}

function onlyNumbers(sender){
   var rege = new RegExp("[^\\d]","g");
   sender.value = sender.value.replace(rege, "");
  }    
  
function onlyDecimals(sender){
  var rege = new RegExp("[^\\d]","g");
  var data = sender.value.split(".");
  var data1 = data[0];
  var data2 = data[1];
  var separator = data.length > 1 ? "." : ""
  data1 = data1.replace(rege,"");
  data2 = data2 == null ? "" : data2.replace(rege,"");
  var newValue = data1 + separator + data2;
  if(sender.value != newValue){
   sender.value = newValue;
  }
}
function onlyLetters(sender){
  var rege = new RegExp("[^a-zAZ]","g");
  sender.value = sender.value.replace(rege, "");
}
function onlyNumbersOrLetters(sender){
  var rege = new RegExp("[^\\w]","g");
  sender.value = sender.value.replace(rege, "");
}
function setValidatorByControlId(inputid,f,ev){
  var input = document.getElementById(inputid);
  setValidtorByControl(input,f,ev);
}
function truncateToNDecimals(sender,n){
 var rege = new RegExp("(\\d*)(\\.\\d{0," + n + "})?(\\d*)","g");
 var newvalue = sender.value.replace(rege,"$1$2");
 if(newvalue != sender.value){
  sender.value = newvalue;
 }
}
function setValidtorByControl(input,f,ev){
 if(ev == null){
  ev = "keyup";
 }
 var caller = function(){
  f(input);
 }
 var attach = function(el, eType, fn) {
 if(el == null){
  return;
 }
   if (el.addEventListener) {
    el.addEventListener(eType, fn, true);
    return true;
   } 
   else if (el.attachEvent) {
    return el.attachEvent('on' + eType, fn);
   } else {
    el['on' + eType] = fn;
   }
  } 
  attach(input,ev,caller);
}

function noEntryUrlInvalidChar(e){
  var key;
  if (window.event)
    key = event.keyCode
  else
    key = e.which
  
  if(key != 92 && key != 47 && key != 58 && key != 42 && key != 43 && key != 62 && key != 63 && key != 34 && key != 60 && key != 124){
    return;
  }else{
    if (window.event) //IE
      window.event.returnValue = null;
    else //Firefox
      e.preventDefault();  
  }
}  

//**********************************************************************
function isEmailAddress(theElement,event){
var s = theElement.value;
//var filter=/^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[com]$/;
//  var filter=/^[A-Za-z][A-Za-z0-9_.]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-Za-z0-9_]$/;
//var filter=/^[A-Za-z][A-Za-z0-9_.-]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-Za-z0-9_]$/;
var filter=/@/;
if (s.length == 0 ) return true;
  if (filter.test(s)){
  return true;
  }else{
  alert("Please, enter a valid email address in the field: yourname@yourdomain.com.");
  theElement.focus();
  stopEvent(event)
  return false;
  }
}
//**********************************************************************
function completeZeros(mdate){
  var mTemp = mdate.split("/")
  var dl,ml,al,mNewDate
  
  if (mTemp.length!=1) {
    if (mTemp[0].length == 1 ) {
      ml="0" + mTemp[0]
    }else if (mTemp[0].length == 2 ) {
      ml= mTemp[0]
    }
    
    if (mTemp[1].length == 1) {
      dl = "0" + mTemp[1]
    }else if (mTemp[1].length = 2 ){
      dl = mTemp[1]
    }
    
    if (mTemp[2].length == 1 ) {
      al = "0" + mTemp[2]
    }else{
      al = mTemp[2]
    }
    
    mNewDate = ml + "/" + dl + "/" + al
  }else{
    mNewDate = mdate
  }
  
  return mNewDate
  
}
//**********************************************************************
function formatDate(obj){
    
  var date
  date=obj.value
  date = completeZeros(date)
	var tmpValue = date.toString().replace(/\/|\./g,'');
  var tmpDate = "";
    

	if (isNaN(tmpValue)) return false;
	
	if (tmpValue.length < 6) {
	  return false;
	}

	if (tmpValue.length == 6){
		var DateTmp = new Date();
		//getFull
		var sYear = new String(DateTmp.getFullYear());

		tmpDate = tmpValue.substr(0,2) + "/" + tmpValue.substr(2,2) + "/" + tmpValue.substr(4,2) //+ tmpValue.substr(4,2);
	}else{
		var n=0;
		var tmpYear="";
		var tmpMonth="";
		var tmpDay="";

		for (var i = tmpValue.length-1; i>=0; i--){
			if (n < 4) tmpYear = tmpValue.substr(i,1) + tmpYear;
			if ((n > 3) && (n < 6)) tmpDay = tmpValue.substr(i,1) + tmpDay;
			if (n > 5) tmpMonth = tmpValue.substr(i,1) + tmpMonth;
			n+=1;
		}

		tmpDate = (tmpMonth <= 9 ? "0" : "") + Math.abs(tmpMonth) + "/" + (tmpDay <= 9 ? "0" : "") + Math.abs(tmpDay) + "/" + tmpYear;
	}
	
    obj.value = tmpDate;
    
    
}

//********************************************************/
function CountDecimalEnteros(mEnteros,mTxt,event){
  var newNum =""
  var mNum = "" + mTxt.value
  var mInt=""
  var mDec=""
  var mN = mNum.split(".")
  
  if (mN.length == 1){
    if (mNum.length>mEnteros){
    mNum=mNum.substr(0,mEnteros)
    }
    newNum= mNum + "" + ".00"
  }else {
    mInt=""
    if (mN[0].length > mEnteros){
    mInt= mN[0].substr(0,mEnteros)
    }else{
    mInt= mN[0]
    }
    mDec=""
    if (mN[1].length > 2){
      mDec = mN[1].substr(0,2)
      stopEvent(event)
    }else{
      if (mN[1].length == 1){
        mDec = mDec + mN[1] + "0"
      }else{
        mDec = mDec + mN[1]
      }
    }
    
    newNum = mInt + "." + mDec
  }
  mTxt.value = newNum
}
/*******/
function entryDecimal(obj,QtyDecimal){
  var number = obj.value
  if (number.length==0){
    return;
  }
  var elementsNumber = number.split(".")
  if (QtyDecimal==0){
   obj.value = elementsNumber[0];
   return;
  }
  
  if (elementsNumber.length==1){
    obj.value = elementsNumber+"."+CompleteZero("",QtyDecimal);
    return;
  }
  
  if (elementsNumber.length>1){
    obj.value = elementsNumber[0]+"."+CompleteZero(elementsNumber[1],QtyDecimal)
    return;
  }
  
  
}
/*******/
function CompleteZero(strNumber,QtyZero){
  var NewNumber = ""
  if (strNumber.length == 0){
    for (var x=0;x<QtyZero;x++){
    NewNumber = NewNumber + "0"
    }
  }else{
   if (strNumber.length<=QtyZero){
    NewNumber = strNumber
    for (var x=0;x<QtyZero-strNumber.length;x++){
      NewNumber = NewNumber + "0"
    }
   }else{
    NewNumber = strNumber.substring(0,QtyZero)
   }
  }
  return NewNumber
}
/*******/
/*** Functions for dates validation ***/
function IsValidDate(PossibleDate){	
	var PDate = new String(PossibleDate);
	var regex = /(^\d{1,2})\/(\d{1,2})\/(\d{4,4})|(^\d{1,2})\/(\d{1,2})\/(\d{2,2})/;

	if( regex.test(PDate)){
		var month = new String(RegExp.$2);
		var day = new String(RegExp.$1);
		var year = new String(RegExp.$3);
		if( month.length == 0 ){
			month = new String(RegExp.$4);
			day = new String(RegExp.$5);
			year = new String(RegExp.$6);
		}
		var today = new Date();
		var thisYear = new String(today.getFullYear());
		if( year.length == 2 ){
			if( year > 50 ){year = String(Number(thisYear.substring(0,2))-1) + year;}
			else{year = thisYear.substring(0,2) + year;}
		}
		if( month < 1 || month > 12 ) return false;
		if( day < 1 || day > 31 ) return false;
		if ((month==4 || month==6 || month==9 || month==11) && day>30) return false;

		if (month == 2) // check for february 29th
		{
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap)) return false;
		}
		if((Number(year) < Number(thisYear) - 250) || (Number(year) > Number(thisYear) + 250)) return false;

		return PossibleDate;
	}

	return false;
}
function format_Date(date){


	var tmpValue = date.toString().replace(/\/|\./g,'');
    var tmpDate = "";

	if (isNaN(tmpValue)) return false;
	if (tmpValue.length < 6) return false;

	if (tmpValue.length == 6){
		var DateTmp = new Date();
		var sYear = new String(DateTmp.getFullYear());

		tmpDate = tmpValue.substr(0,2) + "/" + tmpValue.substr(2,2) + "/" + sYear.substr(0,2) + tmpValue.substr(4,2);
	}else{
		var n=0;
		var tmpYear="";
		var tmpMonth="";
		var tmpDay="";

		for (var i = tmpValue.length-1; i>=0; i--){
			if (n < 4) tmpYear = tmpValue.substr(i,1) + tmpYear;
			if ((n > 3) && (n < 6)) tmpDay = tmpValue.substr(i,1) + tmpDay;
			if (n > 5) tmpMonth = tmpValue.substr(i,1) + tmpMonth;
			n+=1;
		}

		tmpDate = (tmpMonth <= 9 ? "0" : "") + Math.abs(tmpMonth) + "/" + (tmpDay <= 9 ? "0" : "") + Math.abs(tmpDay) + "/" + tmpYear;
	}

	return IsValidDate(tmpDate);
}
function elementDateOnBlur(e){

    var ErrorInProgress = false;
    var ObjectError = false;
    var vMark = 0; vError = false;

	vError = false;
	if (vMark==1) return false;
	if (e.keyCode == 13) vMark = 1;
	
	var typExplorer = detectBrowser();
	var element = null
	if (typExplorer=="IE"){
		element = event.srcElement;
	}else{
		element = e.target;
	}
	
	var tmpValue = element.value;

	if (ErrorInProgress && element.id != ObjectError.id) {
	   ErrorInProgress = false
	   return true;
	}

	ErrorInProgress = false;

    if (Trim(tmpValue) == ""){
		element.value = "";
		return true;
    }

	var valid = format_Date(tmpValue);

	if (valid == false){
		    ErrorInProgress = true;
		    ObjectError = element;
		    alert("El valor que has ingresado no es valido para este campo. Este campo solo acepta fechas validas (01/01/2009).");
		if (e.keyCode == 13) vError = true;
		    element.value = "";
		    window.setTimeout(function(){element.focus();}, 1)
		    return false;
	}else{
		element.value = valid;
		return true;
	}
}
/***         End         ***/
function Trim(cadena)
{
	for(i=0; i<cadena.length; )
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}

	for(i=cadena.length-1; i>=0; i=cadena.length-1)
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
  return cadena	
}
/**********************/


