window.getParams=function(_1,_2){
newOptions={};
for(var i in _2){
if((_1[i]!=undefined)||(_1[i]!=null)){
newOptions[i]=_1[i];
}else{
newOptions[i]=_2[i];
}
}
return newOptions;
};
var PopupDiv=new Class({isShown:0,options:{onBeforeStart:false,onAfterStart:false,onBeforeClose:false,onAfterClose:false,onCompleteAjax:false,onErrorAjax:false,title:"",escclick:false,esckey:false,resizable:false,draggable:false,styles:{princDiv:"princDivModalDiv",titleDiv:"titleDivModalDiv",contentDiv:"contentDivModalDiv",imgCloser:"imgCloserModalDiv",resizerDiv:"resizerDivModalDiv",hiderDiv:"hiderBackGroundModalDiv"},dimension:{top:"0",left:"0",width:"200px",height:"200px"},srcCloser:contextPath_js+"/img/closer.jpg",enableEffect:false,background:true,autoShow:false},initialize:function(_4){
if(!_4){
return;
}
this.options=window.getParams(_4,this.options);
if(_4.styles){
this.options.styles=window.getParams(_4.styles,this.options.styles);
}
if(_4.dimension){
this.options.dimension=window.getParams(_4.dimension,this.options.dimension);
}
this.iframe=new Element("iframe");
this.princDiv=new Element("div");
this.titleDiv=new Element("div");
this.contentDiv=new Element("div");
this.imgCloser=new Element("span",{alt:"Close",id:"imgCloserModalDivId"});
this.closeText=new Element("font");
this.xText=new Element("font");
this.closeText.setHTML("Sluit venster");
this.closeText.setStyle("text-decoration","underline");
this.xText.setHTML("&nbsp;&nbsp;&nbsp;&nbsp;X");
this.imgCloser.appendChild(this.closeText);
this.imgCloser.appendChild(this.xText);
this.titleSpan=new Element("span");
this.hiderBackGroundDiv=new Element("div");
this.resizerDiv=new Element("div");
this.titleSpan=new Element("span").appendChild(document.createTextNode(this.options.title));
this.titleDiv.appendChild(this.titleSpan);
this.titleDiv.appendChild(this.imgCloser);
this.princDiv.appendChild(this.iframe);
this.princDiv.appendChild(this.titleDiv);
this.princDiv.appendChild(this.contentDiv);
this.princDiv.appendChild(this.resizerDiv);
this.princDiv.addClass("princDivModalDiv");
this.princDiv.setStyles(this.options.dimension);
if(window.ie){
this.princDiv.setStyles({"position":"absolute","top":(window.getBodyPos()).y+this.princDiv.getStyle("top").toInt()});
}
this.titleDiv.addClass("titleDivModalDiv");
this.contentDiv.addClass("contentDivModalDiv");
this.imgCloser.addClass("titleSpanModal");
if(window.ie6){
this.imgCloser.setStyle("margin-right","0px");
}
this.resizerDiv.addClass("resizerDivModalDiv");
this.hiderBackGroundDiv.addClass("hiderBackGroundModalDiv");
if(this.options.escclick){
this.setEscClick();
}
if(this.options.esckey){
this.setEscKey();
}
this.effectDiv=null;
if(this.options.enableEffect&&this.options.background){
this.effectDiv=this.hiderBackGroundDiv.effects({duration:500,transition:Fx.Transitions.Quart.easeOut});
}
if(this.options.autoShow){
this.show();
}
this.princDiv.getTitle=(function(){
return this.titleDiv;
}).bind(this);
this.princDiv.getContent=(function(){
return this.contentDiv;
}).bind(this);
this.princDiv.getCloserImg=(function(){
return this.imgCloser;
}).bind(this);
this.princDiv.getParentClass=(function(){
return this;
}).bind(this);
return this;
},completeAjax:function(_5){
if(typeof _5=="object"){
_5=_5.responseText;
}
if(!_5){
this.show();
}
if(_5==this.options.errAjaxResponse){
if(this.options.onErrorAjax){
this.options.onErrorAjax(this.princDiv,_5);
return this;
}
}
if(this.options.onCompleteAjax){
this.options.onCompleteAjax(this.princDiv,_5);
return this;
}
this.setContentInnerHTML(_5);
if(this.options.autoShow){
this.show();
}
},callAjax:function(_6){
_6=window.getParams(_6,{url:false,parameter:false,errResponse:false});
if(!_6.url){
return this;
}
if(_6.parameter){
_6.url+="?"+_6.parameter;
}
this.options.errAjaxResponse=_6.errResponse;
ajaxObj=new Ajax(_6.url,{method:"POST",onComplete:this.completeAjax.bind(this),onFailure:this.completeAjax.bind(this)}).request();
return this;
},setEscKey:function(){
document.addEvent("keypress",this.documentListener.bindAsEventListener(this));
},documentListener:function(e){
if(e.keyCode==27){
this.close(e);
}
},setEscClick:function(){
this.imgCloser.addEvent("click",this.close.bindAsEventListener(this));
},setDimensionPos:function(_8,_9,_a,_b){
this.setTop(_9+"px");
this.setLeft(_8+"px");
this.setWidth(_a+"px");
this.setHeight(_b+"px");
this.setEffects();
},setTop:function(_c){
princDiv.setStyle("top",_c);
},setLeft:function(_d){
princDiv.setStyle("left",_d);
},setHeight:function(_e){
princDiv.setStyle("height",_e);
},setWidth:function(_f){
princDiv.setStyle("width",_f);
},appendContentDiv:function(obj){
if(this.contentDiv){
if(obj){
this.contentDiv.appendChild(obj);
}
}
},setContentInnerHTML:function(_11){
if(this.contentDiv){
this.contentInnerDiv=new Element("div").setStyles({width:"100%",overflow:"auto"});
this.contentInnerDiv.setHTML(_11);
this.appendContentDiv(this.contentInnerDiv);
this.setContentInnerDivHeight();
}
},show:function(){
if(this.isShown==1){
return this;
}
this.setEffects();
this.setContentHeight();
if(this.options.onBeforeStart){
this.options.onBeforeStart(this.princDiv);
}
if(this.options.background){
if($(document.body).hasChild(this.hiderBackGroundDiv)){
document.body.removeChild(this.hiderBackGroundDiv);
}
document.body.appendChild(this.hiderBackGroundDiv);
}
document.body.appendChild(this.princDiv);
this.hiderBackGroundDiv.setStyle("opacity","0.0");
this.hiderBackGroundDiv.setStyle("display","block");
if(this.effectDiv){
this.effectDiv.start({"opacity":0.5}).chain((function(){
this.princDiv.setStyle("display","block");
}).bind(this));
}else{
this.hiderBackGroundDiv.setStyle("opacity","0.5");
this.princDiv.setStyle("display","block");
}
if(this.options.onAfterStart){
this.options.onAfterStart(this.princDiv);
}
this.isShown=1;
return this;
},close:function(e){
if(this.options.onBeforeClose){
this.options.onBeforeClose(this.princDiv);
}
this.princDiv.setStyle("display","none");
if(this.effectDiv){
this.effectDiv.start({"opacity":0}).chain((function(){
this.hiderBackGroundDiv.setStyle("display","none");
if(this.options.background){
document.body.removeChild(this.hiderBackGroundDiv);
}
}).bind(this));
}else{
this.hiderBackGroundDiv.setStyle("display","none");
if(this.options.background){
document.body.removeChild(this.hiderBackGroundDiv);
}
}
if(this.options.onAfterClose){
this.options.onAfterClose(this.princDiv);
}
document.body.removeChild(this.princDiv);
document.removeEvents("keypress",this.documentListener);
this.imgCloser.removeEvents("click",this.close);
this.options=null;
this.effectDiv=null;
},setEffects:function(){
var w=this.options.dimension.width;
var h=this.options.dimension.height;
if(this.options.draggable){
this.titleDiv.setStyle("cursor","move");
this.dragEffect=new Drag.Base(this.princDiv,{"container":document.body,"handle":this.titleDiv});
}
if(this.options.resizable){
this.resizerDiv.setStyle("cursor","nw-resize");
this.princDiv.makeResizable({limit:{x:[this.options.dimension.width,5000],y:[this.options.dimension.height,5500]},handle:this.resizerDiv,onComplete:(function(){
this.dragEffect.options.limit.x=[10,document.body.offsetWidth-this.princDiv.offsetWidth-10-10];
this.dragEffect.options.limit.y=[10,document.body.offsetHeight-this.princDiv.offsetHeight-10];
this.setContentHeight();
this.setContentInnerDivHeight();
}).bind(this)});
}
},setContentHeight:function(){
this.contentDiv.setStyle("height",this.princDiv.getStyle("height").toInt()-this.titleDiv.getStyle("height").toInt());
},setContentInnerDivHeight:function(){
if(this.contentInnerDiv){
this.contentInnerDiv.setStyle("height",this.contentDiv.getStyle("height").toInt()-(this.contentDiv.getStyle("height").toInt()-(this.resizerDiv.offsetTop-this.titleDiv.offsetHeight)));
}
},setClickOnOtherObj:function(obj){
if(obj){
$(obj).addEvent("click",this.close.bindAsEventListener(this));
}
}});
PopupDiv.implement(new Options,new Events);
