function EngineMasks() {
	this._prepare = function(field){
		var value = field.value;
		var re = new RegExp("[\\D+]*", "g");
		var len = 0;
		value = value.replace(re,"");
		value = value.toString();
		return value;
	}
	this.limitchars = function (field, cntfield, maxlimit) {
		if (field.value.length > maxlimit)
			field.value = field.value.substring(0, maxlimit);
		else
			R.$(cntfield).innerHTML = maxlimit - field.value.length;
	}
	this.date = function(field){
		var value = this._prepare(field);
		var len = value.length;
		
		if (len > 8) {
			len = 8;
			value = value.substr(0, 8);
		}
		if (len > 4) {
			value = value.substr(0, 2) + "/" +
				value.substr(2, 2) + "/" +
				value.substr(4, 8);
		}
		else if (len > 2) {
			value = value.substr(0, 2) + "/" +
				value.substr(2, 2);
		}
		
		field.value = value;
	};
	this.hour = function(field){
		var value = this._prepare(field);
		var len = value.length;
		
		if (len > 4) {
			len = 4;
			value = value.substr(0, 4);
		}
		else if (len > 2) {
			value = value.substr(0, 2) + "h" +
			value.substr(2, 2);
		}
		field.value = value;
	};
	this.cep = function(field){
		var value = this._prepare(field);
		var len = value.length;
		separador='-';
		conjunto1=5;
		if (field.value.length == conjunto1) {
			field.value=field.value + separador;
		}
		field.value = field.value.substr(0, 9);
	}
	this.cpf = function(field){
		var value = this._prepare(field);
		var len = value.length;
		value = value.substr(0, 3) + "." + value.substr(3, 3) + "." + value.substr(6, 3) + "-" + value.substr(9, 2);
		field.value = value;
	}
	this.money = function(field){
		var value = this._prepare(field);
		var len = value.length;
		
		if(len > 3){
			if(len > 4){
				value = value.substr(0, 2) + "." + value.substr(2, 3);
			}
			else {
				value = value.substr(0, 1) + "." + value.substr(1, 3);
			}
		}
		field.value = value;
	}
	this.numbers = function(field){
		var value = this._prepare(field);
		var len = value.length;
		field.value = value;
	}
	this.phone = function(field){
		var val = this._prepare(field);
		var len = val.length;
		var fmt = "";
		if(len > 6){
			fmt = "(" + val.substr(0, 2) + ")" + val.substr(2, 4) + "-" + val.substr(6, 4);
		}
		else if(len > 2){
			fmt = "(" + val.substr(0, 2) + ")" + val.substr(2, 4);
		}
		else {
			fmt = "(" + val;
		}
		field.value = fmt;
	}
	this.cnpj = function(field){
		field.value = field.value.substr(0, 17);
		
	   if(window.event){
		var tecla = teclapres.keyCode;
	   }else  tecla = teclapres.which;
	
	   var vr = new String(field.value);
	   vr = vr.replace(".", "");
	   vr = vr.replace(".", "");
	   vr = vr.replace("/", "");
	   vr = vr.replace("-", "");
	   vr = vr.replace("[a-zA-Z]", "");
	   len = vr.length + 1;
	   if (tecla != 9 && tecla != 8){
		  if (len > 2 && len < 6)
			 field.value = vr.substr(0, 2) + '.' + vr.substr(2, len);
		  if (len >= 6 && len < 9)
			 field.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,len-5);
		  if (len >= 9 && len < 13)
			 field.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,len-8);
		  if (len >= 13 && len < 15)
			 field.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,4)+ '-' + vr.substr(12,len-12);
		  }
	};
};
var K = new EngineMasks();
