Prototype.require("jojoPopupEffect.js");Popup=Class.create(PopupEffect,{onResizeHandler:null,scrollX:0,scrollY:0,fadeBackgroundElement:null,oldElement:null,oldParentElement:null,initialize:function($super,b,a){$super(b,a);this.fadeBackgroundElement=null;this.setOptions({fadeBackground:false,parallelBackgroundEffect:true,zIndex:100,shadow:false,shadowClass:"Shadow",onResize:null,automoveToBody:false});this.setOptions(a);a=a||{};this.options.fadeBackgroundOption=Object.extend({backgroundColor:"#888"},a.fadeBackgroundOption||{})},show:function($super){if(this.element&&!this.element.visible()){if(this.options.automoveToBody){if(this.oldParentElement==null){this.oldParentElement=this.element.up()}$(document.body).appendChild(this.element)}if(this.options.fadeBackground&&this.fadeBackgroundElement==null){Prototype.require("jojoFullscreenElement.js");var h=this.options.fadeBackgroundOption;h.zIndex=this.options.zIndex-2;if(!this.options.parallelBackgroundEffect){h.onShow=this.show.bind(this)}this.fadeBackgroundElement=new FullScreenElement("",h);this.fadeBackgroundElement.show();if(!this.options.parallelBackgroundEffect){return}}if(this.options.shadow){var d=this.element.up();if(this.oldParentElement==null){this.oldParentElement=this.element.up()}this.oldElement=this.element;this.element=new Element("TABLE",{cellPadding:0,cellSpacing:0,border:0});this.element.hide();this.element.addClassName(this.options.shadowClass);var a=new Element("TBODY");var i=new Element("TR");a.appendChild(i);i.appendChild(new Element("TH",{"class":"TopLeftShadow"}));i.appendChild(new Element("TH",{"class":"TopShadow"}));i.appendChild(new Element("TH",{"class":"TopRightShadow"}));var i=new Element("TR");a.appendChild(i);i.appendChild(new Element("TH",{"class":"LeftShadow"}));i.appendChild(new Element("TD"));i.appendChild(new Element("TH",{"class":"RightShadow"}));var i=new Element("TR");a.appendChild(i);i.appendChild(new Element("TH",{"class":"BottomLeftShadow"}));i.appendChild(new Element("TH",{"class":"BottomShadow"}));i.appendChild(new Element("TH",{"class":"BottomRightShadow"}));this.element.appendChild(a);this.element.down("TD").appendChild(this.oldElement);if(Prototype.Browser.Gecko){var e=new Element("DIV");e.hide();e.appendChild(this.element);this.element.show();this.element=e}this.oldElement.show();d.appendChild(this.element)}dimension=Prototype.Browser.getDimensions();this.scrollX=dimension.offsetX;this.scrollY=dimension.offsetY;this.element.setStyle({visibility:"hidden",position:"absolute"});this.element.show();var j=this.element.getDimensions();this.element.hide();this.element.setStyle({visibility:"visible"});var c=parseInt(((dimension.clientWidth-j.width)/2)+dimension.offsetX);var b=parseInt(((dimension.clientHeight-j.height)/2)+dimension.offsetY);var g;var f;if(j.height>dimension.clientHeight){if(j.height>=dimension.height){f=0}else{f=[[0,b].max(),dimension.height-j.height].min()}}else{f=b}if(j.width>dimension.clientWidth){if(j.width>=dimension.width){g=0}else{g=[[0,c].max(),dimension.width-j.width].min()}}else{g=c}this.element.setStyle({top:f+"px",left:g+"px",zIndex:this.options.zIndex});this.onResizeHandler=this.onResize.bindAsEventListener(this);this.onScrollHandler=this.onScroll.bindAsEventListener(this);Event.observe(window,"scroll",this.onScrollHandler);$super()}},onBrowserResize:function(){var a=Prototype.Browser.getDimensions();this.scrollX=a.offsetX;this.scrollY=a.offsetY;this.onResize();if(this.fadeBackgroundElement!=null){this.fadeBackgroundElement.onBrowserResize()}},onScroll:function(){this.onResize()},onResize:function(){if(this.options.onResize){this.options.onResize.apply(this,$(arguments))}var e=Prototype.Browser.getDimensions();var b=this.element.getDimensions();var d=parseInt(((e.clientWidth-b.width)/2)+e.offsetX);var c=parseInt(((e.clientHeight-b.height)/2)+e.offsetY);var a;var f;if(b.height>e.clientHeight){if(b.height>=e.height){f=0}else{scrollOffsetY=parseInt((b.height-e.clientHeight)/2);direction=1;if(e.offsetY>=this.scrollY){direction=-1}if(this.scrollY<scrollOffsetY){this.scrollY=scrollOffsetY}else{if(this.scrollY>e.height-e.clientHeight-scrollOffsetY){this.scrollY=e.height-e.clientHeight-scrollOffsetY}}offset=parseInt(Math.abs(this.scrollY-e.offsetY));f=c+[scrollOffsetY,offset].min()*direction;if(scrollOffsetY<=offset){this.scrollY=e.offsetY+scrollOffsetY*direction}}}else{f=c}if(b.width>e.clientWidth){if(b.width>=e.width){a=0}else{scrollOffsetX=parseInt((b.width-e.clientWidth)/2);direction=1;if(this.scrollX<scrollOffsetX){this.scrollX=scrollOffsetX}else{if(this.scrollX>e.width-e.clientWidth-scrollOffsetX){this.scrollX=e.width-e.clientWidth-scrollOffsetX}}if(e.offsetX>=this.scrollX){direction=-1}offset=parseInt(Math.abs(this.scrollX-e.offsetX));a=d+[scrollOffsetX,offset].min()*direction;if(scrollOffsetX<=offset){this.scrollX=dimensions.offsetX+scrollOffsetX*direction}}}else{a=d}this.element.setStyle({top:f+"px",left:a+"px"});if(this.oOverlappingFix!=null){this.oOverlappingFix.update(this.element)}if(this.fadeBackgroundElement!=null){this.fadeBackgroundElement.onBrowserResize()}},hide:function($super){if(this.fadeBackgroundElement!=null&&(this.options.fadeBackgroundOption.onHideEffect!=null||this.options.fadeBackgroundOption.hideEffect!=null)&&this.options.parallelBackgroundEffect==true){this.fadeBackgroundElement.hide();this.fadeBackgroundElement=null}$super()},onHide:function($super){if(this.fadeBackgroundElement!=null){this.fadeBackgroundElement.hide();this.fadeBackgroundElement=null}Event.stopObserving(this.element,"resize",this.onResizeHandler);Event.stopObserving(window,"scroll",this.onScrollHandler);this.onResizeHandler=null;this.onScrollHandler=null;if(this.options.shadow){this.oldParentElement.appendChild(this.oldElement);this.element.remove();this.element=this.oldElement;this.element.hide()}else{if(this.options.automoveToBody){this.oldParentElement.appendChild(this.element)}}$super()},onShow:function($super){if(this.fadeBackgroundElement!=null){this.fadeBackgroundElement.onBrowserResize()}$super()},visible:function(){return this.element.visible()}});
