// Tipos Suportados: 
//      A = Alfa maiúsculo
//      a = Alfa minúsculo
//  0...9 = Somente até o número informado: 
//          Ex: Se informado "25" a primeira casa permitirá 
//              no máximo até o número 2 e a segunda casa
//              permitirá no máximo até o número 5.
//      X = Permite qualquer caracter, maiúsculo ou minúsculo.
//
//    Qualquer outro caracter informado será considerado como 
// separador.
//    Ex: 99/99/9999 - As barras serão consideradas caracteres
//                     de separação.
//
//==============================================================

this.attachEvent("onload", InitMascara)

function InitMascara()
{
var intIndice=0
var objCampos = document.getElementsByTagName("input")
	for (intIndice=0;intIndice<objCampos.length;intIndice++){
		if (objCampos(intIndice).type.toUpperCase() == "TEXT"){
			if (typeof(objCampos(intIndice).Mascara) != "undefined"){
				objCampos(intIndice).attachEvent("onkeypress", fMascara)
			}
		}
	}
}

function fMascara()
{
	return Mascarar(event.srcElement)
}

function Mascarar(pobjCampo)
{
var Mascara = pobjCampo.Mascara
var Tecla = event.keyCode
var Caracter = String.fromCharCode(Tecla)
var MascaraAtual = Mascara.charAt(pobjCampo.value.length)
var bolSeparador = false
var strRetorno = ""
var ProxMascara = Mascara.charAt(pobjCampo.value.length + 1)
var TamanhoMax = Mascara.length
var arrMascara
var bolInformouTamanho = false

	if (Tecla == 8){
		strRetorno = pobjCampo.value.substr(0, pobjCampo.value.length - 1)
	}
	else{
	
		if (Mascara.substr(0, 2) == "@A" || Mascara.substr(0, 2) == "@a"){
			if (Mascara.indexOf(":") >= 0){
				bolInformouTamanho = true
				arrMascara = Mascara.split(":")
				TamanhoMax = parseInt(arrMascara[1])
			}
			if (Mascara.substr(0, 2) == "@A"){
				if (event.keyCode >= 97 && event.keyCode <= 122){
					strRetorno = event.keyCode - 32
				}
				else if ((event.keyCode >= 65 && event.keyCode <= 90) || event.keyCode == 32){
					strRetorno = event.keyCode
				}
				else{
					strRetorno = 0
				}
				event.keyCode = strRetorno
				if (pobjCampo.value.length > TamanhoMax - 1 && bolInformouTamanho){
					return false
				}
				return true
			}
			else if (Mascara.substr(0, 2) == "@a"){
				if (event.keyCode >= 65 && event.keyCode <= 90){
					strRetorno = event.keyCode + 32
				}
				else if ((event.keyCode >= 97 && event.keyCode <= 122) || event.keyCode == 32){
					strRetorno = event.keyCode
				}
				event.keyCode = strRetorno
				if (pobjCampo.value.length > TamanhoMax - 1 && bolInformouTamanho){
					return false
				}
				return true
			}
		}
		
		if (pobjCampo.value.length > TamanhoMax - 1){
			return false
		}

		if ((MascaraAtual != 'X' && (isNaN(MascaraAtual)) && MascaraAtual != "a" && MascaraAtual != "A") || MascaraAtual == " "){
			bolSeparador = true
		}
	
		if (!isNaN(MascaraAtual) || (bolSeparador && (!isNaN(ProxMascara)))){
			if (Tecla >= 48 && Tecla <= 57){
				if (parseInt(Caracter) > parseInt(MascaraAtual) || (bolSeparador && (parseInt(Caracter) > parseInt(ProxMascara)))){
					event.keyCode = 0
					return false
				}
			}
			else{
				event.keyCode = 0
				return false
			}
		}
		else if (MascaraAtual == "A" || MascaraAtual == "a" || (bolSeparador && (ProxMascara == "a" || ProxMascara == "A"))){
			if (Tecla < 65 || Tecla > 122 || Tecla == 91 || Tecla == 92 || Tecla == 93 || Tecla == 94 || Tecla == 95 || Tecla == 95){
				event.keyCode = 0
				return false
			}
		}
		
		if (bolSeparador){
			strRetorno = MascaraAtual + CaseCaracter(Caracter, ProxMascara)
		}
		else{
			strRetorno = CaseCaracter(Caracter, MascaraAtual)
		}
	}
	pobjCampo.value += strRetorno
	event.keyCode = 0
	return false
}

function CaseCaracter(pCaracter, pMascara)
{
	if (pMascara == "A"){
		return pCaracter.toUpperCase()
	}
	else if (pMascara == "a"){
		return pCaracter.toLowerCase()
	}
	else{
		return pCaracter
	}
}

function So_numero(obj,event)
{
    var str = obj.value;
    var Tecla = event.which;
    if(Tecla == null)
        Tecla = event.keyCode;

    //se nao for número nem parentesis ou espaço
    if ( Tecla < 48 || Tecla > 57 ){
        event.returnValue = false;
	alert("Campo Restrito para Valor Numerico!")
        return false;
    }
    event.returnValue = true;
    return true;
}

function mascaraMoeda(fld, milSep, decSep, e)
	{
		var sep = 0;
		var key = '';
		var i = j = 0;
		var len = len2 = 0;
		var strCheck = '0123456789';
		var aux = aux2 = '';
		var whichCode = (window.Event) ? e.which : e.keyCode;
	
		if (whichCode == 13)
		
			return true;  
	
			key = String.fromCharCode(whichCode); 
	
		if (strCheck.indexOf(key) == -1)
			 return false;  
			 
			len = fld.value.length;
		
		 for(i = 0; i < len; i++)
		 
			 if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
				aux = '';
				
		 for(; i < len; i++)
		 
			 if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
				 aux += key;len = aux.length;
				 
			 if (len == 0) fld.value = '';
			 if (len == 1) fld.value = '0'+ decSep + '0' + aux;
			 if (len == 2) fld.value = '0'+ decSep + aux;
			 if (len > 2)
			  {
				aux2 = '';
			 
				 for (j = 0, i = len - 3; i >= 0; i--) 
				 {
					 if (j == 3)
					 {  
						 aux2 += milSep;  j = 0; 
					 }
					 
				  aux2 += aux.charAt(i); 
				  
				  j++;
				  
				 }
				fld.value = '';len2 = aux2.length;
	 
			  for (i = len2 - 1; i >= 0; i--)
				  fld.value += aux2.charAt(i);
				  fld.value += decSep + aux.substr(len - 2, len);
				  
			  }
			  
	  return false;
  }

function validaDigitosMoeda(v)
{
	var reDigits = /^\d+$/;
	var pStr = new String(v);
	pStr = ConverteMoedaDigitos(pStr);
	if (reDigits.test(pStr)) {
		return (true);
	} else if (pStr != null && pStr != "") {
		return (false);
	}
	return (false);
}


