Date.prototype.days=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.prototype.months=["January","February","March","April","May","June","July","August","September","October","November","December"];var SubtleTemplate=new Class({Implements:Options,options:{tag:"div",id:"","class":"",html:"{html}",data:{}},kids:[],initialize:function(a){if($type(a)=="element"){this.setElementOptions(a)}else{this.setOptions(a)}this.template=new Class({Extends:SubtleTemplate.Template,options:this.options});this.template.kids=this.kids;this.template.updateTemplate=this.updateTemplate.bind(this);return this.template},setElementOptions:function(a){if(!a){return this.fireEvent("error")}a=$(a);if(Browser.Engine.trident){a.getElements("*").each(function(b){["abbr","above","accept","accesskey","action","align","alink","alt","archive","autostart","axis","background","balance","behavior","below","bgcolor","bgproperties","border","bordercolor","bordercolordark","bordercolorlight","bottommargin","cabbase","cellpadding","cellspacing","charset","checked","cite","class","classid","clear","clip","code","codebase","codetype","color","cols","colspan","compact","content","controls","coords","data","datapagesize","datetime","declare","defer","delay","dir","direction","disabled","dynsrc","enctype","face","for","frame","frameborder","framespacing","gutter","headers","height","hidden","href","hreflang","hspace","id","ismap","label","lang","language","left","leftmargin","link","longdesc","loop","lowsrc","marginheight","marginwidth","maxlength","mayscript","media","method","multiple","name","noexternaldata","noresize","noshade","nowrap","pagex","pagey","pointsize","readonly","rel","rev","rightmargin","rows","rowspan","rules","runat","scope","scrollamount","scrolldelay","scrolling","selected","shape","size","span","src","standby","start","style","summary","tabindex","target","title","top","topmargin","truespeed","type","usemap","valign","value","valuetype","visibility","vlink","volume","vspace","width","wrap","xmlns"].each(function(c){try{var f=b.getProperty(c);if(f&&$type(f)=="string"){b.setProperty(c,b.getProperty(c)+" HACKED_FOR_IE")}}catch(d){}})})}this.setOptions({parent:a.parentNode?$(a.parentNode):null,tag:a.get("tag"),id:a.get("id"),"class":a.get("class"),html:a.get("html").replace(/ ?HACKED_FOR_IE/g,"").replace(/%7B([^%]+)%7D/g,"{$1}")});a.dispose();a=null;return this},updateTemplate:function(b){if($type(b)!="function"){return this}var a=new Element(this.options.tag,{"class":this.options["class"],html:this.options.html});this.setElementOptions(b.run(this,a)||a);this.kids.each(function(c){c.populate({},this.options)},this);return this}});SubtleTemplate.Template=new Class({Implements:[Options,Events],initialize:function(b,a){this.constructor.kids.push(this);if(a){this.setOptions(a)}if(b){this.setOptions({data:b})}this.element=new Element(this.options.tag);this.populate();return this.fireEvent("initialize")},populate:function(b,a){if(a){this.setOptions(a)}if(b){this.setOptions({data:b})}this.element.set({html:this.options.html.substitute(this.options.data,/{([^}]+)}/g),"class":(this.options.data.html_class||this.options["class"]||"").substitute(this.options.data),id:(this.options.data.html_id||"").substitute(this.options.data)});return this.fireEvent("populate")},inject:function(a){this.element.inject(a||this.options.parent);return this.fireEvent("inject")}});var BookingsList=new Class({Implements:Options,options:{bookingserviceURL:"bookingservice.py/",site:"vatnz",refreshSecs:600,initialDateMode:0,displayExternalFIRs:false,atcTargetId:"atcTarget",atcTemplateId:"t-atcBooking",flightTargetId:"flightTarget",templates:["t-flightPopup","t-flightDay","t-atcDay","t-atcBooking","t-flightBooking","t-flightBooking-extraFIRs"]},initialize:function(d){this.setOptions(d);var b=Cookie.read("dm");this.dateMode=b!=null?parseInt(b,10):this.options.initialDateMode;var c=null;switch(this.dateMode){case 0:c=$$(".bk_utc");break;case 1:c=$$(".bk_local");break;case 2:c=$$(".bk_site");break}c.setStyle("display","inline");var a=function(){this.cycleDateMode()}.bind(this);var e=function(f){f.addEvent("click",a)}.bind(this);$$(".bk_utc").each(e);$$(".bk_local").each(e);$$(".bk_site").each(e);(this.options.displayExternalFIRs?$("bk_hideFirs"):$("bk_showFirs")).setStyle("display","inline");$("bk_showFirs").addEvent("click",function(){this.setShowExternal(true)}.bind(this));$("bk_hideFirs").addEvent("click",function(){this.setShowExternal(false)}.bind(this));this.lastUpdated="Never";this.updateTimestamp=new (new SubtleTemplate($("t-updateTimestamp")))({timestamp:this.lastUpdated});this.templates=this.options.templates.map(function(f){return new SubtleTemplate($(f))}).associate(this.options.templates);this.updateTimestamp.inject();this.request=new Request.JSONP({url:this.options.bookingserviceURL+this.options.site,onComplete:function(g,f){if(!$chk(g)){return}$$(".bk_site").set("text","Site: "+g.tzlabel);this.lastUpdated=new Date().toString();this.updateTimestamp.populate({timestamp:this.lastUpdated});$("bk_flightBookingTitle").set("html",g.sitename+" Flight Bookings");$("bk_atcBookingTitle").set("html",g.sitename+" ATC Bookings");this.lastResponseJSON=g;this.draw()}.bind(this),onFailure:function(f){alert("D'oh!")}});this.getBookings();if(this.options.refreshSecs>0){this.getBookings.periodical(this.options.refreshSecs*1000,this)}},draw:function(){var a=this.lastResponseJSON;this.cleanData(a);if($chk(this.tips)){this.tips.detach("*");this.tips.tip.dispose()}this.tips=new Tips("",{className:"bk_flightPopup"});this.drawATCBookings($splat(a.atcBookings));this.drawFlightBookings($splat(a.flightBookings))},getBookings:function(){this.request.send()},cleanData:function(c){var a=function(g){var f={};switch(this.dateMode){case 0:var h=new Date(g.e);f.w=h.getUTCDay();f.d=h.getUTCDate();f.m=h.getUTCMonth()+1;f.y=h.getUTCFullYear();break;case 1:var h=new Date(g.e);f.w=h.getDay();f.d=h.getDate();f.m=h.getMonth()+1;f.y=h.getFullYear();break;case 2:f.w=g.w;f.d=g.d;f.m=g.m;f.y=g.y;break}f.h=f.d+(f.m*100)+(f.y*10000);f.e=g.e;return f}.bind(this);var b=function(f){switch(this.dateMode){case 0:var g=new Date(f.e);return g.days[g.getUTCDay()].substring(0,3)+" "+(g.getUTCDate()<10?"0":"")+g.getUTCDate()+" "+g.months[g.getUTCMonth()].substring(0,3)+" "+g.getUTCFullYear()+" "+(g.getUTCHours()<10?"0":"")+g.getUTCHours()+":"+(g.getUTCMinutes()<10?"0":"")+g.getUTCMinutes();case 1:var g=new Date(f.e);return g.days[g.getDay()].substring(0,3)+" "+(g.getDate()<10?"0":"")+g.getDate()+" "+g.months[g.getMonth()].substring(0,3)+" "+g.getFullYear()+" "+(g.getHours()<10?"0":"")+g.getHours()+":"+(g.getMinutes()<10?"0":"")+g.getMinutes();case 2:return Date.prototype.days[f.w].substring(0,3)+" "+(f.d<10?"0":"")+f.d+" "+Date.prototype.months[f.m-1].substring(0,3)+" "+f.y+" "+(f.h<10?"0":"")+f.h+":"+(f.i<10?"0":"")+f.i}}.bind(this);c.atcBookings.each(function(d){d.initialDay=a(d.startDateTime);d.finalDay=a(d.stopDateTime);d.startDateTimeString=b(d.startDateTime);d.stopDateTimeString=b(d.stopDateTime)}.bind(this));c.flightBookings.each(function(d){d.initialDay=a(d.firTransitDetails[0]["inDateTime"]);d.finalDay=a(d.firTransitDetails.getLast()["outDateTime"]);d.departDateTimeString=b(d.departDateTime);d.arriveDateTimeString=b(d.arriveDateTime);d.firTransitDetails.each(function(e){e.inDateTimeString=b(e.inDateTime);e.outDateTimeString=b(e.outDateTime)}.bind(this))}.bind(this))},formatDay:function(a){return Date.prototype.days[a.w]+", "+a.d+" "+Date.prototype.months[a.m-1]+" "+a.y},isUpdateableRow:function(a){return(a.hasClass("bk_booking")||a.hasClass("bk_day")||a.hasClass("bk_noBookings"))},emptyBookingTable:function(a){$(a).getChildren().each(function(b){if(this.isUpdateableRow(b)){b.dispose()}}.bind(this))},drawNoBookings:function(a,b){$(a).adopt(new Element("tr",{"class":"bk_noBookings"}).adopt(new Element("td",{colSpan:b,html:"No bookings"})))},drawATCBookings:function(a){this.emptyBookingTable(this.options.atcTargetId);if(a.length==0){this.drawNoBookings(this.options.atcTargetId,5)}else{a.each(this.drawATCBooking.bind(this))}},drawATCBooking:function(c,b,a){if(b==0||c.initialDay.h!=a[b-1].initialDay.h){new this.templates["t-atcDay"]({day:this.formatDay(c.initialDay)}).inject()}new this.templates["t-atcBooking"](c,{"class":"bk_booking"+(b==a.length-1?" bk_last":"")+((b+1)%2?" bk_odd":" bk_even")+(c.finalDay.e<new Date().getTime()?" bk_past":"")}).inject()},drawFlightBookings:function(a){this.emptyBookingTable(this.options.flightTargetId);if(a.length==0){this.drawNoBookings(this.options.flightTargetId,7)}else{a.each(this.drawFlightBooking.bind(this))}},drawFlightBooking2:function(c,b,a){var f=$(this.options.flightTargetId);if(b==0||c.initialDay.h!=a[b-1].initialDay.h){var d=new Element("tr",{"class":"bk_day"});d.grab(new Element("td",{colspan:7,text:this.formatDay(c.initialDay)}));d.inject(f)}var e="bk_booking"+(b==a.length-1?" bk_last":"")+((b+1)%2?" bk_odd":" bk_even")+(c.finalDay.e<new Date().getTime()?" bk_past":"")},drawFlightBooking:function(g,b,a){if(b==0||g.initialDay.h!=a[b-1].initialDay.h){new this.templates["t-flightDay"]({day:this.formatDay(g.initialDay)}).inject()}var h="bk_booking"+(b==a.length-1?" bk_last":"")+((b+1)%2?" bk_odd":" bk_even")+(g.finalDay.e<new Date().getTime()?" bk_past":"");var c=new this.templates["t-flightBooking"](g,{"class":h});var f=new this.templates["t-flightPopup"](g);g.firTransitDetails.each(function(m,i,k){var l=new Element("tr");if(i==0){l.addClass("bk_firRow");l.grab(new Element("th",{rowSpan:k.length,html:"FIRs"}))}var j=m.isExternal?"bk_external":"";l.grab(new Element("td",{html:m.fir,"class":j}));l.grab(new Element("td",{html:m.inDateTimeString+"<br/>"+m.outDateTimeString,"class":j+" bk_firTimes"}));f.element.getElement("tbody").grab(l)});c.element.store("tip:text",f.element);this.tips.attach(c.element);var e=this.options.displayExternalFIRs?g.firTransitDetails:g.firTransitDetails.filter(function(i){return !i.isExternal});c.populate(e[0]);if(e.length>1){var d=c.element.getElements("td");d.each(function(i){if(!i.hasClass("bk_fir")&&!i.hasClass("bk_times")){i.set("rowSpan",e.length)}else{if(e[0].isExternal){i.addClass("bk_external")}}})}e.each(function(i,j){if(j>0){c=new this.templates["t-flightBooking-extraFIRs"](i,{"class":h+(i.isExternal?" bk_external":"")});c.element.store("tip:text",f.element);this.tips.attach(c.element)}c.inject()}.bind(this))},toggleShowExternal:function(){this.setShowExternal(!this.options.displayExternalFIRs)},setShowExternal:function(a){if(a){this.options.displayExternalFIRs=true;$("bk_hideFirs").setStyle("display","inline");$("bk_showFirs").setStyle("display","none")}else{this.options.displayExternalFIRs=false;$("bk_hideFirs").setStyle("display","none");$("bk_showFirs").setStyle("display","inline")}this.draw()},cycleDateMode:function(){this.dateMode=(this.dateMode+1)%3;if(this.dateMode==2&&this.lastResponseJSON.tzlabel==null){this.dateMode=0}Cookie.write("dm",this.dateMode,{duration:365});var a=function(c){c.setStyle("display","inline")};var b=function(c){c.setStyle("display","none")};switch(this.dateMode){case 0:$$(".bk_utc").each(a);$$(".bk_local").each(b);$$(".bk_site").each(b);break;case 1:$$(".bk_utc").each(b);$$(".bk_local").each(a);$$(".bk_site").each(b);break;case 2:$$(".bk_utc").each(b);$$(".bk_local").each(b);$$(".bk_site").each(a);break}this.draw()}});