function format(field, type, keypress) {
    this.perm = new Array;
    this._event = keypress.which ? keypress.which : keypress.keyCode;
    this.detectBrowser = function () {this.perm = new Array(27, 35, 36, 94, 46, 41, 37, 38, 39, 40);if (!keypress.preventDefault) {return true;} else {reg = new RegExp(" " + this._event + " ");if (this._event >= 0 && this._event <= 30 || reg.test(this.perm.join(" "))) {return false;} else {return true;}}};
    this.f_cpf = function (field) {var pattern = /([0-9\.\-])/;var maxsize = 14;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {if (field.value.length == 3) {field.value = field.value;field.value = field.value + ".";}if (field.value.length == 7) {field.value = field.value;field.value = field.value + ".";}if (field.value.length == 11) {field.value = field.value;field.value = field.value + "-";}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_cnpj = function (field) {var pattern = /([0-9\.\-])/;var maxsize = 18;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {if (field.value.length == 2) {field.value = field.value;field.value = field.value + ".";}if (field.value.length == 6) {field.value = field.value;field.value = field.value + ".";}if (field.value.length == 10) {field.value = field.value;field.value = field.value + "/";}if (field.value.length == 15) {field.value = field.value;field.value = field.value + "-";}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_number = function (field) {var pattern = /([0-9])/;var maxsize = null;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_cep = function (field) {var pattern = /([0-9\-])/;var maxsize = 9;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {if (field.value.length == 5) {field.value = field.value;field.value = field.value + "-";}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_fone = function (field) {var pattern = /([0-9])/;var maxsize = 14;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {tecla = this._event;vr = field.value;vr = vr.replace("(", "");vr = vr.replace(")", "");vr = vr.replace(" ", "");vr = vr.replace("-", "");tam = vr.length;if (tam < maxsize && tecla != 8) {tam = vr.length + 1;}if (tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105) {if (tam <= 4) {field.value = vr;}if (tam > 4 && tam <= 8) {field.value = vr.substr(0, tam - 4) + "-" + vr.substr(tam - 4, tam);}if (tam >= 9 && tam <= 10) {field.value = "(" + vr.substr(0, 2) + ") " + vr.substr(2, tam - 6) + "-" + vr.substr(tam - 4, tam);}}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_data = function (field) {var pattern = /([0-9\/])/;var maxsize = 10;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {if (field.value.length == 2 && this._event != 47) {field.value = field.value;field.value = field.value + "/";}if (field.value.length == 5 && this._event != 47) {field.value = field.value;field.value = field.value + "/";}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_date_us = function (field) {var pattern = /([0-9\/])/;var maxsize = 10;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {if (field.value.length == 4 && this._event != 47) {field.value = field.value;field.value = field.value + "-";}if (field.value.length == 7 && this._event != 47) {field.value = field.value;field.value = field.value + "-";}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_hora = function (field) {var pattern = /([0-9])/;var maxsize = 8;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {if (field.value.length == 2 && this._event != 47) {field.value = field.value;field.value = field.value + ":";}if (field.value.length == 5 && this._event != 47) {field.value = field.value;field.value = field.value + ":";}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    this.f_valor_monetario = function (field) {var pattern = /([0-9])/;var maxsize = 18;str = String.fromCharCode(this._event);if (maxsize != null && !isNaN(maxsize) && this.detectBrowser()) {if (field.value.length >= maxsize) {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}if (this.detectBrowser()) {if (pattern.test(str)) {tecla = this._event;vr = field.value;vr = vr.replace("/", "");vr = vr.replace("/", "");vr = vr.replace(",", "");vr = vr.replace(".", "");vr = vr.replace(".", "");vr = vr.replace(".", "");vr = vr.replace(".", "");tam = vr.length;if (tam < maxsize && 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 <= 2) {field.value = vr;}if (tam > 2 && tam <= 5) {field.value = vr.substr(0, tam - 2) + "," + vr.substr(tam - 2, tam);}if (tam >= 6 && tam <= 8) {field.value = vr.substr(0, tam - 5) + "." + vr.substr(tam - 5, 3) + "," + vr.substr(tam - 2, tam);}if (tam >= 9 && tam <= 11) {field.value = vr.substr(0, tam - 8) + "." + vr.substr(tam - 8, 3) + "." + vr.substr(tam - 5, 3) + "," + vr.substr(tam - 2, tam);}if (tam >= 12 && tam <= 14) {field.value = vr.substr(0, tam - 11) + "." + vr.substr(tam - 11, 3) + "." + vr.substr(tam - 8, 3) + "." + vr.substr(tam - 5, 3) + "," + vr.substr(tam - 2, tam);}if (tam >= 15 && tam <= 17) {field.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);}}} else {keypress.preventDefault ? keypress.preventDefault() : (keypress.returnValue = false);}}};
    switch (type) {
      case "cpf":
        this.f_cpf(field);
        break;
      case "cnpj":
        this.f_cnpj(field);
        break;
      case "number":
      case "numero":
        this.f_number(field);
        break;
      case "cep":
        this.f_cep(field);
        break;
      case "fone":
      case "telefone":
      case "tel":
        this.f_fone(field);
        break;
      case "data":
      case "date":
        this.f_data(field);
        break;
      case "data_us":
      case "date_us":
        this.f_date_us(field);
        break;
      case "hour":
      case "hora":
      case "time":
        this.f_hora(field);
        break;
      case "valor":
      case "dinheiro":
      case "moeda":
        this.f_valor_monetario(field);
        break;
      default:
        alert("Formata\xE7\xE3o de tipo '" + type + "' n\xE3o existe!");
        break;
    }
}