var Payment_toggles=new Class({initialize:function(wrapper,tables,ctaWrapper){this.wrapper=wrapper.addClass("box-round-full");var heading=new Element("h2").set("text","Booking Fee Calculator").inject(this.wrapper,"before");var txt=new Element("p").set("text",'Use the table below to estimate the booking fee according to your own ticket prices.  Simply choose the payment method (Eventarc, PayPal or Your Bank), then enter in your ticket price.  To view multiple ticket prices, click on the link to "add another ticket price".').inject(this.wrapper,"before");this.tables=$H(tables);this.wrappers=[];var wrapToggles=new Element("div").addClass("toggles clearfix").inject(wrapper);var inner=new Element("div").addClass("inner").inject(wrapper);var content=new Element("div").addClass("content").inject(inner);$each(this.tables,function(table,k){var wrap=new Element("div").addClass("payment-wrap").wraps(table).inject(content);this.wrappers.push(wrap);var caption=table.getElement("caption").setStyles({position:"absolute",top:-9999,left:-9999,height:0,overflow:"hidden"});var toggle=new Element("a").set({html:caption.get("html"),href:"#"}).inject(wrapToggles);toggle.addEvent("click",function(e){e.stop();this.showWrapper(wrap);}.bind(this));wrap.store("toggle",toggle);if(k!="ea"){this.hideWrapper(wrap);}else{toggle.addClass("current");}var anchorLink=ctaWrapper.getElement("a[href$="+table.get("id")+"]");if($chk(anchorLink)){anchorLink.set("text","Calculate booking fee").addEvent("click",function(e){e.stop();var top=heading.getPosition().y-10;scrollTo(0,top);toggle.fireEvent("click",e);}.bind(this));}if(Browser.Engine.trident4){caption.destroy();}},this);},hideWrapper:function(w){w.setStyle("display","none");},showWrapper:function(w){$each(this.wrappers,function(w){this.hideWrapper(w);w.retrieve("toggle").removeClass("current");},this);w.setStyle("display","block");w.retrieve("toggle").addClass("current");}});var Payment_table=new Class({Implements:[Options,Chain],options:{serviceFeePercent:0,serviceFeeMinAmount:0,serviceFeeMaxAmount:0,merchantFeeRange:[0,0],merchantFeePercent:0,fixedMerchantFeeAmount:0,gatewayFeeRange:[0,0],gatewayFeeAmount:0,headersSuffixes:{p:"price",sf:"sfee",mf:"mfee",gf:"gfee",t:"total"},glowColors:{glow:"#ffffcc",error:"#ff0000",notify:"#b5da46"},addBtnText:"Add another ticket price",zebra:$lambda(),msgMfRange:"Amend the <b>Merchant Fee</b> to a value between",msgGfRange:"Amend the <b>Gateway Fee</b> to a value between",msgPrice:"Enter ticket price"},initialize:function(table,options){this.setOptions(options);this.merchantFee=this.options.merchantFeePercent;this.gatewayFee=this.options.gatewayFeeAmount;this.table=table;this.tbody=table.getElement("tbody");var tableId=table.get("id");this.headers=$H({});$each(["p","sf","mf","t"],function(k){this.headers[k]=$(tableId+"_"+this.options.headersSuffixes[k]);},this);if(!this.headers.every(function(v){return $chk(v);})){this.log("Payment_table() FAILED: table headers not found.");return;}var gf=$(tableId+"_"+this.options.headersSuffixes.gf);if($chk(gf)){this.headers.gf=gf;}mfa=this.headers.mf.getFirst("span.amount");if($chk(mfa)){this.mfInput=new Element("input").set({type:"text",value:this.merchantFee,size:4,maxLength:4}).inject(mfa,"after");mfa.destroy();this.mfInput.addEvents({"keyup":function(e){var time=(e.key=="backspace"||e.key=="delete")?1000:500;if($defined(this.mfTimer)){$clear(this.mfTimer);}this.mfTimer=(function(){this.mfInput.fireEvent("calculate");}.bind(this)).delay(time);}.bind(this),"focus":function(e){this.mfInput.set("value","");}.bind(this),"blur":function(e){if(this.mfInput.get("value").trim()==""){this.mfInput.set("value",this.merchantFee);}}.bind(this),"calculate":function(){var val=this.mfInput.get("value").trim();if(val==""){val=this.merchantFee;this.mfInput.set("value",val).highlight(this.options.glowColors.glow);}val=parseFloat(val);if($type(val)!="number"){val=this.merchantFee;this.mfInput.set("value",val).highlight(this.options.glowColors.error);}this.setMerchantFee(val);this.calculateRows();}.bind(this)});var mfMsg=this.options.msgMfRange+" ";mfMsg+=this.options.merchantFeeRange[0]+"% and ";mfMsg+=this.options.merchantFeeRange[1]+"%";this.newMessageBox(mfMsg,this.mfInput);}if($chk(this.headers.gf)){var gfa=this.headers.gf.getFirst("span.amount");if($chk(gfa)){this.gfInput=new Element("input").set({type:"text",value:this.gatewayFee.toFixed(2),size:4,maxLength:4}).inject(gfa,"after");gfa.destroy();this.gfInput.addEvents({"keyup":function(e){var time=(e.key=="backspace"||e.key=="delete")?1000:500;if($defined(this.gfTimer)){$clear(this.gfTimer);}this.gfTimer=(function(){this.gfInput.fireEvent("calculate");}.bind(this)).delay(time);}.bind(this),"focus":function(e){this.gfInput.set("value","");}.bind(this),"blur":function(e){if(this.gfInput.get("value").trim()==""){this.gfInput.set("value",this.gatewayFee.toFixed(2));}}.bind(this),"calculate":function(){var val=this.gfInput.get("value").trim();if(val==""){val=this.gatewayFee;this.gfInput.set("value",val.toFixed(2)).highlight(this.options.glowColors.glow);}val=parseFloat(val);if($type(val)!="number"){val=this.gatewayFee;this.gfInput.set("value",val.toFixed(2)).highlight(this.options.glowColors.error);}this.setGatewayFee(val);this.calculateRows();}.bind(this)});}var gfMsg=this.options.msgGfRange+" ";gfMsg+="$"+this.options.gatewayFeeRange[0].toFixed(2);gfMsg+=" and $"+this.options.gatewayFeeRange[1].toFixed(2);this.newMessageBox(gfMsg,this.gfInput);}this.addRow();var addBtn=new Element("a").addClass("add-row").set({text:this.options.addBtnText,href:"#"}).addEvent("click",function(e){e.stop();this.addRow();}.bind(this)).inject(table,"after");},setMerchantFee:function(amount){if($chk(this.options.merchantFeeRange)){if(amount<this.options.merchantFeeRange[0]){amount=this.options.merchantFeeRange[0];this.mfInput.highlight(this.options.glowColors.notify);}else{if(amount>this.options.merchantFeeRange[1]){amount=this.options.merchantFeeRange[1];this.mfInput.highlight(this.options.glowColors.notify);}}}this.merchantFee=amount;this.mfInput.set("value",amount);},setGatewayFee:function(amount){if($chk(this.options.gatewayFeeRange)){if(amount<this.options.gatewayFeeRange[0]){amount=this.options.gatewayFeeRange[0];this.gfInput.highlight(this.options.glowColors.notify);}else{if(amount>this.options.gatewayFeeRange[1]){amount=this.options.gatewayFeeRange[1];this.gfInput.highlight(this.options.glowColors.notify);}}}this.gatewayFee=amount;this.gfInput.set("value",amount.toFixed(2));},calculateServiceFee:function(price){var fee=(price*this.options.serviceFeePercent)/100;if(fee<this.options.serviceFeeMinAmount){fee=this.options.serviceFeeMinAmount;}else{if(fee>this.options.serviceFeeMaxAmount){fee=this.options.serviceFeeMaxAmount;}}return fee;},calculateMercahntFee:function(price){return((price*this.merchantFee)/100)+this.options.fixedMerchantFeeAmount;},calculateTotal:function(price){var sf=this.calculateServiceFee(price);var mf=this.calculateMercahntFee(price);var gf=this.gatewayFee;return parseFloat(sf)+parseFloat(mf)+parseFloat(gf);},calculateRows:function(){$each(this.tbody.getElements("tr"),function(tr){if(!tr.hasClass("ignore")){this.calculateRow(tr);}},this);},calculateRow:function(tr){var amounts=tr.retrieve("amounts",false);if(!amounts){amounts=$H({});$each(this.headers.getKeys(),function(k){var id=this.headers[k].get("id");var td=tr.getFirst("td[headers="+id+"]");var amount=td.getFirst("span.amount");if(k=="p"&&!$chk(amount)){amount=td.getFirst("input.amount");}amounts[k]=amount;},this);tr.store("amounts",amounts);}if(!amounts.every(function(v){return $chk(v);})){return;}var price=parseFloat(amounts.p.get("tag")=="input"?amounts.p.get("value"):amounts.p.get("text"));if($type(price)!="number"){return;}amounts.p.set("value",price.toFixed(2));var sf=this.calculateServiceFee(price).toFixed(2);amounts.sf.set("text",sf);this.highlightCell(amounts.sf);if(sf<=this.options.serviceFeeMinAmount){var msg=" (minimum is $"+this.options.serviceFeeMinAmount+")";
this.addQualifier(msg,amounts.sf);}else{if(sf>=this.options.serviceFeeMaxAmount){var msg=" (maximum is $"+this.options.serviceFeeMaxAmount+")";this.addQualifier(msg,amounts.sf);}else{this.removeQualifier(amounts.sf);}}var mf=this.calculateMercahntFee(price);amounts.mf.set("text",mf.toFixed(2));this.highlightCell(amounts.mf);if($chk(amounts.gf)){amounts.gf.set("text",this.gatewayFee.toFixed(2));this.highlightCell(amounts.gf);}amounts.t.set("text",this.calculateTotal(price).toFixed(2));this.highlightCell(amounts.t);},addRow:function(){var tr=new Element("tr").inject(this.tbody);$each(["p","sf","mf","gf","t"],function(k){if(k=="gf"&&!$chk(this.headers.gf)){return;}var td=new Element("td").addClass("custom").set({headers:this.headers[k].get("id"),text:"$"}).inject(tr);if(k=="p"){td.addClass("price");var input=new Element("input").addClass("amount").set({type:"text",size:16,value:this.options.msgPrice}).inject(td);input.store("defaultVal",this.options.msgPrice).addClass("enter-price").addEvents({"keyup":function(e){var time=(e.key=="backspace"||e.key=="delete")?1000:500;if($defined(this.pTimer)){$clear(this.pTimer);}this.pTimer=(function(){if(input.get("value").trim()!=""){input.fireEvent("calculate");}}.bind(this)).delay(time);}.bind(this),"focus":function(e){input.set("value","");}.bind(this),"blur":function(e){if(input.get("value").trim()==""){input.set("value",input.retrieve("defaultVal"));}}.bind(this),"calculate":function(e){var val=input.get("value").trim();if(val==""||isNaN(val)){val=input.retrieve("defaultVal");input.set("value",val);}else{input.store("defaultVal",parseFloat(val).toFixed(2));input.removeClass("enter-price");}this.calculateRow(tr);}.bind(this)});}else{td.adopt(new Element("span").addClass("amount"));}if(k=="t"){td.addClass("total");var wrapDel=new Element("div").setStyle("position","relative").inject(td);var del=new Element("a").set({href:"#",title:"delete row",text:"-"}).addClass("delete-row").addEvent("click",function(e){e.stop();tr.destroy();this.options.zebra(this.table);}.bind(this)).inject(wrapDel);if(Browser.Engine.trident4){var bg=del.currentStyle.backgroundImage;var src=bg.substring(5,bg.length-2);del.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"')";del.style.backgroundImage="none";}}},this);this.options.zebra(this.table);},addQualifier:function(msg,el){this.removeQualifier(el);var q=new Element("small").addClass("qualifier").set("text",msg).inject(el,"after");},removeQualifier:function(el){var q=el.getNext("small.qualifier");if($chk(q)){q.destroy();}},newMessageBox:function(msg,parent){var gp=parent.getParent("th");var anc=new Element("div").addClass("field-msg-anchor").inject(gp,"top");var el=new Element("span").addClass("msg").adopt(new Element("span").set("html",msg)).inject(anc);parent.addEvent("focus",function(){el.fade(0);});},highlightCell:function(el){el.getParent("td").set("tween",{duration:2000}).highlight();}});