/* Transformed JS from: /fileadmin/jslib/fxconsulting/tools/utilities.js */
var Utilities={getURLParameters:function(){var a={};if(top.location.search.length>0){var c;var e=unescape(top.location.search.substr(1)).split("&");for(c=0;c<e.length;c++){var b=e[c].split("=")[0];var d=e[c].split("=")[1];if(!d){d=null}else{if(!isNaN(d)){d=parseFloat(d)}}if(!a[b]){a[b]=d}else{if(typeof(a[b])=="object"){a[b].push(d)}else{a[b]=[a[b],d]}}}}return a},getDaysInMonth:function(b,a){if(b<0){b+=12}return[31,((!(a%4)&&((a%100)||!(a%400)))?29:28),31,30,31,30,31,31,30,31,30,31][b]},getFormattedDate:function(b){var a=b.getDate()<10?"0"+b.getDate():b.getDate();var c=b.getMonth()<9?"0"+(b.getMonth()+1):(b.getMonth()+1);return a+"/"+c+"/"+b.getFullYear()},fireCustomEvent:function(c,b){var d=$(c);var a;if(typeof(document.createEventObject)!="undefined"){a=document.createEventObject();a.type=b;d.fireEvent("on"+b,a)}else{a=document.createEvent("Events");a.initEvent(b,true,true);d.dispatchEvent(a)}}};var Calendar=Class.create({parent:null,container:null,tbody:null,date:new Date(),months:["January","February","March","April","May","June","July","August","September","October","November","December"],initialize:function(b,a){this.parent=b;this.container=new Element("div",{"class":"calendarContainer"});this.container.style.top=b.cumulativeOffset()[1]+b.getHeight()+"px";this.container.style.left=b.cumulativeOffset()[0]+"px";if(b.value.strip()&&b.value.match(a)){var c=b.value.split("/");this.date=new Date(c[2],parseFloat(c[1])-1,parseFloat(c[0]))}this.generateCalendar();b.parentNode.appendChild(this.container);b.observe("keydown",this.checkHide.bind(this));b.observe("change",this.hide.bind(this));this.bl=this.hide.bindAsEventListener(this);Event.observe(document,"click",this.bl)},checkHide:function(a){if(a.type=="keydown"&&(a.keyCode==27||a.keyCode==9)){setTimeout(this.hide.bind(this),1)}},hide:function(){if(arguments.length>0){if(arguments[0].type=="click"&&arguments[0].target==this.parent){return}}this.parent.calendar=null;if(this.container.ancestors().size()>0){this.parent.parentNode.removeChild(this.container)}Event.stopObserving(document,"click",this.bl);this.bl=null},generateCalendar:function(){this.container.descendants().invoke("remove");this.generateHeader();var d=new Date(this.date.getFullYear(),this.date.getMonth(),1);var a=new Element("tbody");var c=new Element("tr",{"class":"calendarWeekHeading"}).insert(new Element("td").insert("S")).insert(new Element("td").insert("M")).insert(new Element("td").insert("T")).insert(new Element("td").insert("W")).insert(new Element("td").insert("T")).insert(new Element("td").insert("F")).insert(new Element("td").insert("S"));a.insert(c);var b;for(b=1;b<=this.daysInMonth();b++){d.setDate(b);if(!d.getDay()||b==1){a.insert(this.generateWeek(d))}}this.container.insert(new Element("table",{"class":"calendarTable"}).insert(a))},generateHeader:function(){this.container.insert(this.generateNavButton("&laquo; ",new Date(this.date.getFullYear()-1,this.date.getMonth(),this.date.getDate()))).insert(this.generateNavButton("&lt; ",new Date(this.date.getFullYear(),this.date.getMonth()-1,this.date.getDate()))).insert((new Element("div",{"class":"calendarMonthDisplay"}).insert(this.months[this.date.getMonth()]+"<br />"+this.date.getFullYear()))).insert(this.generateNavButton(" &gt;",new Date(this.date.getFullYear(),this.date.getMonth()+1,this.date.getDate()))).insert(this.generateNavButton(" &raquo;",new Date(this.date.getFullYear()+1,this.date.getMonth(),this.date.getDate())))},generateNavButton:function(c,b){var a=new Element("div",{"class":"calendarNavButton"});a.insert(c);a.observe("mousedown",function(){this.date=b;this.generateCalendar()}.bind(this));return a},generateWeek:function(d){var b=new Element("tr");var a;var c;for(c=d.getDay();c>0;c--){a=this.generateDay(new Date(d.getFullYear(),d.getMonth(),d.getDate()-c)).addClassName("calendarPrevMonth");b.insert(a)}for(c=0;c<=6-d.getDay();c++){a=this.generateDay(new Date(d.getFullYear(),d.getMonth(),d.getDate()+c));if(d.getDate()+c>this.daysInMonth(d.getMonth(),d.getFullYear())){a.addClassName("calendarNextMonth")}b.insert(a)}return b},generateDay:function(b){var a=new Element("td");if(this.date.getFullYear()==b.getFullYear()&&this.date.getMonth()==b.getMonth()&&this.date.getDate()==b.getDate()){a.addClassName("calendarCurrentDay")}if(b.getDay()===0||b.getDay()===6){a.addClassName("calendarWeekend")}else{a.addClassName("calendarDay")}a.innerHTML=b.getDate();a.observe("mousedown",this.setDate.bind(this,b));return a},setDate:function(a){this.date=a;this.parent.value=Utilities.getFormattedDate(a);this.hide();setTimeout(Utilities.fireCustomEvent.bind(Utilities,this.parent,"change"),1)},daysInMonth:function(c,b){var a=this.date.getMonth();var d=this.date.getFullYear();if(arguments.length==2){a=c;d=b}return Utilities.getDaysInMonth(a,d)}});var CalendarManager={showCalendar:function(b,a){if(!b.calendar){b.calendar=new Calendar(b,a)}}};var ErrorHandler={errorTypes:$A([{name:"string",pattern:/^(.+)$/gi,message:"Please fill in the field"},{name:"number",pattern:/^-?[0-9]*\.?[0-9]+$/gi,message:"Please enter a valid number."},{name:"integer",pattern:/^-?[0-9]+$/gi,message:"Please enter a valid integer."},{name:"alphanumeric",pattern:/^[0-9A-Z_\-]+$/ig,message:"Please enter a valid alphanumeric string."},{name:"email",pattern:/^[A-Z0-9._%+\-]+@[A-Z0-9.\-]+\.[A-Z]{2,4}$/i,message:"Please enter a valid email address."},{name:"positiveNumber",pattern:/^[0-9]*\.?[0-9]+$/i,message:"Please enter a positive number."},{name:"date",pattern:/^(0[1-9]|[12][0-9]|3[012])\/(0[1-9]|1[012])\/\d{4}$/i,message:"Please enter a valid date in DD/MM/YYYY format"}]),initialize:function(){this.addErrorHandlers()},addErrorHandlers:function(){this.errorTypes.each(function(a){$$("."+a.name).each(function(b){if(b.hasClassName("date")){b.observe("focus",CalendarManager.showCalendar.bind(window,b,a.pattern))}b.observe("blur",this.dispatchError.bind(this,b,a.pattern,a.message));this.attachFormListener(b)},this)},this)},dispatchError:function(a,d,c,b){if(!(!a.value.strip()&&a.hasClassName("optional"))&&!a.value.match(d)){this.displayError(a,c);return true}else{this.removeErrorMessage(a);return false}},displayError:function(c,d){var b=0.1;if(!c.errorConfig){var a=new Element("div",{style:"background-color:#FF6347;padding:3px;color:#000000;font-size:12px;position:absolute;z-index:9999;text-align:left;left:"+c.cumulativeOffset()[0]+"px;top:"+(c.cumulativeOffset()[1]+c.getHeight())+"px;"}).insert(d);a.setOpacity(b);if(typeof document.body.style.maxHeight=="undefined"){a.setStyle({width:"200px"})}c.errorConfig={messageNode:a,bgcolor:c.getStyle("backgroundColor"),animation:false};c.setStyle({backgroundColor:"#FF6347"});if(c.errorConfig.bgcolor=="transparent"||c.errorConfig.bgcolor=="rgb(255, 255, 255)"){c.errorConfig.bgcolor="#FFFFFF"}if(c.nextSibling){c.parentNode.insertBefore(a,c.nextSibling)}else{c.parentNode.appendChild(a)}this.animateErrorMessage(c,b,0.02);c.observe("mouseover",function(e){if(e.errorConfig){this.animateErrorMessage(e,b,0.02)}}.bind(this,c))}},removeErrorMessage:function(a){if(a.errorConfig){a.setStyle({backgroundColor:a.errorConfig.bgcolor});a.parentNode.removeChild(a.errorConfig.messageNode);a.errorConfig=null}},animateErrorMessage:function(d,c,a,b){if(d.errorConfig){d.errorConfig.messageNode.setStyle({top:(d.cumulativeOffset()[1]+d.getHeight())+"px",left:(d.cumulativeOffset()[0])+"px"});if(c<0){d.errorConfig.animation=false}else{if(c>1){setTimeout(this.animateErrorMessage.bind(this,d,c-a,-0.01,true),1000)}else{if(!d.errorConfig.animation||b){d.errorConfig.animation=true;d.errorConfig.messageNode.setOpacity(c);setTimeout(this.animateErrorMessage.bind(this,d,c+a,a,true),10)}}}}},errorsPresent:function(){var a=false;this.errorTypes.each(function(b){$$("."+b.name).each(function(c){if(this.dispatchError(c,b.pattern,b.message)){a=true}},this)},this);return a},attachFormListener:function(a){if(!a.parentNode){return false}else{if(a.parentNode.nodeName.toLowerCase()=="form"){$(a.parentNode.id).observe("submit",function(b){if(this.errorsPresent()){b.preventDefault()}}.bind(this))}else{this.attachFormListener(a.parentNode)}}}};Event.observe(window,"load",ErrorHandler.initialize.bind(ErrorHandler));var UI={createDropDown:function(c,d,b){var a=new Element("select",{id:d,name:d});c.each(function(f){var e={value:f.code};if(b.toLowerCase()==f.code.toLowerCase()){e.selected="selected"}a.insert(new Element("option",e).update(f.code+" - "+f.name))});return a},addRolloverImages:function(){$$("img.TwoStateRollover").each(this.add2StateRollover.bind(this));$$("img.ThreeStateRollover").each(this.add3StateRollover.bind(this))},add2StateRollover:function(a){a.originalSource=a.src.match(/_((selected)|(up))\./gi);new Element("img",{src:a.src.replace(a.originalSource,"_over.")});a.observe("mouseover",function(b){b.target.src=b.target.src.replace(a.originalSource,"_over.")});a.observe("mouseout",function(b){b.target.src=b.target.src.replace(/_((over)|(down))\./gi,a.originalSource)});return a},add3StateRollover:function(a){this.add2StateRollover(a);new Element("img",{src:a.src.replace(a.originalSource,"_down.")});a.observe("mousedown",function(b){b.target.src=b.target.src.replace("_over.","_down.")});a.observe("mouseup",function(b){b.target.src=b.target.src.replace("_down.","_over.")});return a}};Event.observe(window,"load",UI.addRolloverImages.bind(UI));