function DialogController(){this.dialogTypes={};
this.dialogs={};
this.register("tooltip",TooltipDialog);
this.register("calendar",CalendarDialog);
this.register("login",LoginDialog);
this.register("costcalculator",CenteredDialog);
this.register("slidecalculator",CalculatorDialog);
this.register("exactusage",CenteredDialog);
this.register("graph",GraphDialog);
this.register("image",ImageDialog);
this.register("combi",CombiDialog);
this.register("delete",CenteredDialog);
this.register("welcome",CenteredDialog);
this.register("saving-tip-form",CenteredDialog);
EventListener.addEvent(document,"click",this.scope(this.tryClose));
LinkListener.addRelation(/(^|\s)dialog-[^ ]+/i,this.scope(this.displayDialog))
}DialogController.prototype={register:function(B,A){this.dialogTypes[B]=A
},displayDialog:function(E,D){if(this.currentDialog){this.currentDialog.display(false);
this.toggleOverlay(false)
}var B=/dialog-([^ ]+)/i.exec(D);
var A=B[0];
var C=B[1];
switch(C){case"close":break;
default:return this.createDialog(A,E,C);
break
}this.currentDialog=null;
return true
},createDialog:function(A,E,D){var C=this.dialogs[D];
if(!C){var B=this.dialogTypes[D]||Dialog;
C=new B(A,this,D,E.search)
}this.currentDialog=this.dialogs[D]=C;
C.setOrigin(E);
C.toggle(true);
return C
},tryClose:function(B){if(this.currentDialog){var A=EventListener.getTarget(B);
this.currentDialog.tryClose(A)
}},toggleOverlay:function(A){Overlay.toggle(A)
},scope:function(B){var A=this;
return function(){return B.apply(A,arguments)
}
}};
var Overlay={init:function(){var A=document.getElementsByTagName("body")[0];
var B=document.createElement("div");
B.id="overlay";
this.container=A.appendChild(B)
},setHeight:function(){var A=document.body.scrollHeight;
var B=window.innerHeight||document.documentElement.clientHeight;
if(A<B){A=B
}this.container.style.height=A+"px"
},toggle:function(A){if(!this.container){this.init()
}this.setHeight();
this.container.style.display=A?"block":"none"
}};
function Dialog(A,B,C,D){this.container=this.retrieveDialog(A,D);
if("costcalculator"==C||"exactusage"==C){CostCalculator.prototype.init()
}this.controller=B;
this.type=C
}Dialog.prototype={OFFSET_LEFT:-5,OFFSET_RIGHT:30,OFFSET_TOP:0,OFFSET_BOTTOM:30,setAction:function(A){this.action=A
},setOrigin:function(A){this.origin=A
},action:function(){},activate:function(){},toggle:function(A){this.controller.toggleOverlay(A);
this.activate(A);
this.display(A)
},display:function(E){var H=this.container;
var K=this.origin;
var J=Utils.calculateLeft(K);
var I=Utils.calculateTop(K);
if(typeof (K)!="undefined"){if(navigator.appName.indexOf("Netscape")!=-1&&K.parentNode.tagName=="CAPTION"){J=J-25;
I=I-K.offsetParent.offsetTop
}}var G=H.style;
G.display=E?"block":"none";
var L=H.offsetWidth;
var D=H.offsetHeight;
var F=window.innerWidth||document.documentElement.clientWidth;
var M=window.innerHeight||document.documentElement.clientHeight;
var A=window.pageYOffset||document.documentElement.scrollTop;
var C=J+this.OFFSET_RIGHT;
var B=I+this.OFFSET_TOP;
if((C+L)>(F)){C=J-L+this.OFFSET_LEFT
}if((B+D)>(M+A)){B=I-D+this.OFFSET_BOTTOM
}this.position(C,B);
H.style.visibility=E?"visible":"hidden"
},position:function(A,C){var B=this.container.style;
B.left=A+"px";
B.top=C+"px"
},tryClose:function(A){while(A){if(A==this.container||A==this.origin){return 
}A=A.parentNode
}this.toggle(false)
},scope:function(B){var A=this;
return function(){return B.apply(A,arguments)
}
},retrieveDialog:function(C,B){if($("#marker").size()==0){var D="/includes/dialogs.jsp";
if(document.location.href.indexOf("nuon.nl/zakelijk")>0){var D="/zakelijk"+D
}if(document.location.href.indexOf("nuon.com/nl")>0){var D="/nl"+D
}if(typeof (B)!="undefined"||B!=null){var D=D+B
}var A=$.ajax({url:D,type:"GET",async:false}).responseText;
$("body").append(A);
new DesignControls()
}return document.getElementById(C)
}};
TooltipDialog=Class.extend(Dialog,function(){this.title=this.container.getElementsByTagName("h3")[0];
this.body=this.container.getElementsByTagName("p")[0]
},{activate:function(B){var C=this.origin.firstChild;
if((C.parentNode.className=="information-img"||C.nodeValue==null)&&C.alt!="undefined"){for(var A=0;
A<this.origin.childNodes.length;
A++){if(this.origin.childNodes[A].tagName=="IMG"){infhoudTitel=this.origin.childNodes[A].getAttribute("alt");
this.title.innerHTML='<a href="#" rel="dialog-close">X</a>'+infhoudTitel;
this.body.innerHTML=this.origin.childNodes[A].getAttribute("title")
}}}else{infhoudTitel=this.origin.firstChild.nodeValue;
this.title.innerHTML='<a href="#" rel="dialog-close">X</a>'+infhoudTitel;
this.body.innerHTML=this.origin.getAttribute("title")
}}});
CenteredDialog=Class.extend(Dialog,function(){},{position:function(){var A=((window.innerWidth||document.documentElement.clientWidth)-this.container.offsetWidth)/2;
var B=((window.innerHeight||document.documentElement.clientHeight)+(window.pageYOffset||document.documentElement.scrollTop)-this.container.offsetHeight)/2;
Dialog.prototype.position.apply(this,[A,B])
}});
GraphDialog=Class.extend(Dialog,function(){},{position:function(){var C=this.origin;
var B=this.container.offsetWidth;
var A=Utils.calculateLeft(C)-B+30;
var D=Utils.calculateTop(C);
Dialog.prototype.position.apply(this,[A,D])
}});
ImageDialog=Class.extend(CenteredDialog,function(){},{activate:function(){this.container.getElementsByTagName("img")[0].src=this.origin.href
}});
CombiDialog=Class.extend(Dialog,function(){},{position:function(){var C=this.origin;
var B=this.container.offsetWidth;
var A=Utils.calculateLeft(C)-B+30;
var D=Utils.calculateTop(C);
Dialog.prototype.position.apply(this,[A,D])
}});
CalendarDialog=Class.extend(Dialog,function(){this.title=this.container.getElementsByTagName("h3")[0];
try{this.calendar=new Calendar(this.container);
this.calendar.setAction(this.scope(this.handleDate))
}catch(A){throw Error("calendar.js not included")
}},{activate:function(A){this.title.innerHTML='<a href="#" rel="dialog-close">X</a>'+this.origin.getAttribute("title");
if(A){this.setOriginalDate()
}},setOriginalDate:function(){var D=Utils.getParentByNodeName(this.origin,"div");
var B=D.getElementsByTagName("select");
var A=new Date(parseInt(B[1].value),(parseInt(B[0].value)-1),1);
var C=/[^ ]+$/.exec(this.origin.getAttribute("rel"));
this.calendar.cloneSelects(B[1],B[0]);
this.calendar.setDate(A,C)
},handleDate:function(B){var D=Utils.getParentByNodeName(this.origin,"div");
var A=D.getElementsByTagName("input")[0];
var C=D.getElementsByTagName("select");
A.value=B.getDate();
Utils.setSelectValue(C[0],B.getMonth()+1);
Utils.setSelectValue(C[1],B.getFullYear());
if(typeof (FullDateFieldUtil)!="undefined"){FullDateFieldUtil.update(A.id)
}this.tryClose()
}});
CalculatorDialog=Class.extend(CenteredDialog,function(){this.sliders=[];
var B=getElementsByAttributeValue("class","slider",this.container);
for(var A=0;
A<B.length;
A++){this.sliders[A]=new Slider(B[A])
}},{display:function(){Dialog.prototype.display.apply(this,arguments);
for(var A=0;
A<this.sliders.length;
A++){this.sliders[A].updateSlider()
}}});
FormDialog=Class.extend(Dialog,function(){EventListener.addEvent(this.container,"click",this.tryClose,this)
},{toggle:function(A){Overlay.toggle(A);
this.activate(A);
this.display(A)
},position:function(){var A=((window.innerWidth||document.documentElement.clientWidth)-this.container.offsetWidth)/2;
var B=(window.pageYOffset||document.documentElement.scrollTop)+((window.innerHeight||document.documentElement.clientHeight)-this.container.offsetHeight)/2;
Dialog.prototype.position.apply(this,[A,B])
},tryClose:function(B){var A=EventListener.getTarget(B,"a");
if(A&&A.rel){switch(A.rel){case"dialog-close":this.toggle(false);
EventListener.cancelEvent(B);
break;
case"dialog-ok":this.toggle(false);
this.controller.confirm(true);
EventListener.cancelEvent(B);
break;
case"dialog-cancel":this.toggle(false);
this.controller.confirm(false);
EventListener.cancelEvent(B);
break;
case"dialog-continue":this.toggle(false);
this.controller.confirm(true);
EventListener.cancelEvent(B);
break;
case"dialog-stop":this.toggle(false);
this.controller.confirm(false);
EventListener.cancelEvent(B);
break;
case"dialog-loginpage":this.toggle(false);
this.controller.confirm();
EventListener.cancelEvent(B);
break
}}}});
LoginDialog=Class.extend(CenteredDialog,function(){},{display:function(){Dialog.prototype.display.apply(this,arguments);
var A=this.container.getElementsByTagName("input");
for(var B=0;
B<A.length;
B++){if(A[B].name=="ct_orig_uri"){A[B].value=document.location.pathname;
break
}}}});
EventListener.addEvent(window,"load",function(){new DialogController()
});