/* $Id: dynoverlay.js,v 0.1.0.1 2009/03/25 $ */

/**
 * (c)copyright 2009 by rion@bluewin.ch
 */

function getPageSize() {
    var pageWidth = 800;
    var pageHeight = 600;
    if (document.body.scrollHeight > document.body.offsetHeight) { // not Mac
      pageWidth = document.body.scrollWidth;
      pageHeight = document.body.scrollHeight;
    }
    else if (window.innerHeight && window.scrollMaxY) {
      pageWidth = window.innerWidth + window.scrollMaxX;
      pageHeight = window.innerHeight + window.scrollMaxY;
    }
    else { // Mac
      pageWidth = document.body.offsetWidth;
      pageHeight = document.body.offsetHeight;
    }
    return [pageWidth, pageHeight]
}
function getPageScroll() {
    var xScroll, yScroll = 0;
    if (self.pageYOffset) {
      yScroll = self.pageYOffset;
      xScroll = self.pageXOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop) {  // IE strict
      yScroll = document.documentElement.scrollTop;
      xScroll = document.documentElement.scrollLeft;
    }
    else if (document.body) {// IE
      yScroll = document.body.scrollTop;
      xScroll = document.body.scrollLeft;
    }
    return [xScroll,yScroll];
}
function getWindowSize() {
    var windowWidth = 800;
    var windowHeight = 600;
    if (self.innerHeight) { // not IE
      if (document.documentElement.clientWidth) {
        windowWidth = document.documentElement.clientWidth;
      }
      else {
        windowWidth = self.innerWidth;
      }
      windowHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight) { // IE6 strict
      windowWidth = document.documentElement.clientWidth;
      windowHeight = document.documentElement.clientHeight;
    }
    else if (document.body) { // IE
      windowWidth = document.body.clientWidth;
      windowHeight = document.body.clientHeight;
    }
    return [windowWidth, windowHeight];
}


var overlay = null;
var overlaybg = null;
var overlayc = null;
var overlayx = null;
var overlayPageSize = null;


function overlayPosition() {
  if(overlay) {
    var w = getWindowSize();
    var p = overlayPageSize;
    overlay.style.width = overlaybg.style.width = ((w[0]<p[0])?p[0]:w[0]-1)+"px";
    overlay.style.height = overlaybg.style.height = ((w[1]<p[1])?p[1]:w[1]-1)+"px";
  }
}

function overlayPositionContent() {
  if(overlayc && (overlayc.overlayLoaded>0)) {
    var w = getWindowSize();
    var s = getPageScroll();
    var scale = 1;
    var iw = overlayc.overlayWidth;
    var ih = overlayc.overlayHeight;
    if(iw > w[0]-64) scale = (w[0]-64) / iw;
    if(ih > w[1]-80) { if(scale > ((w[1]-80)/ih)) scale = (w[1]-80) / ih; }
    overlayc.style.width = Math.floor(iw*scale)+"px";
    overlayc.style.height = Math.floor(ih*scale)+"px";
    var bh = 8;
    var bv = 8;
    if(overlayc.dynBorder == true) {
      bh = Math.floor((w[0] - iw*scale) * 0.05 + 8);
      bv = Math.floor((w[1] - ih*scale) * 0.05 + 8);
      overlayc.style.borderTop = bv+"px solid white";
      overlayc.style.borderBottom = bv+"px solid white";
      overlayc.style.borderLeft = bh+"px solid white";
      overlayc.style.borderRight = bh+"px solid white";
    }
    overlayc.style.left = Math.floor((w[0]-iw*scale)/2+s[0]-bh)+"px";
    overlayc.style.top = Math.floor((w[1]-ih*scale)/2+s[1]-bv +8)+"px";
    overlayx.style.left = Math.floor((w[0]+iw*scale)/2+s[0]+bh-36-4 )+"px";
    overlayx.style.top = Math.floor((w[1]-ih*scale)/2+s[1]-bv-36 +8)+"px";
  }
}

function overlayTimeout(last) {
  var now = (new Date()).getTime();
  var step = 50;
  if((last > 0) && (now >= last)) step = now-last;
  if(overlay) {
    if(overlay.overlayState == 0) {
      if(overlay.overlayOpacity > 0) overlay.overlayOpacity -= 0.1*step/50;
      if(overlay.overlayOpacity < 0) {
        overlay.overlayOpacity = 0;
        document.getElementsByTagName("body")[0].removeChild(overlay);
        overlay.overlayState = -1;
      }    
    }
    if(overlay.overlayState == 1) {
      if(overlay.overlayOpacity < 1) overlay.overlayOpacity += 0.1*step/50;
      if(overlay.overlayOpacity > 1) overlay.overlayOpacity = 1;
    }
    if(overlay.overlayState < 2) {
      if(overlayc) {
        overlayc.style.opacity = overlay.overlayOpacity;
        overlayc.style.filter = "Alpha(opacity="+Math.floor(overlay.overlayOpacity*100)+")";
      }
      overlaybg.style.opacity = overlay.overlayOpacity*0.75;
      overlaybg.style.filter = "Alpha(opacity="+Math.floor(overlay.overlayOpacity*0.75*100)+")";
      overlay.style.visibility = (overlay.overlayOpacity>0)?"visible":"hidden";
      if((overlay.overlayState==1)&&(overlay.overlayOpacity==1)) overlay.overlayState = 2;
    }
    if(overlay.overlayState >= 0) {
      overlayPosition();
      overlayPositionContent();
      window.setTimeout("overlayTimeout("+now+")", 50);
    }
  }
}

function overlayClose() {
  if(overlay) overlay.overlayState = 0; // close overlay
}

function initOverlay(onclickclose) {
  if(!overlay) {
    overlay = document.createElement("div");
    overlay.setAttribute("id", "overlay");
    overlay.style.position = "absolute";
    overlay.style.zIndex = 1000;
    overlay.style.top = "0px";
    overlay.style.left = "0px";
    overlay.style.zoom = 1; // better IE transparency
    if(onclickclose) overlay.onclick = function() { overlayClose(); }
    overlay.style.cursor = "pointer";
    overlay.overlayState = -1;
    overlay.overlayOpacity = 0.0001;
  }
  if(!overlaybg) {
    overlaybg = document.createElement("div");
    overlaybg.setAttribute("id", "overlaybg");
    overlaybg.style.position = "absolute";
    overlaybg.style.top = "0px";
    overlaybg.style.left = "0px";
    overlaybg.style.zoom = 1; // better IE transparency
    overlaybg.style.backgroundColor = "#333";
    overlaybg.style.zIndex = 1001;
    overlay.appendChild(overlaybg);
  }
  if(!overlayx) {
    overlayx = document.createElement("a");
    overlayx.setAttribute("id","overlayclose");
    overlayx.setAttribute("href","javascript:overlayClose();");
    overlayx.style.position = "absolute";
    overlayx.style.top = "0px";
    overlayx.style.left = "0px";
    overlayx.style.backgroundColor = "#fff";
    overlayx.style.padding = "4px";
    overlayx.style.zIndex = 1003;
    var i = document.createElement("img");
    i.setAttribute("src","/images/overlayclose.gif");
    i.setAttribute("title","close");
    i.setAttribute("alt","close");
    overlayx.appendChild(i);
    overlay.appendChild(overlayx);
  }
  overlay.style.visibility = "hidden";
  overlayPageSize = getPageSize();
  if(overlay.overlayState < 0) document.getElementsByTagName("body")[0].appendChild(overlay);
  overlay.overlayState = 1; // fade in
  overlayTimeout();
}

function overlayImage(src) {
  initOverlay(true);
  if(overlayc) overlay.removeChild(overlayc);
  overlayc = new Image();
  overlayc.overlayLoaded = 0;
  overlayc.onerror = function() { alert("image not available"); }
  overlayc.onclick = function() { overlayClose(); }
  overlayc.onload = function() {
  overlayc.overlayWidth = overlayc.width; // save content dimensions
  overlayc.overlayHeight = overlayc.height;
  if(!overlayc.overlayWidth) try {
      overlayc.overlayWidth = overlayc.naturalWidth;
      overlayc.overlayHeight = overlayc.naturalHeight;
    } catch(e) {}
    overlayc.style.position = "absolute";
    overlayc.style.zIndex = 1002;
    overlayc.style.zoom = 1; // better IE transparency
    overlayc.onload = function() {}
    overlayc.dynBorder = true;
    overlayc.overlayLoaded = 1;
    overlayPosition();
    overlayPositionContent();
    overlayc.style.visibility = "visible";
  }
  overlayc.style.visibility = "hidden";
  overlayc.style.opacity = 0;
  overlayc.style.filter = "Alpha(opacity=0)";
  overlayc.src = src;
  overlay.appendChild(overlayc);
  overlayc.style.backgroundColor = "#fff";
  overlayc.style.border = "8px solid #fff";
  return false;
}

function overlayFlash(movie, width, height, basedir) {
  initOverlay(false);
  if(overlayc) overlay.removeChild(overlayc);
  overlayc = document.createElement("div");
  overlayc.setAttribute("id", "overlaycontent");
  overlayc.overlayWidth = width;
  overlayc.overlayHeight = height;
  overlayc.overlayLoaded = 1;
  overlayc.onerror = function() { alert("image not available"); }
  overlayc.style.position = "absolute";
  overlayc.style.zIndex = 1002;
  overlayc.style.backgroundColor = "#fff";
  overlayc.style.border = "8px solid #fff";
  overlayc.dynBorder = false;
  overlayc.style.visibility = "visible";
  overlayc.style.opacity = 0;
  overlayc.style.filter = "Alpha(opacity=0)";
  overlay.appendChild(overlayc);
  var d = document.createElement("div");
  d.setAttribute("id", "overlaycontent2");
  d.innerHTML = '<a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a>';
  overlayc.appendChild(d);
  swfobject.embedSWF(movie, "overlaycontent2", "100%", "100%", "10.0.0", "/expressInstall.swf", {} ,{base:basedir, scale:"showAll",menu:"false"} );
  overlayPosition();
  overlayPositionContent();
  return false;
}




