function Mascara(objeto, evt, mask) {
	try {
		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;
				if (ntecla == 46) return true;
				if (ntecla == 37) return true;
				if (ntecla == 39) 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;
		}catch(e) { }
		return true;
}
