function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/\D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function filterField(field, is_negative)
{
  var s = "";
  var cp = "";
  content = field.value;
  size = content.length;

  for (i = 0; i < size ; i++)
  {
    if (content.substring(i,i + 1) != "/" && content.substring(i,i + 1) != "." && content.substring(i,i + 1) != ",")
    {
      if (is_negative == undefined) {
        if (content.substring(i,i + 1) != "-")
          s = s + content.substring(i,i + 1);
      }
      else if (is_negative == true)
        s = s + content.substring(i,i + 1);
    }
  }

  field.value = s;
  return cp = field.value
}

function formatValueMonetary(field, is_negative)
{
  field.value = filterField(field, is_negative);
  content = field.value;
  size = content.length;

  if (size <= 2)
    field.value = content;

  if ((size > 2) && (size <= 5))
    field.value = content.substr(0, size - 2) + ',' + content.substr(size - 2, size);

  if ((size >= 6) && (size <= 8))
    field.value = content.substr(0, size - 5) + '.' + content.substr(size - 5, 3) + ',' + content.substr(size - 2, size);

  if ((size >= 9) && (size <= 11))
    field.value = content.substr(0, size - 8) + '.' + content.substr(size - 8, 3) + '.' + content.substr(size - 5, 3) + ',' + content.substr(size - 2, size);

  if ((size >= 12) && (size <= 14))
    field.value = content.substr(0, size - 11) + '.' + content.substr(size - 11, 3) + '.' + content.substr(size - 8, 3) + '.' + content.substr(size - 5, 3) + ',' + content.substr(size - 2, size);

  if ((size >= 15) && (size <= 18))
    field.value = content.substr(0, size - 14) + '.' + content.substr(size - 14, 3) + '.' + content.substr(size - 11, 3) + '.' + content.substr(size - 8, 3) + '.' + content.substr( size - 5, 3 ) + ',' + content.substr(size - 2, size);
}

function formatAmericanValueMonetary(field, is_negative)
{
  field.value = filterField(field, is_negative);
  content = field.value;
  size = content.length;

  if (size <= 2)
    field.value = content;

  if ((size > 2))
    field.value = content.substr(0, size - 2) + '.' + content.substr(size - 2, size);
}

function formatDate(field)
{
  field.value = soNumeros(field.value);
  field.value = filterField(field);
  content = field.value;
  size = content.length;
  
  if (size > 2 && size < 5)
    field.value = content.substr(0, size - 2) + '/' + content.substr(size - 2, size);

  if (size >= 5 && size <= 10)
    field.value = content.substr(0, 2) + '/' + content.substr(2, 2) + '/' + content.substr(4, 4);
}
