  ///
  /// NetForce Tecnologia
  /// Biblioteca de controles de máscara dos campos
  ///

  /**
   * Máscara para somente números
   *
   * @param Object tag
   * @param Int digits
   * @param Event ev
   */
  function fncFields_numero(tag, digits, ev)
  {
    var key = ev.keyCode;

    if (((key >= VK_N0) && (key <= VK_N9)) || ((key >= VK_NUM0) && (key <= VK_NUM9)))
      return true;
    if ((digits) && (key == 188) && (tag.value.indexOf(',') == -1)) // ,
      return true;
    if (key == 45) // -
      return true;

    // Teclas especiais
    if (fncFields_tecla_especial(key))
      return true;
    
    return false;
  }

  /**
   * Máscara DATE, DATETIME ou TIME
   *
   * @param Object tag
   * @param Int kind 1 = Date | 2 = DateTime | 3 = Time
   */
  function fncFields_date(tag, kind, ev)
  {
    // Key Barr = 47
    // Key Nums = VK_N0..VK_N9 e VK_NUM0..VK_NUM9
    var key = ev.keyCode;
    if (((key >= VK_N0) && (key <= VK_N9)) || ((key >= VK_NUM0) && (key <= VK_NUM9)))
    {
      var len = tag.value.length;
      switch (kind)
      {
        case 1: // Date
          if (len == 2)
            tag.value += '/';
          if (len == 5)
            tag.value += '/';
          break;
        case 2: // Date and Time
          if (len == 2)
            tag.value += '/';
          if (len == 5)
            tag.value += '/';
          if (len == 10)
            tag.value += ' ';
          if (len == 13)
            tag.value += ':';
          if (len == 16)
            tag.value += ':';
          break;
        case 3: // Time
          if (len == 2)
            tag.value += ':';
          //if (len == 5)
          //  tag.value += ':';
          break;
        case 4: // Date Day/Month to Happy Birday
          if (len == 2)
            tag.value += '/';
          break;
      }

      return true;
    }

    // Teclas especiais
    if (fncFields_tecla_especial(key))
      return true;

    return false;
  }


  /**
   * Máscara CEP
   *
   * @param Object tag
   */
  function fncFields_cep(tag, ev)
  {
    // Key Nums = VK_N0..VK_N9 e VK_NUM0..VK_NUM9
    var key = ev.keyCode;
    if (((key >= VK_N0) && (key <= VK_N9)) || ((key >= VK_NUM0) && (key <= VK_NUM9)))
    {
      var len = tag.value.length;
      if (len == 5)
        tag.value +=  '-';

      return true;
    }

    // Teclas especiais
    if (fncFields_tecla_especial(key))
      return true;

    return false;
  }

  /**
   * Verificar se é um tecla especial que deve ser liberada
   *
   * @param int key
   * @return boolean
   */
  function fncFields_tecla_especial(key)
  {
    return ((key == VK_BACKSAPACE) || (key == VK_TAB) || (key == VK_RETURN) || (key == VK_END) || (key == VK_HOME) || (key == VK_LEFT) || (key == VK_UP) || (key == VK_RIGHT) || (key == VK_DOWN) || (key == VK_INSERT) || (key == VK_DELETE));
  }
