function getScrollXY()
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function getViewportDimensions()
{
  var intH = 0, intW = 0;

  if(self.innerHeight) {
    intH = window.innerHeight;
    intW = window.innerWidth;
  }
  else {
    if(document.documentElement && document.documentElement.clientHeight) {
      intH = document.documentElement.clientHeight;
      intW = document.documentElement.clientWidth;
    }
    else {
      if(document.body) {
        intH = document.body.clientHeight;
        intW = document.body.clientWidth;
      }
    }
  }

  return {
    height: parseInt(intH, 10),
    width: parseInt(intW, 10)
  };
}

function findPosition( oElement )
{
  if( typeof( oElement.offsetParent ) != 'undefined' ) {
    for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
      posX += oElement.offsetLeft;
      posY += oElement.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oElement.x, oElement.y ];
  }
}

function centerElement(elem)
{
  var containerLeft = findPosition(document.getElementById('container'))[0];
  var viewport = getViewportDimensions();
  var domElement = document.getElementById(elem.attr('id'));
  var left = (viewport.width == 0) ? 50 : parseInt((viewport.width - domElement.offsetWidth) / 2, 10);
  var top = (viewport.height == 0) ? 50 : parseInt((viewport.height - domElement.offsetWidth) / 2, 10);

  
  elem.css('position', 'absolute');
  elem.css('left', (left - containerLeft) + 'px');
  elem.css('top', (top + getScrollXY()[1]) + 'px');

  viewport = left = top = ele = null;
}

function centerElement_of2(elem)
{
  try {
    var containerLeft = findPosition(document.getElementById('container'))[0];
  } catch (e) {}
  var viewport = getViewportDimensions();
  var domElement = document.getElementById(elem.attr('id'));
  var left = (viewport.width == 0) ? 50 : parseInt((viewport.width - domElement.offsetWidth) / 2, 10);
  var top = (viewport.height == 0) ? 50 : parseInt((viewport.height - domElement.offsetWidth) / 2, 10);


  elem.css('position', 'absolute');
  elem.css('left', (left + getScrollXY()[0]) + 'px');
  elem.css('top', (top + getScrollXY()[1]) + 'px');

  viewport = left = top = ele = null;
}

function centerElement_of2v2(elem) {
  var win = jQuery(window);

  elem.css({
    'position': 'absolute',
    'left': win.scrollLeft() + win.width() / 2 - elem.width() / 2,
    'top': win.scrollTop() + win.height() / 2 - elem.height() / 2
  })
}
