var content_shield = null;
var modal_dialog = null;

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 body_onscroll() {
  window.status = getScrollXY();
}

function show_modal_dialog(dialog_html, hide_on_outside_click) {
  if (content_shield == null) {
    content_shield = document.createElement("div");
    content_shield.style.height = getPageSize()[1];
    if (hide_on_outside_click) {
    	content_shield.innerHTML='<img width="100%" height="100%" style="z-index:4;" src="/images/spacer.gif" onclick="hide_wnw_modal_dialog();"/>';
    } else {
    	content_shield.innerHTML='';
    }
    document.body.appendChild(content_shield);
    content_shield.className = "contentFaded";
    content_shield.id = "contentFaded";
    window.status="disabled";
    //Because the div is only ever going to be the height of the displayable area of the browser (100%),
    //it needs to move with the scrollbars (width will always be 100%). We could instead explicitly set
    //div height to the complete height of the page including non-visible scrollable areas, but then
    //we would need to handle window resize events as well.
    //eg. addEvent(document.body, "onscroll", body_onscroll);
  }
  modal_dialog = document.getElementById("internal_dialog");
  modal_dialog.innerHTML = dialog_html;
  modal_dialog.style.display = "block";
}

function set_dialog_size(w, h) {
  modal_dialog = document.getElementById("internal_dialog");
  modal_dialog.style.width = w;
  modal_dialog.style.height = h;
	w_int = w.replace('px', '');
	modal_dialog.style.marginLeft = '-' + (w_int/2) + 'px';
}

function hide_modal_dialog() {
  modal_dialog.style.display = "none";
  if (content_shield != null) {
    document.body.removeChild(content_shield);
    content_shield = null;
  }
}

function addEvent(obj, evType, fn, useCapture) {
  //From http://www.scottandrew.com/weblog/articles/cbs-events
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
  }
}

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 ];
}
