
var sMaskSet = 'aAlLn?'
var sUAscii = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
var bStarting = true;


function doKeyDown(e, textbox, sMask) {
  // trap and cancel keys that are not appropriate
  var iKeyCode = 0;    // collect key code
  if (window.event) iKeyCode = window.event.keyCode;
  else if (e) iKeyCode = e.which;
  if (iKeyCode == 32 || iKeyCode == 39 || iKeyCode == 35
  || iKeyCode == 8 || iKeyCode == 9)
    return true;       // space left end backspace tab
  if (iKeyCode < 47)   // non-printable character
    return false;
}

function doKeyPress(e, textbox, sMask) {
  window.status = '';
  var iKeyCode = 0;    // collect key code
  if (window.event) iKeyCode = window.event.keyCode;
  else if (e) iKeyCode = e.which;
  // check if mask already filled, and not backspace
  var iLength = textbox.value.length;
  if ((iLength == sMask.length) && (iKeyCode != 8))
  {
	if (iKeyCode==0)
	  return true
	else return false;
  }
  if (iKeyCode == 8) return true;
  // get mask character for this position in textbox
  var sMaskChar = sMask.charAt(iLength);
  // see if it's a special character
  if (sMaskSet.indexOf(sMaskChar) > -1) {
    // masked character required
    switch (sMaskChar) {
      case 'a':   // any alphanumeric character
        if ((iKeyCode > 47 && iKeyCode < 58)
        || (iKeyCode > 64 && iKeyCode < 91)
        || (iKeyCode > 96 && iKeyCode < 123))
          return true
        else return false;
      case 'A':   // uppercase alphanumeric character
        if ((iKeyCode > 47 && iKeyCode < 58)
        || (iKeyCode > 64 && iKeyCode < 91))
          return true
        else if (iKeyCode > 96 && iKeyCode < 123) {
          textbox.value += sUAscii.charAt(iKeyCode - 97);
          return false;
        }
        else return false;
      case 'l':   // any letter
        if ((iKeyCode > 64 && iKeyCode < 91)
        || (iKeyCode > 96 && iKeyCode < 123))
          return true
        else
          return false;
      case 'L':   // uppercase letter
        if (iKeyCode > 64 && iKeyCode < 91)
          return true
        else if (iKeyCode > 96 && iKeyCode < 123) {
          textbox.value += sUAscii.charAt(iKeyCode - 97);
          return false;
        }
        else return false;
      case 'n':   // any numeric character
        if (iKeyCode > 47 && iKeyCode < 58)
          return true
        else 
			if (iKeyCode==0)
				return true
			else return false;
      case '?':   // any character
        return true;
      default: return false;
    }
  }
  else
    return true;
}

function doKeyUp(e, textbox, sMask) {
  if (bStarting != true) {
     var iKeyCode = 0;    // collect key code
     if (window.event) iKeyCode = window.event.keyCode;
     else if (e) iKeyCode = e.which;
     if (iKeyCode < 47 && iKeyCode != 32) return;
  }
  // check if next mask characters are literals
  // and add to text box if they are
  while ((textbox.value.length < sMask.length) &&
  (sMaskSet.indexOf(sMask.charAt(textbox.value.length)) == -1)) {
    textbox.value += sMask.charAt(textbox.value.length);
  }
  var sNext;
  if (textbox.value.length == sMask.length)
    sNext = 'Complete'
  else
    switch (sMask.charAt(textbox.value.length)) {
     case 'a':
       sNext = 'Expecting any alphanumeric character (0-9, A-Z, a-z)';
       break;
     case 'A':
       sNext = 'Expecting an uppercase alphanumeric character (0-9, A-Z)';
       break;
     case 'l':
       sNext = 'Expecting any letter (A-Z, a-z)';
       break;
     case 'L':
       sNext = 'Expecting an uppercase letter (A-Z)';
       break;
     case 'n':
       sNext = 'Expecting any numeric character (0-9)';
       break;
     case '?':
       sNext = 'Expecting any character';
       break;
     default: sNext = '';
    }
  window.status = sNext;
}

function doFocus(e, textbox, sMask) {
  bStarting = true;
  doKeyUp(e, textbox, sMask);
  bStarting = false;
}

function __doPostBack(eventTarget, eventArgument) {
	var theform;
	if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
		theform = document.forms["frmMain"];
	}
	else {
		theform = document.frmMain;
	}
	theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
	theform.__EVENTARGUMENT.value = eventArgument;
	theform.submit();
}


//====================================================================================================
//Formatar Decimal
//====================================================================================================
function FormatarDecimal(Campo, decimais)//onBlur
{
	var retorno = "";
	var count = 1;
	
	var vr = Campo.value;
	//vr = vr.substr(0, Campo.maxLength);
	
	var vrAntesVirgula = vr.split(",")[0];
	var vrDepoisVirgula = vr.split(",").length > 1 ? vr.split(",")[1] : "";
	
	// ====================================================================================================
	// Antes da vírgula
	// ====================================================================================================
	for(var i = 0; i < vrAntesVirgula.split(".").length; i ++)
		vrAntesVirgula = vrAntesVirgula.replace(".", "");

	vrAntesVirgula = String(Number(vrAntesVirgula));

	for(var i = (vrAntesVirgula.length - 1); i > -1; i--)
	{
		retorno = vrAntesVirgula.charAt(i) + retorno;
		
		if(String(count / 3).indexOf(".") == -1 && ((count / 3) > 0))
			if(count < vrAntesVirgula.length)
				retorno = "." + retorno;
		
		count++;
	}
	
	if(vrAntesVirgula.length == 0)
		retorno = 0;
		
	vrAntesVirgula = retorno;
	if(vrAntesVirgula=='NaN')
		vrAntesVirgula=0;
	
	//alert(vrAntesVirgula);
	// ====================================================================================================
	
	// ====================================================================================================
	// Depois da vírgula
	// ====================================================================================================
	retorno = "";
	for(var i = 0; i < decimais; i++)
	{
		if(vrDepoisVirgula.charAt(i) == "")
			retorno += "0";
		else
			retorno += vrDepoisVirgula.charAt(i);
	}
	vrDepoisVirgula = retorno
	// ====================================================================================================

	Campo.value = vrAntesVirgula + "," + vrDepoisVirgula;
}

//====================================================================================================
// Somente Decimal
//====================================================================================================
function SomenteDecimal(e, obj, decimais)//onKeyDown
{
	//alert(e.keyCode);
	//if(window.event.srcElement.readOnly) return false;
	//if(window.event.srcElement.value.length > window.event.srcElement.maxLength) return false;

	//alert("down: " + String.fromCharCode(window.event.keyCode) + "|" + window.event.keyCode + "|" + window.event.srcElement.name)
	//var keyCode = window.event.keyCode;
	//var oElement = window.event.srcElement;
	var keyCode = e.keyCode;
	var oElement = obj;
	
	// teclas de controle
	if (( keyCode == null) || (keyCode == 0) || (keyCode == 8) || (keyCode == 9) || (keyCode == 13) || (keyCode == 27) || (keyCode > 34 && keyCode < 41) || (keyCode == 45) || (keyCode == 46) || (keyCode == 110) || (keyCode == 188))
	{
		// valida se já foi digitado , (virgula)
		if(keyCode != 110) //é virgula
				//window.event.returnValue = true;
				e.returnValue=true;
		else
			if(oElement.value.indexOf(",") == -1)
				e.returnValue = true;
			else
				e.returnValue = false;
	}
	// validação somente para numéricos
	else if (!e.shiftKey && !e.ctrlKey && !e.altKey)
	{
		if ((keyCode > 47 && keyCode < 58) || (keyCode > 95 && keyCode < 106))
		{
			if (keyCode > 95)
			{
				keyCode -= (95-47);
			}

			e.returnValue = true;
		}
		else
		{
			e.returnValue = false;
		}
	}

	// qualquer outra tecla
	else
	{
		e.returnValue = false;
	}
	if (!e.returnValue)
	{
		alert('Caracter invalido!');
	}
}

