//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

  var yScroll;

  if (self.pageYOffset) {
    yScroll = self.pageYOffset;
  } else if (document.documentElement && document.documentElement.scrollTop){  // Explorer 6 Strict
  yScroll = document.documentElement.scrollTop;
  } else if (document.body) {// all other Explorers
  yScroll = document.body.scrollTop;
  }

  arrayPageScroll = new Array('',yScroll)
  return arrayPageScroll;
}



//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){

  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;
  }

  // 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;
  }


  arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
  return arrayPageSize;
}


function initPopup(bgImage)
{
  if (!document.getElementById('ovr'))
  {
    var objBody = document.getElementsByTagName("body").item(0);
    var objOverlay = document.createElement("div");
    objOverlay.setAttribute('id','ovr');

    objOverlay.style.display = 'none';
    objOverlay.style.position = 'absolute';
    objOverlay.style.top = '0';
    objOverlay.style.left = '0';
    objOverlay.style.zIndex = '90';
    objOverlay.style.width = '100%';
    objOverlay.style.backgroundColor = 'transparent';
    
    if (bgImage)
    {
      objOverlay.style.backgroundImage = 'url(' + bgImage + ')';
      objOverlay.style.backgroundRepeat = 'repeat';
      objOverlay.style.backgroundAttachment = 'fixed';
    }

    objBody.insertBefore(objOverlay, objBody.firstChild);
  }
}

function showPopup(id, divWidth, divHeight, bgImage)
{
  var objPopup = document.getElementById(id);
  var objOverlay = document.getElementById('ovr');

  if (!objOverlay)
  {
    initPopup(bgImage);
    objOverlay = document.getElementById('ovr');
  }

  if (!objPopup)
  {
    return false;
  }

  var arrayPageSize = getPageSize();
  var arrayPageScroll = getPageScroll();

  var y = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - divHeight) / 2);
  var x = (arrayPageSize[0] - 20 - divWidth) / 2;

  objPopup.style.top = (y < 0) ? '0px' : y + 'px';
  objPopup.style.left = (x < 0) ? '0px' : x + 'px';
  objPopup.style.width = divWidth + 'px';
  objPopup.style.height = divHeight + 'px';

  if (objOverlay)
  {
    objOverlay.style.height = (arrayPageSize[1] + 'px');
    objOverlay.style.display = 'block';
  }

  objPopup.style.display = 'block';
  return id;
}

function hidePopup(id)
{
  var objPopup = document.getElementById(id);
  var objOverlay = document.getElementById('ovr');
  if (objOverlay)
  {
    objOverlay.style.height = '0px';
    objOverlay.style.display = 'none';
  }
  if (!objPopup)
  {
    return false;
  }
  objPopup.style.display = 'none';
  return id;
}
