var ShortlistItemModel=function(n){var t=this,u=function(){var n,r,u,f,e,o,s,h,c;for(t.costLineLeft.removeAll(),t.costLineRight.removeAll(),n=[],r=t.quoteDetails.CostInsurance(),parseFloat(r)>0&&n.push({item:"Insurance",cost:r}),u=t.quoteDetails.CostExtraDrv(),parseFloat(u)>0&&n.push({item:"Additional drivers",cost:u}),f=t.quoteDetails.CostAirportConcession(),parseFloat(f)>0&&n.push({item:"Airport access",cost:f}),e=t.quoteDetails.CostAirportPU(),parseFloat(e)>0&&n.push({item:"Pickup fee",cost:e}),o=t.quoteDetails.CostAirportDO(),parseFloat(o)>0&&n.push({item:"Dropoff fee",cost:o}),s=t.quoteDetails.CostOneWay(),parseFloat(s)>0&&n.push({item:"Oneway fee",cost:s}),h=[],c=t.quoteOptions.AccessoryOptionsWithQty(),i=0;i<c.length;i++)item=c[i],item&&h.push({item:item.Name,cost:item.Charge.toFixed(__grConfig.app.decimalPlaces)});t.costLineLeft(n);t.costLineRight(h)},f=function(){var n=ko.toJS(t.quoteBox),i=t.RentalInfo.ActualRate()||0;t.DisplayFor.PickupDetails=moment(n.PickupDate,__grConfig.app.dateFormat).format("DD MMM YYYY")+" - "+n.PickupTime;t.DisplayFor.DropoffDetails=moment(n.DropoffDate,__grConfig.app.dateFormat).format("DD MMM YYYY")+" - "+n.DropoffTime;t.DisplayFor.DailyRate=i.toFixed(0);t.DisplayFor.Expiry(t.DateExpired()?moment(t.DateExpired()).format("DD MMM YYYY"):"");t.DisplayFor.TotalAccessoryCount=ko.computed(function(){return t.quoteOptions.TotalAccessoryCount()});t.DisplayFor.TotalAccessoryCost=ko.computed(function(){return t.quoteOptions.TotalAccessoryCost()});t.DisplayFor.CostInsurance=ko.computed(function(){return t.quoteDetails.CostInsurance()});t.DisplayFor.TotalPrice=ko.computed(function(){return __grHelpers.formatCurrency(t.quoteDetails.TotalPrice())});t.DisplayFor.BasePrice=ko.computed(function(){return __grHelpers.formatCurrency(t.quoteDetails.BasePrice())});t.DisplayFor.InsuranceText=ko.computed(function(){return t.quoteOptions.SelectedInsuranceText()});t.DisplayFor.DriverAgeText=ko.computed(function(){return t.quoteOptions.SelectedDriverText()});t.DisplayFor.CurrencySign=ko.computed(function(){return t.quoteDetails.CurrencySign()})},r=function(n){return parseInt(n.closest(".vehicle").data("shortlist-index"),10)};t.isReady=!1;t.status=ko.observable(VehicleInfoStatus.getQuote);t.statusHelper={isExpired:ko.computed(function(){return t.status()===VehicleInfoStatus.expired}),isInvalid:ko.computed(function(){return t.status()===VehicleInfoStatus.invalid}),isActive:ko.computed(function(){return t.status()===VehicleInfoStatus.getQuote}),isBooked:ko.computed(function(){return t.status()===VehicleInfoStatus.booked}),isSoldOut:ko.computed(function(){return t.status()===VehicleInfoStatus.soldOut}),isOnRequest:ko.computed(function(){return t.status()===VehicleInfoStatus.onRequest})};t.statusHelper.enquireOnly=ko.computed(function(){return t.statusHelper.isOnRequest()});t.bookable=ko.computed(function(){var n=t.status();return n===VehicleInfoStatus.getQuote||n===VehicleInfoStatus.quoted});t.statusCss=ko.computed(function(){var n="vehicle";return t.statusHelper.isExpired()||t.statusHelper.isInvalid()?n+" expired":t.statusHelper.isBooked()||t.statusHelper.isSoldOut()?n+" sold-out":t.statusHelper.isActive()?n:n+" inactive"});t.statusOverlayText=ko.computed(function(){switch(t.status()){case VehicleInfoStatus.quoted:return"Quoted";case VehicleInfoStatus.booked:return"Booked";case VehicleInfoStatus.onRequest:return"On Request";case VehicleInfoStatus.soldOut:return"Sold Out";case VehicleInfoStatus.expired:return"Expired";case VehicleInfoStatus.invalid:return"No Longer Valid"}});t.quoteBox=ko.observable(__grServerVars.defaultQuoteBox);t.costLineLeft=ko.observableArray([]);t.costLineRight=ko.observableArray([]);t.bulkSelected=ko.observable(!1);t.DisplayFor={PickupDetails:"",DropoffDetails:"",DailyRate:"",Expiry:ko.observable("N/A"),InsuranceText:"",DriverAgeText:"",TotalAccessoryCount:"",TotalAccessoryCost:"",CostInsurance:"",TotalPrice:"",BasePrice:"",CurrencySign:"NZ$"};t.DriverAgeOptions=[];t.postProcessing=function(){var i=ko.toJS(t.QuoteBox);if(t.quoteBox(i),t.carClass=t.QuoteInfo.CarClass(),t.ShortlistId()>0){t.status(t.RentalInfo.Status());var r=ko.toJS(t.RentalInfo.AvailableAccessory),n=ko.toJS(t.RentalInfo.AvailableInsurance),e=t.RentalInfo.ActualRate()||0;t.quoteOptions=new VehiclesDetailQuoteOptionsModel(t,ko.toJS(t.QuoteInfo),!0);t.quoteOptions.updateAccessoryCost(r);t.quoteOptions.updateInsuranceCost(n);t.quoteOptions.buildDriverAgeRadio(n);t.quoteOptions.DriverAge(t.QuoteInfo.DriverAgeGroupId());t.DriverAgeOptions=ko.computed(function(){return t.quoteOptions.DriverAgeOptions()});t.DriverAge=ko.observable(t.quoteOptions.DriverAge());t.DriverAge.subscribe(function(n){t.quoteOptions.DriverAge(n);t.saveAgeGroupCallback&&t.saveAgeGroupCallback(t.DriverAge())});t.quoteDetails=new VehiclesDetailQuoteModel(t);t.quoteDetails.DailyRate(e.toFixed(__grConfig.app.decimalPlaces));t.quoteDetails.AirPortConcessionFee(t.RentalInfo.AirportConcessionFee());t.quoteDetails.AirportSurchargePU(t.RentalInfo.PUFee());t.quoteDetails.AirportSurchargeDO(t.RentalInfo.DOFee());t.quoteDetails.OneWayFee(t.RentalInfo.OneWayFee());t.quoteOptions.ExtraDriver(t.RentalInfo.AdditionalDriverFee());f();u();t.isReady=!0}};t.updateUI=function(t){$(t+" .i").click(function(){var n=$(this).closest(".image, .info").find(".price-expand");return n.toggle(),!1});$(t+" .popup .x").click(function(){return $(this).closest(".popup").hide(),!1});$(t+" .driver .edit").click(function(){var t=$(this);return n.selectedIndex(r(t)),t.hide(),t.closest(".driver").find(".val").hide(),t.closest(".driver").find(".change-age").addClass("show"),!1});n.currencyUpdater.update()};t.processQuote=function(i,u){var f=$(u.target);f.submitStart();t.statusHelper.isExpired()?__grHelpers.services.refreshExpiredShortlist(t.ShortlistId(),function(t){t&&n.replaceShortlistItem(t,r(f));__grHelpers.showMessage.refreshShortlistItem(t);f.submitEnd()}):__grHelpers.services.bookShortlistItems([t.RentalInfo.RentalId()],function(n){var t=$.parseJSON(n.d);t.Success?__grHelpers.redirectTo.yourDetails():(__grHelpers.showMessage.bookShortlistItem(t.Success),f.submitEnd())})};t.remove=function(){$("#confirm-delete").foundation("reveal","open")}},ShortlistBulkActionModel=function(n,t){var i=this;i.selectedAction=ko.observable();i.selectedAction.subscribe(function(n){t.find("select").each(function(){var t=$(this).data("selectBox-selectBoxIt");t&&t.selectOption(n)})});i.applyBulkAction=function(t,r){var e=n.bulkItems(),s=$(r.target),o,u,f;if(e.length===0)__grHelpers.showMessage.shortlistBulkNoSelection();else{o=i.selectedAction();u=[];switch(o){case"DELETE".toLowerCase():f=[];$.each(e,function(n,t){f.push(t.ShortlistId)});__grHelpers.blockUI.block();__grHelpers.services.removeShortlistItems(f,function(t){__grHelpers.showMessage.removeShortlistItems(t.Success);t.Success&&($.each(f,function(t,i){n.availableItems.remove(function(n){return n.ShortlistId()===i})}),__grHelpers.blockUI.unblock())});break;case"BOOK".toLowerCase():$.each(e,function(n,t){t.bookable&&u.push(t.RentalInfo.RentalId)});u.length===0?__grHelpers.showMessage.shortlistBulkNoValid():(__grHelpers.blockUI.block(),__grHelpers.services.bookShortlistItems(u,function(n){var t=$.parseJSON(n.d);t.Success?__grHelpers.redirectTo.yourDetails():(__grHelpers.showMessage.bookShortlistItem(t.Success),__grHelpers.blockUI.unblock())}));break;case"ENQUIRE".toLowerCase():$("#shortlist-quote-enquire").foundation("reveal","open");n.bulkEmail=!0;break;case"EMAIL".toLowerCase():$("#share-quote").show();$("#share").hide();$("#shortlist-quote-email").foundation("reveal","open");n.bulkEmail=!0;break;default:__grHelpers.showMessage.shortlistBulkNoAction()}}}},ShortlistSortingModel=function(n,t){var i=this,r,u;i.sortBy=ko.observable();i.sortDesc=ko.observable(!1);i.sortBy.subscribe(function(n){var u=t.find("select").data("selectBox-selectBoxIt"),r;u&&u.selectOption(n);r=i["sortBy_"+n.toUpperCase()];r&&r()});r=function(){return i.sortDesc()?-1:1};u=function(){return i.sortDesc()?1:-1};i.sortBy_SAVED=function(){i.sortDesc(!0);n.availableItems.sort(function(n,t){return moment(n.DateSaved()).isAfter(moment(t.DateSaved()))?r():u()})};i.sortBy_PRICE=function(){i.sortDesc(!1);n.availableItems.sort(function(n,t){return n.RentalInfo.ActualRate()>=t.RentalInfo.ActualRate()?r():u()})};i.sortBy_YEAR=function(){i.sortDesc(!0);n.availableItems.sort(function(n,t){return n.RentalInfo.AverageYearRange()>=t.RentalInfo.AverageYearRange()?r():u()})};i.sortBy_EXPIRY=function(){i.sortDesc(!1);n.availableItems.sort(function(n,t){return moment(n.DateExpired()||"9999-12-31").isAfter(moment(t.DateExpired()||"9999-12-31"))?r():u()})}},ShortlistCurrencyModel=function(){var n=this;n.currencyBox=new CurrencyBoxModel;n.currentRate=function(){return n.currencyBox.selectedRate()};n.currentSign=function(){return n.currencyBox.selectedSign()};n.currencyBox.onCurrencyChanged=function(){if(n.onChanged)n.onChanged(n.currentRate(),n.currentSign())}},ShortlistModel=function(n,t,i,r,u){var b,v,y;if(!n)return alert("Shortlist container is undefined"),!1;var d=$.parseJSON($(":hidden[id=__GR_ShortlistItemTmpl]").val()),p=0,h=$("#change-accessories"),w=$("#change-insurance"),e=$("#change-itin"),c=function(n,t,i){var o=JSON.parse(n.Result),r,u,e;if(i&&i.length>0)for(r=0;r<i.length;r++)u=f.availableItems()[i[r].ShortlistIndex],u.status(o.Status),e=moment(o.ExpireDate,"DD-MM-YYYY"),u.DateExpired(e.format()),u.DisplayFor.Expiry(e.format("DD MMM YYYY"));t.submitEnd();__grHelpers.showMessage.sendEmail(n.Success);s()},k=function(n){return n.map(function(n){return n.RentalInfo.RentalId})},l=function(n){var t=new ShortlistItemModel(f);return ko.mapping.fromJS(n,{},t),t.postProcessing(),t.saveAgeGroupCallback=function(n){__grHelpers.services.updateShortlistDriverAge(t.ShortlistId(),t.RentalInfo.RentalId(),n,function(n){a(n)})},t.ShortlistId()>0&&t.quoteDetails.updateCurrency(f.currencyProvider.currentRate(),f.currencyProvider.currentSign()),t},a=function(n){if(n){var t=l(n),i=f.selectedIndex();f.availableItems.splice(i,1,t);t.updateUI('.vehicle[data-shortlist-index="'+i+'"]');__grHelpers.showMessage.updateShortlistItem(!0)}else __grHelpers.showMessage.updateShortlistItem(!1)},g=function(){var n,t;for(f.availableItems([]),p=0,n=0;n<f.availableShortlistIds.length;n++)t=l(d),f.availableItems.push(t)},o=function(n,t,i){if(f.selectedIndex(parseInt(t.closest(".vehicle").data("shortlist-index"),10)),i){var r=n.find(".load-on-demand");r.length>0?r.empty():n.empty()}return n.foundation("reveal","open"),!1},s=function(){$(".reveal-modal.open").foundation("reveal","close")},f=this;f.selectedIndex=ko.observable();f.availableItems=ko.observableArray([]);f.availableShortlistIds=$.parseJSON($(":hidden[id=__GR_ShortlistIds]").val());f.isEmpty=ko.computed(function(){return f.availableItems().length===0});f.currencyProvider={};f.bulkActionProvider={};f.sortProvider={};f.bulkEmail=!1;b=new VehiclesDetailEmailEnquireModel("#shortlist-quote-email");b.submit=function(n){var r=$(n.target),t,u,e,i;return r.submitStart(),t={bookingDetails:b.mapToVB()},f.bulkEmail?(u=ko.toJS(f.bulkItems()),t.rentalIds=k(u),__grHelpers.services.bulkEmailQuote(JSON.stringify(t),function(n){c(n,r,u)})):(e=f.selectedIndex(),i=ko.toJS(f.availableItems)[e],i.ShortlistIndex=e,t.rentalId=i.RentalInfo.RentalId,__grHelpers.services.shortlistEmailQuote(JSON.stringify(t),function(n){c(n,r,[i])})),n.preventDefault(),!1};v=new VehiclesDetailEmailEnquireModel("#shortlist-quote-enquire");v.hasMessage(!0);v.submit=function(n){var r=$(n.target),t,u,e,i;return r.submitStart(),t={bookingDetails:v.mapToVB()},f.bulkEmail?(u=ko.toJS(f.bulkItems()),t.rentalIds=k(u),__grHelpers.services.bulkEmailEnquire(JSON.stringify(t),function(n){c(n,r,u)})):(e=f.selectedIndex(),i=ko.toJS(f.availableItems)[e],i.ShortlistIndex=e,t.rentalId=i.RentalInfo.RentalId,__grHelpers.services.shortlistEmailEnquire(JSON.stringify(t),function(n){c(n,r,[i])})),n.preventDefault(),!1};f.changeAccessory=function(n,t){o(h,$(t.target),!0)};f.changeInsurance=function(n,t){o(w,$(t.target),!0)};f.changeItin=function(n,t){o(e,$(t.target),!0)};f.popupEmailQuote=function(n,t){f.bulkEmail=!1;o($("#shortlist-quote-email"),$(t.target),!1)};f.popupEmailEnquire=function(n,t){f.bulkEmail=!1;o($("#shortlist-quote-enquire"),$(t.target),!1)};f.popupConfirmRemoveItem=function(n,t){o($("#confirm-delete"),$(t.target),!1)};f.replaceShortlistItem=function(n,t){var i=l(n);f.availableItems.splice(t,1,i);i.updateUI('.vehicle[data-shortlist-index="'+t+'"]')};f.buildShortlist=function(n){g();$.each(f.availableShortlistIds,function(t,i){__grHelpers.services.getShortlistItem(i,function(i){var r=l(i);f.replaceShortlistItem(i,t);p++;n&&p===f.availableShortlistIds.length&&n()})})};f.removeItem=function(){var n=f.selectedItem(),t=$("#confirm-delete .btn");t.submitStart();__grHelpers.services.removeShortlistItem(n.ShortlistId,n.RentalInfo.RentalId,function(n){__grHelpers.showMessage.removeShortlistItem(n.Success);n.Success&&(f.availableItems.splice(f.selectedIndex(),1),t.submitEnd(),s())})};f.bulkItems=function(){var n=ko.toJS(f.availableItems);return $.grep(n,function(n,t){return n.ShortlistIndex=t,n.bulkSelected===!0})};f.selectedItem=function(){var n=f.availableItems()[f.selectedIndex()];return ko.toJS(n)};$(".gr-driver-age-item.load-on-demand").load("/Templates/DriverAgeOptionsTmpl.html",function(){ko.applyBindings(f,$(n)[0]);$(".reveal-modal").each(function(){$("body").append($(this).detach())})});h.on("opened",function(){var n=f.availableItems()[f.selectedIndex()];h.find(".load-on-demand").load("/Templates/AccessoryOptionsTmpl.html",function(){var t=new VehiclesDetailQuoteOptionsModel(n,ko.toJS(n.QuoteInfo),!0);ko.applyBindings(t,$(this)[0]);t.updateAccessoryCost(ko.toJS(n.RentalInfo.AvailableAccessory));t.buildAccessorySpinner(h);t.saveQuoteInfoCallback=function(){var i=$("#change-accessories .done");i.submitStart();__grHelpers.services.updateShortlistAccessory(n.ShortlistId(),n.RentalInfo.RentalId(),JSON.stringify(t.AccessoryOptionsWithQty()),function(n){a(n);i.submitEnd();s()})}})});w.on("opened",function(){var n=f.availableItems()[f.selectedIndex()];w.find(".load-on-demand").load("/Templates/InsuranceOptionsTmpl.html",function(){var t=new VehiclesDetailQuoteOptionsModel(n,ko.toJS(n.QuoteInfo),!0);ko.applyBindings(t,$(this)[0]);t.updateInsuranceCost(ko.toJS(n.RentalInfo.AvailableInsurance));t.saveQuoteInfoCallback=function(){var i=$("#change-insurance .done");i.submitStart();__grHelpers.services.updateShortlistInsurance(n.ShortlistId(),n.RentalInfo.RentalId(),t.SelectedInsuranceId(),function(n){a(n);i.submitEnd();s()})}})});e.on("opened",function(){var n=f.availableItems()[f.selectedIndex()];e.load("/Templates/StaticQuoteBoxTmpl.html?id="+moment(),function(){var t;$("select.replace").not(".dynamic").selectBoxIt({dynamicPositioning:!1});$(".search-error .x").click(function(){return $(this).parent().hide(),!1});var i=new QuoteBoxModelSetup,r=$.parseJSON($(':hidden[id="__GR_DeliveryList"]').val()),u=ko.toJS(n.QuoteBox);i.Container="#"+e.attr("id");i.ButtonText="Save Changes";i.ButtonDisabledText="Save Changes";i.Responsive=!1;t=new QuoteBoxModel;ko.mapping.fromJS(u,{},t);ko.mapping.fromJS(i,{},t);t.postProcessing();e.find("select#time-picker1").selectBoxIt_set(t.PickupTime());e.find("select#time-picker2").selectBoxIt_set(t.DropoffTime());t.applyToAll=ko.observable(!1);t.getQuote=function(t){var r=ko.validation.group(t)(),i;r.length>0?t.showValidationErrors(QuoteValidationMessages.headers.Invalid,r):(t.clearValidationErrors(),i=t.toCleanJSON(),__grHelpers.services.validateQuote(i,function(r){if(r.Invalid)t.showValidationErrors(QuoteValidationMessages.headers.Invalid,[r.ErrorMessage]);else{var u=$("#change-itin .submit");u.submitStart();t.applyToAll()?__grHelpers.services.updateAllShortlistQuoteBox(__grHelpers.cookie.getVisitor(),i,function(n){__grHelpers.showMessage.updateAllShortlistItemQuoteBox(n.Success,n.Result);n.Success&&(f.buildShortlist(),s());u.submitEnd()}):__grHelpers.services.updateShortlistQuoteBox(n.ShortlistId(),n.RentalInfo.RentalId(),i,function(n){a(n);u.submitEnd();s()})}}))};t.bind(r)})});t.length>0&&(y=new ShortlistCurrencyModel,t.each(function(){ko.applyBindings(y,$(this)[0])}),y.onChanged=function(n,t){var i=f.availableItems();$.each(i,function(i,r){r.quoteDetails.updateCurrency(n,t);f.currencyUpdater.update()})},f.currencyProvider=y,f.currencyUpdater=new CurrencyUpdateModel(f.currencyProvider.currencyBox));f.buildShortlist(function(){var t,n;i.length>0&&(t=new ShortlistBulkActionModel(f,i),i.each(function(){ko.applyBindings(t,$(this)[0])}),f.bulkActionProvider=t);r&&(n=new ShortlistSortingModel(f,r),r.each(function(){ko.applyBindings(n,$(this)[0])}),u?n.sortBy(u):n.sortBy("saved"),f.sortProvider=n);f.currencyUpdater.update()})},modelShortlist;$(function(){modelShortlist=new ShortlistModel($(".shortlist-content"),$(".controls.shortlist .currency-box"),$(".controls.shortlist .bulk-actions"),$(".controls.shortlist .sort"),"saved")})