"use strict";function _typeof(n){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},_typeof(n)}function asyncGeneratorStep(n,t,i,r,u,f,e){try{var o=n[f](e),s=o.value}catch(h){i(h);return}o.done?t(s):Promise.resolve(s).then(r,u)}function _asyncToGenerator(n){return function(){var t=this,i=arguments;return new Promise(function(r,u){function f(n){asyncGeneratorStep(e,r,u,f,o,"next",n)}function o(n){asyncGeneratorStep(e,r,u,f,o,"throw",n)}var e=n.apply(t,i);f(undefined)})}}(function(n,t,i,r){n.GlobalView=i.View.extend({el:"body",initialize:function(){this.initializeTabPanels();this.initializeAccordionPanels();this.initializeGridVehicleLists();this.initializeFancyFormControls();this.initializeTableHoverRows();this.initializeValidation();this.initializeDealerSelector();this.initializeEqualHeights();this.initiaiizeAutocomplete();this.initializeFluidImageBlock();this.initializeSocialShare();this.initializeVideoButtonBlock()},initializeTabPanels:function(){t('.nav-tabs li > a[href^="#"]').each(function(){var n=t(this),i=r.location.hash;if(i&&i===n.attr("href"))t(r).on("load",function(){n.tab("show")});n.on("click",function(t){t.preventDefault();n.tab("show")})})},initializeAccordionPanels:function(){t(".panel--accordion").each(function(){function e(t){if(u.height(s[0].offsetHeight),t)u.one(n.helpers.whichTransitionEvent(),function(){u.height("auto")})}var i=t(this),o=i.find("> .panel__title"),u=i.find("> .panel__collapse"),s=u.find("> .panel__body"),f=i.data("group"),h=r.location.hash.substring(1);if(h===i.attr("id"))t(r).on("load",function(){i.addClass("is-active");n.helpers.scrollTo(i)});i.hasClass("is-active")&&e();t(r).on("resize",_.debounce(function(){i.hasClass("is-active")&&e()},300));o.on("click",function(){if(!n.breakpoint.is("sm")||!i.hasClass("panel--accordion-expander")){if(f&&f.length>0){var r=t(".panel--accordion[data-group=".concat(f,"].is-active")).not(i);r.removeClass("is-active");r.find("> .panel__collapse").height("")}if(e(!i.hasClass("is-active")),i.hasClass("is-active")&&u.height(""),i.toggleClass("is-active"),!i.hasClass("panel--accordion-no-scroll"))u.one(n.helpers.whichTransitionEvent(),function(){n.helpers.scrollTo(i)})}})})},initializeGridVehicleLists:function(){function i(i,r){var e=u[r.name],f=t(".vehicle",i),o=0;f.removeClass("top bottom left right center").css("height","");n.breakpoint.is("sm")&&f.each(function(){var n=t(this).outerHeight(!1);n>o&&(o=n)}).css("height",o);var s=f.length%e||e,h=f.slice(0,e).addClass("top"),c=f.slice(-s).addClass("bottom"),l=f.filter(function(n){return(n+1)%e==1}).addClass("left"),a=f.filter(function(n){return(n+1)%e==0}).addClass("right");f.not(h).not(c).not(l).not(a).addClass("center")}var u={"default":1,xs:1,sm:2,md:3,lg:4,xl:4};t(".vehicle-list--grid").each(function(){var u=t(this),f=n.breakpoint.current;t(r).on("breakpoint.change",function(n,t,r){i(u,t,r)});u.imagesLoaded(function(){i(u,f)})})},initializeFancyFormControls:function(){t(document).on("focus",".fancy .form-control",function(){var n=t(this),i=n.closest(".fancy");return n.prop("readonly")?!1:(i.addClass("fancy--focused"),!0)});t(document).on("blur",".fancy .form-control",function(){var n=t(this),i=n.closest(".fancy");return n.prop("readonly")?!1:(i.removeClass("fancy--focused"),!0)})},initializeTableHoverRows:function(){if(!Modernizr.touchevents)return!1;t(".table tbody > tr > td").attr("tabindex",1).on("touchstart",function(){t(this).closest("tr").focus()});return!0},initializeValidation:function(){t.extend(t.validator.defaults,{errorPlacement:function(n,t){t.closest(".form-group").append(n)},highlight:function(n,i){var r=t(n);r.is("select")&&(r=r.closest(".fancy-select"));r.closest(".fancy").addClass(i)},unhighlight:function(n,i){var r=t(n);r.is("select")&&(r=r.closest(".fancy-select"));r.closest(".fancy").removeClass(i)}});t(".form-control").on("change",function(){var n=t(this);n.val(t.trim(n.val()))});i.Stickit.addHandler({selector:".form-control",initialize:function(n){n.on("change",function(){n.val(t.trim(n.val()))})},getVal:function(n){return t.trim(n.val())}})},initializeDealerSelector:function(){var o,u,s,i,f,e;if(t(".used-car-dealership-toggle__link").length>0){o=n.helpers.template('<label class="class="used-car-filter-item__label"><input type="radio" name="dealerId" value="<%- id %>" class="used-car-filter-item__option" checked /> <%- name %><\/label>');u=new n.DealerSelectorView({branchType:0,callback:function(n){t(".used-car__selected-dealer").html(o(n.toJSON())).removeClass("hidden");u.hide()}});t(".used-car-dealership-toggle__link").on("click",function(n){n.preventDefault();u.show()})}s=function(n){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:r.location.href,u=n.replace(/[\[\]]/g,"\\$&"),f=new RegExp("[?&]".concat(u,"(=([^&#]*)|&|#|$)")),t=f.exec(i);return t?t[2]?decodeURIComponent(t[2].replace(/\+/g," ")):"":null};i=function(n){var i=t(".select-vehicle-modal");i.attr("data-dealer-id",n)};t("#select_vehicle form").length>0&&t("[name=dealerId]").length>0&&i(t("[name=dealerId]").val());var h=function(n,i){if(n)t(".your-dealer__hours").hide(),t(".your-dealer__holiday").hide();else switch(i){case"sales":t(".your-dealer__hours_parts, .your-dealer__hours_service").hide();break;case"service":t(".your-dealer__hours_parts, .your-dealer__hours_sales").hide();break;case"parts":t(".your-dealer__hours_service, .your-dealer__hours_sales").hide()}},c=function(){return t(".your-dealer").attr("data-show-opening-hours")!=="true"},l=function(){var n=t(".reserve .dealer-picker-form_element");return n?n.attr("data-epiforms-element-name"):null},a=function(n){var r=l(),i;r&&(i=t('[name="'+r+'"]'),i&&(i.val(n),n?t(".dealer_error .error_text").addClass("hidden"):t(".dealer_error .error_text").removeClass("hidden")))};if(t(".tex .reserve .dealer_locator").length>0){i(s("dealerId"));f=new n.DealerSelectorView({branchType:0,callback:function(r,u){u.prop("disabled",!0);n.templates.fetch("old-your-dealer",function(n){t(".tex .reserve .your-dealer__chosen-dealer").html(n(r.toJSON())).show();h(c(),"sales");u.prop("disabled",!1);f.hide();t(".tex .reserve .dealer_locator").hide();i(r.get("id"));a(r.get("name"))})}});t(document).on("click",".tex .reserve .dealer_locator .find_dealer, .tex .reserve .your-dealer .change_dealer",function(n){n.preventDefault();f.show()})}if(t("#main_content_section.servicing .dealer_locator").length>0){e=new n.DealerSelectorView({includeThirdParty:!0,callback:function(i,r){r.prop("disabled",!0);n.templates.fetch("old-your-dealer",function(n){t("#main_content_section.servicing .your-dealer").html(n(i.toJSON())).show();h(c(),"service");t(".loanInfo").html(i.get("loanInfo"));r.prop("disabled",!1);e.hide();t("#main_content_section.servicing .dealer_locator").hide()})}});t(document).on("click","#main_content_section.servicing .dealer_locator .find_dealer, #main_content_section.servicing .your-dealer .change_dealer",function(n){n.preventDefault();e.show()})}},initializeEqualHeights:function(){function i(){t("[data-equal]").each(function(){var r=t(this),u=r.find(r.data("equal")).height(""),i=0;n.breakpoint.is("sm")&&u.each(function(){var n=t(this).outerHeight(!1);n>i&&(i=n)}).height(i)})}i();t(r).on("resize",_.debounce(i,300))},initiaiizeAutocomplete:function(){t.ui.autocomplete.prototype._resizeMenu=function(){var n=this.menu.element;n.outerWidth(this.element.outerWidth())}},initializeFluidImageBlock:function(){t(".block-image--fluid").each(function(){function u(){var t=i.outerWidth(),r=n.outerWidth(),u=t>r?(t-r)/-2:0;i.css("margin-left",u)}var n=t(this),i=n.find("> img");t(r).on("load resize orientationchange",_.debounce(u,300))})},initializeSocialShare:function(){t(".block-social--share ul > li > a").on("click",function(i){i.preventDefault();t(this).hasClass("icon-facebook")&&n.shareService.toFacebook();t(this).hasClass("icon-twitter")&&n.shareService.toTwitter()})},initializeVideoButtonBlock:function(){t(".btn-video[data-youtube-id]").on("click",function(i){var u=t(this).data("youtube-id"),r;i.preventDefault();n.videoOverlay||(n.videoOverlay=new n.VideoModalOverlayView);r=t("<div />").addClass("video-container");t("<iframe />").attr("src","https://www.youtube.com/embed/".concat(u,"?autoplay=1&modestbranding=1&rel=0")).appendTo(r);n.videoOverlay.setContent(r).render();n.videoOverlay.show()})}})})(window.tnz=window.tnz||{},jQuery,Backbone,window),function(n,t,i,r){n.AlertView=r.View.extend({className:"alert",events:{"click .alert__close":"hide"},initialize:function(n){n=n||{};this.title=n.title||null;this.message=n.message||null;this.template=i.bind(function(){return'<button type="button" class="alert__close"><\/button>'+(this.title?'<h3 class="alert__title">'+this.title+"<\/h3>":"")+'<div class="alert__message">'+this.message+"<\/div>"},this);this.render(!0)},setContent:function(n,t){return this.setTitle(n),this.setMessage(t),this},setTitle:function(n){return this.title=n,this},setMessage:function(n){return this.message=n,this},render:function(n){return this.$el.html(this.template),n&&this.$el.hide(),this},show:function(){return this.$el.velocity("slideDown",{duration:200,complete:function(){t(this).addClass("is-active")}}),this},hide:function(){return this.$el.velocity("slideUp",{duration:200,begin:function(){t(this).removeClass("is-active")}}),this}});n.ErrorAlertView=n.AlertView.extend({className:"alert alert--error"});n.MobileDealerAlertView=n.AlertView.extend({el:".dealer-alert",className:"alert",events:{"click .alert__close":"hide","click .dealer-finder > a":"openDealerFinder"},initialize:function(n){this.callback=n||t.noop;this.content=this.$el.html();this.template=i.bind(function(){return'<button type="button" class="alert__close"><\/button><div class="alert__message">'+this.content+"<\/div>"},this);this.render(!0)},render:function(t){return this.$el.html(this.template),n.dealerCampaignOptions&&n.dealerCampaignOptions.length>0&&this.$el.addClass("dealer-alert--campaign"),t&&this.$el.hide(),this},openDealerFinder:function(n){n.preventDefault();this.callback.call(this)}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.OverlayView=r.View.extend({className:"overlay",initialize:function(n){this._setOptions(n);this._setEvents();this._render()},_render:function(){t(".niban:last").append(this.render().el)},_setOptions:function(n){this.options=i.extend({template:'<div class="overlay__wrapper"><div class="overlay__content"><button type="button" class="overlay__close"><\/button><div class="overlay__inner"><\/div><\/div><\/div>'},n);this.options.content&&this.setContent(this.options.content)},_setEvents:function(){var n=this;this.$el.on("click.overlay",function(i){var r=t(i.target);r.closest(".overlay__close").length&&(i.preventDefault(),n.hide())})},setContent:function(n){return this.$content=t(n),this},render:function(){return this.$el.html(this.options.template),this.$el.find(".overlay__inner").html(this.$content),this.hide(),this},show:function(n){return this.$el.velocity({opacity:1},{visibility:"visible",complete:n||t.noop}),this},hide:function(n){return this.$el.velocity({opacity:0},{visibility:"hidden",complete:n||t.noop}),this},getWidth:function(){return this.$el.width()}});n.ModalOverlayView=n.OverlayView.extend({className:"overlay overlay--modal",_setEvents:function(){var n=this;this.$el.on("click.overlay",function(i){var r=t(i.target);(r.is(".overlay__wrapper")||r.closest(".overlay__close").length)&&(document.getElementById("autoplay-video-container")&&(document.getElementById("autoplay-video-container").style.display="none"),i.preventDefault(),n.hide(),t(".dealer-branch-listing").length>0&&u.location.reload())});this.$el.on("click.dealer-btn",function(n){t(n.target).hasClass("dealer-btn")&&n.preventDefault()})},getWidth:function(){return this.$(".overlay__inner").width()}});n.VideoModalOverlayView=n.ModalOverlayView.extend({className:"overlay overlay--modal overlay--video",render:function(){return this.$el.html(this.options.template),this.$el.find(".overlay__inner").html(this.$content),this.hide(!1),this},hide:function(n){function i(){n!==!1&&t.$el.find(".overlay__inner").empty()}var t=this;return this.$el.velocity({opacity:0},{visibility:"hidden",complete:i}),this}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i){n.MenuView=i.View.extend({el:"#menu",events:{"click .menu-parent > a":"openLevel","click .menu-previous":"closeLevel"},initialize:function(){this.isOpen=!1;this.$currentLevel=null},open:function(t){var i=this.$("> ul > li"),r=600,u=30;i.each(function(n){this.style.transitionDelay=r+n*u+"ms"}).one(n.helpers.whichTransitionEvent(),function(){this.style.transitionDelay=null});t&&setTimeout(t,r+i.length*u);this.isOpen=!0},close:function(){this.toggleLevel();this.isOpen=!1},openLevel:function(n){var t=this.$(n.currentTarget).parent(),i=t.find("> .menu-level");n.preventDefault();this.toggleLevel(i)},closeLevel:function(n){n.preventDefault();this.toggleLevel()},toggleLevel:function(t){if(this.$currentLevel)this.$currentLevel.removeClass("menu-level-open").one(n.helpers.whichTransitionEvent(),_.bind(function(){this.$el.removeClass("menu-overflow");this.$currentLevel=null},this));if(t&&t.length){this.$currentLevel=t;this.$currentLevel.addClass("menu-level-open").one(n.helpers.whichTransitionEvent(),_.bind(function(){this.$el.addClass("menu-overflow")},this))}},openDealerFinder:function(){var n=this.$(".dealer-finder"),t=n.find("> .menu-level");this.toggleLevel(t)}})}(window.tnz=window.tnz||{},jQuery,Backbone,window),function(n,t,i,r,u){n.HeaderView=i.View.extend({el:"#header",events:{"click .dealer-finder > a":"toggleDealerFinder","click .wishlist-toggle":"toggleWishlist"},initialize:function(){var i=this;t(document).on("click","body",function(n){var r=t(n.target);i.isDealerFinderOpen()&&!r.closest(".dealer-finder").length&&i.closeDealerFinder()});t(r).on("breakpoint.change",function(){(n.breakpoint.is("lg")||n.breakpoint.is("xl"))&&(i.closeMenu(),i.closeDealerOverlay())});this.menu=new n.MenuView;t(r).on("load",_.bind(this.initializeDealerFinder,this))},toggleDropdown:function(n){var i=t(n.currentTarget).parent();n.preventDefault();i.toggleClass("active");t(".main-nav .dropdown.active, .dealer-dropdown.active").not(i).removeClass("active")},isMenuOpen:function(){return t(".primary-nav").getAttribute("data-menu-open")==="true"},closeMenu:function(){t("body").removeClass("menu-active");t(".primary-nav")[0].setAttribute("data-menu-open","false")},isSearchOpen:function(){return t(".primary-nav")[0].getAttribute("data-search-open")==="true"},initializeDealerFinder:function(){var f=this,o=n.localStorage.get("hasSeenDealerFinder"),s=!!n.currentDealerId,h=n.dealerCampaignOptions&&n.dealerCampaignOptions.length>0,e;if(h&&s&&(e=new i.Collection(n.dealerCampaignOptions).get(n.currentDealerId),e&&n.dealerFinder.hideCampaignPanel()),h&&!e||!(o||s)){var l=n.breakpoint.is("md"),c=1e4,r=this,t;if(l){this.openDealerFinder();t=new n.Timeout(function(){r.closeDealerFinder()},c);this.$(".dealer-finder__panel").on("mouseenter",function(){t.stop()});this.on("closeDealerFinder",function(){t.stop()});n.dealerFinder.once("hideCampaignPanel",function(){r.closeDealerFinder()})}else r.openDealerOverlay(),t=new n.Timeout(function(){r.closeDealerOverlay()},c);t.start();o||("geolocation"in u&&(t.stop(),u.geolocation.getCurrentPosition(function(i){var e=i.coords,u;(f.coOrds=e,f.timeOut=t,n.dealerFinder.hasRegion())||(u=_.bind(r.updateDealerLocation,f),n.scripts.getGoogleMaps().then(u))},function(){t.start()})),n.localStorage.set("hasSeenDealerFinder",1))}},updateDealerLocation:function(){var t=new google.maps.Geocoder,i={location:{lat:this.coOrds.latitude,lng:this.coOrds.longitude}};t.geocode(i,_.bind(function(t,i){var u=this,r;i==="OK"?(r=n.helpers.getCountryFromGeoResult(t),r&&r.toUpperCase()==="NZ"?(n.dealerFinder.disableRegion().showLoader(),n.dealerService.getRegionByLatLng(this.coOrds.latitude,this.coOrds.longitude).then(function(t){n.dealerFinder.hideLoader().setRegion(t).enableRegion();u.timeOut.start()},function(){n.dealerFinder.hideLoader().enableRegion();u.timeOut.start()})):this.timeOut.start()):this.timeOut.start()},this))},toggleDealerFinder:function(n){n.preventDefault();this[this.isDealerFinderOpen()?"closeDealerFinder":"openDealerFinder"]()},isDealerFinderOpen:function(){return this.$(".dealer-finder").hasClass("active")},openDealerFinder:function(){this.$(".main-nav .dropdown.active").removeClass("active");this.$(".dealer-finder").addClass("active");this.trigger("openDealerFinder")},closeDealerFinder:function(){this.$(".dealer-finder").removeClass("active");this.trigger("closeDealerFinder")},isDealerOverlayOpen:function(){return t("body").hasClass("dealer-active")},openDealerOverlay:function(){this.closeMenu();t("body").addClass("dealer-active");t(".primary-nav").attr("data-dealer-open",!0)},closeDealerOverlay:function(){t("body").removeClass("dealer-active");t(".primary-nav").attr("data-dealer-open",!1);t(".dealer-overlay").one(n.helpers.whichTransitionEvent(),function(){n.dealerFinder.hideCampaignPanel()})},toggleWishlist:function(){this.closeDealerOverlay();this.closeDealerFinder();this.closeMenu()}})}(window.tnz=window.tnz||{},jQuery,Backbone,window,navigator),function(n,t,i,r){n.DealerFinderView=r.View.extend({el:".dealer-finder",events:{"change [name=region]":"changeRegion","change [name=dealer]":"selectDealer","click .save-btn":"saveDealer","click .dealer-finder__panel--campaign .dealer-finder__see-all-link":"hideCampaignPanel"},initialize:function(){this.$(".dealer-finder__save-btn").on("click",i.bind(this.saveDealer,this));this.initializeDealerOptions();this.initializeCampaignDealerOptions()},initializeDealerOptions:function(){var t=i.bind(this.filterRegionDealerOptions,this);n.dealerService.getAll().then(t)},initializeCampaignDealerOptions:function(){if(n.dealerCampaignOptions&&n.dealerCampaignOptions.length!==0){var t=this.$(".dealer-finder__panel--campaign .dealer-finder__branches > .nav-list"),i=new r.Collection(n.dealerCampaignOptions);this.renderBranchList(t,i);this.showCampaignPanel()}},showCampaignPanel:function(n){n&&n.preventDefault();this.$el.addClass("dealer-finder--campaign")},hideCampaignPanel:function(n){n&&n.preventDefault();this.$el.removeClass("dealer-finder--campaign");this.trigger("hideCampaignPanel")},filterRegionDealerOptions:function(t){var u=[],f=i.filter(t,function(n){var t=n.branchType===0,i=n.regionId;return t&&u.indexOf(i)===-1&&u.push(i),t}),e=i.filter(n.regionOptions,function(n){return u.indexOf(n.id)!==-1});this.regions=new r.Collection(e);this.dealers=new r.Collection(f);this.renderRegionDropdownOptions()},renderRegionDropdownOptions:function(){var n=this.$("[name=region]");this.regions.each(function(i){t("<option>").text(i.get("name")).val(i.get("id")).appendTo(n)})},branchListItemTemplate:i.template('<li class="radio"><label><input type="radio" name="dealer" value="<%= id %>"> <%= name %><\/label><\/li>',{evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g}),renderBranchList:function(n,i){n.hide().empty();this.selectedDealer=null;this.$(".dealer-finder__save-btn").prop("disabled",!0);i.each(function(i){var r=i.toJSON(),u=this.branchListItemTemplate(r);t(u).appendTo(n)},this);i.length>0&&n.show()},changeRegion:function(n){var i=parseFloat(t(n.currentTarget).val()),u=this.dealers.where({regionId:i}),f=this.$(".dealer-finder__panel--default .dealer-finder__branches > .nav-list");this.renderBranchList(f,new r.Collection(u))},selectDealer:function(n){var i=parseFloat(t(n.currentTarget).val());this.selectedDealer=this.dealers.get(i);this.$(".save-btn button").first().prop("disabled",!1);this.$(".dealer-finder__save-btn").prop("disabled",!1)},saveDealer:function(){var t=this.selectedDealer.get("id");this.$(".dealer-finder__save-btn").prop("disabled",!0);this.$(".save-btn button").first().prop("disabled",!0);n.dealerService.save(t)},hasRegion:function(){return!!this.$("[name=region]").val()},setRegion:function(n){return this.$("[name=region]").val(n).trigger("change"),this},enableRegion:function(){return this.$("[name=region]").prop("disabled",!1),this},disableRegion:function(){return this.$("[name=region]").prop("disabled",!0),this},showLoader:function(){return this.$el.addClass("dealer-finder--loading"),this},hideLoader:function(){return this.$el.removeClass("dealer-finder--loading"),this}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r){n.DealerProfileModel=r.Model.extend({defaults:{id:null,name:null,profileImageUrl:null,phone:null,email:null,website:null,city:null,suburb:null,street:null,street2:null,postCode:null,longitude:null,latitude:null,branchType:null,callToActionLink:null,callToActionName:null,serviceOpeningHours:null,partsOpeningHours:null,salesOpeningHours:null}});n.DealerProfileModalView=r.View.extend({events:{"click .dealer-btn":"toggleSavedDealer"},initialize:function(){this.model=new n.DealerProfileModel;this.overlay=new n.ModalOverlayView;this.overlay.setContent(this.render().el).render();this.listenTo(this.model,"change",this.render)},render:function(){return n.templates.fetch("dealer-profile",function(n){var t=this.model.toJSON();this.$el.html(n(t))},this),this},hide:function(){this.overlay.hide()},show:function(){this.overlay.show()},updateModel:function(n){this.model.set(n)},toggleSavedDealer:function(i){var r=t(i.currentTarget).prop("disabled",!0);i.preventDefault();r.hasClass("dealer-btn--saved")?(n.dealerService.forget(!1),r.removeClass("dealer-btn--saved").removeAttr("disabled")):(n.dealerService.save(this.model.get("id"),!1),r.addClass("dealer-btn--saved").removeAttr("disabled"))}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.ContactPageView=r.View.extend({el:".contact-page",events:{"click [href=#enquiry-form]":"scrollToEnquiryForm","change [name=enquiryType]":"changeEnquiryType","change [name=toyotaFleetHelp]":"changeToyotaFleetHelp"},initialize:function(){this.$("#enquiry-form").validate({submitHandler:i.bind(function(n){var t,i;if(this.hideErrorMessageRecaptcha(),t=grecaptcha.getResponse(this.recaptchaWidgetId),!t)return this.showErrorMessageRecaptcha("The captcha is required and can not be unchecked.");if(i=this.$("#policyCheck").is(":checked"),i)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}n.recaptchaResponse.value=t;this.$(".js-submit").prop("disabled",!0);n.submit()},this)});this.errorMessageRecaptcha=new n.ErrorAlertView;this.$(".recaptcha-error-message").append(this.errorMessageRecaptcha.el);u.recaptchaCallback=i.bind(this.renderRecaptcha,this)},changeEnquiryType:function(i){var r=t(i.currentTarget).find("option:selected").val(),u=this.$("#enquiry-form").validate();u.resetForm();this.resetFormSections();switch(r){case n.constants.ENQUIRY_TYPE_SAFETY_RECALL:this.showSafetyRecallSection();break;case n.constants.ENQUIRY_TYPE_VEHICLE_SERVICE:this.showVehicleService();this.showVehiclePartsService();break;case n.constants.ENQUIRY_TYPE_VEHICLE_PARTS:this.showVehiclePartsService();break;case n.constants.ENQUIRY_TYPE_FINANCE_COMPLAINT:this.showFinanceComplaintSection();break;case n.constants.ENQUIRY_TYPE_FLEET:this.showFleetEnquirySection()}},changeToyotaFleetHelp:function(i){t(i.currentTarget).find("option:selected").val()===n.constants.ENQUIRY_TYPE_FLEET_NEW?this.$(".new-fleet-own-lease").removeClass("hidden"):this.$(".new-fleet-own-lease").addClass("hidden")},resetFormSections:function(){this.$(".form-body").removeClass("hidden");this.$(".fleet-enquiry").addClass("hidden");this.$(".safety-recall").addClass("hidden");this.$(".finance-complaint").addClass("hidden");this.$(".finance-complaint-note").addClass("hidden");this.$(".vehicle-service").addClass("hidden");this.$(".vehicle-parts-service-dealership").addClass("hidden");this.$(".vehicle-parts-service").addClass("hidden");this.$(".new-fleet-own-lease").addClass("hidden")},showFleetEnquirySection:function(){this.$(".fleet-enquiry").removeClass("hidden")},showSafetyRecallSection:function(){this.$(".safety-recall").removeClass("hidden");this.$(".vehicle-parts-service").find('label[for="rego-number"]').text("Car registration number:");this.$(".vehicle-parts-service").find("#rego-number").prop("required",!0).attr("aria-required",!0)},showFinanceComplaintSection:function(){this.$(".finance-complaint").removeClass("hidden")},showVehiclePartsService:function(){this.$(".vehicle-parts-service-dealership").removeClass("hidden");this.$(".vehicle-parts-service").removeClass("hidden");this.$(".vehicle-parts-service").find('label[for="rego-number"]').text("Car registration number:");this.$(".vehicle-parts-service").find("#rego-number").prop("required",!0).removeAttr("aria-required")},showVehicleService:function(){this.$(".vehicle-service").removeClass("hidden")},scrollToEnquiryForm:function(i){var r=t(i.currentTarget).data("enquiry");i.preventDefault();r&&r===n.constants.ENQUIRY_TYPE_FINANCE_INSURANCE?this.$("[name=enquiryType]").val(n.constants.ENQUIRY_TYPE_FINANCE_INSURANCE).trigger("change"):this.$("[name=enquiryType]").val(n.constants.ENQUIRY_TYPE_GENERAL).trigger("change");this.$("#enquiry-form").velocity("scroll")},renderRecaptcha:function(){if(!u.grecaptcha||!u.recaptchaSiteKey)return!1;this.recaptchaWidgetId=grecaptcha.render(document.getElementById("recaptcha"),{sitekey:u.recaptchaSiteKey})},resetRecaptcha:function(){grecaptcha.reset(this.recaptchaWidgetId)},showErrorMessageRecaptcha:function(n){this.errorMessageRecaptcha.setMessage(n).render().show()},hideErrorMessageRecaptcha:function(){this.errorMessageRecaptcha.hide()}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.DealerStaffEnquiryFormView=r.View.extend({el:".enquiry-form-page",events:{"change [name=enquiryType]":"changeEnquiryType"},initialize:function(){this.$("#dealer-staff-enquiry-form").validate({submitHandler:i.bind(function(n){var t,i;if(this.hideErrorMessageRecaptcha(),t=grecaptcha.getResponse(this.recaptchaWidgetId),!t)return this.showErrorMessageRecaptcha("The captcha is required and can not be unchecked.");if(i=this.$("#policyCheck").is(":checked"),i)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}n.recaptchaResponse.value=t;this.$(".js-submit").prop("disabled",!0);n.submit()},this)});this.errorMessageRecaptcha=new n.ErrorAlertView;this.$(".recaptcha-error-message").append(this.errorMessageRecaptcha.el);u.recaptchaCallback=i.bind(this.renderRecaptcha,this)},changeEnquiryType:function(i){var r=t(i.currentTarget).find("option:selected").val(),u=this.$("#dealer-staff-enquiry-form").validate();u.resetForm();this.resetFormSections();switch(r){case n.constants.ENQUIRY_TYPE_SAFETY_RECALL:this.showSafetyRecallSection();break;case n.constants.ENQUIRY_TYPE_FINANCE_COMPLAINT:this.showFinanceComplaintSection();break;case n.constants.ENQUIRY_TYPE_FLEET:this.showFleetEnquirySection();break;case n.constants.ENQUIRY_TYPE_VEHICLE_PARTS:this.showVehiclePartsService();break;case n.constants.ENQUIRY_TYPE_VEHICLE_SERVICE:this.showVehiclePartsService();this.showVehicleServiceSection()}},resetFormSections:function(){this.$(".form-body").removeClass("hidden");this.$(".fleet-enquiry").addClass("hidden");this.$(".safety-recall").addClass("hidden");this.$(".finance-complaint").addClass("hidden");this.$(".finance-complaint-note").addClass("hidden");this.$(".vehicle-service").addClass("hidden");this.$(".vehicle-parts-service").addClass("hidden")},showFleetEnquirySection:function(){this.$(".fleet-enquiry").removeClass("hidden")},showSafetyRecallSection:function(){this.$(".safety-recall").removeClass("hidden");this.$(".vehicle-parts-service").find('label[for="rego-number"]').text("Car registration number:");this.$(".vehicle-parts-service").find("#rego-number").prop("required",!0).attr("aria-required",!0)},showFinanceComplaintSection:function(){this.$(".finance-complaint").removeClass("hidden")},showVehicleServiceSection:function(){this.$(".vehicle-service").removeClass("hidden")},showVehiclePartsService:function(){this.$(".vehicle-parts-service").removeClass("hidden");this.$(".vehicle-parts-service").find('label[for="rego-number"]').text("Car registration number:");this.$(".vehicle-parts-service").find("#rego-number").prop("required",!0).removeAttr("aria-required")},renderRecaptcha:function(){if(!u.grecaptcha||!u.recaptchaSiteKey)return!1;this.recaptchaWidgetId=grecaptcha.render(document.getElementById("recaptcha"),{sitekey:u.recaptchaSiteKey})},resetRecaptcha:function(){grecaptcha.reset(this.recaptchaWidgetId)},showErrorMessageRecaptcha:function(n){this.errorMessageRecaptcha.setMessage(n).render().show()},hideErrorMessageRecaptcha:function(){this.errorMessageRecaptcha.hide()}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){var f=u.byo;n.BuildYourOwnPageView=r.View.extend({el:".byo",events:{"click .byoc-summary .btn-finance":"showFinanceCalculator"},initialize:function(){this.initializeFinanceCalculator()},initializeFinanceCalculator:function(){if(f||!f.instance)this.model=new n.FinanceCalculatorVehicleModel,this.calculator=new n.FinanceCalculatorMasterView({templateOptions:{showVehicleImage:!1},settings:u.financeCalculatorOptions}),this.overlay=new n.ModalOverlayView,this.overlay.setContent(this.calculator.render().el).render()},showFinanceCalculator:function(n){if(this.calculator||this.overlay){n.preventDefault();var t=this.getTotalPrice(),i=this.model.get("depositRate");this.model.set("price",t);this.model.set("depositPayment",t*i/100);this.model.set("modelName",this.getModelName());this.calculator.trigger("summary:show",this.model);this.overlay.show()}},getTotalPrice:function(){var t=f.instance.vehicleModel.totalPrice();return n.helpers.parsePrice(t)},getModelName:function(){var n=f.instance.vehicleModel.get("Specifications");return n?n.BYOModelName:null}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.FinanceCalculatorPageView=r.View.extend({el:".finance-calculator-page",initialize:function(){this.initializeVehicleFinanceCalculator();this.initializeOtherFinanceCalculator();this.initializeSignatureFinanceCalculator()},initializeVehicleFinanceCalculator:function(){u.financeCalculatorVehicles&&u.vehicleSelectorFamilies&&u.vehicleSelectorModels&&u.vehicleSelectorVariants&&(this.vehicleCollection=new n.FinanceCalculatorVehicleCollection(financeCalculatorVehicles),this.vehicleCalculator=u.vehicleCalculator=new n.FinanceCalculatorMasterView({collection:this.vehicleCollection,templateOptions:{mainTitle:null,showVehicleImage:!0,showChangeModel:!1,prependError:!0},settings:u.financeCalculatorOptions}),this.vehicleSelector=new n.VehicleModelVariantSelectorView({el:".finance-calculator-page .model-variant-selector",callback:i.bind(function(n){var t=n.get("id"),i=this.vehicleCollection.get(t);this.vehicleCalculator.trigger("summary:show",i)},this),families:vehicleSelectorFamilies,models:vehicleSelectorModels,variants:vehicleSelectorVariants}),this.$("#vehicle-finance-calculator").append(this.vehicleCalculator.render().el))},initializeOtherFinanceCalculator:function(){this.otherCalculator=new n.FinanceCalculatorMasterView({templateOptions:{mainTitle:null,showVehicleImage:!1,showPurchasePrice:!0,prependError:!0},settings:u.financeCalculatorOptions});this.$("#other-finance-calculator").append(this.otherCalculator.render().el)},initializeSignatureFinanceCalculator:function(){this.signatureCalculator=new n.FinanceCalculatorMasterView({templateOptions:{mainTitle:null,showVehicleImage:!1,showPurchasePrice:!0,prependError:!0},settings:u.financeCalculatorOptions});this.$("#signature-finance-calculator").append(this.signatureCalculator.render().el)}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.CustomFinanceCalculatorPageView=r.View.extend({el:".custom-finance-calculator-page",initialize:function(){this.initializeFinanceCalculator()},initializeFinanceCalculator:function(){u.financeCalculatorOptions&&(this.calculator=u.calculator=new n.FinanceCalculatorMasterView({templateOptions:{mainTitle:null,showVehicleImage:!1,showPurchasePrice:!0,prependError:!0,showSendToDealer:!1},settings:u.financeCalculatorOptions}),this.$("#custom-finance-calculator").append(this.calculator.render().el))}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u,f){var o="/api/promotions",e=!1,s=r.Model.extend({defaults:{totalMatching:0,totalNational:0,pageNum:0,pageSize:10,dealerId:null,categoryIds:null,national:!0,areMore:!0},initialize:function(n){this.dispatcher=n.dispatcher;this.promotions=new c(null);this.categoryFacets=new a(null)},updateCollections:function(n){if(n.pageNum===0){var t=this.get("categoryIds")||[];i.each(n.categoryFacets,function(n){n.isChecked=t.indexOf(n.id.toString())>-1});this.promotions.reset(n.promotions);this.categoryFacets.reset(n.categoryFacets)}else this.promotions.add(n.promotions);return delete n.categoryFacets,delete n.promotions,n},loadData:function(n){e=!0;n=n||{};this.set(n);var r=i.extend(n,{pageNum:this.get("pageNum"),pageSize:this.get("pageSize"),dealerId:this.get("dealerId"),categoryIds:this.get("categoryIds"),national:this.get("national")});r=u.parse(u.stringify(r,{skipNulls:!0}));t.ajax({type:"get",url:o,contentType:"application/json; charset=utf-8",data:r,success:i.bind(function(n){n=this.updateCollections(n);this.set(n);e=!1;this.dispatcher.trigger("dataLoaded")},this),error:function(){console.log("error")},dataType:"json"})},loadMoreItems:function(){!e&&this.get("areMore")&&this.loadNextPage()},loadNextPage:function(){this.loadData({pageNum:this.get("pageNum")+1})}}),h=r.Model.extend({defaults:{id:null,heading:"",description:"",imageUrl:null,url:null,category:null,isNational:null}}),c=r.Collection.extend({model:h}),l=r.Model.extend({defaults:{id:null,name:"",count:0,isChecked:!1}}),a=r.Collection.extend({model:l}),v=r.View.extend({events:{'click [type="checkbox"]':"clicked"},initialize:function(t){this.dispatcher=t.dispatcher;this.listenTo(this.collection,"reset",this.onReset);n.templates.fetch("promotion/category",i.bind(function(n){this.itemTemplate=n;this.render()},this))},onReset:function(){this.$el.empty();this.itemTemplate&&this.render()},render:function(){return this.collection.each(function(n){this.addItem(n)},this),this},clicked:function(){var n=this.getCheckedItems(),t=u.parse(f.location.search.substring(1)),i;t.category=n;f.history.pushState&&(i=[location.pathname,"?",u.stringify(t,{encode:!1})].join(""),history.pushState(null,null,i));this.dispatcher.trigger("filterCategories",n)},getCheckedItems:function(){return t('input[name="categoryId"]:checked').map(function(){return this.value}).get()},addItem:function(n){var t=this.itemTemplate(n.toJSON());this.$el.append(t);Waypoint.refreshAll()}}),y=r.View.extend({initialize:function(r){this.dispatcher=r.dispatcher;this.listenTo(this.collection,"reset",this.onReset);this.listenTo(this.collection,"add",this.onAdd);n.templates.fetch("promotion/tile",i.bind(function(n){this.itemTemplate=n;this.render();this.updateItemHeights()},this));f.onload=this.updateItemHeights;t(f).on("resize",i.debounce(this.updateItemHeights,300))},updateItemHeights:function(){var r=t(".promotion-list > .promotion").height(""),i=0;n.breakpoint.is("sm")&&r.each(function(){var n=t(this).outerHeight(!0);n>i&&(i=n)}).height(i)},onReset:function(){this.$el.empty();this.itemTemplate&&this.render()},onAdd:function(n){this.addPromotion(n)},render:function(){return this.collection.each(function(n){this.addPromotion(n)},this),this},addPromotion:function(n){var t=this.itemTemplate(n.toJSON());this.$el.append(t);this.updateItemHeights();Waypoint.refreshAll()}});n.PromotionsPageView=r.View.extend({initialize:function(){var e,n;if(this.dispatcher=i.clone(r.Events),this.listenTo(this.dispatcher,"filterCategories",i.bind(this.onFilterCategoriesRequest,this)),this.listenTo(this.dispatcher,"dataLoaded",i.bind(this.onDataLoaded,this)),this.listenToOnce(this.dispatcher,"dataLoaded",Waypoint.enableAll),this.model=new s({dispatcher:this.dispatcher}),this.listenTo(this.model,"change:areMore",this.onAreMoreChange),this.dealerCheckbox=t('[name="dealerId"]'),this.dealerCheckbox.length>0){e=u.parse(f.location.search.slice(1)).dealerId;this.dealerCheckbox.prop("checked",!!e);this.model.set({dealerId:this.dealerCheckbox.val(),national:!this.dealerCheckbox.prop("checked")});this.dealerCheckbox.on("click",i.bind(this.onDealerOrNationalClick,this));this.nationalCheckbox=t('[name="national"]');this.nationalCheckbox.on("click",i.bind(this.onDealerOrNationalClick,this))}this.promotionsListView=new y({collection:this.model.promotions,dispatcher:this.dispatcher,el:t(".promotion-list")});n=u.parse(f.location.search.substring(1));n.category&&this.model.set("categoryIds",n.category);this.categoryListView=new v({collection:this.model.categoryFacets,dispatcher:this.dispatcher,el:t(".category-list")});this.render();this.model.loadData()},updateCheckboxState:function(n,i){var r=t(n.parentElement);i?r.addClass("promotion-filter-item__label--disabled"):r.removeClass("promotion-filter-item__label--disabled");n.disabled=i},onDataLoaded:function(){if(this.dealerCheckbox.length>0){var n=!this.nationalCheckbox.prop("checked")&&this.model.get("totalMatching")===this.model.get("totalNational");this.updateCheckboxState(this.dealerCheckbox,n);n=this.model.get("totalNational")===0&&this.model.get("national")===!0;this.updateCheckboxState(this.nationalCheckbox,n)}this.promotionsListView.$el.fadeIn(300)},onDealerOrNationalClick:function(){t(".infinite-loader").show();this.promotionsListView.$el.fadeOut(300);var n=this.dealerCheckbox.prop("checked")===this.nationalCheckbox.prop("checked"),i=this.nationalCheckbox.prop("checked")&&!this.dealerCheckbox.prop("checked")?null:this.dealerCheckbox.val();this.model.loadData({national:n,pageNum:0,areMore:!0,dealerId:i})},onFilterCategoriesRequest:function(n){t(".infinite-loader").show();this.promotionsListView.$el.fadeOut(300);this.model.loadData({categoryIds:n,pageNum:0,areMore:!0})},onAreMoreChange:function(){this.model.get("areMore")?t(".infinite-loader").show():t(".infinite-loader").hide()},render:function(){return t(".infinite-loader").waypoint({handler:i.bind(this.model.loadMoreItems,this.model),offset:"bottom-in-view",enabled:!1}),this}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,Qs,window),function(n,t,i,r,u){var f={category:"Finance Calculator",sendToStoreLabel:"Send to your store",sendToYourselfLabel:"Email your finance details",formOpenLabel:"Open form",formSubmitLabel:"Submit form"};n.FinanceCalculatorVehicleModel=r.Model.extend({defaults:{modelName:null,modelId:null,variantName:null,vehicleType:null,image:null,price:0,priceType:n.constants.FINANCE_PRICE_TYPE_RRP,hasOrc:!0,financeType:n.constants.FINANCE_TYPE_PURCHASE,financeTotal:0,financeAmount:0,financePayment:0,financePayments:0,interestType:n.constants.FINANCE_INTEREST_FIXED,interestRate:0,depositPayment:0,depositRate:20,balloonPayment:0,paymentTerm:36,paymentFrequency:n.constants.FINANCE_FREQUENCY_WEEKLY,annualMilage:1e4,financeOffer:null,financeOfferLink:null,campaignMessage:null}});n.FinanceCalculatorVehicleCollection=r.Collection.extend({model:n.FinanceCalculatorVehicleModel});n.FinanceCalculatorBaseView=r.View.extend({initialize:function(n){this.dispatcher=n.dispatcher},render:function(){return this},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},fadeIn:function(n){return n=n||t.noop,this.$el.velocity({opacity:1},{display:"block",complete:n}),this},fadeOut:function(n){return n=n||t.noop,this.$el.velocity({opacity:0},{display:"none",complete:n}),this}});n.FinanceCalculatorModelView=n.FinanceCalculatorBaseView.extend({className:"finance-calculator__models",events:{"click .vehicle-list > a":"selectModel"},initialize:function(t){n.FinanceCalculatorBaseView.prototype.initialize.call(this,t);this.listenTo(this.dispatcher,"models:render",this.afterRender)},render:function(){return n.templates.fetch("finance-calculator/models",i.bind(function(t){var r={vehicles:this.collection.toJSON()},u;i.extend(r,n.helpers);this.$el.html(t(r));this.stickit();u=i.bind(function(){this.dispatcher.trigger("models:render")},this);this.$el.imagesLoaded().always(u)},this)),this},afterRender:function(){var r=i.bind(function(){var r=this.$(".vehicle:visible").height(""),i=0;if(!n.breakpoint.is("sm"))return!1;r.each(function(){var r=t(this),n=r.height();n>i&&(i=n)}).height(i)},this);t(u).on("resize",i.debounce(r,300)).trigger("resize")},selectModel:function(n){n.preventDefault();var i=t(n.currentTarget).data("id"),r=this.collection.get(i);this.dispatcher.trigger("loader:show");this.dispatcher.trigger("summary:show",r)}});n.FinanceCalculatorSummaryView=n.FinanceCalculatorBaseView.extend({className:"finance-calculator__summary",templateName:"finance-calculator/summary",templateOptions:{mainTitle:"Finance summary",subTitle:"Finance details",showVehicleImage:!0,showChangeModel:!0,showPurchasePrice:!1,showSendToDealer:!0,showSendSummary:!0,showBalloonPayment:!0,disableDepositPayment:!1},events:{"click .js-change-model":"changeModel","click [name=financeType]":"changeFinanceType","change [name=interestType]":"changeInterestType","click .js-calculate":"calculate","click .js-show-form":"showForm","click .js-close-form":"hideForm","change [name=region]":"changeRegion","focus input.form-control":"clearDefaultValue","blur input.form-control":"restoreDefaultValue"},bindings:{".finance-payment":{observe:"financePayment",onGet:function(t){return n.helpers.formatPrice(t,2)}},".finance-payments":"financePayments",".finance-amount":{observe:"financeAmount",onGet:function(t){return n.helpers.formatPrice(t,0)}},".finance-total":{observe:"financeTotal",onGet:function(t){return n.helpers.formatPrice(t,2)}},"[name=financeType]":"financeType",".interest-rate":{observe:"interestRate",onGet:function(t){return n.helpers.formatNumber(t,2)+"%"}},"[name=price]":"price","[name=depositPayment]":"depositPayment","[name=balloonPayment]":"balloonPayment","[name=annualMilage]":{observe:"annualMilage",selectOptions:{collection:function(){return i.map([1e4,15e3,2e4,25e3,3e4],function(t){return{value:t,label:n.helpers.formatNumber(t,0)}})}}},"[name=interestType]":{observe:"interestType",selectOptions:{collection:function(){return this.interestTypeOptionCollection}}},"[name=paymentTerm]":{observe:"paymentTerm",selectOptions:{collection:function(){return this.paymentTermOptionCollection}}},"[name=paymentFrequency]":{observe:"paymentFrequency",selectOptions:{collection:function(){return this.paymentFrequencyOptionCollection}}},".campaign-message":{observe:"campaignMessage",updateMethod:"html",onGet:"updateCampaignMessage"}},interestTypeOptionCollection:[],paymentTermOptionCollection:[],paymentFrequencyOptionCollection:[],initialize:function(t){n.FinanceCalculatorBaseView.prototype.initialize.call(this,t);t.templateOptions&&(this.templateOptions=i.extend({},this.templateOptions,t.templateOptions));t.collection||(this.collection=new n.FinanceCalculatorVehicleCollection);this.initializeSettings(t.settings);this.initializeModelDefaults();this.listenTo(this.dispatcher,"summary:render",this.afterRender);this.listenTo(this.dispatcher,"summary:show",this.showSummary);this.listenTo(this.dispatcher,"summary:result",this.showSummaryResult);this.listenTo(this.dispatcher,"summary:calculate",this.calculate);this.listenTo(this.dispatcher,"error:show",this.showError);this.listenTo(this.dispatcher,"error:hide",this.hideError);this.initializeRegionDealerOptions();this.sendPageUrl=t.sendPageUrl||!1},initializeSettings:function(t){var l={financeTypeOptions:[{name:"Lease",value:n.constants.FINANCE_TYPE_LEASE},{name:"Finance/Purchase",value:n.constants.FINANCE_TYPE_PURCHASE}],interestTypeOptions:[n.constants.FINANCE_INTEREST_FIXED,n.constants.FINANCE_INTEREST_FLOATING],paymentFrequencyOptions:[n.constants.FINANCE_FREQUENCY_WEEKLY,n.constants.FINANCE_FREQUENCY_FORTNIGHTLY,n.constants.FINANCE_FREQUENCY_MONTHLY],paymentTermOptions:[12,18,24,36,48,60]},u,f,e,o,s,h,c;this.settings=i.extend({},l,t||{});t&&t.financeTypeOptions&&(u=i.first(t.financeTypeOptions),this.model.set("financeType",u.value));f=i.map(this.settings.interestTypeOptions,function(n){return{value:n,label:n}});this.interestTypeOptionCollection=new r.Collection(f);t&&t.interestTypeOptions&&(e=i.first(t.interestTypeOptions),this.model.set("interestType",e));o=i.map(this.settings.paymentTermOptions,function(n){return{value:n,label:n+" Months"}});this.paymentTermOptionCollection=new r.Collection(o);t&&t.paymentTermOptions&&(s=i.first(t.paymentTermOptions),this.model.set("paymentTerm",s));h=i.map(this.settings.paymentFrequencyOptions,function(n){return{value:n,label:n}});this.paymentFrequencyOptionCollection=new r.Collection(h);t&&t.paymentFrequencyOptions&&(c=i.first(t.paymentFrequencyOptions),this.model.set("paymentFrequency",c));t&&t.vehicleType&&this.model.set("vehicleType",t.vehicleType)},initializeRegionDealerOptions:function(){this.regions=new r.Collection(n.regionOptions);var t=new r.Collection(n.dealerOptions);t=t.filter(function(n){return n.get("branchType")===0});this.dealers=new r.Collection(t)},render:function(){return n.templates.fetch("finance-calculator/summary",i.bind(function(t){var r={vehicle:this.model.toJSON(),vehicles:this.collection.toJSON(),options:this.templateOptions,regions:this.regions.toJSON(),dealers:this.dealers.toJSON(),settings:this.settings,currentDealer:null},u;n.currentDealerId&&(u=this.dealers.get(n.currentDealerId),r.currentDealer=u.toJSON());i.extend(r,n.helpers);this.$el.html(t(r));this.stickit();this.delegateEvents();this.updateFinanceType();this.updateInterestType();this.dispatcher.trigger("summary:render")},this)),this},afterRender:function(){var r=this.$(".finance-calculator__price-slider .slider");if(!r.hasClass("slick-initialized")){r.slick({dots:!0,arrows:!0,cssEase:"cubic-bezier(0.5, 0, 0.5, 1)",prevArrow:'<button type="button" class="slick-prev"><\/button>',nextArrow:'<button type="button" class="slick-next"><\/button>',touchThreshold:10,focusOnSelect:!1,useTransform:!0,infinite:!1});t(".nav-tabs > li > a").on("shown.bs.tab",function(){r.slick("setPosition")})}this.$(".finance-rate-copy").append(this.settings.rateCopyText);i.defer(function(){r.slick("setPosition")});this.errorMessage=new n.ErrorAlertView;this.$(".finance-calculator__error").append(this.errorMessage.el);this.formMessage=new n.AlertView;this.$(".finance-calculator__form-message").append(this.formMessage.el);this.$(".finance-calculator__form").validate({submitHandler:i.bind(function(n){var t,i,r;if(this.hideErrorMessageRecaptcha(),t=grecaptcha.getResponse(this.recaptchaWidgetId),!t)return this.showErrorMessageRecaptcha("The captcha is required and can not be unchecked.");i=this.$("#policyCheck").is(":checked");i?(this.$("#tickboxAlert").hide(),r=this.prepareData(n),this.$(".finance-calculator__form button[type=submit]").prop("disabled",!0),this.sendEmail(r)):this.$("#tickboxAlert").show()},this)});this.dispatcher.trigger("loader:hide");this.updatePaymentFrequencyOptions()},showSummary:function(n){this.model=n;this.initializeModelDefaults();this.render();this.calculate()},showField:function(n){return this.$(n).closest(".column").removeClass("hide"),this},hideField:function(n){return this.$(n).closest(".column").addClass("hide"),this},changeModel:function(n){n.preventDefault();this.dispatcher.trigger("models:show")},changeFinanceType:function(){var n=this.$("[name=financeType]:checked").val();this.updateFinanceType(n)},updateFinanceType:function(t){t=t||this.model.get("financeType");t===n.constants.FINANCE_TYPE_LEASE?(this.hideField("[name=interestType]"),this.showField("[name=annualMilage]"),this.showField("[name=paymentTerm]"),this.showField("[name=balloonPayment]"),this.model.set("interestType",n.constants.FINANCE_INTEREST_FIXED),this.model.set("paymentFrequency",n.constants.FINANCE_FREQUENCY_MONTHLY),this.updatePaymentFrequencyOptions(n.constants.FINANCE_INTEREST_FIXED)):(this.showField("[name=interestType]"),this.hideField("[name=annualMilage]"),this.changeInterestType())},changeInterestType:function(){var n=this.$("[name=interestType]").find("option:selected").val();this.updateInterestType(n)},updateInterestType:function(t){t=t||this.model.get("interestType");t===n.constants.FINANCE_INTEREST_FLOATING?(this.hideField("[name=balloonPayment]"),this.hideField("[name=paymentTerm]")):(this.showField("[name=balloonPayment]"),this.showField("[name=paymentTerm]"),this.model.set("paymentTerm",this.defaultPaymentTerm));this.updatePaymentFrequencyOptions(t)},updatePaymentFrequencyOptions:function(t){t=t||this.model.get("interestType");this.$("[name=paymentFrequency]").prop("disabled",t===n.constants.FINANCE_INTEREST_FLOATING);t===n.constants.FINANCE_INTEREST_FLOATING&&this.model.set("paymentFrequency",n.constants.FINANCE_FREQUENCY_MONTHLY)},updatePaymentFrequencyLabel:function(){var n=this.model.get("paymentFrequency");this.$(".payment-frequency").text(n)},updateInterestTypeLabel:function(){var n=this.model.get("interestType");this.$(".interest-type").text(n)},updateCampaignMessage:function(n){return n?n+'<i class="icon icon-tag"><\/i>':!1},specialInterestRate:null,defaultPaymentTerm:null,initializeModelDefaults:function(){this.specialInterestRate=this.model.get("interestRate");this.defaultPaymentTerm=this.model.get("paymentTerm")},calculate:function(r){r&&r.preventDefault();this.dispatcher.trigger("loader:show");this.dispatcher.trigger("error:hide");var f=i.bind(function(n){this.updatePaymentFrequencyLabel();this.updateInterestTypeLabel();this.dispatcher.trigger("loader:hide");this.dispatcher.trigger("summary:result",n)},this),e=i.bind(function(n,i,r){var u=t.parseJSON(r);this.dispatcher.trigger("loader:hide");this.dispatcher.trigger("error:show",u.errorMessage)},this),u=t('.nav-tabs li.active > a.vehicle-type-tab[href^="#"]');if(u.length==1)switch(u.attr("href")){case"#new-vehicle":this.model.set("vehicleType",n.constants.FINANCE_VEHICLE_TYPE_NEW);break;case"#signature-class":this.model.set("vehicleType",n.constants.FINANCE_VEHICLE_TYPE_SIGNATURE_CLASS);break;case"#used-vehicle":this.model.set("vehicleType",n.constants.FINANCE_VEHICLE_TYPE_USED);break;case"#marine":this.model.set("vehicleType",n.constants.FINANCE_VEHICLE_TYPE_MARINE)}n.financeService.calculate(this.model).done(f).fail(e)},showSummaryResult:function(n){n.success?this.model.set({financeAmount:n.amountFinanced,financePayment:n.repaymentAmount,financePayments:n.financePayments,financeTotal:n.financeTotal,interestRate:n.interestRate,paymentTerm:n.termInMonths,campaignMessage:n.campaignMessage}):this.dispatcher.trigger("error:show",n.errorMessage)},resetSummaryResult:function(){this.model.set({financeAmount:0,financePayment:0,financePayments:0,financeTotal:0,campaignMessage:null})},triggerGAEvent:function(n,t,i){var r=u.dataLayer,f={event:"GAevent",eventCategory:n,eventAction:t,eventLabel:i};r.push(f)},showForm:function(t){function o(){s.text(e.text());switch(r){case"dealer":i.find("[name=emailDealer]").val(1);i.find("[name=phoneNumber]").closest(".form-group").removeClass("hidden");i.find("[name=region]").closest(".form-group").removeClass("hidden");i.find("[name=dealership]").closest(".form-group").removeClass("hidden");break;case"email":i.find("[name=emailDealer]").val(0);i.find("[name=phoneNumber]").closest(".form-group").addClass("hidden");i.find("[name=region]").closest(".form-group").addClass("hidden");i.find("[name=dealership]").closest(".form-group").addClass("hidden")}}var r,u;this.resetRecaptcha();var e=this.$(t.currentTarget),i=this.$(".finance-calculator__form"),s=i.find("h3");t.preventDefault();r=e.data("context");u=i.validate();i.is(":hidden")?(i.velocity("slideDown"),u.resetForm(),o()):i.velocity({opacity:0},function(){i.velocity({opacity:1});u.resetForm();o()});r=="dealer"?this.triggerGAEvent(f.category,f.sendToStoreLabel,f.formOpenLabel):r=="email"&&this.triggerGAEvent(f.category,f.sendToYourselfLabel,f.formOpenLabel);this.errorMessageRecaptcha=new n.ErrorAlertView;this.$(".recaptcha-error-message-finance-form").append(this.errorMessageRecaptcha.el);this.renderRecaptcha()},hideForm:function(){this.$(".finance-calculator__form").velocity("slideUp")},showError:function(n){this.errorMessage.setMessage(n).render().show();this.resetSummaryResult()},hideError:function(){this.errorMessage.hide()},changeRegion:function(n){var u=parseFloat(t(n.currentTarget).val()),f=this.dealers.where({regionId:u}),r=this.$("[name=dealership]").empty();t("<option><\/option>").text("Please select").prop({value:"-1",selected:!0,disabled:!0}).appendTo(r);i.each(f,function(n){t("<option>").text(n.get("name")).val(n.get("id")).appendTo(r)})},prepareData:function(n){var f=t(n).serializeArray(),r={};return i.each(f,function(n){r[n.name]=n.value}),r.emailDealer=r.emailDealer==="1",r.financeDetails=this.model.toJSON(),r.isCustomerVersion=!0,this.sendPageUrl&&(r.pageUrl=u.location.href),r},sendEmail:function(n){t.ajax({method:"post",url:"/api/finance/sendemail",data:JSON.stringify(n),dataType:"json",contentType:"application/json",success:i.bind(function(t){if(this.$(".finance-calculator__form button[type=submit]").prop("disabled",!1),t.success){var i='<p>A copy of your finance summary has been sent to the email address you used when you filled in the form. If you do not see the email in a few minutes, please check your "junk mail" or "spam" folder.<\/p><p>If you have a question about your finance summary, please send us an enquiry from the contact page or contact your store using the button above.<\/p>';n.emailDealer?(i='<p>Your finance summary has been sent to your selected store. You should hear from a member of the team by the end of the next business day.<\/p><p>A copy of your finance summary has also been sent to the email address you used when you filled in the form along with the store contact details. If you do not see the email in a few minutes, please check your "junk mail" or "spam" folder.<\/p>',this.triggerGAEvent(f.category,f.sendToStoreLabel,f.formSubmitLabel)):this.triggerGAEvent(f.category,f.sendToYourselfLabel,f.formSubmitLabel);this.showFormMessage("Thank you!",i);this.hideForm()}else this.showFormMessage(t.errorMessage)},this)})},showFormMessage:function(n,t){this.formMessage.setContent(n,t).render().show()},clearDefaultValue:function(n){var i=t(n.currentTarget),r=i.val();r==0&&(i.data("value",r),i.val(""))},restoreDefaultValue:function(n){var i=t(n.currentTarget),r=i.data("value");r==0&&t.trim(i.val())==""&&i.val(r)},renderRecaptcha:function(){if(!u.grecaptcha||!u.recaptchaSiteKey)return!1;this.recaptchaWidgetId=grecaptcha.render(document.getElementById("recaptchaFinanceForm"),{sitekey:u.recaptchaSiteKey})},resetRecaptcha:function(){((typeof grecaptcha=="undefined"?"undefined":_typeof(grecaptcha))==undefined||_typeof(this.recaptchaWidgetId)==undefined)&&grecaptcha.reset(this.recaptchaWidgetId)},showErrorMessageRecaptcha:function(n){this.errorMessageRecaptcha.setMessage(n).render().show()},hideErrorMessageRecaptcha:function(){this.errorMessageRecaptcha.hide()}});n.FinanceCalculatorMasterView=r.View.extend({className:"finance-calculator",initialize:function(t){t||(t={});this.dispatcher=t.dispatcher=i.clone(r.Events);this.model=t.model=t.model||new n.FinanceCalculatorVehicleModel;this.summaryView=new n.FinanceCalculatorSummaryView(t)},render:function(){return this.$el.append(this.summaryView.render().el),this.$el.append(this.$loader),this},on:function(){this.dispatcher.on.apply(this.dispatcher,arguments)},off:function(){this.dispatcher.off.apply(this.dispatcher,arguments)},trigger:function(){this.dispatcher.trigger.apply(this.dispatcher,arguments)}});n.ModelFinanceCalculatorMasterView=n.FinanceCalculatorMasterView.extend({initialize:function(t){t||(t={});this.dispatcher=t.dispatcher=i.clone(r.Events);this.model=t.model=new n.FinanceCalculatorVehicleModel;this.modelView=new n.FinanceCalculatorModelView(t);this.summaryView=new n.FinanceCalculatorSummaryView(t);this.listenTo(this.dispatcher,"models:show",this.showModels);this.listenTo(this.dispatcher,"summary:show",this.showSummary);this.initializeLoader()},render:function(){return this.$el.append(this.modelView.render().el),this.$el.append(this.summaryView.hide().render().el),this.$el.append(this.$loader,this.$error),this},showModels:function(){this.summaryView.hide();this.modelView.fadeIn(i.bind(function(){this.dispatcher.trigger("models:render")},this))},showSummary:function(){this.dispatcher.trigger("loader:show");this.modelView.hide();this.summaryView.fadeIn(i.bind(function(){this.dispatcher.trigger("loader:hide");this.dispatcher.trigger("summary:render")},this))}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r){n.VehicleSelectorView=r.View.extend({getSelectedOption:function(n){return t("option:selected",n)},newCollection:function(n){return new r.Collection(n)}});n.VehicleModelVariantSelectorView=n.VehicleSelectorView.extend({events:{"change .family-select":"filterModels","change .model-select":"filterVariants","change .variant-select":"selectVariant"},familyOptions:[],modelOptions:[],variantOptions:[],initialize:function(n){this.callback=n.callback||t.noop;this.$familySelect=this.$(".family-select");this.$modelSelect=this.$(".model-select");this.$variantSelect=this.$(".variant-select");this.familyCollection=this.newCollection(n.families);this.modelCollection=this.newCollection(n.models);this.variantCollection=this.newCollection(n.variants);this.render()},render:function(){this.renderOptions(this.$familySelect,this.familyCollection);this.renderOptions(this.$modelSelect,[]);this.renderOptions(this.$variantSelect,[])},renderOptions:function(n,i,r){if(n.empty(),n.prop("disabled",!1),t("<option>").text("Please select").prop({disabled:!0,selected:!r}).appendTo(n),i.length===0){n.prop("disabled",!0);return}i.each(function(i){t("<option>").text(i.get("name")).val(i.get("id")).prop({selected:r===i}).appendTo(n)})},filterModels:function(){var u=this.getSelectedOption(this.$familySelect),f=this.familyCollection.get(u.val()),i=this.newCollection(this.modelCollection.where({parent:f.get("id")})),n=i.at(0),r,t;if(!n)return this.renderOptions(this.$modelSelect,[]),this.renderOptions(this.$variantSelect,[]),!1;if(r=this.newCollection(this.variantCollection.where({parent:n.get("id")})),t=r.at(0),!t)return this.renderOptions(this.$modelSelect,i,n),this.renderOptions(this.$variantSelect,[]),!1;this.renderOptions(this.$modelSelect,i,n);this.renderOptions(this.$variantSelect,r,t);this.callback(t)},filterVariants:function(){var t=this.getSelectedOption(this.$modelSelect),i=this.modelCollection.get(t.val()),n=this.newCollection(this.variantCollection.where({parent:i.get("id")}));if(n.length===0)return this.renderOptions(this.$variantSelect,[]),!1;this.renderOptions(this.$variantSelect,n)},selectVariant:function(){var n=this.getSelectedOption(this.$variantSelect),t=this.variantCollection.get(n.val());this.callback(t)}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.DealerSelectorView=r.View.extend({className:"dealer-selector",events:{"change [name=region]":"changeRegion","change [name=dealership]":"changeDealer","click .js-save":"saveDealer","click .js-cancel":"cancel"},currentDealer:null,initialize:function(r){this.options=r||{};this.callback=this.options.callback||t.noop;this.overlay=new n.ModalOverlayView;var u=i.bind(this.filterRegionDealerOptions,this);this.options&&this.options.includeThirdParty!==undefined&&this.options.includeThirdParty?n.dealerService.getDealersIncThirdParty().then(u):n.dealerService.getDealers().then(u)},filterRegionDealerOptions:function(t){var i=this,f=[],s=t.filter(function(n){var t=!0,r=n.regionId;return i.options&&i.options.branchType!==undefined&&(t=n.branchType===i.options.branchType),t&&f.indexOf(r)===-1&&f.push(r),t}),h=n.regionOptions.filter(function(n){return f.indexOf(n.id)!==-1}),e,o;this.regions=new r.Collection(h);this.dealers=new r.Collection(s);n.currentDealerId&&(e=n.currentDealerId,o=u.dataLayer,o.push({dealerId:e}));this.render()},renderRegionDropdownOptions:function(){var n=this.$("[name=region]");return(this.regions.each(function(i){t("<option>").text(i.get("name")).val(i.get("id")).prop("selected",this.currentDealer&&this.currentDealer.get("regionId")===i.get("id")).appendTo(n)},this),this.currentDealer)?this.renderDealerDropdownOptions(this.currentDealer.get("regionId")):this.renderDealerDropdownOptions()},renderDealerDropdownOptions:function(n){var i=this.$("[name=dealership]").empty(),u=this.dealers;n&&(u=new r.Collection(this.dealers.where({regionId:n})));t("<option><\/option>").text("Please select").prop({value:"-1",selected:!0,disabled:!0}).appendTo(i);u.each(function(n){t("<option>").text(n.get("name")).val(n.get("id")).prop("selected",this.currentDealer&&this.currentDealer.get("id")===n.get("id")).appendTo(i)},this)},render:function(){return n.templates.fetch("dealer-selector",i.bind(function(n){var t={currentDealer:this.currentDealer?this.currentDealer.toJSON():null},i,u;this.currentDealer&&(i=this.currentDealer.get("regionId"),u=new r.Collection(this.dealers.where({regionId:i})),t.dealers=u.toJSON());this.$el.html(n(t));this.overlay.setContent(this.el).render();this.currentDealer&&this.displayDealer(this.currentDealer);this.renderRegionDropdownOptions()},this)),this},changeRegion:function(n){var i=parseFloat(t(n.currentTarget).val());this.renderDealerDropdownOptions(i)},changeDealer:function(n){var r=parseFloat(t(n.currentTarget).val()),i=this.dealers.get(r);this.currentDealer=i;this.displayDealer(i)},displayDealer:function(i,r){var f=r||this.$(".dealer-selector__info"),e=i.get("name"),s=i.get("suburb"),a=i.get("city"),o=i.get("phone"),h=i.get("website"),p=i.get("email"),c=i.get("street"),l=i.get("street2"),v=i.get("postCode"),y=i.get("mapUrl");e?h?t(".dealer-name",f).html('<a href="'.concat(h,'">').concat(e,"<\/a>")).removeClass("hidden"):t(".dealer-name",f).text(e).removeClass("hidden"):t(".dealer-name",f).addClass("hidden");o?t(".dealer-phone",f).html('<a href="tel:'.concat(n.helpers.alphaNumericOnly(o),'">').concat(o,"<\/a>")).removeClass("hidden"):t(".dealer-phone",f).addClass("hidden");c?t(".dealer-address",f).html("".concat(c,", ").concat(l?"".concat(l,", "):"").concat(s?"".concat(s,", "):"").concat(a," ").concat(v,"<br>")+'<a href="'.concat(y,'" target="_blank">Get directions<\/a>')).removeClass("hidden"):t(".dealer-address",f).addClass("hidden");f.removeClass("hidden");t(u).trigger("resize")},setDealer:function(n,t){for(var e=this.currentDealer.get("id"),r=u.dataLayer,f=-1,i=0;i<r.length;i++)if(r[i].dealerId!==undefined){f=i;break}f!==-1?r[f].dealerId=e:r.push({dealerId:e});n.call(this,this.currentDealer,t)},saveDealer:function(n){var i=t(n.currentTarget);this.setDealer(this.callback,i)},cancel:function(){this.hide()},show:function(){this.overlay.show()},hide:function(){this.overlay.hide()}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r){n.FormDealerSelectorView=r.View.extend({events:{"change [data-selector=region]":"changeRegion"},currentDealer:null,initialize:function(){var t=i.bind(this.filterRegionDealerOptions,this);n.dealerService.getAll().then(t)},filterRegionDealerOptions:function(t){var u=[],f=i.filter(t,function(n){var t=!0,i=n.regionId;return this.options&&this.options.branchType!==undefined&&(t=n.branchType===this.options.branchType),t&&u.indexOf(i)===-1&&u.push(i),t},this),e=i.filter(n.regionOptions,function(n){return u.indexOf(n.id)!==-1});this.regions=new r.Collection(e);this.dealers=new r.Collection(f);n.currentDealerId&&(this.currentDealer=this.dealers.get(n.currentDealerId));this.render()},renderRegionDropdownOptions:function(){var n=this.$("[data-selector=region]");if(this.regions.each(function(i){t("<option>").text(i.get("name")).val(i.get("id")).prop("selected",this.currentDealer&&this.currentDealer.get("regionId")==i.get("id")).appendTo(n)},this),this.currentDealer)return this.renderDealerDropdownOptions(this.currentDealer.get("regionId"));this.renderDealerDropdownOptions()},renderDealerDropdownOptions:function(n){var i=this.$("[data-selector=dealership]").empty(),u=this.dealers;n&&(u=new r.Collection(this.dealers.where({regionId:n})));t("<option><\/option>").text("Please select").prop({value:"-1",selected:!0,disabled:!0}).appendTo(i);u.each(function(n){t("<option>").text(n.get("name")).val(n.get("id")).prop("selected",this.currentDealer&&this.currentDealer.get("id")==n.get("id")).appendTo(i)},this)},render:function(){return this.renderRegionDropdownOptions(),this},changeRegion:function(n){var i=parseFloat(t(n.currentTarget).val());this.renderDealerDropdownOptions(i)},changeDealer:function(n){var i=parseFloat(t(n.currentTarget).val()),r=this.dealers.get(i);this.currentDealer=r}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r){n.FinanceSelectorQuestionModel=r.Model.extend({initialize:function(){var t=this.get("choices");t&&t.length&&this.set("choices",new n.FinanceSelectorChoiceCollection(t))}});n.FinanceSelectorChoiceModel=r.Model.extend({defaults:{selected:!1},initialize:function(){var t=this.get("question");t&&this.set("question",new n.FinanceSelectorQuestionModel(t))}});n.FinanceSelectorChoiceCollection=r.Collection.extend({model:n.FinanceSelectorChoiceModel});n.FinanceSelectorQuestionView=r.View.extend({initialize:function(n){this.dispatcher=n.dispatcher;this.views=[]},render:function(){return n.templates.fetch("finance-selector/question",i.bind(function(n){this.$el.html(n(this.model.toJSON()));this.addChoices()},this)),this},close:function(){this.nextView&&this.nextView.close();this.remove();this.unbind()},appendView:function(n){this.views.push(n);this.$el.append(n.render().el)},addChoice:function(t){this.appendView(new n.FinanceSelectorChoiceView({parent:this,model:t,dispatcher:this.dispatcher}))},addChoices:function(){var n=this.model.get("choices"),t=this;n.each(function(n){t.addChoice(n)})},setSelectedChoice:function(n){this.selectedView=n;this.hideUnselectedChoices();var t=n.model.get("question");t?this.dispatcher.trigger("question:add",t,!0):this.dispatcher.trigger("product:show",n.model.get("product"))},hideUnselectedChoices:function(){i.each(this.views,i.bind(function(n){n!==this.selectedView&&n.hide()},this))},changeSelectedChoice:function(){i.each(this.views,i.bind(function(n){n!==this.selectedView&&n.fadeIn()},this));this.selectedView=null;this.nextView&&this.nextView.close();this.dispatcher.trigger("product:hide")}});n.FinanceSelectorChoiceView=r.View.extend({className:"finance-choice",events:{"click .finance-choice__toggle":"toggle","click .finance-choice__select":"select"},initialize:function(n){this.parent=n.parent;this.dispatcher=n.dispatcher;this.hide()},render:function(){return n.templates.fetch("finance-selector/choice",i.bind(function(n){this.$el.html(n(this.model.toJSON()));this.$body=this.$(".finance-choice__body");this.$collapse=this.$(".finance-choice__collapse");this.fadeIn()},this)),this},expand:function(){this.$el.addClass("finance-choice--expanded");this.$collapse.height(this.$body[0].offsetHeight)},collapse:function(){this.$el.removeClass("finance-choice--expanded");this.$collapse.height("")},isCollapsed:function(){return!this.$el.hasClass("finance-choice--expanded")},toggle:function(){this[this.isCollapsed()?"expand":"collapse"]()},select:function(){this.$el.toggleClass("finance-choice--selected");this.parent.selectedView?this.parent.changeSelectedChoice():this.parent.setSelectedChoice(this)},show:function(){return this.$el.show(),this},hide:function(){return this.$el.hide(),this},fadeIn:function(){return this.$el.velocity("fadeIn"),this},fadeOut:function(){return this.$el.velocity("fadeOut"),this}});n.FinanceSelectorView=r.View.extend({events:{"click .js-show-product":"scrollToProductPanel"},initialize:function(){this.dispatcher=i.clone(r.Events);this.listenTo(this.dispatcher,"question:add",this.addQuestion);this.listenTo(this.dispatcher,"product:show",this.showProduct);this.listenTo(this.dispatcher,"product:hide",this.hideProduct);this.render()},render:function(){return this.addQuestion(this.model),this},appendView:function(t,i){return this.currentView&&(this.currentView.nextView=t),this.currentView=t,this.$el.append(t.render().el),i&&setTimeout(function(){n.helpers.scrollTo(t.$el)},500),this},addQuestion:function(t,i){return this.appendView(new n.FinanceSelectorQuestionView({model:t,dispatcher:this.dispatcher}),i),this},showProduct:function(r){this.product&&this.product.remove();n.templates.fetch("finance-selector/product",i.bind(function(n){this.product=t("<div>").hide().html(n(r)).appendTo(this.$el).velocity("fadeIn");this.delegateEvents()},this))},hideProduct:function(){this.product.remove()},scrollToProductPanel:function(i){var e=t(i.currentTarget),r=t(e.data("hash")),o=r.find(".panel__body"),s=r.find(".panel__collapse"),u,f;i.preventDefault();r.length>0&&(u=r.data("group"),u&&u.length>0&&(f=t(".panel--accordion[data-group="+u+"].is-active").not(r),f.removeClass("is-active"),t(".panel__collapse",f).height("")),s.height(o[0].offsetHeight),r.addClass("is-active"),n.helpers.scrollTo(r))}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.FinanceOptionsPageView=r.View.extend({initialize:function(){this.financeModel=new n.FinanceSelectorQuestionModel(u.financeToolJson);this.financeTool=new n.FinanceSelectorView({el:".finance-selector > .container",model:this.financeModel})}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.UpdateInsurancePageView=r.View.extend({el:"body",events:{"change [name=enquiryType]":"changeEnquiryType"},initialize:function(){n.helpers.addressAutocomplete(t("[name=newAddress]"));n.helpers.addressAutocomplete(t("[name=oldAddress]"));this.$("#update-insurance-form").validate({rules:{newAddress:{notEqualTo:"[name=oldAddress]"},newEmailAddress:{notEqualTo:"[name=oldEmailAddress]"},confirmDocumentEmailAddress:{equalTo:"[name=documentEmailAddress]"},dateSold:{dateITA:!0,dateWithinLast12Months:!0}},messages:{newAddress:{notEqualTo:"Please enter a different address."},newEmailAddress:{notEqualTo:"Please enter a different email address."},confirmDocumentEmailAddress:{equalTo:"Email addresses must match."}},submitHandler:i.bind(function(n){var t,i;if(this.hideErrorMessageRecaptcha(),t=grecaptcha.getResponse(this.recaptchaWidgetId),!t)return this.showErrorMessageRecaptcha("The captcha is required and can not be unchecked.");if(i=this.$("#policyCheck").is(":checked"),i)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}n.recaptchaResponse.value=t;this.$(".js-submit").prop("disabled",!0);n.submit()},this)});this.errorMessageRecaptcha=new n.ErrorAlertView;this.$(".recaptcha-error-message").append(this.errorMessageRecaptcha.el);u.recaptchaCallback=i.bind(this.renderRecaptcha,this)},changeEnquiryType:function(n){var i=t(n.currentTarget).find("option:selected").val();this.resetFormSections();switch(i){case"change address":this.showAddressChangeSection();break;case"change email":this.showEmailChangeSection();break;case"email documents":this.showEmailDocumentsSection();break;case"sold vehicle":this.showSoldVehicleSection();break;case"email renewal notice":this.showEmailRenewalNoticeSection();break;case"email currency certificate":this.showEmailCurrencyCertificateSection();break;case"other":this.showOtherSection()}},resetFormSections:function(){this.$(".js-change-address").addClass("hidden");this.$(".js-change-email").addClass("hidden");this.$(".js-email-documents").addClass("hidden");this.$(".js-sold-vehicle").addClass("hidden");this.$(".js-email-renewal-notice").addClass("hidden");this.$(".js-email-currency-certificate").addClass("hidden");this.$(".js-other").addClass("hidden")},showAddressChangeSection:function(){this.$(".js-change-address").removeClass("hidden")},showEmailChangeSection:function(){this.$(".js-change-email").removeClass("hidden");this.$("[name=oldEmailAddress]").val(this.$("[name=email]").val())},showEmailDocumentsSection:function(){this.$(".js-email-documents").removeClass("hidden");this.$("[name=documentEmailAddress]").val(this.$("[name=email]").val())},showSoldVehicleSection:function(){this.$(".js-sold-vehicle").removeClass("hidden");this.$("[name=dateSold]").datepicker({minDate:"-1y + 1d",maxDate:0,dateFormat:"dd/mm/yy"})},showEmailRenewalNoticeSection:function(){this.$(".js-email-renewal-notice").removeClass("hidden");this.$("[name=renewalNoticeEmailAddress]").val(this.$("[name=email]").val())},showEmailCurrencyCertificateSection:function(){this.$(".js-email-currency-certificate").removeClass("hidden");this.$("[name=currencyCertificateEmailAddress]").val(this.$("[name=email]").val())},showOtherSection:function(){this.$(".js-other").removeClass("hidden")},renderRecaptcha:function(){if(!u.grecaptcha||!u.recaptchaSiteKey)return!1;this.recaptchaWidgetId=grecaptcha.render(document.getElementById("recaptcha"),{sitekey:u.recaptchaSiteKey})},resetRecaptcha:function(){grecaptcha.reset(this.recaptchaWidgetId)},showErrorMessageRecaptcha:function(n){this.errorMessageRecaptcha.setMessage(n).render().show()},hideErrorMessageRecaptcha:function(){this.errorMessageRecaptcha.hide()}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.DealerLocationPage=r.View.extend({el:".dealer-location-page",events:{"click .dealer-btn":"toggleSavedDealer"},initialize:function(){var n=i.bind(this.render,this)},render:function(){u.tnz=n;this.getDealer()},getDealer:function(){n.dealerService.get(n.dealerId)},toggleSavedDealer:function(i){var r=t(i.currentTarget).prop("disabled",!0);i.preventDefault();r.hasClass("dealer-btn--saved")?n.dealerService.forget():n.dealerService.save(n.dealerId)}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){var f=r.Model.extend({defaults:function(){return{KeyWord:null,Model:{Id:0,BodyShape:null,FuelType:0,Variant:null},Dealership:0}}}),e=r.Collection.extend({model:f});n.UsedCarPageView=r.View.extend({el:".used-car-page",events:{"keyup #search-facets .keywords":"autoComplete","focus #search-facets .keywords":"openSearchOverlay","click #search-facets .used-car-search-icon":"openSearchOverlay","blur .keywords":"closeSearchOverlay","click .used-car-clear-search":"resetKeywordSearch","click #used-car-search-options > li a":"setSearchOption","keydown #uv-search .keywords":"submitSearchOption","change .uv-body-shape":"updateModelDropdown","click #used-car-similar-message .alert__close":"closeSimilarMessage","click .uv-show-similar":"showSimilarVehicles","click .searchCriteria .remove":"removeElement","submit #uv-search-form":"submitSearch","change #sort":"search","click .autoPlayTrigger":"playUsedVehicleVideo","click .enquire-now":"showEnquireNowForm","click .used-car-clear-filters":"clearFiltersAndSearch","change #uv-search-form":"onSearchFormChange"},initialize:function(r){var f,e,o;this.options=r||{};this.options.apiUrl="/api/usedvehicle";this.options.autoCompleteUrl=this.options.apiUrl+"/autocomplete";this.options.recentSearchUrl=this.options.apiUrl+"/GetRecentSearchCookie";this.options.clearRecentSearchUrl=this.options.apiUrl+"/DeleteRecentSearchCookie";this.$container=t(".display_search_results");i.templateSettings={evaluate:/\{\{([\s\S]+?)\}\}/g,interpolate:/\{\{=([\s\S]+?)\}\}/g};n.templates.fetch("used-car",i.bind(function(n){this.itemTemplate=n},this));this.viewHelpers={formatCurrency:function(n){return"$"+n.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")},formatOdometer:function(n){return n.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")+" km"}};f=this;t(u).on("load",function(){f.initializeLazyLoad();f.initializeRecentSearches();f.initializeUVSlides();var n=f.parseQuery(u.location.search.substring(1));typeof n.tab!="undefined"&&n.tab=="browse"&&t("a[href=#browse]").trigger("click")});!t("html").hasClass("touchevents")&&t(".used-car__sidebar").length>0&&this.initializePinnedSidebar();this.initializeEnquireNowForm();t(".signatureClassVideo").colorbox({rel:"signatureClassVideo",inline:!0,current:"",previous:"?",next:"?",close:"X",className:"white_close",onOpen:function(){t(this).find(".videoContainer").tubeplayer("play")},onClosed:function(){t(".videoContainer",t(this)).tubeplayer("destroy")}});t("input[name=EnquireReason]").on("change",function(n){t(n.target).val()=="10"?t(".buynow_disclaimer").removeClass("hidden"):t(".buynow_disclaimer").addClass("hidden")});t("#uv-body-shape-selector label").removeClass("selected").find(":checked").closest("label").addClass("selected");t(".uv-body-shape").closest("label");u.location.origin||(u.location.origin=u.location.protocol+"//"+u.location.hostname+(u.location.port?":"+u.location.port:""));t(document).on("click",".used-car-page",function(n){var i=t(n.target);i.closest("#used-car-search").length===0&&(f.hideSearchOptions(),f.closeSearchOverlay())});t(".used-car-search-group input").length&&(t(".used-car-search-group input").val().length>0?t(".used-car-clear-search").removeClass("hidden"):t(".used-car-clear-search").addClass("hidden"));e=t("#uv-search-model-dropdown option:selected");o=t(".uv-body-shape:checked, .uv-body-shape option:selected");this.setSelectedModel(null,e);this.buildBodyShapeModelMatrix();this.setFacets();this.setClearFormLinkVisibility();o.val()!=""&&this._updateModelDropdown(o.val(),e.data("model-id"),e.data("variant"),e.data("fuel-type"));t(".used-car-page").length>0&&this.initializeVehicleDetail()},initializeUVSlides:function(){t(".uv-slider__loading").hide();t(".used-car-slides--single").show().slick({infinite:!1,variableWidth:!1,swipeToSlide:!0,prevArrow:'<button type="button" class="used-car-slide__button used-car-slide__button--prev"><\/button>',nextArrow:'<button type="button" class="used-car-slide__button used-car-slide__button--next"><\/button>',cssEase:"cubic-bezier(0.5, 0, 0.5, 1)",touchThreshold:10,useTransform:!0});t(".used-car-slides--multicol").show().slick({infinite:!1,variableWidth:!1,swipeToSlide:!0,prevArrow:'<button type="button" class="used-car-slide__button--prev used-car-slide__button"><\/button>',nextArrow:'<button type="button" class="used-car-slide__button--next used-car-slide__button"><\/button>',cssEase:"cubic-bezier(0.5, 0, 0.5, 1)",touchThreshold:10,useTransform:!0,mobileFirst:!0,slidesToShow:2,slidesToScroll:1,responsive:[{breakpoint:992,settings:{slidesToShow:3}}]})},render:function(){return this},initializePinnedSidebar:function(){var i=t(u),o=t(document),n=t(".used-car__sidebar"),f=t("#used-car-results").css("min-height",n.outerHeight(!0)*2),s=0,r=n.offset().top,e=n.position().top;i.on("scroll",function(){var d=r,p=o.height()-f.outerHeight(!0)-f.offset().top,u=i.scrollTop(),a=i.height()+u,h=20,v=120,w=s<u,y=n.outerHeight(!0),c=n.offset().top,b=i.height(),k=o.height(),t=i.width()<768,l;s=u;w?(l=k-a<=p,n.hasClass("fixed-top")&&n.css({position:t?"static":"absolute",top:c-(r-e),bottom:"auto"}).removeClass("fixed-top"),y>b?a>=y+c+v?l?n.css({position:t?"static":"absolute",top:e+f.outerHeight()-n.outerHeight(),bottom:"auto"}):n.css({position:t?"static":"fixed",top:"auto",bottom:v}).addClass("fixed-bottom"):l&&n.css({position:t?"static":"absolute",top:e+f.outerHeight()-n.outerHeight(),bottom:"auto"}).removeClass("fixed-bottom"):u+h>=r&&!l&&n.css({position:t?"static":"fixed",top:h,bottom:"auto"}).addClass("fixed-top")):(n.hasClass("fixed-bottom")&&n.css({position:t?"static":"absolute",top:c-(r-e),bottom:"auto"}).removeClass("fixed-bottom"),u+h<=c&&(u+h<=r?n.css({position:"static",top:"auto",bottom:"auto"}):n.css({position:t?"static":"fixed",top:h,bottom:"auto"}).addClass("fixed-top")))})},setClearFormLinkVisibility:function(){var r=["dealerId","dealerFilter","Location","IndexModel.Sorting","BodyShape"],n=Qs.parse(t("#uv-search-form").serialize()),u=i.filter(i.keys(n),function(t){return n[t]===""||n[t].toLowerCase()==="all"?!1:r.indexOf(t)===-1});u.length>0?this.$(".used-car-clear-filters").addClass("used-car-clear-filters--show"):this.$(".used-car-clear-filters").removeClass("used-car-clear-filters--show")},autoComplete:function(n){var f=t(n.currentTarget),r=t.trim(f.val());r.length>0?t(".used-car-clear-search").removeClass("hidden"):t(".used-car-clear-search").addClass("hidden");r.length>=2&&f.data("search")!=r&&(f.data("search",r),t("#used-car-search-options").removeData("current"),t.getJSON(this.options.autoCompleteUrl,{term:r},t.proxy(function(n){(n=n||[],n.length!==0&&(n.length!==1||n[0]!=r))&&this.showSearchOptions(n)},this)));var e=t("#used-car-search-options"),u=e.find("li a"),i=e.data("current");this.openSearchOverlay();n.which==40&&(typeof i=="undefined"||i===u.length-1?i=0:i++);n.which==38&&(typeof i=="undefined"||i===0?i=u.length-1:i--);e.data("current",i);u.removeClass("selected");t(u[i]).addClass("selected");n.which==8&&this.hideSearchOptions(!0)},resetKeywordSearch:function(n){n.preventDefault();t(".used-car-search-group input").val("");t(".used-car-clear-search").addClass("hidden");this.hideSearchOptions();this.closeSearchOverlay()},openSearchOverlay:function(n){n&&this.hideSearchOptions();this.$el.addClass("used-car-search-active");t("#search-facets .keywords")[0].focus()},closeSearchOverlay:function(n){n&&n.preventDefault();this.$el.removeClass("used-car-search-active")},showSearchOptions:function(n){this.hideSearchOptions(!0);var i=t("#used-car-search-options");t.each(n,function(n,r){t("<li>").html(function(){return t("<a>").attr("href","#").text(r)}).appendTo(i)});i.show()},hideSearchOptions:function(n){var i=t("#used-car-search-options").hide();n&&i.empty()},setSearchOption:function(n){n.preventDefault();var i=t(n.currentTarget),r=i.text();t(".used-car-search-group input").val(r);this.hideSearchOptions();this.closeSearchOverlay()},submitSearchOption:function(n){var r=t("#used-car-search-options"),u=r.find("li a"),f=r.data("current"),i;n.which==13&&(n.preventDefault(),i=t(u[f]).text(),i&&t(".used-car-search-input input").val(i),this.hideSearchOptions(),this.closeSearchOverlay())},chooseSearchOption:function(n){var u=t("#used-car-search-options"),r=u.find("li a"),i=u.data("current"),f;this.openSearchOverlay();n.which==40&&(typeof i=="undefined"||i===r.length-1?i=0:i++);n.which==38&&(typeof i=="undefined"||i===0?i=r.length-1:i--);u.data("current",i);r.removeClass("selected");t(r[i]).addClass("selected");n.which==13&&(f=t(r[i]).text(),f&&t(".used-car-search-input input").val(f),this.hideSearchOptions(!0),this.closeSearchOverlay());n.which==8&&this.hideSearchOptions(!0)},chooseBodyShape:function(n){var i=t(n.currentTarget),r=i.closest("label");t("#uv-body-shape-selector li label.selected").removeClass("selected");r.addClass("selected")},toggleSearchRefinements:function(n){n.preventDefault();var i=t(n.currentTarget);i.toggleClass("active");i.fadeOut(100,function(){i.text(i.text()=="More refinements"?"Less refinements":"More refinements").fadeIn(100)});t("#uv-search-refinements .inner").stop(!0,!0).toggleClass("hide").toggle().slideToggle()},facets:{},setFacets:function(){this.facets=this.getFacetParams()},selectedModel:null,setSelectedModel:function(n,i){var r,u;if(i=i||t("option:selected",n.currentTarget),r=t.trim(i.data("model-id")),u=t.trim(i.text()),r.length===0||u===r)this.selectedModel=null;else{var f=t.trim(i.data("body-shape")).toLowerCase(),e=t.trim(i.data("variant")),o=t.trim(i.data("fuel-type")),s=t.trim(i.data("model-url")),h={id:r,name:u,bodyShape:f,variant:e,fuelType:o,url:s};this.selectedModel=h}},vehicleModels:[],bodyShapeModels:{},buildBodyShapeModelMatrix:function(){var u=t("#uv-search-model-dropdown").children(),i=[],n={},r=null;u.each(function(){var u=t(this),o=t.trim(u.data("model-id")),s=t.trim(u.text()),f=t.trim(u.data("body-shape")).toLowerCase(),h=t.trim(u.data("variant")),c=t.trim(u.data("fuel-type")),l=t.trim(u.data("model-url")),e={id:o,name:s,bodyShape:f,variant:h,fuelType:c,url:l};e.id==""&&(r=e);i.push(e);n[f]||(n[f]=[]);n[f].push(e)});t.each(n,function(n,t){t.unshift(r)});this.vehicleModels=i;this.bodyShapeModels=n},updateModelDropdown:function(n){var i=t(n.currentTarget).val();t("#IncludeSimilarModels").val("");this._updateModelDropdown(i)},_updateModelDropdown:function(n,i,r,u){var f=this.bodyShapeModels[n]||[],e=t("#uv-search-model-dropdown").empty();n==""&&(f=this.vehicleModels);t.each(f,function(n,f){var o=t("<option><\/option>").val(n+1).data("model-id",f.id).text(f.name).data("model-url",f.url).data("variant",f.variant).data("fuel-type",f.fuelType).appendTo(e);f.id==i&&f.variant==r&&f.fuelType==u&&o.attr("selected","selected")})},parseQuery:function(n){var e={},r=n.split("&"),u,f,i;for(u in r)if(r.hasOwnProperty(u)){if(f=t.trim(r[u]+""),f.length===0)continue;i=f.split("=");i.length===2&&(e[decodeURIComponent(i[0]).toLowerCase()]=decodeURIComponent(i[1].replace(/\+/g,"%20")))}return e},getFacetParams:function(n,i,r){var o=u.location.search.substring(1),l=o.length>0?this.parseQuery(o):{},s=this.parseQuery(t("#uv-search-form").serialize()),f=s,h;typeof s.signatureclass=="undefined"&&(f.signatureclass=!1);h=t("#uv-search-model-dropdown option:selected");this.setSelectedModel(null,h);var e=this.selectedModel,c=e?e.variant:"",a=e?e.fuelType:"";return f.model=e?e.id:"",f.variant=c,f.bodyshape=e?e.bodyShape:"",typeof f["indexmodel.sorting"]!="undefined"&&(f.sorting=f["indexmodel.sorting"],delete f["indexmodel.sorting"]),f.searchterm==t("#uv-search input").attr("placeholder")&&(f.searchterm=""),r&&(f=this.removeBlankOrNullFacets(f)),f},goToModelPage:function(n){var e=t("#uv-search-model-dropdown option:selected"),i=e.data("model-url"),r,f;return(i?t("#uv-search-form").attr("action",i):i="/used-vehicles/",n&&u.location.pathname.toLowerCase()==i.toLowerCase())?!1:(r=u.location.origin,f=this.getFacetParams(!1,!1,!0),r=r+i+"?"+t.param(f),u.location=r,!0)},removeBlankOrNullFacets:function(n){var i={},t;for(t in n)(!n.hasOwnProperty(t)||n[t])&&(i[t]=n[t]);return i||n},clearFiltersAndSearch:function(n){n.preventDefault();var t=this.$("#uv-search-form");u.location=t.attr("action")},onSearchFormChange:function(){this.setClearFormLinkVisibility()},submitSearch:function(n){n.preventDefault();var i=n.currentTarget;(this.checkSearchValue(),this.goToModelPage())||(t(i).find(":input").filter(function(){return!this.value}).attr("disabled","disabled"),i.submit())},checkSearchValue:function(){t("#uv-search input").val()==t("#uv-search input").attr("placeholder")&&t("#uv-search input").val("")},closeSimilarMessage:function(n){n&&n.preventDefault();t("#used-car-similar-message").removeClass("is-active");t("#used-car-similar-message").velocity("fadeOut")},parsePrice:function(n){return parseFloat(n).toString().replace(/[^-\d\.]+/g,"")},formatPrice:function(n,t){return parseFloat(n).toFixed(t||0).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")},showSimilarVehicles:function(n){n.preventDefault();t("#IncludeSimilarModels").val("true");this.search(null,!0)},getUrlParams:function(n){var t={};return n.substring(1).replace(/[?&]+([^=&]+)=([^&]*)/gi,function(n,i,r){t[i]=r}),t},initializeEnquireNowForm:function(){var i=this.$("#enquireNowForm");this.enquireNowFormOverlay=new n.ModalOverlayView;this.enquireNowFormOverlay.setContent(i).render();i.validate({submitHandler:t.proxy(function(n){var r=this.$("#policyCheck").is(":checked");if(r)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}t(".btn-loader",i).prop("disabled",!0);this.sendEnquiryEmail(JSON.stringify(this.prepareData(n)),function(){t(".btn-loader",i).prop("disabled",!1);i.find(".uv-success-message").removeClass("hidden");i.find(".btn-loader").addClass("hidden");i.find(".uv-form-intro, .uv-form-fields").addClass("hidden");i[0].reset()})},this)})},showEnquireNowForm:function(i){var r=this.$("#enquireNowForm"),o=r.validate(),u={},s=this.getFacetParams(!1,!1,!1,!0),f=this,e;i.preventDefault();o.resetForm();r[0].reset();t(".uvSearch-enquiry-dealer-selector").each(function(){new n.FormDealerSelectorView({el:this})});r.removeClass("hidden");r.find(".uv-form-fields").removeClass("hidden");r.find(".btn-loader").removeClass("hidden");r.find(".uv-success-message").addClass("hidden");t.each(s,function(n,i){switch(n){case"variant":case"sorting":case"indexmodel.sorting":case"includesimilarmodels":break;case"bodyshape":u[n]=t(".uv-body-shape option:selected").text();break;case"model":u[n]=f.selectedModel?f.selectedModel.name:"All models";break;case"location":u[n]=t("#Location option:selected").text();break;default:u[n]=i}});e=this.validateParams(u);t(".searchCriteria").html(e);this.enquireNowFormOverlay.show()},validateParams:function(n){var i="",r=this;return t.each(n,function(u,f){var e,o,c,s,l,h,a,v,y;switch(u){case"includesimilarmodels":break;case"dealerid":break;case"regions":break;case"dealerfilter":break;case"searchterm":f!=""&&(i+='<li class="clearfix"><div class="facet-name"><strong>Search Term<\/strong>: '+t("#SearchTerm").val()+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="'+u+'" type="hidden" value="'+f+'" /><\/li>');break;case"bodyshape":f==""&&(f="All shapes");i+='<li class="clearfix"><div class="facet-name"><strong>Body Shape<\/strong>: '+f+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="'+u+'" type="hidden" value="'+f+'" /><\/li>';break;case"model":f==""&&(f="All models");i+='<li class="clearfix"><div class="facet-name"><strong>Model<\/strong>: '+f+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="'+u+'" type="hidden" value="'+f+'" /><\/li>';break;case"location":f==""&&(f="All locations");i+='<li class="clearfix"><div class="facet-name"><strong>Location<\/strong>: '+f+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="'+u+'" type="hidden" value="'+f+'" /><\/li>';break;case"minprice":if(e=f,o=n.maxprice,e===""&&o==="")break;o===""&&(o=0);e===""&&(e=0);i+='<li class="clearfix"><div class="facet-name"><strong>Price<\/strong>: $'+r.formatPrice(e)+" < $"+r.formatPrice(o)+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="price" type="hidden" value="'+e+" < "+o+'" /><\/li>';break;case"maxprice":break;case"minyear":if(c=f,s=n.maxyear,c===""&&s==="")break;s===""&&(s=0);i+='<li class="clearfix"><div class="facet-name"><strong>Year<\/strong>: '+c+" < "+s+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="year" type="hidden" value="'+c+" < "+s+'" /><\/li>';break;case"maxyear":break;case"minkms":if(l=f,h=n.maxkms,l===""&&h==="")break;h===""&&(h=0);i+='<li class="clearfix"><div class="facet-name"><strong>Odometer<\/strong>: '+r.formatPrice(l)+"Kms < "+r.formatPrice(h)+'Kms<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="odometer" type="hidden" value="'+l+" < "+h+'" /><\/li>';break;case"maxkms":break;case"transmission":f>0&&(f=t("#Transmission option:selected").text(),i+='<li class="clearfix"><div class="facet-name"><strong>Transmission<\/strong>: '+f+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="transmission" type="hidden" value="'+f+'" /><\/li>');break;case"enginesize":f>0&&(f=t("#EngineSize option:selected").text(),i+='<li class="clearfix"><div class="facet-name"><strong>Engine Size<\/strong>: '+f+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="engineSize" type="hidden" value="'+f+'" /><\/li>');break;case"minseats":f>0&&(i+='<li class="clearfix"><div class="facet-name"><strong>Min Seats<\/strong>: '+f+' Seats<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="seats" type="hidden" value="'+f+' Seats" /><\/li>');break;case"signatureclass":a=n.signatureclass;a==="true"&&(i+='<li class="clearfix"><div class="facet-name"><strong>Signature Class<\/strong>: Yes<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="signature" type="hidden" value="Yes" /><\/li>');break;case"tci":v=n.tci;v==="true"&&(i+='<li class="clearfix"><div class="facet-name"><strong>Toyota Certified<\/strong>: Yes<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="tci" type="hidden" value="Yes" /><\/li>');break;case"toyotaDirect":y=n.toyotaDirect;y==="true"&&(i+='<li class="clearfix"><div class="facet-name"><strong>Toyota Direct<\/strong>: Yes<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="toyotaDirect" type="hidden" value="Yes" /><\/li>');break;case"fuel":f=t("#Fuel option:selected").text();i+='<li class="clearfix"><div class="facet-name"><strong>Fuel Type<\/strong>: '+f+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="fuel" type="hidden" value="'+f+'" /><\/li>';break;default:i+='<li class="clearfix"><div class="facet-name"><strong>'+u+"<\/strong>: "+f+'<\/div><div class="facet-value last"><a href="#" class="remove">remove<\/a><\/div><input name="'+u+'" type="hidden" value="'+f+'" /><\/li>'}}),i},initializeLazyLoad:function(){var n=this,i=this.$container.isotope({itemSelector:".search_item",sortBy:"original-order"});this.$container.infinitescroll({navSelector:"#nav_select",nextSelector:".next_nav",itemSelector:".search_item",debug:!1,appendCallback:!1,dataType:"json",pathParse:t.proxy(this.parsePath,this),path:t.proxy(this.parsePath,this),loading:{finishedMsg:"",img:"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",msgText:'<div><div>Loading more results<\/div><div class="loader lds-roller loader-black loader-medium"><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><\/div><\/div>',selector:t("#uv-loader"),speed:0}},function(i){if(i.Results.length+t(".search_item").length-t(".search_item.uv-promo-item").length>i.ResultCount&&n.$container.infinitescroll("pause"),t(".search_item").length-t(".search_item.uv-promo-item").length<i.ResultCount){t(".loading_container").removeClass("hidden");var r=t(n.itemTemplate({usedVehicles:i.Results,helpers:n.viewHelpers}));r.find("img").on("load",function(){t(this).removeAttr("width");t(this).removeAttr("height");n.$container.isotope("layout")});n.$container.append(r);n.$container.isotope("appended",r);n.$container.isotope("reloadItems")}else n.$container.isotope();n.cleanVehicleItem()})},parsePath:function(n){this.checkSearchValue();var i=this.options.apiUrl+"?",r=t.param(this.facets);return i+=r,i+(n?"&page="+n:"")},parseQueryString:function(n){var u={},i,r,t,f;for(i=n.split("&"),t=0,f=i.length;t<f;t++)r=i[t].split("="),u[r[0].toLowerCase()]=r[1];return u},cleanVehicleItem:function(){t(".search_item").length>0?this.$container.isotope({itemSelector:".search_item",sortBy:"original-order"}):t(".display_search_results").css("height","auto");this.$container.isotope("reloadItems")},scrollToTop:function(n){t("html, body").stop(!0,!0).animate({scrollTop:(n||this.$el).offset().top},400,"swing")},search:function(n,i){var r=this;n&&n.preventDefault();this.scrollToTop();this.$container.slideUp(400,function(){t(this).empty().show();r.checkSearchValue();var n=t("#uv-search-model-dropdown option:selected");(r.setSelectedModel(null,n),r.setFacets(),i||!r.goToModelPage(!0))&&r.getFacetedSearchResults()})},updateTotal:function(n){t("#used-car-results .result-total").html(n);var i="All models",r=t(".uv-body-shape option:selected");r.val()!="All shapes"&&(i=r.text());this.selectedModel&&(i=this.selectedModel.name);t("#uv-page-content h2").text(i);n==0?(t("#uv-no-results-message").removeClass("hidden"),t("#uv-page-content").addClass("hidden")):(t("#uv-no-results-message").addClass("hidden"),t("#uv-page-content").removeClass("hidden"))},getFacetedSearchResults:function(){var i=this.parsePath(null,null),n=this;t.getJSON(i,function(i){if(n.$container.infinitescroll("resume"),i.ResultCount==-1){t(".search_results_match_section").show();t(".search_results_match_section p span").html("Search is currently unavailable");return}if(i.ResultCount>0&&t(".search_item").length-t(".search_item.uv-promo-item").length<i.ResultCount){n.$container.isotope("destroy");n.$container.infinitescroll({state:{currPage:1}});var r=t(n.itemTemplate({usedVehicles:i.Results,helpers:n.viewHelpers}));r.find("img").on("load",function(){t(this).removeAttr("width");t(this).removeAttr("height");n.$container.isotope("layout")});n.updateTotal(i.ResultCount);i.SimilarCount!=0?(t("#uv-similar-message").fadeIn(),t("#uv-similar-message .similar-total").html(i.SimilarCount)):t("#uv-similar-message").fadeOut();t(".used-car-sort").removeClass("hidden");n.$container.isotope({itemSelector:".search_item",sortBy:"original-order"});n.$container.append(r);n.$container.isotope("appended",r)}else if(n.updateTotal(i.ResultCount),i.SimilarCount!=0?(t("#uv-similar-message").removeClass("hidden"),t("#uv-similar-message .similar-total").html(i.SimilarCount)):t("#uv-similar-message").addClass("hidden"),i.ResultCount==0){n.$container.infinitescroll("pause");n.$container.css("height","0");t(".used-car-sort").addClass("hidden");return}n.cleanVehicleItem();n.getRecentSearches(function(t){t&&n.renderRecentSearches(t)})})},initializeVehicleDetail:function(){var n=t(".thumb .thumb-img.active"),i,r;t(".gallery .thumb",".vehicle_detail").on("click",function(){var r,i,u;t(".thumb-img",this).hasClass("active")||(r=t("img",this).attr("src").replace("w=100&h=74","w=440&h=324"),i='<img src="'+r+'" alt="" class="shadow" />',t(".thumb-img",this).hasClass("autoPlayVideo")&&(i+='<a href="#" class="autoPlayTrigger"> <div class="play-video"> <span>Play Video<\/span> <\/div> <\/a>'),t(".main-image").html(i),t(this).find(".thumb-img").addClass("active"),n.removeClass("active"),n=t(this).find(".thumb-img"),u=t(".thumb").index(t(".active",".thumbs-container").closest(".thumb")),t("span",".img_count").html(u+1))});i=t(".thumbs-container .thumb").length;t(".thumbs-container .thumb").each(function(n){var u=t(this);n==11&&(r=t(this));n>11&&(u.addClass("hidden"),n==i-1&&r.append('<div class="more-thumbs">+ '+(n-10)+" More<\/div>"))});t(".more-thumbs",".thumbs-container").on("click",function(){t(".thumbs-container .thumb.hidden").removeClass("hidden");t(this).hide()})},removeElement:function(n){n.preventDefault();t(n.currentTarget).closest("li").remove()},playUsedVehicleVideo:function(n){document.getElementById("autoplay-video-container").style.display="block";n.preventDefault()},close404Message:function(n){n&&n.preventDefault();t("#uv-404-message").fadeOut()},bodyShapeImageSelector:function(n){var r=t(n.target),i;t("#uv-body-shape-selector label").removeClass("selected");i=r.closest("label").addClass("selected").find("input").attr("checked","checked").val();this._updateModelDropdown(i)},recentSearches:null,initializeRecentSearches:function(){this.$recentSearches=t(".used-car-recent-searches");this.recentSearches=new e;var n=this;this.getRecentSearches(function(t){t&&n.renderRecentSearches(t)});this.$recentSearches.on("click","#clear-history",function(t){t.preventDefault();n.clearRecentSearches(function(){n.recentSearches.reset([]);n.hideRecentSearches()})})},getRecentSearches:function(n){t.ajax({dataType:"json",url:this.options.recentSearchUrl,cache:!1,success:n})},clearRecentSearches:function(n){t.ajax({dataType:"json",url:this.options.clearRecentSearchUrl,cache:!1,success:n})},hideRecentSearches:function(){t(".used-car-recent-searches").addClass("hidden")},renderRecentSearches:function(n){var r=this.$recentSearches.hasClass("truncate"),i;n&&this.prepareRecentSearchData(n,r);i=render("ichiban/recent-searches",{searches:this.recentSearches.toJSON()});t(".used-car-recent-searches").html(i).removeClass("hidden")},prepareRecentSearchData:function(n,i){var u={},e={},r,f;t.each(this.vehicleModels,function(n,t){e[t.id]=t.name});r=t(".uv-body-shape");r.length===1&&(r=r.children());r.each(function(){var n=t(this),i=t.trim(n.val()),r=t.trim(n.data("name"));n.val()&&(u[i]=r)});f=this;t.each(n,function(n,r){var e=r.Model,s="/used-vehicles/?searchterm="+(r.KeyWord||""),o;e.BodyShape&&(s+="&bodyshape="+e.BodyShape);e.Id&&(s+="&model="+e.Id);e.Variant&&(s+="&variant="+e.Variant);e.FuelType&&(s+="&fuel="+e.FuelType);e.Name=f.getModelName(e.Id,e.BodyShape,e.FuelType,e.Variant);e.BodyShapeName=e.BodyShape?u[e.BodyShape]:null;o=[];r.KeyWord&&o.push(r.KeyWord);e.Id&&o.push(e.Name);e.Id||o.push(e.BodyShapeName||"All shapes");r.Dealership.Id!==0&&(s+="&dealerid="+r.Dealership.Id);r.Dealership.Name=r.Dealership.Id?r.Dealership.Name:"All stores";o.push(r.Dealership.Name);o=o.join(", ");i&&o.length>50&&(o=t.trim(o.substr(0,50))+"&hellip;");r.Model=e;r.Link=s;r.Description=o});this.recentSearches.reset(n)},getModelName:function(n,t,i,r){for(var e=this.vehicleModels,u,f=0;f<e.length;f++)if(u=e[f],u.id==n&&u.bodyShape==t&&u.fuelType==i&&(u.variant||null)==r)return u.name},slickSliderInitialize:function(){var i=t(".used-car-details__gallery .slider ul").children().length,n;t(".slider__total-slides").text(i);this.$slider=n=t(".used-car-details__gallery .slider ul").slick({dots:!1,arrows:!1,slidesToShow:1,slidesToScroll:1,fade:!0,asNavFor:".used-car-details__gallery .slider__carousel ul",responsive:[{breakpoint:768,settings:{dots:!0}}]});t(".used-car-details__gallery .slider__carousel ul").slick({dots:!1,arrows:!1,infinite:!0,swipe:!1,slidesToShow:8,slidesToScroll:1,asNavFor:".used-car-details__gallery .slider ul",focusOnSelect:!0,draggable:!1});t(".used-car-details__gallery .slider ul").on("beforeChange",function(n,i,r,u){t(".slider__current-slide").text(u+1)});t(".slider__controls a").on("click",function(i){i.preventDefault();var r=t(this);r.hasClass("slider__controls--next")?n.slick("slickNext"):n.slick("slickPrev")})},flexSliderInitialize:function(){var n=this;t("#uv-modal-slider").flexslider({slideshow:!1,controlNav:!1,animationLoop:!1,maxWidth:"95%",maxHeight:"95%",start:function(n){t(".modal-slider-container .slide-current-slide").text(n.currentSlide+1);t(".modal-slider-container .slide-total-slides").text(" / "+n.count)},before:function(i){t(".modal-slider-container .slide-current-slide").text(i.animatingTo+1);n.$slider.slick("slickGoTo",i.animatingTo)}})},enlargeUVImage:function(){var i=t("#uv-modal-slider"),r=this.$slider,u=t(".modal-slider-container"),n;t(".slider__image-enlarge--btn").on("click",function(f){f.preventDefault();n=r.slick("slickCurrentSlide");t(this).colorbox({href:u,inline:!0,current:"",previous:"◁",next:"▷",className:"reduceMargin modal white_close",close:"",onComplete:function(){i.flexslider(n);t(".modal-slider-close-bg, .modal #cboxClose").css("display","block")}})})},dealerNotes:function(){var u=t("#dealer-notes").height(),r=t("#dealer-notes").data("height"),i=!1;u>r?(i=!0,t("#dealer-notes").height(r),t("#dealer-notes").next(".scroll-overlay").css({display:"block"}),t(".read-more-link").css("visibility","visible"),t(".read-more-link").text("Read More")):(i=!1,t(".read-more-link").css("visibility","hidden"));t(".read-more-link").on("click",function(f){f.preventDefault();i?(t("#dealer-notes").velocity({height:u}).next(".scroll-overlay").hide(),t(".read-more-link").text("Read Less")):(t("#dealer-notes").velocity({height:r}).next(".scroll-overlay").show(),t(".read-more-link").text("Read More"));i=!i;n.helpers.scrollTo(".additional-notes")});this.initializeStarRatings()},switchDetailTab:function(n){var r;n.preventDefault();var i=n.currentTarget,u=t(i).data("type"),f=t(".detail-container .scroll-overlay"),e=t(".details-container");t(i).hasClass("active")||(t(".tab-link-container").find(".active").removeClass("active"),t(i).addClass("active"));r=t(".details-container").find("[data-type='"+u+"']");t(r).hasClass("active")||(t(".details-container").find(".active").removeClass("active"),t(r).addClass("active"));u=="specs"?(t(f).css("visibility","hidden"),t(e).css({"overflow-y":"hidden",height:"auto"})):(t(f).css("visibility","visible"),t(e).css({"overflow-y":"scroll",height:"600px"}))},uvDetailForms:function(){t(".uv-detail-form-btn,  .uv-question-button").each(function(){var n=t(this).data("selector");n||(n=t(this).attr("href"));t(this).colorbox({href:n,inline:!0,current:"",previous:"◁",next:"▷",className:"reduceMargin",close:"X",onClosed:function(){var i=t(n).validate();i.resetForm();t(n).find(".error").removeClass("error");t(".form_confirmation, .uv-success-message").addClass("hidden");t(n).find("form").removeClass("hidden");t(".submit").removeClass("hidden");t(".uv-form-loader").addClass("hidden")}})});this.initializeBuyTestDriveFormValidate();this.initializeQuestionFormValidate()},initializeBuyTestDriveFormValidate:function(){var n=t("#used_vehicle_detail_form");n.validate({submitHandler:t.proxy(function(i){t(".submit",n).addClass("hidden");t(".uv-form-loader",n).removeClass("hidden");this.sendEnquiryEmail(JSON.stringify(this.prepareData(i)),function(){n.addClass("hidden");t(".form_confirmation").removeClass("hidden");n[0].reset()})},this),invalidHandler:function(n,i){var r=i.numberOfInvalids();if(r)setTimeout(function(){t.colorbox.resize()},0);else return}})},prepareData:function(n){var u=t(n).serializeArray(),r={};return i.each(u,function(n){r[n.name]=n.value}),r},initializeQuestionFormValidate:function(){var n=t("#used_vehicle_question_form");n.validate({submitHandler:t.proxy(function(i){t(".submit",n).addClass("hidden");t(".uv-form-loader",n).removeClass("hidden");this.sendEnquiryEmail(JSON.stringify(this.prepareData(i)),function(){n.addClass("hidden");t(".uv-question .uv-success-message").removeClass("hidden");n[0].reset();t.colorbox.resize()})},this),invalidHandler:function(n,i){var r=i.numberOfInvalids();if(r)setTimeout(function(){t.colorbox.resize()},0);else return}})},populateUVDetailForm:function(n){n.preventDefault();var r=t(n.currentTarget).data("selector"),i=t("#used_vehicle_detail_form");r==".uv-buy"&&(t(r).find("#used_vehicle_detail_form h2").text("Buy this vehicle"),t(r).find(".uv-buy-form-notice").removeClass("hidden"),i.attr("data-enquire-buy","10"),i.attr("data-enquire-test",""),i.find(".uv-enquire-reason").val(i.data("enquire-buy")));r==".uv-test-drive"&&(t(r).find("#used_vehicle_detail_form h2").text("Test drive this vehicle"),t(r).find(".uv-buy-form-notice").addClass("hidden"),i.attr("data-enquire-test","9"),i.attr("data-enquire-buy",""),i.find(".uv-enquire-reason").val(i.data("enquire-test")))},scrolltoDealerInfo:function(t){t.preventDefault();n.helpers.scrollTo(".dealership-details")},scrolltoSigClass:function(t){t.preventDefault();n.helpers.scrollTo(".sig-class-promo")},initializeStarRatings:function(){t(".uv-star-rating").each(function(){var u=t(this),r=u.data("rating"),i;if(r){var e=Math.floor(r/2),o=r%2,f=!1,n="";for(i=0;i<5;i++)i<e?n+='<img class="star" src="/Content/images/star_black.png" width="15" height="14" alt="" />':o&&!f?(n+='<img class="star" src="/Content/images/star_half_grey.png" width="15" height="14" alt="" />',f=!0):n+='<img class="star" src="/Content/images/star_grey.png" width="15" height="14" alt="" />';u.html(n)}})},sendEnquiryEmail:function(n,i){t.ajax({type:"POST",url:"/api/UsedVehicleSearchEnquiry/SendSearchEnquiry",data:n,success:i,contentType:"application/json; charset=utf-8",dataType:"json"})}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.UsedVehiclePageView=r.View.extend({events:{"click .js-calculate-finance-btn":"showFinanceCalculator","click .js-buy-btn":"showDetailForm","click .js-test-drive-btn":"showDetailForm","click .js-question-btn":"showQuestionForm","click .js-enquiry-btn":"showQuestionForm","click .js-enlarge-btn":"showEnlargeOverlay","click .js-video-btn":"showVideoOverlay","click .dealership-link":"scrolltoDealerInfo","click .sig-class":"scrolltoSigClass","click .tci-class":"scrolltoTciClass"},initialize:function(){u.financeCalculatorVehicle&&(this.overlay=new n.ModalOverlayView,this.initializeFinanceCalculator(),this.initializeSigClassFinanceCalculator(),this.initializeDetailForm(),this.initializeQuestionForm(),this.initializeModalSlider(),this.initializeGallerySlider(),this.initializeAutoPlayVideo(),this.initializeDealerNotes(),this.initializeStarRatings(),u.recaptchaCallback=i.bind(this.renderAllRecaptchaWidgets,this))},el:"body",initializeFinanceCalculator:function(){this.model=new n.FinanceCalculatorVehicleModel(u.financeCalculatorVehicle);this.calculator=new n.FinanceCalculatorMasterView({templateOptions:{showVehicleImage:!1},sendPageUrl:!0,settings:u.financeCalculatorOptions});this.calculator.render();this.calculateFinancePrice()},initializeSigClassFinanceCalculator:function(){this.sigClassModel=new n.FinanceCalculatorVehicleModel(u.financeCalculatorVehicle);this.sigClassModel.set({depositPayment:Math.round(this.sigClassModel.get("price")*.1),interestRate:6.95,financeOffer:"Special 6.95% fixed interest offer.",financeOfferLink:"https://www.toyota.co.nz/-/legal-privacy-policy/#uvfinanceoffer",hasSpecialFinance:!0});var t={financeTypeOptions:[{name:"Finance/Purchase",value:n.constants.FINANCE_TYPE_PURCHASE}],interestTypeOptions:[n.constants.FINANCE_INTEREST_FIXED],paymentTermOptions:[36],disclaimerText:u.financeCalculatorOptions&&u.financeCalculatorOptions.disclaimerText,productsLink:u.financeCalculatorOptions&&u.financeCalculatorOptions.productsLink,productsLinkText:u.financeCalculatorOptions&&u.financeCalculatorOptions.productsLinkText,rateCopyText:u.financeCalculatorOptions&&u.financeCalculatorOptions.rateCopyText,personalisedRateLink:u.financeCalculatorOptions&&u.financeCalculatorOptions.personalisedRateLink};this.sigClassCalculator=new n.FinanceCalculatorMasterView({templateOptions:{showVehicleImage:!1,showBalloonPayment:!1,disableDepositPayment:!0},sendPageUrl:!0,settings:t});this.sigClassCalculator.render()},showFinanceCalculator:function(n){(this.calculator||this.overlay)&&(n.preventDefault(),t(n.currentTarget).hasClass("signature-class")?(this.overlay.setContent(this.sigClassCalculator.render().el).render(),this.sigClassCalculator.trigger("summary:show",this.sigClassModel)):(this.overlay.setContent(this.calculator.render().el).render(),this.calculator.trigger("summary:show",this.model)),this.overlay.show())},initializeDetailForm:function(){var i=this.$("#used_vehicle_detail_form");this.detailFormOverlay=new n.ModalOverlayView;this.detailFormOverlay.setContent(i).render();i.validate({debug:!0,submitHandler:t.proxy(function(n){var r,u;if(this.hideErrorMessageRecaptcha("recaptchaBuyForm"),r=grecaptcha.getResponse(this.recaptchaWidgets.recaptchaBuyForm.widgetId),!r){this.showErrorMessageRecaptcha("recaptchaBuyForm","The captcha is required and can not be unchecked.");return}if(u=this.$("#policyCheck").is(":checked"),u)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}t(".btn-loader",i).prop("disabled",!0);this.sendEnquiryEmail(JSON.stringify(this.prepareData(n)),function(){t(".btn-loader",i).prop("disabled",!1);i.find(".uv-form-intro, .uv-form-fields").addClass("hidden");i.find(".uv-success-message").removeClass("hidden");i[0].reset()})},this)})},prepareData:function(n){var r=this.$(n).serializeArray(),t={};return i.each(r,function(n){t[n.name]=n.value}),t},showDetailForm:function(t){var r=this.$(t.currentTarget).hasClass("js-buy-btn"),i=this.$("#used_vehicle_detail_form"),f=i.validate(),u;t.preventDefault();f.resetForm();i[0].reset();this.$(".uv_detail_form-dealer-selector").each(function(){new n.FormDealerSelectorView({el:this})});i.removeClass("hidden");i.find(".uv-form-intro, .uv-form-fields").removeClass("hidden");i.find(".uv-success-message").addClass("hidden");r?i.attr("data-enquire-buy","10").attr("data-enquire-test","9").find(".uv-enquire-reason").val(i.data("enquire-buy")):i.attr("data-enquire-test","9").attr("data-enquire-buy","").find(".uv-enquire-reason").val(i.data("enquire-test"));u=i.find(".form-mode").length>0&&i.find(".form-mode")[0].value==="clearance";i.find("h2").text(r?u?"Reserve this vehicle":"Buy this vehicle":"Test drive this vehicle");i.find(".uv-buy-form-notice").toggleClass("hidden",!r);this.resetRecaptcha("recaptchaBuyForm");this.detailFormOverlay.show()},initializeQuestionForm:function(){var i=this.$("#used_vehicle_question_form");this.questionFormOverlay=new n.ModalOverlayView;this.questionFormOverlay.setContent(i).render();i.validate({submitHandler:t.proxy(function(n){var r,u;if(this.hideErrorMessageRecaptcha("recaptchaQuestionForm"),r=grecaptcha.getResponse(this.recaptchaWidgets.recaptchaQuestionForm.widgetId),!r){this.showErrorMessageRecaptcha("recaptchaQuestionForm","The captcha is required and can not be unchecked.");return}if(u=this.$("#used_vehicle_question_form #policyCheck").is(":checked"),u)this.$("#tickboxAlertForm").hide();else{this.$("#tickboxAlertForm").show();return}t(".btn-loader",i).prop("disabled",!0);this.sendEnquiryEmail(JSON.stringify(this.prepareData(n)),function(){t(".btn-loader",i).prop("disabled",!1);i.find(".uv-form-intro, .uv-form-fields").addClass("hidden");i.find(".uv-success-message").removeClass("hidden");i[0].reset()})},this)})},showQuestionForm:function(n){var t=this.$("#used_vehicle_question_form"),i=t.validate();n.preventDefault();i.resetForm();t[0].reset();t.removeClass("hidden");t.find(".uv-form-intro, .uv-form-fields").removeClass("hidden");t.find(".uv-success-message").addClass("hidden");this.resetRecaptcha("recaptchaQuestionForm");this.questionFormOverlay.show()},initializeModalSlider:function(){var t=this.$(".modal-slider-container").removeClass("hidden");this.galleryOverlay=new n.ModalOverlayView;this.galleryOverlay.setContent(t).render();this.$modalSlider=this.$("#uv-modal-slider > .slides");this.$modalSlider.slick({lazyLoad:"progressive",accessibility:!1,slidesToShow:1,swipeToSlide:!0,cssEase:"cubic-bezier(0.5, 0, 0.5, 1)",focusOnSelect:!1,prevArrow:'<button type="button" class="slick-prev"><\/button>',nextArrow:'<button type="button" class="slick-next"><\/button>',useTransform:!0,infinite:!1,touchThreshold:10,mobileFirst:!0});this.$modalSlider.on("beforeChange",i.bind(function(n,t,i,r){this.$(".modal-slider-pagination > .slide-current-slide").text(r+1);this.$slider.slick("slickGoTo",r)},this))},showEnlargeOverlay:function(n){n.preventDefault();this.galleryOverlay.show();this.$modalSlider.slick("setPosition")},initializeGallerySlider:function(){this.$slider=this.$(".used-car-details__gallery .slider ul");this.$thumbnailSlider=this.$(".used-car-details__gallery .slider__carousel ul");this.$slider.slick({lazyLoad:"ondemand",fade:!0,dots:!1,arrows:!1,slidesToShow:1,slidesToScroll:1,asNavFor:this.$thumbnailSlider,responsive:[{breakpoint:768,settings:{dots:!0}}]});this.$slider.on("beforeChange",i.bind(function(n,t,i,r){this.$(".slider__current-slide").text(r+1);this.$modalSlider.slick("slickGoTo",r)},this));this.$thumbnailSlider.slick({lazyLoad:"ondemand",dots:!1,arrows:!1,infinite:!0,swipe:!1,slidesToShow:8,slidesToScroll:1,asNavFor:this.$slider,focusOnSelect:!0,draggable:!1});this.$(".slider__controls a").on("click",i.bind(function(n){var t=this.$(n.currentTarget);n.preventDefault();t.hasClass("slider__controls--next")?this.$slider.slick("slickNext"):this.$slider.slick("slickPrev")},this))},initializeAutoPlayVideo:function(){var i=this.$(".modal-autoplay").removeClass("hidden"),r=t("<iframe />").appendTo(i),f=i.data("url"),e=function(n,t){return function(){var i=n.getWidth(),u=Math.round(i*.75),f="".concat(t,"&w=").concat(i,"&h=").concat(u);r.attr("src",f)}};t(u).on("breakpoint.change load",e(this.overlay,f));this.videoOverlay=new n.ModalOverlayView;this.videoOverlay.setContent(i).render()},showVideoOverlay:function(n){n.preventDefault();this.videoOverlay.show()},calculateFinancePrice:function(){var t=this.$(".js-finance-price");n.financeService.calculate(this.model).done(function(i){if(!i.success)return!1;t.html("".concat(n.helpers.formatPrice(i.repaymentAmount,2)," <abbr>p/w<\/abbr>"))})},initializeDealerNotes:function(){var i=this,u=this.$("#dealer-notes").height(),r=this.$("#dealer-notes").data("height"),t=!1;u>r?(t=!0,this.$("#dealer-notes").height(r),this.$("#dealer-notes").next(".scroll-overlay").css("display","block"),this.$(".read-more-link").css("display","block"),this.$(".read-more-link").text("Read More")):(t=!1,this.$(".read-more-link").css("display","none"),this.$("#dealer-notes").next(".scroll-overlay").css("display","none"));this.$(".read-more-link").on("click",function(f){f.preventDefault();t?(i.$("#dealer-notes").velocity({height:u}).next(".scroll-overlay").hide(),i.$(".read-more-link").text("Read Less")):(i.$("#dealer-notes").velocity({height:r}).next(".scroll-overlay").show(),i.$(".read-more-link").text("Read More"));t=!t;n.helpers.scrollTo(".additional-notes")})},initializeStarRatings:function(){this.$(".uv-ancap__star-rating").each(function(){var u=t(this),r=u.data("rating"),i;if(r){var e=Math.floor(r/2),o=r%2,f=!1,n="";for(i=0;i<5;i++)i<e?n+='<img class="star" src="/Content/images/star_black.png" width="15" height="14" alt="" />':o&&!f?(n+='<img class="star" src="/Content/images/star_half_grey.png" width="15" height="14" alt="" />',f=!0):n+='<img class="star" src="/Content/images/star_grey.png" width="15" height="14" alt="" />';u.html(n)}})},scrolltoDealerInfo:function(t){t.preventDefault();this.$(".dealership-details .panel__title").click();n.helpers.scrollTo(".dealership-details")},scrolltoSigClass:function(t){t.preventDefault();this.$(".sig-class-promo .panel__title").click();n.helpers.scrollTo(".sig-class-promo")},scrolltoTciClass:function(t){t.preventDefault();this.$(".tci-promo .panel__title").click();n.helpers.scrollTo(".tci-promo")},sendEnquiryEmail:function(n,i){t.ajax({type:"POST",url:"/api/UsedVehicleDetailsEnquiry/SendEnquiryEmail",data:n,success:i,error:function(n,t,i){u.location.href="/error/index";console.error(n.responseURL,t,i)},contentType:"application/json; charset=utf-8",dataType:"json"})},renderAllRecaptchaWidgets:function(){var t,i;for(this.recaptchaWidgets={},t=[],t.push({elementId:"recaptchaBuyForm",errorClass:"recaptcha-error-message-buy-form"}),t.push({elementId:"recaptchaQuestionForm",errorClass:"recaptcha-error-message-question-form"}),i=0;i<t.length;i++){var r=t[i].elementId,f=this.renderRecaptcha(r),u=new n.ErrorAlertView;this.$(".".concat(t[i].errorClass)).append(u.el);this.recaptchaWidgets[r]={widgetId:f,errorElement:u}}},renderRecaptcha:function(n){if(!u.grecaptcha||!u.recaptchaSiteKey)return!1;return grecaptcha.render(document.getElementById(n),{sitekey:u.recaptchaSiteKey})},resetRecaptcha:function(n){grecaptcha.reset(this.recaptchaWidgets[n].widgetId)},showErrorMessageRecaptcha:function(n,t){this.recaptchaWidgets[n].errorElement.setMessage(t).render().show()},hideErrorMessageRecaptcha:function(n){this.recaptchaWidgets[n].errorElement.hide()}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r){n.StepperFormStepView=r.View.extend({disabled:!1,completed:!1,tagName:"form",className:"form-step",events:{"click .form-step__title":"openStep","click .form-step__next-btn":"nextStep","click .form-step__previous-btn":"previousStep","click .form-step__submit-btn":"submit"},initialize:function(n){this.template||n.template||console.error("Step template is required.");n&&n.template&&(this.template=n.template);this.afterInitialize()},afterInitialize:i.noop,beforeRender:i.noop,render:function(){return this.beforeRender(),n.templates.fetch(this.template,function(n){this.$el.html(n(this.prepareData())).validate(this.validation);this.denoteRequiredFormFields();this.afterRender()},this),this},denoteRequiredFormFields:function(){t.each(t("input[required], select[required]"),function(){t(this).closest(".form-group").find("label").first().addClass("fancy-required")})},afterRender:i.noop,validation:{invalidHandler:function(i,r){if(r.numberOfInvalids()){var u=t(r.errorList[0].element);n.helpers.scrollTo(u,-35)}}},prepareData:function(){return this.model.toJSON()},showElement:function(n){this.$(n).removeClass("hidden")},hideElement:function(n){this.$(n).addClass("hidden")},open:function(){return this.$el.addClass("form-step--active"),this.$(".form-step__content").velocity("fadeIn"),this},close:function(){return this.$el.removeClass("form-step--active"),this.$(".form-step__content").hide(),this},complete:function(){return this.$el.addClass("form-step--complete"),this.completed=!0,this},reset:function(){return this.$el.removeClass("form-step--complete"),this.completed=!1,this},enable:function(){return this.$el.removeClass("form-step--disabled"),this.disabled=!1,this},disable:function(){return this.$el.addClass("form-step--disabled"),this.disabled=!0,this},isDisabled:function(){return this.disabled===!0},validate:function(){return this.valid=this.$el.valid(),this.valid},openStep:function(){var n=this.instance.steps,t=n.indexOf(this);this.triggerEvent("step:current",t)},nextStep:function(){this.triggerEvent("step:next")},previousStep:function(){this.triggerEvent("step:previous")},submit:function(){this.triggerEvent("submit")},triggerEvent:function(){this.dispatcher.trigger.apply(this.dispatcher,arguments)}});n.StepperFormMasterView=r.View.extend({steps:[],current:0,initialize:function(){this.dispatcher=i.clone(r.Events);this.listenTo(this.dispatcher,"step:current",this.setCurrentStep);this.listenTo(this.dispatcher,"step:next",this.nextStep);this.listenTo(this.dispatcher,"step:previous",this.previousStep);this.listenTo(this.dispatcher,"step:enable",this.enableStep);this.listenTo(this.dispatcher,"step:disable",this.disableStep);this.listenTo(this.dispatcher,"step:render",this.renderStep);this.listenTo(this.dispatcher,"submit",this.submit);this.afterInitialize()},afterInitialize:i.noop,render:function(){return this.$el.empty(),i.each(this.steps,function(n){this.$el.append(n.render().el)},this),this.steps[this.current].open(),this.afterRender(),this},afterRender:i.noop,addStep:function(n){n.dispatcher=this.dispatcher;n.model=this.model;n.instance=this;this.steps.push(n)},submit:i.noop,nextStep:function(){if(this.validateCurrentStep()){this.completeCurrentStep();this.closeCurrentStep();do this.isLastStep()||this.current++;while(this.isCurrentStepDisabled()!==!1);this.openCurrentStep()}},previousStep:function(){this.closeCurrentStep();do this.isFirstStep()||this.current--;while(this.isCurrentStepDisabled()!==!1);this.resetSteps(this.current);this.openCurrentStep()},setCurrentStep:function(n,t){if(this.current===n||this.isStepDisabled(n))return!1;if(t)for(var i=0;i<n;i++)this.steps[i].complete();(t||n>-1&&n<this.current)&&(this.closeCurrentStep(),this.resetSteps(n),this.current=n,this.openCurrentStep())},openCurrentStep:function(){this.steps[this.current].open();n.helpers.scrollTo(this.steps[this.current].$el)},closeCurrentStep:function(){this.steps[this.current].close()},validateCurrentStep:function(){return this.steps[this.current].validate()},completeCurrentStep:function(){this.steps[this.current].complete()},resetSteps:function(n){while(n<=this.current)this.steps[n].reset(),n++},enableStep:function(n){if(!this.steps[n])return null;this.steps[n].enable()},disableStep:function(n){if(!this.steps[n])return null;this.steps[n].disable()},renderStep:function(n){if(!this.steps[n])return null;this.steps[n].render()},isStepDisabled:function(n){return this.steps[n]?this.steps[n].isDisabled():null},isCurrentStepDisabled:function(){return this.isStepDisabled(this.current)},isFirstStep:function(){return this.current===0},isLastStep:function(){return this.current===this.steps.length-1},triggerEvent:function(){this.dispatcher.trigger.apply(this.dispatcher,arguments)}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){n.InsuranceClaimModel=r.Model.extend({defaults:{claimType:null,glassBreakIn:null,physicalAddressSameAsPostalAddress:"yes",policyHolder:"yes",accDriver:"insured",accIsRegularDriver:"yes",brItemsStolen:"no",accEventPassengers:"no",comEventWitnesses:"no",comEventPoliceAttend:"no",comEventPoliceTest:"no",accDriverLiquor:"no",accThirdParties:"no",comVehicleDriveable:"yes",comCourtesyCar:"no",accPropertyDamaged:"no",comIsNominatedRepairer:"yes",stoAftermarketParts:"no",comPreferredRepairerCity:null,comPreferredRepairerName:null,comPreferredRepairerAddress:null,holderFirstName:null,holderLastName:null,holderContactNumber:null,holderEmail:null,holderPostalAddress:null,holderPhysicalAddress:null,holderRegistration:null,behalfFirstName:null,behalfLastName:null,behalfContactNumber:null,behalfRelationship:null,accDriverFirstName:null,accDriverLastName:null,accDriverContactNumber:null,accDOB:null,accRelationship:null,accLicenceType:null,accLicenceNumber:null,accLicenceCardVersion:null,accLicenceExpiry:null,comEventJourneyReason:null,stoVehicleFound:null,comDate:null,comTime:null,comEventPersonalItems:null,comEventAddress:null,comEventDescription:null,brDamage:null,accDriverLiquorItems:null,comEventPoliceName:null,comEventPoliceBadge:null,comEventPoliceStation:null,comEventPoliceEventNumber:null,accThirdPartyDriverName:null,accThirdPartyPhone:null,accThirdPartyAddress:null,accThirdPartyInsuranceDetails:null,accThirdPartyRegistration:null,accThirdPartyVehicleDescription:null,comEventResponsible:null,comVehicleDamage:null,stoPriorDamage:null,stoPriorFaults:null,stoPartsReplacedRepaired:null,stoVehicleValue:null,accPropertyOwner:null,accPropertyContactNumber:null,accPropertyAddress:null,comNonPreferredRepairerName:null,passengers:[],witnesses:[],stoAftermarketPartItems:[]}});n.InsuranceClaimFormMasterView=n.StepperFormMasterView.extend({el:".insurance-claim-form",afterInitialize:function(){this.model=new n.InsuranceClaimModel;this.addStep(new n.InsuranceClaimFormInsuredDetailsView);this.addStep(new n.InsuranceClaimFormClaimDetailsView);this.addStep(new n.InsuranceClaimFormReviewDetailsView);this.render()},submit:function(){var i={pageId:u.insuranceClaimPageId||null,claimModel:this.model.toJSON()},r=this.$("#policyCheck").is(":checked"),n;if(r)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}n=this.$(".form-step__submit-btn").prop("disabled",!0);t.ajax({url:"/api/insurance/claim",type:"post",data:JSON.stringify(i),dataType:"json",contentType:"application/json",success:function(t){if(!t.success)return n.prop("disabled",!1),this.triggerEvent("error:show",t.errorMessage);u.location=t.confirmationPageUrl}})}});n.InsuranceClaimFormInsuredDetailsView=n.StepperFormStepView.extend({bindings:{"[name=claimType]":{observe:"claimType",selectOptions:{collection:function(){return this.claimTypeCollection},defaultOption:{label:"Please select",value:null}}},"[name=glassBreakIn]":"glassBreakIn","[name=holderFirstName]":"holderFirstName","[name=holderLastName]":"holderLastName","[name=holderRegistration]":"holderRegistration","[name=holderContactNumber]":"holderContactNumber","[name=holderEmail]":"holderEmail","[name=holderPostalAddress]":{observe:"holderPostalAddress",initialize:n.helpers.addressAutocomplete},"[name=holderPhysicalAddress]":{observe:"holderPhysicalAddress",initialize:n.helpers.addressAutocomplete},"[name=physicalAddressSameAsPostalAddress]":"physicalAddressSameAsPostalAddress","[name=policyHolder]":"policyHolder","[name=behalfFirstName]":"behalfFirstName","[name=behalfLastName]":"behalfLastName","[name=behalfContactNumber]":"behalfContactNumber","[name=behalfRelationship]":"behalfRelationship"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .js-complete-claim":"completeClaimForm"}),template:"insurance-claim/insured-details",initialize:function(){this.claimTypeCollection=function(){var t=i.map([n.constants.INSURANCE_CLAIM_TYPE_ACCIDENT,n.constants.INSURANCE_CLAIM_TYPE_BREAK_IN,n.constants.INSURANCE_CLAIM_TYPE_BROKEN_GLASS,n.constants.INSURANCE_CLAIM_TYPE_PARKED_DAMAGE,n.constants.INSURANCE_CLAIM_TYPE_VEHICLE_STOLEN],function(n){return{value:n,label:n}});return new r.Collection(t)}()},prepareData:function(){return i.extend({},this.model.toJSON(),u.insuranceClaimJson||{})},beforeRender:function(){this.stopListening(this.model)},afterRender:function(){this.stickit();this.listenTo(this.model,"change:claimType",this.changeClaimType);this.listenTo(this.model,"change:glassBreakIn",this.toggleBrokenGlassPanel);this.listenTo(this.model,"change:physicalAddressSameAsPostalAddress",this.togglePhysicalAddressField);this.listenTo(this.model,"change:policyHolder",this.toggleContactDetailsPanel)},changeClaimType:function(t,i){this.hideElement(".js-broken-glass-break-in");this.hideElement(".js-insured-details");this.hideElement(".js-broken-glass");this.triggerEvent("step:enable",1);this.triggerEvent("step:enable",2);this.triggerEvent("step:render",1);i===n.constants.INSURANCE_CLAIM_TYPE_BROKEN_GLASS?(this.showElement(".js-broken-glass-break-in"),this.triggerEvent("step:disable",1),this.triggerEvent("step:disable",2)):this.showElement(".js-insured-details");i!==n.constants.INSURANCE_CLAIM_TYPE_BREAK_IN&&(this.$("[name=glassBreakIn]:checked").prop("checked",!1),this.model.set("glassBreakIn",null,{silent:!0}))},toggleBrokenGlassPanel:function(t,i){i==="no"?this.showElement(".js-broken-glass"):this.model.set("claimType",n.constants.INSURANCE_CLAIM_TYPE_BREAK_IN)},completeClaimForm:function(n){n.preventDefault();this.triggerEvent("step:enable",2);this.hideElement(".js-broken-glass");this.showElement(".js-insured-details")},togglePhysicalAddressField:function(n,t){t==="yes"?this.hideElement(".js-physical-address"):this.showElement(".js-physical-address")},toggleContactDetailsPanel:function(n,t){t==="no"?this.showElement(".js-contact-details"):this.hideElement(".js-contact-details")},nextStep:function(){this.triggerEvent("step:next");this.triggerEvent("step:render",2)}});n.InsuranceClaimFormClaimDetailsView=n.StepperFormStepView.extend({bindings:{"[name=accDriver]":"accDriver","[name=accDriverFirstName]":"accDriverFirstName","[name=accDriverLastName]":"accDriverLastName","[name=accDriverContactNumber]":"accDriverContactNumber","[name=accDOB]":"accDOB","[name=accRelationship]":"accRelationship","[name=accIsRegularDriver]":"accIsRegularDriver","[name=accLicenceType]":{observe:"accLicenceType",selectOptions:{collection:function(){return this.licenceTypeOptions},defaultOption:{label:"Please select",value:null}}},"[name=accLicenceExpiry]":"accLicenceExpiry","[name=accLicenceNumber]":"accLicenceNumber","[name=accLicenceCardVersion]":"accLicenceCardVersion","[name=comDate]":"comDate","[name=comTime]":"comTime","[name=brItemsStolen]":"brItemsStolen","[name=comEventPersonalItems]":"comEventPersonalItems","[name=comEventAddress]":{observe:"comEventAddress",initialize:n.helpers.addressAutocomplete},"[name=comEventDescription]":"comEventDescription","[name=brDamage]":"brDamage","[name=comEventJourneyReason]":"comEventJourneyReason","[name=accEventPassengers]":"accEventPassengers","[name=comEventWitnesses]":"comEventWitnesses","[name=comEventPoliceAttend]":"comEventPoliceAttend","[name=comEventPoliceName]":"comEventPoliceName","[name=comEventPoliceBadge]":"comEventPoliceBadge","[name=comEventPoliceStation]":"comEventPoliceStation","[name=comEventPoliceEventNumber]":"comEventPoliceEventNumber","[name=comEventPoliceTest]":"comEventPoliceTest","[name=accDriverLiquor]":"accDriverLiquor","[name=accDriverLiquorItems]":"accDriverLiquorItems","[name=accThirdParties]":"accThirdParties","[name=accThirdPartyDriverName]":"accThirdPartyDriverName","[name=accThirdPartyPhone]":"accThirdPartyPhone","[name=accThirdPartyAddress]":{observe:"accThirdPartyAddress",initialize:n.helpers.addressAutocomplete},"[name=accThirdPartyInsuranceDetails]":"accThirdPartyInsuranceDetails","[name=accThirdPartyRegistration]":"accThirdPartyRegistration","[name=accThirdPartyVehicleDescription]":"accThirdPartyVehicleDescription","[name=comEventResponsible]":"comEventResponsible","[name=comVehicleDamage]":"comVehicleDamage","[name=comVehicleDriveable]":"comVehicleDriveable","[name=comCourtesyCar]":"comCourtesyCar","[name=accPropertyDamaged]":"accPropertyDamaged","[name=accPropertyOwner]":"accPropertyOwner","[name=accPropertyContactNumber]":"accPropertyContactNumber","[name=accPropertyAddress]":{observe:"accPropertyAddress",initialize:n.helpers.addressAutocomplete},"[name=comIsNominatedRepairer]":"comIsNominatedRepairer","[name=comNonPreferredRepairerName]":"comNonPreferredRepairerName","[name=comPreferredRepairerCityId]":{observe:"comPreferredRepairerCityId",selectOptions:{collection:function(){return this.repairerRegionOptions},labelPath:"name",valuePath:"id",defaultOption:{label:"Please select",value:null}}},"[name=comPreferredRepairerId]":{observe:"comPreferredRepairerId",selectOptions:{collection:function(){return this.repairerOptions},labelPath:"name",valuePath:"id",defaultOption:{label:"Please select",value:null}}},"[name=stoVehicleFound]":"stoVehicleFound","[name=stoPriorDamage]":"stoPriorDamage","[name=stoPriorFaults]":"stoPriorFaults","[name=stoPartsReplacedRepaired]":"stoPartsReplacedRepaired","[name=stoAftermarketParts]":"stoAftermarketParts","[name=stoVehicleValue]":"stoVehicleValue"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .js-add-passenger":"addPassengerRow","click .js-add-witness":"addWitnessRow","click .js-add-aftermarket-part":"addAftermarketPartRow","change .js-passenger-rows input":"savePassengersToModel","change .js-witness-rows input":"saveWitnessesToModel","change .js-aftermarket-part-rows input":"saveAftermarketPartsToModel"}),template:"insurance-claim/claim-details",initialize:function(){this.licenceTypeOptions=function(){var t=i.map([n.constants.INSURANCE_CLAIM_LICENCE_TYPE_NZ_FULL,n.constants.INSURANCE_CLAIM_LICENCE_TYPE_NZ_RESTRICTED,n.constants.INSURANCE_CLAIM_LICENCE_TYPE_NZ_LEARNER,n.constants.INSURANCE_CLAIM_LICENCE_TYPE_AU,n.constants.INSURANCE_CLAIM_LICENCE_TYPE_ZA,n.constants.INSURANCE_CLAIM_LICENCE_TYPE_UK,n.constants.INSURANCE_CLAIM_LICENCE_TYPE_OTHER],function(n){return{value:n,label:n}});return new r.Collection(t)}();this.repairerRegionOptions=new r.Collection;this.repairerOptions=new r.Collection;this.initializeRegionRepairers()},validation:i.extend({},n.StepperFormStepView.prototype.validation,{rules:{accDOB:{dateITA:!0,pastDateITA:!0},comDate:{dateITA:!0,dateWithinLast12Months:!0},accLicenceExpiry:{dateITA:!0}}}),beforeRender:function(){this.map=null;this.stopListening(this.model);this.model.set({comPreferredRepairerCityId:null,comPreferredRepairerId:null},{silent:!0})},afterRender:function(){this.stickit();this.listenTo(this.model,"change:accDriver",this.toggleDriverDetailsPanel);this.listenTo(this.model,"change:brItemsStolen",this.toggleStolenItemsPanel);this.listenTo(this.model,"change:accEventPassengers",this.togglePassengersPresentPanel);this.listenTo(this.model,"change:comEventWitnesses",this.toggleWitnessesPresentPanel);this.listenTo(this.model,"change:comEventPoliceAttend",this.toggleNotifiedPolicePanel);this.listenTo(this.model,"change:accDriverLiquor",this.toggleDrugsConsumedPanel);this.listenTo(this.model,"change:accThirdParties",this.toggleOtherDriverPanel);this.listenTo(this.model,"change:accPropertyDamaged",this.togglePropertyDamagePanel);this.listenTo(this.model,"change:comIsNominatedRepairer",this.togglePreferredRepairerPanel);this.listenTo(this.model,"change:comPreferredRepairerCityId",this.changeRepairerRegion);this.listenTo(this.model,"change:comPreferredRepairerId",this.changeRepairer);this.listenTo(this.model,"change:stoAftermarketParts",this.toggleAftermarketPartsPanel);this.passengerRow=this.$(".js-passenger-row").html();this.witnessRow=this.$(".js-witness-row").html();this.aftermarketPartRow=this.$(".js-aftermarket-part-row").html()},toggleDriverDetailsPanel:function(n,t){t==="different"?this.showElement(".js-driver-details"):this.hideElement(".js-driver-details")},toggleStolenItemsPanel:function(n,t){t==="yes"?this.showElement(".js-stolen-items"):this.hideElement(".js-stolen-items")},togglePassengersPresentPanel:function(n,t){t==="yes"?this.showElement(".js-passengers-present"):this.hideElement(".js-passengers-present")},addPassengerRow:function(){t(this.passengerRow).appendTo(".js-passenger-rows")},savePassengersToModel:function(){var i=this.$(".js-passenger-rows .row"),n=[];i.each(function(){var i=t(this),r=i.find("[name=passengerName]").val(),u=i.find("[name=passengerPhoneNumber]").val();n.push({name:r.length?r:null,phoneNumber:u.length?u:null})});this.model.set("passengers",n,{silent:!0})},toggleWitnessesPresentPanel:function(n,t){t==="yes"?this.showElement(".js-witnesses-present"):this.hideElement(".js-witnesses-present")},addWitnessRow:function(){t(this.witnessRow).appendTo(".js-witness-rows")},saveWitnessesToModel:function(){var i=this.$(".js-witness-rows .row"),n=[];i.each(function(){var i=t(this),r=i.find("[name=witnessName]").val(),u=i.find("[name=witnessPhoneNumber]").val();n.push({name:r.length?r:null,phoneNumber:u.length?u:null})});this.model.set("witnesses",n,{silent:!0})},toggleNotifiedPolicePanel:function(n,t){t==="yes"?this.showElement(".js-notified-police"):this.hideElement(".js-notified-police")},toggleDrugsConsumedPanel:function(n,t){t==="yes"?this.showElement(".js-drugs-consumed"):this.hideElement(".js-drugs-consumed")},toggleOtherDriverPanel:function(n,t){t==="yes"?this.showElement(".js-other-driver"):this.hideElement(".js-other-driver")},togglePropertyDamagePanel:function(n,t){t==="yes"?this.showElement(".js-property-damage"):this.hideElement(".js-property-damage")},togglePreferredRepairerPanel:function(n,t){t==="yes"?(this.showElement(".js-preferred-repairer"),this.hideElement(".js-preferred-repairer-other")):(this.hideElement(".js-preferred-repairer"),this.showElement(".js-preferred-repairer-other"))},initializeRegionRepairers:function(){t.ajax({url:"/api/repairer/getrepairerdetails",type:"get",dataType:"json",cache:!1,global:!1,context:this,success:i.bind(function(n){var t=[];i.each(n,function(n){t.push(n)});this.repairerRegionOptions.add(t)},this)})},changeRepairerRegion:function(n,t){var i=this.repairerRegionOptions.find({id:parseFloat(t)}),r=null;this.hideRepairerDetails();i&&(r=i.get("repairers"));this.repairerOptions.reset(r);this.model.set("comPreferredRepairerCity",i?i.get("name"):null)},changeRepairer:function(n,t){var i=this.repairerOptions.find({id:parseFloat(t)});this.hideRepairerDetails();i&&this.showRepairerDetails(i);this.model.set("comPreferredRepairerName",i?i.get("name"):null);this.model.set("comPreferredRepairerAddress",i?i.get("address"):null)},showRepairerDetails:function(t){n.templates.fetch("insurance-claim/repairer",function(i){this.$(".repairer-details").html(i(t.toJSON()));var r=this;n.scripts.getGoogleMaps().then(function(){var n=new google.maps.LatLng(t.get("latitude"),t.get("longitude"));r.map?(r.map.setCenter(n),r.marker.setPosition(n)):(r.map=new google.maps.Map(document.getElementById("repairer-map"),{center:n,zoom:13,scrollwheel:!1}),r.marker=new google.maps.Marker({position:n}),r.marker.setMap(r.map));r.$(".repairer-wrapper").removeClass("hidden")})},this)},hideRepairerDetails:function(){this.$(".repairer-wrapper").addClass("hidden")},toggleAftermarketPartsPanel:function(n,t){t==="yes"?this.showElement(".js-aftermarket-parts"):this.hideElement(".js-aftermarket-parts")},addAftermarketPartRow:function(){t(this.aftermarketPartRow).appendTo(".js-aftermarket-part-rows")},saveAftermarketPartsToModel:function(){var i=this.$(".js-aftermarket-part-rows .row"),n=[];i.each(function(){var i=t(this),r=i.find("[name=aftermarketPartName]").val(),u=i.find("[name=aftermarketPartValue]").val();n.push({name:r.length?r:null,value:u.length?u:null})});this.model.set("stoAftermarketPartItems",n,{silent:!0})},nextStep:function(){this.triggerEvent("step:next");this.triggerEvent("step:render",2)}});n.InsuranceClaimFormReviewDetailsView=n.StepperFormStepView.extend({template:"insurance-claim/review-details",prepareData:function(){return i.extend({},this.model.toJSON(),u.insuranceClaimJson||{})},beforeRender:function(){this.stopListening(this.dispatcher)},afterRender:function(){this.listenTo(this.dispatcher,"error:show",this.showErrorMessage);this.errorMessage=new n.ErrorAlertView;this.$(".js-error-message").append(this.errorMessage.el)},showErrorMessage:function(n){this.errorMessage.hide().setMessage(n).render().show()}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){var e={1:"NZ Full",2:"NZ Restricted",3:"NZ Learner",4:"International",5:"Other"},o={27:"Multiple Vehicle",5:"Promo code"},s={DD:"Monthly Direct Debit",IB:"Internet Banking",CC:"Visa",MC:"Mastercard",CQ:"Cheque"},h={FullCover:"Full insurance cover"},c={UNKNOWN:"Do not know",MORE:"More than one",ONE:"One",NONE:"None"},f={eventCategory:"Insurance Quote Form",eventAction:"Form step activated",formOpenLabel:"Open form",formSubmitLabel:"Submit form",stepVehicleDetailsLabel:"Step 1 - Vehicle details",stepCustomerDetailsLabel:"Step 2 - Customer details",stepYourQuoteLabel:"Step 3 - Your Quote",stepApplicationLabel:"Step 4 - Application",stepReviewLabel:"Step 5 - Review and submit"},l;n.InsuranceQuoteModel=r.Model.extend({defaults:{vehicleRegistration:null,vehicleYear:null,vehicleMake:null,vehicleModel:null,vehicleSubmodel:null,vehicleColour:null,vehicleBodyStyle:null,vehicleEngineSize:null,vehicleFuelType:null,vehicleType:null,businessVehicle:null,businessVehicle2:null,vehicleModified:null,driverSuspension:null,vehicleHeavy:null,vehicleHighPerformance:null,otherFinancialInterest:null,jointInsurance:"no",vehicleNewOrUsed:null,vehicleOvernightLocation:null,toyotaDealershipPurchase:null,mainDriverAge:null,licenceType:null,allRegularDriversLicenced:null,youngestDriverAge:null,numberOfPreviousClaims:null,requiredCoverType:null,insuredSum:null,coverStartDate:null,availableDiscounts:null,paymentType:null,monthlyPremium:null,firstName:null,lastName:null,postalAddress:null,physicalAddress:null,physicalAddressSameAsPostalAddress:"yes",preferredContactMethod:"email",phoneNumber:null,emailAddress:null,dateOfBirth:null,driverLicenceNumber:null,driverLicenceVersion:null,driverLicenceExpiryDate:null,promoCode:null,excessOptions:[],excessOption:null,excessOptionPremium:null,accessories:[],termsAccepted:null,applicationId:null,returnLink:null},setExcessOptions:function(n){this.set("excessOptions",n,{silent:!0})},resetExcessOptions:function(){this.set({excessOptions:this.defaults.excessOptions,excessOption:null,excessOptionPremium:null},{silent:!0})},triggerGAEvent:function(n,t,i){var r=u.dataLayer,f={event:"GAevent",eventCategory:n,eventAction:t,eventLabel:i};r.push(f)}});n.InsuranceQuoteFormMasterView=n.StepperFormMasterView.extend({el:".insurance-quote-form",events:{"click .form-step__save-btn":"saveApplication"},afterInitialize:function(){this.model=new n.InsuranceQuoteModel;this.addStep(new n.InsuranceQuoteFormVehicleDetailsView);this.addStep(new n.InsuranceQuoteFormCustomerDetailsView);this.addStep(new n.InsuranceQuoteFormYourQuoteView);this.addStep(new n.InsuranceQuoteFormApplicationView);this.addStep(new n.InsuranceQuoteFormReviewDetailsView);this.render()},afterRender:function(){this.loadSavedApplication();this.saveOverlayView=new n.ModalOverlayView;this.model.triggerGAEvent(f.eventCategory,f.eventAction,f.formOpenLabel)},submit:function(){var i={pageId:u.insuranceQuotePageId||null,applicationInfo:this.model.toJSON()},r=this.$("#policyCheck").is(":checked"),n;if(r)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}n=this.$(".form-step__submit-btn").prop("disabled",!0);t.ajax({url:"/api/insurance/apply",type:"post",data:JSON.stringify(i),dataType:"json",contentType:"application/json",context:this,success:function(t){if(!t.success)return n.prop("disabled",!1),this.triggerEvent("error:show",t.errorMessage);this.model.triggerGAEvent(f.eventCategory,f.eventAction,f.formSubmitLabel);u.location=t.confirmationPageUrl}})},saveApplication:function(){var i=this.$(".form-step__save-btn").prop("disabled",!0),t=this;this.saveCurrentStep().done(function(r){i.prop("disabled",!1);r&&r.applicationId&&(t.model.set({applicationId:r.applicationId,returnLink:r.confirmationPageUrl},{silent:!0}),n.templates.fetch("insurance-quote/save-application",function(n){t.saveOverlayView.setContent(n(t.model.toJSON())).render().show()}))}).fail(function(){i.prop("disabled",!1)})},saveCurrentStep:function(n){var i={pageId:u.insuranceQuotePageId||null,currentStep:this.current+(n?1:0),applicationInfo:this.model.toJSON()};return t.ajax({url:"/api/insurance/save",type:"post",data:JSON.stringify(i),dataType:"json",contentType:"application/json",cache:!1,global:!1,context:this.steps[this.current]})},resetExcessOptions:function(){if(this.current>1)return!1;this.model.resetExcessOptions()},loadSavedApplication:function(){if(u.insuranceApplicationJson&&insuranceApplicationJson.applicationInfo){this.model.set(insuranceApplicationJson.applicationInfo);this.steps[0].showVehicleDetails();var n=this.model.get("excessOptions");n&&n.length!==0||(insuranceApplicationJson.currentStep=1);insuranceApplicationJson.currentStep!==null&&this.triggerEvent("step:current",insuranceApplicationJson.currentStep,!0);u.applicationRetrieveUrl&&this.model.set("returnLink",u.applicationRetrieveUrl,{silent:!0})}this.listenTo(this.model,"change",this.resetExcessOptions)}});n.InsuranceQuoteFormVehicleDetailsView=n.StepperFormStepView.extend({bindings:{"[name=vehicleRegistration]":{observe:"vehicleRegistration",onSet:function(n){return(n+"").toUpperCase()},onGet:function(){return null}},"[name=vehicleMake]":"vehicleMake","[name=vehicleModel]":"vehicleModel","[name=vehicleYear]":{observe:"vehicleYear",getVal:function(n){return parseFloat(n.val())},onGet:function(n){return n+""}},"[name=vehicleBodyStyle]":"vehicleBodyStyle","[name=vehicleEngineSize]":"vehicleEngineSize","[name=businessVehicle]":"businessVehicle","[name=businessVehicle2]":"businessVehicle2","[name=vehicleModified]":"vehicleModified","[name=driverSuspension]":"driverSuspension","[name=vehicleHeavy]":"vehicleHeavy","[name=vehicleHighPerformance]":"vehicleHighPerformance"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .js-show-vehicle-form":"showVehicleForm","click .js-show-vehicle-search":"showVehicleSearch","click .form-step__reset-btn":"resetVehicle"}),template:"insurance-quote/vehicle-details",afterInitialize:function(){u.recaptchaCallback=i.bind(this.renderRecaptcha,this);this.errorMessage=new n.ErrorAlertView;this.vehicleErrorMessage=new n.ErrorAlertView},beforeRender:function(){this.stopListening(this.model)},afterRender:function(){this.stickit();this.listenTo(this.model,"change:businessVehicle",this.toggleBusinessVehicle2Panel);this.listenTo(this.model,"change:businessVehicle2",this.checkEligibilityStatus);this.listenTo(this.model,"change:vehicleModified",this.checkEligibilityStatus);this.listenTo(this.model,"change:driverSuspension",this.checkEligibilityStatus);this.listenTo(this.model,"change:vehicleHeavy",this.checkEligibilityStatus);this.listenTo(this.model,"change:vehicleHighPerformance",this.checkEligibilityStatus);this.$(".js-vehicle .js-error-message").append(this.errorMessage.el);this.$(".js-vehicle-details .js-error-message").append(this.vehicleErrorMessage.el)},showErrorMessage:function(n){this.errorMessage.setMessage(n).render().show()},hideErrorMessage:function(){this.errorMessage.hide()},showVehicleErrorMessage:function(n){this.vehicleErrorMessage.setMessage(n).render().show()},hideVehicleErrorMessage:function(){this.vehicleErrorMessage.hide()},toggleBusinessVehicle2Panel:function(n,t){t==="yes"?this.showElement(".js-business-vehicle-2"):(this.hideElement(".js-business-vehicle-2"),this.$("[name=businessVehicle2]").prop("checked",!1),this.model.set("businessVehicle2",null),this.showElement(".js-vehicle-modified"));this.checkEligibilityStatus()},checkEligibilityStatus:function(){var n=!0;return i.each(["businessVehicle2","vehicleModified","driverSuspension","vehicleHeavy","vehicleHighPerformance"],function(t){var i=this.model.get(t);i!==null&&i==="yes"&&(n=!1)},this),n?this.hideErrorMessage():this.showErrorMessage("Sorry but your vehicle is not eligible for our insurance."),n},renderRecaptcha:function(){if(!u.grecaptcha||!u.recaptchaSiteKey)return!1;this.recaptchaWidgetId=grecaptcha.render(document.getElementById("recaptcha"),{sitekey:u.recaptchaSiteKey})},resetRecaptcha:function(){grecaptcha.reset(this.recaptchaWidgetId)},searchVehicleRegistration:function(){this.hideErrorMessage();var n=grecaptcha.getResponse(this.recaptchaWidgetId),i=this.model.get("vehicleRegistration"),r=this.$(".js-vehicle .form-step__next-btn").prop("disabled",!0);t.ajax({url:"/api/cardetails",type:"get",data:{regNo:i,rcResponse:n},dataType:"json",cache:!1,global:!1,context:this,success:function(n){if(r.prop("disabled",!1),!n.success)return this.resetRecaptcha(),this.showErrorMessage(n.errorMessage);var t=n.vehicle;this.model.set({vehicleYear:t.year,vehicleMake:t.make,vehicleModel:t.model,vehicleSubmodel:t.submodel,vehicleColour:t.primaryColour,vehicleBodyStyle:t.bodyStyle,vehicleEngineSize:t.ccRating,vehicleFuelType:t.fuelType,vehicleType:t.vehicleType});this.showVehicleDetails()}})},showVehicleSearch:function(n){n&&n.preventDefault();this.hideVehicleForm();this.showElement(".js-vehicle-search")},hideVehicleSearch:function(){this.hideElement(".js-vehicle-search");this.model.set("vehicleRegistration",null)},showVehicleForm:function(n){n&&n.preventDefault();this.hideVehicleSearch();this.showElement(".js-vehicle-form")},hideVehicleForm:function(){this.hideElement(".js-vehicle-form")},showVehicleDetails:function(){this.vehicleFound=!0;this.hideVehicleErrorMessage();n.templates.fetch("insurance-quote/vehicle",function(t){this.hideElement(".js-vehicle");this.$(".vehicle-details").html(t(this.model.toJSON()));this.showElement(".js-vehicle-details");n.helpers.scrollTo(".js-vehicle-details")},this);this.model.triggerGAEvent(f.eventCategory,f.eventAction,f.stepVehicleDetailsLabel)},nextStep:function(){var n,t;if(this.validate()&&this.checkEligibilityStatus()){if(n=grecaptcha.getResponse(this.recaptchaWidgetId),!n&&!this.vehicleFound)return this.showErrorMessage("The captcha is required and can not be unchecked.");if(t=this.model.get("vehicleRegistration"),t&&!this.vehicleFound)return this.searchVehicleRegistration();this.vehicleFound?this.saveCurrentStep():this.showVehicleDetails()}},resetVehicle:function(){this.vehicleFound=!1;this.model.set({vehicleRegistration:null,vehicleYear:null,vehicleMake:null,vehicleModel:null,vehicleSubmodel:null,vehicleColour:null,vehicleBodyStyle:null,vehicleEngineSize:null,vehicleType:null});this.resetRecaptcha();this.hideErrorMessage();this.hideVehicleErrorMessage();this.showElement(".js-vehicle");this.hideElement(".js-vehicle-details")},saveCurrentStep:function(){var n=this.$(".form-step__next-btn").prop("disabled",!0);this.instance.saveCurrentStep(!0).done(function(t){if(n.prop("disabled",!1),t&&!t.success)return this.showVehicleErrorMessage(t.errorMessage);t&&t.applicationId&&this.model.set({applicationId:t.applicationId,returnLink:t.confirmationPageUrl},{silent:!0});this.triggerEvent("step:next");this.model.triggerGAEvent(f.eventCategory,f.eventAction,f.stepCustomerDetailsLabel)}).fail(function(){n.prop("disabled",!1)})}});n.InsuranceQuoteFormCustomerDetailsView=n.StepperFormStepView.extend({bindings:{"[name=vehicleNewOrUsed]":"vehicleNewOrUsed","[name=vehicleOvernightLocation]":{observe:"vehicleOvernightLocation",initialize:n.helpers.addressAutocomplete},"[name=toyotaDealershipPurchase]":"toyotaDealershipPurchase","[name=otherFinancialInterest]":"otherFinancialInterest","[name=mainDriverAge]":{observe:"mainDriverAge",getVal:function(n){return parseFloat(n.val())},onGet:function(n){return n+""}},"[name=youngestDriverAge]":{observe:"youngestDriverAge",getVal:function(n){return parseFloat(n.val())},onGet:function(n){return n+""}},"[name=numberOfPreviousClaims]":"numberOfPreviousClaims","[name=previousInsurer]":"previousInsurer","[name=allRegularDriversLicenced]":"allRegularDriversLicenced","[name=requiredCoverType]":"requiredCoverType","[name=insuredSum]":"insuredSum","[name=coverStartDate]":"coverStartDate","[name=paymentType]":"paymentType","[name=availableDiscounts]":"availableDiscounts","[name=interestedPartyDetails]":"interestedPartyDetails","[name=licenceType]":{observe:"licenceType",selectOptions:{collection:function(){return this.licenceTypeOptions},defaultOption:{label:"Please select",value:null}}},"[name=promoCode]":"promoCode"},template:"insurance-quote/customer-details",afterInitialize:function(){this.licenceTypeOptions=function(){return new r.Collection([{label:"NZ Full",value:"1"},{label:"NZ Restricted",value:"2"},{label:"NZ Learner",value:"3"},{label:"International",value:"4"},{label:"Other",value:"5"}])}();this.errorMessage=new n.ErrorAlertView},validation:i.extend({},n.StepperFormStepView.prototype.validation,{rules:{vehicleOvernightLocation:{postcodeInAddress:!0},coverStartDate:{futureDateITA:!0}}}),afterRender:function(){this.stickit();this.listenTo(this.model,"change:otherFinancialInterest",this.toggleInterestedPartyDetailsPanel);this.listenTo(this.model,"change:availableDiscounts",this.togglePromoCodePanel);this.$(".js-error-message").append(this.errorMessage.el)},showErrorMessage:function(n){this.errorMessage.setMessage(n).render().show()},hideErrorMessage:function(){this.errorMessage.hide()},toggleInterestedPartyDetailsPanel:function(n,t){t==="yes"?this.showElement(".js-interested-party-details"):this.hideElement(".js-interested-party-details")},togglePromoCodePanel:function(n,t){t==5?this.showElement(".js-promo-code"):this.hideElement(".js-promo-code")},nextStep:function(){(this.hideErrorMessage(),this.validate())&&this.saveCurrentStep()},saveCurrentStep:function(){var n=this.$(".form-step__next-btn").prop("disabled",!0);this.instance.saveCurrentStep(!0).done(function(t){if(n.prop("disabled",!1),t&&!t.success)return this.showErrorMessage(t.errorMessage);t&&t.applicationId&&this.model.set({applicationId:t.applicationId,returnLink:t.confirmationPageUrl},{silent:!0});var i=this.model.get("excessOptions");if(!i||i.length===0)return this.getExcessOptions();this.triggerEvent("step:render",2);this.triggerEvent("step:next")}).fail(function(){n.prop("disabled",!1)})},getExcessOptions:function(){var n=this.$(".form-step__next-btn").prop("disabled",!0);t.ajax({url:"/api/insurance/getquote",type:"post",data:JSON.stringify(this.model.toJSON()),dataType:"json",contentType:"application/json",cache:!1,global:!1,context:this}).done(function(t){if(n.prop("disabled",!1),t&&!t.success)return this.showErrorMessage(t.errorMessage);this.model.setExcessOptions(t.options);this.triggerEvent("step:render",2);this.triggerEvent("step:next");this.model.triggerGAEvent(f.eventCategory,f.eventAction,f.stepYourQuoteLabel)}).fail(function(){n.prop("disabled",!1)})}});l=r.View.extend({tagName:"form",className:"insurance-quote-email-form",events:{"click .js-send-email":"sendQuote","keydown [name=returnLink]":"stopChangesToReturnLink"},initialize:function(){this.errorMessage=new n.ErrorAlertView},render:function(){return n.templates.fetch("insurance-quote/email-quote",function(n){this.$el.html(n(this.model.toJSON())).validate();this.$(".js-error-message").html(this.errorMessage.el)},this),this},showErrorMessage:function(n){this.errorMessage.hide().setMessage(n).render().show()},showSuccessMessage:function(){this.$(".js-title").text("Thank you!");this.$(".js-content").html("<p>A copy of the insurance quote options has been sent to the email address provided<\/p>")},sendQuote:function(){if(this.$el.valid()){var n={},r=this.$(".js-send-email").prop("disabled",!0);i.map(this.$el.serializeArray(),function(t){n[t.name]=t.value});t.ajax({url:"/api/insurance/emailquote",type:"post",data:JSON.stringify({pageId:u.insuranceQuotePageId||null,quoteInfo:n,applicationInfo:this.model.toJSON()}),dataType:"json",contentType:"application/json",cache:!1,global:!1,context:this,success:function(n){if(r.prop("disabled",!1),!n.success)return this.showErrorMessage(n.errorMessage);this.showSuccessMessage()}})}},stopChangesToReturnLink:function(){return!1}});n.InsuranceQuoteFormYourQuoteView=n.StepperFormStepView.extend({bindings:{"[name=excessOption]":{observe:"excessOption",onSet:function(n){return parseFloat(n)}},"[name=termsAccepted]":"termsAccepted"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .js-email-quote-btn":"showEmailQuoteOverlay","click .js-print-quote-btn":"printYourQuote"}),template:"insurance-quote/your-quote",className:"form-step form-step--your-quote",afterInitialize:function(){this.overlayView=new n.ModalOverlayView;this.emailQuoteView=new l;this.errorMessage=new n.ErrorAlertView},prepareData:function(){return i.extend({},this.model.toJSON(),u.insuranceQuoteJson||{},{licenceTypeOptions:e,availableDiscountOptions:o,paymentTypeOptions:s,insuranceCoverTypes:h,claimNumberOptions:c})},validation:i.extend({},n.StepperFormStepView.prototype.validation,{errorPlacement:function(n,t){if(t.is("[name=excessOption]"))return t.closest(".js-excess-options").append(n);t.closest(".form-group").append(n)}}),beforeRender:function(){this.stopListening(this.model);var n=this.model.get("excessOptions");this.excessOptionCollection=new r.Collection(n)},afterRender:function(){this.stickit();this.emailQuoteView.model=this.model;this.listenTo(this.model,"change:excessOption",this.setExcessOptionPremium);this.$(".js-error-message").append(this.errorMessage.el)},showErrorMessage:function(n){this.errorMessage.setMessage(n).render().show()},hideErrorMessage:function(){this.errorMessage.hide()},setExcessOptionPremium:function(n,t){var i=new r.Collection(n.get("excessOptions")),u=i.findWhere({excess:t});this.model.set("excessOptionPremium",u.get("premium"))},showEmailQuoteOverlay:function(n){n.preventDefault();this.overlayView.setContent(this.emailQuoteView.render().el).render().show()},printYourQuote:function(n){n.preventDefault();u.print()},nextStep:function(){this.validate()&&this.saveCurrentStep()},saveCurrentStep:function(){var n=this.$(".form-step__next-btn").prop("disabled",!0);this.instance.saveCurrentStep(!0).done(function(t){if(n.prop("disabled",!1),t&&!t.success)return this.showErrorMessage(t.errorMessage);t&&t.applicationId&&this.model.set({applicationId:t.applicationId,returnLink:t.confirmationPageUrl},{silent:!0});this.triggerEvent("step:next");this.model.triggerGAEvent(f.eventCategory,f.eventAction,f.stepApplicationLabel)}).fail(function(){n.prop("disabled",!1)})}});n.InsuranceQuoteFormApplicationView=n.StepperFormStepView.extend({bindings:{"[name=title]":"title","[name=firstName]":"firstName","[name=lastName]":"lastName","[name=dateOfBirth]":"dateOfBirth","[name=driverLicenceExpiryDate]":"driverLicenceExpiryDate","[name=driverLicenceNumber]":"driverLicenceNumber","[name=driverLicenceVersion]":"driverLicenceVersion","[name=postalAddress]":{observe:"postalAddress",initialize:n.helpers.addressAutocomplete},"[name=physicalAddress]":{observe:"physicalAddress",initialize:n.helpers.addressAutocomplete},"[name=physicalAddressSameAsPostalAddress]":"physicalAddressSameAsPostalAddress","[name=preferredContactMethod]":"preferredContactMethod","[name=phoneNumber]":"phoneNumber","[name=emailAddress]":"emailAddress","[name=jointInsurance]":"jointInsurance","[name=jointTitle]":"jointTitle","[name=jointFirstName]":"jointFirstName","[name=jointLastName]":"jointLastName","[name=jointDateOfBirth]":"jointDateOfBirth","[name=jointDriverLicenceExpiryDate]":"jointDriverLicenceExpiryDate","[name=jointDriverLicenceNumber]":"jointDriverLicenceNumber","[name=jointDriverLicenceVersion]":"jointDriverLicenceVersion","[name=vehicleRegistration]":"vehicleRegistration","[name=vehicleEngineSize]":"vehicleEngineSize","[name=vehicleBodyStyle]":"vehicleBodyStyle","[name=vehicleFuelType]":"vehicleFuelType","[name=additionalInformation]":"additionalInformation"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .js-add-accessory":"addAccessoryRow","change .js-accessory-rows input":"saveAccessoriesToModel"}),template:"insurance-quote/application",validation:{rules:{dateOfBirth:{pastDateITA:!0},driverLicenceExpiryDate:{futureDateITA:!0},jointDateOfBirth:{pastDateITA:!0},jointDriverLicenceExpiryDate:{futureDateITA:!0}}},afterInitialize:function(){this.errorMessage=new n.ErrorAlertView},afterRender:function(){this.stickit();this.listenTo(this.model,"change:jointInsurance",this.toggleJointApplicationPanel);this.listenTo(this.model,"change:physicalAddressSameAsPostalAddress",this.togglePhysicalAddressField);this.accessoryRow=this.$(".js-accessory-row").html();this.$(".js-error-message").append(this.errorMessage.el)},showErrorMessage:function(n){this.errorMessage.setMessage(n).render().show()},hideErrorMessage:function(){this.errorMessage.hide()},toggleJointApplicationPanel:function(n,t){t==="yes"?this.showElement(".js-joint-application"):this.hideElement(".js-joint-application")},togglePhysicalAddressField:function(n,t){t==="yes"?this.hideElement(".js-physical-address"):this.showElement(".js-physical-address")},addAccessoryRow:function(){t(this.accessoryRow).appendTo(".js-accessory-rows")},saveAccessoriesToModel:function(){var i=this.$(".js-accessory-rows .row"),n=[];i.each(function(){var i=t(this),r=i.find("[name=accessoryName]").val(),u=i.find("[name=accessoryPrice]").val();n.push({name:r.length?r:null,price:u.length?u:null})});this.model.set("accessories",n,{silent:!0})},nextStep:function(){this.validate()&&this.saveCurrentStep()},saveCurrentStep:function(){var n=this.$(".form-step__next-btn").prop("disabled",!0);this.instance.saveCurrentStep(!0).done(function(t){if(n.prop("disabled",!1),t&&!t.success)return this.showErrorMessage(t.errorMessage);t&&t.applicationId&&this.model.set({applicationId:t.applicationId,returnLink:t.confirmationPageUrl},{silent:!0});this.triggerEvent("step:next");this.triggerEvent("step:render",4);this.model.triggerGAEvent(f.eventCategory,f.eventAction,f.stepReviewLabel)}).fail(function(){n.prop("disabled",!1)})}});n.InsuranceQuoteFormReviewDetailsView=n.StepperFormStepView.extend({template:"insurance-quote/review-details",events:i.extend({},n.StepperFormStepView.prototype.events,{"click .js-print-quote-btn":"printYourQuote"}),prepareData:function(){return i.extend({},this.model.toJSON(),u.insuranceQuoteJson||{},{licenceTypeOptions:e,availableDiscountOptions:o,paymentTypeOptions:s,insuranceCoverTypes:h,claimNumberOptions:c})},afterInitialize:function(){this.errorMessage=new n.ErrorAlertView},beforeRender:function(){this.stopListening(this.dispatcher)},afterRender:function(){this.listenTo(this.dispatcher,"error:show",this.showErrorMessage);this.$(".js-error-message").append(this.errorMessage.el)},showErrorMessage:function(n){this.errorMessage.hide().setMessage(n).render().show()},printYourQuote:function(n){n.preventDefault();u.print()}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r,u){var f=t(".osp-dealer-locator").length>0?t(".osp-dealer-locator")[0].outerHTML:null;n.OnlineServicesModel=r.Model.extend({defaults:{vehicleFound:null,registrationNumber:null,odometerReading:null,driveType:null,vehicleIdentificationNumber:null,make:null,model:null,subModel:null,manufactureYear:null,fuelType:null,isToyotaVehicle:null,colour:null,bodyStyle:null,countryOfOrigin:null,interestedInService:null,interestedInWarranty:null,interestedInWarrantOfFitness:null,selectedServiceOption:null,selectedWarrantOfFitnessOption:null,selectedWarrantyOption:null,promoCode:null,serviceOptions:[],warrantyOptions:[],selectedServiceDiscountDescription:null,selectedServiceDiscountedPrice:null,serviceErrorHeading:null,serviceErrorMessage:null,serviceHasError:null,warrantyHasError:null,warrantyErrorHeading:null,warrantyErrorMessage:null,warrantOfFitnessCost:null,warrantOfFitnessCostDisplay:null,warrantOfWitnessErrorCode:null,warrantOfWitnessErrorMessage:null,warrantOfFitnessHasError:null,firstName:null,lastName:null,phoneNumber:null,email:null,methodOfContact:"phone",preferredDropOffTime:null,preferredPickUpTime:null,preferredDate:null,region:null,selectedDealership:null,message:null,acceptedTerms:null,organisation:null,requireLoanVehicle:!1}});n.OnlineServicesFormMasterView=n.StepperFormMasterView.extend({el:".online-services-form",afterInitialize:function(){this.model=new n.OnlineServicesModel;this.addStep(new n.OnlineServicesFormVehicleDetailsView);this.addStep(new n.OnlineServicesFormSelectBookingView);this.addStep(new n.OnlineServicesFormCustomerDetailsView);this.render();t("#main_content_section").remove()},showErrorMessage:function(n){this.errorMessage.setMessage(n).render().show()},submit:function(){var e=t("[name=dealerId]").val()!=undefined&&t("[name=dealerId]").val()>0,n,i,r,f;if(this.validateCurrentStep()&&e){if(this.model.set("region",t("#selectedRegion").val()),this.model.set("selectedDealership",t("[name=dealerId]").val()),this.model.set("preferredDropOffTime",t("[name=preferredDropOffTime]").val()),this.model.set("preferredPickUpTime",t("[name=preferredPickUpTime]").val()),n={FirstName:this.model.get("firstName"),LastName:this.model.get("lastName"),PhoneNumber:this.model.get("phoneNumber"),Email:this.model.get("email"),PreferredMethodOfContact:this.model.get("methodOfContact"),IsWarrantyRequested:this.model.get("interestedInService")!=null,PreferredDate:this.model.get("preferredDate"),PreferredDropOffTime:this.model.get("preferredDropOffTime"),PreferredPickUpTime:this.model.get("preferredPickUpTime"),Region:this.model.get("region"),SelectedDealership:this.model.get("selectedDealership"),Organisation:this.model.get("organisation"),RequireLoanVehicle:this.model.get("requireLoanVehicle"),Message:this.model.get("message")},t.ajax({url:"/api/onlineserviceproductsstate/bookedvehicle/"+this.model.get("stateKey"),type:"post",data:JSON.stringify(n),contentType:"application/json",dataType:"json",context:this}),i={StateKey:this.model.get("stateKey"),UserDetails:{FirstName:this.model.get("firstName"),LastName:this.model.get("lastName"),PhoneNumber:this.model.get("phoneNumber"),Email:this.model.get("email"),PreferredMethodOfContact:this.model.get("methodOfContact"),PreferredDate:this.model.get("preferredDate"),PreferredDropOffTime:this.model.get("preferredDropOffTime"),PreferredPickUpTime:this.model.get("preferredPickUpTime"),Region:this.model.get("region"),SelectedDealership:this.model.get("selectedDealership"),Message:this.model.get("message"),AcceptedTerms:this.model.get("acceptedTerms"),AcceptedDisclaimer:!0,Organisation:this.model.get("organisation"),RequireLoanVehicle:this.model.get("requireLoanVehicle")?!0:!1,PageID:u.ospPageData.PageId},VehicleDetails:{RegistrationNumber:this.model.get("registrationNumber"),Year:this.model.get("manufactureYear"),Make:this.model.get("make"),Model:this.model.get("model"),OdometerReading:this.model.get("odometerReading"),DriveType:this.model.get("driveType"),FuelType:this.model.get("fuelType"),IsFound:this.model.get("vehicleFound")},SelectedProducts:{SelectedWarrantOfFitness:this.model.get("selectedWarrantOfFitnessOption"),SelectedServiceGroupVariantId:this.model.get("selectedServiceOption"),SelectedServicePromoCode:this.model.get("selectedServiceDiscountedPrice")!=null?this.model.get("promoCode"):"",SelectedWarrantyPricingId:this.model.get("selectedWarrantyOption"),InterestedInWarranty:this.model.get("interestedInWarranty")!=null,InterestedInService:this.model.get("interestedInService")!=null,InterestedInWarrantOfFitness:this.model.get("interestedInWarrantOfFitness")!=null}},r=this.$("#policyCheck").is(":checked"),r)this.$("#tickboxAlert").hide();else{this.$("#tickboxAlert").show();return}f=this.$(".js-customer-details .form-step__submit-btn").prop("disabled",!0);t.ajax({url:"/api/onlineserviceproducts/book",type:"post",data:JSON.stringify(i),contentType:"application/json",dataType:"json",context:this,success:function(n){if(n.hasError)return f.prop("disabled",!1),this.triggerEvent("submit:error",n.errorMessage);u.location=n.result.confirmationLink}})}}});n.OnlineServicesFormVehicleDetailsView=n.StepperFormStepView.extend({id:"osp-form_vehicle-details",bindings:{"[name=registrationNumber]":{observe:"registrationNumber",onSet:function(n){return(n.replace(" ","")+"").toUpperCase()}},"[name=odometerReading]":"odometerReading","[name=driveType]":"driveType","[name=interestedInService]":"interestedInService","[name=interestedInWarranty]":"interestedInWarranty","[name=interestedInWarrantOfFitness]":"interestedInWarrantOfFitness"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .form-step__reset-btn":"resetVehicle","click .form-step__last-btn":"showLastStep"}),template:"online-services/vehicle-details",prepareData:function(){var n=u.ospPageData||{};return n.findVehicle||{}},beforeRender:function(){this.stopListening(this.model)},initialize:function(){u.recaptchaCallback=i.bind(this.renderRecaptcha,this)},afterRender:function(){this.stickit();this.errorMessage=new n.ErrorAlertView;this.$(".js-error-message").append(this.errorMessage.el);this.errorMessageRecaptcha=new n.ErrorAlertView;this.$(".recaptcha-error-message").append(this.errorMessageRecaptcha.el);this.listenTo(this.model,"change:interestedInService",this.checkEligibilityStatus);this.listenTo(this.model,"change:interestedInWarranty",this.checkEligibilityStatus);this.listenTo(this.model,"change:interestedInWarrantOfFitness",this.checkEligibilityStatus)},showErrorMessage:function(n){this.errorMessage.setMessage(n).render().show()},hideErrorMessage:function(){this.errorMessage.hide()},showErrorMessageRecaptcha:function(n){this.errorMessageRecaptcha.setMessage(n).render().show()},hideErrorMessageRecaptcha:function(){this.errorMessageRecaptcha.hide()},renderRecaptcha:function(){if(!u.grecaptcha||!u.recaptchaSiteKey)return!1;this.recaptchaWidgetId=grecaptcha.render(document.getElementById("recaptcha"),{sitekey:u.recaptchaSiteKey})},resetRecaptcha:function(){grecaptcha.reset(this.recaptchaWidgetId)},searchRegistrationNumber:function(){var n,i,r;if(this.hideErrorMessage(),this.hideErrorMessageRecaptcha(),n=grecaptcha.getResponse(this.recaptchaWidgetId),!n)return this.showErrorMessageRecaptcha("The captcha is required and can not be unchecked.");i=this.model.get("registrationNumber");r=this.$(".js-vehicle .form-step__next-btn").prop("disabled",!0);t.ajax({url:"/api/onlineserviceproducts/vehicle",type:"get",data:{registrationNumber:i,recaptchaResponse:n},dataType:"json",cache:!1,global:!1,context:this,complete:function(){r.prop("disabled",!1)},success:function(n){if(n.hasError&&(n.errorCode=="VehicleNotFound"||n.errorCode=="Catastrophic"))this.model.set({registrationNumber:this.model.get("registrationNumber"),make:"undefined",model:"undefiend",subModel:"undefiend",fuelType:"undefined",manufactureYear:-1}),this.resetRecaptcha(),this.showErrorMessage(n.errorMessage),this.showVehicleNotFound(n.errorHeading,n.errorMessage),this.updateBookingState();else{var t=n.result;this.model.set({vehicleIdentificationNumber:t.vehicleIdentificationNumber,registrationNumber:t.registrationNumber,make:t.make,model:t.model,subModel:t.subModel,manufactureYear:t.manufactureYear,fuelType:t.fuelType,isToyotaVehicle:t.isToyotaVehicle,colour:t.colour,countryOfOrigin:t.countryOfOrigin,bodyStyle:t.bodyStyle});this.fetchServiceOptionsAsync();this.showVehicleDetails()}},error:function(){this.resetRecaptcha();this.showErrorMessage("Something went wrong, please try again later.")}})},fetchServiceOptionsAsync:function(){var n=this;return _asyncToGenerator(regeneratorRuntime.mark(function i(){var r;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:r={registrationNumber:n.model.get("registrationNumber"),odometerReading:n.model.get("odometerReading"),driveType:n.model.get("driveType"),service:!0,warranty:!1,wof:!1};t.ajax({url:"/api/onlineserviceproducts/bookingoptions",type:"get",data:r,dataType:"json",cache:!1,global:!1,context:n,success:function(n){if(n&&!n.hasError){var r=n.result,i=r.service,t={};i!==null&&(t.serviceHasError=i.hasError,i.hasError?(t.serviceErrorCode=i.errorCode,t.serviceErrorHeading=i.errorHeading,t.serviceErrorMessage=i.errorMessage,t.selectedServiceDiscountDescription=null,t.selectedServiceDiscountedPrice=null,t.serviceOptions=null):(t.serviceOptions=[],i.result.forEach(function(n){var i={};i.serviceName=n.serviceName;i.serviceType=n.serviceType;i.serviceId=n.serviceId;i.serviceOriginalPrice=n.originalPrice;i.serviceDetails=n.extendedServiceDetails;i.selected=n.selected;t.serviceOptions.push(i);i.selected&&(t.selectedServiceOption=i.serviceId,t.selectedServiceDiscountDescription=i.discountApplied&&i.serviceDiscountDescription||null,t.selectedServiceDiscountedPrice=i.discountApplied&&i.discountedPrice||null)})));this.model.set(t)}}});case 2:case"end":return i.stop()}},i)}))()},showVehicleDetails:function(){this.vehicleFound=!0;this.model.set("vehicleFound",this.vehicleFound);n.templates.fetch("online-services/vehicle",function(t){this.$(".vehicle-details").html(t(this.model.toJSON()));this.hideElement(".js-vehicle");this.showElement(".js-vehicle-details");n.helpers.scrollTo(".js-vehicle-details")},this)},showVehicleNotFound:function(t,r){this.vehicleFound=!1;this.model.set("vehicleFound",this.vehicleFound);n.templates.fetch("online-services/vehicle-not-found",function(u){var f=i.extend({},{errorHeading:t,errorMessage:r});this.$(".vehicle-not-found").html(u(f));this.hideElement(".js-vehicle");this.hideElement(".js-vehicle-details");this.showElement(".vehicle-not-found");this.showElement(".js-vehicle-not-found");n.helpers.scrollTo(".js-vehicle-not-found")},this)},updateBookingState:function(){var n={VehicleIdentificationNumber:this.model.get("vehicleIdentificationNumber"),RegistrationNumber:this.model.get("registrationNumber"),Make:this.model.get("make"),Model:this.model.get("model"),ManufactureYear:this.model.get("manufactureYear"),FuelType:this.model.get("fuelType"),Colour:this.model.get("colour"),CountryOfOrigin:this.model.get("countryOfOrigin"),OdometerReading:this.model.get("odometerReading"),DriveType:this.model.get("driveType")};t.ajax({url:"/api/onlineserviceproductsstate/confirmedvehicle",type:"post",async:!1,data:JSON.stringify(n),dataType:"json",cache:!1,global:!1,context:this,contentType:"application/json; charset=utf-8",success:function(n){this.model.set("stateKey",n)}})},getBookingOptions:function(n){var i=this.model.get("serviceOptions"),r=this.model.get("interestedInService")!==null&&(i===null||i.length===0),u=this.model.get("interestedInWarranty")!==null,f=this.model.get("interestedInWarrantOfFitness")!==null,e={registrationNumber:this.model.get("registrationNumber"),odometerReading:this.model.get("odometerReading"),driveType:this.model.get("driveType"),service:r,warranty:u,wof:f},o=this.$(".js-vehicle-details .form-step__next-btn").prop("disabled",!0);t.ajax({url:"/api/onlineserviceproducts/bookingoptions",type:"get",data:e,dataType:"json",cache:!1,global:!1,context:this,complete:function(){o.prop("disabled",!1)},success:function(t){n.call(this,t)}})},updateBookingOptionsState:function(){var n={SelectedWarrantOfFitness:this.model.get("selectedWarrantOfFitnessOption"),SelectedServiceGroupVariantId:this.model.get("selectedServiceOption"),SelectedWarrantyPricingId:this.model.get("selectedWarrantyOption")};t.ajax({url:"/api/onlineserviceproductsstate/bookingoptions/"+this.model.get("stateKey"),type:"post",data:JSON.stringify(n),contentType:"application/json; charset=utf-8",dataType:"json",cache:!1,global:!1,context:this})},nextStep:function(){var n,t;if(this.validate()){if(this.setupOptions(),n=this.model.get("registrationNumber"),n&&!this.vehicleFound)return this.searchRegistrationNumber();if(this.vehicleFound){if(t=this.model.get("make"),this.updateBookingState(),!this.checkEligibilityStatus())return;this.getBookingOptions(function(n){var e;if(!n||n.hasError)return this.showErrorMessage(n.errorMessage);var f=n.result,i=f.service,r=f.warranty,u=f.warrantOfFitness,t={};r!==null&&(t.warrantyHasError=r.hasError,r.hasError?(t.warrantyErrorCode=r.errorCode,t.warrantyErrorHeading=r.errorHeading,t.warrantyErrorMessage=r.errorMessage,t.warrantyOptions=null):t.warrantyOptions=r.result);e=this.model.get("serviceOptions");(e===null||e.length===0)&&i!==null&&(t.serviceHasError=i.hasError,i.hasError?(t.serviceErrorCode=i.errorCode,t.serviceErrorHeading=i.errorHeading,t.serviceErrorMessage=i.errorMessage,t.selectedServiceDiscountDescription=null,t.selectedServiceDiscountedPrice=null,t.serviceOptions=null):(t.serviceOptions=[],i.result.forEach(function(n){var i={};i.serviceName=n.serviceName;i.serviceType=n.serviceType;i.serviceId=n.serviceId;i.serviceOriginalPrice=n.originalPrice;i.serviceDetails=n.extendedServiceDetails;i.selected=n.selected;t.serviceOptions.push(i);i.selected&&(t.selectedServiceOption=i.serviceId,t.selectedServiceDiscountDescription=i.discountApplied&&i.serviceDiscountDescription||null,t.selectedServiceDiscountedPrice=i.discountApplied&&i.discountedPrice||null)})));u&&(u.hasError?(t.warrantOfWitnessErrorCode=u.errorCode,t.warrantOfWitnessErrorMessage=u.errorMessage,t.warrantOfFitnessHasError=u.hasError):(t.warrantOfFitnessCost=u.result.warrantOfFitnessCost,t.warrantOfFitnessCostDisplay=u.result.warrantOfFitnessCostDisplay));var o=this.model.get("interestedInService")!==null?!0:!1,s=this.model.get("interestedInWarranty")!==null?!0:!1,h=this.model.get("interestedInWarrantOfFitness")!==null?!0:!1;this.model.set(t);this.triggerEvent("step:render",1);this.triggerEvent("step:next")})}else this.showVehicleDetails()}},setupOptions:function(){var n=u.ospPageData.availabilityOptions||{},r=n.serviceAvailable,t,i;r||this.hideElement(".interestedInServiceInput");t=n.warrantyAvailable;t||this.hideElement(".interestedInWarrantyInput");i=n.warrantOfFitnessAvailable;i||this.hideElement(".interestedInWarrantOfFitnessInput")},showLastStep:function(){this.updateBookingOptionsStateForNotFoundVehicle();this.triggerEvent("step:render",1);this.triggerEvent("step:next");this.triggerEvent("step:render",2);this.triggerEvent("step:next")},updateBookingOptionsStateForNotFoundVehicle:function(){t.ajax({url:"/api/onlineserviceproductsstate/bookingoptions/"+this.model.get("stateKey"),type:"post",data:JSON.stringify({SelectedWarrantOfFitness:null,SelectedServiceGroupVariantId:null,SelectedWarrantyPricingId:null}),contentType:"application/json; charset=utf-8",dataType:"json",cache:!1,global:!1,context:this})},checkEligibilityStatus:function(){var n=!1;return i.each(["interestedInService","interestedInWarranty","interestedInWarrantOfFitness"],function(t){var i=this.model.get(t);i!==null&&(n=!0)},this),n?this.hideErrorMessage():this.showErrorMessage(ospPageData.findVehicle.noEligibleOptionsSelected),n},resetVehicle:function(){this.vehicleFound=!1;this.model.set("vehicleFound",this.vehicleFound);this.resetRecaptcha();this.model.clear().set(this.model.defaults);this.showElement(".js-vehicle");this.hideElement(".js-vehicle-details");this.hideErrorMessage();this.hideElement(".js-vehicle-not-found");this.$("[name=driveType]").prop("checked",!1)}});n.OnlineServicesFormSelectBookingView=n.StepperFormStepView.extend({id:"osp-form_select-booking",bindings:{"[name=selectedServiceOption]":{observe:"selectedServiceOption",onSet:function(n){return n?n:null}},"[name=selectedWarrantOfFitnessOption]":"selectedWarrantOfFitnessOption","[name=selectedWarrantyOption]":"selectedWarrantyOption","[name=promoCode]":"promoCode"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .js-promo-code-apply":"checkPromoCode","click .js-service-details":"fadeAndSlide",events:i.extend({},n.StepperFormStepView.prototype.events,{"click .form-step__reset-btn":"resetVehicle","click .form-step__last-btn":"showLastStep"})}),template:"online-services/booking-details",prepareData:function(){var n=u.ospPageData||{};return i.extend({},this.model.toJSON(),n.bookingOptions||{})},beforeRender:function(){this.stopListening(this.model)},afterRender:function(){var r=this.model.get("warrantyOptions"),h=ospPageData.availabilityOptions||{},o,u,f,e,s;this.stickit();this.listenTo(this.model,"change:selectedServiceDiscountedPrice",this.updateDiscountedPrice);this.listenTo(this.model,"change:selectedServiceDiscountDescription",this.updateDiscountedDescription);this.listenTo(this.model,"change:selectedServiceOption",function(){this.selectServiceDetail();this.checkEligibilityStatus()});this.listenTo(this.model,"change:selectedWarrantOfFitnessOption",this.checkEligibilityStatus);this.listenTo(this.model,"change:selectedWarrantyOption",this.checkEligibilityStatus);this.model.get("selectedServiceOption")!=null&&(o="serviceOption"+this.model.get("selectedServiceOption"),this.$("#"+o).prop("checked",!0).trigger("change"));u=this.model.get("interestedInWarrantOfFitness");u?(t("#selectedWarrantOfFitnessOption0").prop("checked",!0),this.model.set({selectedWarrantOfFitnessOption:!0})):this.model.set({selectedWarrantOfFitnessOption:null});r!=null&&r.length>0&&this.model.set({selectedWarrantyOption:r[0].id});f=this.model.get("interestedInWarranty");f||this.model.set({selectedWarrantyOption:null});e=this.model.get("interestedInService");e||this.model.set({selectedServiceOption:null});s=h.showPromoCode;s||(this.hideElement(".js-promo-code-block"),t(".js-service-details").addClass("js-service-details-PaddingZero"),t("hr").hide());var c=this.model.get("warrantyHasError"),l=this.model.get("warrantyErrorCode"),a=this.model.get("serviceHasError"),v=this.model.get("serviceErrorCode"),y=this.model.get("warrantOfFitnessHasError"),i=!1;e&&(i=!0);u&&(i=!0);f&&(i=!0);i||(this.$(".form-step__next-btn").addClass("hidden"),this.$(".form-step__previous-btn").addClass("btn-secondary"));this.errorMessage=new n.ErrorAlertView;this.$(".js-error-message").append(this.errorMessage.el)},selectServiceDetail:function(){var n=this,t=this.model.get("selectedServiceOption");this.model.get("serviceOptions").forEach(function(i){t==i.serviceId?n.$("#serviceDetails"+i.serviceId).show():n.$("#serviceDetails"+i.serviceId).hide()})},showErrorMessage:function(n){this.errorMessage.setMessage(n).render().show()},hideErrorMessage:function(){this.errorMessage.hide()},updateDiscountedDescription:function(n,i){t.trim(i)==""?this.$(".js-discounted-description").text(""):this.$(".js-discounted-description").text(i)},updateDiscountedPrice:function(t,i){var u="#serviceSelector"+this.model.get("selectedServiceOption"),r=this.$(u+" .js-discounted-price");i===0?r.text(""):r.text(n.helpers.formatPrice(i,2))},checkPromoCode:function(){var n={registrationNumber:this.model.get("registrationNumber"),odometerReading:this.model.get("odometerReading"),promoCode:this.model.get("promoCode")},i=this.$("button.js-promo-code-apply").prop("disabled",!0);t.ajax({url:"/api/onlineserviceproducts/serviceoption",type:"get",data:n,dataType:"json",cache:!1,global:!1,context:this,success:function(n){var u=this,t,r;i.prop("disabled",!1);t=n.result.find(function(n){return n.serviceId==u.model.get("selectedServiceOption")});r=t&&t.discountApplied||!1;r?this.applyPromoCode(t):this.incorrectPromoCode()}})},applyPromoCode:function(n){if(n&&!n.hasError){this.model.set({selectedServiceDiscountDescription:n.discountDescription,selectedServiceDiscountedPrice:n.discountedPrice});this.$(".js-promo-code-block").removeClass("has-error").addClass("has-success");this.$(".js-promo-code-invalid").addClass("hidden");this.$(".js-promo-code-valid").removeClass("hidden");this.$(".js-discounted-description").removeClass("hidden");var t="#serviceSelector"+n.serviceId;this.$(t+" .js-discounted-price").removeClass("hidden");this.$(t+" .js-service-price-label").addClass("has-discount")}},incorrectPromoCode:function(){this.model.set({selectedServiceDiscountDescription:null,selectedServiceDiscountedPrice:null});this.$(".js-promo-code-block").removeClass("has-success").addClass("has-error");this.$(".js-promo-code-valid").addClass("hidden");this.$(".js-promo-code-invalid").removeClass("hidden");this.$(".js-discounted-description").addClass("hidden");var n="#serviceSelector"+this.model.get("selectedServiceOption");this.$(n+" .js-discounted-price").addClass("hidden");this.$(n+" .js-service-price-label").removeClass("has-discount")},fadeAndSlide:function(){var n=t(".service-details").is(":visible")?"slideUp":"slideDown";t(".service-details").removeClass("hidden").velocity(n);t(".js-service-details").text(function(n,t){return t==="Hide Service Details"?"Show Service Details":"Hide Service Details"})},checkEligibilityStatus:function(){var n=!1;return i.each(["interestedInService","interestedInWarranty","interestedInWarrantOfFitness"],function(t){var i=this.model.get(t);i!==null&&i!=="false"&&i!=="on"&&(n=!0)},this),this.model.get("vehicleFound")&&!n?this.showErrorMessage("Please select at least one option."):this.hideErrorMessage(),n},updateBookingOptionsState:function(){var n={SelectedWarrantOfFitness:this.model.get("selectedWarrantOfFitnessOption"),SelectedServiceGroupVariantId:this.model.get("selectedServiceOption"),SelectedWarrantyPricingId:this.model.get("selectedWarrantyOption")};t.ajax({url:"/api/onlineserviceproductsstate/bookingoptions/"+this.model.get("stateKey"),type:"post",data:JSON.stringify(n),contentType:"application/json; charset=utf-8",dataType:"json",cache:!1,global:!1,context:this})},nextStep:function(){this.validate()&&this.checkEligibilityStatus()&&(this.updateBookingOptionsState(),this.triggerEvent("step:render",2),this.triggerEvent("step:next"))}});n.OnlineServicesFormCustomerDetailsView=n.StepperFormStepView.extend({id:"osp-form_customer-details",bindings:{"[name=firstName]":"firstName","[name=lastName]":"lastName","[name=methodOfContact]":"methodOfContact","[name=phoneNumber]":"phoneNumber","[name=emailAddress]":"email","[name=preferredDropOffTime]":"preferredDropOffTime","[name=preferredPickUpTime]":"preferredPickUpTime","[name=date]":"preferredDate","[name=region]":"region","[name=dealership]":"selectedDealership","[name=message]":"message","[name=acceptedTerms]":"acceptedTerms","[name=organisation]":"organisation","[name=requireLoanVehicle]":"requireLoanVehicle"},events:i.extend({},n.StepperFormStepView.prototype.events,{"click .form-step__first-btn":"showFirstStep"}),showFirstStep:function(){this.triggerEvent("step:previous");this.triggerEvent("step:previous")},currentDealer:null,template:"online-services/customer-details",prepareData:function(){var n=u.ospPageData||{};return i.extend({},this.model.toJSON(),n.book||{})},validation:i.extend({},n.StepperFormStepView.prototype.validation,{rules:{date:{dateITA:!0,futureDateITA:!0},preferredDropOffTime:{futureTime:"[name=date]"},preferredPickUpTime:{futureTime:"[name=date]",timeIsLaterThan:"[name=preferredDropOffTime]"}}}),showSubmitError:function(n){this.errorMessage.setMessage(n).render().show()},beforeRender:function(){this.stopListening(this.model)},afterRender:function(){var o,e,i,r;this.stickit();o=ospPageData.availabilityOptions||{};this.model.get("vehicleFound")?t(".form-step__first-btn").hide():t(".form-step__previous-btn").hide();t("#InterestedInWarrantyCheckBox").is(":checked")&&t(".preferredDateTimeSelectorSection").hide();e=this;Date.prototype.addDays=function(n){var t=new Date(this.valueOf());return t.setDate(t.getDate()+n),t};i=new Date;r=i.getDay();r==1&&(i=i.addDays(2));r==2&&(i=i.addDays(2));r==3&&(i=i.addDays(2));r==4&&(i=i.addDays(2));r==5&&(i=i.addDays(4));r==6&&(i=i.addDays(3));r==0&&(i=i.addDays(2));t("input[name=date]").each(function(){t(this).datepicker({minDate:i,dateFormat:t(this).attr("placeholder").toLowerCase().replace("yyyy","yy"),beforeShowDay:function(n){var t=n.getDay(),i=!1,r;return u.daysNotOpen!=null&&(r=u.daysNotOpen.find(function(n){return n==t}),r==t&&(i=!0)),[!i,""]},onSelect:function(i){var u,r,f;(e.model.set("preferredDate",i),u=t("#selectedDealership").val(),u)&&(r=i.split("/"),f=new Date(r[2],r[1]-1,r[0]).getDay(),n.dealerService.getDealersIncThirdParty().then(function(n){var r=n.filter(function(n){return n.id===parseInt(u)})[0],i;r&&(i=r.serviceOpeningHoursRaw.filter(function(n){for(var r=[],t=n.fromDay,i=0;i<5;i++){if(r.push(t),t===n.toDay)break;t===6?t=0:t++}return r.includes(f)})[0],i&&(t(".hasTimepicker").data("TimePicker")&&t(".hasTimepicker").each(function(n,i){t(i).val("");t(i).data("TimePicker").destroy()}),i.isClosed||(t("[name=preferredDropOffTime]").empty(),t("[name=preferredPickUpTime]").empty(),t("[name=preferredDropOffTime]").append(new Option("","")),t("[name=preferredPickUpTime]").append(new Option("","")),i.timeSlots.forEach(function(n){t("[name=preferredDropOffTime]").append(new Option(n,n));t("[name=preferredPickUpTime]").append(new Option(n,n))}))))}))}})});t("#dealerBlock").append(f);t(".osp-dealer-locator").show();t(".dealer-selector .js-save").bind("click",{parent:this},function(){t("#selectedDealership").val(t(".dealer-selector [name=dealership]").val()).trigger("change");t("#selectedRegion").val(t(".dealer-selector [name=region]").val());t("input[name=date]").each(function(n,i){t(i).val("")})});t("[name=date]").bind("change",function(){t("[name=preferredPickUpTime]").empty();t("[name=preferredDropOffTime]").empty();t("[name=date]").valid()});t("[name=preferredDropOffTime]").change(function(){t("[name=preferredPickUpTime]").val()!==""&&t("[name=preferredPickUpTime]").valid();t("[name=preferredDropOffTime]").valid()});t("[name=preferredPickUpTime]").change(function(){t("[name=preferredPickUpTime]").valid();t("[name=preferredDropOffTime]").valid()});this.errorMessage=new n.ErrorAlertView;this.$(".js-error-submit-message").append(this.errorMessage.el);this.listenTo(this.dispatcher,"submit:error",this.showSubmitError);this.listenTo(this.dispatcher,"submit",this.validateDealership);t("#selectedDealership").change(function(){if(t("#selectedDealership").val().length>0){t("[name=preferredDropOffTime]").empty();t("[name=preferredPickUpTime]").empty();var i=[],r=t("#selectedDealership").val();n.dealerService.getDealersIncThirdParty().then(function(n){var l=n.filter(function(n){return n.id===parseInt(r)})[0],o,a,e,f,s,h,c;if(l){o=l.serviceOpeningHoursRaw.filter(function(n){return n.isClosed});for(a in o)if(e=o[a],f=void 0,e.fromDay>e.toDay){for(f=e.fromDay;f<=6;)i.push(f),f++;for(f=0;f<=e.toDay;)i.push(f),f++}else for(f=e.fromDay;f<=e.toDay;)i.push(f),f++;u.daysNotOpen=i;s=t("#noDateWarning").text();h=new Option(s,"");h.disabled=!0;c=new Option(s,"");c.disabled=!0;t("[name=preferredDropOffTime]").prepend(h);t("[name=preferredPickUpTime]").prepend(c)}});t("#InterestedInWarrantyCheckBox").is(":checked")||t("#preferredDateTimeSelector").removeClass("hidden")}else t("#preferredDateTimeSelector").addClass("hidden")});t("[name=dealerId]").val()&&t("#selectedDealership").val(t("[name=dealerId]").val()).trigger("change");n.currentDealerId&&!t("#selectedDealership").val()&&(t("#selectedDealership").val(n.currentDealerId).trigger("change"),t("#InterestedInWarrantyCheckBox").is(":checked")||t("#preferredDateTimeSelector").removeClass("hidden"))},validateDealership:function(){t("[name=dealerId]").val()==undefined||t("[name=dealerId]").val()<=0?(t("#main_content_section .find_dealer").css("border-color","red"),t("#main_content_section .dealership_row").after(t(".dealer-missing")),t(".dealer-missing").show()):(t(".dealer-missing").hide(),t("#main_content_section .find_dealer").css("border-color","black"))}})}(window.tnz=window.tnz||{},jQuery,_,Backbone,window),function(n,t,i,r){n.AppView=i.View.extend({el:"body",views:[],initialize:function(){this.addView(new n.GlobalView);this.addView(n.header=new n.HeaderView);t(".contact-page").length>0&&this.addView(new n.ContactPageView);t(".enquiry-form-page").length>0&&this.addView(new n.DealerStaffEnquiryFormView);t("#main_content_section.byo").length>0&&this.addView(new n.BuildYourOwnPageView);t(".finance-calculator-page").length>0&&this.addView(new n.FinanceCalculatorPageView);t(".custom-finance-calculator-page").length>0&&this.addView(new n.CustomFinanceCalculatorPageView);t(".used-car-page").length>0&&(this.addView(new n.UsedCarPageView),this.addView(new n.UsedVehiclePageView));t(".promotions-page").length>0&&this.addView(new n.PromotionsPageView);t(".used-car-page").length>0&&(this.addView(new n.UsedCarPageView),this.addView(new n.UsedVehiclePageView));t(".finance-options-page").length>0&&this.addView(new n.FinanceOptionsPageView);t(".update-insurance-page").length>0&&this.addView(new n.UpdateInsurancePageView);t(".insurance-claim-page").length>0&&this.addView(r.insuranceClaimForm=new n.InsuranceClaimFormMasterView);t(".insurance-quote-page").length>0&&this.addView(r.insuranceQuoteForm=new n.InsuranceQuoteFormMasterView);t(".dealer-location-page").length>0&&this.addView(new n.DealerLocationPage);t(".online-services-page").length>0&&(r.onlineServicesForm=new n.OnlineServicesFormMasterView)},addView:function(n){this.views.push(n)}})}(window.tnz=window.tnz||{},jQuery,Backbone,window),function(n,t,i){t(function(){n.app=new n.AppView;i.History.started||i.history.start()})}(window.tnz=window.tnz||{},jQuery,Backbone,window);String.prototype.endsWith||(String.prototype.endsWith=function(n,t){var i=this.toString(),r;return(typeof t!="number"||!isFinite(t)||Math.floor(t)!==t||t>i.length)&&(t=i.length),t-=n.length,r=i.indexOf(n,t),r!==-1&&r===t})