/**
 * Overlay script for lightbox-like popups
 * created  by Marcin Dziennik
 * modified for ACEF
 */

function overlay() {
  var oTemp=new Object;
  oTemp.oBody=null;
  oTemp.aOverlayStack=new Array();
  oTemp.init=function() {
    this.oBody=window.document.getElementsByTagName('body')[0];
    this.innerDivClass="overlay_content";

    this.sShadeMode="simple"; // [simple|add]
    this.iShadeLevel=60;
  }
  oTemp.shade=function (oObj,iLevel) {
      var iOpacity=iLevel/100;
      var sFilter="alpha(opacity="+iLevel+")";
      oObj.style.opacity=iOpacity+"";
      oObj.style.filter=sFilter;
  }

  oTemp.add=function () {
      if(this.oBody==null)
        this.init();
      var sMargin=this.oBody.style.margin;
      this.oBody.style.margin="0";
      var oDiv=document.createElement('div');
      oDiv.style.position="fixed";
      var iIndex=this.aOverlayStack.length+1;
      oDiv.style.zIndex=iIndex+1;
      oDiv.id="overlay_"+iIndex;
      oDiv.style.top="0";
      oDiv.style.bottom="0";
      oDiv.style.left="0";
      oDiv.style.right="0";
      oDiv.style.display="block";
      oDiv.className="overlay";
      this.shade(oDiv,this.iShadeLevel);
      oDiv.style.background="#000";
      oDiv.style.height="100%";
      var oInnerDiv=document.createElement('div');
      oInnerDiv.className=this.innerDivClass;
      oInnerDiv.style.padding="50px 50px 50px 50px";
      oInnerDiv.style.zIndex=iIndex+2;
      oInnerDiv.style.filter="none";
      oInnerDiv.style.position="absolute";
      oInnerDiv.id="overlay_"+iIndex+"_content";
      if(utils.getIEVersion()==6) {
        var oIEDiv=document.createElement('div');
        oIEDiv.innerHTML="&nbsp;";
        oIEDiv.style.width=document.body.clientWidth+"px";
        var iHeight=document.documentElement.clientHeight;
        if(iHeight==0)
          oIEDiv.style.height=document.body.clientHeight+"px";
       else
           oIEDiv.style.height=iHeight;
        oDiv.appendChild(oIEDiv);
        oDiv.style.position="absolute";
        oDiv.style.height=document.body.clientHeight+"px";
        var oIframe=document.createElement('iframe');
        oIframe.style.position="absolute";
        oIframe.style.width=document.body.clientWidth+"px";
        oIframe.style.height=document.body.clientHeight+"px";
        oIframe.style.filter="mask()";
        oIframe.style.top="0";
        oIframe.style.left="0";
        oIframe.style.zIndex=iIndex+1;
        oIframe.id="overlay_"+iIndex+"_iframe";
        this.oBody.appendChild(oIframe);
      }
      var iIndex=this.aOverlayStack.length-1;
      if(this.sShadeMode=="simple"&&iIndex>=0) {
        this.shade(this.aOverlayStack[iIndex],0);
      }
      this.oBody.margin=sMargin;
      this.aOverlayStack.push(oDiv);
      this.oBody.appendChild(oDiv);
      this.oBody.appendChild(oInnerDiv);
      this.center(oInnerDiv);
      return oInnerDiv;
  }
  oTemp.remove=function() {
    var oToDelete=this.aOverlayStack.pop();
    var iIndex=this.aOverlayStack.length-1;
    if(this.sShadeMode=="simple"&&iIndex>=0) {
        this.shade(this.aOverlayStack[iIndex],this.iShadeLevel);
    }
     if(!oToDelete)
      return false;
    var oContent=document.getElementById(oToDelete.id+"_content");
    var oIframe=document.getElementById(oToDelete.id+"_iframe");
    this.oBody.removeChild(oContent);
    this.oBody.removeChild(oToDelete);
    if(oIframe)
      this.oBody.removeChild(oIframe);
  }
  oTemp.center=function (oObj) {
    var iSW=utils.getViewWidth();
    var iSH=utils.getViewHeight();
    var iH=oObj.offsetHeight;
    var iW=oObj.offsetWidth;
    var iLeft=iSW/2-iW/2;
    var iTop=iSH/2-iH/2;
    var iYOffset= (document.documentElement && document.documentElement.scrollTop) ?  document.documentElement.scrollTop : document.body.scrollTop;
    iTop+=parseInt(iYOffset);
    oObj.style.top=iTop+"px";
    oObj.style.left=iLeft+"px";
  }
  oTemp.popup=function (sContent,useExisting) {
     if(this.aOverlayStack.length>0&&useExisting){
       var oCurrent=this.aOverlayStack[this.aOverlayStack.length-1];
       var oContent=document.getElementById(oCurrent.id+'_content');
       oContent.innerHTML=sContent;
       this.center(oContent);
     }
     else {
        var oNew=this.add();
        oNew.innerHTML=sContent;
        this.center(oNew);
     }
  }
  return oTemp;
}


window.overlay=overlay();

