window.console||(console={log:function(){}}),page={promo:null,checkAgentCode:function(){var n=$("#AgentCode"),i;if(n.length>0){if(n.val()==n.data("last-validated-value"))return;if(i=n.val(),n.data("last-validated-value",i),n.siblings(".agent-code-valid,.agent-code-invalid").removeClass("input-success input-error"),n.closest(".control-group").removeClass("success error"),$.trim(i)==""){n.siblings(".tip-optional").show().siblings(".agent-name").text("");return}function t(n,t){$.trim($(t).val())==""&&$(t).val(n),$(t).data("dirty",1)}$.ajax({url:"/Customers/Registration/ValidateAgentCode?code="+i,cache:!1,success:function(i){i!=!1&&$.trim(i.Name)!=""?(n.siblings(".agent-code-valid").addClass("input-success").closest(".control-group").addClass("success").siblings(".permission").show(),n.siblings(".tip-optional").hide().siblings(".agent-name").text(i.Name),t(i.FirstName,"#Booking_ContactFirstName"),t(i.LastName,"#Booking_ContactLastName"),t(i.Email,"#Booking_ContactEmail"),t(i.Phone,"#Booking_ContactPhone"),t(i.Name,"#Booking_Company")):(n.siblings(".agent-code-invalid").addClass("input-error").closest(".control-group").addClass("error").siblings(".permission").hide(),n.siblings(".tip-optional").show().siblings(".agent-name").text(""))}})}},checkPromoCode:function(){var n=$("#PromoCode"),t;if(page.promo=null,n.length>0){if(n.val()==n.data("last-validated-value"))return;if(t=n.val(),n.data("last-validated-value",t),n.siblings(".promo-code-valid,.promo-code-invalid").removeClass("input-success input-error"),n.closest(".control-group").removeClass("success error"),$.trim(t)==""){n.siblings(".tip-optional").show();return}$.ajax({url:"/Customers/Registration/ValidatePromoCode",data:{code:t,productId:viewModel.productId,productOptionId:$("#ProductOptionId").val()},cache:!1,success:function(t){t!=!1&&$.trim(t.Code)!=""?(page.promo=t,page.productSelection.recalcTotals(),n.siblings(".promo-code-valid").addClass("input-success").closest(".control-group").addClass("success"),n.siblings(".tip-optional").hide()):(n.siblings(".promo-code-invalid").addClass("input-error").closest(".control-group").addClass("error"),n.siblings(".tip-optional").show())}})}},allocationCountdown:{secondsLeft:null,timeout:null,cancelTimer:function(){page.allocationCountdown.timeout!=null&&clearTimeout(page.allocationCountdown.timeout)},destroy:function(){page.allocationCountdown.cancelTimer(),$("#allocation-countdown").remove()},init:function(){var t=$("#AllocationAccessToken").val(),n=$("#allocation-countdown");if($.trim(t)==""){page.allocationCountdown.destroy();return}n.length==0?n=$('<div id="allocation-countdown" class="alert" style="margin-bottom: 10px; margin-top: 15px;"><\/div>').appendTo("#timer-container"):n.removeClass("alert-error"),$.ajax({url:"/Customers/Registration/GetAllocationTimeRemaining?token="+t,cache:"false",success:function(t){function r(){var t=page.allocationCountdown.secondsLeft,u,f;t==null||t<=0?n.addClass("alert-error").html(i+"Sorry, you have exceeded the allowed time limit for trying to purchase this package. Please start again."):(u=Math.floor(t/60),f=t-u*60,n.html(i+"You have <strong>"+u+" minute"+(u==1?"":"s")+" and "+f+" second"+(f==1?"":"s")+" remaining<\/strong> to complete this registration form."),page.allocationCountdown.secondsLeft=t-1,page.allocationCountdown.timeout=setTimeout(r,1e3))}var i='<span class="glyphicons stopwatch"><i><\/i><\/span> ';page.allocationCountdown.cancelTimer(),page.allocationCountdown.secondsLeft=t,r()}})}},handlers:{addAttachment:function(n){n.preventDefault(),$.ajax({url:"/Customers/Registration/AddAttachment?productId="+viewModel.productId,success:function(n){var t=$(n).appendTo("#attachments").slideDown("fast")}})},removeAttachment:function(n){n.preventDefault(),$(this).closest(".attachment").slideUp("fast",function(){$(this).remove()})}}},$(document).ready(function(){if($(".showRegisterTab").click(function(n){n.preventDefault(),$('a[data-toggle="tab"][href="#Register"]').tab("show")}),$(".add-attachment").live("click",page.handlers.addAttachment),$(".remove-attachment").live("click",page.handlers.removeAttachment),$("#AgentCode").live("keypress",function(n){n.which==13&&(n.preventDefault(),$(this).blur())}),$("#AgentCode").live("blur",page.checkAgentCode),$("#PromoCode").live("keypress",function(n){n.which==13&&(n.preventDefault(),$(this).blur())}),$("#PromoCode").live("blur",page.checkPromoCode),$.trim(viewModel.productLocation)!="")$('a[data-toggle="tab"][href="#Map"]').on("shown",function(){$("#EventMap").text("loading...");var t=viewModel.productLocation,i=new GMaps({div:"#EventMap",lat:-12.043333,lng:-77.028333});GMaps.geocode({address:t,callback:function(n,r){if(r=="OK"){var u=n[0].geometry.location;i.setCenter(u.lat(),u.lng()),i.addMarker({lat:u.lat(),lng:u.lng(),title:t})}}})});$(".fancybox-button").fancybox({groupAttr:"data-rel",prevEffect:"none",nextEffect:"none",closeBtn:!0,helpers:{title:{type:"inside"}}}),ib.ajaxForm.init("#Register form",{preSubmit:function(n){n.find(".accommodation-container:hidden").remove()},supportFiles:!0,success:function(n,t){page.allocationCountdown.init(),page.checkAgentCode(),page.checkPromoCode(),page.initFields(),page.setupDatePickers(),page.productSelection.loadAccommodationOptions(),page.addOns.init(),setTimeout(page.productSelection.recalcTotals,500);var i=$(t).find("#PaymentUrlForRedirection").val();$.trim(i)!=""&&(window.location=i)},validationError:function(){page.productSelection.loadAccommodationOptions(),page.addOns.init(),page.productSelection.recalcTotals(),page.allocationCountdown.init(),page.initFields(),page.setupDatePickers(),page.checkAgentCode(),page.checkPromoCode()}}),ib.ajaxForm.init("#Enquiry form"),page.initFields(),viewModel.initialTabId!=""&&($('a[href="#'+viewModel.initialTabId+'"][data-toggle="tab"]').tab("show"),setTimeout(function(){$('a[href="#'+viewModel.initialTabId+'"][data-toggle="tab"]').trigger("shown")},200))}),page.addOns={init:function(){var n=$("table.add-ons");if(n.length!=0){console&&console.log("page.addOns.init()");n.find(":checkbox").on("click",page.addOns.handlers.addOnClick);page.addOns.recalcTotals()}},recalcTotals:function(){var t=$("table.add-ons"),n=0;t.find(".info").each(function(){var r=$(this),e=r.find(".status:checked").length,o=r.closest("tr").prev().find(".pricePerTraveller").val(),u=parseFloat(o),s=isNaN(u)?0:u,f=s*e;n=n+f,r.find(".total span").text(ib.formatMoney(f))}),t.find("tfoot .price span").text(ib.formatMoney(n))},handlers:{skip:function(n){n.preventDefault();var i=$(this).closest("form"),t=i.find("#AccessToken").val();console&&console.log("skip",t),$("#Register").ajaxLoad("/Customers/Registration/Registered?accessToken="+t)},addOnClick:function(){console&&console.log("Add-on clicked",$(this).attr("id"),$(this).val()),page.addOns.recalcTotals()}}},$(document).ready(function(){$(".skip-addons").live("click",page.addOns.handlers.skip)}),page.productPricing={data:null,loaded:!1,load:function(n){function t(n){var t=!1;viewModel.productPricePerTraveller>0&&(t=!0),$.each(n.DepartureCities,function(n,i){if(i.Price>0)return t=!0,!1}),$.each(n.PricingOverrides,function(n,i){if(i.Price>0)return t=!0,!1}),!t&&viewModel.productOptions instanceof Array&&$.each(viewModel.productOptions,function(n,i){if(i.PricePerTraveller>0)return t=!0,!1}),t?$(".accommodation-selection .price, .accommodation-selection tfoot tr:not(:first)").show():$(".accommodation-selection .price, .accommodation-selection tfoot tr:not(:first)").hide()}page.productSelection.loadSurcharges(),page.productPricing.loaded?(t(page.productPricing.data),typeof n=="function"&&n(page.productPricing.data)):$.ajax({url:"/Customers/Registration/GetProductPricing?productId="+viewModel.productId,success:function(i){page.productPricing.data=i,page.productPricing.loaded=!0,t(i),typeof n=="function"&&n(i)}})},getProductOptionPrice:function(n){var t=null;return n=n==null?$("#ProductOptionId").val():n,viewModel.productOptions instanceof Array&&$.each(viewModel.productOptions,function(i,r){if(r.ProductOptionId==n)return t=r.PricePerTraveller,!1}),t}},page.productSelection={lastAccomOptions:null,loadAccommodationOptions:function(){if($("#ProductOptionId").length!=0){$(".room-configuration-select").each(function(){$(this).siblings(".room-configuration").hasClass("input-validation-error")&&$(this).addClass("input-validation-error")}),$(".accommodation-container,.simple-pricing-container").hide();var n=$("#ProductOptionId").val();$.trim(n)!==""&&$.ajax({url:"/Customers/Registration/GetAccommodationServiceOptions?productOptionId="+n,cache:!1,success:function(n){$.trim(n)!==""?(page.productSelection.lastAccomOptions=n,page.productSelection.setAccomOptions($(".accommodation-container").show().find("tbody tr")),$(".traveller-ct-container").hide()):($(".simple-pricing-container").show(),$(".traveller-ct-container").show(),$("#options-title").show()),page.productSelection.recalcTotals(),$("button.formSubmit:first").removeAttr("disabled")}})}},loadAddOns:function(){function i(n){n.preventDefault(),$(".addon-info",this.closest("td")).toggle()}var t=ib.parseFloatOrZero($("#ProductOptionId").val()),n=$(".add-on-preselection");n.length!==0&&t!==0&&(n.html(""),$.ajax({url:"/Customers/Registration/GetProductSelectionAddOns/"+viewModel.productId+"?productOptionId="+t,cache:!1,success:function(t){n.html(t),$(".show-addon-info",n).click(i),$(":checkbox",n).click(page.productSelection.recalcTotals),App.initUniform()}}))},loadSurcharges:function(){var i=ib.parseFloatOrZero($("#ProductOptionId").val()),n=$.map(viewModel.surcharges||[],function(n){return n.productOptionIds.indexOf(i)>=0?n:null}),t;if(n.length===0){$(".surcharges-container").hide();return}t=$(".surcharges-container").show().find("tbody").html(""),$.each(n,function(n,i){t.append('<tr data-amount="'+i.Amount+'"><td>'+i.Description+'<\/td><td class="total-traveller-count" style="text-align: right;"><\/td><td class="amount" style="text-align: right;"><\/td><\/tr>')})},populateRoomTypes:function(n,t){var i=$(n),r;if(i.length===0){console.warn("No target found");return}r=i.siblings(".room-configuration"),r.length===0&&console.warn("Can't find hidden ID field"),i.html('<option value="">- Select -<\/option>').prop("disabled",!0),$.ajax({url:"/Customers/Registration/GetRoomTypes?productOptionServiceOptionId="+t,cache:!1,success:function(n){$.each(n,function(n,t){i.append('<option value="'+t.RoomTypeId+'" data-occupancy="'+t.Occupancy+'">'+t.Name+"<\/option>")}),i.prop("disabled",!1),i.val(r.val()).trigger("change")}})},recalcTotals:function(){function u(n,t,i){var r=0;return n!=null&&(r=ib.parseFloatOrZero(n.PricePerBooking)+ib.parseFloatOrZero(n.PricePerTraveller),$.each(n.PricingOverrides,function(n,u){u.ProductOptionServiceOptionId==parseFloat(t)&&u.RoomTypeId===parseInt(i)&&(r=ib.parseFloatOrZero(u.Price))})),r}function n(n,t){var i=0,r="",u=0;return $.each(t.DepartureCities,function(n,t){t.DepartureCityId==$("#DepartureCityId").val()&&(i=t.Price,r=t.Name)}),i>0?(u=i*n,$(".departure-surcharge-unit-price").text(ib.formatMoney(i)),$(".departure-surcharge").text(ib.formatMoney(i*n)),$(".departure-surcharge-city").text(r),$(".departure-surcharge-container").show()):$(".departure-surcharge-container").hide(),u}function f(n){var t=0;return page.promo!=null&&page.promo.Discount>0?(t=-1*page.promo.Discount*n,$(".promo-discount-container").show(),$(".promo-discount").text(ib.formatMoney(t)),$(".promo-discount-unit").text(ib.formatMoney(page.promo.Discount))):$(".promo-discount-container").hide(),t}function t(n){var t=0;return $(".add-on-preselection tbody tr").each(function(i,r){var f=$(":checkbox",r).is(":checked"),u;$(".traveller-count",r).toggle(f).text(n),u=f?ib.parseFloatOrZero($(r).data("price"))*n:0,$(".price",r).text(ib.formatMoney(u)),t=t+u}),t}function i(n){var t=0;return $(".surcharges-container tbody tr").each(function(i,r){var u=ib.parseFloatOrZero($(r).data("amount"))*n;$(".amount",r).text(ib.formatMoney(u)),t=t+u}),t}function e(e){var o=0,s=0;e!=null&&($(".accommodation-selection tbody tr").each(function(n,t){var h=$(t).find(".accom-id").val(),r=$(".room-configuration-select option:selected",t),c=r.val(),f=u(e,h,c),i=ib.parseFloatOrZero(r.data("occupancy"));$(t).find(".traveller-count").text(i),$(t).find(".price").text(ib.formatMoney(i*f)),o=o+i,s=s+i*f}),s+=n(o,e),s+=f(o)),s+=t(o),s+=i(o),r(s,e),$("#TravellerCt").val(o),$(".total-traveller-count").text(o)}function o(u){var o=parseFloat(page.productPricing.getProductOptionPrice()),s=isNaN(o)?viewModel.productPricePerTraveller:o,h=parseInt($("#TravellerCt").val()),f=isNaN(h)?0:h,c=f*s,l=$(".simple-pricing-container table"),e=c+n(f,u);l.find("tbody tr:first .unit-price").text(ib.formatMoney(s)),l.find("tbody tr:first .price").text(ib.formatMoney(c)),e+=t(f),e+=i(f),r(e,u),$(".total-traveller-count").text(f)}function r(n,t){var i=n*(viewModel.productTaxRate/100),r=$("table.totals-table");isNaN(i)||t.PriceTaxMode!=2||($(".sub-total .price",r).text(ib.formatMoney(n)),$(".tax-total .price",r).text(ib.formatMoney(i)),n=n+i),$(".grand-total .price",r).text(ib.formatMoney(n))}$(".accommodation-container").is(":visible")?page.productPricing.load(e):$(".simple-pricing-container").is(":visible")&&page.productPricing.load(o)},setAccomOptions:function(n){var t=page.productSelection.lastAccomOptions;$.trim(t)!==""&&$(n).each(function(n,i){var r=parseInt($(i).data("selected-poso-id")),u=$.trim($(i).data("selected-roomconfig")),e=$(i).find("select:first").html("<option>- Accommodation Option -<\/option>"+t).on("change",page.productSelection.handlers.accomOptionChanged),f=$(i).find(".room-configuration-select");f.on("change",page.productSelection.recalcTotals);!isNaN(r)&&r>0&&e.val(r).trigger("change"),u!=""&&f.val(u)})},showHideRoomConfiguration:function(){},handlers:{accomOptionChanged:function(){if($(this).find("option:selected").data("sold-out")=="1"){alert("Sorry, this option has sold out."),$(this).val("").trigger("change");return}var t=$(this).closest("tr").find(".accom-id").val(),i=$(this).siblings(".room-configuration-select");page.productSelection.populateRoomTypes(i,t),page.productSelection.recalcTotals()},addAccommodation:function(n){n.preventDefault(),$.ajax({url:"/Customers/Registration/AddAccommodation?productOptionId="+$("#ProductOptionId").val(),success:function(n){var t=$(n).appendTo(".accommodation-selection tbody").slideDown("fast");page.productSelection.setAccomOptions(t),page.productSelection.recalcTotals()}})},productOptionChanged:function(){page.productSelection.loadAccommodationOptions(),page.productSelection.loadAddOns()},removeAccommodation:function(n){n.preventDefault(),$(this).closest("tr").slideUp("fast",function(){$(this).remove(),page.productSelection.recalcTotals()})},revertToProductSelection:function(n){n.preventDefault(),$("#RevertToProductSelection").val("True").closest("form").attr("action","/book/"+$("#AccessToken").val()).trigger("submit")}}},$(document).ready(function(){$(".add-accommodation").live("click",page.productSelection.handlers.addAccommodation),$(".remove-accommodation").live("click",page.productSelection.handlers.removeAccommodation),$("#DepartureCityId").live("change",page.productSelection.recalcTotals),$("#ProductOptionId_Select").live("change",function(){$(this).siblings(".product-option-id").val($(this).val()),page.productSelection.handlers.productOptionChanged()}),$(".room-configuration-select").live("change",function(){$(this).siblings(".room-configuration").val($(this).val()),page.productSelection.recalcTotals()}),$("#TravellerCt").live("change",page.productSelection.recalcTotals),$(".revert-to-product-selection").live("click",page.productSelection.handlers.revertToProductSelection),page.productSelection.loadAccommodationOptions(),page.productSelection.recalcTotals(),page.productSelection.loadAddOns(),viewModel.productId===4995&&$("button.formSubmit:first").attr("disabled","disabled"),$.each(viewModel.surcharges,function(n,t){t.productOptionIds=$.map((t.Options||"").split(","),function(n){return parseInt(n)})})}),page.setupDatePickers=function(n){n==null&&(n=".datepicker"),$(n).datepicker({autoclose:!0,format:viewModel.datePickerFormat})},page.initFields=function(){function n(n,t){var i=null;return $(n).each(function(n,r){r.types[0]==t&&(i=r.long_name)}),i}App.initUniform();var t=$(".field-number :input:visible");t.unbind("blur").bind("blur",function(){var n=$(this).val(),n=parseFloat(n),n=isNaN(n)?0:n;$(this).val(n)}),$(".field-autocomplete .autocomplete").each(function(n,t){var i=$(t).data("lookuptypeid");$(t).typeahead({source:function(n,t){$.ajax({url:"/Customers/Lookup/Autocomplete/"+i+"?query="+n,success:function(n){var i=[];$.each(n,function(n,t){i.push(t.Label)}),t(i)}})}})}),$(".address-select").each(function(t,i){var f={regions:["locality","sublocality","postal_code"]},r=$(this).closest("form"),u;$(i).off("changed").on("changed",function(){$.trim($(this).val())==""&&r.find(".address-component").val("")});u=new google.maps.places.Autocomplete(i,f),google.maps.event.addListener(u,"place_changed",function(){var t=this.getPlace();r.find("#Booking_StreetNo").val(n(t.address_components,"street_number")),r.find("#Booking_Street").val(n(t.address_components,"route")),r.find("#Booking_Suburb").val(n(t.address_components,"locality")),r.find("#Booking_City").val(n(t.address_components,"locality")),r.find("#Booking_State").val(n(t.address_components,"administrative_area_level_1")),r.find("#Booking_Country").val(n(t.address_components,"country")),r.find("#Booking_Postcode").val(n(t.address_components,"postal_code"))})})},page.handlers.addTraveller=function(n){n.preventDefault(),$.ajax({url:"/Customers/Registration/AddTraveller?index="+$("#Travellers .traveller").length+"&productId="+viewModel.productId,success:function(n){var t=$(n).appendTo("#Travellers").slideDown("fast");page.setupDatePickers(t.find(".datepicker")),page.initFields()}})},page.handlers.removeTraveller=function(n){n.preventDefault(),$(this).closest(".traveller").slideUp("fast",function(){$(this).remove()})},$(document).ready(function(){$(".add-traveller").live("click",page.handlers.addTraveller),$(".remove-traveller").live("click",page.handlers.removeTraveller),!viewModel.bookingId>0&&($("#Travellers .traveller:first .first-name, #Travellers .traveller:first .last-name, #Travellers .traveller:first .email, #Travellers .traveller:first .mobile").live("keyup change",function(){var t=null;$(this).hasClass("first-name")&&(t=$("#Booking_ContactFirstName")),$(this).hasClass("last-name")&&(t=$("#Booking_ContactLastName")),$(this).hasClass("email")&&(t=$("#Booking_ContactEmail")),$(this).hasClass("mobile")&&(t=$("#Booking_ContactMobile")),t!=null&&t.data("dirty")!="1"&&t.val($(this).val())}),$("#Booking_ContactFirstName,#Booking_ContactLastName,#Booking_ContactMobile,#Booking_ContactEmail").live("keyup change",function(){$(this).data("dirty","1")})),page.setupDatePickers()})