var WindowUtil = {
  getWindowScroll: function(w) {
    w = w || window;
    var T, L, W, H;
    with (w.document) {
      if (w.document.documentElement && documentElement.scrollTop) {
        T = documentElement.scrollTop;
        L = documentElement.scrollLeft;
      } else if (w.document.body) {
        T = body.scrollTop;
        L = body.scrollLeft;
      }
      if (w.innerWidth) {
        W = w.innerWidth;
        H = w.innerHeight;
      } else if (w.document.documentElement && documentElement.clientWidth) {
        W = documentElement.clientWidth;
        H = documentElement.clientHeight;
      } else {
        W = body.offsetWidth;
        H = body.offsetHeight
      }
    }
    return {top: T, left: L, width: W, height: H};
  },
  getPageSize: function() {
  	var xScroll, yScroll;
  	if (window.innerHeight && window.scrollMaxY) {	
  	  xScroll = document.body.scrollWidth;
  	  yScroll = window.innerHeight + window.scrollMaxY;
  	} else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
  	  xScroll = document.body.scrollWidth;
  	  yScroll = document.body.scrollHeight;
  	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
  	  xScroll = document.body.offsetWidth;
  	  yScroll = document.body.offsetHeight;
  	}
  	var windowWidth, windowHeight;
  	if (self.innerHeight) {	// all except Explorer
  	  windowWidth = self.innerWidth;
  	  windowHeight = self.innerHeight;
  	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
  	  windowWidth = document.documentElement.clientWidth;
  	  windowHeight = document.documentElement.clientHeight;
  	} else if (document.body) { // other Explorers
  	  windowWidth = document.body.clientWidth;
  	  windowHeight = document.body.clientHeight;
  	}	
  	var pageHeight, pageWidth;
  	// for small pages with total height less then height of the viewport
  	if (yScroll < windowHeight) {
  	  pageHeight = windowHeight;
  	} else { 
  	  pageHeight = yScroll;
  	}
  	// for small pages with total width less then width of the viewport
  	if (xScroll < windowWidth) {	
  	  pageWidth = windowWidth;
  	} else {
  	  pageWidth = xScroll;
  	}
  	return {pageWidth: pageWidth, pageHeight: pageHeight, windowWidth: windowWidth, windowHeight: windowHeight};
  },
  getWindowCenter: function(width, height) {
	width = width || 0;
	height = height || 0;
    var windowScroll = WindowUtil.getWindowScroll();    
    var pageSize = WindowUtil.getPageSize();
    var left = (windowScroll.left + (pageSize.windowWidth - width)/2);
    var top = (windowScroll.top + (pageSize.windowHeight - height)/2);
	return {left:left, top:top};
  }
};