  ///
  /// NetForce Tecnologia
  /// Biblioteca de funções HTML de JavaScript
  ///

  var __netforce_page_loads = new Array();

  /**
   * Controle de Page Loads
   */
  function nf_htmlPageLoads()
  {
    var funcs = __netforce_page_loads;
    for (var i = 0; i < funcs.length; i++)
    {
      var oMethod = funcs[i];
      eval(oMethod);
    }
  }

  /**
   * Adicionar uma função na fila de controles de page loads
   *
   * @param func funcName
   */
  function nf_htmlAddMethod(funcName)
  {
    __netforce_page_loads.push(funcName);
  }

  /**
   * Função que retorna a posição absoluta do objeto HTML
   *
   * @param TagObject tag
   * @return Array
   */
  function nf_htmlAbsolutePos(tag)
  {
    var iLeft = 0;
    var iTop  = 0;

    var is_div = /^div$/i.test(tag.tagName);
    if (is_div && tag.scrollLeft)
      iLeft = tag.scrollLeft;
    if (is_div && tag.scrollTop)
      iTop = tag.scrollTop;
    var r = { x: tag.offsetLeft - iLeft, y: tag.offsetTop - iTop };

    // Verificar se tem parent
    if (tag.offsetParent)
    {
      var tmp = nf_htmlAbsolutePos(tag.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
    }

    return r;
  }

  /**
   * Calibrar popups
   *
   * @param Object popup
   */
  function nf_htmlRepositionPopup(popup)
  {
    var x = popup.offsetLeft;
    var y = popup.offsetTop;
    var w = (popup.offsetLeft + popup.offsetWidth);
    var h = (popup.offsetTop + popup.offsetHeight);

    if (w > screen.width)
      x = (screen.width - popup.offsetWidth);
    if (h > screen.height)
      y = (screen.height - popup.offsetHeight);

    popup.style.left = x;
    popup.style.top  = y;
  }

  /**
   * Escreve no buffer
   *
   * @param string str
   */
  function nf_htmlWrite(str)
  {
    document.write(str);
  }

  /**
   * Verificar se mouse esta sob o component tag
   *
   * @param Object tag
   * @param Event ev
   * @return boolean
   */
  function nf_html_mouseInTag(tag, ev)
  {
    var uiInfo  = nf_browser_info();
    var ev      = ((uiInfo.browser == BROWSER_IE) ? document.createEventObject() : ev);
    var pos     = nf_htmlAbsolutePos(tag);
    var rect    = {x1: pos.x, y1: pos.y, x2: (pos.x + tag.offsetWidth), y2: (pos.y + tag.offsetHeight)};

    // Verificar se entrou denovo na área do popup
    if ((ev.clientX >= rect.x1) && (ev.clientX <= rect.x2) && (ev.clientY >= rect.y1) && (ev.clientY <= rect.y2))
      return true;

    return false;
  }
