  ///
  /// NetForce Tecnologia
  /// Controle de teclas de atalho
  ///

  var nf_shortkeys = new Array();

  /**
   * Controle KeyDown do BODY
   * @param Event ev
   */
  function nf_shortkeys_onkeydown(ev)
  {
    var nKey  = ev.keyCode;

    // Se for a tecla ALT, CTRL ou SHIFT deve ignorar
    if ((nKey == VK_SHIFT) || (nKey == VK_CTRL) || (nKey == VK_ALT))
      return;

    //alert(nKey);

    // Verificar se há algum tratamento para este KEY.
    for (var i = 0; i < nf_shortkeys.length; i++)
    {
      // Verificar, pelo key auxiliar, se deve executar o tratamento
      var aux = nf_shortkeys[i].keyAux;

      // Montar flags precionados
      var flags = 0;
      if (ev.ctrlKey == true)
        flags = (flags | vkAUX_CTRL);
      if (ev.shiftKey == true)
        flags = (flags | vkAUX_SHIFT);
      if (ev.altKey == true)
        flags = (flags | vkAUX_ALT);

      if ((nf_shortkeys[i].keyCode == nKey) & (flags == nf_shortkeys[i].keyAux))
      {
        // Executar tratamento
        eval(nf_shortkeys[i].method);

        // Verificar se deve dar continuidade ao evento
        ev.returnValue = nf_shortkeys[i].canContinue;
      }
    }
  }

  /**
   * Adicionar um atalho na lista de controle
   *
   * @param integer keyCode
   * @param integer keyAux
   * @param integer method
   * @param integer canContinue
   */
  function nf_shortkeys_add(keyCode, keyAux, method, canContinue)
  {
    var item         = new NFShortKeyItem();
    item.keyCode     = keyCode;
    item.keyAux      = keyAux;
    item.method      = method;
    item.canContinue = canContinue;

    nf_shortkeys.push(item);
  }

  /**
   * NFShortKeyItem
   * Classe item da tecla de atalho
   */
  function NFShortKeyItem()
  {
    var keyCode     = 0;
    var keyAux      = 0; // 0 = none, 1 = Ctrl, 2 = Shift, 4 = Alt
    var method      = null;
    var canContinue = true;
  }
