if(typeof PSP==="undefined")var PSP={};if(typeof SVGAnimatedString!="undefined")SVGAnimatedString.prototype.contains=function(a){return this.baseVal.contains(a)};PSP.maxSeats=0;PSP.areaPricing={};PSP.advancedPricing={};
PSP.Area=new Class({Implements:[Events,Options],options:{name:null,areaId:0,priceId:0,width:0,height:0,t:null,preview:null,colour:"#4ec400",free:0},_coordinates:[],_element:null,_areaEl:null,_areaObj:null,_drawEl:null,_textEl:null,_eventFired:false,initialize:function(a,b,c){this._element=$$(a)[0];this._drawEl=b;this.setOptions(c);if(this._coordinates.length>=6&&!(this._coordinates.length%2)){this._createArea();this._addEvents()}},_createArea:function(){var a="",b=0,c=0,d=0,h=0,f=0,g={};this._coordinates.each(function(e){if(b==
0){a+="M "+e.toInt();c=e.toInt();d=e.toInt()}else if(b==1){a+=" "+e.toInt();h=e.toInt();f=e.toInt()}else if(b%2==0){a+=" L "+e.toInt();if(c.toInt()>e.toInt())c=e.toInt();if(d.toInt()<e.toInt())d=e.toInt()}else{a+=" "+e.toInt();if(h.toInt()>e.toInt())h=e.toInt();if(f.toInt()<e.toInt())f=e.toInt()}b++});a+=" L "+this._coordinates[0]+" "+this._coordinates[1];this._areaObj=this._drawEl.path(a).show();this._areaEl=$(this._areaObj.node);this._areaEl.setStyle("cursor","pointer");g.x=c+Math.ceil((d-c)/2);
g.y=h+Math.ceil((f-h)/2);this._textEl=this._drawEl.text(g.x,g.y,"Free: "+this.options.free);this._textEl.attr({"font-weight":"bold","font-size":"14px",fill:"#000","font-family":"Verdana",cursor:"pointer"});this._textEl.hide();if(typeof PSP.areaPricing[this.options.name]!="undefined")this._areaEl.set("title",this.options.name+" prices start at \u00a3"+PSP.areaPricing[this.options.name].price+(PSP.areaPricing[this.options.name].discounts?", discounts available":""));this._areaObj.attr({fill:this.options.colour,
"fill-opacity":0.1})},_addEvents:function(){this._areaEl.addEvent("mouseenter",function(){this._eventFired=true;this._areaObj.animate({"fill-opacity":0.8},250);this._textEl.show()}.bind(this));this._areaEl.addEvent("mouseleave",function(){this._eventFired=false;(function(){if(!this._eventFired){this._areaObj.animate({"fill-opacity":0.1},250);this._textEl.hide()}}).bind(this).delay(50)}.bind(this));$(this._textEl.node).addEvent("mouseenter",function(){this._areaEl.fireEvent("mouseenter")}.bind(this));
$(this._textEl.node).addEvent("mouseleave",function(){this._eventFired=true;this._areaEl.fireEvent("mouseenter")}.bind(this));this._areaEl.addEvent("click",this.fireEvent.bind(this,["selected"]))}});
PSP.Area.implement({setOptions:function(a){if("coordinates"in a)if(a.coordinates.length>=6){var b=0;$splat(a.coordinates).each(function(c){if(this._coordinates.length>0||!b)if(c.toInt()>=0)this._coordinates.push(c.toInt());else{this._coordinates.empty();throw"The coordinates are required to be an even number of naturals.";}b++}.bind(this))}this.parent(a)}});PSP.AreaWithPreview=new Class({Extends:PSP.Area,options:{urls:{images:"./images/"},previewTimeout:9E5}});
PSP.AreaWithPreview.implement({_addEvents:function(){var a=$$("#scene-preview img")[0];this._areaEl.addEvent("mouseenter",function(){$clear(a.retrieve("timer"));a.store(a.retrieve("originalsrc",a.get("src")));a.store(a.retrieve("originalalt",a.get("alt")));a.set("src",this.options.urls.images+this.options.preview);a.set("alt",this._areaEl.get("title"))}.bind(this));this._areaEl.addEvent("mouseleave",function(){a.store("timer",function(){this.set("src",this.retrieve("originalsrc"));this.set("alt",
this.retrieve("originalalt"))}.delay(this.options.previewTimeout,a))}.bind(this));this.parent()}});
PSP.AreaManager=new Class({Implements:Events,_productId:0,options:{urls:{expire:"./ajax/expiredorders.php",ajaxExpire:"./expiredorders.php"},alertSeatsExceeded:"You have reached the limit of seats booked per customer. For more information, please contact the administrator.",expireTimer:{timerElement:"#timerMessage",timerHidden:"#expireTimer"}},_areas:new Hash,_frameObj:null,_bookingsPrepared:new Hash,_slavesPrepared:new Hash,_priceGroups:new Hash,_alertMsg:"An area is rendered already. To continue to another area, please close the opened one.",
_bookingFee:0,_administrationFee:0,_additionalFees:[],_alertBox:null,_isAjax:0,_isAdmin:0,_bookingTimer:null,_lastAraeId:null,initialize:function(a){this._productId=a.toInt();this._bookingTimer=new PSP.BookingTimer(this.options.expireTimer.timerElement,this.options.expireTimer.timerHidden);this._bookingTimer.addEvent("seatsExpired",function(){this._freeSeats()}.bind(this))},addArea:function(a){if("da"in this)this.da++;else this.da=1;if(!a instanceof PSP.Area)throw'"Area" must be instance of PSP.Area';
if(this._areas.has(a.options.areaId))throw"This area is already added";this._areas.set(a.options.areaId,a);a.addEvent("selected",function(){if(!this._frame){$("imageHolder").getCoordinates();var b={};b.width=a.options.width+10;b.height=a.options.height+96;this._frame=new PSP.iFrameManager(this._productId);if(this._isAdmin)this._frame._isAdmin=1;this._frame.setArea(a.options.areaId);this._frame.render(b);this._lastAraeId=a.options.areaId.toInt();this.addEvent("frame-closed",function(){if(this._frame){this._frame.destroy();
this._frame=null}}.bind(this))}}.bind(this))},handleFrameData:function(a){this.fireEvent("frame-closed");if(a.masters.getLength()){a.masters.each(function(c,d){this._bookingsPrepared.has(d)&&this._bookingsPrepared.erase(d);this._bookingsPrepared.set(d,new Hash);c.each(function(h,f){this._bookingsPrepared[d].has(f)||this._bookingsPrepared[d].set(f,[]);h.each(function(g){var e=false;this._bookingsPrepared[d][f].each(function(l){if(l.si==g.si)e=true}.bind(this));if(!e){this._bookingsPrepared[d][f].push(g);
this._bookingTimer.setTimer(g.bt)}}.bind(this));this._bookingsPrepared[d][f].each(function(g,e){var l=false;h.each(function(j){if(j.si==g.si)l=true}.bind(this));l||(this._bookingsPrepared[d][f][e]=null)}.bind(this));this._bookingsPrepared[d][f]=this._bookingsPrepared[d][f].clean();this._bookingsPrepared[d][f].length||this._bookingsPrepared[d].erase(f)}.bind(this));this._bookingsPrepared[d].getLength()||this._bookingsPrepared.erase(d)}.bind(this));this._setSlavesArray(a.slaves)}else this._bookingsPrepared.has(this._lastAraeId)&&
this._bookingsPrepared.erase(this._lastAraeId);if(this._simplifiedPricing){this.renderPriceListSelections();try{$("priceSelectionList").scrollIntoView()}catch(b){}}this._lastAraeId=null;this._bookingsPrepared.getLength()||this._bookingTimer.resetTimer()},_setSlavesArray:function(a){$each(a,function(b,c){this._slavesPrepared.has(c)&&this._slavesPrepared.erase(c);this._slavesPrepared.set(c,b)}.bind(this))},_prepareForSubmit:function(){var a=$("add_cart_form"),b=a.getChildren(".prepare-for-submit");
b&&b.each(function(c){c.destroy()}.bind(this));b=new Element("div",{"class":"prepare-for-submit"});(new Element("input",{type:"hidden",name:"type",value:"seatbooking"})).inject(b);this._bookingsPrepared.each(function(c,d){c.each(function(h,f){var g=(new Element("select",{styles:{display:"none"},name:"price_"+d+"_"+f+"[]","class":"hiddenSelects"})).set("multiple","multiple").inject(b);h.each(function(e){(new Element("option",{value:e.bi.toInt()})).set("selected","selected").inject($(g))}.bind(this))}.bind(this))}.bind(this));
b.inject(a)},calculateOrderTotal:function(){var a=0;this._bookingsPrepared.each(function(b,c){b.each(function(d,h){var f=d.length,g=0,e=0,l=[],j=[],o=[];PSP.advancedPricing[c].each(function(k){k.each(function(m){if(m.id.toInt()==h){g=f*m.pr;if(m.bf.toFloat())e=m.bf.toFloat();switch(m.ty){case "none":break;case "quantity":f>=m.hu.toInt()?o.push(f*m.di.toFloat()):o.push(0);break;case "percentage":f>=m.hu.toInt()?j.push(g*m.di.toFloat()/100):j.push(0);break;case "fixed":f>=m.hu.toInt()?l.push(m.di.toFloat()):
l.push(0);break;default:throw"Error: calcTotalOrderValue - unknown discount";}}})}.bind(this));if(g>0){var p=0,i=0,n=0;o.each(function(k){if(k>p)p=k});j.each(function(k){if(k>i)i=k});l.each(function(k){if(k>n)n=k});g-=n>i&&n>p?n.toFloat():i>n&&i>p?i.toFloat():p.toFloat();if(e>0)a+=f*e;else if(this._bookingFee)a+=f*this._bookingFee.toFloat();a+=g}}.bind(this))}.bind(this));a+=this._administrationFee.toFloat();this._additionalFees.length&&this._additionalFees.each(function(b){a+=b.amount.toFloat()}.bind(this));
return a},renderPriceListSelections:function(){if($("priceSelectionList")){var a=new Element("table",{"class":"priceList"}),b,c;if(this._bookingsPrepared.getLength()){$("priceSelectionList").removeClass("priceSelectionList-empty");var d;this._bookingsPrepared.each(function(h){d=0;h.each(function(f,g){f.each(function(e){if(d==0){c=new Element("tr",{"class":"row-heading"});(new Element("th")).set("text",e.a).set("colspan",4).inject(c);c.inject(a);c=new Element("tr",{"class":"row-description"});(new Element("th",
{"class":"seat-number"})).set("text","Seat").inject(c);(new Element("th",{"class":"price-name"})).set("text","Price").inject(c);(new Element("th",{"class":"price-amount"})).set("text","Amount").inject(c);(new Element("th",{"class":"booking-fee"})).set("text","Booking Fee").inject(c);c.inject(a)}var l=0,j="",o;PSP.advancedPricing[PSP.areaPricing[e.a].areaId].each(function(p){p.each(function(i){o=false;if(!l&&i.id==g){l=1;b=new Element("tr",{"class":d%2?"row-even":"row-odd"});j="";if(e.mi.toInt()){j+=
e.r+e.c+", ";this._slavesPrepared[e.mi.toInt()].each(function(k){j+=k.r+k.c+", "}.bind(this));var n=j.lastIndexOf(",");j=j.substring(0,n);o=true}else j=e.r+e.c;(new Element("td",{"class":"seat-number"})).set("text",j).inject(b);(new Element("td",{"class":"price-name"})).set("text",i.name).inject(b);(new Element("td",{"class":"price-amount"})).set("html",PSP._currencyObj.display(i.pr.toFloat())).inject(b);(new Element("td",{"class":"booking-fee"})).set("html",i.bf?PSP._currencyObj.display(i.bf.toFloat()):
this._bookingFee?PSP._currencyObj.display(this._bookingFee.toFloat()):"&nbsp;").inject(b);b.inject(a);if(o)if(i.bf.toFloat()>0){b=new Element("tr",{"class":d%2?"row-even":"row-odd"});(new Element("td",{"class":"seat-number"})).set("text","").inject(b);(new Element("td",{"class":"price-name",colspan:2})).set("html",PSP._currencyObj.display(i.bf.toFloat()/i.seats)+" booking fee per seat").inject(b);(new Element("td",{"class":"booking-fee"})).set("html","").inject(b);b.inject(a)}d++}}.bind(this))}.bind(this))}.bind(this))}.bind(this))}.bind(this));
b=new Element("tr",{"class":(d%2?"row-even":"row-odd")+" row-administration-fee"});(new Element("th",{scope:"row","class":"fee-name"})).set("colspan",3).set("text","Administration Fee:").inject(b);(new Element("td",{"class":"fee-amount"})).set("html",PSP._currencyObj.display(this._administrationFee.toFloat())).inject(b);b.inject(a);d++;b=new Element("tr",{"class":(d%2?"row-even":"row-odd")+" row-administration-fee"});this._administrationFee.length&&this._additionalFees.each(function(h){b=new Element("tr",
{"class":(d%2?"row-even":"row-odd")+" row-administration-fee"});(new Element("th",{scope:"row","class":"fee-name"})).set("colspan",3).set("text",h.name+":").inject(b);(new Element("td",{"class":"fee-amount"})).set("html",PSP._currencyObj.display(h.amount.toFloat())).inject(b);b.inject(a);d++});b=new Element("tr",{"class":(d%2?"row-even":"row-odd")+" row-order-value"});(new Element("th",{scope:"row","class":"value-label"})).set("colspan",3).set("text","Order Value:").inject(b);(new Element("td",{"class":"order-amount"})).set("html",
PSP._currencyObj.display(this.calculateOrderTotal())).inject(b);b.inject(a);$("priceSelectionList").empty();if(Browser.Engine.trident&&a.outerHTML)$("priceSelectionList").innerHTML=a.outerHTML;else a.inject($("priceSelectionList"));this.calculateOrderTotal()}else $("priceSelectionList").empty().addClass("priceSelectionList-empty")}},_setExpireTime:function(a){if(a.toInt()>0)this._bookingTimer.options.settings.expire=a.toInt()},initSimplifiedPricing:function(){this._simplifiedPricing=1},initSeatBlocking:function(){this._isAdmin=
1},setProductFees:function(a){if(a.bf.toFloat()>0)this._bookingFee=a.bf;if(a.af.toFloat()>0)this._administrationFee=a.af;if(a.additional.length)this._additionalFees=a.additional},hasRequests:function(){return false},addBookedSeats:function(a){var b=0;a.each(function(c){b==0&&this._bookingTimer.setTimer(c.bt);this._bookingsPrepared.has(c.ai)||this._bookingsPrepared.set(c.ai,new Hash);this._bookingsPrepared.get(c.ai);this._bookingsPrepared[c.ai].has(c.pi)||this._bookingsPrepared[c.ai].set(c.pi,[]);
var d={bi:c.bi,si:c.si,c:c.c,r:c.r,a:c.a,mi:c.mi};this._bookingsPrepared[c.ai][c.pi].push(d);b++}.bind(this))},_setExpireTime:function(a){if(a.toInt()>0)this._bookingTimer.options.settings.expire=a.toInt()},_setSTime:function(a,b){if(a&&a.toInt())this._bookingTimer.options.settings.servertime=a.toInt();if(b&&b.toInt())this._bookingTimer.options.settings.refreshTime=b.toInt()},_freeSeats:function(){var a=[];this._bookingsPrepared.each(function(b){b.each(function(c){c.each(function(d){a.push(d.si.toInt())}.bind(this))}.bind(this))}.bind(this));
(new Request.JSON({url:this._isAdmin?this.options.urls.ajaxExpire:this.options.urls.expire,data:{products_id:this._productId,seats_expired:a},onSuccess:function(){this._bookingsPrepared.empty();this.renderPriceListSelections()}.bind(this)})).send()},collectPriceGroups:function(){$each(PSP.areaPricing,function(a){PSP.advancedPricing[a.areaId].each(function(b){b.each(function(c){this._priceGroups.has(c.id.toInt())||this._priceGroups.set(c.id,c)}.bind(this))}.bind(this))}.bind(this))}});
PSP.AreaController=new Class({Implements:Events,_productId:0,_element:null,_areaHolderEl:null,_raphael:null,_manager:null,_alertTimeout:2500,_alertBoxEl:null,_simplifiedPricing:0,_l10n:{alertStillRequest:"Please try again in a few seconds, an action is being executed&hellip;",alertNoSeats:"You have not selected any seats yet."},areaHolderOptions:{holder:$("#areaHolder"),width:0,height:0,zIndex:100},initialize:function(a,b){this._element=$$(a)[0];if(b.toInt())this._productId=b.toInt();this._createAreaHolder();
this._raphael=Raphael("areaHolder",this.areaHolderOptions.width,this.areaHolderOptions.height);this._manager=new PSP.AreaManager(this._productId)},_createAreaHolder:function(){this.areaHolderOptions.width=this._element.getCoordinates().width;this.areaHolderOptions.height=this._element.getCoordinates().height;this.areaHolderOptions.zIndex=this._element.getStyle("zIndex").toInt()+1;this._areaHolderEl=(new Element("div",{styles:{position:"absolute",left:0,top:0,width:this.areaHolderOptions.width,height:this.areaHolderOptions.height,
zIndex:this.areaHolderOptions.zIndex}})).set("id","areaHolder");this._areaHolderEl.inject(this._element)},addAreas:function(a){$splat(a).each(function(b){b=new (PSP["Area"+(b&&"t"in b&&b.t?b.t.camelCase().capitalize():"")])(this._areaHolderEl,this._raphael,b);this._manager.addArea(b)}.bind(this))},handleFrameData:function(a){this._manager.handleFrameData(a)},processCart:function(){if(this._simplifiedPricing)this._manager._prepareForSubmit();else{if(this._manager.hasRequests()){this.fireEvent("alert",
["alertStillRequest"]);return returnValue=false}hasSeats=false;if(this._manager._bookingsPrepared.getLength())hasSeats=true;if(!hasSeats){this.fireEvent("alert",["alertNoSeats"]);return false}}return true},setAreaInfo:function(a){PSP.areaPricing=a[0]},setAdvancedPricing:function(a){PSP.advancedPricing=a;this._manager.collectPriceGroups()},setCurrencyFormat:function(a){var b=PSP._currencyObj;PSP._currencyObj=new PSP.Currency(a);return b},initSeatBlocking:function(){this._manager.initSeatBlocking()},
initSimplifiedPricing:function(){this._simplifiedPricing=1;this._manager.initSimplifiedPricing()},isSimplifiedPricing:function(){return!!this._simplifiedPricing},setPeriod:function(a){this._manager._setExpireTime(a)},setSTime:function(a,b){this._manager._setSTime(a,b)},setProductFees:function(a){this._manager.setProductFees(a)},addBookedSeats:function(a){this._manager.addBookedSeats(a);this._simplifiedPricing&&this._manager.renderPriceListSelections()},addAdditionalBookedSeats:function(a){this._manager._setSlavesArray(a)}});
PSP.iFrameManager=new Class({Implements:Events,srcURL:"./ajax/area_booking.php",adminSrcURL:" ",_productId:0,_areaId:0,_frameWrapper:null,_iFrameEl:null,_alertTimeout:3E3,_isAdmin:0,initialize:function(a){if(a.toInt())this._productId=a.toInt()},setArea:function(a){if(a.toInt())this._areaId=a.toInt()},render:function(a){if(!(this._iFrameEl||this._frameWrapper)){this._frameWrapper=(new Element("div",{styles:{zIndex:4999},"class":"litebox-area-wrapper"})).inject(window.getDocument().body);var b=(window.getSize().x-
a.width.toInt())/2,c=100;b=(new Element("div",{styles:{position:"absolute",width:this._isAdmin?a.width.toInt()+50:a.width.toInt(),height:this._isAdmin?a.height.toInt()+55:a.height.toInt(),left:b,top:c,zIndex:5E3},"class":"litebox-frame-wrapper"})).inject(this._frameWrapper);this._iFrameEl=(new IFrame({src:this.srcURL+"?products_id="+this._productId+"&area_id="+this._areaId+(this._isAdmin?"&is_admin=1":""),frameborder:0,styles:{position:"absolute",width:this._isAdmin?a.width.toInt()+50:a.width.toInt(),
height:this._isAdmin?a.height.toInt()+55:a.height.toInt(),left:0,top:0}})).inject(b)}},destroy:function(){if(this._iFrameEl){this._iFrameEl.destroy();this._iFrameEl=null}this._areaId=0;this._frameWrapper.destroy();this._frameWrapper=null}});

