
function setup() {
        //Set up the date parsers
        var dateParser = new DateParser("dd/MM/yyyy HH:mm");
    
        //Set up the InputMask    
        var numericMask = new InputMask(JST_MASK_NUMBERS, "numeric");
        var decimalMask = new InputMask(JST_MASK_DECIMAL, "decimal");
        var upperMask = new InputMask(fieldBuilder.upperAll(), "upper");
        var lowerMask = new InputMask(fieldBuilder.lowerAll(), "lower");
        var capitalizeMask = new InputMask(fieldBuilder.capitalizeAll(), "capital");
        var dateMask = new InputMask(JST_MASK_DATE, "date");
        var dateTimeMask = new InputMask(JST_MASK_DATE_TIME, "dateTime");
        var dateTimeSecMask = new InputMask(JST_MASK_DATE_TIME_SEC, "dateTimeSec");
        var phoneMask = new InputMask("(##) ####-####", "phone");
        var customMask = new InputMask("AA.UU.LL.CC-##", "custom");
    
        //Set up the NumberMasks
        var decimalSeparator = ",";
        var groupSeparator = ".";
        
        var numParser1 = new NumberParser(0, decimalSeparator, groupSeparator, true);
        var numMask1 = new NumberMask(numParser1, "num1");
    
        var numParser2 = new NumberParser(-1, decimalSeparator, groupSeparator, true);
        numParser2.negativeParenthesis = true;
        var numMask2 = new NumberMask(numParser2, "num2");
        numMask2.leftToRight = true;
    
        var numParser3 = new NumberParser(3, decimalSeparator, groupSeparator, true);
        var numMask3 = new NumberMask(numParser3, "num3", 6);
        numMask3.allowNegative = false;
        numMask3.leftToRight = true;
    
        var numParser4 = new NumberParser(2, decimalSeparator, groupSeparator, true);
        numParser4.currencySymbol = "R$"
        numParser4.useCurrency = true;
        numParser4.negativeParenthesis = true;
        numParser4.currencyInside = true;
        var numMask4 = new NumberMask(numParser4, "num4", 6);
    
        //Set up the DateMasks
        var errorMessage = "Invalid date: ${value}. Expected format: ${mask}";
    
        var dateParser1 = new DateParser("dd/MM/yyyy");
        var dateMask1 = new DateMask(dateParser1, "date1");
        dateMask1.validationMessage = errorMessage;
    
        var dateParser2 = new DateParser("dd/MM/yyyy HH:mm");
        var dateMask2 = new DateMask(dateParser2, "date2");
        dateMask2.validationMessage = errorMessage;
    
        var dateParser3 = new DateParser("dd/MM/yyyy HH:mm", false);
        var dateMask3 = new DateMask(dateParser3, "date3");
        dateMask3.validationMessage = errorMessage;
        dateMask3.blurFunction = function(event, mask) {
            var control = mask.control;
            var valid = inArray(control.value.length, [0, 10, 16]);
            if (!valid) {
                alert("The date should be informed as dd/MM/yyyy or dd/MM/yyyy HH:mm");
                if (control.value.length < 10) {
                    control.value = "";
                } else {
                    control.value = left(control.value, 10);
                }
            }
            return valid;
        };
    
        var dateParser4 = new DateParser("HH:mm:ss");
        var dateMask4 = new DateMask(dateParser4, "date4");
        dateMask4.validationMessage = errorMessage;
    
        //Set up the SizeLimits
        function updateLimit4(control, size, max, left) {
            var gauge = getObject("limit4Gauge");
            var width = Math.round(size * 100 / max) + "%";
            gauge.style.width = width;
            gauge.style.backgroundColor = (width == '100%' ? 'red' : 'blue');
            gauge.innerHTML = width;
        }
        new SizeLimit("limit1", 50, "limit1Out");
        new SizeLimit("limit2", 50, "limit2Out", "${size} / ${max}");
        new SizeLimit("limit3", 50, "limit3Out", "You typed ${size} characters of a total of ${max}.<br>You have ${left} more characters to type.");
        var limit = new SizeLimit("limit4", 50);
        limit.updateFunction = updateLimit4;
        limit.update();
    }
    


function aplicaMascara(objeto, evt, mask) {
 
var LetrasU = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var LetrasL = 'abcdefghijklmnopqrstuvwxyz';
var Letras  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var Numeros = '0123456789';
var Fixos  = '().-:/ '; 
var Charset = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_/`abcdefghijklmnopqrstuvwxyz{|}~";

evt = (evt) ? evt : (window.event) ? window.event : "";
var value = objeto.value;
if (evt) {
 var ntecla = (evt.which) ? evt.which : evt.keyCode;
 tecla = Charset.substr(ntecla - 32, 1);
 if (ntecla < 32) return true;

 var tamanho = value.length;
 if (tamanho >= mask.length) return false;

 var pos = mask.substr(tamanho,1); 
 while (Fixos.indexOf(pos) != -1) {
  value += pos;
  tamanho = value.length;
  if (tamanho >= mask.length) return false;
  pos = mask.substr(tamanho,1);
 }

 switch (pos) {
   case '#' : if (Numeros.indexOf(tecla) == -1) return false; break;
   case 'A' : if (LetrasU.indexOf(tecla) == -1) return false; break;
   case 'a' : if (LetrasL.indexOf(tecla) == -1) return false; break;
   case 'Z' : if (Letras.indexOf(tecla) == -1) return false; break;
   case '*' : objeto.value = value; return true; break;
   default : return false; break;
 }
}
objeto.value = value; 
return true;
}


function mascaraTelefone(tel){
	 Tamanho(tel,13);
	 SoNumeros();
//	 alert(cpf);
       var mytel = '';
       mytel = mytel + tel.value;
       if (mytel.length == 0) {
          mytel = mytel + '(';
          tel.value = mytel;
        }
       if (mytel.length == 3) {
          mytel = mytel + ')';
          tel.value = mytel;
        }
       if (mytel.length == 4) {
          mytel = mytel + ' ';
          tel.value = mytel;
        }
       if (mytel.length == 9) {
          mytel = mytel + '-';
          tel.value = mytel;
        }
       if (mytel.length == 10) {
        }
     }

function mascaraCEP(objeto){
	   Tamanho(objeto,8);
	   SoNumeros();
     if (objeto.value.indexOf("-") == -1 && objeto.value.length      > 6){ objeto.value = ""; }
     if (objeto.value.length == 5){
    	 objeto.value +="-";
     }
	

   }
function mascara_cpf(cpf)     {
	 Tamanho(cpf,13);
	 SoNumeros();
//	 alert(cpf);
       var mycpf = '';
       mycpf = mycpf + cpf.value;
       if (mycpf.length == 3) {
          mycpf = mycpf + '.';
          cpf.value = mycpf;
        }
       if (mycpf.length == 7) {
          mycpf = mycpf + '.';
          cpf.value = mycpf;
        }
       if (mycpf.length == 11) {
          mycpf = mycpf + '-';
          cpf.value = mycpf;
        }
       if (mycpf.length == 14) {
        }
     }

function mascara_cnpj(cnpj)     {
//	 alert(cnpj);
	 Tamanho(cnpj,18);
	 SoNumeros();
	
       var mycnpj = '';
       mycnpj = mycnpj + cnpj.value;
       if (mycnpj.length == 2) {
          mycnpj = mycnpj + '.';
          cnpj.value = mycnpj ;
        }
       if (mycnpj.length == 6) {
          mycnpj = mycnpj + '.';
          cnpj.value = mycnpj ;
        }
       if (mycnpj.length == 10) {
          mycnpj = mycnpj + '/';
          cnpj.value = mycnpj ;
        }

       if (mycnpj.length == 15) {
          mycnpj = mycnpj + '-';
          cnpj.value = mycnpj ;
        }
       if (mycnpj.length == 18) {
        }
     }


function mascaraData(objeto){ 
   Tamanho(objeto,10)	;
   SoNumeros();
     if (objeto.value.length == 2){
     objeto.value +="/";
     }
	 if (objeto.value.length == 5){
     objeto.value +="/";
     }
   }

function SoNumeros(){
	if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
  }


function Tamanho(objeto,tamanho){
	if (objeto.value.length > tamanho) event.returnValue = false;
  }


function Limpar(valor, validos) { 
 var result = ""; 
var aux; 
for (var i=0; i < valor.length; i++) { 
aux = validos.indexOf(valor.substring(i, i+1)); 
if (aux>=0) { 
result += aux; 
} 
} 
return result; 
} 

function mascaraValor(campo,tammax,teclapres,decimal) { 
	// SoNumeros();
	var tecla = teclapres.keyCode; 
	var vr = Limpar(campo.value,"0123456789"); 
	var tam = vr.length; 
	var dec=decimal ;

	if (tam < tammax && tecla != 8)
			{ tam = vr.length + 1 ; } 

	if (tecla == 8 ) 
		{ tam = tam - 1 ; } 

	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ) 		{ 
		if ( tam <= dec ) 
			{ campo.value = vr ; } 

		if ( (tam > dec) && (tam <= 5) ){ 
			campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ; } 
		if ( (tam >= 6) && (tam <= 8) ){ 
			campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
		} 
		if ( (tam >= 9) && (tam <= 11) ){ 
			campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; } 
		if ( (tam >= 12) && (tam <= 14) ){ 
			campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; } 
		if ( (tam >= 15) && (tam <= 17) ){ 
			campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;} 
	} 
}

//return dd:mm:yyyy hh:mm
function mascara_DataHora(objeto){ 
   Tamanho(objeto,16)	;
   SoNumeros();
     if (objeto.value.length == 2){
     objeto.value +="/";
     }
	 if (objeto.value.length == 5){
     objeto.value +="/";
     }
     
     if (objeto.value.length == 10){
     objeto.value +=" ";
     }
     
     if (objeto.value.length == 13){
     objeto.value +=":";
     }
      if (objeto.value.length == 16){
     objeto.value +=":";
     }
   
   }