/*
  -------------------------------------------------------------------------------------------------

  : util_dhtml.js
  : ben miller : ben@hyl.co.uk : http://digital.hyl.co.uk

  : crossbrowser helper functions for element and window positioning

  -------------------------------------------------------------------------------------------------
*/
var hyl = hyl || {};

/*
  true offset position
  -------------------------------------------------------------------------------------------------
*/
hyl.elOffset = function(_el)
{
  var pos = { x:_el.offsetLeft, y:_el.offsetTop };
  while((_el=_el.offsetParent)!=null)
  {
    pos.x += _el.offsetLeft;
    pos.y += _el.offsetTop;
  }
  return pos;
}

/*
  event position
  -------------------------------------------------------------------------------------------------
*/
hyl.ePos = function(e, _doc)
{
  _doc = _doc || document;
  var pos = { x:0, y:0 };
  if(IS.N(e.pageX))
  {
    pos.x = e.pageX;
    pos.y = e.pageY;
  }
  else
  {
    pos.x = e.clientX;
    pos.y = e.clientY;
    if(!top.opera)
    {
      if(!_doc.compatMode || _doc.compatMode == 'BackCompat')
      {
        pos.x += _doc.body.scrollLeft;
        pos.y += _doc.body.scrollTop;
      }
      else
      {
        pos.x += _doc.documentElement.scrollLeft;
        pos.y += _doc.documentElement.scrollTop;
      }
    }
  }
  return pos;
}

/*
  source element
  -------------------------------------------------------------------------------------------------
*/
hyl.srcEl = function(e)
{
  if(e.target)
  {
    t = e.target;
    while(t.nodeType != 1)
    {
      t = t.parentNode;
    }
    return t;
  }
  else if(e.srcElement)
  {
    return e.srcElement;
  }
  return false;
}

/*
  window dimensions
  -------------------------------------------------------------------------------------------------
*/
hyl.winDim = function(_doc)
{
  _doc = _doc || document;
  var dim = { x:0, y:0 };
  var w1 = _doc.body.offsetWidth;
  var h1 = _doc.body.offsetHeight;
  var w2, h2;

  if(!_doc.compatMode || _doc.compatMode == 'BackCompat')
  {
    w2 = _doc.body.scrollWidth;
    h2 = _doc.body.scrollHeight;
  }
  else
  {
    w2 = _doc.documentElement.scrollWidth;
    h2 = _doc.documentElement.scrollHeight;
  }

  var dim =
  {
    w : Math.max(w1, w2) -5,
    h : Math.max(h1, h2) -6
  };

  return dim;
}
