// http://www.geekdaily.net/2007/07/04/javascript-cross-browser-window-size-and-centering/

// Returns the page size {width,height}
function getViewSize() {
  var w = 0;
  var h = 0;
  //IE
  if(!window.innerWidth) {
    if(!(document.documentElement.clientWidth == 0)) {
      //strict mode
      w = document.documentElement.clientWidth;
      h = document.documentElement.clientHeight;
    }
    else {
      //quirks mode
      w = document.body.clientWidth;
      h = document.body.clientHeight;
    }
  }
  else {
    //w3c
    w = window.innerWidth;
    h = window.innerHeight;
  }
  return {width:w,height:h};
}

// Returns the {x,y} coords for an object to
//   appear in the view's center.
function getViewCenter(objectWidth, objectHeight) {
  var _x = 0;
  var _y = 0;
  var viewOffset = getViewOffset();
  var viewSize = getViewSize();
  _x = ((viewSize.width - objectWidth)/2) + viewOffset.x;
  _y = ((viewSize.height - objectHeight)/2) + viewOffset.y;
  return {x:_x,y:_y};
}

// Returns how far the view has been scrolled {x,y}
function getViewOffset() {
  var offsetX = 0;
  var offsetY = 0;
  //IE
  if(!window.pageYOffset) {
    if(!(document.documentElement.scrollTop == 0)) {
      //strict mode
      offsetY = document.documentElement.scrollTop;
      offsetX = document.documentElement.scrollLeft;
    }
    else {
      //quirks mode
      offsetY = document.body.scrollTop;
      offsetX = document.body.scrollLeft;
    }
  }
  //w3c
  else {
    offsetX = window.pageXOffset;
    offsetY = window.pageYOffset;
  }
  return {x:offsetX,y:offsetY};
}

// Returns the page size {width,height}
//   This is based on the scroll offset + view size.
function getPageSize() {
  var w = 0;
  var h = 0;
  var viewOffset = getViewOffset();
  var viewSize = getViewSize();
  w = viewSize.width + viewOffset.x;
  h = viewSize.height + viewOffset.y;
  return {width:w,height:h};
}



// http://blog.firetree.net/2005/07/04/javascript-find-position/

// Crawl parents to determine an element's absolute position.
function findPosX(obj) {
  var curLeft = 0;
  if (obj.offsetParent) {
    while (1) {
      curLeft += obj.offsetLeft;
      if (!obj.offsetParent) break;
      obj = obj.offsetParent;
    }
  }
  else if (obj.x) curLeft += obj.x;
  return curLeft;
}

// Crawl parents to determine an element's absolute position.
function findPosY(obj) {
  var curTop = 0;
  if (obj.offsetParent) {
    while (1) {
      curTop += obj.offsetTop;
      if (!obj.offsetParent) break;
      obj = obj.offsetParent;
    }
  }
  else if (obj.y) curTop += obj.y;
  return curTop;
}

