1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var Clock={minutes:["00","30"],format:function(b,g){return str=1==b.toString().length?"0"+b+":"+g:b+":"+g},drawTime:function(b,g){var e=(!b?"10:00":b).split(":",2),f=e[0],f=parseInt(f,10),e=e[1],a="",d;if(g)for(d=0;24>d;d++)for(var c=0;2>c;c++)b=this.format(d,this.minutes[c]),a=f===d&&e===this.minutes[c]?a+('<option selected="selected" value="'+b+'">'+b+"</option>"):a+('<option value="'+b+'">'+b+"</option>");else{a=0===f&&"00"===e?a+'<option selected="selected" value="00:00">12:00 Midnight</option>': 21a+'<option value="00:00">12:00 Midnight</option>';a=0===f&&"30"===e?a+'<option selected="selected" value="00:30">12:30 AM</option>':a+'<option value="00:30">12:30 AM</option>';for(d=1;12>d;d++)for(c=0;2>c;c++)b=this.format(d,this.minutes[c]),a=f===d&&Number(e)==this.minutes[c]?a+('<option selected="selected" value="'+b+'">'+b+" AM</option>"):a+('<option value="'+b+'">'+b+" AM</option>");for(var a=12===f&&"00"===e?a+'<option selected="selected" value="12:00">12:00 Noon</option>':a+'<option value="12:00">12:00 Noon</option>', 22a=12===f&&"30"===e?a+'<option selected="selected" value="00:30">12:30 PM</option>':a+'<option value="12:30">12:30 PM</option>',h=1;12>h;h++)for(var i=h+12,c=0;2>c;c++)b=this.format(h,this.minutes[c]),d=this.format(i,this.minutes[c]),a=f==i&&e==this.minutes[c]?a+('<option selected="selected" value="'+d+'">'+b+" PM</option>"):a+('<option value="'+d+'">'+b+" PM</option>")}return"<select>"+a+"</select>"}};"function"==typeof define&&define.amd&&define("tools/timelist",[],function(){return Clock}); 23var Calendar=function(a){this.params=_.extend({euro:!1,increment:1,mode:1,expandable:!0},a);this.init()}; 24Calendar.prototype={header:function(a,b){return'<header><span class="prev arrow"><span class="icons-arrow_black_left"></span></span><span class="next arrow"><span class="icons-arrow_black_right"></span></span><h1 data-automation-id = "'+(a+1)+'">'+this.params.monthNames[a]+" "+b+"</h1></header>"},daysHeader:function(){for(var a="<tr>",b=0;b<this.params.headers.length;b++)a+="<th>"+this.params.headers[b]+"</th>";return a+"</tr>"},drawMonth:function(a,b){var c,h=new Date(b,a,1),e=h.getDay(),k=(new Date(b, 25a+1,0)).getDate();(new Date(b,a,0)).getDate();var i=0===this.params.start.val().length?null:this.createDate(this.params.start.val()),g=this.params.end?0===this.params.end.val().length?null:this.createDate(this.params.end.val()):null,j=2===this.params.mode?"dual":"",d='<table class="body" cellpadding="0" cellspacing="0" border="0">'+this.daysHeader();JSON.parse(localStorage.getItem("isWeeklyDayFormatOn"))&&(e=0==e?6:h.getDay()-1);c=0-e;for(var f=0;6>f;f++){for(var d=d+"<tr>",l=0;7>l;l++){c++;var m= 26"",n="";0>=c||c>k?m="empty":n=c;d+='<td class="'+m+'">'+n+"</td>"}d+="</tr>"}d+="</table>";if(this.today.getMonth()===a&&this.today.getFullYear()===b){c=this.today.getDate()+e-1;d=this.highlight(d,c,"today");for(f=c-1;f>=e;f--)d=this.highlight(d,f,"past")}i&&(i.getMonth()===a&&i.getFullYear()===b)&&(c=i.getDate()+e-1,d=this.highlight(d,c,"start"));g&&(g.getMonth()===a&&g.getFullYear()===b)&&(c=g.getDate()+e-1,d=this.highlight(d,c,"end"));i&&g&&(d=$("<div>"+d+"</div>"),c=parseInt(d.find("td.start").text()), 27f=parseInt(d.find("td.end").text()),startIndex=c?c+e-1:e,endIndex=f?f+e-1:k+e,c||f?d.find("td").slice(startIndex,endIndex).addClass("selected"):i.getTime()<h.getTime()&&g.getTime()>h.getTime()&&d.find("td").slice(startIndex,endIndex).addClass("selected"),d=d.html());return'<div class="month '+j+'"><div class="wrapper">'+this.header(a,b)+d+"</div></div>"},highlight:function(a,b,c){a=$("<div>"+a+"</div>");$(a).find("td:eq("+b+")").addClass(c);return a.html()},footer:function(a){return'<footer class="clearfix"><span class="area"><span class="close">
27'+ 28a+'</span><span class="icons-close_sm"></span></span></footer>'},maxDate:function(){var a=new Date(this.today.getTime());a.setFullYear(a.getFullYear()+1);a.setMonth(a.getMonth()+4);a.setDate(0);return a},calendarMonths:function(){if(this.params.content){var a=this.params.content.homePage.calendarContent;return[a.calMonthJan,a.calMonthFeb,a.calMonthMar,a.calMonthApr,a.calMonthMay,a.calMonthJun,a.calMonthJul,a.calMonthAug,a.calMonthSep,a.calMonthOct,a.calMonthNov,a.calMonthDec]}return htz.calendar.monthNames}, 29calendarDays:function(){if(this.params.content){var a=this.params.content.homePage.calendarContent;return[a.calDaySun,a.calDayMon,a.calDayTues,a.calDayWed,a.calDayThur,a.calDayFri,a.calDaySat]}return htz.calendar.dayHeaders},init:function(){var a=this,b=a.params.start,c=a.params.end,h=a.params.startText||null,e=a.params.endText||null,k=function(){};a.params.syncPickupAndDropoff&&(k=a.params.syncPickupAndDropoff);a.params.monthNames=a.calendarMonths();a.params.headers=a.calendarDays();JSON.parse(localStorage.getItem("isWeeklyDayFormatOn"))&& 30(a.params.headers.push(a.params.headers.shift()),a.params.headers);this.params.content?(a.params.returnBeforePickup=a.params.content.homePage.jsErrorContent.invalidDateError,a.params.closeButton=a.params.content.links.closeButton):(a.params.returnBeforePickup=htz.calendar.content.returnBeforePickup,a.params.closeButton=htz.calendar.content.closeText);a.params.mode=a.params.target?1:a.params.mode;a.params.expandable=a.params.target?!1:a.params.expandable;a.calendar=$('<div class="calendar"></div>'); 31if(b&&h)h.on("click",function(){localStorage.removeItem("PICK_UP_DATE");if(a.active)a.close();else{a.today=a.createDate();a.input=b;a.inputText=h.find(".value");a.dropoff=!1;var c=a.maxDate();a.currentDate=a.createDate(b.val());a.currentDate.setDate(1);2===a.params.mode&&(c.getMonth()===a.currentDate.getMonth()&&c.getFullYear()===a.currentDate.getFullYear())&&a.currentDate.setMonth(a.currentDate.getMonth()-1);a.show(this);return!1}});if(c&&e)e.on("click",function(){localStorage.removeItem("DROP_OFF_DATE"); 32if(a.active)a.close();else{a.today=a.createDate();a.input=c;a.inputText=e.find(".value");a.dropoff=!0;var i=a.maxDate();if(0===c.val().length&&0!==b.val().length){var g=a.createDate(b.val()),j=(new Date(g.getFullYear(),g.getMonth()+1,0)).getDate();a.currentDate=a.createDate(b.val());a.params.expandable&&7>j-g.getDate()&&(a.params.mode=2,htz.helpers.SessionHelper.setItem("calendarMode",2))}else 0!==b.val().length?(g=a.createDate(b.val()),j=a.createDate(c.val()),j.setDate(1),j.setMonth(j.getMonth()- 331),a.currentDate=2===a.params.mode&&g.getMonth()===j.getMonth()&&g.getFullYear()===j.getFullYear()?g:a.createDate(c.val())):a.currentDate=a.createDate(c.val());a.currentDate.setDate(1);2===a.params.mode&&(i.getMonth()===a.currentDate.getMonth()&&i.getFullYear()===a.currentDate.getFullYear())&&a.currentDate.setMonth(a.currentDate.getMonth()-1);a.show(this)}});a.calendar.delegate("span.next","click",function(){a.shuffle(1)});a.calendar.delegate("span.prev","click",function(){a.shuffle(-1)});a.calendar.delegate("td", 34"click",function(){if(!$(this).hasClass("empty")&&!$(this).hasClass("past")){var b=a.inputStr(this),c=a.createDate(b),e=a.dropoff?a.createDate(a.params.start.val()):c,d=a.params.end?a.dropoff?c:a.createDate(a.params.end.val()):null;if(a.dropoff&&d.getTime()<e.getTime())$(this).mouseout(),alert(a.params.returnBeforePickup);else{if(a.params.end&&0!==a.params.end.val().length&&e.getTime()>=d.getTime()){var f=a.maxDate(),f=f.getFullYear()===e.getFullYear()&&f.getMonth()===e.getMonth()&&f.getDate()=== 35e.getDate()?0:a.params.increment,c=new Date(c.getTime()+864E5*f),c=a.dateToStr(c);a.params.end.val(c);a.params.end.trigger("change");a.params.endText.find(".value").text(c)}k(b,a.input.selector,f,a);a.input.val(b);a.input.trigger("change");a.inputText.text(b);a.dropoff?localStorage.setItem("DROP_OFF_DATE",b):localStorage.setItem("PICK_UP_DATE",b);a.close()}}});a.calendar.delegate("td","mouseover",function(){!$(this).hasClass("past")&&!$(this).hasClass("empty")&&$(this).addClass("hover")});a.calendar.delegate("td", 36"mouseout",function(){$(this).removeClass("hover")});a.calendar.delegate("footer span","click",function(){a.close()});a.calendar.append(a.footer(a.params.closeButton));this.params.calledWithinOverlay||$("body").find(".calendar").remove();
36a.params.target?(a.calendar.addClass("elastic"),$(a.params.target).wrapInner("<div>"),$(a.params.target).append(a.calendar)):($("body").append(a.calendar),$("body").hasClass("lt-ie7")&&(a.iframe=$('<iframe class="calendar">'),$("body").append(a.iframe)))},close:function(){this.calendar.hide(); 37this.params.target?this.calendar.siblings().show():this.iframe&&this.iframe.hide();this.active=!1},dateToStr:function(a){var b=parseInt(a.getMonth()+1),c=parseInt(a.getDate()),c=10>c?"0"+c:c,b=10>b?"0"+b:b;return this.params.euro?c+"/"+b+"/"+a.getFullYear():b+"/"+c+"/"+a.getFullYear()},inputStr:function(a){var b=$(a).text(),a=$(a).closest(".month").index(),c=new Date(this.currentDate.getTime());c.setMonth(c.getMonth()+a);c.setDate(b);return this.dateToStr(c)},resize:function(){!this.params.target&& 38$("body").hasClass("lt-ie8")&&(1===this.params.mode?this.calendar.width(230):2===this.params.mode&&this.calendar.width(460),this.iframe&&(this.iframe.show(),this.iframe.css({height:this.calendar.outerHeight(),width:this.calendar.outerWidth(),top:this.calendar.position().top,left:this.calendar.position().left})))},show:function(a){var b=this;b.create();b.calendar.show();if(b.params.target)b.calendar.siblings().hide();else{var c=$("#container").width(),h=b.calendar.width(),e=$(a).offset().left;h+e> 39c?b.calendar.css({top:$(a).offset().top+$(a).outerHeight(),right:$(window).width()-e-$(a).outerWidth(),left:""}):b.calendar.css({top:$(a).offset().top+$(a).outerHeight(),left:e,right:""});$(window).height();a=$(window).width();-1==b.calendar[0].className.indexOf("elastic")&&(480>a?(b.calendar.css({right:"0"}),b.calendar.find("div:first").css({width:"51%"}),b.calendar.find("header").css({"margin-right":"-113%"})):b.calendar.find("span.area").css({"margin-top":"0"}));$(window).on("resize",function(){$(window).height(); 40480<$(window).width()&&b.calendar.hide()});b.resize()}b.active=!0},create:function(){var a=this.calendar.find("footer"),b=this.maxDate();this.calendar.find(".month").remove();a.before(this.drawMonth(this.currentDate.getMonth(),this.currentDate.getFullYear()));if(2===this.params.mode){var c=new Date(this.currentDate.getTime());c.setMonth(c.getMonth()+1);a.before(this.drawMonth(c.getMonth(),c.getFullYear()));this.calendar.find("span.next:first").hide();this.calendar.find("span.prev:last").hide();b.setDate(0)}this.currentDate.getMonth()=== 41this.today.getMonth()&&this.currentDate.getFullYear()===this.today.getFullYear()&&this.calendar.find("span.prev").hide();this.currentDate.getMonth()===b.getMonth()&&this.currentDate.getFullYear()===b.getFullYear()&&this.calendar.find("span.next").hide();$("div.calendar table").eq(0).css("padding-right","17px");$(window).height();a=$(window).width();-1==this.calendar[0].className.indexOf("elastic")&&480>a&&(this.calendar.find("div:first").css({width:"51%"}),this.calendar.find("header").css({"margin-right":"-121%"}), 42this.calendar.find("span.area").css({"margin-top":"245px"}))},shuffle:function(a){1===this.params.mode&&this.params.expandable&&(this.params.mode=2,htz.helpers.SessionHelper.setItem("calendarMode",2),a=0<a?a-1:a);this.currentDate.setMonth(this.currentDate.getMonth()+a);this.create();this.resize()},createDate:function(a){if(!a||0===a.length)return a=new Date,new Date(a.getFullYear(),a.getMonth(),a.getDate());a=a.split("/");return newDate=this.params.euro?new Date(a[2],a[1]-1,a[0]):new Date(a[2],a[0]- 431,a[1])}};"function"==typeof define&&define.amd&&define("tools/calendar",[],function(){return Calendar}); 44var WordwheelModel=Backbone.Model.extend({}); 45var WordwheelCollection=Backbone.Collection.extend({model:WordwheelModel,url:(htz.homepage&&htz.homepage.json?htz.homepage.json.data.model.metaData.wordWheelUrl:"undefined"!=typeof htz.wordwheel?htz.wordwheel.url:"")+"?callback=?&dialect="+htz.config.dialect+"&systemId="+htz.config.systemId+"&subSystemId="+htz.config.subSystemId,sync:function(b,c,a){a.timeout=1E4;a.dataType="jsonp";a.cache=!0;a.jsonpCallback="parse";return Backbone.sync(b,c,a)},parse:function(b){$(b.locationList).each(function(c, 46a){a.searchText=b.searchText;a.showMap=b.showMap});return b.locationList}}),WordwheelMultiLocationCollection=Backbone.Collection.extend({model:WordwheelModel,sync:function(b,c,a){a.timeout=1E4;a.dataType="jsonp";a.cache=!0;a.jsonpCallback="parse";return Backbone.sync(b,c,a)},parse:function(b){if(b.data.locations)return $(b.data.locations).each(function(b,a){a.displayText=a.locationName;a.locationTitle="";a.address2=a.streetAddressLine1;a.address3=a.streetAddressLine2;a.stateCode=a.stateProvinceCode; 47a.phone=a.phoneNumber;a.hoursOfOperation=a.hoursOfOperation1;a.preferredOag=a.extendedOAGCode;delete a.locationName;delete a.stateProvinceCode;delete a.streetAddressLine1;delete a.streetAddressLine2;delete a.phoneNumber;delete a.hoursOfOperation1;delete a.extendedOAGCode}),b.data.locations;if(b.data.ftsResults.zipCodeMatches)return $(b.data.ftsResults.zipCodeMatches).each(function(b,a){a.displayText=a.locationName;a.locationTitle="";a.address2=a.streetAddressLine1;a.address3=a.streetAddressLine2; 48a.stateCode=a.stateProvinceCode;a.phone=a.phoneNumber;a.hoursOfOperation=a.hoursOfOperation1;a.preferredOag=a.extendedOAGCode;delete a.locationName;delete a.stateProvinceCode;delete a.streetAddressLine1;delete a.streetAddressLine2;delete a.phoneNumber;delete a.hoursOfOperation1;delete a.extendedOAGCode}),b.data.ftsResults.zipCodeMatches}}); 49var userInputText="",Wordwheel={model:null,init:function(){for(var a=0;a<localStorage.length;a++){var b=localStorage.key(a);if(b.match("^ww-")&&b.match("-"+htz.config.dialect+"$")){var c=JSON.parse(unescape(HStorage.getItem(b)));"86400000"<(new Date).getTime().toString()-c.timestamp&&localStorage.removeItem(b)}}Wordwheel.loadMapQuestAPI()},loadMapQuestAPI:function(){window.L?Wordwheel.mapquestLibLoaded=!0:Wordwheel.mapquestLibLoaded=!1},trigWW:function(a){var b=this,c;b.model=null;b.el=c=$(a.target);
50"undefined"===typeof b.input||null===b.input||b.input.$el.attr("id")!==$(a.target).attr("id")?b.input=new WWInputView({el:c}):b.input.$el=c;$("body").on("click",function(a){0<$(".ww-results").length&&!$.contains($(".ww-results").get(0),a.target)&&(b.wwView.hide(),b.model=null)});38!=a.keyCode&&40!=a.keyCode&&13!=a.keyCode?(a=c.val(),2<a.length?(""==HStorage.getItem("ww-"+c.val()+"-"+htz.config.dialect)||null==HStorage.getItem("ww-"+a+"-"+htz.config.dialect)?(b.fetch(),userInputText=a):(b.ajx&&(b.ajx.abort(), 51delete b.ajx),locList.reset(JSON.parse(unescape(HStorage.getItem("ww-"+a+"-"+htz.config.dialect))).locationList)),"undefined"==typeof b.wwView&&(b.wwView=new WWListView({collection:locList,parent:b})),Wordwheel.getWWResultContainer(c).append(b.wwView.$el)):"undefined"!=typeof b.wwView&&b.wwView.hide()):"undefined"!=typeof b.wwView&&b.wwView.move(a.which)},getWWResultContainer:function(a){return a.parent()},hide:function(){"undefined"!==typeof this.wwView&&(this.wwView.hide(),this.input=null)},fetch:function(){var a= 52this,b=a.input.$el.val();a.ajx&&(a.ajx.abort(),delete a.ajx);a.ajx=locList.fetch({data:{searchText:encodeURIComponent(b)},success:function(c,d){delete a.ajx;d.timestamp=(new Date).getTime().toString();d.locationList&&0<d.locationList.length&&(htz.config.isApp||!htz.config.isCountryinEuropeUnion||htz.config.isCountryinEuropeUnion&&-1!=$.cookie("cookie_pref").indexOf("3"))&&HStorage.setItem("ww-"+b+"-"+htz.config.dialect,escape(JSON.stringify(d)))}},this)}}; 53WWInputView=Backbone.View.extend({initialize:function(){_.bindAll(this,"keydownEv","blurHandler")},events:{keydown:"keydownEv",blur:"blurHandler"},keydownEv:function(a){"9"==a.keyCode&&Wordwheel.hide()},blurHandler:function(){if(Wordwheel.keepFocus)this.$el.focus();else if(!Wordwheel.mouseinside){var a=new WordwheelModel;a.set({locType:Wordwheel.input.$el.attr("id")},{silent:!0});"undefined"!==typeof Wordwheel.selectFunc&&Wordwheel.selectFunc(a)}}}); 54MoreLinkView=Backbone.View.extend({className:"ww-morelink",events:{click:"showMoreInfo"},initialize:function(){this.$el.html('<span class="icons-ft_arrow_right" style="display: block;"></span>')},showMoreInfo:function(a){a.stopPropagation();this.options.model.set({selected:"true"});$(".ww-results .wL").addClass("showDetails");$(".ww-results .ww-moreinfo-container").show();$(".ww-results .ww-moreinfo-container").animate({left:"0px"},"1000",function(){$("html, body").css("scrollTop",$(".ww-results .ww-moreinfo-container").offset().top); 55htz.config.isApp&&($(".ww-results .ww-moreinfo-container").css({"margin-top":"20%","margin-left":"5%",border:"1px solid",height:"80%"}
55),$(".ww-results .wL.showDetails, .ww-results.touch .wL.showDetails").css("height","463px"))})}}); 56MoreInfoView=Backbone.View.extend({className:"ww-moreinfo-container bl",events:{"click .sel-location":"selectloc","click .backlink":"backtoloc","click .ww-gld-ovrly-btn":"showGoldAnytimeOverlay"},initialize:function(a){this.parent=a;this.lightBox=new LightBox;_.bindAll(this,"render","backtoloc","selectloc")},render:function(){var a;this.$el.find(".fts input");var b=this.model.toJSON()||{};this.selLocHtml=Wordwheel.wwView.$el.find(".selected");b.fullHodImage=""!==b.hodImage?"https://images.hertz.com/"+ 57b.hodImage:"https://images.hertz.com/rentacar/misc/refresh09/Hertz-24-7_logo_wordwheel.png";this.tpl=_.template($("#ww-moreinfo-container").html(),b);this.$el.is(":empty")&&this.$el.html(this.tpl);var c=new Date(htz.locationPage?htz.locationPage.pickupDate:window.HomeModel.get("formData").get("pickupDay")),d=new Date(htz.locationPage?htz.locationPage.dropoffDate:window.HomeModel.get("formData").get("dropoffDay")),f=(htz.locationPage?htz.locationPage.pickupTime:window.HomeModel.get("formData").get("pickupTime")).replace(":", 58"-"),h=(htz.locationPage?htz.locationPage.dropOffTime:window.HomeModel.get("formData").get("dropoffTime")).replace(":","-"),c=isNaN(c.getFullYear())?"":c.getFullYear()+"-"+("0"+(c.getMonth()+1)).slice(-2)+"-"+("0"+c.getDate()).slice(-2),d=isNaN(d.getFullYear())?"":d.getFullYear()+"-"+("0"+(d.getMonth()+1)).slice(-2)+"-"+("0"+d.getDate()).slice(-2);this.$el.find(".hod-url").attr("href",(htz.homepage&&htz.homepage.json?htz.homepage.json.data.model.metaData.urlHod:htz.locationPage.hodUrl+"Reservation/Index/")+ 59this.model.get("hodLocId")+"?pickupDate="+c+"&pickupTime="+f+"&dropoffDate="+d+"&dropoffTime="+h+"&linkID=HertzCom");this.$el.show();this.$el.css("left",this.options.parent.$el.find(".wL").width()+1+"px");"3"==this.model.get("categoryCode")?this.parent.parent.$el.hasClass("hide-moreinfo")||this.parent.parent.$el.addClass("hide-moreinfo"):($(this.parent.parent.el).removeClass("hide-moreinfo"),-1===this.model.get("displayText").indexOf("locations)")?(this.$el.find(".ww-moreinfo").empty().html(_.template($("#ww-moreinfo").html(), 60{data:this.model.attributes})),"phone"!=htz.config.deviceGroup&&"iOSPhone"!=htz.config.deviceGroup&&(this.model.get("optHod")?this.$el.addClass("show-hod"):this.$el.removeClass("show-hod"))):(a=Wordwheel.input.$el.attr("id"),"pickup-location"===a?a="pUp":"dropoff-location"===a&&(a="dOff"),this.$el.find(".ww-moreinfo").empty().html(_.template($("#ww-moreinfo-more-loc").html(),{data:b,locType:function(){return a&&""!==a?"&locType="+a:""},getCountryCode:function(){return b.countryCode&&""!==b.countryCode? 61"&isAutoFill=Y&stateCode="+b.stateCode+"&countryCode="+b.countryCode+"&searchType="+b.searchType:""}})),this.$el.removeClass("show-hod")));(0==this.model.get("latitude")||null==this.model.get("latitude")||""==this.model.get("latitude")||0==this.model.get("longitude")||null==this.model.get("longitude")||""==this.model.get("longitude"))&&-1===this.model.get("displayText").indexOf("locations)")?this.$el.addClass("show-disabled-map"):this.$el.removeClass("show-disabled-map");this.delegateEvents()},showGoldAnytimeOverlay:function(a){a.preventDefault(); 62var b=this;require([htz.config.apiDomain+"/rest/content/"+htz.config.systemId+"/"+htz.config.dialect+"/all/reservation/common/gold-anytime-overlay?callback=define","reservation/common/gold-anytime-overlay/core/view/gold-anytime-overlay-view"],function(a,d){b.lightBox.overlay({title:a.reservationGlobals.goldAnytime.gaOverlayTitle,width:"625"},(new d({template:"#gold-anytime-overlay-tpl",content:a})).render().el)})},selectloc:function(){$(this.selLocHtml).trigger("click","mouseSelect");return!1},backtoloc:function(a){a.stopPropagation(); 63$(".ww-results .wL").removeClass("showDetails");$(".ww-results .ww-moreinfo-container").animate({left:$(".ww-results").css("width")},"1000",function(){$("html, body").css("scrollTop",$(".ww-results").offset().top);$(this).hide()})}}); 64var MapView=Backbone.View.extend({el:"#map",initialize:function(a){_.bindAll(this,"getLatLongByLoc");this.model=a;Wordwheel.mapquestLibLoaded&&this.model.get("showMap")?(L.mapquest.key="Gmjtd%7Cluuan107n9%2C75%3Do5-lz8w0",this.map=L.mapquest.map("map",{center:[this.model.get("latitude"),this.model.get("longitude")],layers:L.mapquest.tileLayer("map"),zoom:13}),this.icon=new L.icon({iconsize:[33,34],iconUrl:htz.config.rootContext+"/assets/images/icons/map_marker.png"}),this.map.addLayer(L.marker([this.model.get("latitude"), 65this.model.get("longitude")],{icon:this.icon})),this.mapLoaded=!0):(this.$el.hide(),this.mapLoaded=!1)},getLatLongByLoc:function(){var a=this;$.ajax({url:"//www.mapquestapi.com/geocoding/v1/address",dataType:"jsonp",crossDomain:!0,data:{city:this.model.get("city"),state:this.model.get("stateCode"),postalCode:this.model.get("zip")||"",country:this.model.get("countryCode"),key:decodeURIComponent("Gmjtd%7Cluuan107n9%2C75%3Do5-lz8w0")},success:function(b){a.latitude=b.results[0].locations[0].latLng.lat; 66a.longitude=b.results[0].locations[0].latLng.lng;a.map.setCenter({lat:a.latitude,lng:a.longitude},10)}})}}); 67WWListView=Backbone.View.extend({locItems:[],className:"ww-results hide-moreinfo",events:{mouseenter:"mouseEnterHandler",mouseleave:"mou
67seLeaveHandler",mousedown:"mouseDownHandler",mousemove:"mouseMoveHandler"},mouseDownHandler:function(){Wordwheel.keepFocus=!1},mouseEnterHandler:function(){Wordwheel.mouseinside=!0},mouseLeaveHandler:function(){Wordwheel.mouseinside=!1;Wordwheel.keepFocus=!1},mouseMoveHandler:function(){"undefined"==typeof $._data(this.locItems[0].getLocName().$el[0],"events")&&$(this.locItems).each(function(a, 68b){b.getLocName().delegateEvents();b.getLocName().$el.on("mouseenter",this.highlight).on("mouseleave",this.remHighlight)})},initialize:function(){_.bindAll(this,"render");this.input=this.options.parent.input.$el;Modernizr&&Modernizr.touch&&this.$el.addClass("touch");this.moreInfo=new MoreInfoView({parent:this});0<this.collection.length&&this.render();this.collection.on("reset",this.render)},render:function(){var a=this,b="",c,d='<div class="ww-item"><div class="ww-name"><span class="airplane-space"></span><b>'+ 69htz.wordwheel.noLocationsFound+"</b></div></div>";a.prevCat="";a.prevSearchType;this.moreInfo.$el.css("left",this.$el.find(".wL").width()+1+"px");this.$el.html("");this.moreInfo.$el.hide();this.moreInfo.$el.appendTo(this.$el);this.sltdIndx=0;$(this.collection.models).each(function(a,b){b.set({selected:""})});this.$el.hasClass("hide-moreinfo")||this.$el.addClass("hide-moreinfo");var f=$("<div>").attr("class","wL");if(0<this.collection.length){$(this.collection.models).each(function(h,i){var e=i.get("searchType"), 70g="";if("3"==e||"5"==e||"20"==e)g=htz.wordwheel.airportList;else if("25"==e)g=htz.wordwheel.railList;else if("30"==e||"40"==e||"60"==e||"70"==e)g=htz.wordwheel.cityList;else if("75"==e)g=htz.wordwheel.nearbyLocations+" - "+i.get("nearby");else if("80"==e||"90"==e)g=htz.wordwheel.stateCountryList;c=g;htz.config.isApp&&c===htz.wordwheel.stateCountryList||(b!==c&&""!==c&&("75"===i.get("searchType")&&0===h&&f.append($(d)),f.append('<label class="divider">'+c+"</label>")),b=c,e=new locItem({model:i,input:a.options.parent.$el, 71parent:a}),a.locItems.push(e),f.append(e.el))});this.$el.append(f).show();htz.config.isApp&&($(".km-root .ww-results .wL .ww-item div.ww-morelink").css("display","block"),$(".km-root .ww-results .wL .ww-item div.ww-morelink .icons-ft_arrow_right").attr("style","display: block !important"),$(".km-root .ww-results .wL .ww-item div.ww-morelink .icons-ft_arrow_right").css("transform","scaleX(-1)"));var h=parseInt($(this.options.parent.el).css("padding-bottom"))+parseInt($(this.options.parent.el).css("margin-bottom")); 72this.$el.css("margin-top","-"+h+"px")}else this.$el.hide();return this},move:function(a){var b=this;b.type=a;sltdIndx=-2;$(this.collection.models).each(function(a,b){"true"==b.get("selected")&&(sltdIndx=a)});Wordwheel.mouseinside&&$(b.locItems).each(function(a,b){b.getLocName().undelegateEvents();b.getLocName().$el.off("mouseenter mouseleave")});"40"==a?"undefined"==typeof sltdIndx||sltdIndx==this.collection.length-1?(this.collection.at(this.collection.length-1).set({selected:""}),this.collection.at(0).set({selected:"true"}), 73this.$el.find(".wL").scrollTop("-1")):"-2"==sltdIndx?(this.collection.at(0).set({selected:"true"}),this.$el.find(".wL").scrollTop("-1")):(this.collection.at(sltdIndx).set({selected:""}),this.collection.at(sltdIndx+1).set({selected:"true"}),270<this.$el.find(".selected").position().top?this.$el.find(".wL").scrollTop(this.$el.find(".wL").scrollTop()+this.$el.find(".selected").position().top-270):0>this.$el.position().top&&this.$el.find(".wL").scrollTop(this.$el.find(".wL").scrollTop()+this.$el.find(".selected").position().top- 744)):"38"==a?"undefined"==typeof sltdIndx||0==sltdIndx?(this.collection.at(0).set({selected:""}),this.collection.at(this.collection.length-1).set({selected:"true"}),this.$el.find(".wL").scrollTop(this.$el.find(".wL").attr("scrollHeight"))):"-2"==sltdIndx?(this.collection.at(this.collection.length-1).set({selected:"true"}),this.$el.find(".wL").scrollTop(this.$el.find(".wL").attr("scrollHeight"))):(this.collection.at(sltdIndx).set({selected:""}),this.collection.at(sltdIndx-1).set({selected:"true"}), 75270<this.$el.find(".selected").position().top?this.$el.find(".wL").scrollTop(this.$el.find(".wL").scrollTop()+this.$el.find(".selected").position().top-270):0>this.$el.find(".selected").position().top&&this.$el.find(".wL").scrollTop(this.$el.find(".wL").scrollTop()+this.$el.find(".selected").position().top-4)):"13"==a&&(a=this.$el.find(".selected"),a.length&&a.trigger("click"),(a=$(this.input).val())&&2<a.length&&setTimeout(function(){$.publish("location.search",$(b.input).val())},10),this.hide())}, 76hide:function(){this.$el.hide()}});locItem=Backbone.View.extend({className:"ww-item",initialize:function(){this.render()},render:function(){this.locNameEl=new LocName({model:this.options.model,input:this.options.input,parent:this.options.parent});this.$el.append(this.locNameEl.render().el);""!=this.model.get("preferredOag")&&this.$el.append((new MoreLinkView({model:this.options.model,parent:this.options.parent})).el);return this.$el}
76,getLocName:function(){return this.locNameEl}}); 77LocName=Backbone.View.extend({className:"ww-name",initialize:function(){this.input=this.options.input;this.parent=this.options.parent;_.bindAll(this,"render","highlight","remHighlight");this.model.on("change:selected",this.render);Modernizr&&!Modernizr.touch&&(this.$el.on("mouseenter",this.highlight),this.$el.on("mouseleave",this.remHighlight))},events:{click:"select"},render:function(){var a,b=this.model.get("searchType");"true"===this.model.get("selected")?(this.$el.addClass("selected"),this.parent.moreInfo.model= 78this.model,this.parent.moreInfo.render()):(delete this.parent.moreInfo.model,this.$el.removeClass("selected"));this.$el.empty();a=$("<span/>").attr("class","airplane-space");"25"==b?a.addClass("icons-rail_icon"):"3"==b||"5"==b||"20"==b?a.addClass("icons-airplane_icon"):("30"==b||"40"==b||"60"==b||"70"==b)&&a.addClass("icons-city-icon");"1"==this.options.model.get("categoryCode")&&("25"==this.options.model.get("searchType")?a.addClass("icons-rail_icon"):a.addClass("icons-airplane_icon"));this.$el.append(a); 79this.$el.append(this.formattedDisplay());return this},formattedDisplay:function(){return"-1"!=this.model.get("displayText").toLowerCase().indexOf($(Wordwheel.el).val().toLowerCase())?(this.srchText=this.model.get("displayText").substr(this.model.get("displayText").toLowerCase().indexOf($(Wordwheel.el).val().toLowerCase()),$(Wordwheel.el).val().length),this.model.get("displayText").replace(RegExp(this.srchText,"g"),"<b>"+this.srchText+"</b>").replace("(","<span>(").replace(")",")</span>")):this.model.get("displayText").replace("(", 80"<span>(").replace(")",")</span>")},highlight:function(){this.model.set({selected:"true"})},remHighlight:function(){$(this.parent.collection.models).each(function(a,b){b.set({selected:""})})},select:function(a,b){a.preventDefault();this.parent.hide();this.model.get("locationTitle")?Wordwheel.input.$el.val(this.model.get("locationTitle")):Wordwheel.input.$el.val(this.model.get("displayText"));this.model.set({locType:Wordwheel.input.$el.attr("id")},{silent:!0});Wordwheel.model=this.model;"undefined"!== 81typeof Wordwheel.selectFunc&&Wordwheel.selectFunc(this.model);try{"undefined"!=typeof _gaq&&_gaq.push(["_trackEvent","WordWheel","UserSelectedLocation",userInputText+" -> "+Wordwheel.input.$el.val()])}catch(c){}"keySelect"===b&&(Wordwheel.mouseinside=!0,Wordwheel.input.$el.trigger("blur"))}}); 82if(htz.config.isApp){Wordwheel.loadMapQuestAPI=$.noop;Wordwheel.getWWResultContainer=function(a){return a.closest("#kendo-ww").find(".ww-result-container")};var orginalRender=WWListView.prototype.render;WWListView.prototype.render=function(){return orginalRender.apply(this,arguments)};MoreLinkView.prototype.initialize=function(){this.$el.html('<span class="icons-ft_arrow_right" style="display: block;"></span>').addClass("km-listview-link")};MapView.prototype.initialize=function(){this.mapLoaded=!1}; 83LocName=LocName.extend({events:{click:"decideAction"},decideAction:function(a){$(".ww-results").appendTo($(".ww-result-container"));1<this.model.get("locationCount")?(a.stopPropagation(),this.showMultiLocation()):this.select(a)},showMultiLocation:function(){if("33"==this.model.get("searchType"))var a=htz.config.apiDomain+"/rest/location/search/"+this.model.get("searchText")+"/latitude/0/longitude/0?zip="+this.model.get("zip")+"&requestPos="+htz.config.pos;else var a=htz.config.apiDomain+"/rest/location{countryUrlPart}{stateUrlPart}{cityUrlPart}?dialect={dialect}", 84b=$.trim(this.model.get("countryCode")),c=$.trim(this.model.get("stateCode")),d=$.trim(this.model.get("city")),a=a.replace("{countryUrlPart}",b?"/country/"+b:"").replace("{stateUrlPart}",c?"/state/"+c:"").replace("{cityUrlPart}",d?"/city/"+d:"").replace("{dialect}",htz.config.dialect);this.prepareWWList();this.fetchMultiLocList(a)},prepareWWList:function(){$(".ww-item").empty();$(".wL label").empty();$("#kendo-ww").data("kendoMobileModalView").scroller.scrollTo(0,0);kendo.fx($(".ww-results")).slideIn("down").duration(1E3).play(); 85$(".spinner").remove();$("body").append('<div class="spinner">Loading...</div>')},fetchMultiLocList:function(a){var b=this;multiLocList.fetch({url:a,success:function(a,d){d.timestamp=(new Date).getTime().toString();a&&a.models&&(b.parent.collection.models=a.models,b.parent.render());$(".spinner").remove()}})},select:function(a,b){a.preventDefault();this.parent.hide();this.model.get("locationTitle")?Wordwheel.input.$el.val(this.model.get("locationTitle")):Wordwheel.input.$el.val(this.model.get("displayText")); 86this.model.set({locType:Wordwheel.input.$el.attr("id")},{silent:!0});Wordwheel.model=this.model;"undefined"!==typeof Wordwheel.selectFunc&&Wordwheel.selectFunc(this.model);
86try{"undefined"!=typeof _gaq&&_gaq.push(["_trackEvent","WordWheel","UserSelectedLocation",userInputText+" -> "+Wordwheel.input.$el.val()])}catch(c){}"keySelect"===b&&(Wordwheel.mouseinside=!0,Wordwheel.input.$el.trigger("blur"));Wordwheel.input.$el.trigger("change");var d=$(".km-root #kendo-ww").data("kendoMobileModalView");void 0!= 87d&&d.close();$(".ww-results").appendTo($(".ww-result-container"))}});var isWWInputChanged=function(){var a=$(".ww-input:visible").attr("name");return 0<$("input[name="+a+"]").length&&$("input[name="+a+"]")[0].value!==$("input[name="+a+"]")[1].value?!0:!1},originalBlurHandler=WWInputView.prototype.blurHandler;WWInputView.prototype.blurHandler=function(){!Wordwheel.keepFocus&&isWWInputChanged()&&originalBlurHandler.apply(this,arguments)}} 88var multiLocList=new WordwheelMultiLocationCollection,locList=new WordwheelCollection;$(document).ready(Wordwheel.init); 89var appCore=htz.config.isApp?"app":"core";addDependencies("reservation/itinerary/core/view/itinerary-view","jquery underscore json framework/view/abstract-view config/app-config utils/sessionhelper utils/utils utils/utils-proxy reservation/itinerary/core/view/itinerary-form-view reservation/process-info/core/model/process-model reservation/config reservation/process-config/core/reservation-constants reservation/itinerary/core/view/threeDS-view".split(" ")); 90addDependencies("reservation/itinerary/core/view/itinerary-form-view","jquery underscore backbone utils/utils utils/utils-proxy framework/view/abstract-view config/app-config utils/sessionhelper reservation/itinerary/core/view/itinerary-ta-country-view reservation/itinerary/core/view/itinerary-location-view reservation/itinerary/core/view/itinerary-date-time-view reservation/itinerary/core/view/itinerary-age-view reservation/itinerary/core/view/itinerary-arrival-info-view reservation/itinerary/core/view/itinerary-redeem-view reservation/itinerary/core/view/itinerary-vehicle-type-view reservation/itinerary/core/view/itinerary-ta-member-view reservation/itinerary/core/view/itinerary-discounts-view reservation/itinerary/core/view/location-closed-overlay-view reservation/itinerary/core/view/helper/view-helper reservation/process-info/core/model/process-model reservation/reservation-info/core/model/reservation-info-model reservation/common/retry/core/view/retry-view reservation/process-config/core/reservation-constants reservation/utils/core/reservation-utils reservation/itinerary/core/model/affiliate-member-ID-verification-model reservation/itinerary/core/view/affiliate-member-verification-popup-view reservation/itinerary/core/view/itinerary-residency-view utils/gtm-tracker helpers/resource-loader utils/domhelper reservation/itinerary/core/view/email-signup-view".split(" ")); 91addDependencies("reservation/itinerary/core/presenter/itinerary-presenter",["jquery","utils/sessionhelper","json","utils/domhelper","config/utilconfig","utils/utils","config/app-config","reservation/itinerary/core/model/itinerary-model","reservation/itinerary/"+appCore+"/view/itinerary-view","reservation/itinerary/core/view/helper/view-helper","reservation/process-info/core/model/process-model","reservation/config","utils/utils-proxy","reservation/process-config/core/reservation-constants"]); 92define("reservation/process-monitor/core/monitor","jquery config/app-info config/app-config utils/tracker utils/utils-proxy reservation/process-info/core/model/process-model utils/utils reservation/process-config/core/reservation-constants reservation/utils/core/reservation-utils reservation/utils/core/test-and-target".split(" "),function(e,j,k,l,h,f,m,d,i,n){var g={monitorStep:function(a){var c=a.page,b=a.step;b&&this.handleTestTarget(b,a.isModify);c&&this.updatePage(c);b&&this.updateProcessFlow(b); 93c&&(this.handleNav(c),this.handleEstara(b),this.handleHomepageBackgroun
93d(b),this.handleSeo(c));c&&b&&l.track({process:"res",step:b,targetPage:c});b&&(htz.res.utils.ResourceLazyLoader.trigger(b,0,a.content),htz.res.utils.ResourceMonitor.trigger(b,1500),htz.res.utils.DOMMonitor.monitor(b));i.rqrOverlay();i.checkForReferrerUrl()},prepare:function(a){f.checkAndStartProcess();a&&f.setModify(!!a.isModify);if((a=h.getAciveLightboxes())&&0<a.length)for(var c=null,b=0;b<a.length;b++)c=a[b],null!=c&&c.closeOverlay&& 94c.closeOverlay();window.scrollTo(0,0)},prepareNavigate:function(){h.getSpinner().stop()},updatePage:function(a){a&&(k.config.legacyPage=a)},getItin:function(){var a=htz.helpers.SessionHelper.getItem(d.ITINERARY_INFO_DATA),c={};try{if(a){var a=JSON.parse(a),b,e,f=a.pickupDateStandard?new Date(a.pickupDateStandard):"",g=f.toLocaleString([],{month:"short"}),i=f.getDate();b=g+" "+i;var h=a.dropoffDateStandard?new Date(a.dropoffDateStandard):"",j=h.toLocaleString([],{month:"short"}),k=h.getDate();e=j+ 95" "+k;var l=12<=a.dropoffTimeValue.split(":")[0]?(12==parseInt(a.dropoffTimeValue.split(":")[0])?"12":parseInt(a.dropoffTimeValue.split(":")[0])-12)+":"+a.dropoffTimeValue.split(":")[1]+" PM":"00"==a.dropoffTimeValue.split(":")[0]?"12:"+a.dropoffTimeValue.split(":")[1]+" AM":a.dropoffTimeValue+" AM",m=12<=a.pickupTimeValue.split(":")[0]?(12==parseInt(a.pickupTimeValue.split(":")[0])?"12":parseInt(a.pickupTimeValue.split(":")[0])-12)+":"+a.pickupTimeValue.split(":")[1]+" PM":"00"==a.pickupTimeValue.split(":")[0]? 96"12:"+a.pickupTimeValue.split(":")[1]+" AM":a.pickupTimeValue+" AM";c.dropoffDay=e+", "+l;c.pickupDay=b+", "+m;c.pickupLocation=a.pickupLocation.name;c.dropoffLocation=a.dropoffLocation?a.dropoffLocation.name:""}}catch(n){}return c},handleNav:function(a){if(a){var c=["whatView.jsp","extrasView.jsp","bookableQuoteView.jsp"],b=j.getHeader();b&&(a===d.LEGACY_ITINERARY?(b.showPosFeature(),b.showMemberFeature(),b.showSearchMini(),b.hideItinerary()):(b.hidePosFeature(),"whatView.jsp"===a||"extrasView.jsp"=== 97a||"bookableQuoteView.jsp"===a?b.showRentalQualificationLink():b.hideRentalQualification(),a===d.LEGACY_VEHICLES||a===d.LEGACY_EXTRAS||a===d.LEGACY_REVIEW_AND_BOOK?(b.hideMemberFeature(),b.showItinerary(this.getItin())):b.showMemberFeature(),b.showSearchFull()),"whatView.jsp"!=a&&("extrasView.jsp"!=a&&"bookableQuoteView.jsp"!=a)&&b.hideRentalQualification(),c.includes(a)?(b.hideMenu(),b.hidePosFeature()):1248<=e(document).width()?(b.showMenu(),b.showDesktopPos()):b.mobileLoginMenu())}},handleTestTarget:function(a, 98c){n.handleTestTarget(a,c)},handleEstara:function(a){a&&a!==d.REVIEW_AND_BOOK&&"undefined"!=typeof wv_vars&&htz.utils.Global.removeEstara()}
98,handleHomepageBackground:function(a){a&&(a===d.ITINERARY?e("#container").addClass("animated-background"):e("#container").removeClass("animated-background"))},trackError:function(a){if(WebTracking){var c=f.getStep();WebTracking.setError("debug-runtime-error-"+c+"-"+a+"-"+m.browserDeviceType(),c)}},handleSeo:function(a){a&&a!==d.LEGACY_ITINERARY&&e("#footer-container #seo-content").empty().hide()}, 99updateProcessFlow:function(a){f.addToFlow(a)}};e.subscribe(d.RENDER_PREPARE_PRESENTER,function(a,c){g.prepare(c)});e.subscribe(d.NAVIGATE_PREPARE_PRESENTER,function(){g.prepareNavigate()});e.subscribe(d.RENDER_DONE_PRESENTER,function(a,c){g.monitorStep(c)});e.subscribe(d.HANDLE_RENDER_FAIL,function(a,c){i.handleRenderFail(c)});return g});require(["reservation/process-monitor/core/monitor"],function(){}); 100define("reservation/itinerary/core/model/itinerary-model","backbone json utils/restmodel utils/utils reservation/itinerary/core/model/itinerary-form-model utils/sessionhelper config/app-config".split(" "),function(f,i,h,j,g,k,e){return h.extend({initialize:function(){this.constructor.__super__.initialize.apply(this,arguments);var c=this.get("formData"),d=this.get("metaData"),b,a;c&&(b=new g(c),this.set("formData",b));d&&(a=new f.Model(d),this.set("metaData",a));b&&a&&(a.set({blockAds:e.config.isApp}, 101{silent:!0}),b.metaData=a,this.prepareCarType())},prepareCarType:function(){var c=this.get("metaData"),d=this.get("formData"),b=c.get("nvpVehicleGroupSipps");if(b&&0<b.length)for(var a=0;a<b.length;a++)if(b[a].value===d.get("selectedCarType")){c.set({selectedCarLabel:b[a].name},{silent:!0});break}},parseModel:function(c){var d=c.formData,c=c.metaData,b,a;d&&(b=new g(d),this.set("formData",b));c&&(a=new f.Model(c),this.set("metaData",a));b&&a&&(a.set({blockAds:e.config.isApp},{silent:!0}),b.metaData= 102a,this.prepareCarType())},url:e.config.rootContext+"/rest/hertz/v2/reservations/itinerary"})}); 103define("reservation/itinerary/core/view/itinerary-view",getDependencies("reservation/itinerary/core/view/itinerary-view"),function(b,g,l,h,m,n,o,i,f,p,q,j,k){return h.extend({events:{"click .gaq-rmc-tabs":"toggleTabs","click .back-button":"showStepOne"},initialize:function(){this.preInitialize();this.content=this.options.content;this.template=b("#home-page-tpl").html();this.viewHelper=this.options.viewHelper;this.isRMCExists=!1;this.isSearch=this.options.isSearch;this.prepareModel();this.postInitialize()}, 104loadBanners:function(){var a=this.formData.get("maskedDiscountCode");try{a&&(""!==a&&localStorage.getItem("htzDVal")!==a)&&localStorage.setItem("htzDVal",a)}catch(b){}this.viewHelper.loadMisc(this.metaData.get("blockAds"),this.metaData.get("enableRightBannerAds"),this.metaData.get("enablePickupDropdown"))},bindWindowEvents:function(){b(window).bind("resize.setFooterPadding",this.viewHelper.setFooterPadding);b(window).bind("orientationchange.setFooterPadding",this.viewHelper.setFooterPadding);var a= 105b(".new-header").height();b(window).scroll(function(){b(this).scrollTop()>a?b("#new-resWidget-containerInner").addClass("sticky"):b("#new-resWidget-containerInner").removeClass("sticky")})},prepareModel:function(){this.metaData=this.model.get("metaData");this.formData=this.model.get("formData")},openWindow:function(a,b,d){return window.open(a,b,d)},toggleTabs:function(a){var a=b(a.target),c=b(".res-form");a.parent().hasClass("selected")||(c.find("td").each(function(){b(this).toggleClass("selected")}), 106htz.config.isApp&&c.find(".section").each(function(){b(this).toggleClass("hidden")}),this.$("#error-list").children().length&&this.$("#error-list").toggle(),"rmc-tab"===a.parent().attr("id")&&this.renderLookup())},showTab:function(a){var c=b(".res-form");b("#"+a).hasClass("selected")||(c.find("td").each(function(){b(this).toggleClass("selected")}),c.find(".section").each(function(){b(this).toggleClass("hidden")}),b("#error-list").children().length&&b("#error-list").toggle(),"rmc-tab"===a&&this.renderLookup())}, 107renderForm:function(){this.bindWindowEvents();this.formView&&this.formView.undelegateEvents();this.formView=htz.config.isApp?new f({el:"#gaq-section",template:"#res-itinerary-tpl",content:this.content,model:this.model,referrer:this.$el,isResWidget:!1,hertzGoldPlusImage:htz.localLoyaltyLogo.hertzGoldPlusImage,isResFlowEdit:!1,isSearch:this.isSearch,isNewHomepage:!0}):new f({el:"#new-widget",template:"#res-homepage-itinerary-tpl",content:this.content,model:this.model,referrer:this.$el,isResWidget:!1, 108hertzGoldPlusImage:htz.localLoyaltyLogo.hertzGoldPlusImage,isResFlowEdit:!1,isSearch:this.isSearch,isNewHomepage:!0})},renderLookup:function(){var a=this;a.isRMCExists||require(["reservation/lookup/core/presenter/lookup-presenter"],function(c){var d;
108!0==htz.config.isApp?d="#rmc-section":d="#new-resLookup";d=b.extend(a.metaData.toJSON(),{target:d,referrer:a.$el});d.formData={confirmationNumber:a.formData.get("confirmationNumber"),lastName:a.formData.get("lastName"),arrivingUpdate:a.formData.get("arrivingUpdate")}; 109var e=b("#res-lookup-template");0<e.length&&(d.template=e.html(),d.content=a.content);a.lookuppresenter=c;a.isRMCExists=!0;c.show(d)})},render3DSview:function(){i.getLightbox().overlay({dismiss:!1,title:this.content.homePage.homePageContent.threeDSpopupTitle,width:584,center:!0,suppressClose:!0},(new k({model:this.model,content:this.content,referrer:this})).render().el);b(".lb-background").css({display:"block"});b(".lb-foreground").css({display:"block"})},render:function(){try{var a=this,c=!!window.navigator.userAgent.match(/iP(ad|hone)/i), 110d=/(android)/i.test(navigator.userAgent);this.preRender();a=this;this.$el.append(g.template(a.template,{metaData:a.metaData.attributes,content:a.content}));this.renderForm();this.loadBanners();if(d&&c){var e=document.createElement("link");e.href="/rentacar/assets/1723487839408/all/global.css";e.type="text/css";e.rel="stylesheet";document.getElementsByTagName("head")[0].appendChild(e)}localStorage.setItem("memberType",this.metaData.get("memberType"));this.metaData.get("concurMember")&&localStorage.setItem("concurMember", 111this.metaData.get("concurMember"));htz.config.isApp?hzm.utils.isIPAD()&&b(".cc-revoke, .cc-window").css("flex-wrap","wrap"):(!0==this.metaData.get("threeDReq")||void 0!=this.metaData.get("threeDMsg")&&""!=this.metaData.get("threeDMsg"))&&this.render3DSview(a);this.postRender();a.adjustHeight();return this}catch(f){b.publish(j.HANDLE_RENDER_FAIL,f.message)}},adjustHeight:function(){var a=0;b("#topUS-locations-carousel-rd>.slick-list>.slick-track").children().each(function(){var c=b(this).height(); 112c>a&&(a=c)});
112b("#topUS-locations-carousel-rd>.slick-list>.slick-track").children().each(function(){b(this).find(".tl-card-container").height(a);b(this).find(".tl-card-footer").css({position:"absolute",bottom:"0"})})},refresh:function(){this.preRender();this.prepareModel();this.loadBanners();this.formView||this.renderForm();this.lookuppresenter||this.renderLookup();this.formData.off("change",this.renderForm(),this);this.formData.on("change",this.renderForm(),this);this.postRender()},arrivalRadioButton:function(){b("#arriving-info").prop("checked", 113!0)},showStepOne:function(){this.$el.find(".home").removeClass("step-discount")},doCleanup:function(){this.viewHelper.doCleanup&&this.viewHelper.doCleanup();this.redeemViewRef&&this.redeemViewRef.doCleanup&&this.redeemViewRef.doCleanup();this.lookuppresenter&&this.lookuppresenter.doCleanup&&this.lookuppresenter.doCleanup();this.template=this.content=this.metaData=this.formData=this.redeemViewRef=this.viewHelper=this.lookuppresenter=null}})}); 114define("reservation/itinerary/core/model/itinerary-form-model",["utils/restmodel","config/app-config","reservation/utils/core/reservation-utils"],function(c,f,d){return c.extend({initialize:function(){this.constructor.__super__.initialize.apply(this,arguments)},validate:function(a,b){return this._validatePickupDropOff()||this._validateDates()||this._validateAge()||this._validateLocations()||this._validateStepValidation(b)||this._validateCDP()},_validatePickupDropOff:function(){if(!this.metaData.get("enablePickupDropdown"))return null; 115if(!this.get("pickupCountry"))return"pickupCountry";if(!this.get("pickupHiddenEOAG"))return"pickupLocation";if("on"===this.get("returnAtDifferentLocationCheckbox")){if(!this.get("dropoffCountry"))return"dropoffCountry";if(!this.get("dropoffHiddenEOAG"))return"dropoffLocation"}return null},_validateDates:function(){return!this.get("pickupDay")?"pickupDay":!this.get("dropoffDay")?"dropoffDay":null},_validateAge:function(){return!this.metaData.get("bookAsMember")&&this.metaData.get("showAgeDropdown")&& 116(!this.get("ageSelector")||"0"===this.get("ageSelector"))&&"none"!==$("#itn-age").css("display")?"ageSelector":null},_validateLocations:function(){return this.metaData.get("enablePickupDropdown")||!this.get("pickupHiddenEOAG")&&!this.get("dropoffHiddenEOAG")?null:("Y"===this.get("inpPickupIsServedBy")||!0===this.get("inpPickupIsServedBy")||"Y"===this.get("inpPickupHasSpecialInstruction")||!0===this.get("inpPickupHasSpecialInstruction"))&&!0!==this.metaData.get("pickupLocPopup")?"pickupHasSpecialInstruction": 117this.get("pickupHiddenEOAG")!==this.get("dropoffHiddenEOAG")&&"on"===this.get("returnAtDifferentLocationCheckbox")&&("Y"===this.get("inpDropoffHasSpecialInstruction")||"Y"===this.get("inpDropoffIsServedBy"))&&!0!==this.metaData.get("dropoffLocPopup")?"dropoffHasSpecialInstruction":null},_validateStepValidation:function(a){return a&&a.stepValidation?!1:null},_validateCDP:function(){return("0"!==this.get("cdpField")&&""!==this.get("cdpField")||"otherCdpIndicator"===this.get("cdpRadioButton")&&"0"!== 118this.get("memberOtherCdpField")&&""!==this.get("memberOtherCdpField")||"profileCdpIndicator"===this.get("cdpRadioButton")&&this.get("memberSelectedCdp")&&"0"!==this.get("memberSelectedCdp")&&""!==this.get("memberSelectedCdp"))&&this.metaData.get("isIncludeCDPOptions")&&!this.metaData.get("applicant")&&this.metaData.get("isIncludeDiscountSection")&&("L"!==this.metaData.get("travelType")&&"B"!==this.metaData.get("travelType")||"B"===this.metaData.get("travelType")&&this.metaData.get("allowContractRate")&& 119"yes"!==this.get("corpRate")&&"no"!==this.get("corpRate"))?"cdpDiscounts":null},url:function(){var a=this.get("href");return a&&0<=a.indexOf("/rest/home")?(a=a.split("/rest/home"),a[0]+"/rest/home/v2"+a[1]):a},set:function(a,b,e){a=c.prototype.set.call(this,a,b,e);b=this.get("militaryClock");this.changed.pickupDay&&(this.attributes.pickupDayStandard=d.standardizeDate(this.attributes.pickupDay,b));this.changed.dropoffDay&&(this.attributes.dropoffDayStandard=d.standardizeDate(this.attributes.dropoffDay, 120b));return a}})}); 121define('reservation/itinerary/core/view/itinerary-form-view', 122 getDependencies('reservation/itinerary/core/view/itinerary-form-view'), 123 function($, _, Backbone, Utils, utilsProxy, AbstractView, appConfig, SessionHelper, taCountryView, locationView, dateTimeView, ageView, arrivalInfoView, redeemView, vehicleTypeView, 124 taMemberView, discountsView, locationClosedOverlayView, viewHelper, process,reservationInfo,retryView, resConstants, resUtils,affiliateMemberIDverificationModel, 125 affiliateMemberVerificationPopupView,itineraryResidencyView,gtmTracker,resourceLoader,domHelper,emailSignUpView) { 126 127 var lightbox = null; 128 129 function getLightBox(isNew) { 130 if(lightbox === null) { 131 lightbox = utilsProxy.getLightbox(); 132 }else if(isNew){ 133 lightbox = utilsProxy.getLightbox(); 134 } 135 return lightbox; 136 } 137 138 var itineraryFormView = AbstractView.extend({ 139 events : { 140 'keyup input' : 'eventHandler', 141 'change input' : 'eventHandler', 142 'change select' : 'eventHandler', 143 'click .res-submit' : 'bookAsGuestSubmitRes', 144 'click .res-flow-submit' : 'handleCDPVerification', //dtc4102//IRAC-4849//Verify AAA CDP//changed resEditSubmit to handleCDPVerification 145 'click .login-submit' : 'memberSubmit', 146 'change #new-locSelect' : 'toggleOneWay', //dtc4102//IRAC-5329//Re
146-skin of Hertz.com legacy - INC001102442 147 'click #new-viewEditCancel':'showRMC', //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 148 'click #new-discount':'renderDiscounts', //dtc4102//irac-391-Mobile Web Optimization - Homepage 149 "focusout #itn-location .content-half-mobile": 'handlePlaceHolderFocusOut', //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 150 "focusin #itn-location .content-half>label>input": 'handlePlaceHolderFocusIn', //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 151 'click #new-discountInfo':'showDiscountDetails' 152 }, 153 initialize: function() { 154 this.isNewHomepage = this.options.isNewHomepage; //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 155 this.template = this.options.template; 156 this.content = this.options.content; 157 this.referrer = this.options.referrer; 158 this.isResWidget = this.options.isResWidget; 159 this.hertzGoldPlusImage = this.options.hertzGoldPlusImage 160 this.viewHelper = viewHelper; 161 this.prepareModel(); 162 this.isSearch = this.options.isSearch; 163 this.isResFlowEdit = this.options.isResFlowEdit; 164 this.prepareItineraryInfo(); 165 this.subscribe(); 166 167 this.render(); 168 169 this.bindDataEvents(); 170 this.handleVEC(); 171 }, 172 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 173 showDiscountDetails : function (){ 174 var self = this; 175 var id = "discount-tpl"; 176 var title = self.content.homePage.homePageContent.discountOverlayTitle; 177 178 require(['reservation/itinerary/core/view/content-overlay-view'], function(contentView){ 179 getLightBox().overlay({ 180 title: title, 181 width:584, 182 center:true 183 }, new contentView({ model : new Backbone.Model({ url : id }), content : self.content }).render().el); 184 }); 185 return false; 186 }, 187 //dtc4102//dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 188 handlePlaceHolderFocusIn:function(e){ 189 //e.stopPropagation(); 190 var target= e.currentTarget; 191 192 if(!htz.config.isApp){ 193 if(!(($(target)[0].id == 'creditCardOther' || $(target)[0].id=='creditCardFromProfile') || $(target)[0].id=="")){ 194 if ($(window).width() < 800) { 195 $(target).css("padding","16px 12px 0px"); 196 $(target).next("span.floating-label").css({ 197 'font-size' : '14px', 198 'margin-top' : '-65px' 199 200 }); 201 } 202 } 203 } 204 205 }, 206 //dtc4102//dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 207 handlePlaceHolderFocusOut:function(e){ 208 e.stopPropagation(); 209 var target= e.currentTarget; 210 if(!htz.config.isApp){ 211 if ($(window).width() < 877) { 212 if ($(target).val() != "") { 213 $(target).next("span.floating-label").css({ 214 'font-size': '14px', 215 'margin-top': '-50px' 216 217 }); 218 } else { 219 $(target).next("span.floating-label").css("margin-top", "-50px").css("font-size", "18px").find("label").css("vertical-align", "top"); 220 221 } 222 } 223 } 224 }, 225 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 226 showRMC:function(){ 227 if (this.metaData.get("viewModifyCancelLink") !== undefined && this.metaData.get("viewModifyCancelLink") !== null && this.metaData.get("viewModifyCancelLink") !== '') { 228 window.location.href = this.metaData.get("viewModifyCancelLink"); 229 } 230 else { 231 $('#rmc-tab h2').trigger('click'); 232 $("#new-resWidget").hide(); 233 $("#new-resLookup").show(); 234 } 235 236 }, 237 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 238 renderNewHomepage : function(){ 239 this.preRender(); 240 241 this.$el.empty(); 242 this.$el.append(_.template($(this.template).html(), { content:this.content, metaData:this.metaData})); 243 244 this.renderNewLocation(); 245 this.renderTaCountry(newHomepage=true); 246 this.renderDateTime(newHomepage=true); 247 this.renderNewAge(); 248 this.renderArrivalInfo(); 249 this.renderVehicleType(); 250 this.renderTaMember(newHomepage=true); 251 252 //dtc4102//irac-391-Mobile Web Optimization - Homepage 253 //moved this.renderDiscounts(newHomepage=true); to click event of #new-discount 254 this.renderButtons(); 255 this.renderModify(); 256 this.renderErrors(newHomepage=true); 257 258 //dtc4102 //Residency Toggle 259 if(htz.config.pos.toUpperCase()==="US" && !htz.config.isApp){
260 this.renderResidencyToggle(); 261 } 262 263 if(this.redeemViewRef && this.formData.get('redeemPoints')=='on'){ 264 this.redeemViewRef.redeemPoints(); 265 } 266 sessionStorage.setItem("isLoggedIn",this.metaData.get('loggedIn')); 267 //dtc4102//irac-619 268 //Homepage special offer ribbon do not display on HertzLink 269 if(this.metaData.get("isHertzlinkActive")==false)this.renderFlashBanner(); 270 this.renderItineraryExtrasSections(); //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 271 this.renderEmailSignup(); //dtc4102//irac-690//Reintroduce sign up for email communications on homepage 272 this.handleErrorData(SessionHelper.getItem(resConstants.ERRORS), false); 273 274 this.postRender(); 275 this.checkDiscCode(); 276 277 return this; 278 }, 279 //dtc4102//irac-690//Reintroduce sign up for email communications on homepage 280 renderEmailSignup:function(){ 281 new emailSignUpView({ el: this.$el.closest('#res-home-page').find('#email-signup-container'), model : this.model, content : this.content }); 282 }, 283 checkDiscCode:function(){ 284 var codeCounter = 0; 285 if(this.formData.get("checkDiscount")=="on"){ 286 if ((this.formData.get("cdpField")!=undefined && this.formData.get("cdpField")!="") || 287 (this.formData.get("memberSelectedCdp")!=undefined && this.formData.get("memberSelectedCdp")!="") || 288 (this.formData.get("memberOtherCdpField")!=undefined && this.formData.get("memberOtherCdpField")!="")) { 289 codeCounter++; 290 } 291 292 if (this.formData.get("pcNumber")!=undefined && this.formData.get("pcNumber")!="") { codeCounter++; } 293 294 if (this.formData.get("typeInRateQuote")!=undefined && this.formData.get("typeInRateQuote")!="") {codeCounter++; } 295 if (this.formData.get("cvNumber")!=undefined && this.formData.get("cvNumber")!="") { codeCounter++; } 296 297 var homeContent = this.content.homePage; 298 var addDiscountCode = homeContent.homePageContent.addDiscountCode; 299 var oneCodeApplied = homeContent.homePageContent.oneCodeApplied; 300 var disCodesApplied = homeContent.homePageContent.disCodesApplied; 301 302 if (codeCounter === 0) { 303 //dtc4102//irac-391-Mobile Web Optimization - Homepage 304 //changing text in mobile web and non-mobile web elements 305 $('#itn-homepage-discounts').find('#new-discount').text(addDiscountCode); 306 $('#itn-homepage-discounts-mobile').find('#new-discount').text(addDiscountCode); 307 } 308 else if (codeCounter === 1) { 309 //dtc4102//irac-391-Mobile Web Optimization - Homepage 310 //changing text in mobile web and non-mobile web elements 311 $('#itn-homepage-discounts').find('#new-discount').text(oneCodeApplied); 312 $('#itn-homepage-discounts-mobile').find('#new-discount').text(oneCodeApplied); 313 } 314 else if (codeCounter > 1) { 315 //dtc4102//irac-391-Mobile Web Optimization - Homepage 316 //changing text in mobile web and non-mobile web elements 317 $('#itn-homepage-discounts').find('#new-discount').text(codeCounter + disCodesApplied); 318 $('#itn-homepage-discounts-mobile').find('#new-discount').text(codeCounter + disCodesApplied); 319 } 320 }else{ 321 //dtc4102//irac-391-Mobile Web Optimization - Homepage 322 //changing text in mobile web and non-mobile web elements 323 $('#itn-homepage-discounts').find('#new-discount').text(addDiscountCode); 324 $('#itn-homepage-discounts-mobile').find('#new-discount').text(addDiscountCode); 325 } 326 }, 327 //dtc4102//irac-385//hero offer homepage ribbon issue - INC001695954 328 renderFlashBanner:function(){ 329 var self=this; 330 331 var toLoad = { 332 template : appConfig.config.rootContext+'/assets/'+appConfig.config.buildId+'/html/all/reservation/itinerary-flash-banner/itinerary-flash-banner.html', 333 content : appConfig.config.apiDomain+'/rest/content/regional/'+appConfig.config.buildId+'/'+appConfig.config.systemId+'/'+appConfig.config.dialect+'/all/reservation/'+appConfig.config.pos+'/itinerary-flash-banner/itinerary-flash-banner' 334 }; 335 toLoad.callback = function( options) { 336 domHelper.addTemplate('itinerary-flash-banner', options.template); 337 require(['reservation/itinerary/core/view/flash-banner-view'], function(flashBannerView){ 338 new flashBannerView({template: "#res-itinerary-flash-banner-tpl", content:options.content}).render(); 339 }); 340 } 341 342 resourceLoader.load(toLoad); 343 }, 344 //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 345 renderItineraryExtrasSections : function(){ 346 var self=this; 347 348 var toLoad = { 349 template : appConfig.config.rootContext+'/assets/'+appConfig.config.buildId+'/html/all/reservation/itinerary-extra/itinerary-extra.html', 350 content : appConfig.config.apiDomain+'/rest/content/regional/'+appConfig.config.buildId+'/'+appConfig.config.systemId+'/'+appConfig.config.dialect+'/all/reservation/'+appConfig.config.pos+'/itinerary-extra/itinerary-extra' 351 }; 352 toLoad.callback = function( options) { 353 domHelper.addTemplate('itinerary-extras', options.template); 354 require(['reservation/itinerary/core/presenter/itinerary-regional-content-view'], function(itineraryRegionalContentView){ 355 new itineraryRegionalContentView({template: "#itinerary-info-section-tpl", content:options.content}).render(); 356 }); 357 } 358 359 resourceLoader.load(toLoad); 360 }, 361 362
363 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 364 toggleOneWay : function (e){ 365 var returnLocation = this.$el.find('#new-dropoffLoc-containerInner'); 366 var value=$(e.target).val(); 367 if ($("#one-way").is(":checked")) { 368 if (value === "sameRL") { 369 $("#one-way").trigger("click"); 370 returnLocation.hide(); 371 } else { 372 this.formData.set("returnAtDifferentLocationCheckbox","on",{silent:true}); 373 returnLocation.show(); 374 } 375 } else { 376 if (value === "diffRL") { 377 $("#one-way").trigger("click"); 378 returnLocation.show(); 379 } 380 } 381 }, 382 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 383 renderNewAge : function() { 384 if(this.metaData.get('showAgeDropdown') && !this.isResFlowEdit) { 385 new ageView({ el: this.$el.find('.itn-age-info'), template : $('#itinerary-homepage-age-tpl').html(), model : this.model, content : this.content }).render(); 386 }else if(!this.isResFlowEdit && (this.formData.get('pickupHiddenEOAG')!="") && !this.metaData.get('showAgeDropdown') && !this.metaData.get('loggedIn')){ 387 new ageView({ el: this.$el.find('.itn-age-info'), template : $('#itinerary-homepage-age-tpl').html(), model : this.model, content : this.content }).render(); 388 }else if(!this.isResFlowEdit && this.formData.get('inpPickupCountryCode')!="" && !this.metaData.get('loggedIn') && this.formData.get('inpPickupAutoFill')=='Y'){ 389 new ageView({ el: this.$el.find('.itn-age-info'), template : $('#itinerary-homepage-age-tpl').html(), model : this.model, content : this.content }).render(); 390 }else { 391 this.$el.find('#itn-age').hide(); 392 $("#new-age-container-mobile").hide(); //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 393 } 394 }, 395 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 396 renderNewLocation : function() { 397 var template; 398 399 template = $('#itinerary-homepage-location-tpl').html(); 400 401 var locationViewRef = new locationView({ el: this.$el.find('#itn-location'), template : template, model : this.model, viewHelper : this.viewHelper, content : this.content, isResFlowEdit : this.isResFlowEdit }).render(); 402 if(this.metaData.get('enablePickupDropdown')) { 403 locationViewRef.renderDropDownLocations(); 404 } 405 406 window.itineraryLocationView = locationViewRef; 407 408 if ($("#one-way").is(":checked")) { 409 $("#new-locSelect").val("diffRL").trigger("change"); 410 $("#new-dropoffLoc-containerInner").show(); 411 } 412 413 //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 414 if(!htz.config.isApp){ 415 if ($(window).width() < 877) { 416 if ($('#pickup-location').val() != '') { 417 $('#pickup-location').next("span.floating-label").css({ 418 'font-size': '14px', 419 'margin-top': '-65px' 420 421 }); 422 } else { 423 $('#pickup-location').next("span.floating-label").css("margin-top", "-50px").css("font-size", "18px").find("label").css("vertical-align", "top"); 424 425 } 426 if ($('#dropoff-location').val() != '') { 427 $('#dropoff-location').next("span.floating-label").css({ 428 'font-size': '14px', 429 'margin-top': '-65px' 430 431 }); 432 } else { 433 $('#dropoff-location').next("span.floating-label").css("margin-top", "-50px").css("font-size", "18px").find("label").css("vertical-align", "top"); 434 435 } 436 } 437 } 438 }, 439 render : function(){ 440 if(!htz.config.isApp && this.options.isNewHomepage==true){ 441 this.renderNewHomepage(); 442 return 443 } 444 this.preRender(); 445 446 this.$el.empty(); 447 this.$el.append(_.template($(this.template).html())); 448 449 this.renderTaCountry(); 450 this.renderLocation(); 451 this.renderDateTime(); 452 this.renderAge(); 453 this.renderArrivalInfo(); 454 this.renderVehicleType(); 455 this.renderTaMember(); 456 this.renderRedeemPoints(); 457 458 this.renderDiscounts(); 459 this.renderButtons(); 460 this.renderModify(); 461 this.renderErrors(); 462 463 //dtc4102 //Residency Toggle 464 if(htz.config.pos.toUpperCase()==="US" && !htz.config.isApp){
465 this.renderResidencyToggle(); 466 } 467 if(htz.config.isApp){ 468 htz.helpers.SessionHelper.setItem("isAppLoggedIn",this.metaData.get('loggedIn')); 469 } 470 471 if(this.redeemViewRef && this.formData.get('redeemPoints')=='on'){ 472 this.redeemViewRef.redeemPoints(); 473 } 474 this.handleErrorData(SessionHelper.getItem(resConstants.ERRORS), false); 475 476 this.postRender(); 477 478 return this; 479 }, 480 prepareModel:function(){ 481 this.metaData = this.model.get('metaData'); 482 this.formData = this.model.get('formData'); 483 }, 484 /** 485 @description Submit as member or guest from special instructions popup 486 @function 487 @param {Boolean} flag pickupLocPopup or dropoffLocPopup passed from accepting the special instructions popup 488 */ 489 handlePopupSubmit : function(flag){ 490 this.metaData.set(flag, true, { silent : true }); 491 492 if(!this.metaData.get('loggedIn') && this.metaData.get('bookAsMember')){ 493 this.submitResMemberLogin(); 494 } else { 495 this.submitRes(); 496 } 497 }, 498 renderAdditionMemberOverlay: function(){ 499 var self = this; 500 require(['reservation/itinerary/core/view/member-info-view'], function(memberInfoView){ 501 getLightBox().overlay({ 502 title: self.content.homePage.homePageContent.memberIdOverlayTitle, 503 width:584, 504 center:true, 505 dismiss:false 506 }, new memberInfoView({ template : $('#member-info-tpl').html(), model : self.model, content : self.content, referrer : appConfig.homepage.resData }).render().el); 507 }); 508 }, 509 renderTaCountry : function(newHomepage) { 510 if(this.metaData.get("loggedIn") && this.metaData.get('enableTA')) { 511 if(newHomepage==true){ 512 new taCountryView({ el: this.$el.find('#itn-ta-country'), template : $('#itinerary-homepage-ta-country-list-tpl').html(), model : this.model, content : this.content,resizeElements:true }).render(); 513 }else{ 514 new taCountryView({ el: this.$el.find('#itn-ta-country'), template : $('#itinerary-ta-country-list-tpl').html(), model : this.model, content : this.content }).render(); 515 } 516 } else { 517 this.$el.find('#itn-ta-country').remove(); 518 } 519 }, 520 renderLocation : function() { 521 var template; 522 if(this.metaData.get('enablePickupDropdown')) { 523 template = $('#itinerary-dropdown-location-tpl').html(); 524 } else { 525 template = $('#itinerary-fts-location-tpl').html(); 526 } 527 var locationViewRef = new locationView({ el: this.$el.find('#itn-location'), template : template, model : this.model, viewHelper : this.viewHelper, content : this.content, isResFlowEdit : this.isResFlowEdit }).render(); 528 if(this.metaData.get('enablePickupDropdown')) { 529 locationViewRef.renderDropDownLocations(); 530 } 531 532 window.itineraryLocationView = locationViewRef; 533 }, 534 renderDateTime : function(newHomepage) { 535 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 536 if(newHomepage==true){ 537 new dateTimeView({ el: this.$el.find('#new-datePicker-container'), template : $('#itinerary-homepage-date-time-tpl').html(), model : this.model, content : this.content }).render(); 538 }else{ 539 new dateTimeView({ el: this.$el.find('#itn-date-time'), template : $('#itinerary-date-time-tpl').html(), model : this.model, content : this.content }).render(); 540 } 541 }, 542 //dtc4102 //Residency Toggle 543 renderResidencyToggle : function(){ 544 if(!this.metaData.get("loggedIn") && !this.metaData.get("applicant") && !this.metaData.get("enableTA")){ 545 new itineraryResidencyView({el:this.$el.closest("#res-form").find('#itn-residency'),template:$('#itn-residency-tpl').html(),model:this.model,content :this.content}).render(); 546 }else{ 547 this.$el.closest("#res-form").find('#itn-residency').remove(); 548 } 549 }, 550 //dtc4102 551 //PR011617-Pricing Clarity 552 //Changed the renderAge function to handle the the following scenarios 553 //-regular default flow 554 //-pickupHiddenEOAG in browser session(autofill) 555 //-user coming to the home page with no EOAG code in session 556 renderAge : function() { 557 if(htz.config.isApp) { 558 if(this.metaData.get('showAgeDropdown') && !this.isResFlowEdit) { 559 new ageView({ el: this.$el.find('#itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 560 }else if(!this.isResFlowEdit && (this.formData.get('pickupHiddenEOAG')!="") && !this.metaData.get('showAgeDropdown') && !this.metaData.get('loggedIn')){ 561 new ageView({ el: this.$el.find('#itn-age-info'), template : $('#
561itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 562 }else if(!this.isResFlowEdit && this.formData.get('inpPickupCountryCode')!="" && !this.metaData.get('loggedIn') && this.formData.get('inpPickupAutoFill')=='Y'){ 563 new ageView({ el: this.$el.find('#itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 564 }else { 565 this.$el.find('#itn-age').hide(); 566 } 567 } 568 else { 569 if(this.metaData.get('showAgeDropdown') && !this.isResFlowEdit) { 570 new ageView({ el: this.$el.find('#new-age-container-mobile').find('.itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 571 new ageView({ el: this.$el.find('#new-age-container').find('.itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 572 if(this.el.id=="res-widget"){ //dtc4102//IRAC-553//Age dropdown and pop up missing on Special offers 573 new ageView({ el: this.$el.find('#itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 574 $('#itn-age').show(); 575 } 576 }else if(!this.isResFlowEdit && (this.formData.get('pickupHiddenEOAG')!="") && !this.metaData.get('showAgeDropdown') && !this.metaData.get('loggedIn')){ 577 new ageView({ el: this.$el.find('#new-age-container-mobile').find('.itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 578 new ageView({ el: this.$el.find('#new-age-container').find('.itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 579 if(this.el.id=="res-widget"){ //dtc4102//IRAC-553//Age dropdown and pop up missing on Special offers 580 new ageView({ el: this.$el.find('#itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 581 $('#itn-age').show(); 582 } 583 }else if(!this.isResFlowEdit && this.formData.get('inpPickupCountryCode')!="" && !this.metaData.get('loggedIn') && this.formData.get('inpPickupAutoFill')=='Y'){ 584 new ageView({ el: this.$el.find('#new-age-container-mobile').find('.itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 585 new ageView({ el: this.$el.find('#new-age-container').find('.itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 586 if(this.el.id=="res-widget"){ //dtc4102//IRAC-553//Age dropdown and pop up missing on Special offers 587 new ageView({ el: this.$el.find('#itn-age-info'), template : $('#itinerary-age-tpl').html(), model : this.model, content : this.content }).render(); 588 $('#itn-age').show(); 589 } 590 }else { 591 this.$el.find('#itn-age').hide(); 592 } 593 } 594 }, 595 renderArrivalInfo : function() { 596 if(this.metaData.get('enableArrivalOptions')) { 597 new arrivalInfoView({ el: this.$el.find('#itn-arrival-info'), template : $('#itinerary-arrival-info-tpl').html(), model : this.model, content : this.content }).render(); 598 } else { 599 this.$el.find('#itn-arrival-info').remove(); 600 } 601 }, 602 renderVehicleType : function() { 603 this.metaData.set("isResWidget", this.isResWidget); 604 if(this.metaData.get('enableCarDropDown') && this.metaData.get('vehicleGroupSippsAvailable') && !this.isResFlowEdit) { 605 new vehicleTypeView({ el: this.$el.closest("#res-form").find('#itn-vehicle-type'), template : $('#itinerary-vehicle-type-tpl').html(), model : this.model, content : this.content }).render(); 606 } else { 607 this.$el.closest("#res-form").find('#itn-vehicle-type').remove(); 608 } 609 }, 610 renderTaMember : function(newHomepage) { 611 if(this.metaData.get('enableTA')) { 612 if(newHomepage==true){ 613 new taMemberView({ el: this.$el.find('#itn-ta-member-info'), template : $('#
613itinerary-homepage-ta-member-info-tpl').html(), model : this.model, content : this.content }).render(); 614 }else{ 615 new taMemberView({ el: this.$el.find('#itn-ta-member-info'), template : $('#itinerary-ta-member-info-tpl').html(), model : this.model, content : this.content }).render(); 616 } 617 } else { 618 this.$el.find('#itn-ta-member-info').remove(); 619 } 620 }, 621 renderRedeemPoints : function(newHomepage) { 622 if(this.metaData.get('loggedIn') && !this.isResFlowEdit && !this.metaData.get('applicant')) { //dtc4102//22.23//irac-20//Discount Overlay on hertz.com homepage - INC001258567 623 if(newHomepage==true){ 624 this.redeemViewRef = new redeemView({ el: this.$el.find('.new-member-points'), template : $('#itinerary-homepage-redeem-point-tpl').html(), model : this.model, content : this.content }).render(); 625 }else{ 626 this.redeemViewRef = new redeemView({ el: this.$el.find('#redeem-section'), template : $('#itinerary-redeem-point-tpl').html(), model : this.model, content : this.content }).render(); 627 } 628 } else { 629 this.$el.find('#redeem-section').remove(); 630 } 631 }, 632 renderDiscounts : function(ev) { 633 var self=this; 634 635 //dtc4102//irac-391-Mobile Web Optimization - Homepage 636 var newHomepage=(!htz.config.isApp && this.options.isNewHomepage==true)?true:false; 637 638 639 if(this.metaData.get('isIncludeDiscountSection')) { 640 641 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 642 if(newHomepage==true){ 643 644 //dtc4102//irac-391-Mobile Web Optimization - Homepage 645 //added if condition to avoid duplicate #new-discount-modal-container 646 if ($( "#new-discount-modal-container" ).length<1) { 647 var target=ev.currentTarget; 648 new discountsView({ 649 el: $(target).closest('.new-discount-container'), 650 template: $('#itinerary-homepage-discounts-tpl').html(), 651 model: this.model, 652 metaData: this.metaData, 653 formData: this.formData, 654 viewHelper: this.viewHelper, 655 content: this.content, 656 isNewHomepage: true 657 }).render(); 658 659 self.renderRedeemPoints(newHomepage = true); 660 } 661 }else{ 662 new discountsView({ el: this.$el.find('#itn-discounts'), template : $('#itinerary-discounts-tpl').html(), model : this.model, metaData : this.metaData, formData : this.formData, viewHelper : this.viewHelper, content : this.content }).render(); 663 } 664 } else { 665 this.$el.find('#itn-discounts').remove(); 666 } 667 }, 668 renderModify : function() { 669 if(this.metaData.get('resRmcProcess') && !this.isResFlowEdit) { 670 if(this.metaData.get('prepaidModify') && this.formData.get("originalRqCheckBox")!=="on"){ 671 this.formData.set("originalRqCheckBox", "on"); 672 } 673 this.$el.find('#itn-modify-keep-rate').append(_.template($('#itinerary-modify-keep-rate-tpl').html(), { metaData : this.metaData.attributes, formData : this.formData.attributes, content : this.content })); 674 } else { 675 this.$el.find('#itn-modify-keep-rate').remove(); 676 } 677 }, 678 renderErrors : function(newHomePage) { 679 var errorData = SessionHelper.getItem(resConstants.ITINERARY_ERROR_DATA); 680 681 if(errorData) { 682 var errorString = JSON.parse(errorData); 683 684 if(errorString && errorString.systemErrors && errorString.systemErrors.length > 0){ 685 errorString = errorString.systemErrors[0]; 686 687 if(errorString.indexOf("NRX196")>=0){ 688 this.renderAdditionMemberOverlay(); 689 } 690 } 691 else if(errorString && errorString.messages && errorString.messages.length > 0){ 692 errorString = errorString.messages[0]; 693 694 if(errorString.indexOf("NZX305")>=0){ 695 var referrerUrl = SessionHelper.getItem(resConstants.REFERRER_URL); 696 697 if(referrerUrl) { 698 window.location.href="https://"+referrerUrl; 699 } 700 } 701 } 702 703 errorData = JSON.parse(errorData); 704 Utils.displayAllErrors(errorData, this.referrer.find('#error-list')); 705 SessionHelper.removeItem(resConstants.ITINERARY_ERROR_DATA); 706 SessionHelper.removeItem(resConstants.REFERRER_URL); 707 } 708 }, 709 renderButtons : function() { 710 this.$el.find('#res-submit-btns').append(_.template($('#itinerary-buttons-tpl').html(), { metaData : this.metaData.attributes, content : this.content, isResFlowEdit : this.isResFlowEdit })); 711 }, 712 bindDataEvents : function() { 713 this.formData.off('error', this.handleFormError, this); 714 this.formData.off('fieldError', this.displayError, this); 715 this.formData.off('ageChanged', this.ageChanged, this); 716 this.formData.off('systemErrors', this.handleSystemErrors, this); 717 718 this.formData.on('error', this.handleFormError, this); 719 this.formData.on('fieldError', this.displayError, this); 720 this.formData.on('ageChanged', this.ageChanged, this); 721 722 }, 723 /**
724 @description Display age dropdown overlay 725 @function 726 @param {object} formData 727 */ 728 showAgeOverlay : function(formData){ 729 var self = this; 730 require(['reservation/itinerary/core/view/age-view'], function(ageView){ 731 getLightBox().overlay({ 732 title: self.content.homePage.homePageContent.ageSelectOverlayTitle, 733 width:584, 734 center:true 735 }, new ageView({ model : self.model, content : self.content, referrer : self }).render().el); 736 }); 737 }, 738 /** 739 @description Display res search errors 740 @function 741 */ 742 displayError : function(model, errors, target){ 743 Utils.displayFieldErrors(errors, target); 744 window.scrollTo(0,0); 745 }, 746 handleSystemErrors : function (systemErrors) { 747 // no op 748 }, 749 /** 750 @description Determine whether to return front end validation alerts or save to local storage and render form. 751 @function 752 @param {object} formData 753 @param {String} errorCode 754 */ 755 handleFormError : function(formData, errorCode){ 756 var content = this.content; 757 var nAlert = utilsProxy.getNotifier().alert; 758 759 if(!htz.config.isApp && errorCode.responseJSON){ 760 var options={}; 761 options.scenario = 'system-errordata-tracking'; 762 var errMsg = errorCode.responseJSON.message.messages; 763 var errData = errorCode.responseJSON.message.errorData; 764 var sysData = errorCode.responseJSON.message.systemErrors; 765 if(errMsg != undefined){ 766 options.payload = errMsg; 767 }else if(errData != undefined){ 768 options.payload = errorCode.responseJSON.message.errorData.message; 769 }else if(sysData != undefined){ 770 options.payload = sysData; 771 }else{ 772 options.payload = ''; 773 } 774 gtmTracker.track(options); 775 } 776 777 if(typeof errorCode === 'string'){ 778 switch(errorCode){ 779 case "pickupCountry": nAlert(content.homePage.jsErrorContent.selectCountry); this.$el.find('#pickup-country').focus(); break; 780 case "pickupLocation": nAlert(content.homePage.jsErrorContent.selectPickupLocation); this.$el.find('#pickup-location').focus(); break; 781 case "dropoffCountry": nAlert('Please select a Dropoff Country'); this.$el.find('#dropoff-country').focus(); break; 782 case "dropoffLocation": nAlert(content.homePage.jsErrorContent.selectDropoffLocation); this.$el.find('#dropoff-location').focus(); break; 783 case "pickupDay": nAlert(content.homePage.jsErrorContent.validPickupDate); break; 784 case "dropoffDay": nAlert(content.homePage.jsErrorContent.validDropoffDate); break; 785 case "ageSelector": this.handleAgeError(); break; 786 case "cdpDiscounts": this.displayCDPNotification(); break; 787 case "pickupHasSpecialInstruction": this.locationPopupMessage('pickupLocPopup', formData.get('pickupHiddenEOAG')); break; 788 case "dropoffHasSpecialInstruction": this.locationPopupMessage('dropoffLocPopup', formData.get('dropoffHiddenEOAG')); break; 789 default : break; 790 } 791 } 792 else { 793 if(!appConfig.config.isApp && appConfig.config.deviceGroup !== 'phone'){ 794 this.render(this.options.isNewHomepage); 795 } 796 this.handleErrorData(errorCode.responseText, true); 797 } 798 }, 799 handleVEC(){ 800 if(this.isSearch) { 801 $('#rmc-tab h2').trigger('click'); 802 $("#new-resWidget").hide(); 803 $("#new-resLookup").show(); 804 } 805 }, 806 /** 807 @description Location specific special instructions popup message on submit 808 @function 809 @param {String} location pickupLocPopup or dropoffLocPopup 810 @param {String} eoag EOAG 811 */ 812 locationPopupMessage : function(location, eoag){ 813 814 this.viewHelper.locationPopupMessage(this.content.locationDetailsView.locationDetails.locTitle, location, eoag, this); 815 816 }, 817 /** 818 @description Event handler to set checkbox value to in formData if checked 819 @function 820 @param {event} e Event which was fired from the target dom element 821 */ 822 eventHandler : function(e){ 823 var obj = $(e.target), val = $.trim(obj.val()); 824 var self=this; 825 826 if(obj.is(':checkbox')){ 827 val = obj.is(':checked') ? val : ''; 828 } 829 830 if(obj.attr('name') == "pickupTime" || obj.attr('name') == "dropoffTime"){ 831 if(htz.iracDefaultTimeExp){ 832 htz.iracDefaultTimeExp=null; 833 } 834 } 835 836 //dtc4102//AAA verification 837 //when user selects other cdp or cdp from the dropdown list 838 if(this.metaData.get('loggedIn')){ 839 if(obj.attr('id')==="profile-cdp-indicator" && obj.is(':checked')){ 840 $('#member-selected-cdp').trigger("change"); 841 }else if (obj.attr('id')==="other-cdp-indicator" && obj.is(':checked')){
842 $('#member-other-cdp').trigger("change"); 843 } 844 } 845 /*if(obj.attr('id')==="one-way"){ 846 //dtc4102//23.19//irac-391//Mobile Web Optimization - Homepage 847 //inverted the values since the checkbox works the opposite way 848 if (val=="on"){ 849 val=""; 850 }else if (val==""){ 851 val="on"; 852 } 853 self.handleAffiliateCDPVerification(); 854 855 }*/ 856 857 this.formData.set(obj.attr('name'), val, { silent : true }); 858 859 }, 860 861 //dtc4102//AAA verification 862 //Trigger call to /required when location changes 863 handleAffiliateCDPVerification:function(){ 864 var self=this; 865 866 if(this.metaData.get('loggedIn')){ 867 if(this.formData.get("memberOtherCdpField")!=""){ 868 $('#member-other-cdp').trigger("change"); 869 } 870 else{ 871 $('#member-selected-cdp').trigger("change"); 872 } 873 }else{ 874 if(this.formData.get('cdpField')!=""){ 875 $('#cdp-textfield').trigger("change"); 876 } 877 } 878 879 }, 880 /** 881 @description Age error handling 882 @function 883 */ 884 handleAgeError : function(){ 885 this.showAgeOverlay(this.formData); 886 887 var lBox = getLightBox(); 888 if(lBox.inUse){ 889 lBox.closeOverlay(); 890 } 891 }, 892 /** 893 @description Set selected age on homepage as age is being changed on age dropdown overlay 894 @function 895 @param {String} value value of age dropdown 896 */ 897 ageChanged : function(obj){ 898 var self = this; 899 var value=obj.val(); 900 var options = obj.get(0).options; 901 for(var x=0; x<options.length; x++){ 902 if(options.item(x).value === value){ 903 $(this).prop('selected', true); 904 $(this).parent().trigger("change"); 905 self.formData.attributes.ageSelector = value; 906 return; 907 } 908 }; 909 }, 910 911 displayLocationClosedError : function(locations, callback){ 912 if(getLightBox().inUse && !this.isResFlowEdit){ 913 getLightBox().closeOverlay(); 914 } 915 var close = function(){ viewHelper.trackLocationClosedOverlay('Close'); }; 916 viewHelper.trackLocationClosedOverlay('DisplayLocationClosedOverlay'); 917 var isNew = this.isResFlowEdit? true : false; 918 919 getLightBox(isNew).overlay({ 920 title : this.content.homePage.locationClosedProcess.locationClosed, 921 width:584, 922 center:true, 923 close : close 924 }, new locationClosedOverlayView({ 925 formData : this.formData, 926 metaData : this.metaData, 927 content : this.content, 928 locations: locations, 929 template : "#location-closed-overlay-tpl", 930 callback: callback, 931 model: this.model 932 }).render().el 933 ); 934 935 }, 936 937 938 /** 939 @description Member submit 940 @function 941 */ 942 memberSubmit : function (){ 943 944 if(this.metaData.get('loggedIn')) { 945 this.bookAsGuestSubmitRes(); 946 } else { 947 this.trackMemberRes(); 948 // Set model to Book As Member 949 this.metaData.set({ bookAsMember : 1 }, { silent : true }); 950 this.submitRes(); 951 } 952 }, 953 954 //dtc4102//IRAC-4849//Verify AAA CDP 955 isCDPVerificationReq:function(CDP){ 956 var self=this; 957 958 var deferred=$.Deferred(); 959 960 var cdp; 961 try{ 962 cdp=CDP; 963 }catch(e){ 964 cdp=""; 965 } 966 967 $.ajax({ 968 type:'GET', 969 url: appConfig.config.rootContext + "/rest/hertz/v2/reservations/AAA/itinerary/"+cdp, 970 cache: false, 971 async:false, 972 dataType:'jsonp', 973 success: function(response,textStatus,jqXHR){ 974 if(response.data=="true"){ 975 deferred.resolve(); 976 }else{ 977 deferred.reject(); 978 } 979 }, 980 error: function(jqXHR,textStatus,errThrown){ 981 console.error("error fetching isCDPVerificationReq endpoint"); 982 console.error(textStatus); 983 console.error(errThrown); 984 deferred.reject(); 985 } 986 }); 987 988 return deferred.promise(); 989 }, 990 991 //dtc4102//IRAC-4849//Verify AAA CDP 992 handleCDPVerification:_.debounce(function(){ 993 var self=this; 994 995 var cdp; 996 997 if(self.metaData.get("loggedIn")){ 998 cdp=(self.formData.get("cdpRadioButton")=="otherCdpIndicator")?self.formData.get("memberOtherCdpField"):self.formData.get("memberSelectedCdp"); 999 }else{ 1000 cdp=self.formData.get("cdpField"); 1001 } 1002 try{ 1003 if(htz.config.pos=="US"){ 1004 this.isCDPVerificationReq(cdp).done(function () { 1005 1006 function itinraryMemberVerificationEventHandler(e) { 1007 e.stopPropagation(); 1008 1009 var key = e.message ? "message" : "data"; 1010 var data = e[key]; 1011 1012 if(e.data.status=="memberValidationSuccess"||e.data.status=="memberValidationCancel"){ 1013 1014 var errorTxt=self.content.reservationGlobals.errorMsg.AAAValidationFailed?self.content.reservationGlobals.errorMsg.AAAValidationFailed:"Discount code validation failed"; 1015 1016 if(e.data.status=="memberValidationSuccess"){ 1017 1018 var memberInfo = e.data.memberInfo; 1019 1020 // Success Logic Here 1021 window.removeEventListener(messageEvent,itinraryMemberVerificationEventHandler,false); 1022 $("#aaanational-membervalidation").remove(); 1023 1024 //Google Data Layer 1025 if(!htz.config.isApp){ 1026 try{ 1027 var options={}; 1028 options.scenario='cdp_validation'; 1029 options.payload={}; 1030 options.payload.id=self.model.get("formData").get("cdpField"); 1031 options.payload.name="AAA";
1032 options.payload.status="validated"; 1033 gtmTracker.track(options); 1034 }catch(e){ 1035 console.log("Error with AAA CDP validation."+e.message); 1036 } 1037 } 1038 1039 self.resEditSubmit("partnerCDPVerified"); 1040 1041 }else if(e.data.status=="memberValidationCancel"){ 1042 1043 // Cancel Logic Here 1044 window.removeEventListener(messageEvent,itinraryMemberVerificationEventHandler,false); 1045 $("#aaanational-membervalidation").remove(); 1046 1047 SessionHelper.setItem(resConstants.ITINERARY_ERROR_DATA, '{"messages":["'+errorTxt+'"]}'); 1048 1049 //Google Data Layer 1050 if(!htz.config.isApp){ 1051 try{ 1052 var options={}; 1053 options.scenario='cdp_validation'; 1054 options.payload={}; 1055 options.payload.id=self.model.get("formData").get("cdpField"); 1056 options.payload.name="AAA"; 1057 options.payload.status="canceled"; 1058 gtmTracker.track(options); 1059 }catch(e){ 1060 console.log("Error with AAA CDPvalidation."+e.message); 1061 } 1062 } 1063 1064 self.formData.set({'cdpField':'','checkDiscount':'','memberOtherCdpField':''},{silent:true}); 1065 self.formData.trigger('error', self.model.get("formData"), JSON.parse('{"messages":["'+errorTxt+'"]}')); 1066 } 1067 1068 }else if (e.data.status === "memberValidationLoaded") { 1069 window.AAAValidationLoaded = true; 1070 } 1071 } 1072 1073 var iframe =document.createElement("iframe"); 1074 1075 iframe.src="https://www.aaa.com/sharedservices/validate?vendor=hertz"; 1076 iframe.style.display="block"; 1077 iframe.style.position="fixed"; 1078 iframe.style.width="100%" 1079 iframe.style.height="100%" 1080 iframe.style.margin="0" 1081 iframe.style.padding="0" 1082 iframe.style.border="0" 1083 iframe.style.background="transparent" 1084 iframe.style.zIndex="100000000" 1085 iframe.id="aaanational-membervalidation" 1086 1087 var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; 1088 var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; 1089 1090 // Listen to message from child window 1091 window[eventMethod](messageEvent,itinraryMemberVerificationEventHandler,false); 1092 1093 // Position as the first element on the page 1094 document.getElementsByTagName("body")[0].insertBefore(iframe,document.getElementsByTagName("body")[0].firstChild) 1095 1096 //Google Data Layer 1097 if(!htz.config.isApp){ 1098 try{ 1099 var options={}; 1100 options.scenario='cdp_validation'; 1101 options.payload={}; 1102 options.payload.id=self.model.get("formData").get("cdpField"); 1103 options.payload.name="AAA"; 1104 options.payload.status="shown"; 1105 gtmTracker.track(options); 1106 }catch(e){ 1107 console.log("Error with AAA CDPvalidation."+e.message); 1108 } 1109 } 1110 1111 setTimeout(function () { 1112 if (!window.AAAValidationLoaded) { 1113 document.getElementById('aaanational-membervalidation').remove() 1114 } 1115 }, 20000) 1116 1117 }).fail(function(){ 1118 self.resEditSubmit(); 1119 }); 1120 }else{ 1121 self.resEditSubmit(); 1122 } 1123 }catch(e){ 1124 console.log("error processing handleCDPVerification form itenerary"); 1125 self.resEditSubmit(); 1126 } 1127 }, 1128 1000), 1129 1130 resEditSubmit : function(partnerCDPVerified){ 1131 if(partnerCDPVerified){ 1132 this.formData.set({"partnerCDPVerified":1},{silent:true}); 1133 }else{ 1134 this.formData.set({"partnerCDPVerified":0},{silent:true}); 1135 } 1136 1137 if(!this.metaData.get('loggedIn')) { 1138 1139 this.bookAsGuestSubmitRes(); 1140 }else{ 1141 1142 this.memberSubmit(); 1143 } 1144 }, 1145 handleClosedLocation : function() { 1146 this.viewHelper.pickupAndDropoffTimesAreValid(this.formData.attributes, this.metaData.attributes, function(locations){ 1147 this.displayLocationClosedError(locations, this.bookAsGuestSubmitRes.bind(this)); 1148 }.bind(this)); 1149 }, 1150 preSubmitCheck : function( submitFn ) { 1151 var closedFn = this.handleClosedLocation.bind(this); 1152 1153 // We will only do this if member is potentially eligible for gold anytime res 1154 if(this.viewHelper.isEligibleMemberLevel( this.metaData )){ 1155 1156 var destinationDeferred = $.Deferred(); 1157 1158 var submitted = false;
1159 var self = this; 1160 1161 //Register "done" action 1162 destinationDeferred.done(function( destinationData ){ 1163 if(destinationData && !destinationData.isOneWay && destinationData.pickup && destinationData.pickup.optGoldAnytime ){ 1164 1165 var memberPrefData = { 1166 'destinationCountryCode' : destinationData.pickup.countryCode 1167 }; 1168 1169 var memberNumber = self.formData.get('no1ClubNumber'); 1170 1171 if( self.metaData.get('enableTA') && memberNumber ){ 1172 memberPrefData.memberNumber = memberNumber; 1173 } 1174 1175 var memberPref = self.viewHelper.getMemberPreferences( memberPrefData ); 1176 1177 if(memberPref){ 1178 self.viewHelper.storeMemberPrefs( memberPref ); 1179 var gaEligible = memberPref.get('goldAnytimeEligible') ; 1180 1181 if ( gaEligible ) { 1182 if(submitFn && typeof submitFn === 'function'){ 1183 submitFn(); 1184 submitted = true; 1185 } 1186 } 1187 1188 } else { 1189 if(submitFn && typeof submitFn === 'function'){ 1190 submitFn(); 1191 submitted = true; 1192 } 1193 } 1194 } 1195 1196 if(!submitted){ 1197 self.viewHelper.checkLocationsAndSubmit( self.formData, self.metaData, submitFn, closedFn); 1198 } 1199 1200 }); 1201 1202 // On fail, simply submit and let backend handle it 1203 destinationDeferred.fail(function(){ 1204 if(submitFn && typeof submitFn === 'function') submitFn(); 1205 }); 1206 1207 //Get Destination Data 1208 this.viewHelper.getDestinationData( this.formData, destinationDeferred ); 1209 } else { 1210 this.viewHelper.checkLocationsAndSubmit(this.formData, this.metaData, submitFn, closedFn ); 1211 } 1212 1213 }, 1214 1215 /** 1216 @description Submit book as guest 1217 @function 1218 */ 1219 bookAsGuestSubmitRes : function(){ 1220 1221 if(this.metaData.get('isRedeemPoints')) { 1222 this.formData.set({redeemPoints : 'on'}, {silent:true}); 1223 } else { 1224 this.formData.set({redeemPoints : ''}, {silent:true}); 1225 } 1226 htz.helpers.SessionHelper.setItem('returnAtDifferentLocationCheckbox', this.formData.get("returnAtDifferentLocationCheckbox")); if(!this.metaData.get('loggedIn')) { 1227 localStorage.setItem('renterAge', this.formData.get("ageSelector")); 1228 } 1229 if(this.metaData.get('isRedeemPoints') && !this.metaData.get('loggedIn')) { 1230 this.memberSubmit(); 1231 } else { 1232 this.metaData.set({ bookAsMember : 0 }); 1233 this.trackGuestRes(); 1234 this.preSubmitCheck( this.submitRes.bind(this) ); 1235 } 1236 }, 1237 1238 /** 1239 @description Submit book as member called by emember login overlay after login is successful 1240 @function 1241 */ 1242 bookAsMemberSubmitRes : function(memberFirstName){ 1243 1244 var self = this, formChanged = self.formData.toJSON(), metaChanged = self.metaData.changedAttributes(); 1245 1246 //dtc4102//AAA verification 1247 //Book as member scenario 1248 //Member name needs to be passed to the popup 1249 var loggedInMemberName =""; 1250 if(memberFirstName!=undefined){ 1251 typeof memberFirstName==='string'?loggedInMemberName=memberFirstName :loggedInMemberName=""; 1252 } 1253 1254 //Grab the logged in user's home page data 1255 self.model.fetch({ 1256 success : function(model, res){ 1257 self.prepareModel(); 1258 self.bindDataEvents(); 1259 1260 self.metaData.set({ bookAsMember : 1 }, { silent : true }); 1261 1262 //The following code overrites whatever is in the profile with what user has filled out in the form for the current rate request 1263 if(metaChanged){ 1264 self.metaData.set(metaChanged, { silent : true }); 1265 } 1266 1267 var cdp = formChanged.cdpField, 1268 sipp = formChanged.selectedCarType, 1269 profileSipp = self.formData.get('selectedCarType'), 1270 profileSelectedCDP = self.formData.get('memberSelectedCdp'); 1271 1272 if (formChanged.militaryClock !== self.formData.get('militaryClock')){ 1273 formChanged.militaryClock = self.formData.get('militaryClock'); 1274 formChanged.pickupDay = self.flipDate(formChanged.pickupDay); 1275 formChanged.dropoffDay = self.flipDate(formChanged.dropoffDay); 1276 } 1277 1278 self.formData.set(formChanged, { silent : true }); 1279 1280 if(cdp && cdp !== ''){ 1281 var data = { 1282 cdpRadioButton : 'otherCdpIndicator', 1283 memberOtherCdpField : cdp, 1284 checkDiscount : 'on' 1285 }; 1286 self.formData.set(data, { silent : true }); 1287 } else if(profileSelectedCDP){ 1288 var data = { 1289 cdpRadioButton : 'profileCdpIndicator', 1290 memberSelectedCdp : profileSelectedCDP, 1291 checkDiscount : 'on' 1292 }; 1293 self.formData.set(data, { silent : true }); 1294 } 1295 1296 if(!sipp || sipp === 'ACAR'){ 1297 self.formData.set({ selectedCarType : profileSipp }, { silent : true }); 1298 } 1299 1300 //dtc4102//AAA verification 1301 //Book as member scenario 1302 //Send the prefered CDP in profile to the new affiliate member verification popup 1303 var isCookied; 1304 1305 try{ 1306 var memberCDP=(self.formData.get("memberOtherCdpField")!="")?self.formData.get("memberOtherCdpField"):self.formData.get("memberSelectedCdp"); 1307 var expression = new RegExp("affiliateID_"+self.metaData.get("memberNumber")+"_"+memberCDP+"=([^;]+)"); 1308 var cookieValue = expression.exec(document.cookie); 1309 isCookied = (cookieValue != null) ? true:false; 1310 }catch(e){ 1311 isCookied=false; 1312 } 1313 1314 if((cdp!="" || profileSelectedCDP!="") && !isCookied){ 1315 var selectedCDP=cdp!=""?cdp:profileSelectedCDP; 1316 self.handleAffiliateMemberBookAsMember(selectedCDP,loggedInMemberName); 1317 utilsProxy.getSpinner().stop(); 1318 }else{ 1319 self.preSubmitCheck( self.submit.bind(self) ); 1320 } 1321 } 1322 }); 1323 }, 1324 1325 //dtc4102//AAA verification 1326 //call the web service to check and see if we need to verify affiliate member ID 1327 //when user presses book as member 1328 handleAffiliateMemberBookAsMember : function(profileSelectedCDP,loggedInMemberName){ 1329 var self=this; 1330 1331 var cdp = $.trim(profileSelectedCDP), 1332 POS = appConfig.config.pos, 1333 dialect = appConfig.config.dialect, 1334 pickupLocationCode = this.formData.get('pickupHiddenEOAG'), 1335 dropOffLocationCode = this.formData.get('returnAtDifferentLocationCheckbox')=="on"?(this.formData.get('dropoffHiddenEOAG')?this.formData.get('dropoffHiddenEOAG'):""):"", 1336 name = $.trim(loggedInMemberName); 1337 1338 $.ajax({ 1339 cache: false, 1340 async:true, 1341 data:$.param({'POS':POS,'pickupLocationCode': pickupLocationCode,'dropOffLocationCode':dropOffLocationCode,'CDP':cdp,'dialect':dialect}), 1342 url: appConfig.config.apiDomain + '/rest/partner/cdp/memberID/required', 1343 dataType: 'jsonp', 1344 type:'GET', 1345 success:function(res,textStatus,jqXHR){ 1346 1347 if(res.data && res.data.verifyPartnerMember==true){ 1348 self.formData.set({'companyId':res.data.companyId},{silent:true}); 1349 1350 getLightBox().overlay({ 1351 title: "<img src="+self.hertzGoldPlusImage+" alt='' class='gold-plus-lightbox-logo' />", 1352 suppressClose:true, 1353 dismiss : false, 1354 width : 481, 1355 noPadding : false 1356 }, new affiliateMemberVerificationPopupView({ 1357 el: "#homePageAffiliateMember", 1358 cdp:cdp, 1359 name:name, 1360 lBoxRef : getLightBox(), 1361 referrer: self, 1362 content:res.data.content}) 1363 .render().el); 1364 }else{ 1365 self.preSubmitCheck( self.submit.bind(self) ); 1366 } 1367 },error: function(jqXHR,textStatus,errThrown){ 1368 console.log("error fetching /required"); 1369 console.log(textStatus); 1370 console.log(jqXHR); 1371 console.log(errThrown); 1372 } 1373 }) 1374 }, 1375 /** 1376 @description Submit member login reservation 1377 @function 1378 */ 1379 submitResMemberLogin : function(){ 1380 var self = this; 1381 if(self.formData.isValid()){ 1382 var close = function(){ 1383 self.metaData.set({ bookAsMember : 0 }, { silent : true }); 1384 }; 1385 self.model.set('metaData',self.metaData); 1386 $.ajax({ 1387 url : appConfig.config.rootContext + "/member/login/overlay", 1388 cache : false, 1389 dataType: 'html', 1390 success : function(res){ 1391 $('#hp-overlays').append(res); 1392 window.scrollTo(0,0); 1393 getLightBox().overlay({ title: "<img src="+self.hertzGoldPlusImage+" alt='' class='gold-plus-lightbox-logo' />", close : close, dismiss : false, width : 762, noPadding : true }, $('#homePageloginBox')); 1394 1395 var lm = new loginModel(); 1396 var lv = new loginView({el: "#homePageloginBox", model: lm, isRes: true, metaModel: self.model.get('metaData')}); 1397 } 1398 }); 1399 } 1400 else { 1401 self.formData.trigger('error', self.formData, self.formData.validate()); 1402 } 1403 }, 1404 /** 1405 @description Returns the date with day and month flipped 1406 @function 1407 @param {String} date Date passed in either dd/mm/yy or mm/dd/yy format 1408 @returns {String} 1409 */ 1410 flipDate : function (date){ 1411 var str = date.split("/");
1412 return str[1] + "/"+str[0]+"/"+str[2]; 1413 }, 1414 /** 1415 @description Omniture tracking for reservation as guest 1416 @function 1417 */ 1418 trackGuestRes : function(){ 1419 if(typeof WebTracking !== 'undefined'){ 1420 WebTracking.trackData({eVar37 : 'guest', events : 'event7'}); 1421 } 1422 }, 1423 /** 1424 @description Omniture tracking for reservation as member 1425 @function 1426 */ 1427 trackMemberRes : function(){ 1428 if(typeof WebTracking !== 'undefined'){ 1429 WebTracking.trackData({eVar37 : 'member', events : 'event7'}); 1430 } 1431 }, 1432 1433 //dtc4102//AAA Verification 1434 handleAffiliateMember:function(){ 1435 var self = this; 1436 1437 if(self.metaData.get('travelType')===""){ 1438 self.submit(); 1439 }else{ 1440 1441 self.viewHelper.validateAffiliateMember(self.getCdpfield(),self.formData.get("affiliateMemberID"),self,false).done(function(){ 1442 self.submit(); 1443 }).fail(function(errData) { 1444 self.$el.find('#affiliate-member-ID').val(""); 1445 self.formData.set({"affiliateMemberJoin":"","affiliateMemberID":""}, { silent : true }); 1446 1447 var err=JSON.parse(errData.responseText); 1448 var errCode=err.resultInfo.resultCode; 1449 1450 if(errCode===307 || errCode===301){ 1451 htz.helpers.SessionHelper.setItem('originalCDP', self.formData.get("cdpField")); 1452 1453 getLightBox().overlay({ 1454 title: err.content.CDPLbTitle, 1455 width:654, 1456 center:true, 1457 dismiss:false 1458 }, _.template($('#alternative-cdp-tpl').html(), { content : self.content,error:err.message.messages })); 1459 1460 setTimeout(function(){ 1461 if(errCode===301){ 1462 self.formData.set({affiliateMemberJoin:"on"},{silent:true}); 1463 self.formData.set({affiliateCallCount:1},{silent:true}); 1464 }else if(errCode===307) { 1465 self.formData.set({affiliateCallCount:htz.res.config.affiliateMemberCallCount[self.formData.get("companyId")]},{silent:true}); 1466 } 1467 getLightBox().closeOverlay(); 1468 self.submit(); 1469 1470 },4000); 1471 1472 }else{ 1473 self.formData.trigger('error', null, errData, self.referrer.find("#error-list")); 1474 } 1475 }); 1476 } 1477 1478 }, 1479 1480 //hz464486//irac-1122//Create Optimizely Test for Members to go to GBP 1481 handleTraffic: function(referrer,cdpInfo){ 1482 1483 //hz464486 1484 //IRAC-1168 1485 //picking up data from local storage in case session storage expires 1486 let currentLocalStorage = JSON.parse(localStorage.getItem(resConstants.ITINERARY_DATA_WHITELABEL)); 1487 if(currentLocalStorage!=null) { 1488 if (this.model.get("formData").get("pickupLocation") == currentLocalStorage.pickupLocation) { 1489 this.model.get("formData").set({pickupHiddenEOAG: currentLocalStorage.pickupHiddenEOAG}, {silent: true}) 1490 } 1491 if (this.model.get("formData").get("dropoffLocation") == currentLocalStorage.dropoffLocation) { 1492 this.model.get("formData").set({dropoffHiddenEOAG: currentLocalStorage.dropoffHiddenEOAG}, {silent: true}) 1493 } 1494 } 1495 SessionHelper.setItem(resConstants.ITINERARY_DATA_WHITELABEL, JSON.stringify(this.formData.toJSON())); 1496 localStorage.setItem(resConstants.ITINERARY_DATA_WHITELABEL, JSON.stringify(this.formData.toJSON())); 1497 if(cdpInfo!=null || cdpInfo!=undefined){ 1498 1499 let contractType= cdpInfo[0].contractType; 1500 if(contractType!="ASSN" && contractType!="AAAA"){ 1501 1502 window['optimizely'] = window['optimizely'] || []; 1503 window['optimizely'].push({ 1504 type: "page", 1505 pageName: "25881740812_url_targeting_for_membernonapplicantnontanonaaanonus" 1506 }); 1507 1508 } 1509 } 1510 }, 1511 /** 1512 @description Submit reservation for rate request 1513 @function 1514 */ 1515 submitRes : function(){ 1516 1517 SessionHelper.removeItem(resConstants.VEHICLES_ERROR_DATA); //dtc4102//IRAC-4849//Verify AAA CDP 1518 1519 var self = this; 1520 1521 if (self.isResWidget) { 1522 self.viewHelper.specialOffersExtrasCheck(); 1523 } 1524 1525 var cdpInfo={}; 1526 1527 if(self.formData.get('cdpRadioButton') === 'profileCdpIndicator' && self.metaData.get('loggedIn')) { 1528 resUtils.getCDPinfo(this.formData.get("memberSelectedCdp")).done(function(data){ 1529 try{ 1530 self.handleTraffic(this,data); //hz464486//irac-1122//Create Optimizely Test for Members to go to GBP 1531 }catch(err){ 1532 console.log("error handling GBP redirect") 1533 } 1534 1535 if(self.metaData.get('verifyPartnerMember')){ 1536 self.handleAffiliateMember(); 1537 }else{ 1538 self.submit(); 1539 } 1540 }); 1541 1542 }else { 1543 self.viewHelper.validateCdp(this,self.getCdpfield()).done(function(data) { 1544 try{ 1545 self.handleTraffic(self,data); //hz464486//irac-1122//Create Optimizely Test for Members to go to GBP 1546 }catch(err){ 1547 console.log("error handling GBP redirect") 1548 } 1549 1550 if(self.metaData.get('bookAsMember')){ 1551 self.submitResMemberLogin(); 1552 }else { 1553 if(self.metaData.get('verifyPartnerMember')){ 1554 self.handleAffiliateMember(); 1555 1556 }else{ 1557 self.submit(); 1558 } 1559 } 1560 }).fail(function(errData) { 1561 self.formData.trigger('error', null, errData, self.referrer.find("#error-list")); 1562 }); 1563 } 1564 }, 1565 submit : function(){ 1566 var self = this; 1567 if(appConfig.config.isApp) { 1568 if(hzm.utils.isIPHONE()){ 1569 if(self.formData.attributes.pickupTime == "00:00") { 1570 self.formData.attributes.pickupTime=$("#pickup-date-box-app").val().replace(/^.{0,}T/, "").substring(0, 5); 1571 } 1572 if(self.formData.attributes.dropoffTime == "00:00") { 1573 self.formData.attributes.dropoffTime=$("#dropoff-date-box-app").val().replace(/^.{0,}T/, "").substring(0, 5); 1574 } 1575 } 1576 } 1577 self.setDiscounts(); 1578 if(!this.preSubmit()) { return; } 1579 self.resetErrors(); 1580 self.removeGeoPrefIndicator(); 1581 1582 SessionHelper.setItem(resConstants.HOD_VEHICLES, ''); 1583 1584 try { 1585 self.formData.attributes.recommendationBrowserInfo.appCodeName = navigator.appCodeName; 1586 self.formData.attributes.recommendationBrowserInfo.appName = navigator.appName; 1587 self.formData.attributes.recommendationBrowserInfo.appVersion = navigator.appVersion; 1588 self.formData.attributes.recommendationBrowserInfo.cookieEnabled = navigator.cookieEnabled; 1589 self.formData.attributes.recommendationBrowserInfo.onLine = navigator.onLine; 1590 self.formData.attributes.recommendationBrowserInfo.platform = navigator.platform; 1591 self.formData.attributes.recommendationBrowserInfo.product = navigator.product; 1592 self.formData.attributes.recommendationBrowserInfo.userAgent = navigator.userAgent; 1593 self.formData.attributes.recommendationBrowserInfo.language = navigator.language; 1594 } catch (e) { 1595 console.log(e.getMessage); 1596 } 1597 1598 var url, type = null, prevData = self.formData.toJSON(); 1599 if(this.isResFlowEdit){ 1600 if(self.formData.isValid()){ 1601 if(process.isModify()){ 1602 var confNumber = SessionHelper.getItem(resConstants.CONFIRMATION_NUMBER); 1603 url = appConfig.config.rootContext + '/rest/hertz/v2/reservations/'+confNumber+'/makeReservation'; 1604 }else{ 1605 url = appConfig.config.rootContext + '/rest/hertz/v2/reservations/makeReservation'; 1606 } 1607 type = 'POST'; 1608 require(['reservation/res-flow/core/view/helper/view-helper'], function(resFlowHelper){ 1609 var resData = resFlowHelper.prepareDataToSubmit(self.formData.toJSON()); 1610 var modelRef = new Backbone.Model(resData); 1611 self.submitResData(url, type, modelRef, self, prevData); 1612 }); 1613 }else { 1614 self.formData.trigger('error', self.formData, self.formData.validate()); 1615 } 1616 } else if (process.isModify()) { 1617 sessionStorage.setItem("isProcessModify",process.isModify()); 1618 var confNumber = SessionHelper.getItem(resConstants.CONFIRMATION_NUMBER); 1619 url = appConfig.config.rootContext + "/rest/hertz/v2/itinerary/vehicles/" + confNumber; 1620 type = 'POST'; //PUT 1621 self.submitResData(url, type, self.formData, self, prevData); 1622 }else{ 1623 url = appConfig.config.rootContext + "/rest/hertz/v2/itinerary/vehicles"; 1624 type = 'POST'; 1625 self.submitResData(url, type, self.formData, self, prevData); 1626 } 1627 }, 1628 defaultTimeExperiment: function(resData){ 1629 if(htz.iracDefaultTimeExp && htz.iracDefaultTimeExp.enable==true && htz.iracDefaultTimeExp.varient=="treatment"){ 1630 resData.set({ pickupTime : ""}, { silent : true }); 1631 resData.set({ dropoffTime : ""}, { silent : true }); 1632 } 1633 }, 1634 submitResData : function(url, type, resData, self, prevData){ 1635 if(resData.get("pickupTime") == "00:00") 1636 resData.set("pickupTime", "00:01",{silent:true}); 1637 if(resData.get("dropoffTime") == "00:00") 1638 resData.set("dropoffTime", "00:01",{silent:true}); 1639 this.defaultTimeExperiment(resData); 1640 retryView.saveWithRetry(resData,{}, { 1641 url: url, 1642 type: type, 1643 beforeSend : function() { 1644 htz.iracDefaultTimeExp =null; 1645 if(appConfig.config.isApp) { 1646 htz.utils.Spinner.spin(); 1647 } 1648 else { 1649 utilsProxy.getSpinner().spin(); 1650 } 1651 }, 1652 1653 error : function(model, res, retryCount){ 1654 1655 if (res == 'cdpDiscounts') { 1656 AmplitudeUtils.trackApiEvent("API", "", "failed", res); 1657 if(appConfig.config.isApp) { 1658 htz.utils.Spinner.stop(); 1659 } 1660 else { 1661 utilsProxy.getSpinner().stop(); 1662 }
1663 self.displayCDPNotification(); 1664 } else { 1665 if(!self.isResFlowEdit){ 1666 self.model.set('formData', model); 1667 } 1668 self.handleRateFailure(model, res, self.referrer.find("#error-list"), retryCount); 1669 if(appConfig.config.isApp) { 1670 htz.utils.Spinner.stop(); 1671 } 1672 else { 1673 utilsProxy.getSpinner().stop(); 1674 } 1675 } 1676 }, 1677 success : function(model, res){ 1678 1679 //dtc4102//irac-753-RQ not displaying on special offer page 1680 var itiModel = model.get('itinerary'); 1681 if(itiModel && itiModel.rq!=undefined){ 1682 SessionHelper.setItem(resConstants.TYPE_IN_RQ, model.get('itinerary').rq); 1683 } 1684 1685 try{ 1686 var gbpEligible = res?.data?.formData?.GBPEligible || res?.data?.model?.GBPEligible; 1687 AmplitudeUtils.trackUserProperty("GBPEligible", gbpEligible); 1688 }catch(err){ 1689 console.log("Error getting GBP Eligible flag" + err); 1690 } 1691 1692 1693 //dtc4102//IRAC-5349 Recommendation Engine Tracking 1694 var isRecommendationEngine="" 1695 try{ 1696 isRecommendationEngine=((res.data.model.recommendationSipp && res.data.model.recommendationWeight)&&(res.data.model.recommendationSipp!="" && res.data.model.recommendationWeight>0))?true:"undefined"; 1697 }catch (ex){ 1698 var isRecommendationEngine=false; 1699 } 1700 1701 //dtc4102//PRC91530//Google Data Layer 1702 //Rental Search 1703 if(!htz.config.isApp){ 1704 var options={}; 1705 options.scenario='rental-search'; 1706 options.payload=[model.toJSON(),isRecommendationEngine]; //dtc4102//IRAC-5349 Recommendation Engine Tracking 1707 gtmTracker.track(options); 1708 } 1709 1710 1711 //dtc4102//IRAC-5349 Recommendation Engine Tracking 1712 if(!htz.config.isApp && isRecommendationEngine==true){ 1713 var options={}; 1714 options.scenario='recommendation-engine'; 1715 options.payload=res.data.model; 1716 gtmTracker.track(options); 1717 } 1718 1719 //Added for IRAC-693 starts 1720 if (res.resultInfo.url && res.resultInfo.url.includes("whiteLabelBookMod")) { 1721 // Reset location popup flag 1722 self.model.get("metaData").set("pickupLocPopup", false, { silent: true }); 1723 1724 // Construct redirect URL 1725 const baseUrl = res.resultInfo.result; 1726 const protocol = location.protocol + "//"; 1727 const queryParams = res.resultInfo.url.substring("whiteLabelBookMod".length); 1728 const redirectURL = protocol + baseUrl + queryParams; 1729 1730 //Get values from form data 1731 const pickupEOAG = self.formData.get('pickupHiddenEOAG'); 1732 const dropoffEOAG = self.formData.get('dropoffHiddenEOAG'); 1733 const returnAtDifferentLocation = self.formData.get('returnAtDifferentLocationCheckbox'); 1734 1735 if(pickupEOAG !== dropoffEOAG && dropoffEOAG !== "" && returnAtDifferentLocation === ''){ 1736 self.createErrorListContainer(); 1737 const errorMsg = res.message?.messages || "An unknown error occurred."; 1738 self.referrer.find('#error-list ul').append(`<li>${errorMsg}</li>`); 1739 self.referrer.find('#error-list').show(); 1740 htz.utils.Spinner.stop(); 1741 1742 if (lightbox && lightbox.isInUse()) { 1743 lightbox.closeOverlay(); 1744 } 1745 return; 1746 } 1747 1748 window.location.href = redirectURL.replace(/,/g, "/"); 1749 } 1750 1751 1752 //Added for IRAC-693 end 1753 1754 //Added for IRAC-488 starts 1755 if (res.resultInfo.url != null && res.resultInfo.url.indexOf("optHodMod") != -1) { 1756 var hodBaseURL = "//booking.hertz247.com/booking/book"; 1757 var hodUrl = location.protocol + hodBaseURL + res.resultInfo.url.substring("optHodMod".length); 1758 1759 if(self.formData.get('pickupHiddenEOAG') == self.formData.get('dropoffHiddenEOAG') 1760 ||( self.formData.get('returnAtDifferentLocationCheckbox')== '' )){ 1761 1762 var destinationUrl = hodUrl.split("/"); 1763 destinationUrl = destinationUrl.join().replaceAll(",", "/"); 1764 if (res.resultInfo.url.indexOf("Norway") != -1) { 1765 destinationUrl = "https://www.hertzbilpool.no"; 1766 } 1767 hodUrl = destinationUrl; 1768 window.location.href = hodUrl; 1769 }else{ 1770 self.createErrorListContainer(); 1771 self.referrer.find('#error-list ul').append("<li>"+res.message.messages+"</li>"); 1772 self.referrer.find('#error-list').show(); 1773 htz.utils.Spinner.stop(); 1774 if(lightbox.inUse){ 1775 lightbox.closeOverlay(); 1776 } 1777 1778 } 1779 } 1780 1781 //Added for IRAC-488 end 1782 1783 if (res.resultInfo.url != null && res.resultInfo.url.indexOf("UrlHod") != -1) { 1784 var hodUrl = location.protocol + model.metaData.attributes.urlHod + res.resultInfo.url.substring("UrlHod".length); 1785 if(self.formData.get('pickupHiddenEOAG') == self.formData.get('dropoffHiddenEOAG') ||( self.formData.get('returnAtDifferentLocationCheckbox')== '' )){ 1786 var destinationUrl = hodUrl.split("/"); 1787 var countryCode = (model.get('inpPickupCountryCode') ||model.get('inpDropoffCountryCode')) ; 1788 if(destinationUrl[2].includes("hertz247") && countryCode === 'GB'){ 1789 destinationUrl[2] = destinationUrl[2].replace(destinationUrl[2], "www.hertz247.co.uk"); 1790 } 1791 if(destinationUrl[2].includes("hertz247") && countryCode != null && countryCode != 'GB' ){ 1792 destinationUrl[2] = destinationUrl[2].replace(destinationUrl[2], "www.hertz247." + countryCode.toLowerCase() + "/"+ countryCode.toLowerCase() ); 1793 } 1794 destinationUrl = destinationUrl.join().replaceAll(",", "/"); 1795 hodUrl = destinationUrl; 1796 window.location.href = hodUrl; 1797 }else{ 1798 self.createErrorListContainer(); 1799 self.referrer.find('#error-list ul').append("<li>"+res.message.messages+"</li>"); 1800 self.referrer.find('#error-list').show(); 1801 htz.utils.Spinner.stop(); 1802 if(lightbox.inUse){ 1803 lightbox.closeOverlay(); 1804 } 1805 1806 } 1807 } 1808 1809 if(!self.metaData.get('enableDNC')){ 1810 try { 1811 self.storeResInfoInLocalStorage(prevData, model.get("itinerary"), self.getPrevResStorageKey()); 1812 } catch (e) {} 1813 } 1814 if (res && res.data && res.data.href) { 1815 var href = res.data.href; 1816 var splited = href.split("/"); 1817 var quoteId = splited[splited.length-1]; 1818 1819 SessionHelper.setItem(resConstants.QUOTE_ID,quoteId); 1820 1821 reservationInfo.setReservationId(quoteId); 1822 } 1823 1824 self.formData.clear({ silent : true }); 1825 self.formData.set(prevData, { silent: true }); 1826 1827 self.handleRateSuccess(self.metaData, self.formData, self.model, res); 1828 }, 1829 complete : function(){ 1830 self.$el.find('.home').removeClass('step-discount'); 1831 if(getLightBox().inUse && !self.isResFlowEdit){ 1832 getLightBox().closeOverlay(); 1833 } 1834 } 1835 }); 1836 }, 1837 getCdpfield : function(){ 1838 return this.metaData.get('loggedIn') && this.formData.get('memberOtherCdpField') ? this.formData.get('memberOtherCdpField') : this.formData.get('cdpField'); 1839 }, 1840 prepareItineraryInfo : function() { 1841 var previousSearch = this.getLatestPrevSearch(this.getPrevResStorageKey()); 1842 localStorage.setItem("isWeeklyDayFormatOn",this.metaData.get("isWeeklyDayFormatOn")); 1843 if (this.isFormDataEmpty() && !this.isSearch) { 1844 var newTime = this.viewHelper.getUpdatedTime(); 1845 1846 this.formData.set({pickupTime : newTime, dropoffTime : newTime}, {silent : true}); 1847 if (previousSearch) { 1848 this.loadLocalStorageResInfo(previousSearch); 1849 } 1850 1851 } 1852 this.storeDialect(); 1853 }, 1854 storeDialect: function() { 1855 resUtils.updateReservationInfo({dialect : appConfig.config.dialect}); 1856 }, 1857 isFormDataEmpty : function() { 1858 var data = this.formData.attributes; 1859 1860 return (data.pickupDay === "" && data.dropoffDay === "" && data.pickupTime === "10:00" && data.dropoffTime === "10:00" && data.cdpField === "" && data.memberOtherCdpField === "" && data.corporateRate === "" && data.officialTravel === "" && data.pcNumber === "" && data.cvNumber === "" && data.itNumber === "" && data.typeInRateQuote === ""); 1861 }, 1862 getLatestPrevSearch : function(key) { 1863 try { 1864 this.itnInfo = localStorage.getItem(key); 1865 if(this.itnInfo){ 1866 this.itnInfo = JSON.parse(this.itnInfo); 1867 1868 if(!appConfig.config.isApp){ 1869 this.metaData.set({isOldResInfo : true}); 1870 } 1871 return this.itnInfo.prevResData[this.itnInfo.prevResData.length-1].resFormData; 1872 } 1873 } catch (e) {} 1874 }, 1875 getPrevResStorageKey : function() { 1876 return this.metaData.get('loggedIn') ? resConstants.MEMBER_SEARCH_DATA : resConstants.NON_MEMBER_SEARCH_DATA; 1877 }, 1878 storeResInfoInLocalStorage : function(resData, itineraryData, key){ 1879 if(itineraryData){ 1880 var itnData = {}, data = {}, i; 1881 1882 if(this.metaData.get('loggedIn')){ 1883 data.resFormData = {}; 1884 var memRequiredData = ['pickupLocation', 'pickupHiddenEOAG', 'dropoffLocation', 'dropoffHiddenEOAG', 'returnAtDifferentLocationCheckbox', 1885 'pickupDay', 'pickupDayStandard', 'dropoffDayStandard', 'dropoffDay', 'pickupTime', 'dropoffTime', 'militaryClock', 'selectedCarType', 1886 'inpPickupAutoFill', 'inpPickupStateCode', 'inpPickupCountryCode', 'inpPickupSearchType', 'inpDropoffAutoFill', 'inpDropoffStateCode', 'inpDropoffCountryCode', 'inpDropoffSearchType']; 1887 for (i=0; i<memRequiredData.length; i++){ 1888 data.resFormData[memRequiredData[i]] = resData[memRequiredData[i]]; 1889 } 1890 }else{ 1891 data.resFormData = resData; 1892 } 1893 1894 var itnRequiredData = ['age', 'arrivalInfo', 'discounts', 'pickupDate', 'dropoffDate']; 1895 for (i=0; i<itnRequiredData.length; i++){ 1896 itnData[itnRequiredData[i]] = itineraryData[itnRequiredData[i]]; 1897 } 1898 this.itnInfo = localStorage.getItem(key); 1899 if(!this.itnInfo){ 1900 this.itnInfo = {}; 1901 this.itnInfo.prevResData = []; 1902 }else{ 1903 this.itnInfo = JSON.parse(this.itnInfo); 1904 } 1905 data.itnData = itnData; 1906 if(this.checkResExistsInPrevRental(data.resFormData)){ 1907 if(this.itnInfo.prevResData.length >= 5){ 1908 this.itnInfo.prevResData.splice(0, 1); 1909 } 1910 this.itnInfo.prevResData.push(data); 1911 try { 1912 localStorage.setItem(key, JSON.stringify(this.itnInfo)); 1913 } catch (e) {} 1914 } 1915 } 1916 1917 }, 1918 loadLocalStorageResInfo : function(previousSearch) { 1919 var data = this.formatRecentSearchData(previousSearch, true); 1920 1921 try { 1922 const date = new Date(data.pickupDay); 1923 const now = new Date(); 1924 if (date < now) { 1925 const time = this.viewHelper.getUpdatedTime(); 1926 data.pickupTime = time; 1927 } 1928 }catch(e){ 1929 1930 } 1931 1932 this.formData.set(data, {silent : true}); 1933 }, 1934 loadPreviousSearch : function(data) { 1935 this.prepareModel(); 1936 var previousSearch = this.formatRecentSearchData(data, false); 1937 this.formData.set(previousSearch, {silent : true}); 1938 this.metaData.set({isOldResInfo : true}); 1939 this.render(); 1940 }, 1941 formatRecentSearchData : function(data, selFromOverlay) { 1942 if (data) { 1943 var latestFormData = this.formData.attributes; 1944 if(selFromOverlay){ 1945 if(data.pickupLocation != latestFormData.pickupLocation && latestFormData.pickupLocation){ 1946 data.pickupLocation = latestFormData.pickupLocation; 1947 data.pickupHiddenEOAG = latestFormData.pickupHiddenEOAG; 1948 } 1949 if(data.dropoffLocation != latestFormData.dropoffLocation && latestFormData.dropoffLocation){ 1950 data.dropoffLocation = latestFormData.dropoffLocation; 1951 data.dropoffHiddenEOAG = latestFormData.dropoffHiddenEOAG; 1952 } 1953 } 1954 if(data.returnAtDifferentLocationCheckbox === ''){ 1955 data.dropoffLocation = data.dropoffHiddenEOAG = ''; 1956 } 1957 1958 data.inpPickupCountryCode = latestFormData.inpPickupCountryCode; 1959 1960 data.pickupDay = resUtils.formatDate(this.oldDateCheck(data.pickupDayStandard, false), this.formData.get('militaryClock') ) ; 1961 data.dropoffDay = resUtils.formatDate(this.oldDateCheck(data.dropoffDayStandard, true), this.formData.get('militaryClock') ) ; 1962 1963 data.militaryClock = this.formData.get('militaryClock'); 1964 1965 if (!this.metaData.get('loggedIn')) { 1966 if (data.ageSelector && !this.metaData.get('ageDropdownOptions')) { 1967 data.ageSelector = ''; 1968 } 1969 1970 if(data.selectedCarType && this.metaData.get('nvpVehicleGroupSipps')){ 1971 this.metaData.set('selectedCarLabel', this.viewHelper.findCarTypeLabel(data.selectedCarType, this.metaData.get('nvpVehicleGroupSipps'))); 1972 } 1973 1974 if (data.cdpField === ''){ 1975 data.checkDiscount = ''; 1976 this.metaData.set({'discountExists': false}, {silent : true}); 1977 } 1978 1979 if(data.checkDiscount === 'on'){ 1980 this.metaData.set({'discountExists': true}, {silent : true}); 1981 data.memberSelectedCdp = ''; 1982 data.memberOtherCdpField = ''; 1983 1984 if (data.cdpField !== ''){ 1985 data.corporateRate == ''; 1986 data.officialTravel == ''; 1987 1988 this.metaData.set({'isShowCDPOptions': true}, {silent : true}); 1989 } else { 1990 this.metaData.set({'isShowCDPOptions': false}, {silent : true}); 1991 } 1992 } 1993 1994 data.originalRqCheckBox = ''; 1995 } 1996 1997 1998 } 1999 2000 return data; 2001 }, 2002 2003 checkResExistsInPrevRental : function(data){ 2004 if(this.itnInfo){ 2005 var isResExistsInPrevRental = false, prevRentalInfo = this.itnInfo.prevResData; 2006 this.objectKeysPolyfill(); 2007 if (prevRentalInfo) { 2008 for(var i=0; i<prevRentalInfo.length; i++){ 2009 if(JSON.stringify(prevRentalInfo[i].resFormData, Object.keys(prevRentalInfo[i].resFormData).sort()) === JSON.stringify(data, Object.keys(data).sort())){ 2010 isResExistsInPrevRental = true; 2011 break; 2012 } 2013 } 2014 } 2015 2016 if(isResExistsInPrevRental){ 2017 return false;
2018 }else{ 2019 return true; 2020 } 2021 } 2022 }, 2023 objectKeysPolyfill : function(){ 2024 if (!Object.keys) { 2025 Object.keys = function(obj) { 2026 var keys = []; 2027 for (var i in obj) { 2028 if (obj.hasOwnProperty(i)) { 2029 keys.push(i); 2030 } 2031 } 2032 return keys; 2033 }; 2034 } 2035 }, 2036 oldDateCheck : function(date, dropoff){ //rabbondanza 2037 2038 var today = new Date(); 2039 var resDate = new Date( date ); 2040 2041 //TODO: this is just a quick fix to get rid of the NaN - better solution being developed 2042 if( isNaN(resDate.getMonth()) || resDate < today ){ 2043 resDate = dropoff ? new Date( today.getTime() + 86400000 ) : today ; 2044 } 2045 2046 return resDate; 2047 2048 }, 2049 subscribe : function() { 2050 var self = this; 2051 $.subscribe(resConstants.RECENT_SEARCH_DATA, function(_, data){ 2052 self.loadPreviousSearch(data); 2053 }); 2054 }, 2055 setDiscounts : function() { 2056 var self = this; 2057 try { 2058 if(localStorage.getItem('htzDVal')){ 2059 this.formData.set({ maskedDiscountCode : localStorage.getItem('htzDVal')}, { silent : true }); 2060 } 2061 } catch (e) {} 2062 2063 if(this.metaData.get('isRedeemPoints')) { 2064 this.formData.set({ cvNumber: '', pcNumber: '', typeInRateQuote: '' , itNumber: '' }, { silent : true }); 2065 } 2066 if(this.formData.get('checkDiscount') != "on"){ 2067 this.formData.set({memberSelectedCdp : '', memberOtherCdpField:'', cdpRadioButton:'' }, { silent : true }); 2068 } 2069 2070 if ((self.metaData.get('loggedIn') && (self.formData.get('memberSelectedCdp') !== '' || self.formData.get('memberOtherCdpField') !== '')) || 2071 (!self.metaData.get('loggedIn') && (self.formData.get('cdpField') !== '')) || 2072 (self.formData.get('pcNumber') !== '' || self.formData.get('cvNumber') || self.formData.get('itNumber') || self.formData.get('typeInRateQuote'))) { 2073 2074 this.metaData.set({ discountExists : 1 }, { silent : true }); 2075 } else { 2076 this.metaData.set({ discountExists : 0 }, { silent : true }); 2077 } 2078 }, 2079 resetErrors : function() { 2080 Utils.clearErrorMessage(this.referrer.find('#error-list')); 2081 }, 2082 trackRetryErrorInfo : function(res, retryCount) { 2083 try { 2084 if(retryCount >= 0) { 2085 var errors = res.responseText; 2086 if(errors.indexOf('RE100') > 0) { 2087 resUtils.updateReservationInfo({ 2088 pickupLocationCode : this.formData.get('pickupHiddenEOAG'), 2089 pickupDate : this.formData.get('pickupDay'), 2090 pickupTime : this.formData.get('pickupTime'), 2091 returnDate : this.formData.get('dropoffDay'), 2092 returnTime : this.formData.get('dropoffTime') 2093 }); 2094 2095 resUtils.trackWarning({ 2096 warning : 'RE100-Itn-'+retryCount 2097 }); 2098 } 2099 } 2100 } 2101 catch(e){ } 2102 }, 2103 handleRateFailure : function(model, res, target, retryCount) { 2104 var self = this; 2105 self.bindDataEvents(); 2106 self.trackLocationInfo(); 2107 2108 if(self.metaData.get('bookAsMember')){ 2109 //During book as member, if the user was successful in logging but their res validation fails, 2110 //need to save error into session storage and refresh the page to show logged in status 2111 var errors; 2112 try { 2113 errors = JSON.parse(res.responseText).message; 2114 Utils.trackError(errors); 2115 SessionHelper.setItem(resConstants.ERRORS, JSON.stringify(errors)); 2116 } 2117 catch(e){ } 2118 2119 if(Utils.isUseStoragePolyfill()){ 2120 Utils.storeItemIE('ieErrors', errors); 2121 } 2122 2123 self.metaData.set({ bookAsMember : 0 }, { silent : true }); 2124 window.location.reload(); 2125 } 2126 else { 2127 2128 self.formData.trigger('error', model, res, target); 2129 } 2130 if(self.isResFlowEdit){ 2131 //updating itinerary data in session with the latest itinerary data for vehicle/extras unavailable scenario 2132 SessionHelper.setItem(resConstants.ITINERARY_DATA, JSON.stringify(self.model.toJSON())); 2133 var modelRef = new Backbone.Model(res.responseJSON); 2134 resUtils.goToPageFromResData(modelRef); 2135 } 2136 self.trackRetryErrorInfo(res, retryCount); 2137 }, 2138 2139 //hz464486//IRAC-935-add-discount-codes-array-to-local-storage 2140 saveToLocalStorage: function(data,keys){ 2141 var data= data; 2142 try{ 2143 $.each(keys, function(index,key){ 2144 localStorage.setItem(key,data.get(key)) 2145 }); 2146 }catch(ex){ 2147 2148 } 2149 }, 2150 handleRateSuccess : function(metaData, formData, model, res) { 2151 var self = this; 2152 self.metaData = metaData; 2153 self.formData = formData; 2154 2155 self.model = model; 2156 2157 if(!self.metaData.get('discountExists')) { 2158 self.formData.set({ cdpField : "", checkDiscount : "", corporateRate: "", cvNumber: "", pcNumber:"" ,typeInRateQuote: "" , itNumber: "" , officialTravel :"" }, { silent: true }); 2159 }else{ 2160 //hz464486//IRAC-935-add-discount-codes-array-to-local-storage 2161 var keys=["cdpField","pcNumber","cvNumber","itNumber","officialTravel","corporateRate","typeInRateQuote"] 2162 self.saveToLocalStorage(self.formData,keys); 2163 } 2164 2165 self.model.set({'formData' : self.formData, 'metaData' : self.metaData}
2165); 2166 2167 if(res && res.resultInfo) { 2168 SessionHelper.setItem(resConstants.ITINERARY_DATA, JSON.stringify(self.model.toJSON())); 2169 2170 if (res.resultInfo.result === 'fts') { 2171 self.handleFTSRedirect(res.resultInfo.url); 2172 } else if (res.resultInfo.result === 'geo') { 2173 self.handleMemberGeographyPref(res.resultInfo.url); 2174 } else { 2175 self.formData.set({'dropoffDay': res.data.itinerary.dropoffDateValue, 'dropoffTime' : res.data.itinerary.dropoffTimeValue}); 2176 self.model.set('formData', self.formData); 2177 if((res && res.data && res.data.meta && res.data.meta.target === resConstants.VEHICLES) || !self.isResFlowEdit){ 2178 SessionHelper.setItem(resConstants.VEHICLES_DATA, JSON.stringify(res.data.model)); 2179 if(res.message) { 2180 try { 2181 SessionHelper.setItem(resConstants.VEHICLES_ERROR_DATA, JSON.stringify(res.message)); 2182 } catch(e){} 2183 } 2184 } 2185 SessionHelper.setItem(resConstants.ITINERARY_INFO_DATA, JSON.stringify(res.data.itinerary)); 2186 if(res.data.rateDetails) { 2187 SessionHelper.setItem(resConstants.RATE_DETAILS_DATA, JSON.stringify(res.data.rateDetails)); 2188 } 2189 self.navigateToVehiclePage(res); 2190 2191 //dtc4102//PRC91530//Google Data Layer 2192 //Impressions - Product Data Car 2193 if(!htz.config.isApp){ 2194 var options={}; 2195 options.scenario='impressions-car'; 2196 options.payload=res.data.model.vehicles; 2197 gtmTracker.track(options); 2198 2199 //Checkout Funnel// Step 1 - Choose your vehicle 2200 options.scenario='begin_checkout'; 2201 gtmTracker.track(options); 2202 } 2203 2204 } 2205 } else { 2206 if (WebTracking) { 2207 WebTracking.setError("debug-itinerary-submit-failure" + "-" + resUtils.getResponseText(res) + "-" + Utils.browserDeviceType(), "itinerary"); 2208 } 2209 if(appConfig.config.isApp) { 2210 htz.utils.Spinner.stop(); 2211 } 2212 else { 2213 utilsProxy.getSpinner().stop(); 2214 } 2215 } 2216 }, 2217 navigateToVehiclePage: function(res){ 2218 if(this.isResFlowEdit){ 2219 var dataKeys = [resConstants.VEHICLES_DATA, resConstants.EXTRAS_DATA, resConstants.ITINERARY_INFO_DATA, resConstants.RATE_DETAILS_DATA]; 2220 resUtils.clearSessionStorage(dataKeys); 2221 var modelRef = new Backbone.Model(res); 2222 resUtils.goToPageFromResData(modelRef); 2223 }else if(!this.isResWidget){ 2224 require(['reservation/config'], function(resConfig){ 2225 var toPage = 'vehicles'; 2226 $('body').css('background-color','#ededed'); 2227 if(process.isModify()) { 2228 toPage = 'modify/'+toPage; 2229 } 2230 resConfig.getRotar().rotate(toPage); 2231 }); 2232 }else{ 2233 window.location.href = appConfig.config.rootContext +"/reservation/vehicles"; 2234 } 2235 }, 2236 handleFTSRedirect : function(url) { 2237 window.location.href = url; 2238 }, 2239 handleMemberGeographyPref : function(url) { 2240 var self = this; 2241 2242 if (self.geoPrefLocationFound()) { 2243 viewHelper.geoPreferencesSubmitWithItnInfo(self, getLightBox()); 2244 } else { 2245 require(['reservation/itinerary/core/view/itinerary-geo-preferences-overlay-view'], function(itnGeoPrefOverlayView) { 2246 var isNew = self.isResFlowEdit? true : false; 2247 getLightBox(isNew).overlay({ 2248 title : self.content.ememberGlobals.geoPreferencesForResModalTitle 2249 }, new itnGeoPrefOverlayView({content : self.content, template : "#geo-preferences-overlay-tpl", referrer : self, lBoxRef : getLightBox(), viewHelper : viewHelper}).render().el 2250 ); 2251 utilsProxy.getSpinner().stop(); 2252 }); 2253 } 2254 2255 }, 2256 geoPrefLocationFound : function() { 2257 if(this.metaData.get('loggedIn')) { 2258 return resUtils.checkIfGeoPrefLocation(this.formData.get('pickupHiddenEOAG') || this.formData.get('pickupLocation')); 2259 } else { 2260 return false; 2261 } 2262 }, 2263 keepTrackOfGeoPrefLocation : function() { 2264 resUtils.keepTrackOfGeoPrefLocation(this.formData.get('pickupHiddenEOAG') || this.formData.get('pickupLocation')); 2265 }, 2266 removeGeoPrefIndicator : function() { 2267 //IRAC-2852 - Must reset the fromProfileForGoldService indicator to blank on resubmit or else any update to discounts are not set in session. 2268 if(this.formData.get('fromProfileForGoldService') == 'Y') { 2269 this.formData.set({'fromProfileForGoldService' : ''}, {silent: true}) 2270 } 2271 }, 2272 2273 /** 2274 @description If there is errorData pass to the handleLocationErrors method 2275 @function 2276 @param {object} errorData messages 2277 @param {boolean} nested 2278 */ 2279 handleErrorData : function (errors, nested){ 2280 if (errors){ 2281 var errorData = this.viewHelper.parseErrorObject(errors, nested); 2282 this.handleLocationErrors(errorData); 2283 SessionHelper.removeItem(resConstants.ERRORS); 2284 } 2285 else return; 2286 }, 2287 /** 2288 @description Determine whether to pass to handle as proximity search or hod functionality 2289 @function 2290 @param {object} errorData messages 2291 @param {boolean} nested 2292 */ 2293 handleLocationErrors : function (errorData) { 2294 if (errorData) { 2295 Utils.clearErrorMessage(); 2296 for(var i = 0; i < errorData.length; i++){ 2297 if (errorData[i].informationForRedirection) { 2298 switch(errorData[i].informationForRedirection.functionality) { 2299 case "proximitySearch": 2300 this.showNearbyLocations(errorData[i]); 2301 break; 2302 case "hod": 2303 this.showHODLocations(errorData[i]); 2304 break; 2305 case "hod24X7": 2306 this.handleHOD24X7(errorData[i]); 2307 break; 2308 case "dtg": 2309 if (this.isDtgProximity(errorData)) { 2310 delete errorData[i].message; 2311 } 2312 2313 this.showDTGLocations(errorData[i]); 2314 break; 2315 } 2316 } 2317 } 2318 } 2319 }, 2320 /**
2321 @description Display error with link to nearby locations 2322 @function 2323 @param {object} errorData messages 2324 */ 2325 showNearbyLocations : function(errorData) { 2326 this.createErrorListContainer(); 2327 2328 var nearBy = this.referrer.find('#error-list ul').append(_.template($('#nearby-locations-tpl').html())); 2329 2330 nearBy.find('li:last .nearby-message').append(errorData.message.replace("["+errorData.errorCode+"]","")); 2331 2332 var proxSearch = nearBy.find('li:last .proximity-search'), 2333 linkInfo = errorData.informationForRedirection.linkInformation; 2334 2335 for (var i=0; i<linkInfo.length; i++){ 2336 proxSearch.attr('href', linkInfo[i].linkUrl); 2337 proxSearch.append(linkInfo[i].linkContent); 2338 } 2339 nearBy.find('li:last .nearby-message-code').append("["+errorData.errorCode+"]"); 2340 this.referrer.find('#error-list').show(); 2341 }, 2342 2343 /** 2344 @description Display error with HOD content and link 2345 @function 2346 @param {object} errorData messages 2347 */ 2348 showHODLocations : function(errorData) { 2349 var self = this; 2350 2351 self.createErrorListContainer(); 2352 self.referrer.find('#error-list ul').append("<li>"+errorData.message+"</li>"); 2353 2354 if(errorData.informationForRedirection && errorData.informationForRedirection.linkInformation) { 2355 require(['reservation/itinerary/core/view/hod-link-view'], function(hodLinkView){ 2356 new hodLinkView({ collection : errorData.informationForRedirection.linkInformation }); 2357 2358 self.referrer.find('#error-list').show(); 2359 }); 2360 } 2361 }, 2362 isDtgProximity : function(errorData) { 2363 return (errorData.length > 1 && errorData[0].informationForRedirection.functionality == 'dtg' 2364 && errorData[1].informationForRedirection.functionality == 'proximitySearch'); 2365 }, 2366 showDTGLocations : function(errorData) { 2367 var self = this; 2368 2369 if (errorData.message) { 2370 this.createErrorListContainer(); 2371 this.referrer.find('#error-list ul').append("<li>"+errorData.message+"</li>"); 2372 this.referrer.find('#error-list').show(); 2373 } 2374 2375 if(errorData.informationForRedirection && errorData.informationForRedirection.linkInformation) { 2376 require(['reservation/dollar-thrifty-redirect/core/presenter/dtg-presenter'], function(presenter){ 2377 presenter.showDtgRedirect(self.content.reservationGlobals.dtgRedirection.dtgHeader, errorData.informationForRedirection.linkInformation); 2378 }); 2379 } 2380 }, 2381 /** 2382 @description Create the error list container 2383 @function 2384 */ 2385 createErrorListContainer : function() { 2386 if (!this.referrer.find('#error-list li').length){ 2387 this.referrer.find('#error-list').append("<ul></ul>"); 2388 } 2389 }, 2390 /** 2391 @description Determine how to handle the HOD 24x7 scenarios based calling the HOD vehicle availability web service 2392 @function 2393 @param {object} errorData messages 2394 */ 2395 handleHOD24X7 : function(errorData) { 2396 utilsProxy.getSpinner().spin(); 2397 2398 var self = this, url, hodSessionData, linkType, linkInfo = errorData.informationForRedirection.linkInformation, 2399 dataKeys = [resConstants.ITINERARY_DATA, resConstants.ITINERARY_INFO_DATA, resConstants.RATE_DETAILS_DATA, resConstants.VEHICLES_DATA]; 2400 resUtils.clearSessionStorage(dataKeys); 2401 2402 if (linkInfo.length > 0) { 2403 if (!!linkInfo[0].hod24X7VehicleAvailabilityServiceLink) { 2404 linkType = 'vehicleAvailability'; 2405 url = linkInfo[0].hod24X7VehicleAvailabilityServiceLink; 2406 } else if (!!linkInfo[0].proximitySearchServiceLink) { 2407 linkType = 'proximitySearch'; 2408 url = linkInfo[0].proximitySearchServiceLink; 2409 } 2410 } 2411 2412 if (url) { // If a web service url exists, call the web service 2413 self.callHodWebService(url, linkType, errorData); 2414 } else { // else, go to the vehicle page 2415 SessionHelper.setItem(resConstants.HOD_VEHICLES, ''); 2416 utilsProxy.getSpinner().stop(); 2417 self.navigateToVehiclePage(); 2418 } 2419 }, 2420 /** 2421 @description Call the HOD web service and handle based on linkType 2422 @function 2423 @param {String} url Webservice URL 2424 @param {object} hodSessionData object 2425 */ 2426 callHodWebService : function(url, linkType, errorData){ 2427 var self = this, hodSessionData; 2428 2429 $.ajax({ 2430 url : url, 2431 dataType : 'jsonp', 2432 jsonpCallback: 'callback', 2433 contentType : 'application/json', 2434 timeout : 10000, 2435 success : function(res) { 2436 if (linkType === 'vehicleAvailability' && res === 'true') { // If the HOD vehicle availability web service returns true, go to the vehicle page 2437 SessionHelper.setItem(resConstants.HOD_VEHICLES, 'true'); 2438 self.navigateToVehiclePage(); 2439 } else if (linkType === 'proximitySearch' && res.locationsAvailable) { // Else if the HOD proximity search web service returns true, go to the vehicle page to show map 2440 self.navigateToVehiclePage(); 2441 } else { 2442 if (linkType === 'vehicleAvailability'){ 2443 SessionHelper.setItem(resConstants.HOD_VEHICLES, 'false'); 2444 } 2445 self.showNearbyLocations(errorData); // Else load the nearby locations error on the homepage 2446 } 2447 }, 2448 error : function() { 2449 SessionHelper.setItem(resConstants.HOD_VEHICLES, ''); 2450 self.showNearbyLocations(errorData); 2451 }, 2452 complete : function() { 2453 utilsProxy.getSpinner().stop(); 2454 } 2455 }); 2456 }, 2457 /** 2458 @description Set HOD 24x7 variables in session storage 2459 @function 2460 @param {object} hodLocationInfo object 2461 */ 2462 setHodSessionStorage : function (hodLocationInfo){ 2463 Utils.storeItemIE('ieHodLocationInfo', hodLocationInfo, { async : false, timeout : 3000 }); 2464 }, 2465 /** 2466 @description Track pickup and dropoff location eoag 2467 @function 2468 */ 2469 trackLocationInfo : function() { 2470 var pickupEOAG = this.formData.get('pickupHiddenEOAG'); 2471 var dropoffEOAG = this.formData.get('dropoffHiddenEOAG'); 2472 if (dropoffEOAG === '') { 2473 dropoffEOAG = pickupEOAG; 2474 } 2475 2476 var data = { 2477 linkTrackVars : 'eVar3,eVar4', 2478 eVar3 : pickupEOAG, 2479 eVar4 : dropoffEOAG 2480 }; 2481 2482 if(typeof WebTracking !== 'undefined'){ 2483 WebTracking.sendTrackingData('Pickup and Dropoff Locations', data, true); 2484 } 2485 }, 2486 displayCDPNotification : function() { 2487 var lBox = getLightBox(); 2488 if(lBox.inUse && !this.isResFlowEdit){ 2489 lBox.closeOverlay(); 2490 } 2491 2492 var self = this; 2493 var close = function(){ self.viewHelper.trackCdpOptions('close'); }; 2494 2495 require(['reservation/itinerary/core/view/itinerary-cdp-view'], function(cdpView) { 2496 var isNew = self.isResFlowEdit? true : false;
2497 getLightBox(isNew).overlay({ 2498 title : self.content.homePage.homePageContent.cdpOverlayTitle, 2499 dismiss : false, 2500 close : close 2501 }, 2502 new cdpView({ model : self.model, metaData : self.metaData, formData : self.formData, content : self.content, referrer : self, lBoxRef : getLightBox() }).render().el 2503 ); 2504 }); 2505 }, 2506 doCleanup : function() { 2507 if(this.redeemViewRef && this.redeemViewRef.doCleanup) { this.redeemViewRef.doCleanup(); } 2508 this.template = this.content = this.metaData = this.formData = this.redeemViewRef = this.viewHelper = lightbox = null; 2509 } 2510 }); 2511 return itineraryFormView; 2512}); 2513 2514define("reservation/itinerary/core/view/itinerary-ta-country-view",["jquery","underscore","backbone"],function(c,d,e){return e.View.extend({events:{"keyup select":"eventHandler"},initialize:function(){this.template=this.options.template;this.content=this.options.content;this.metaData=this.model.get("metaData");this.formData=this.model.get("formData");this.resizeElements=this.options.resizeElements?this.options.resizeElements:!1},eventHandler:function(a){var a=c(a.target),b=a.val();a.is(":checkbox")&& 2515(b=a.is(":checked")?b:"");this.formData.set(a.attr("name"),b,{silent:!0})},render:function(){this.$el.append(d.template(this.template,{metaData:this.metaData.attributes,formData:this.formData.attributes,content:this.content}));!0==this.resizeElements&&this.reseizeElementsforGTM();return this},reseizeElementsforGTM:function(){1050<=c(window).width()&&this.$el.closest("#new-itineraryRow").find("#new-locationPicker-container").css("width","49%")},doCleanup:function(){this.template=this.content=this.metaData= 2516this.formData=null}})}); 2517define("reservation/itinerary/core/view/itinerary-location-view","jquery underscore backbone config/app-config utils/utils-proxy reservation/process-config/core/reservation-constants reservation/itinerary/core/view/itinerary-age-view reservation/itinerary/core/view/helper/view-helper".split(" "),function(c,i,n,f,o,g,k,l){var j=null;return n.View.extend({events:{"focus .ww-input":"handleClearIcon","keyup .ww-input":"triggerWordwheel","keyup input":"eventHandler","change input":"eventHandler","change select":"eventHandler", 2518"click #one-way":"showOneWay","click .find-location":"findLocations","click #one-way-info":"displayOneWayOverlay","click .icons-location":"setGeoLocation","click #previous-rentals":"previousRentals","click #previous-search":"previousSearch","keydown #pickup-location":"setDandCChangedValue","change #pickup-location":"setDandCChangedValue","keydown #dropoff-location":"setDandCChangedValue","change #dropoff-location":"setDandCChangedValue","click .dnc-button":"showDncOverlay","click .dnc-link":"showDandCLocationLink", 2519"change #pickup-location":"trackReservationStart","change #pickup-location":"handleAgeDropdownOnEOAGChange","change #pickup-location":"handleAffiliateCDPVerificationOAG","change #dropoff-location":"handleAffiliateCDPVerificationOAG","click .clearInput":"clearInput"},handleAffiliateCDPVerification:function(){this.metaData.get("loggedIn")?""!=this.formData.get("memberOtherCdpField")?this.$el.prevObject.find("#member-other-cdp").trigger("change"):this.$el.prevObject.find("#member-selected-cdp").trigger("change"): 2520""!=this.formData.get("cdpField")&&this.$el.prevObject.find("#cdp-textfield").trigger("change")},handleAffiliateCDPVerificationOAG:function(a){a=c(a.target);"pickupLocation"===a.attr("name")?this.formData.set({pickupHiddenEOAG:""},{silent:!0}):"dropoffLocation"===a.attr("name")&&this.formData.set({dropoffHiddenEOAG:""},{silent:!0});this.handleAffiliateCDPVerification()},clearInput:function(a){a=a.currentTarget;this.metaData.get("enableDNC")?(c(a).closest("div").find("input").val(""),c(a).closest("div").find("input").trigger("change")): 2521(c(a).closest("label").find("input").val(""),c(a).closest("label").find("input").trigger("change"))},handleClearIcon:function(a){a=a.currentTarget;this.metaData.get("enableDNC")?""!=c(a).val()?c(a).next().css({display:"block","margin-top":"-30px"}):c(a).next().css("display","none"):""!=c(a).val()?c(a).next().next().css("display","block"):c(a).next().next().css("display","none")},triggerWordwheel:function(a){this.handleClearIcon(a);"9"!=a.keyCode&&Wordwheel.trigWW(a)},initialize:function(){var a=this; 2522this.template=this.options.template;this.content=this.options.content;this.viewHelper=this.options.viewHelper;this.isResFlowEdit=this.options.isResFlowEdit;this.metaData=this.model.get("metaData");this.formData=this.model.get("formData");this.subscribe();Wordwheel.input=null;Wordwheel.selectFunc=function(b){a.setLocation(b);
2522a.saveLocationInSession(b);!1===htz.config.isApp&&"pickup-location"===b.get("locType")&&a.handleAgeDropdownOnEOAGChange(!0)}},setPickupLocation:function(a){this.formData.set(a, 2523{silent:!0});this.$el.find("#pickup-location").val(a.pickupLocation)},setDeliveryPickupLocation:function(a){this.formData.set(a.formData,{silent:!0});this.metaData.set(a.metaData,{silent:!0});this.setPickupLocationField(a.formData.pickupLocation);this.$el.find("#delivery-infolink").show()},setCollectionDropoffLocation:function(a){this.formData.set(a.formData,{silent:!0});this.metaData.set(a.metaData,{silent:!0});this.setDropoffLocationField(a.formData.dropoffLocation);this.$el.find("#collection-infolink").show()}, 2524setPickupLocationField:function(a){this.$el.find("#pickup-location").val(a)},setDropoffLocationField:function(a){this.$el.find("#dropoff-location").val(a)},subscribe:function(){var a=this;c.subscribe(g.LOCATION_PICKUP,function(b,d){a.setPickupLocation(d)});a.deliveryAndCollectionSubscribe()},deliveryAndCollectionSubscribe:function(){var a=this;c.unsubscribe(g.LOCATION_DELIVERY_PICKUP);c.unsubscribe(g.LOCATION_COLLECTION_DROPOFF);c.subscribe(g.LOCATION_DELIVERY_PICKUP,function(b,d){a.setDeliveryPickupLocation(d)}); 2525c.subscribe(g.LOCATION_COLLECTION_DROPOFF,function(b,d){a.setCollectionDropoffLocation(d)})},resetLocations:function(a){"pickup-country"===a?(this.pickupLocationList.resetting=!0,this.pickupLocationList.model.reset()):"dropoff-country"===a&&(this.dropoffLocationList.resetting=!0,this.dropoffLocationList.model.reset())},resetLocationValues:function(a,b){this.formData.set(a,b,{silent:!0})},renderDropDownLocations:function(){var a=this;require(["reservation/common/location-list/core/presenter/location-presenter"], 2526function(b){a.pickupLocationList=null;a.dropoffLocationList=null;b.buildCountryLists([a.formData.get("pickupCountry"),a.formData.get("dropoffCountry")],["#pickup-country","#dropoff-country"],a);a.formData.get("pickupCountry")&&(a.pickupLocationList=b.buildLocationsList(a.content,a.formData.get("pickupCountry"),a.formData.get("pickupHiddenEOAG"),"#pickup-location",a));a.formData.get("dropoffCountry")&&(a.dropoffLocationList=b.buildLocationsList(a.content,a.formData.get("dropoffCountry"),a.formData.get("dropoffHiddenEOAG"), 2527"#dropoff-location",a))})},getLocationsForCountry:function(a,b){var d=this;require(["reservation/common/location-list/core/presenter/location-presenter"],function(c){"pickup-country"===b.attr("id")?d.pickupLocationList=c.buildLocationsList(d.content,a,d.formData.get("pickupHiddenEOAG"),"#pickup-location",d):d.dropoffLocationList=c.buildLocationsList(d.content,a,d.formData.get("dropoffHiddenEOAG"),"#dropoff-location",d)})},refreshBanner:function(a,b,d){this.viewHelper.refreshBanner(a,b,d)},setGeoLocation:function(a){this.viewHelper.setGeoLocation(c(a.target).attr("id"), 2528["#pickup-location","#dropoff-location"],this.content)},eventHandler:function(a){var a=c(a.target),b=a.val();a.is(":checkbox")&&(b=a.is(":checked")?b:"");this.formData.set(a.attr("name"),b,{silent:!0})},findLocations:function(a){var b,d,h,e,m=0,g=0;d=c("#pickup-location").val();h=c("#dropoff-location").val();b=f.config.rootContext+"/location?search=";"return-loc"===c(a.target).parent().attr("id")?(b+=h+"&triggerSearch=true&searchFrom=Homepage&locType=dOff",e=h):(b+=d+"&triggerSearch=true&searchFrom=Homepage&locType=pUp", 2529e=d);void 0!=typeof locList&&""!=locList&&i.each(locList.models,function(a){a.get("searchTerm")===e&&(30==a.get("searchType")&&(m=a.get("latitude"),g=a.get("longitude"),b+="&lat="+m+"&lng="+g),3==a.get("categoryCode")&&(HStorage.setItem("cCodeHomepage",a.get("countryCode"),"","s"),HStorage.setItem("cNameHomepage",a.get("countryName"),"","s"),HStorage.setItem("sCodeHomepage",a.get("stateCode"),"","s"),HStorage.setItem("sNameHomepage",a.get("stateName"),"","s"),HStorage.setItem("cityHomepage",a.get("city"), 2530"","s"),b+="&locTab=2"))});window.location.href=b;return!1},displayOneWayOverlay:function(){null==j&&(j=o.getLightbox());j.overlay({url:"one-way-overlay",title:this.content.homePage.homePageContent.oneWayOverlayTitle,width:584,center:!0},i.template(c("#one-way-tpl").html(),{content:this.content}));return!1},showOneWay:function(a){var b=this.$el.find("#return-loc"),d=this.$el.find("#new-dropoffLoc-containerInner");c(a.target).prop("checked")?(this.formData.set("returnAtDifferentLocationCheckbox","on", 2531{silent:!0}),b.show(),d.show()):(this.formData.set("returnAtDifferentLocationCheckbox","",{silent:!0}),b.hide(),d.hide());this.viewHelper.setFooterPadding()},setValue:function(a,b,d){b[d]=a?a:""},setLocation:function(a){var b="pickup-location"===a.get("locType")?"inpPickup":"inpDropoff",d="",c=a.get("searchType")?a.get("searchType").toString():a.get("searchType"),d=!a.get("locationTitle")&&!a.get("displayText")?this.$el.find("#"+a.get("locType")).val():a.get("locationTitle")||a.get("displayText"), 2532e={},f="inpPickup"===b?"pickup":"dropoff";this.setValue(d,e,f+"Location");this.setValue(a.get("preferredOag"),e,f+"HiddenEOAG");a.get("hasSpecialInstruction")?this.setValue("Y",e,b+"HasSpecialInstruction"):this.setValue("N",e,b+"HasSpecialInstruction");this.setValue(a.get("isServedBy"),e,b+"IsServedBy");this.setValue(a.get("stateCode"),e,b+"StateCode");this.setValue(a.get("countryCode"),e,b+"CountryCode");this.setValue(c,e,b+"SearchType");this.setValue(a.get("displayText")?"Y":"",e,b+"AutoFill"); 2533this.setValue(a.get("optGoldAnytime"),e,b+"OptGoldAnytime");33==a.get("searchType")&&this.setValue(a.get("zip"),e,f+"ZipCode");this.formData.set(e,{silent:!0});this.metaData.set(f+"LocPopup",!1,{silent:!1});a.get("preferredOag")&&("pickup-location"===a.get("locType")?this.refreshBanner(!this.metaData.get("blockAds"),a.get("preferredOag")):this.refreshBanner(!1,a.get("preferredOag")));this.metaData.get("enableDNC")&&("inpPickup"===b&&this.metaData.get("deliveryLocation")?this.metaData.unset("deliveryLocation"): 2534"inpDropoff"===b&&this.metaData.get("collectionLocation")&&this.metaData.unset("collectionLocation"))},handleAgeDropdownOnEOAGChange:i.debounce(function(a){(a=a&&"boolean"==typeof a?!0:!1)||this.model.get("formData").set({pickupHiddenEOAG:""},{silent:!0});if(!this.metaData.get("loggedIn")||!this.metaData.get("memberHasAge"))""===c("#pickup-location").val()?(this.formData.set({ageSelector:""},{silent:!0}),c("#itn-age").hide()):window.location.href.includes("/rentacar/reservation")?(new k({el:this.$el.closest("form").find(".itn-age-info"),
2535template:c("#itinerary-homepage-age-tpl").html(),model:this.model,content:this.content,fromWW:a})).render():(new k({el:this.$el.closest("form").find("#itn-age-info"),template:c("#itinerary-age-tpl").html(),model:this.model,content:this.content,fromWW:a})).render()},500),getLocationHours:function(a){var b=this;a&&l.getRentalLocationDetails(a,function(){l.storeLocationOag();b.handleAffiliateCDPVerification()})},saveLocationInSession:function(a,b){var b=a.get("locType"),d=this.formData.get("pickupHiddenEOAG"), 2536h=this.formData.get("dropoffHiddenEOAG");if(""!==d&&"pickup-location"===b){var e={pickupLocation:a.get("locationTitle")||a.get("displayText"),inpPickupStateCode:a.get("stateCode"),inpPickupCountryCode:a.get("countryCode"),inpPickupSearchType:a.get("searchType"),inpPickupAutoFill:this.formData.get("inpPickupAutoFill"),pickupOptGoldAnytime:a.get("optGoldAnytime"),pickupHiddenEOAG:d};c.ajax({url:f.config.rootContext+"/handlers/SaveSessionInformationHandler",data:e});this.getLocationHours(d)}""===d&& 2537"pickup-location"===b&&(e={pickupLocation:this.formData.get("pickupLocation")},c.ajax({url:f.config.rootContext+"/handlers/SaveSessionInformationHandler",data:e}));""!==h&&"dropoff-location"===b&&(e={dropoffLocation:a.get("locationTitle")||a.get("displayText"),inpDropoffStateCode:a.get("stateCode"),inpDropoffCountryCode:a.get("countryCode"),inpDropoffSearchType:a.get("searchType"),inpDropoffAutofill:this.formData.get("inpDropoffAutoFill"),dropoffOptGoldAnytime:a.get("optGoldAnytime"),dropoffHiddenEOAG:h, 2538returnAtDifferentLocationCheckbox:"on"},c.ajax({url:f.config.rootContext+"/handlers/SaveSessionInformationHandler",data:e}),this.getLocationHours(h));""===h&&"dropoff-location"===b&&(e={dropoffLocation:this.formData.get("dropoffLocation")},c.ajax({url:f.config.rootContext+"/handlers/SaveSessionInformationHandler",data:e}))},previousSearch:function(){var a=this;a.trackPreviousRentals();require(["reservation/previous-itinerary/core/presenter/previous-itinerary-presenter"],function(b){b.show(a.content, 2539a.metaData.get("loggedIn"),a.metaData.get("nvpVehicleGroupSipps"),a.viewHelper)});return!1},previousRentals:function(){var a=this;require(["reservation/previous-rentals/core/presenter/previous-rentals-presenter"],function(b){b.show(a.content.homePage.dandCHomePageContent.previousRentals)});return!1},trackPreviousRentals:function(){"undefined"!==typeof WebTracking&&WebTracking.trackPage("previous-searches-link")},openWindow:function(a,b,d){return window.open(a,b,d)},showDncOverlay:function(a){var b, 2540d,f=this.metaData.get("loginRequired");"delivery"===c(a.currentTarget).attr("id")?(b=this.metaData.get("urlDeliverVehicle"),d="D"):"collection"===c(a.currentTarget).attr("id")&&(b=this.metaData.get("urlCollectVehicle"),d="C");f?document.location.href=b:this.displayDeliveryAndCollectionOptions(d)},displayDeliveryAndCollectionOptions:function(a){var b=this;require(["reservation/delivery-and-collection/core/presenter/delivery-and-collection-presenter","text!"+f.config.rootContext+"/assets/"+f.config.buildId+ 2541"/html/all/reservation/delivery-and-collection/delivery-and-collection.html"],function(d,f){c("body").append(f);d.showCountriesView(a,c("#dandc-tpl"),b.content.DandCView.DandC.locationSearch)})},showDandCLocationLink:function(a){var a=c(a.target).parent().attr("id"),b;"delivery-infolink"===a?b=this.formData.get("pickupHiddenEOAG"):"collection-infolink"===a&&(b=this.formData.get("dropoffHiddenEOAG"));require(["reservation/delivery-and-collection/core/presenter/delivery-and-collection-presenter"],function(a){a.showLocationInfo(b)})}, 2542setDandCChangedValue:function(a){if(this.metaData.get("enableDNC"))if(a=c(a.target),"pickup-location"===a.attr("id")){var b=this.model.get("formData").previous("pickupLocation");b&&a[0].value!=b&&this.formData.set({isDeliveryChanged:"Y"},{silent:!0})}else"dropoff-location"===a.attr("id")&&(b=this.model.get("formData").previous("dropoffLocation"))&&a[0].value!=b&&this.formData.set({isCollectChanged:"Y"},{silent:!0})},setAutoFocus:function(){"desktop"!==f.config.deviceGroup&&("tablet"!==f.config.deviceGroup&& 2543"phone"!==f.config.deviceGroup)&&this.$el.find("#pickup-location").trigger("focus")},render:function(){this.$el.append(i.template(this.template,{metaData:this.metaData.attributes,formData:this.formData.attributes,content:this.content,isResFlowEdit:this.isResFlowEdit}));this.setAutoFocus();return this},trackReservationStart:function(){"undefined"!==typeof WebTracking&&WebTracking.trackData({events:"event23"})},doCleanup:function(){this.viewHelper.doCleanup&&this.viewHelper.doCleanup();this.pickupLocationList&& 2544(this.pickupLocationList=null);this.dropoffLocationList&&(this.dropoffLocationList=null);this.template=this.content=this.metaData=this.formData=this.viewHelper=j=null}})}); 2545define("reservation/itinerary/core/view/itinerary-date-time-view","jquery underscore backbone config/app-config utils/sessionhelper tools/calendar tools/timelist reservation/process-config/core/reservation-constants reservation/process-info/core/model/process-model utils/restmodel".split(" "),function(d,f,j,e,g,k,b,l,m,h){return j.View.extend({events:{"change select[name=localPickUpTime]":"handlePickUpTime","change select[name=localDropOffTime]":"handleDropOffTime"},initialize:function(){this.content= 2546this.options.content;this.template=this.options.template;this.metaData=this.model.get("metaData");this.formData=this.model.get("formData")},render:function(){this.$el.append(f.template(this.template,{metaData:this.metaData.attributes,formData:this.formData.attributes,content:this.content}));this.renderDates();this.renderTimes();return this},handlePickUpTime:function(a){this.formData.set({pickupTime:a.currentTarget.value},{silent:!0})},handleDropOffTime:function(a){this.formData.set({dropoffTime:a.currentTarget.value}, 2547{silent:!0})},renderDates:function(){var a="phone"===e.config.deviceGroup?this.$el:null,c=g.getItem(htz.res.config.Re
2547servationConstants.CALENDAR_MODE)&&"phone"!==e.config.deviceGroup?parseInt(g.getItem(htz.res.config.ReservationConstants.CALENDAR_MODE)):2;new k({mode:c,euro:this.formData.get("militaryClock"),start:this.$el.find("#pickup-date"),end:this.$el.find("#dropoff-date"),startText:this.$el.find("#pickup-date-box"),endText:this.$el.find("#dropoff-date-box"),target:a,content:this.content});try{if(localStorage.getItem("PICK_UP_DATE")){var b= 2548h.standardizeDate(localStorage.getItem("PICK_UP_DATE"),milClock);this.formData.set({pickupDay:b},{silent:!0});this.$el.find("#pickup-date-box").find(".value").text(b)}if(localStorage.getItem("DROP_OFF_DATE")){var i=h.standardizeDate(localStorage.getItem("DROP_OFF_DATE"),milClock);this.formData.set({dropoffDay:i},{silent:!0});this.$el.find("#dropoff-date-box").find(".value").text(i)}"phone"==e.config.deviceGroup&&d("div.calendar.elastic").attr("style","position: absolute ;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 90%")}catch(f){}}, 2549renderTimes:function(){var a=d(b.drawTime(this.formData.get("pickupTime"),this.formData.get("militaryClock"))).attr("name","pickupTime"),c=d(b.drawTime(this.formData.get("dropoffTime"),this.formData.get("militaryClock"))).attr("name","dropoffTime");this.$el.find("#pickup-time").append(a);this.$el.find("#dropoff-time").append(c);this.formData.get("pickupTime")||this.formData.set("pickupTime",a.val());this.formData.get("dropoffTime")||this.formData.set("dropoffTime",c.val())},doCleanup:function(){this.template= 2550this.content=this.metaData=this.formData=null}})}); 2551define("reservation/itinerary/core/view/itinerary-age-view","jquery underscore backbone utils/utils-proxy utils/sessionhelper reservation/process-config/core/reservation-constants".split(" "),function(b,f,i,j,g,h){var e=null;return i.View.extend({events:{"change select":"eventHandler","click #age-info-link":"displayAgeInfo","click #new-ageValue":"triggerAgeSlector","click #new-ageInfo":"displayAgeInfo"},initialize:function(){this.template=this.options.template;this.content=this.options.content;this.metaData= 2552this.model.get("metaData");this.formData=this.model.get("formData");this.fromWW=this.options.fromWW?!0:!1},eventHandler:function(a){var d=b(a.target),c=d.val();d.is(":checkbox")&&(c=d.is(":checked")?c:"");""!=c&&c<=this.metaData.get("minAgeAdvisory")?(b("#new-age-container").find("#ageAdvisory").show(),b("#new-age-container-mobile").find("#ageAdvisory").show()):(b("#new-age-container").find("#ageAdvisory").hide(),b("#new-age-container-mobile").find("#ageAdvisory").hide());this.formData.set(d.attr("name"), 2553c,{silent:!0});"ageSelector"==d.attr("id")&&this.updateGtmUI(a)},displayAgeInfo:function(){null==e&&(e=j.getLightbox());e.overlay({url:"age-info-overlay",title:this.content.homePage.homePageContent.ageSelectOverlayTitle,width:584,center:!0},f.template(b("#age-info-tpl").html(),{content:this.metaData.get("agePopUpMsg")}))},updateGtmUI:function(){this.$el.closest("#new-age-container").find("#new-ageValue").text("").text(this.$el.closest("#new-age-container").find("#ageSelector option:selected").first().text())}, 2554triggerAgeSlector:function(){this.$el.find("#ageSelector").click()},triggerAgeInfo:function(){this.displayAgeInfo()},render:function(){var a=this,d="";if(!0===htz.config.isApp)this.$el.empty(),this.$el.append(f.template(this.template,{ageDropdownOptions:this.metaData.get("ageDropdownOptions"),ageSelector:this.formData.get("ageSelector"),content:this.content}));else{if(""!=this.formData.get("pickupLocation")&&(3==this.formData.get("pickupLocation").length||6==this.formData.get("pickupLocation").length))d= 2555htz.config.apiDomain+"/rest/"+htz.config.subSystemId+"/v2/age-dropDown/dialect/"+htz.config.dialect+"/location-code/"+this.formData.get("pickupLocation")+"/''";else if(""!=this.formData.get("pickupHiddenEOAG")&&this.fromWW)d=htz.config.apiDomain+"/rest/"+htz.config.subSystemId+"/v2/age-dropDown/dialect/"+htz.config.dialect+"/location-code/"+this.formData.get("pickupHiddenEOAG")+"/''";else if(""!=this.formData.get("inpPickupCountryCode")&&(this.fromWW||"Y"==this.formData.get("inpPickupAutoFill")))d= 2556htz.config.apiDomain+"/rest/"+htz.config.subSystemId+"/v2/age-dropDown/dialect/"+htz.config.dialect+"/location-code/''/"+this.formData.get("inpPickupCountryCode");else if(""!=this.formData.get("pickupHiddenEOAG")){if(this.metaData.get("ageDropdownOptions")){this.$el.empty();this.$el.append(f.template(this.template,{ageDropdownOptions:this.metaData.get("ageDropdownOptions"),ageSelector:this.formData.get("ageSelector"),ageAdvisoryMsg:this.metaData.get("ageAdvisoryMsg"),content:this.content}));b("#ageSelector").trigger("change"); 2557b("#itn-age").show();return}d=htz.config.apiDomain+"/rest/"+htz.config.subSystemId+"/v2/age-dropDown/dialect/"+htz.config.dialect+"/location-code/"+this.formData.get("pickupHiddenEOAG")+"/''"}else{this.formData.set({ageSelector:""},{silent:!0});b("#new-age-container").find("#itn-age").hide();return}b.ajax({url:d,type:"GET",dataType:"jsonp",cache:!1,async:!0,jsonpCallback:"ageDropDown",beforeSend:function(){},success:function(c){a.metaData.set({ageDropdownOptions:c.data.ageDropdownOptions,showAgeDropdown:!0, 2558ageAdvisoryMsg:c.data.ageAdvisoryMsg,agePopUpMsg:c.data.agePopUpMsg,minAgeAdvisory:c.data.minAgeAdvisory},{silent:!0});try{a.formData.set({ageSelector:c.data.ageSelector.toString()},{silent:!0})}catch(d){a.formData.set({ageSelector:c.data.ageSelector},{silent:!0})}if(g.getItem(h.RESERVATION_INFORMATION_DATA)&&g.getItem(h.RESERVATION_INFORMATION_DATA.pickupLocationCode))g.setItem(h.RESERVATION_INFORMATION_DATA.pickupLocationCode,a.formData.get("pickupHiddenEOAG"));else{var e={};e.dialect=htz.config.dialect; 2559e.pickupLocationCode=a.formData.get("pickupHiddenEOAG");g.setItem(h.RESERVATION_INFORMATION_DATA,JSON.stringify(e))}a.$el.empty();a.$el.append(f.template(a.template,{ageDropdownOptions:a.metaData.get("ageDropdownOptions"),ageSelector:a.formData.get("ageSelector"),ageAdvisoryMsg:c.data.ageAdvisoryMsg,content:a.content}));b("#ageSelector").trigger("change");a.$el.closest("#new-age-container-mobile").show();a.$el.closest("#new-age-container-mobile").find("#itn-age").show();a.$el.closest("#new-age-container").find("#itn-age").show(); 2560(a.$el.closest(".res-widget-cont").length=1)&&a.$el.closest(".res-widget-cont").find("#itn-age").show()},error:function(){a.formData.set({ageSelector:""},{silent:!0});b("#new-age-container-mobile").hide();b("#itn-age").hide()}});return this}},doCleanup:function(){this.template=this.content=this.metaData=this.formData=e=null}})}); 2561define("reservation/itinerary/core/view/itinerary-arrival-info-view",["jquery","underscore","backbone"],function(c,d,e){return e.View.extend({events:{"keyup input":"eventHandler","change input":"eventHandler","change select":"eventHandler"},initialize:function(){this.template=this.options.template;this.content=this.options.content;this.metaData=this.model.get("metaData");this.formData=this.model.get("formData")},eventHandler:function(a){var a=c(a.target),b=a.val();a.is(":checkbox")&&(b=a.is(":checked")? 2562b:"");this.formData.set(a.attr("name"),b,{silent:!0})},arrivalRadioButton:function(){c("#arriving-info").prop("checked",!0)},render:function(){this.$el.append(d.template(this.template,{metaData:this.metaData.attributes,formData:this.formData.attributes,content:this.content}));return this},doCleanup:function(){this.template=this.content=this.metaData=this.formData=null}})}); 2563define("reservation/itinerary/core/view/itinerary-redeem-view",["jquery","underscore","backbone","utils/utils-proxy"],function(c,f,e,g){var d=null;return e.View.extend({events:{"keyup input":"eventHandler","change input":"eventHandler","change select":"eventHandler","click #redeem-info":"showRedeemInfo","click #redeem":"redeemPoints"},initialize:function(){this.template=this.options.template;this.content=this.options.content;this.metaData=this.model.get("metaData");this.formData=this.model.get("formData")}, 2564eventHandler:function(a){var a=c(a.target),b=a.val();a.is(":checkbox")&&(b=a.is(":checked")?b:"");this.formData.set(a.attr("name"),b,{silent:!0})},showRedeemInfo:function(){var a=this,b=a.content.homePage.homePageContent.redeemOverlayTitle;require(["reservation/itinerary/core/view/content-overlay-view"],function(c){null==d&&(d=g.getLightbox());d.overlay({title:b,width:584,center:!0},(new c({model:new e.Model({url:"redeem-tpl"}),content:a.content})).render().el)});return!1},redeemPoints:function(){if(this.$el.find("#redeem").prop("checked"))this.metaData.set({isRedeemPoints:!0}), 2565c("#non-cdp-discounts input").attr("disabled",!0),c("input:disabled").closest("div").removeClass("highlight");else{if(0<c("#non-cdp-discounts input").length)for(var a=c("#non-cdp-discounts input"),b=0;b<a.length;b++)""!==a[b].value&&c(a[b]).closest(".discount-row").addClass("highlight");this.metaData.set({isRedeemPoints:!1});c("#non-cdp-discounts input").attr("disabled",!1)}},render:function(){this.$el.append(f.template(this.template,{metaData:this.metaData.attributes,formData:this.formData.attributes, 2566content:this.content}));return this},doCleanup:function(){this.template=this.content=this.metaData=this.formData=d=null}})}); 2567define("reservation/itinerary/core/view/itinerary-vehicle-type-view",["jquery","underscore","backbone","utils/utils-proxy"],function(g,h,f,i){function e(){null==c&&(c=i.getLightbox());return c}var c=null;return f.View.extend({events:{"keyup input":"eventHandler","change input":"eventHandler","change select":"eventHandler","click #car-type-display":"showCarTypeOverlay","click #fleet-info":"show
2567FleetInfo"},initialize:function(){this.template=this.options.template;this.content=this.options.content;this.metaData= 2568this.model.get("metaData");this.formData=this.model.get("formData")},eventHandler:function(a){var a=g(a.target),b=a.val();a.is(":checkbox")&&(b=a.is(":checked")?b:"");this.formData.set(a.attr("name"),b,{silent:!0})},showCarTypeOverlay:function(){var a=this;require(["reservation/car-types/core/presenter/car-types-presenter"],function(b){b.showFleet(a)})},selectCarType:function(a,b){var d=this.$el.find("#car-type");this.$el.find("#car-type-display .value").text(a.get("label"));d.get(0).selectedIndex= 2569b;d.change();e().closeOverlay()},showCartype:function(a){var b=this.$("#car-type-display"),b={width:600,center:!1,plain:!0,darkness:0,hCenter:!1,top:b.offset().top+30,left:b.offset().left};e().overlay(b,a)},showFleetInfo:function(){var a=this,b=a.content.reservationPopups.carTypeDetailsPopupContent.popupHeaderText;require(["reservation/itinerary/core/view/content-overlay-view"],function(d){e().overlay({title:b,width:584,center:!0},(new d({model:new f.Model({url:"fleet-tpl"}),content:a.content})).render().el)})}, 2570render:function(){var a;if("true"==htz.helpers.SessionHelper.getItem("resetCarType")){this.formData.set({selectedCarType:"ACAR"},{silent:!0});try{a=this.metaData.get("nvpVehicleGroupSipps").filter(function(a){return"ACAR"===a.value})[0].name,this.metaData.set({selectedCarLabel:a},{silent:!0})}catch(b){console.log(b)}htz.helpers.SessionHelper.setItem("resetCarType","false")}this.$el.append(h.template(this.template,{selectedCarLabel:this.metaData.get("selectedCarLabel"),nvpVehicleGroupSipps:this.metaData.get("nvpVehicleGroupSipps"), 2571selectedCarType:this.formData.get("selectedCarType"),isResWidget:this.metaData.get("isResWidget"),content:this.content}));return this},doCleanup:function(){this.template=this.content=this.metaData=this.formData=c=null}})}); 2572define("reservation/itinerary/core/view/itinerary-ta-member-view",["jquery","underscore","backbone"],function(c,d,e){return e.View.extend({events:{"keyup input":"eventHandler","change input":"eventHandler"},initialize:function(){this.template=this.options.template;this.content=this.options.content;this.metaData=this.model.get("metaData");this.formData=this.model.get("formData")},eventHandler:function(a){var a=c(a.target),b=a.val();a.is(":checkbox")&&(b=a.is(":checked")?b:"");this.formData.set(a.attr("name"), 2573b,{silent:!0})},render:function(){this.$el.append(d.template(this.template,{metaData:this.metaData.attributes,formData:this.formData.attributes,content:this.content}));return this},doCleanup:function(){this.template=this.content=this.metaData=this.formData=null}})}); 2574define('reservation/itinerary/core/view/itinerary-discounts-view', 2575 ['jquery', 'underscore', 'backbone', 'config/app-config', 'utils/utils', 'utils/utils-proxy', 2576 'reservation/itinerary/core/view/helper/view-helper','reservation/itinerary/core/model/affiliate-member-ID-verification-model','utils/gtm-tracker','utils/sessionhelper','reservation/process-config/core/reservation-constants'], 2577 function($, _, Backbone, appConfig, Utils, utilsProxy, viewHelper,affiliateMemberIDverificationModel,gtmTracker,SessionHelper,resConstants) { 2578 2579 var lightbox = null; 2580 2581 function getLightBox() { 2582 if(lightbox == null) { 2583 lightbox = utilsProxy.getLightbox(); 2584 } 2585 return lightbox; 2586 } 2587 2588 var discountsView = Backbone.View.extend({ 2589 events : { 2590 'keyup input' : 'eventHandler', 2591 'change input' : 'eventHandler', 2592 'change select' : 'eventHandler', 2593 'click #discount-info' : 'showDiscountDetails', 2594 'click #discounts' : 'toggleDiscounts', 2595 'blur #cdp-textfield' : 'handleCdp', 2596 'change #member-selected-cdp' : 'handleMemberCdp', 2597 'keyup #member-selected-cdp' : 'handleMemberCdp', 2598 'click #profile-cdp-indicator' : 'setProfileCdpIndicator', 2599 'blur #member-other-cdp' : 'handleOtherCdp', 2600 'keyup .discount-row input' : 'highlightDiscount', 2601 'keyup #cdp-textfield' : 'showCDPOptions', 2602 'click #corp-cust' : 'toggleCorpDependentFields', 2603 'keyup #type-in-rq' : 'showCdpRqWarning', 2604 'click #discount-slideout' : 'displayMobileDiscounts', 2605 'click #corpRate' : 'showCdpRqWarning', //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 2606 'click #other-cdp-indicator' : 'setOtherCdpIndicator',
2607 'keyup #member-other-cdp' : 'setOtherCdpIndicator', 2608 'click input[name=trip-type]' : 'toggleTripType', 2609 'click input[name=corpRate]' : 'toggleCorpRate', //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 2610 'click #app-cdp-buttons' : 'handleCdpLinks', 2611 'change #cdp-textfield' : 'handleAffiliateMemberVerification', //dtc4102//AAA verification//non member 2612 //'change #member-other-cdp' : 'handleAffiliateMemberVerification', //dtc4102//AAA verification//logged in member selected CDP 2613 //'change #member-selected-cdp' : 'handleAffiliateMemberVerification', //dtc4102//AAA verification//logged in member other CDP 2614 'click #affiliate-login-link': 'redirectToAffiliateLink', //dtc4102//DIGI-28 Irac20.4 2615 'change #cdp>label>input': 'trackDiscount', //dtc4102//PRC91530//Google Data Layer 2616 'change #pc>label>input': 'trackDiscount', //dtc4102//PRC91530//Google Data Layer 2617 'change .discount-row>label>input': 'trackDiscount', //dtc4102//PRC91530//Google Data Layer 2618 'click #new-discount':'showDiscountModal', //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2619 'click .new-discount-modal-header a':'hideDiscountModal', //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2620 'click #new-discountInfo':'showDiscountDetails', //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2621 'click #new-apply-button':'applyDiscount', //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2622 'click .new-cancel-button':'cancelFlow' //dtc4102//irac-5407-DPR-reservation-change-CDP-issue-inc001177304 2623 }, 2624 /** 2625 @description Initialize method of Backbone View 2626 @function 2627 */ 2628 initialize: function() { 2629 this.template = this.options.template; 2630 this.content = this.options.content; 2631 this.viewHelper = this.options.viewHelper; 2632 this.metaData = this.options.metaData; 2633 this.formData = this.options.formData; 2634 2635 //dtc4102//irac-391-Mobile Web Optimization - Homepage 2636 //moved from showDiscountModal method 2637 this.orgFormData= Backbone.Model.extend({}); 2638 this.orgFormData=this.formData.clone(); 2639 }, 2640 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2641 showDiscountDetails : function (){ 2642 var self = this; 2643 var id = "discount-tpl"; 2644 var title = self.content.homePage.homePageContent.discountOverlayTitle; 2645 2646 require(['reservation/itinerary/core/view/content-overlay-view'], function(contentView){ 2647 getLightBox().overlay({ 2648 title: title, 2649 width:584, 2650 center:true 2651 }, new contentView({ model : new Backbone.Model({ url : id }), content : self.content }).render().el); 2652 }); 2653 return false; 2654 }, 2655 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2656 showDiscountModal:function(){ 2657 2658 var discountModal = $("#new-discount-modal-container"); 2659 discountModal.removeClass("new-hide"); 2660 this.setDiscountDisplay(force=true); 2661 2662 }, 2663 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2664 hideDiscountModal:function(){ 2665 var discountModal = $("#new-discount-modal-container"); //dtc4102//irac-391-Mobile Web Optimization - Homepage//changed new-discount-modal-container to id from class 2666 discountModal.addClass("new-hide"); 2667 this.checkDiscCode(); 2668 }, 2669 2670 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 2671 checkDiscCode:function(){ 2672 var codeCounter = 0; 2673 if($('#cdp-options-business').length){ 2674 if ((($('#cdp-textfield').length > 0) && ($('#cdp-textfield').val().length > 0)) || 2675 (($('#member-selected-cdp option[selected="selected"]').length > 0) && (!$('#member-selected-cdp option:contains("None")').is(':checked')))) { codeCounter++; } 2676 if ($('#pc input').val() && $('#pc input').val().length > 0) { codeCounter++; } 2677 2678 if ($('#type-in-rq').val() && $('#type-in-rq').val().length > 0) {codeCounter++; } 2679 if ($('input[name="cvNumber"]').val() && $('input[name="cvNumber"]').val().length > 0) { codeCounter++; } 2680 2681 var homeContent = this.content.homePage; 2682 var addDiscountCode = homeContent.homePageContent.addDiscountCode; 2683 var oneCodeApplied = homeContent.homePageContent.oneCodeApplied; 2684 var disCodesApplied = homeContent.homePageContent.disCodesApplied; 2685 2686 if (codeCounter === 0) { 2687 //dtc4102//irac-391-Mobile Web Optimization - Homepage 2688 //changing text in mobile web and non-mobile web elements 2689 $('#itn-homepage-discounts').find('#new-discount').text(addDiscountCode); 2690 $('#itn-homepage-discounts-mobile').find('#new-discount').text(addDiscountCode); 2691 } 2692 else if (codeCounter === 1) { 2693 //dtc4102//irac-391-Mobile Web Optimization - Homepage 2694 //changing text in mobile web and non-mobile web elements 2695 $('#itn-homepage-discounts').find('#new-discount').text(oneCodeApplied); 2696 $('#itn-homepage-discounts-mobile').find('#new-discount').text(oneCodeApplied); 2697 } 2698 else if (codeCounter > 1) { 2699 //dtc4102//irac-391-Mobile Web Optimization - Homepage 2700 //changing text in mobile web and non-mobile web elements 2701 $('#itn-homepage-discounts').find('#new-discount').text(codeCounter + disCodesApplied); 2702 $('#itn-homepage-discounts-mobile').find('#new-discount').text(codeCounter + disCodesApplied); 2703 } 2704 }else{ 2705 //dtc4102//irac-391-Mobile Web Optimization - Homepage 2706 //changing text in mobile web and non-mobile web elements 2707 $('#itn-homepage-discounts').find('#new-discount').text(oneCodeApplied); 2708 $('#itn-homepage-discounts-mobile').find('#new-discount').text(oneCodeApplied); 2709 } 2710 }, 2711 2712 //dtc4102//irac-5407-DPR-reservation-change-CDP-issue-inc001177304 2713 cancelFlow:function(){ 2714 var self=this; 2715 $.each(this.orgFormData.attributes,function(key,value){ 2716 self.formData.set(key,value,{silent:true}); 2717 }) 2718 2719 2720 var discountModal = $("#new-discount-modal-container"); 2721 discountModal.addClass("new-hide"); 2722 //dtc4102//irac-391-Mobile Web Optimization - Homepage 2723 //removed this.refresh(); 2724 this.checkDiscCode(); 2725 2726 }, 2727 applyDiscount:function(e){ 2728 2729 //dtc4102//irac-5407-DPR-reservation-change-CDP-issue-inc001177304
2730 var $obj = $(e.target).closest(".new-discount-modal").find(".new-discount-modal-form"), val; 2731 var self=this,disountCounter=0; 2732 2733 //dtc4102//irac-753-RQ not displaying on special offer page 2734 SessionHelper.setItem(resConstants.TYPE_IN_RQ, self.formData.get('typeInRateQuote')); 2735 2736 if(this.metaData.get('loggedIn')==1){ 2737 if(self.formData.get('memberSelectedCdp')!=="" || self.formData.get('memberOtherCdpField')!==""){ 2738 self.formData.set('checkDiscount','on',{ silent : true }); 2739 } 2740 }else{ 2741 $(".new-discount-modal-form input[type=text]").each(function() { 2742 if($(this).is(':checkbox')){ 2743 val = $(this).is(':checked') ? val : ''; 2744 } 2745 val = $.trim($(this).val()); 2746 2747 if(val!=''){ 2748 disountCounter++; 2749 } 2750 2751 self.formData.set($(this).attr('name'), val, { silent : true }); 2752 }); 2753 2754 if(disountCounter>0){ 2755 self.formData.set('checkDiscount','on',{ silent : true }); 2756 }else{ 2757 self.formData.set('checkDiscount','',{ silent : true }); 2758 } 2759 } 2760 2761 var discountModal = $("#new-discount-modal-container"); 2762 discountModal.addClass("new-hide"); 2763 this.checkDiscCode(); 2764 2765 }, 2766 2767 //dtc4102//PRC91530//Google Data Layer 2768 //Filter & Sort Vehicles 2769 trackDiscount:_.debounce(function(e){ 2770 var element=$(e.currentTarget); 2771 var typeIdentifer=""; 2772 2773 if(element.attr("name")=="cdpField"){ 2774 typeIdentifer="cdp"; 2775 }else if(element.attr("name")=="pcNumber"){ 2776 typeIdentifer="pc"; 2777 }else if(element.attr("name")=="typeInRateQuote"){ 2778 typeIdentifer="rq"; 2779 }else if(element.attr("name")=="cvNumber"){ 2780 typeIdentifer="cv"; 2781 }else if(element.attr("name")=="itNumber"){ 2782 typeIdentifer="it"; 2783 } 2784 2785 var codeIdentifer=element.val(); 2786 2787 if(!htz.config.isApp){ 2788 var options={}; 2789 options.scenario='apply-discount'; 2790 options.payload={}; 2791 options.payload.discountType=typeIdentifer; 2792 options.payload.discountCode=codeIdentifer; 2793 gtmTracker.track(options); 2794 } 2795 },500), 2796 2797 //dtc4102 2798 //DIGI-28 2799 //Irac20.4 2800 redirectToAffiliateLink:function(){ 2801 localStorage.setItem("PICK_UP_DATE",this.formData.get('pickupDay')); 2802 localStorage.setItem("DROP_OFF_DATE",this.formData.get('dropoffDay')); 2803 window.location.href = $("#member-link").html(); 2804 }, 2805 2806 //dtc4102//AAA verification 2807 //call the web service to check and see if we need to verify affiliate member ID 2808 //we send in the CDP,POS,pickupLocationCode and dropOffLocationCode and consume verifyAAAMember flag 2809 handleAffiliateMemberVerification : function(event){ 2810 2811 var self=this; 2812 var obj,otherCDPSelected,isCookied; 2813 2814 if(self.metaData.get("loggedIn")){ 2815 try{ 2816 var memberCDP=(self.formData.get("memberOtherCdpField")!="")?self.formData.get("memberOtherCdpField"):self.formData.get("memberSelectedCdp"); 2817 var expression = new RegExp("affiliateID_"+self.metaData.get("memberNumber")+"_"+memberCDP+"=([^;]+)"); 2818 var cookieValue = expression.exec(document.cookie); 2819 isCookied = (cookieValue != null) ? true:false; 2820 }catch(e){ 2821 isCookied=false; 2822 } 2823 } 2824 2825 if(self.metaData.get("loggedIn") && isCookied){ 2826 return 2827 } 2828 2829 if (this.formData.get('pickupHiddenEOAG')=="" && this.formData.get('dropoffHiddenEOAG')=="" && this.formData.get('pickupLocation')=="" && this.formData.get("dropoffLocation")=="" ){ 2830 self.resetAffiliateMemberFields(); 2831 return 2832 } 2833 2834 this.model = new affiliateMemberIDverificationModel(); 2835 var cdp, 2836 POS = appConfig.config.pos, 2837 dialect = appConfig.config.dialect, 2838 pickupLocationCode = "", 2839 dropOffLocationCode = ""; 2840 2841 if(this.formData.get('pickupHiddenEOAG')!=""){ 2842 pickupLocationCode=this.formData.get('pickupHiddenEOAG'); 2843 }else if(this.formData.get('pickupHiddenEOAG')==="" && this.formData.get("pickupLocation")!=""){ 2844 pickupLocationCode=this.formData.get("pickupLocation"); 2845 } 2846 2847 if(this.formData.get('returnAtDifferentLocationCheckbox')=="on"){ 2848 if(this.formData.get('dropoffHiddenEOAG')!=""){ 2849 dropOffLocationCode=this.formData.get('dropoffHiddenEOAG'); 2850 }else if(this.formData.get('dropoffHiddenEOAG')==="" && this.formData.get("dropoffLocation")!=""){ 2851 dropOffLocationCode=this.formData.get("dropoffLocation"); 2852 } 2853 } 2854 2855 var retry=false; 2856 2857 if(this.metaData.get("loggedIn") && this.metaData.get("showCdpList")){
2858 try{ 2859 obj=$(event.target); 2860 otherCDPSelected=obj.attr('id')=="member-other-cdp"?true:false; 2861 }catch(err){ 2862 otherCDPSelected=this.formData.get("cdpRadioButton")==="otherCdpIndicator"?true:false; 2863 } 2864 2865 if(otherCDPSelected===true){ 2866 cdp=this.formData.get('memberOtherCdpField'); 2867 } 2868 else{ 2869 cdp=this.formData.get('memberSelectedCdp'); 2870 } 2871 } 2872 else{ 2873 cdp=this.formData.get('cdpField'); 2874 } 2875 2876 if(cdp.length > 0){ 2877 cdp=cdp.replace(/^0+/, ''); 2878 this.model.set({'POS':POS,'pickupLocationCode': pickupLocationCode,'dropOffLocationCode':dropOffLocationCode,'CDP':cdp,'dialect':dialect,'referrerURL':this.metaData.get("referrerUrl")}); 2879 2880 var data=$.param({'POS':POS,'pickupLocationCode': pickupLocationCode,'dropOffLocationCode':dropOffLocationCode,'CDP':cdp,'dialect':dialect,'referrerURL':this.metaData.get("referrerUrl")}); 2881 var url= appConfig.config.apiDomain + '/rest/partner/cdp/memberID/required'; 2882 2883 $.ajax({ 2884 cache: false, 2885 data:data, 2886 url: url, 2887 dataType: 'jsonp', 2888 type:'GET', 2889 success:function(res,textStatus,jqXHR){ 2890 if(res.data && res.data.verifyPartnerMember==true){ 2891 self.$el.find('#affiliate-member-verification').empty().html(_.template($("#affiliate-Member-View").html(),{content:res.data.content,formData:self.formData})); 2892 self.$el.find('#affiliate-member-verification').removeAttr('hidden'); 2893 self.$el.find('#affiliate-member-join').trigger('change'); 2894 2895 self.metaData.set({'verifyPartnerMember':true},{silent:true}); 2896 self.formData.set({'companyId':res.data.companyId},{silent:true}); 2897 } 2898 else{ 2899 self.resetAffiliateMemberFields(); 2900 } 2901 },error: function(jqXHR,textStatus,errThrown){ 2902 console.log("error fetching /required"); 2903 retry=true; 2904 2905 },complete :function(){ 2906 if(retry===true){ 2907 2908 //if the 1st call fails, try it one more time 2909 $.ajax({ 2910 cache: false, 2911 data:data, 2912 url: url, 2913 dataType: 'jsonp', 2914 type:'GET', 2915 success:function(res,textStatus,jqXHR){ 2916 if(res.data && res.data.verifyPartnerMember==true){ 2917 self.$el.find('#affiliate-member-verification').empty().html(_.template($("#affiliate-Member-View").html(),{content:res.data.content,formData:self.formData})); 2918 self.$el.find('#affiliate-member-verification').removeAttr('hidden'); 2919 self.$el.find('#affiliate-member-join').trigger('change'); 2920 2921 self.metaData.set({'verifyPartnerMember':true},{silent:true}); 2922 self.formData.set({'companyId':res.data.companyId},{silent:true}); 2923 } 2924 else{ 2925 self.resetAffiliateMemberFields(); 2926 } 2927 },error: function(jqXHR,textStatus,errThrown){ 2928 console.log("error fetching /required"); 2929 2930 self.resetAffiliateMemberFields(); 2931 2932 } 2933 }) 2934 } 2935 } 2936 }) 2937 } 2938 else{ 2939 this.resetAffiliateMemberFields(); 2940 } 2941 }, 2942 2943 toggleTripType : function(e) { 2944 if(e.currentTarget.id === "business-cdp-indicator"){ 2945 viewHelper.trackCdpOptions('cdp-options-business-radio'); 2946 this.setBusinessFormData(); 2947 } else { 2948 viewHelper.trackCdpOptions('cdp-options-leisure-radio'); 2949 this.setLeisureFormData(); 2950 } 2951 }, 2952 2953 toggleCorpRate : function(e) { 2954 if(e.currentTarget.id === "corp-rate-yes"){ 2955 viewHelper.trackCdpOptions('cdp-options-corp-rate-yes-radio'); 2956 this.setCorpRateFormData(true); 2957 } else { 2958 viewHelper.trackCdpOptions('cdp-options-corp-rate-no-radio'); 2959 this.setCorpRateFormData(false); 2960 } 2961 }, 2962 2963 setCorporateRateData : function() { 2964 var corpRateVal = (this.formData.get('corporateRate') == 'on') ? 'yes' : 'no'; 2965 this.formData.set({'corpRate': corpRateVal}, {silent : true}); //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 2966 }, 2967 2968 /** 2969 @description Set the business radio button and set the corporate form fields values to on. 2970 @function 2971 */ 2972 setBusinessFormData : function() { 2973 var corpRateCheck = ''; 2974 2975 this.$el.find('#business-cdp-indicator').prop('checked', true); 2976 if (this.metaData.get('allowContractRate')) { 2977 this.$el.find('#corp-rate-yes').prop('disabled', false); 2978 this.$el.find('#corp-rate-no').prop('disabled', false); 2979 this.$el.find('#cdp-options').removeClass('disabled-label'); 2980 } else { 2981 corpRateCheck = 'on'; 2982 } 2983 2984 this.$el.find('#official-travel').prop('checked', true); 2985 this.showCdpRqWarning(); 2986 this.formData.set({corporateRate : corpRateCheck, officialTravel : 'on' },{ silent : true }); 2987 this.metaData.set({travelType : 'B'},{ silent : true }); 2988 }, 2989 /** 2990 @description Set the leisure radio button and set the corporate form fields values to blank string 2991 @function 2992 */ 2993 setLeisureFormData : function() { 2994 this.$el.find('#leisure-cdp-indicator').prop('checked', true); 2995 this.metaData.set({travelType : 'L'},{ silent : true }); 2996 this.resetCorpFormFields(); 2997 }, 2998 2999 setCorpRateFormData : function(accepted) { 3000 var corpRateAccepted = accepted ? 'on' : ''; 3001 this.formData.set({corporateRate : corpRateAccepted},{ silent : true }); 3002 }, 3003 3004 /** 3005 @description Clear the selection of both business and leisure radio buttons and set the corporate form field values to a blank string 3006 @function 3007 */ 3008 clearBusinessLeisureFormData : function() { 3009 this.$el.find('input[name="trip-type"]').prop('checked', false); 3010 this.metaData.set({travelType : ''},{ silent : true }); 3011 if (this.formData.get('trip-type')) { 3012 this.formData.unset('trip-type', { silent : true }); 3013 } 3014 this.resetCorpFormFields(); 3015 }, 3016 /** 3017 @description Clear all the discount fields and reset it back to a blank string 3018 @function 3019 */ 3020 clearDiscountFields : function() { 3021 if(this.formData.get('cdpField')){ 3022 this.$el.find('#cdp-textfield').val('').trigger("keyup"); 3023 this.formData.set({ cdpField : ''}, { silent : true }); 3024 3025 //dtc4102//AAA verification 3026 this.resetAffiliateMemberFields(); 3027 3028 this.$el.find('#cdp-options-business').hide(); 3029 this.clearBusinessLeisureFormData(); 3030 } 3031 if(this.formData.get('memberSelectedCdp') || this.formData.get('memberOtherCdpField')){ 3032 this.$el.find('#member-selected-cdp').val('');
3033 this.$el.find('#member-other-cdp').val(''); 3034 this.$el.find('#profile-cdp-indicator').prop('checked', true); 3035 this.formData.set({memberSelectedCdp : '', memberOtherCdpField : '', cdpRadioButton : ''}, { silent : true }); 3036 3037 this.$el.find('#cdp-options-business').hide(); 3038 this.clearBusinessLeisureFormData(); 3039 } 3040 //reset the non-cdp discounts 3041 if(this.formData.get('pcNumber') || this.formData.get('typeInRateQuote') || this.formData.get('cvNumber') || this.formData.get('itNumber')){ 3042 this.$el.find('input[name=pcNumber]').val('').trigger("keyup"); 3043 this.$el.find('input[name=cvNumber]').val('').trigger("keyup"); 3044 this.$el.find('input[name=itNumber]').val('').trigger("keyup"); 3045 this.$el.find('input[name=typeInRateQuote]').val('').trigger("keyup"); 3046 this.formData.set({ cvNumber: '', pcNumber: '', typeInRateQuote: '' , itNumber: '' }, { silent : true }); 3047 } 3048 }, 3049 3050 //dtc4102//AAA verification 3051 //reset affiliateMember fields,formData and metaData 3052 resetAffiliateMemberFields : function(){ 3053 this.metaData.unset('verifyPartnerMember',{silent:true}); 3054 this.formData.set({"affiliateMemberJoin":"","affiliateMemberID":""}, { silent : true }); 3055 this.$el.find("#affiliate-member-verification").attr('hidden',"true"); 3056 this.$el.find("#affiliate-member-ID").val(""); 3057 }, 3058 /** 3059 @description Reset the corporate form fields - corporate rate and official travel - back to a blank string 3060 @function 3061 */ 3062 resetCorpFormFields : function() { 3063 this.$el.find('#official-travel').prop('checked', false); 3064 if (this.metaData.get('allowContractRate')) { 3065 if (!appConfig.config.isApp) { 3066 this.$el.find('input[name="corpRate"]').prop({'disabled' : true, 'checked': false}); //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 3067 this.$el.find('#cdp-options').addClass('disabled-label'); 3068 } 3069 if (this.formData.get('corpRate')) { //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 3070 this.formData.unset('corpRate', { silent : true }); //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 3071 } 3072 } 3073 this.formData.set({corporateRate : '', officialTravel : '' }, { silent : true }); 3074 }, 3075 /** 3076 @description Event handler to set checkbox value to in formData if checked 3077 @function 3078 @param {event} e Event which was fired from the target dom element 3079 */ 3080 eventHandler : function(e){ 3081 e.stopPropagation(); 3082 var obj = $(e.target), val = $.trim(obj.val()); 3083 3084 try{ 3085 if(obj.is(':checkbox')){ 3086 val = obj.is(':checked') ? val : ''; 3087 3088 //dtc4102//AAA verification 3089 //if Join AAA checkbox is check, disable the membership ID input box 3090 obj.attr('name')==="affiliateMemberJoin" && obj.is(':checked')? 3091 obj.closest('#affiliate-member-verification').find('#affiliate-member-ID').prop('disabled', true): 3092 obj.closest('#affiliate-member-verification').find('#affiliate-member-ID').prop('disabled', false); 3093 //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 3094 }else if((this.metaData.get("applicant") && obj.is('[type="radio"]')) && (obj[0].name=="corpRate")){ //dtc4102//22.23/irac-22//Display the Apply Discount Code overlay when logged in as an Applicant - INC001259255 3095 if(!this.metaData.get("allowContractRate")){ 3096 return 0; 3097 } 3098 3099 } 3100 }catch(e){ 3101 console.log(e); 3102 this.formData.set(obj.attr('name'), val, { silent : true }); 3103 } 3104 this.formData.set(obj.attr('name'), val, { silent : true }); 3105 3106 //CDP discount issue fix for legacy app 3107 if(htz.config.isApp){ 3108 this.formData.set("checkDiscount","on",{ silent : true }); 3109 } else { 3110 3111 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 3112 if(obj.attr('name')=="memberSelectedCdp" || obj.attr('name')=="memberOtherCdpField"){ 3113 if(val==""){ 3114 this.formData.set("checkDiscount","",{ silent : true }); 3115 }else if(val!=""){ 3116 this.formData.set("checkDiscount","on",{ silent : true }); 3117 } 3118 } 3119 } 3120 3121 }, 3122 3123 /** 3124 @description Reset corporate fields when None is selected from the member cdp list 3125 @function 3126 @param {event} e Event which was fired from the target dom element 3127 */ 3128 resetCdpCorpFields : function(e) { 3129 var obj = $(e.target), val = obj.val(); 3130 3131 this.clearBusinessLeisureFormData(); 3132 3133 if(obj.attr('name') === 'memberSelectedCdp' && (val == '' || val=="0")){ //dtc4102//irac-5450-member-reservations-cdp-handling-inc001214130//added logic to handle '0' cdp value for None 3134 this.$el.find('#cdp-options-business').hide(); 3135 } else {
3136 this.$el.find('#member-other-cdp').val(''); 3137 this.$el.find('#cdp-options-business').show(); 3138 } 3139 }, 3140 showDiscountDetails : function (){ 3141 var self = this; 3142 var id = "discount-tpl"; 3143 var title = self.content.homePage.homePageContent.discountOverlayTitle; 3144 3145 require(['reservation/itinerary/core/view/content-overlay-view'], function(contentView){ 3146 getLightBox().overlay({ 3147 title: title, 3148 width:584, 3149 center:true 3150 }, new contentView({ model : new Backbone.Model({ url : id }), content : self.content }).render().el); 3151 }); 3152 return false; 3153 }, 3154 /** 3155 @description Toggle discounts section 3156 @function 3157 */ 3158 toggleDiscounts : function (){ 3159 this.resetToDefaultProfileCdp(); 3160 this.setDiscountDisplay(); 3161 }, 3162 /** 3163 @description Resets to the default profile cdp 3164 @function 3165 */ 3166 resetToDefaultProfileCdp : function (){ 3167 if (this.metaData.get('loggedIn') && this.metaData.get('cdpList')) { 3168 this.$el.find('#member-selected-cdp').val(this.metaData.get('cdpList')[0].name); 3169 this.$el.find('#profile-cdp-indicator').prop('checked', true); 3170 this.metaData.set('discountExists', true); 3171 this.formData.set({memberSelectedCdp : this.metaData.get('cdpList')[0].name, cdpRadioButton : 'profileCdpIndicator' }, { silent : true }); 3172 } 3173 }, 3174 /** 3175 @description Set discountExists and discount display on render. 3176 @function 3177 */ 3178 setDiscountDisplay : function (force){ //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442//added 'force' flag 3179 if (this.$el.find('#discounts').prop('checked')) { 3180 this.$el.find('#affiliations').show(); 3181 this.metaData.set({ discountExists : 1 }, { silent : true }); 3182 if (this.metaData.get('allowContractRate') && this.metaData.get('travelType') == 'B') { 3183 this.setCorporateRateData(); 3184 } 3185 } 3186 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 3187 else if(force==true){ 3188 this.$el.find('#affiliations').show(); 3189 this.metaData.set({ discountExists : 1 }, { silent : true }); 3190 if (this.metaData.get('allowContractRate') && this.metaData.get('travelType') == 'B') { 3191 this.setCorporateRateData(); 3192 } 3193 } 3194 else { 3195 this.$el.find('#affiliations').hide(); 3196 this.metaData.set({ discountExists : 0 }, { silent : true }); 3197 3198 this.clearDiscountFields(); 3199 } 3200 3201 //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 3202 this.checkDiscCode(); 3203 this.viewHelper.setFooterPadding(); 3204 }, 3205 /** 3206 @description Save CDP value in session when other CDP radio button is selected 3207 @function 3208 @param {boolean} e Event which was fired from the target dom element 3209 */ 3210 handleOtherCdp : function(e){ 3211 this.saveCDPInSession($(e.target).val(), this.$el.find("#other-cdp-indicator").val()); 3212 3213 this.handleAffiliateMemberVerification(e); //dtc4102//irac-5407-DPR-reservation-change-CDP-issue-inc001177304 // moved from change event to inside blur event 3214 }, 3215 /** 3216 @description Save CDP value in session for entering CDP for nonmember 3217 @function 3218 @param {boolean} e Event which was fired from the target dom element 3219 */ 3220 handleCdp : function(e){ 3221 //this.saveCDPInSession($(e.target).val()); //dtc4102//IRAC-4849//Verify AAA CDP//will not be saving CDP in session unless validated 3222 3223 }, 3224 /** 3225 @description Save CDP value in session for CDP selected in member profile 3226 @function 3227 @param {boolean} e Event which was fired from the target dom element 3228 */ 3229 handleMemberCdp : function(e){ 3230 var profileCdpInd = this.$el.find('#profile-cdp-indicator'); 3231 profileCdpInd.trigger("click"); 3232 3233 this.saveCDPInSession($(e.target).val(), profileCdpInd.val()); 3234 3235 this.resetCdpCorpFields(e); 3236 3237 this.handleAffiliateMemberVerification(e); //dtc4102//irac-5407-DPR-reservation-change-CDP-issue-inc001177304 // moved from change event to inside blur event 3238 }, 3239 /** 3240 @description Save CDP in session 3241 @function 3242 @param {String} CDPText CDP Text name 3243 @param {String} selectedRadioName selected discount radio name 3244 */ 3245 saveCDPInSession : function (CDPText, selectedRadioName){ 3246 var self = this, data = { cdpField: CDPText, cdpRadioButton: selectedRadioName, checkDiscount : 'on'}; 3247 3248 $.ajax({ 3249 url: appConfig.config.rootContext + '/handlers/SaveSessionInformationHandler', 3250 data: data 3251 }); 3252 }, 3253 /** 3254 @description Highlight row fields entered in discounts 3255 @function 3256 @param {event} e Event which was fired from the target dom element 3257 */ 3258 highlightDiscount : function (e){ 3259 var input = $(e.target), row = input.closest('.discount-row');
3260 if ($(e.currentTarget).attr('id') === 'member-other-cdp'){ 3261 return; 3262 } else { 3263 if($.trim(input.val()).length === 0) { 3264 row.removeClass('highlight'); 3265 } else { 3266 row.addClass('highlight'); 3267 } 3268 } 3269 }, 3270 /** 3271 @description Display CDP corporation options 3272 @function 3273 */ 3274 showCDPOptions : function (){ 3275 if(!this.metaData.get('isIncludeCDPOptions')) return; 3276 var cdpOption = this.$el.find('#cdp-options-business'), 3277 cdpField = this.$el.find('#cdp-textfield'), 3278 corpCust = this.$el.find('#corp-cust'), 3279 cdp=$.trim(cdpField.val()); //dtc4102//IRAC-5491//Trip type showing with no CDP 3280 if(cdp.length > 0 && cdp!="0"){ //dtc4102//IRAC-5491//Trip type showing with no CDP//added cdp!=0 condition 3281 if (this.metaData.get('isIncludeCorpCustomer')){ 3282 if(corpCust.is(':checked')){ 3283 cdpOption.show(); 3284 this.setBusinessFormData(); 3285 this.metaData.set({ isShowCDPOptions : 1 }, { silent : true }); 3286 } 3287 } else { 3288 cdpOption.show(); 3289 this.metaData.set({ isShowCDPOptions : 1 }, { silent : true }); 3290 } 3291 this.handleTravelTypeDefaults(); 3292 } else { 3293 cdpOption.hide(); 3294 this.clearBusinessLeisureFormData(); 3295 this.metaData.set({ isShowCDPOptions : 0 }, { silent : true }); 3296 } 3297 }, 3298 handleTravelTypeDefaults() { 3299 if (!this.$el.find('#business-cdp-indicator').prop('checked') && !this.$el.find('#leisure-cdp-indicator').prop('checked')) { 3300 let travelType = this.metaData.get('defaultTravelType'); 3301 if (travelType !== undefined && travelType === 'L') { 3302 this.setLeisureFormData(); 3303 } 3304 else if (travelType !== undefined && travelType === 'B') { 3305 this.setBusinessFormData(); 3306 } 3307 } 3308 }, 3309 /** 3310 @description Toggle corporate dependent fields 3311 @function 3312 @param {event} e Event which was fired from the target dom element 3313 */ 3314 toggleCorpDependentFields : function (e) { 3315 var obj = $(e.target), 3316 pc = this.$el.find('#pc'), 3317 rqCvIt = this.$el.find('#rq-cv-it'), 3318 cdpField = this.$el.find('#cdp-textfield'), 3319 cdpOption = this.$el.find('#cdp-options-business'); 3320 3321 if (obj.is(':checked')){ 3322 rqCvIt.hide(); 3323 this.metaData.set({ isShowRQCVITSection : 0 }, { silent : true }); 3324 3325 if(!this.metaData.get('isShowPCField')){ 3326 pc.hide(); 3327 this.metaData.set({ isShowPCSection : 0 }, { silent : true }); 3328 } 3329 3330 if($.trim(cdpField.val()).length > 0 && this.metaData.get('isIncludeCDPOptions')) { 3331 this.setBusinessFormData(); 3332 cdpOption.show(); 3333 this.metaData.set({ isShowCDPOptions : 1 }, { silent : true }); 3334 } 3335 } 3336 else { 3337 rqCvIt.show(); 3338 pc.show(); 3339 this.metaData.set({ isShowRQCVITSection : 1 }, { silent : true }); 3340 this.metaData.set({ isShowPCSection : 1 }, { silent : true }); 3341 3342 if(this.metaData.get('isIncludeCorpCustomer')){ 3343 this.resetCorpFormFields(); 3344 cdpOption.hide(); 3345 this.metaData.set({ isShowCDPOptions : 0 }, { silent : true }); 3346 } 3347 } 3348 }, 3349 /** 3350 @description Display cdp rq warning 3351 @function 3352 */ 3353 showCdpRqWarning : function (){ 3354 var self = this; 3355 3356 var corpRate = this.$el.find('#corpRate'), //dtc4102//irac-73//Incorrect rates displayed when CDP entered and business is selected - INC001304212//renamed corp-rate to corpRate 3357 typeInRQ = this.$el.find('#type-in-rq'), 3358 corpCust = this.$el.find('#corp-cust'); 3359 3360 if(corpRate.is(':checked')){ 3361 if(typeInRQ.val() !== "" && corpCust && !corpCust.is(':checked')){ 3362 utilsProxy.getNotifier().alert(self.content.homePage.jsErrorContent.displayCDPrqAlertError); 3363 } 3364 } 3365 }, 3366 /** 3367 @description Display mobile discounts view 3368 @function 3369 */ 3370 displayMobileDiscounts : function (){ 3371 var stepValidation = this.formData.validate(this.formData, {stepValidation : true}); 3372 if(stepValidation) { 3373 this.formData.trigger('error', this.formData, stepValidation); 3374 3375 return; 3376 } 3377 3378 Utils.clearErrorMessage(); 3379 3380 this.$el.find('#discounts-section').toggle(); 3381 if(this.$el.find('#expand_collapse_discounts').hasClass('icons-expand_icon')) { 3382 this.$el.find('#expand_collapse_discounts').removeClass('icons-expand_icon').addClass('icons-collapse_icon'); 3383 } else { 3384 this.$el.find('#expand_collapse_discounts').removeClass('icons-collapse_icon').addClass('icons-expand_icon'); 3385 } 3386 this.$el.find('#affiliations').show(); 3387 }, 3388 /**
3389 @description Display the CDP options if the set profile cdp button is selected. 3390 @function 3391 */ 3392 setProfileCdpIndicator : function (){ 3393 var memberSelectedCdp=$('#member-selected-cdp').val(); 3394 3395 if (memberSelectedCdp==undefined || memberSelectedCdp == "" || memberSelectedCdp == "0") { //dtc4102//irac-5450-member-reservations-cdp-handling-inc001214130//added logic to handle '0' cdp value for None 3396 this.$el.find('#cdp-options-business').hide(); 3397 this.clearBusinessLeisureFormData(); 3398 } else { 3399 this.$el.find('#cdp-options-business').show(); 3400 } 3401 }, 3402 /** 3403 @description Set the other cdp indicator radio button as true when customer enters values in cdp field 3404 @function 3405 */ 3406 setOtherCdpIndicator : function (){ 3407 var input = $('#member-other-cdp'); 3408 3409 this.$el.find('#other-cdp-indicator').prop('checked', true).trigger("change"); 3410 3411 if($.trim(input.val()).length === 0) { 3412 this.$el.find('#cdp-options-business').hide(); 3413 this.resetAffiliateMemberFields(); 3414 } else { 3415 this.$el.find('#cdp-options-business').show(); 3416 } 3417 }, 3418 /** 3419 @description Render the html for the Homepage 3420 @function 3421 @returns {object} 3422 */ 3423 render : function(){ 3424 this.$el.append(_.template(this.template, { metaData : this.metaData.attributes, formData : this.formData.attributes, content : this.content })); 3425 3426 //dtc4102//irac-753-RQ not displaying on special offer page 3427 var rqInSession=SessionHelper.getItem(resConstants.TYPE_IN_RQ); 3428 if (rqInSession!=undefined && rqInSession!="undefined" && rqInSession!="" ){ 3429 this.$el.find('#type-in-rq').val(rqInSession); 3430 this.formData.set({'typeInRateQuote':rqInSession},{silent:true}); //hz464486//IRAC-1008-age-drop-down-on-top-of-discount-overlay 3431 } 3432 3433 3434 this.setDiscountDisplay(true); //dtc4102//IRAC-5329//Re-skin of Hertz.com legacy - INC001102442 3435 3436 //dtc4102//AAA verification 3437 //trigger call to /required on render 3438 this.handleAffiliateMemberVerification(); 3439 this.$el.find("#affiliate-member-join").trigger("change"); 3440 3441 //dtc4102//IRAC-5462 RQ best populated in res form when it should be blank - INC001214192IRAC-5491 3442 if(this.metaData.get("loggedIn") && !this.metaData.get("applicant")) 3443 this.setProfileCdpIndicator(); 3444 3445 return this; 3446 }, 3447 3448 //dtc4102//irac-5407-DPR-reservation-change-CDP-issue-inc001177304 3449 refresh : function(){ 3450 this.$el.empty(); 3451 this.render(); 3452 }, 3453 handleCdpLinks : function(){ 3454 /*specific to app device*/ 3455 }, 3456 doCleanup : function() { 3457 if(this.viewHelper.doCleanup) { this.viewHelper.doCleanup(); } 3458 this.template = this.content = this.metaData = this.formData = this.viewHelper = lightbox = null; 3459 } 3460 }); 3461 3462 return discountsView; 3463}); 3464 3465define("reservation/itinerary/core/view/itinerary-cdp-view",["jquery","underscore","backbone","reservation/itinerary/core/view/helper/view-helper"],function(b,c,d,a){return d.View.extend({initialize:function(a){this.referrer=this.options.referrer;this.content=this.options.content;this.model=this.options.model;this.metaData=this.options.metaData;this.formData=this.options.formData;this.content=a.content;this.lBoxRef=this.options.lBoxRef},events:{"click #businessBtn":"businessHandler","click #leisureBtn":"leisureHandler", 3466"click #contract-rate-yes-btn":"contractRateYesHandler","click #contract-rate-no-btn":"contractRateNoHandler"},render:function(){this.$el.html(c.template(b("#cdp-business-leisure-tpl").html(),{content:this.content}));return this},businessHandler:function(){this.referrer.$el.find("#business-cdp-indicator").prop("checked",!0).trigger("change");this.referrer.$el.find("#official-travel").prop("checked",!0).trigger("change");this.metaData.set({travelType:"B"},{silent:!0});a.trackCdpOptions("business-overlay-button"); 3467this.metaData.get("allowContractRate")?(this.referrer.$el.find("#corp-rate-yes").prop("disabled",!1),this.referrer.$el.find("#corp-rate-no").prop("disabled",!1),this.referrer.$el.find("#cdp-options").removeClass("disabled-label"),this.formData.set({corporateRate:"",officialTravel:"on",checkDiscount:"on"},{silent:!0}),1>this.$el.find("#cdp-overlay").length&&this.$el.find(".first .wrapper").append(c.template(b("#cdp-contract-rate-tpl").html(),{content:this.content}))):(this.referrer.$el.find("#corpRate").prop("checked", 3468!0).trigger("change"),this.formData.set({corporateRate:"on",officialTravel:"on",checkDiscount:"on"},{silent:!0}),this.submitRes())},leisureHandler:function(){this.referrer.$el.find("#leisure-cdp-indicator").prop("checked",!0);this.referrer.$el.find("#corpRate").prop("checked",!1).trigger("change");this.referrer.$el.find("#official-travel").prop("checked",!1).trigger("change");this.formData.set({corporateRate:"",officialTravel:""},{silent:!0});this.metaData.set({travelType:"L"},{silent:!0});a.trackCdpOptions("leisure-overlay-button"); 3469this.submitRes()},contractRateYesHandler:function(){this.referrer.$el.find("#corp-rate-yes").prop("checked",!0).trigger("change");this.formData.set({corporateRate:"on",corpRate:"yes"},{silent:!0});a.trackCdpOptions("corp-rate-yes-overlay-button");this.submitRes()},contractRateNoHandler:function(){this.referrer.$el.find("#corp-rate-no").prop("checked",!0).trigger("change");this.formData.set({corporateRate:"",corpRate:"no"},{silent:!0});a.trackCdpOptions("corp-rate-no-overlay-button");this.submitRes()}, 3470submitRes:function(){this.closeOverlay();this.metaData.get("bookAsMember")?this.referrer.memberSubmit():!this.metaData.get("loggedIn")&&this.formData.get("memberSelectedCdp")&&""!==this.formData.get("memberSelectedCdp")?this.referrer.bookAsMemberSubmitRes():this.referrer.bookAsGuestSubmitRes()},closeOverlay:function(){this.lBoxRef.inUse&&this.lBoxRef.closeOverlay()},doCleanup:function(){this.template=this.content=this.referrer=this.model=this.lBoxRef=null}})}); 3471define("reservation/itinerary/core/view/itinerary-geo-preferences-overlay-view","jquery underscore backbone utils/utils-proxy config/app-config utils/sessionhelper reservation/config reservation/process-info/core/model/process-model reservation/common/retr
3471y/core/view/retry-view reservation/process-config/core/reservation-constants".split(" "),function(a,b,c){return c.View.extend({initialize:function(){this.content=this.options.content;this.template=this.options.template;this.referrer=this.options.referrer; 3472this.lBoxRef=this.options.lBoxRef;this.viewHelper=this.options.viewHelper},events:{"click #geo-preferences-btn":"submitResWithItnInfo"},submitResWithItnInfo:function(){this.viewHelper.geoPreferencesSubmitWithItnInfo(this.referrer,this.lBoxRef)},render:function(){this.$el.append(b.template(a(this.template).html(),{content:this.content}));return this}})}); 3473define("reservation/itinerary/core/view/member-info-view","jquery underscore backbone reservation/common/retry/core/view/retry-view reservation/itinerary/core/model/member-info-model utils/utils-proxy config/app-config utils/sessionhelper reservation/config reservation/process-config/core/reservation-constants reservation/utils/core/reservation-utils utils/utils reservation/process-info/core/model/process-model".split(" "),function(f,l,h,n,p,i,g,j,q,e,k,m,o){return h.View.extend({initialize:function(){this.referrer= 3474this.options.referrer;this.content=this.options.content;this.template=this.options.template;this.formData=this.model.get("formData");this.attemptCount=0},events:{"click #member-info-submit":"submitMemberNumber","click #member-info-continue":"submitMemberNumber","keyup #member-number":"enableButton"},render:function(){this.$el.append(l.template(this.template,{content:this.content}));return this},enableButton:function(){""!=f.trim(this.$el.find("#member-number").val())?this.$el.find("#member-info-submit").removeAttr("disabled", 3475"disabled"):this.$el.find("#member-info-submit").attr("disabled","disabled")},submitMemberNumber:function(){var a=this;a.$el.find(".invalidText").hide();if(3<=a.attemptCount)a.referrer.itinerary.memberNumber="",a.formData.set("no1ClubNumber","");else{var c=f.trim(this.$el.find("#member-number").val());a.referrer.itinerary.memberNumber=c;a.formData.set("no1ClubNumber",c)}c=new h.Model(a.referrer);m.clearErrorMessage(a.$el.find("#error-list"));n.saveWithRetry(c,{},{url:g.config.rootContext+"/rest/hertz/v2/reservations/makeReservation", 3476type:"POST",beforeSend:function(){g.config.isApp?htz.utils.Spinner.spin():i.getSpinner().spin()},success:function(c){g.config.isApp?htz.utils.Spinner.stop():i.getSpinner().stop();j.setItem(e.ITINERARY_DATA,JSON.stringify(a.model));j.setItem(e.SELECTED_VEHICLE_INFO,JSON.stringify(a.referrer.vehicle));k.goToPageFromResData(c)},error:function(c,b){var d,f={messages:[a.content.reservationErrors.genericErrorContent.technicalDifficulties]};g.config.isApp?htz.utils.Spinner.stop():i.getSpinner().stop();try{b= 3477JSON.parse(b.responseText)}catch(j){}if(b&&b.data&&b.data.meta&&b.data.meta.target!==o.getStep())k.clearSessionStorage([e.VEHICLES_DATA,e.EXTRAS_DATA,e.ITINERARY_INFO_DATA,e.RATE_DETAILS_DATA]),d=new h.Model(b),k.goToPageFromResData(d);else{d=b.message;if(!d||l.isEmpty(d))d=f;a.attemptCount++;3<=a.attemptCount?(a.$el.find(".invalidMember").hide(),a.$el.find(".exceed").show()):m.displayAllErrors(d,a.$el.find("#error-list"))}}})},doCleanup:function(){this.template=this.content=this.referrer=null}})}); 3478define("reservation/itinerary/core/view/location-closed-overlay-view","jquery underscore backbone utils/utils-proxy reservation/itinerary/core/view/helper/view-helper tools/calendar config/app-config utils/sessionhelper".split(" "),function(b,j,q,v,e,r,k,n){var o=function(a){var a=a.split(":").join(""),b=4>a.length?1:2,c=parseInt(a.substring(0,b),10),l=(c+11)%12+1,c=11<c?"PM":"AM",a=a.substring(b);""===a&&(a="00");return l+":"+a+" "+c},s=function(){var a="phone"===k.config.deviceGroup?b("#itn-date-time-overlay"): 3479null,f=n.getItem(htz.res.config.ReservationConstants.CALENDAR_MODE)&&"phone"!==k.config.deviceGroup?parseInt(n.getItem(htz.res.config.ReservationConstants.CALENDAR_MODE)):2;new r({mode:f,euro:this.formData.get("militaryClock"),start:this.$el.find("#pickup-date-overlay"),end:this.$el.find("#dropoff-date-overlay"),startText:this.$el.find("#pickup-date-box-overlay"),endText:this.$el.find("#dropoff-date-box-overlay"),target:a,content:this.content,calledWithinOverlay:!0,syncPickupAndDrop
3479off:function(a, 3480f,d,h){window.cal=h;"#pickup-date-overlay"===f?(d&&1===d&&(b("#pickup-date-overlay").val(a).trigger("change"),b("#pickup-date-box-overlay .value").text(a),b("#dropoff-date").attr("value",b("#dropoff-date-overlay").val()).trigger("change"),b("#dropoff-date-box .value").html(b("#dropoff-date-overlay").val())),b("#pickup-date").attr("value",a).trigger("change"),b("#pickup-date-box .value").html(a)):"#dropoff-date-overlay"===f&&(b("#dropoff-date").attr("value",a).trigger("change"),b("#dropoff-date-box .value").html(a)); 3481h.calendar.remove()}});a=f=null},p=function(a,b,c,l){var d=[],h,g,e;j.each(a,function(a){"30"==(a.openTime+"").slice(-2)&&(a.openTime+=20);2400>a.closeTime&&(a.closeTime+=50);for(h=a.openTime;h<a.closeTime;h+=50){var c;c=h;"80"===(h+"").slice(-2)&&(c+=20);e=(c+"").slice(-2);"50"===e?e="30":"0"===e&&(e="00");g=c+"";g=g.substring(0,g.length-2);1===g.length?g="0"+g:""===g&&(g="00");c=1!==l?o(g+":"+e):g+":"+e;d.push([g+":"+e,c])}});return[["",c.homePage.locationClosedProcess.selectTime]].concat(d)},i= 3482function(a,b,c,e){var d=c.homePage.monthDayContent,c=[d.shortFormJan,d.shortFormFeb,d.shortFormMar,d.shortFormApr,d.shortFormMay,d.shortFormJun,d.shortFormJul,d.shortFormAug,d.shortFormSep,d.shortFormOct,d.shortFormNov,d.shortFormDec],d=[d.shortFormSun,d.shortFormMon,d.shortFormTue,d.shortFormWed,d.shortFormThu,d.shortFormFri,d.shortFormSat],a=new Date(a),b=1===e?b:o(b);return d[a.getDay()]+" "+c[a.getMonth()]+" "+a.getDate()+", "+a.getFullYear()+" - "+b},t=function(a){var b=[];a.pickupLocation.isOpen|| 3483b.push(function(a){return a.homePage.locationClosedProcess.locationClosedAtPickup});a.dropoffLocation.isOpen||b.push(function(a){return a.homePage.locationClosedProcess.locationClosedAtReturn});return b},u=function(a){var f="pickupDay",c="pickupTime",l=this;this.locations.pickupLocation.isOpen&&(f="dropoffDay",c="dropoffTime");this.availableLocations=function(a,c,b){l.formData.get("militaryClock")&&(c=c.split("/"),c=[c[1],c[0],c[2]].join("/"));var f=new Date(c),i=parseInt(b.split(":").join(""),10), 3484m=[],k;j.every(a,function(a){"undefined"!==typeof a.gddHours&&0<a.gddHours[0].length?"undefined"!==typeof a.privateFlightOnly&&!a.privateFlightOnly&&(k=e.availableHoursOfDay(a.gddHours[0],f),e.locationOpenAtRequestedTime(k,i,a.kind)&&m.push(a)):m.push(a);return 12>m.length}.bind(this));return m}(a.data.model,this.formData.get(f),this.formData.get(c));b(".lb-header section").html(this.options.content.homePage.locationClosedProcess.chooseOpenLocation);a=b("#change-location-overlay-tpl").html();this.$el.find(".location-content").html(j.template(a, 3485{content:this.content,formData:this.formData.attributes,pickupLocation:this.locations.pickupLocation.details,dropoffTime:i(this.formData.attributes.dropoffDayStandard,this.formData.attributes.dropoffTime,this.content,this.formData.attributes.militaryClock),pickupTime:i(this.formData.attributes.pickupDayStandard,this.formData.attributes.pickupTime,this.content,this.formData.attributes.militaryClock),dropoffLocation:this.locations.dropoffLocation.details,closedLocations:function(a,c){var b=[];a.pickupLocation.isOpen|| 3486b.push(c.homePage.locationClosedProcess.changePickupLocation);a.dropoffLocation.isOpen||b.push(c.homePage.locationClosedProcess.changeReturnLocation);return b.join(" <br/> ")}(this.locations,this.content),locations:this.locations,results:this.availableLocations,minLocations:3}))};return q.View.extend({initialize:function(){this.content=this.options.content;this.metaData=this.options.metaData;this.formData=this.options.formData;this.locations=this.options.locations;this.template=b("#location-closed-overlay-tpl").html(); 3487this.submitRes=this.options.callback},events:{"click #change-my-time-submit":"changeMyTime","click #choose-another-location-submit":"chooseAnotherLocation","click .chooseAnotherLocation":"locationSelected","click #change-my-time":"changeMyTime","click #load-more":"loadMoreLocations"},chooseAnotherLocation:function(a){e.trackLocationClosedOverlay("ChooseAnOpenLocationSelected");a.preventDefault();a=this.locations.pickupLocation.details.extendedOAGCode;this.locations.dropoffLocation.isOpen||(a=this.locations.dropoffLocation.details.extendedOAGCode); 3488"undefined"!==typeof a&&e.getLocationsNearBy(a,u.bind(this),{fields:"gddHours privateFlightOnly locationName hours extendedOAGCode city state country_name".split(" ")})},locationSelected:function(a){a.preventDefault();a=b(a.target).attr("data-index");a=this.availableLocations[a];this.locations.dropoffLocation.details.extendedOAGCode===this.locations.pickupLocation.details.extendedOAGCode?(this.formData.set("pickupHiddenEOAG",a.extendedOAGCode,{silent:!0}),b("#pickup-location").attr("value",a.locationName), 3489this.formData.set("pickupLocation",a.locationName,{silent:!0})):this.locations.dropoffLocation.isOpen?(this.formData.set("pickupHiddenEOAG",a.extendedOAGCode,{silent:!0}),b("#pickup-location").attr("value",a.locationName),this.formData.set("pickupLocation",a.locationName,{silent:!0})):(this.formData.set("dropoffHiddenEOAG",a.extendedOAGCode,{silent:!0}),b("#dropoff-location").attr("value",a.locationName),this.formData.set("dropoffLocation",a.locationName,{silent:!0}));e.trackLocationClosedOverlay("NewLocationSelected"); 3490this.submitRes(this.formData)}
3490,loadMoreLocations:function(a){a.preventDefault();this.$el.find(".location-result").show();b(a.target).hide()},changeMyTime:function(a){"undefined"!==typeof a&&a.preventDefault();e.trackLocationClosedOverlay("ChangeMyTimeSelected");var f=function(a,b){e.pickupAndDropoffTimesAreValid(a.attributes,b.attributes,function(a){this.locations=a;this.changeMyTime()}.bind(this))},a=b("#change-my-time-overlay-tpl").html();b(".lb-header section").html(this.content.homePage.locationClosedProcess.changeDateTime); 3491this.$el.find(".location-content").html(j.template(a,{content:this.content,formData:this.formData.attributes,locations:this.locations,pickupLocation:this.options.locations.pickupLocation.details,pickupHours:p(this.locations.pickupLocation.hours,"pickup",this.content,this.formData.attributes.militaryClock),dropoffHours:p(this.locations.dropoffLocation.hours,"dropoff",this.content,this.formData.attributes.militaryClock),dropoffTime:i(this.formData.attributes.dropoffDayStandard,this.formData.attributes.dropoffTime, 3492this.content,this.formData.attributes.militaryClock),pickupTime:i(this.formData.attributes.pickupDayStandard,this.formData.attributes.pickupTime,this.content,this.formData.attributes.militaryClock),dropoffLocation:this.options.locations.dropoffLocation.details}));s.bind(this)();e.pickupAndDropoffTimesAreValid(this.formData.attributes,this.metaData.attributes,function(a){var b=this.$el.find("#change-my-time-submit");e.locationsOKToSubmit(a)?b.addClass("primary").removeClass("disabled"):b.addClass("disabled").removeClass("primary")}.bind(this)); 3493this.$el.find("#pickup_time_overlay").change(function(a){a=b(a.target).val();""!==a&&(b('#pickup-time option[value="'+a+'"]').prop("selected",!0),this.formData.set("pickupTime",a,{silent:!0}),f.bind(this)(this.formData,this.metaData))}.bind(this));this.$el.find("#dropoff_time_overlay").change(function(a){a=b(a.target).val();""!==a&&(b('#dropoff-time option[value="'+a+'"]').prop("selected",!0),this.formData.set("dropoffTime",a,{silent:!0}),f.bind(this)(this.formData,this.metaData))}.bind(this));b("#pickup-date-overlay").change(function(a){a= 3494b(a.target).val();""!==a&&(this.formData.set("pickupDay",a,{silent:!0}),this.formData.set("pickupDayStandard",a,{silent:!0}),f.bind(this)(this.formData,this.metaData))}.bind(this));b("#dropoff-date-overlay").change(function(a){a=b(a.target).val();""!==a&&(this.formData.set("dropoffDay",a,{silent:!0}),this.formData.set("dropoffDayStandard",a,{silent:!0}),f.bind(this)(this.formData,this.metaData))}.bind(this));this.$el.find(".location-selection-details .show-pickup-times").click(function(){this.$el.find("#date-time-selection-pickup").show(); 3495this.$el.find("#itn-date-time-overlay .date-time").show();this.$el.find(".location-selection-details .show-pickup-times").hide()}.bind(this));this.$el.find(".location-selection-details .show-dropoff-times").click(function(){this.$el.find("#date-time-selection-dropoff").show();this.$el.find(".location-selection-details .show-dropoff-times").hide()}.bind(this));this.$el.find("#date-time-selection-dropoff .value, #date-time-selection-dropoff .date-cal").click(function(){this.$el.find("#date-time-selection-pickup").show(); 3496this.$el.find("#itn-date-time-overlay .date-time").hide();this.$el.find(".calendar").show()}.bind(this));a=b("#pickup-time select").val();this.$el.find("#pickup_time_overlay").val(a);a=b("#dropoff-time select").val();this.$el.find("#dropoff_time_overlay").val(a);this.$el.find("#change-my-time-submit").click(function(a){a.preventDefault();e.pickupAndDropoffTimesAreValid(this.formData.attributes,this.metaData.attributes,function(a){e.locationsOKToSubmit(a)&&this.submitRes(this.formData)}.bind(this))}.bind(this)); 3497this.locations.pickupLocation.isOpen&&this.$el.find("#date-time-selection-pickup").hide();this.locations.dropoffLocation.isOpen&&this.$el.find("#date-time-selection-dropoff").hide()},render:function(){this.$el.append(j.template(this.template,{content:this.content,formData:this.formData.attributes,pickupLocation:this.locations.pickupLocation.details,dropoffTime:i(this.formData.attributes.dropoffDayStandard,this.formData.attributes.dropoffTime,this.content,this.formData.attributes.militaryClock),pickupTime:i(this.formData.attributes.pickupDayStandard, 3498this.formData.attributes.pickupTime,this.content,this.formData.attributes.militaryClock),dropoffLocation:this.locations.dropoffLocation.details,closedLocationMessages:t(this.locations)}));return this},doCleanup:function(){this.template=this.content=null}})});
3499define("reservation/itinerary/core/model/member-info-model",["jquery","underscore","backbone"],function(c,d,b){return b.Model.extend({defaults:{memberId:""},initialize:function(){this.constructor.__super__.initialize.apply(this,arguments)},parseModel:function(a){a.itinerary&&this.set("itinerary",a.itinerary);a.vehicle&&this.set("vehicle",a.vehicle)},url:"/rentacar/rest/hertz/v2/reservations/makeReservation"})}); 3500define("reservation/itinerary/core/model/member-preferences-model",["backbone"],function(b){return b.Model.extend({parse:function(a){a&&a.data&&("undefined"!==a.data.geoPreferencesSet&&this.set("geoPreferencesSet",a.data.geoPreferencesSet),"undefined"!==a.data.goldAnytimeEligible&&this.set("goldAnytimeEligible",a.data.goldAnytimeEligible))},url:"/rentacar/rest/hertz/v2/member/preferences"})}); 3501define("reservation/process-info/core/model/process-model",["jquery","reservation/process-config/core/reservation-constants"],function(f,b){var e="",c="",d=isInProcess=!1,g="itinerary vehicles extras review-and-book non-bookable confirmation review cancel-confirmation search online-checkin-confirmation counter-bypass-confirmation reservation-list".split(" ");return{setStep:function(a){0<=f.inArray(a,g)&&(e=a)},getStep:function(){return e},setModify:function(a){d=a},isModify:function(){return d},checkAndStartProcess:function(){var a= 3502isInProcess;isInProcess=!0;return a},hasProcessStarted:function(){return isInProcess},addToFlow:function(a){if(a){switch(a){case b.ITINERARY:a="I";break;case b.VEHICLES:a="V";break;case b.EXTRAS:a="E";break;case b.REVIEW_AND_BOOK:a="B";break;case b.CONFIRMATION:a="C";break;case b.REVIEW:a="R";break;case b.CANCEL_CONFIRMATION:a="D"}a&&(d&&(a="M"+a),c+=a)}},getFlow:function(){return c}}}); 3503define("reservation/itinerary/core/view/helper/view-helper","jquery underscore backbone config/app-config utils/utils-proxy utils/sessionhelper helpers/resource-loader reservation/process-config/core/reservation-constants reservation/process-info/core/model/process-model reservation/common/retry/core/view/retry-view reservation/config reservation/itinerary/core/model/member-preferences-model".split(" "),function(e,i,y,h,j,g,u,k,r,v,w,x){function p(){null===q&&(q=j.getLightbox());return q}var q=null, 3504s,t={};s={retrieve:function(a){var c=a.countryCode;a.memberNumber&&(c+="_"+a.memberNumber);return t[c]||null},store:function(a){var c=a.get("destinationCountryCode"),b=a.get("memberNumber");b&&(c+="_"+b);t[c]=a}};return{getDestinationData:function(a,c){var b=a.attributes||a,d="on"===b.returnAtDifferentLocationCheckbox&&b.dropoffHiddenEOAG&&b.pickupHiddenEOAG&&b.dropoffHiddenEOAG!==b.pickupHiddenEOAG;if(!b||!b.pickupHiddenEOAG)c.reject();else{var f=function(a,b){this.getRentalLocationDetails(a,function(a){b.resolve(a.data)}, 3505function(){b.resolve()})}.bind(this),o=e.Deferred();d?(d=e.Deferred(),e.when(o,d).done(function(a,b){!a||!b?c.reject():c.resolve({isOneWay:!0,pickup:a,dropoff:b})}),f(b.dropoffHiddenEOAG,d)):o.done(function(a){a?c.resolve({isOneWay:!1,pickup:a,dropoff:null}):c.reject()});f(b.pickupHiddenEOAG,o)}},getMemberPreferences:function(a){if(a&&a.destinationCountryCode){var c=s.retrieve(a);if(c)return c;var b=new x;j.getSpinner().spin();b.save(a,{async:!1,error:function(a,c){if(c&&c.responseText){var o;try{o= 3506JSON.parse(c.responseText)}catch(n){}o&&o.resultInfo&&400==o.resultInfo.resultCode?b.set({goldAnytimeEligible:!1},{silent:!0}):b=null}else b=null}});return b}return null},storeMemberPrefs:function(a){s.store(a)},isEligibleMemberLevel:function(a){return!(!a.attributes.loggedIn||!a.attributes.enableTA&&a.attributes.applicant)},checkLocationsAndSubmit:function(a,c,b,d){var f=this;this.pickupAndDropoffTimesAreValid(a.attributes,c.attributes,function(a){f.locationsOKToSubmit(a)?b&&"function"===typeof b&& 3507b():d&&"function"===typeof d&&d()})},parseErrorObject:function(a,c){var b=null;if(a){var d=JSON.parse(a);c&&d&&e.isArray(d.message.errorData)?b=d.message.errorData:!c&&(d&&e.isArray(d.errorData))&&(b=d.errorData)}return b},locationPopupMessage:function(a,c,b,d){htz.popup={oag:b,locType:c};u.load({content:htz.config.apiDomain+"/rest/content/subSystemId/"+htz.config.subSystemId+"/dialect/"+htz.config.dialect+"/deviceGroup/all/section/integrated/subSection/location/folder/popup/file/popupPage",callback:function(b){require(["reservation/special-instructions/core/presenter/special-instructions-presenter"], 3508function(c){c.showSpecialInsPopup(a,b.content,d)})}})},closeLightBox:function(){var a=p();a&&a.closeOverlay()},storeLocationOag:function(a,c){var b=g.getItem("oagCodes"),b="undefined"!==typeof b?JSON.parse(b):[];"undefined"!==typeof a&&(-1===i.indexOf(b,a)&&b.push(a),5<b.length&&g.removeItem(b.shift()),g.setItem("oagCodes",JSON.stringify(b)),g.setItem(a,JSON.stringify(c)))}
3508,getRentalLocationDetails:function(a,c,b){var d=this,f=g.getItem(a);"undefined"!==typeof f&&"undefined"!==typeof c?c(JSON.parse(f)): 3509e.ajax({async:!0,dataType:"jsonp",cache:!1,url:h.config.apiDomain+"/rest/location/oag/"+a,timeout:5E3,success:function(b){b.data&&d.storeLocationOag(a,b);c&&c(b)},error:function(){b&&b({data:{}})}})},getLocationsNearBy:function(a,c,b){b=i.extend({getCount:125,fields:[]},b||{});b.fields=b.fields.join(",");j.getSpinner().spin();e.ajax({async:!0,dataType:"jsonp",cache:!1,data:b,url:h.config.apiDomain+"/rest/location/nearBy/oag/"+a,error:function(){c({data:{model:[]}})},success:function(a){c(a)},complete:function(){j.getSpinner().stop()}})}, 3510availableHoursOfDay:function(a,c){var b="SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY".split(" "),d=[].concat(a),f=function(a){var b=a.substr(5,2);try{b=parseInt(b),b-=1,0>b&&(b=0)}catch(c){}return new Date(a.substr(0,4),b,a.substr(8,2),a.substr(11,2),a.substr(14,2),a.substr(17,2))};i.each(d,function(a){a.effectiveDate=f(a.effectiveDate);a.expiryDate=f(a.expiryDate)});return d=i.filter(d,function(a){return a.effectiveDate<=c&&c<=a.expiryDate&&b[c.getDay()]===a.dayOfWeek.toUpperCase()})}, 3511locationOpenAtRequestedTime:function(a,c,b,d){return d&&("pickup"===b&&!0===d.afterHoursPickup||"dropoff"===b&&!0===d.afterHoursDrop)?!0:void 0!==i.find(a,function(a){return c>=a.openTime&&c<=a.closeTime})},rentalLocationIsOpen:function(a,c,b,d,f,e){var n=new Date(c),l=!0,h=parseInt(b.split(":").join(""),10),m={},g=[];j.getSpinner().spin();c=function(a){"undefined"===typeof a||a.message||(m=a.data,f&&m.optGoldAnytime?l=!0:m&&"undefined"!==typeof m.gddHours&&0<m.gddHours[0].length?(g=this.availableHoursOfDay(m.gddHours[0], 3512n),l=this.locationOpenAtRequestedTime(g,h,d,m)):l=!0);j.getSpinner().stop();e({isOpen:l,details:m,hours:g,kind:d})};this.getRentalLocationDetails(a,c.bind(this),c.bind(this))},pickupAndDropoffTimesAreValid:function(a,c,b){var d=function(b){return 1===a.militaryClock?(b=b.split("/"),b[1]+"/"+b[0]+"/"+b[2]):b},f={isOpen:!0,kind:"pickup",details:{},inProgress:!0},e={isOpen:!0,kind:"dropoff",details:{},inProgress:!0},n,l,h=!1,g=!1,k=!1,i=!1,j=c?!!c.bookAsMember:!1;"undefined"!==typeof c&&"undefined"!== 3513typeof c.deliveryLocation&&(k=c.deliveryLocation,"on"!==a.returnAtDifferentLocationCheckbox&&(i=c.deliveryLocation));"undefined"!==typeof c&&"undefined"!==typeof c.collectionLocation&&(i=c.collectionLocation);a&&"undefined"!==typeof a.inpPickupOptGoldAnytime&&(h=a.inpPickupOptGoldAnytime);a&&"undefined"!==typeof a.inpDropoffOptGoldAnytime&&(g=a.inpDropoffOptGoldAnytime);a&&(a.dropoffHiddenEOAG&&""!==a.dropoffHiddenEOAG)&&(n=a.dropoffHiddenEOAG);a&&(a.pickupHiddenEOAG&&""!==a.pickupHiddenEOAG)&&(l= 3514a.pickupHiddenEOAG);l&&(!n&&"on"!==a.returnAtDifferentLocationCheckbox)&&(n=l);h&&j?f.inProgress=!1:l&&!k?("00:00"==a.pickupTime&&(a.pickupTime="00:01"),this.rentalLocationIsOpen(l,d(a.pickupDay),a.pickupTime,f.kind,j,function(a){f=a;f.inProgress=!1}.bind(this))):f.inProgress=!1;g&&j?e.inProgress=!1:n&&!i?("00:00"==a.dropoffTime&&(a.dropoffTime="00:01"),this.rentalLocationIsOpen(n,d(a.dropoffDay),a.dropoffTime,e.kind,j,function(a){e=a;e.inProgress=!1}.bind(this))):e.inProgress=!1;if(""===a.pickupDay|| 3515""===a.dropoffDay||"on"===a.returnAtDifferentLocationCheckbox&&(""===a.dropoffHiddenEOAG||""===a.pickupHiddenEOAG))e.isOpen=!0,e.inProgress=!1,f.isOpen=!0,f.inProgress=!1;f.inProgress||e.inProgress?setTimeout(function(){b({dropoffLocation:e,pickupLocation:f})}.bind(this),2E3):b({dropoffLocation:e,pickupLocation:f})},locationsOKToSubmit:function(a){return a.dropoffLocation.isOpen&&a.pickupLocation.isOpen||a.dropoffLocation.details.extendedOAGCode!==a.pickupLocation.details.extendedOAGCode&&!a.dropoffLocation.isOpen&& 3516!a.pickupLocation.isOpen?!0:!1},trackLocationClosedOverlay:function(a){"undefined"!==typeof WebTracking&&WebTracking.trackPage("location-closed-overlay-"+a)},setGeoLocation:function(a,c,b){navigator.geolocation&&navigator.geolocation.getCurrentPosition(function(d){e.ajax({url:"//www.mapquestapi.com/geocoding/v1/reverse",dataType:"jsonp",crossDomain:!0,data:{key:decodeURIComponent("Gmjtd%7Cluuan107n9%2C75%3Do5-lz8w0"),lat:d.coords.latitude,lng:d.coords.longitude},success:function(b){var b=b.results[0].locations[0], 3517b=b.adminArea5+", "+b.adminArea3+", "+b.adminArea1,d=e(c[0]),n=e(c[1]);"pickup-geo-loc"===a?(d.val(b),d.trigger("keyup")):(n.val(b),n.trigger("keyup"))},error:function(){j.getNotifier().alert(b.homePage.geoLocationContent.unknownError)}})},function(a){switch(a.code){case a.TIMEOUT:p().overlay({url:"timeout-overlay",title:b.homePage.geoLocationContent.timeOutTitle,width:300,center:!0},i.template(e("#timeout-tpl").html(),{content:b}));break;case a.POSITION_UNAVAILABLE:p().overlay({url:"position-unavailable-overlay", 3518title:b.homePage.geoLocationContent.positionUnavailableTitle,width:300,center:!0},i.template(e("#position-unavailable-tpl").html(),{content:b}));break;case a.PERMISSION_DENIED:p().overlay({url:"permission-denied-overlay",title:b.homePage.geoLocationContent.permissionDeniedTitle,width:300,center:!0},i.template(e("#permission-denied-tpl").html(),{content:b}));break;case a.UNKNOWN_ERROR:p().overlay({url:"unknown-error-overlay",title:b.homePage.geoLocationContent.unknownError,width:300,center:!0},i.template(e("#unknown-error-tpl").html(), 3519{content:b}))}})},setFooterPadding:function(){if("phone"!==h.config.deviceGroup){var a=e(".footer-desk");if(0===a.length||!a.is(":visible"))if(a=e(".footer-tab"),0===a.length||!a.is(":visible"))return;var c=e(".res-form").height()+10,b=e(".home").height();c>b?a.css("padding-top",c-b+"px"):a.css("padding-top","10px")}},fetchBanner:function(a,c){e.ajax({url:h.config.rootContext+"/handlers/LocationChangeAJAXHandler",type:"GET",data:{eoag:c,loadBanner:a},dataType:"json",cache:!1,success:function(b){a&& 3520!0===b.DoubleClickBanner&&e("#hp-banner-container").load(h.config.rootContext+"/templates/reservation/home/homeAds.jsp?bannerOnly=Y&_="+(new Date).getTime(),function(){gptBannerAds.refreshAds()})}})},refreshBanner:function(a,c,b){b&&(3===c.length||6===c.length)?this.fetchBanner(a,c):0<c.length&&this.fetchBanner(a,c)},loadMisc:function(a,c,b){!a&&c&&(a="phone"!==h.config.deviceGroup?"":"?bannerOnly=Y",a=""===a?"?_="+(new Date).getTime():a+("&_="+(new Date).getTime()),e("#hp-banner-container").empty().load(h.config.rootContext+ 3521"/templates/reservation/home/homeAds.jsp"+a,function(){gptBannerAds.
3521clean();gptBannerAds.render()}),this.setFooterPadding());b||e("#hp-ww-info").empty().load(h.config.rootContext+"/templates/integrated/locations/wordwheelMoreInfo.jsp")},findCarTypeLabel:function(a,c){var b=c[0].name;i.each(c,function(c){a==c.value&&(b=c.name)});return b},validateAffiliateMember:function(a,c,b){var d=e.Deferred();"undefined"==typeof htz.res.config.affiliateMemberCallCount&&(htz.res.config.affiliateMemberCallCount= 3522{});a=e.trim(h.config.dialect);htz.res.config.affiliateMemberCallCount[b.formData.get("companyId")]="undefined"==typeof htz.res.config.affiliateMemberCallCount[b.formData.get("companyId")]?1:htz.res.config.affiliateMemberCallCount[b.formData.get("companyId")];var f,g;b?(f=b.formData.get("affiliateMemberJoin"),"on"===f?c="":c=b.formData.get("affiliateMemberID")):(f=e("#affiliate-member-join").is(":checked")?"on":"","on"===f?c="":c=e.trim(c));g=htz.res.config.affiliateMemberCallCount[b.formData.get("companyId")]; 3523e.ajax({cache:!1,data:e.param({affiliateMemberID:c.replace(/^0+/,""),dialect:a,affiliateCallCount:g,affiliateMemberJoin:f,companyId:b.formData.get("companyId")}),url:h.config.apiDomain+"/rest/partner/cdp/memberID/validate",dataType:"jsonp",type:"GET",contentType:"application/json; charset=utf-8",success:function(a){if("fail"===a.resultInfo.result)400===a.resultInfo.resultCode&&g++,htz.res.config.affiliateMemberCallCount[b.formData.get("companyId")]=g,d.reject({responseText:JSON.stringify(a)});else{if("success"=== 3524a.resultInfo.result&&(htz.res.config.affiliateMemberCallCount[b.formData.get("companyId")]=1,b.formData.set({affiliateCallCount:htz.res.config.affiliateMemberCallCount[b.formData.get("companyId")]},{silent:!0}),1===b.metaData.get("loggedIn")&&!b.metaData.get("enableTA"))){var a=new Date,a=new Date(a.setFullYear(a.getFullYear()+1)),c=""!=b.formData.get("memberOtherCdpField")?b.formData.get("memberOtherCdpField"):b.formData.get("memberSelectedCdp");document.cookie="affiliateID_"+b.metaData.get("memberNumber")+ 3525"_"+c+"=C; expires="+a.toUTCString()+"; path=/"}d.resolve()}},error:function(a){d.reject({responseText:a.responseJSON})}});return d.promise()},validateCdp:function(a,c){var b=e.Deferred(),d=/^([0-9]*)$/;c?(c=e.trim(c),d.test(c)?e.ajax({cache:!1,url:h.config.apiDomain+"/rest/customer/cdp/"+h.config.dialect+"/"+c,dataType:"jsonp",success:function(c){"invalid"===c.data.result?(delete c.message.systemErrors,b.reject({responseText:JSON.stringify(c)})):(c.data.cdpList&&a.formData.set({travelPurposeReq:c.data.cdpList[0].travelPurposeRequired}, 3526{silent:!0}),b.resolve(c.data.cdpList))}}):b.resolve(null)):b.resolve(null);return b.promise(null)},specialOffersExtrasCheck:function(){var a=g.getItem(k.SPECIAL_OFFERS_DATA);if(a)try{var c=JSON.parse(a);c&&c.extNL&&e.ajax({url:h.config.rootContext+"/rest/hertz/v2/itinerary/vehicles/specialoffers",type:"POST",headers:{"cache-control":"no-cache"},data:JSON.stringify(c),dataType:"json",contentType:"application/json"})}catch(b){}},trackCdpOptions:function(a){"undefined"!==typeof WebTracking&&WebTracking.trackPage("cdp-options-"+ 3527a)},getUpdatedTime:function(){var a=new Date,c=parseInt(a.getHours()),a=0<parseInt(a.getMinutes())?c+2:c+1;10>a?a="0"+a:24==a?a="00":24<a&&(a="0"+(a-24));return a+":00"},updateGeoLocationInfo:function(a){a.formData.set("fromProfileForGoldService","Y",{silent:!0});a.keepTrackOfGeoPrefLocation&&a.keepTrackOfGeoPrefLocation()},geoPreferencesSubmitWithItnInfo:function(a,c){var b,d=this,e=a.isResFlowEdit,i=a.isResWidget;d.updateGeoLocationInfo(a);r.isModify()?(b=g.getItem(k.CONFIRMATION_NUMBER),b=h.config.rootContext+ 3528"/rest/hertz/v2/itinerary/vehicles/"+b):b=h.config.rootContext+"/rest/hertz/v2/itinerary/vehicles";v.saveWithRetry(a.formData,{},{url:b,type:"POST",beforeSend:function(){h.config.isApp?htz.utils.Spinner.spin():j.getSpinner().spin()},error:function(b,l){var i=r.isModify()?k.MODIFY_ITINERARY:k.ITINERARY;c.inUse&&c.closeOverlay();if(l&&l.responseText){try{var m=JSON.parse(l.responseText).message;a.formData.trigger("error",b,l);Utils.trackError(m);g.setItem(k.ITINERARY_ERROR_DATA,JSON.stringify(m));g.setItem(k.ERRORS, 3529JSON.stringify(m))}catch(o){}d.handleGeoPrefNavigation(i,e)}h.config.isApp?htz.utils.Spinner.stop():j.getSpinner().stop()}
3529,success:function(a,b){var c=r.isModify()?k.MODIFY_VEHICLES:k.VEHICLES;if(b&&b.resultInfo){g.setItem(k.VEHICLES_DATA,JSON.stringify(b.data.model));if(b.message)try{g.setItem(k.VEHICLES_ERROR_DATA,JSON.stringify(b.message))}catch(i){}g.setItem(k.ITINERARY_INFO_DATA,JSON.stringify(b.data.itinerary));b.data.rateDetails&&g.setItem(k.RATE_DETAILS_DATA,JSON.stringify(b.data.rateDetails)); 3530d.handleGeoPrefNavigation(c,e)}else window.location.reload();h.config.isApp?htz.utils.Spinner.stop():j.getSpinner().stop()},complete:function(){(!e||!i)&&a.$el.find(".home").removeClass("step-discount");c.inUse&&c.closeOverlay()}})},handleGeoPrefNavigation:function(a,c){c?window.location.href=h.config.rootContext+"/reservation/#"+a:w.getRotar().rotate(a)},doCleanup:function(){q=null}}}); 3531define("reservation/lookup/core/presenter/lookup-presenter","backbone config/app-config utils/domhelper config/utilconfig utils/utils-proxy reservation/lookup/core/model/lookup-form-model reservation/lookup/core/model/lookup-model reservation/lookup/core/view/lookup-view utils/utils reservation/process-info/core/model/process-model reservation/common/retry/core/view/retry-view".split(" "),function(k,s,h,l,j,m,n,o,p,d,q){var c,b,i=htz.res.config.ReservationConstants.RESERVATION_LIST;return{show:function(a){if(a&& 3532a.template&&a.content){var r=a.template,e=a.content;a.content=null;a.template=null;var f=a.referrer,g=a&&a.target;this.prepareData(a);var a=g,g=h.getPageId(i),d=!1;a||(h.isPageAdded(i)||h.addPage(i,"page"),a="#"+g,d=!0,"undefined"==typeof f&&(f=$(a)));c||(c=new o({target:a,model:b,template:r,content:e,referrer:f}));c.render();d&&($("#container").removeClass("animated-background"),l.getNavigator().navigate("#"+g))}},prepareData:function(a){var c={};a&&a.formData&&(c=a.formData,a.formData=null);if(!a)try{var e= 3533htz.homepage.json.data.model.metaData,a={loggedIn:e.loggedIn,enableTA:e.enableTA,applicant:e.applicant}}catch(f){a={}}b?(b.get("formData").set(c),b.get("metaData").set(a)):(b=new n,b.set("formData",new m(c)),b.set("metaData",new k.Model(a?a:{})));(a=this.fetchMemberResList(a,b))&&b.get("metaData").set(a,{silent:!0})},fetchMemberResList:function(a,c){if(a&&a.loggedIn&&!a.enableTA&&!a.applicant){var b={};j.getSpinner().spin();q.fetchWithRetry(c,{cache:!1,async:!1,success:function(a){a.data&&(b.reservationList= 3534a.data.reservationList);if(a.message||!a.data)b.reservationListErrors=a.message||"use_default",a.message?p.trackError(a.message,d.getStep()):WebTracking.trackErrors("unknown-error-fetching-reservation-list",{pageName:d.getStep()})},error:function(){b.reservationListErrors="use_default";WebTracking&&WebTracking.trackErrors("unknown-error-fetching-reservation-list",{pageName:d.getStep()})},complete:function(){j.getSpinner().stop()}});return b}return null},doCleanup:function(){c&&c.doCleanup&&c.doCleanup(); 3535b&&b.doCleanup&&c.doCleanup();c=b=null}}}); 3536define("reservation/lookup/core/model/lookup-form-model",["config/app-config","utils/restmodel"],function(a,b){return b.extend({defaults:{confirmationNumber:"",lastName:"",quickReservationConfirmationNumber:"-1",arrivingUpdate:""},initialize:function(){this.constructor.__super__.initialize.apply(this,arguments)},url:function(){return a.config.rootContext+"/rest/review/v2/rmc"}})}); 3537define("reservation/lookup/core/model/lookup-model",["config/app-config","utils/restmodel"],function(b,c){return c.extend({initialize:function(){this.constructor.__super__.initialize.apply(this,arguments)},parseModel:function(a){a&&this.get("metaData").set(a)},url:function(){return b.config.rootContext+"/rest/hertz/v2/reservations/member/upcoming-reservations"}})}); 3538define("reservation/lookup/core/view/lookup-view","jquery underscore json config/app-config utils/utils-proxy utils/utils utils/sessionhelper framework/view/abstract-view reservation/config reservation/reservation-info/core/model/reservation-info-model reservation/common/retry/core/view/retry-view utils/gtm-tracker".split(" "),function(e,f,m,n,g,j,k,o,p,q,r,h){return o.extend({events:{"keyup input":"eventHandler","change input":"eventHandler","click .res-search":"searchReservation","click .member-res-search":"searchMemberReservation", 3539"click #new-startRes":"showResForm"},initialize:function(){this.preInitialize();this.formData=this.model.get("formData");this.metaData=this.model.get("metaData");this.content=this.options.content;this.template=this.options.template;this.target=this.options.target;this.referrer=this.options.referrer;this.bindEvents();this.postInitialize()},bindEvents:function(){this.formData.on("fieldError",this.displayError,this);this.metaData.on("change:reservationList",this.render,this);this.metaData.on("change:target", 3540this.render,this)},displayError:function(a,d){j.displayFieldErrors(d);window.scrollTo(0,0)},showResForm:function(){e("#gaq-tab h2").trigger("click");e("#new-resWidget").show();e("#new-resLookup").hide()},render:function(){this.preRender();var a,d=this.metaData.get("reservationList"),c=this.metaData.get("reservationListErrors"),l=!1;if(this.metaData.get("loggedIn")&&!this.metaData.get("enableTA")&&!this.metaData.get("applicant"))if(d&&
3540(!c||f.isEmpty(c)))a=0===d.length?this.content.homePage.homePageContent.resListEmpty: 3541this.content.homePage.homePageContent.viewModifyCancel;else if(l=!0,!c||"use_default"==c||f.isEmpty(c))c={messages:[this.content.reservationErrors.advisoryContent.unableToAccessResList]};this.$el.empty().append(f.template(this.template,{metaData:this.metaData.attributes,formData:this.formData.attributes,content:this.content}));this.validateFields();this.target&&e(this.target).empty().append(this.el);l&&j.displayAllErrors(c);this.renderMessage(a);this.postRender();return this},renderMessage:function(a){var d= 3542this.$el.find("#res-message");a&&e(d).empty().html(a).show()},eventHandler:function(a){var d=e(a.target),c=d.val();d.is(":checkbox")?c=d.is(":checked")?c:"":"keyup"==a.type&&this.validateFields();this.formData.set(d.attr("name"),c,{silent:!0})},validateFields:function(){var a=this.$el.find("#conf-last-name").val(),d=this.$el.find("#conf-num").val();this.button=this.button||this.$el.find(".res-search");d&&(a||this.model.attributes.metaData.attributes.loggedIn)?this.button.prop("disabled",!1):this.button.prop("disabled", 3543!0)},searchMemberReservation:function(a){a=e(a.target).attr("rel")||e(a.currentTarget).attr("rel");a=this.metaData.get("reservationList")[a];this.formData.set({confirmationNumber:a.confirmationNumber},{silent:!0});this.searchReservation()},trackResLookup:function(){"undefined"!==typeof WebTracking&&WebTracking.trackPage("lookup-reservation")},searchReservation:function(){if(this.preSubmit()){var a=this;g.getSpinner().spin();a.formData.set("resSearch",!0,{silent:!0});var d=n.config.rootContext+"/rest/hertz/v2/reservations/reservation", 3544c=a.formData.toJSON();r.saveWithRetry(a.formData,{},{url:d,success:function(d,b){b.data.isRedirectToWL&&(localStorage.setItem(b.data.reservationWhoInfo.auth0AccessName,b.data.reservationWhoInfo.auth0AccessToken),localStorage.setItem(b.data.reservationWhoInfo.auth0IdName,b.data.reservationWhoInfo.auth0IdToken),window.location=b.data.wlUrl);if(!htz.config.isApp){var i={scenario:"lookup-reservation",payload:{}};i.payload.response=b.statusText;i.payload.code=b.status;h.track(i)}q.setReservationId(b.data.confirmationSummaryInfo.confirmationNumber); 3545k.setItem(htz.res.config.ReservationConstants.CONFIRMATION_NUMBER_INFO,b.data.confirmationSummaryInfo.confirmationNumber);a.formData.trigger("sync",d,b);if(b&&b.resultInfo)a.formData.clear({silent:!0}),a.formData.set(c,{silent:!0}),k.setItem(htz.res.config.ReservationConstants.REVIEW_DATA,m.stringify(b)),p.getRotar().rotate("review");else try{WebTracking.setError("debug-search-success-error","search")}catch(e){}},error:function(d,b){if(!htz.config.isApp&&b.responseJSON){var c={scenario:"system-errordata-tracking"}, 3546e=b.responseJSON.message.messages,f=b.responseJSON.message.errorData,g=b.responseJSON.message.systemErrors;c.payload=void 0!=e?e:void 0!=f?b.responseJSON.message.errorData.message:void 0!=g?g:"";h.track(c)}htz.config.isApp||(c={scenario:"lookup-reservation",payload:{}},c.payload.response=b.statusText,c.payload.code=b.status,h.track(c));a.formData.trigger("error",d,b,a.referrer.find("#error-list"))},complete:function(){g.getSpinner().stop()}});a.trackResLookup()}}})}); 3547define("reservation/itinerary/core/presenter/itinerary-presenter",getDependencies("reservation/itinerary/core/presenter/itinerary-presenter"),function(j,e,h,l,x,G,m,v,y,z,A,E,w,b){function B(){try{e.setItem(b.RESERVATION_CONFIRMED,""),htz.res.pages.PageHelper.resetReservation()}catch(a){}}function C(){try{e.setItem(b.APP_CONFIG,h.stringify(m.config))}catch(a){}}function D(){try{htz.homepage.json.data.model.metaData.startRes&&(B(),C()),htz.homepage.json.data.model.metaData.startRes=!1}catch(a){}}function s(a, 3548r){var c=new v,f;w.getSpinner().spin();c.fetch({cache:!1,success:function(a,c){c&&c.data&&(e.setItem(b.ITINERARY_DATA,h.stringify(c.data)),f=c.data)},complete:function(){w.getSpinner().stop();a&&r&&j.publish(b.VALIDATE_ITINERARY,[f,a,r])}})}function t(a){if(a&&a.message)try{e.setItem(b.ITINERARY_ERROR_DATA,h.stringify(a.message))}catch(r){}}function u(a){a&&(a.isLoggedIn||a.appConfig||a.message)?e.setItem(b.RESERVATION_PRESERVED_DATA,h.stringify(a)):e.removeItem(b.RESERVATION_PRESERVED_DATA)}function F(){var a= 3549e.getItem(b.RESERVATION_PRESERVED_DATA);if(!a)return!0;try{a=h.parse(a);if(a.appConfig&&a.appConfig.isApp){var r=a.appConfig.orgDeviceGroup;a.appConfig=null;u(a);var c=window.location.href;window.location.hash&&(c=c.substring(0,c.indexOf("#")));c=0<c.indexOf("?")?c+"&":c+"?";window.location.href=c+("deviceGroup="+r+"&edge=Y");return!1}if(a.isLoggedIn){if(a.isLoggedIn=!1,u(a),window.plugins.remoteToLocal)try{return window.plugins.remoteToLocal.execInVC({vcIndex:hzm.constants.VC_HOME_MEMBER,js:"hzm.member.autoLogin();"}), 3550!1}catch(f){}}else a.message&&(t({message:a.message}),a.message=null,u(a));return!0}catch(d){return!0}}var i,d,o=b.ITINERARY;j.subscribe(b.VALIDATE_ITINERARY,function(a,e,c,f){F()&&(j.publish(b.RENDER_PREPARE_PRESENTER,f),A.setStep(o),a=l.getPageId(o),l.isPageAdded(o)?(i.clear({silent:!0}),i.parseModel(e),d.refresh()):(l.addPage(o,"page"),i=new v(e),d=new y({viewHelper:z,el:"#"+a,model:i,content:c,isSearch:f.isSearch}),d.render()),f.isSearch?d.showTab("rmc-tab"):d.showTab("gaq-tab"),j.publish(b.NAVIGATE_PREPARE_PRESENTER), 3551x.getNavigator().navigate("#"+a),window.HomeModel=d.model,window.HomePage=d.formView,j.publish(b.RENDER_DONE_PRESENTER,{step:o,page:b.LEGACY_ITINERARY,content:c}))});return{show:function(a,d){m.config.isApp||j("body").css("background-color","#000");var c=a.content,f=!1;!d||!d.isSearch?(f=window.location,f=!f.hash&&0<f.href.indexOf("confirmationNumber=")?!0:!1):f=d.isSearch;var i;if(i=!f){var n;a:{if(!window.location.hash)try{var g=htz.homepage.json.data.model.metaData.targetStep;htz.homepage.json.data.model.metaData.targetStep= 3552null;if(g){E.getRotar().rotate(g);n=!1;break a}}catch(o){}n=!0}i=!n}if(!i){d||(d={});d.isSearch=f;a:{var l=d;n="Y"===e.getItem(b.RESERVATION_CONFIRMED);if(!n){g=e.getItem(b.ITINERARY_DATA);try{g&&(g=h.parse(g))}catch(u){g=null}if(g&&g.metaData)try{f=0,f=m.config.isApp?h.parse(e.getItem(b.APP_MEMBER_INFO)).isLoggedIn:htz.homepage.json.data.model.metaData.loggedIn,g.metaData.loggedIn!==f&&(n=!0)}catch(v){}}if(!e.getItem(b.RESERVATION_PRESERVED_DATA))try{var p=h.parse(e.getItem(b.APP_CONFIG));if(p&& 3553p.isApp){var k=htz.homepage.json.message;
3553if(k&&(k=h.stringify(k))&&0<k.indexOf("[NZX305]")){k={};k.appConfig=p;k.message=htz.homepage.json.message;htz.homepage.json.message=null;try{var q=e.getItem(b.ITINERARY_DATA);q&&(q=h.parse(q),k.isLoggedIn=q&&q.metaData&&q.metaData.loggedIn)}catch(w){}e.setItem(b.RESERVATION_PRESERVED_DATA,h.stringify(k))}}}catch(x){}if(n)D(),j.ajax({cache:!1,type:"POST",url:m.config.rootContext+"/rest/hertz/v2/reservations/startres",complete:function(){B();C();s(c,l);t(htz.homepage.json)}}); 3554else{if(p=e.getItem(b.APP_CONFIG))try{if(p=h.parse(p),p.pos!==m.config.pos){e.setItem(b.APP_CONFIG,h.stringify(m.config));s(c,l);t(htz.homepage.json);break a}}catch(y){}D();m.config.isApp&&window.plugins.remoteToLocal.readFromSharedStorage("login_status_change",function(a){var b,c;"undefined"!==typeof a&&!0==a.isLoggedIn?a=j.Deferred().resolve().promise():(a=hzm.constants.URL.CONFIG,b=htz.config.dialect.substring(0,2),c=htz.config.pos,a=j.ajax({url:a+("/"+c+"/"+b),dataType:"json",type:"POST"}));a.then(function(){s()})}); 3555g=e.getItem(b.ITINERARY_DATA);try{g=A.hasProcessStarted()&&g?h.parse(g):htz.homepage.json.data.model,t(htz.homepage.json),htz.homepage.json.message=null}catch(z){}j.publish(b.VALIDATE_ITINERARY,[g,c,l])}}}},refresh:function(){i&&d&&(applyCrossSavedData(i),d.refresh())},updateData:function(){s()},doCleanup:function(){j("body").css("background-color","#ededed");i&&i.doCleanup&&i.doCleanup();d&&d.doCleanup&&d.doCleanup();l.removePage(o);i=d=window.HomeModel=window.HomePage=window.HomeViewHelper=null}}}); 3556define("reservation/delivery-and-collection/core/model/location-details-model",["backbone","utils/restmodel","config/app-config"],function(a,d,b){return a.Model.extend({initialize:function(a,c){this.url=b.config.apiDomain+"/rest/location/oag/"+c.eoag+"?dialect="+b.config.dialect}})}); 3557define("reservation/delivery-and-collection/core/model/dandc-location-model",["backbone","config/app-config","utils/utils"],function(b,c,d){var e=b.Model.extend({});return b.Collection.extend({initialize:function(a){this.url=c.config.rootContext+"/rest/hertz/v2/reservations/deliveryAndCollect/site/"+a.options.locType+"/"+a.options.countryCode+"/"+a.options.city},model:e,parse:function(a,b){if(!d.sessionTimedOut(b))return a.data.deliveryAndCollectionLocationList}})}); 3558define("reservation/delivery-and-collection/core/model/dandc-city-model",["backbone","config/app-config","utils/utils"],function(c,e,f){var g=c.Model.extend({defaults:{cityName:""}});return c.Collection.extend({initialize:function(a){this.url=e.config.rootContext+"/rest/hertz/v2/reservations/deliveryAndCollect/site/"+a.options.locType+"/"+a.options.countryCode},model:g,parse:function(a,c){if(!f.sessionTimedOut(c)){var b=a.data.deliveryAndCollectionCountryList;a:{for(var d=0;d<b.length;d++)if(b[d].countryCode== 3559a.data.countryCode){b=b[d].showOffsite;break a}b=void 0}this.countryOffsiteFlag=b;return _.map(a.data.deliveryAndCollectionCityList,function(a){return{cityName:a}})}}})}); 3560define("reservation/delivery-and-collection/core/model/dandc-offsite-model",["backbone","utils/restmodel","config/app-config"],function(d,b,c){return b.extend({initialize:function(a){this.url=c.config.rootContext+"/rest/hertz/v2/reservations/deliveryAndCollect/offsite/"+a.options.locType+"/"+a.options.countryCode+"/"+a.options.countryName}})}); 3561define("reservation/delivery-and-collection/core/model/delivery-and-collection-model",["backbone","config/app-config","utils/utils"],function(a,c,d){var e=a.Model.extend({});return a.Collection.extend({initialize:function(b){this.url=c.config.rootContext+"/rest/hertz/v2/reservations/deliveryAndCollect/site/"+b.locType},model:e,parse:function(b,a){if(!d.sessionTimedOut(a))return b.data.deliveryAndCollectionCountryList}})}); 3562define("reservation/delivery-and-collection/core/view/location-details-view",["jquery","underscore","backbone"],function(b,a,c){return c.View.extend({initialize:function(){this.content=this.options.content;this.template=this.options.template.html();this.data=this.model.get("data")},render:function(){this.$el.append(a.template(this.template,{data:this.data,content:this.content}));this.$("#address-content").append(a.template(b("#address-tpl").html(),{data:this.data,content:this.content}));this.$("#phone-content").append(a.template(b("#phone-tpl").html(), 3563{data:this.data,content:this.content}));this.$("#rentals-content").append(a.template(b("#rentals-tpl").html(),{data:this.data,content:this.content}));this.$("#notes-content").append(a.template(b("#notes-tpl").html(),{data:this.data,content:this.content}));this.$("#service-content").append(a.template(b("#service-tpl").html(),{data:this.data,content:this.content}));return this}})}); 3564define("reservation/delivery-and-collection/core/view/delivery-and-collection-location-view","jquery underscore backbone reservation/delivery-and-collection/core/view/delivery-and-collection-view config/app-config reservation/common/retr
3564y/core/view/retry-view".split(" "),function(b,h,c,i,d,e){return c.View.extend({initialize:function(){this.presenter=this.options.presenter;this.dandcView=this.options.dandcView},tagName:"li",events:{click:"selectLocation"},selectLocation:function(){var a=this,c={siteID:a.model.get("siteID"), 3565cdp:a.model.get("cdpNumber"),countryCode:a.model.get("countryCode"),cityName:a.model.get("cityName"),locationName:a.model.get("locationName"),eoagCode:a.model.get("eoagCode"),deliverOrCollectFlag:a.model.get("locType")},f=d.config.rootContext+"/rest/hertz/v2/itinerary/vehicles/deliveryAndCollect/site";e.ajaxWithRetry({type:"POST",headers:{"cache-control":"no-cache"},data:JSON.stringify(c),dataType:"json",contentType:"application/json",url:f,success:function(g){g&&("D"==a.model.get("locType")?b.publish(htz.res.config.ReservationConstants.LOCATION_DELIVERY_PICKUP, 3566{formData:{pickupLocation:"Deliver to: "+a.model.get("locationName"),pickupHiddenEOAG:a.model.get("eoagCode"),isDeliveryChanged:""},metaData:{deliveryLocation:a.model.toJSON()}}):"C"==a.model.get("locType")&&b.publish(htz.res.config.ReservationConstants.LOCATION_COLLECTION_DROPOFF,{formData:{dropoffLocation:"Collect from: "+a.model.get("locationName"),dropoffHiddenEOAG:a.model.get("eoagCode"),isCollectChanged:""},metaData:{collectionLocation:a.model.toJSON()}}),a.closeOverlay())},error:function(a){a&& 3567a.responseText&&(a=JSON.parse(a.responseText).message,utils.displayAllErrors(a,"#dnc-error-list"))}});a.cleanupResults();a.closeOverlay()},render:function(){b(this.el).html(this.model.get("locationName"));return this},cleanupResults:function(){b("#dandc-locations-section").remove()},closeOverlay:function(){this.dandcView.closeOverlay()}})}); 3568define("reservation/delivery-and-collection/core/view/delivery-and-collection-location-list-view",["jquery","underscore","backbone","reservation/delivery-and-collection/core/view/delivery-and-collection-location-view"],function(c,b,d,e){return d.View.extend({initialize:function(){this.content=this.options.content;this.template=this.options.template.html();this.locType=this.options.locType;this.presenter=this.options.presenter;this.dandcView=this.options.dandcView},render:function(){var a=this;c("#dandc-cities-section").length? 3569c("#dandc-cities-section").after(b.template(a.template,{content:a.content})):c("#dandc-overlay").append(b.template(a.template,{content:a.content}));b.each(a.collection.models,function(b){b.set("locType",a.locType);c(a.el).find("#dandc-locations").append((new e({model:b,presenter:a.presenter,dandcView:a.dandcView})).render().el)});a.postRender();return a},postRender:function(){}})}); 3570define("reservation/delivery-and-collection/core/view/delivery-and-collection-city-list-view",["jquery","underscore","backbone","utils/utils","reservation/delivery-and-collection/core/view/delivery-and-collection-city-view"],function(c,b,d,e,f){return d.View.extend({events:{"change #dandc-cities":"selectCity","click #dandc-offsite-select":"getOffsiteInfo"},initialize:function(){this.content=this.options.content;this.template=this.options.template.html();this.locType=this.options.locType;this.countryCode= 3571this.options.countryCode;this.countryName=this.options.countryName;this.presenter=this.options.presenter;this.dandcView=this.options.dandcView;this.showOffsite=this.options.showOffsite},getOffsiteInfo:function(){this.presenter.showOffsite(this.locType,this.countryCode,this.countryName,this.content,this.dandcView)},selectCity:function(a){a=c(a.target).val();this.cleanupResults();this.clearErrorMessage();a&&""!=a&&this.presenter.getLocations(this.locType,this.countryCode,a,this.content,this.dandcView, 3572this.$el)},cleanupResults:function(){c(this.el).find("#dandc-locations-section").remove()},clearErrorMessage:function(){e.clearErrorMessage("#dnc-error-list")},render:function(){var a=this;0<a.collection.length&&(c(a.el).append(b.template(this.template,{content:this.content})),b.each(a.collection.models,function(b){b.set({locType:a.locType,countryCode:a.countryCode,content:a.content,deliverOrCollectFlag:a.locType});c(a.el).find("#dandc-cities").append((new f({model:b})).render().el)}));this.showOffsite&& 3573a.$el.append(b.template(c("#dnc-offsite-button-tpl").html(),{locType:a.locType,content:a.content}));a.postRender();return a},postRender:function(){},stopListening:function(){this.$el.off()}})}); 3574define("reservation/delivery-and-collection/core/view/delivery-and-collection-city-view",["jquery","underscore","backbone","utils/utils"],function(a,d,b,c){return b.View.extend({tagName:"option",clearErrorMessage:function(){c.clearErrorMessage("#dnc-error-list")},render:function(){a(this.el).attr("value",this.model.get("cityName")).html(this.model.get("cityName"));return this}})}); 3575define("reservation/delivery-and-collection/core/view/delivery-and-collection-country-v
3575iew",["jquery","underscore","backbone","utils/utils"],function(a,d,b,c){return b.View.extend({tagName:"option",initialize:function(){this.locType=this.options.locType;this.presenter=this.options.presenter;this.content=this.options.content},cleanupResults:function(){a("#dandc-countries-section").remove()},clearErrorMessage:function(){c.clearErrorMessage("#dnc-error-list")},render:function(){a(this.el).attr("value", 3576this.model.get("countryCode")).html(this.model.get("countryName"));return this}})}); 3577define("reservation/delivery-and-collection/core/view/delivery-and-collection-country-list-view","jquery underscore backbone config/app-config utils/utils-proxy utils/utils reservation/delivery-and-collection/core/view/delivery-and-collection-country-view".split(" "),function(b,d,e,h,i,f,g){return e.View.extend({events:{"change #dandc-country":"selectCountry"},initialize:function(){this.content=this.options.content;this.locType=this.options.locType;this.presenter=this.options.presenter;this.dandcView= 3578this.options.dandcView;this.render();this.postRender()},selectCountry:function(a){var c=b(a.target).val(),a=b(a.target).find(":selected").text();this.cleanupResults();this.clearErrorMessage();c&&""!=c&&this.presenter.getCities(this.locType,c,a,this.content,this.dandcView,this.$el.find("#dandc-overlay"))},cleanupResults:function(){b(this.el).find("#dandc-cities-section").remove();b(this.el).find("#dandc-locations-section").remove();b(this.el).find("#dandc-offsite-select").remove()},clearErrorMessage:function(){f.clearErrorMessage("#dnc-error-list")}, 3579render:function(){var a=this;d.each(a.collection.models,function(c){c.set({locType:a.locType,content:a.content});b(a.el).find("#dandc-country").append((new g({model:c})).render().el)});return a},postRender:function(){this.dandcView.closeOverlay()}})}); 3580define("reservation/delivery-and-collection/core/view/delivery-and-collection-offsite-view","jquery underscore backbone config/app-config utils/utils-proxy utils/utils reservation/common/retry/core/view/retry-view".split(" "),function(b,e,f,g,j,h,i){return f.View.extend({events:{"click #dandc-profile-link":"useProfileAddress","click #dandc-offsite-submit":"submitOffsiteAddress","click .site":"displaySite"},initialize:function(){this.content=this.options.content;this.countryName=this.options.countryName; 3581this.template=this.options.template.html();this.dandcView=this.options.dandcView;this.model.set({content:this.content,countryName:this.countryName,template:this.template});window.OffsiteModel=this.model},useProfileAddress:function(){var a=this.model.get("addressInfo");this.$el.find("#address1").val(a.address1);this.$el.find("#address2").val(a.address2);this.$el.find("#city-name").val(a.city);this.$el.find("#postal-code").val(a.zip);this.$el.find("#country-code").val(a.country);this.$el.find("#country-name").val(this.model.get("countryNameForAddressInfo"))}, 3582displaySite:function(a){var c;"site-delivery"===b(a.currentTarget).attr("id")?c="D":"site-collection"===b(a.currentTarget).attr("id")&&(c="C");require(["reservation/delivery-and-collection/core/presenter/delivery-and-collection-presenter"],function(a){a.showCountriesView(c,b("#dandc-tpl"),window.OffsiteModel.get("content").DandCView.DandC.locationSearch)});this.postDisplaySite()},postDisplaySite:function(){},submitOffsiteAddress:function(){var a=this,c={address1:this.$el.find("#address1").val(),address2:this.$el.find("#address2").val(), 3583cityName:this.$el.find("#city-name").val(),postalCode:this.$el.find("#postal-code").val(),countryCode:this.$el.find("#country-code").val(),deliverOrCollectFlag:this.model.get("deliverOrCollectFlag")},e=g.config.rootContext+"/rest/hertz/v2/itinerary/vehicles/deliveryAndCollect/offsite";i.ajaxWithRetry({type:"POST",headers:{"cache-control":"no-cache"},data:JSON.stringify(c),dataType:"json",contentType:"application/json",url:e,success:function(d){if(d&&d.data){var c=a.model.get("deliverOrCollectFlag"); 3584"D"==c?b.publish(htz.res.config.ReservationConstants.LOCATION_DELIVERY_PICKUP,{formData:{pickupLocation:"Deliver to: "+d.data.locationName,pickupHiddenEOAG:d.data.eoagCode,isDeliveryChanged:""},metaData:{deliveryLocation:d.data}}
3584):"C"==c&&b.publish(htz.res.config.ReservationConstants.LOCATION_COLLECTION_DROPOFF,{formData:{dropoffLocation:"Collect from: "+d.data.locationName,dropoffHiddenEOAG:d.data.eoagCode,isCollectChanged:""},metaData:{collectionLocation:d.data}});a.closeOverlay()}},error:function(a){a&& 3585a.responseText&&(a=JSON.parse(a.responseText).message,h.displayAllErrors(a,"#dnc-error-list"))}})},render:function(){b("#dandc-offsite-select").remove();b("#dandc-overlay").empty();var a=window.OffsiteModel;b("#dandc-overlay").append(e.template(a.get("template"),{model:a.attributes,countryName:a.get("countryName"),content:a.get("content")}))},closeOverlay:function(){this.dandcView.closeOverlay()}})}); 3586define("reservation/delivery-and-collection/core/view/delivery-and-collection-view","jquery underscore backbone config/app-config utils/utils-proxy reservation/delivery-and-collection/core/view/delivery-and-collection-country-list-view".split(" "),function(a,g,h,e,c,i){function f(b){null===d?d=c.getLightbox():b&&(d=c.getLightbox());return d}var d=null;return h.View.extend({initialize:function(){this.template=this.options.template.html();this.locType=this.options.locType;this.presenter=this.options.presenter; 3587this.title=this.options.title},retrieveContent:function(){return e.config.apiDomain+"/rest/content/"+e.config.subSystemId+"/"+e.config.dialect+"/all/reservation/delivery-and-collection/delivery-and-collection?callback=define"},displayDeliveryAndCollection:function(b){this.$el.append(g.template(this.template,{content:b}));this.displayCountryListView(b)},displayCountryListView:function(b){new i({collection:this.collection,content:b,el:this.$el,presenter:this.presenter,locType:this.locType,dandcView:this}); 3588f(!0).overlay({title:this.title,width:500,center:!0,dismiss:!1},a(this.el))},cleanupPreviousResults:function(){a("#dandc-countries-section").remove();a("#dandc-cities-section").remove();a("#dandc-locations-section").remove();a("#dandc-offsite-select").remove()},render:function(){var b=this,a=this.retrieveContent();c.getSpinner().spin();require([a],function(a){b.displayDeliveryAndCollection(a)});this.cleanupPreviousResults();c.getSpinner().stop();return this},closeOverlay:function(){f().closeOverlay()}})}); 3589define("reservation/delivery-and-collection/core/presenter/delivery-and-collection-presenter","config/app-config utils/utils utils/utils-proxy reservation/delivery-and-collection/core/model/delivery-and-collection-model reservation/delivery-and-collection/core/model/dandc-city-model reservation/delivery-and-collection/core/model/dandc-location-model reservation/delivery-and-collection/core/model/dandc-offsite-model reservation/delivery-and-collection/core/view/delivery-and-collection-view reservation/delivery-and-collection/core/view/delivery-and-collection-city-list-view reservation/delivery-and-collection/core/view/delivery-and-collection-location-list-view reservation/delivery-and-collection/core/view/delivery-and-collection-offsite-view reservation/delivery-and-collection/core/model/location-details-model reservation/delivery-and-collection/core/view/location-details-view backbone".split(" "), 3590function(e,k,n,o,p,q,r,s,t,u,v,w,x){function l(){null==j&&(j=n.getLightbox());return j}var j=null,i=null,g={showCountriesView:function(a,b,c){var d=new o({locType:a});d.fetch({async:!1});this.dandcViewRef=(new s({collection:d,template:b,locType:a,presenter:g,title:c})).render()},getCities:function(a,b,c,d,h,e){var f=new p({options:{locType:a,countryCode:b}});f.fetch({async:!1,success:function(m){if(0<f.length||m.countryOffsiteFlag)i&&i.stopListening(),i=new t({el:e,collection:f,template:$("#dandc-cities-tpl"), 3591content:d,presenter:g,locType:a,countryCode:b,countryName:c,dandcView:h,showOffsite:m.countryOffsiteFlag}),i.render()},error:function(a,b){if(b&&b.responseText){var c=JSON.parse(b.responseText).message;k.displayAllErrors(c,"#dnc-error-list")}}})},showOffsite:function(a,b,c,d,h){a=new r({options:{locType:a,countryCode:b,countryName:c}});a.fetch({async:!1});(new v({el:$("#dandc-overlay"),model:a,template:$("#dnc-offsite-form-tpl"),content:d,presenter:g,countryName:c,dandcView:h})).render()},getLocations:function(a, 3592b,c,d,h,e){var f=new q({options:{locType:a,countryCode:b,city:c}});f.fetch({async:!1,success:function(){(new u({el:e,collection:f,template:$("#dandc-locations-tpl"),content:d,presenter:g,locType:a,dandcView:h})).render()},error:function(a,b){if(b&&b.responseText){var c=JSON.parse(b.responseText).message;k.displayAllErrors(c,"#dnc-error-list")}}})},showLocationInfo:function(a){require([e.config.apiDomain+"/rest/content/"+e.config.subSystemId+"/"+e.config.dialect+"/all/reservation/delivery-and-collection/dnc-location-detail
3592s?callback=define"], 3593function(b){var c=b.locationResultsGlobalView.locationResultsGlobal.locations,d=new w({eoag:a},{eoag:a});htz.utils.config.UtilConfig.getSpinner().spin();d.fetch({cache:!1,dataType:"jsonp",success:function(a){htz.utils.config.UtilConfig.getSpinner().stop();a=(new x({model:a,content:b,template:$("#location-details-tpl")})).render();l().overlay({title:c,width:500,center:!0},a.el)}})})},closeOverlay:function(){l().closeOverlay()}};return g}); 3594define("reservation/reservation-info/core/model/reservation-info-model",["backbone","utils/utils"],function(){var a=null;return{getReservationId:function(){return a},setReservationId:function(b){a=b},hasReservationId:function(){return null!=a},getSafeReservationId:function(){var b;b=a&&null!=a?a:1;return b}}}); 3595window.checkHertzNameSpace('htz.res.common'); 3596 3597var retryView = (function() { 3598 const API = "API"; 3599 return { 3600 /** 3601 @description Retry submit until a response is returned for the max retries. If max retries, send a qpRetryFail flag to backend to proceed to bookable with Q packet. 3602 @function 3603 @param {int} maxRetries Maximum retries passed in to try to get a response for QP packet success 3604 @param {String} url URL for the ajax call to get the QP packet response 3605 @param {json} data JSON object to pass the data object for the ajax call. 3606 */ 3607 submit : function(maxRetries, url, data, prevData, viewHelperRef){ 3608 var closeLoader = false, retryInterval = 0; 3609 var self = this; 3610 3611 $.ajax({ 3612 url : url, 3613 type: 'POST', 3614 headers: { "cache-control": "no-cache" }, 3615 data : JSON.stringify(data), 3616 dataType: 'json', 3617 contentType : 'application/json', 3618 success : function(res){ 3619 if(res && res.resultInfo){ 3620 if (res.resultInfo.result === "retry"){ 3621 if(maxRetries === 0){ 3622 data = { qpRetryFail : true }; 3623 } else { 3624 --maxRetries; 3625 retryInterval = res.data.retryInterval; 3626 } 3627 setTimeout(function(){ 3628 self.submit(maxRetries, url, data, prevData, viewHelperRef); 3629 }, retryInterval); 3630 } else { 3631 if(process.getStep() === htz.res.config.ReservationConstants.VEHICLES || process.getStep() === htz.res.config.ReservationConstants.EXTRAS){ 3632 viewHelperRef.setSessionData(res, prevData); 3633 } else { 3634 closeLoader = true; 3635 } 3636 } 3637 } else { 3638 closeLoader = true; 3639 } 3640 }, 3641 error : function(){ 3642 closeLoader = true; 3643 }, 3644 complete : function (){ 3645 if (closeLoader){ 3646 utilProxy.getSpinner().stop(); 3647 } 3648 } 3649 }); 3650 }, 3651 3652 /** 3653 * This functions takes care of handling a response that might expect a try 3654 * if it is a retry response it executes the original callback 3655 * if it is other than retry it executes the success callback 3656 * if we reach max tries we call error callback 3657 */ 3658 handleRetryResponse: function(retryRes, retryContext, retryOptions) { 3659 if(retryRes && retryRes.resultInfo){ 3660 //Here we handle a retry response 3661 if (retryRes.resultInfo.result === "retry"){ 3662 3663 //Setup retry contetx 3664 if (retryContext.firstRetry) { 3665 if (retryRes.data.maxRetries > 0){ 3666 retryContext.maxRetries = retryRes.data.maxRetries - 1; 3667 retryContext.retryInterval = retryRes.data.retryInterval; 3668 } else { 3669 retryContext.maxRetries = 0; 3670 data = { qpRetryFail : true }; 3671 } 3672 3673 retryContext.firstRetry = false; 3674 retryContext.retryCount = 0; 3675 } 3676 3677 retryContext.maxRetries = retryContext.maxRetries - 1; 3678 retryContext.retryInterval = retryRes.data.retryInterval; 3679 retryContext.retryCount++; 3680 setTimeout(function(){ 3681 //We try to call it again 3682 retryOptions.retry(retryContext); 3683 }, retryContext.retryInterval); 3684 3685 } else { 3686 //call original success callback 3687 retryOptions.success(); 3688 } 3689 } else { 3690 //call original success callback 3691 retryOptions.success(); 3692 } 3693 3694 }, 3695 3696 saveWithRetry: function(currentModel,attributes,options) { 3697 AmplitudeUtils.trackApiEvent(API, options.url, "called"); 3698 3699 var self = this; 3700 3701 //Save succes callback to later be called 3702 var originalSuccess = options.success; 3703 3704 var prevData = currentModel.toJSON(); 3705 3706 var execute = function(ctx) { 3707 if (ctx) { 3708 newOptions = _.extend(options, { 3709 data : JSON.stringify({retryCount:ctx.retryCount}), 3710 contentType : 'application/json' 3711 }); 3712 3713 currentModel.save({},newOptions); 3714 } else { 3715 currentModel.save(attributes,options); 3716 } 3717 } 3718 3719 // This has to be outside so we do not lose the context 3720 var retryContext = { 3721 maxRetries: null, 3722 retryInterval: 0, 3723 firstRetry: true 3724 } 3725 var requestUrl = options.url || currentModel.url(); 3726 3727 // Overwrie success callback to include retry logic 3728 options.success = function(model,res) { 3729 self.handleRetryResponse(res, retryContext,{ 3730 retry: function(ctx) { 3731 self.restorePrevData(model, prevData) 3732 execute(ctx) 3733 }, 3734 success: function() { 3735 AmplitudeUtils.trackApiEvent(API, requestUrl, "success"); 3736 originalSuccess(model, res); 3737 }, 3738 error: function() { 3739 AmplitudeUtils.trackApiEvent(API, requestUrl, "failed"); 3740 self.restorePrevData(model, prevData) 3741 options.error(model, res, retryContext.retryCount) 3742 } 3743 }); 3744 } 3745 3746 execute(); 3747 }, 3748
3749 ajaxWithRetry: function(options) { 3750 var self = this; 3751 3752 //Save succes callback to later be called 3753 var originalSuccess = options.success; 3754 3755 var execute = function(ctx) { 3756 if (ctx) { 3757 options.data = JSON.stringify({retryCount:ctx.retryCount}) 3758 $.ajax(options); 3759 } else { 3760 $.ajax(options); 3761 } 3762 } 3763 3764 //This has to be outside so be do no lose the context 3765 var retryContext = { 3766 maxRetries: null, 3767 retryInterval: 0, 3768 firstRetry: true 3769 } 3770 3771 // Overwrie succes callback to include retry logic 3772 options.success = function(res, textStatus, xhr) { 3773 if(Utils.sessionTimedOut(xhr)) { return; } 3774 3775 self.handleRetryResponse(res,retryContext,{ 3776 retry: function(ctx) { 3777 execute(ctx) 3778 }, 3779 success: function() { 3780 originalSuccess(res); 3781 }, 3782 error: function() { 3783 options.error(res) 3784 } 3785 }); 3786 } 3787 3788 execute(); 3789 }, 3790 3791 fetchWithRetry: function(model,options) { 3792 var self = this; 3793 3794 //Save succes callback to later be called 3795 var originalSuccess = options.success; 3796 3797 var execute = function() { 3798 model.fetch(options); 3799 } 3800 3801 //This has to be outside so be do no lose the context 3802 var retryContext = { 3803 maxRetries: null, 3804 retryInterval: 0, 3805 firstRetry: true 3806 } 3807 3808 // Overwrie succes callback to include retry logic 3809 options.success = function(model,res) { 3810 self.handleRetryResponse(res,retryContext,{ 3811 retry: function() { 3812 execute() 3813 }, 3814 success: function() { 3815 originalSuccess(res); 3816 }, 3817 error: function() { 3818 options.error(res) 3819 } 3820 }); 3821 } 3822 3823 execute(); 3824 }, 3825 3826 saveChangedWithRetry: function(currentModel,attributes,options) { 3827 AmplitudeUtils.trackApiEvent(API, options.url, "called"); 3828 var self = this; 3829 var originalSuccess = options.success; 3830 var prevData = currentModel.toJSON(); 3831 3832 var execute = function(ctx) { 3833 if (ctx) { 3834 newOptions = _.extend(options, { 3835 data : JSON.stringify({retryCount:ctx.retryCount}), 3836 contentType : 'application/json' 3837 });
3838 // We call save an not saveChanged because it overwrites data 3839 // and saveChanged calls save 3840 currentModel.save({},newOptions); 3841 } else { 3842 currentModel.saveChanged(attributes,options); 3843 } 3844 } 3845 3846 var retryContext = { 3847 maxRetries: null, 3848 retryInterval: null, 3849 firstRetry: true 3850 } 3851 3852 // Overwrie succes callback to include retry logic 3853 options.success = function(model,res) { 3854 self.handleRetryResponse(res,retryContext,{ 3855 retry: function(ctx) { 3856 self.restorePrevData(model,prevData) 3857 execute(ctx) 3858 }, 3859 success: function() { 3860 AmplitudeUtils.trackApiEvent(API, options.url, "success"); 3861 originalSuccess(model,res); 3862 }, 3863 error: function() { 3864 AmplitudeUtils.trackApiEvent(API, options.url, "failed"); 3865 self.restorePrevData(model,prevData) 3866 options.error(model,res) 3867 } 3868 }); 3869 } 3870 3871 execute(); 3872 }, 3873 3874 restorePrevData: function(model,prevData) { 3875 model.clear({ silent : true }); 3876 model.set(prevData, { silent: true }); 3877 } 3878 3879 3880 }; 3881 3882})(); 3883(typeof define=='function' && define.amd && define('reservation/common/retry/core/view/retry-view',['jquery', 'json', 'utils/utils-proxy', 'utils/utils', 'reservation/process-info/core/model/process-model'],function($, JSON, utilProxy, Utils, process){return retryView;})); 3884htz.res.common.RetryView = retryView; 3885 3886define("reservation/utils/core/reservation-utils","jquery json reservation/process-info/core/model/process-model utils/utils config/app-config utils/sessionhelper reservation/config utils/utils-proxy utils/domhelper reservation/process-config/core/reservation-constants res/res-resource-config-manager".split(" "),function(g,f,k,n,i,e,h,p,s,d,t){function q(){null==o&&(o=p.getLightbox());return o}var o=null,l={},j;return{getCDPinfo:function(a){var b=g.Deferred(),c=/^([0-9]*)$/;a?(a=g.trim(a),c.test(a)? 3887g.ajax({cache:!1,url:i.config.apiDomain+"/rest/customer/cdp/"+i.config.dialect+"/"+a,dataType:"jsonp",success:function(a){"success"==a.data.result?b.resolve(a.data.cdpList):b.resolve(null)}}):b.resolve(null)):b.resolve(null);return b.promise(null)},getResponseText:function(a){var b="",a=a.responseText;try{f.parse(a)}catch(c){a&&(0<a.length&&(a=a.replace(/(\r\n|\n|\r)/gm,""),100<a.length&&(a=a.substring(0,100))),b+=a)}return b},trackError:function(a,b){try{if("undefined"!==typeof WebTracking){var c= 3888k.getStep(),b=this.getErrorType(c,a),d=k.getFlow();b||(b="error");WebTracking.setError("debug-runtime-"+b+""+(d?"-"+d:"")+"-"+c+"-"+a+"-"+b+"-"+i.config.dialect+"-"+i.config.pos+"-"+n.browserDeviceType(),c)}}catch(e){}},handleRenderFail:function(a){try{if(p.getSpinner().stop(),!i.config.isApp){var b=k.getStep(),c=this.getErrorType(b,a);this.showResubmitOverlay(b,a,c)}}catch(d){alert(htz.homepage.content.reservationErrors.genericErrorContent.technicalDifficulties)}},getResubmitCount:function(a){return!g.isEmptyObject(l)&& 3889l[a]?l[a]:0},resetResubmitCount:function(a){a&&(l[j]=0)},incrementResubmitCount:function(a){if(a){var b=this.getResubmitCount(a);l[a]=0<b?b+1:1}},resetPrevStep:function(a){j&&j!==a&&this.resetResubmitCount(j)},updatePrevState:function(a){a&&(j=a)},getErrorType:function(a,b){var c="";-1<(""+b).indexOf("content.")?c="CONTENT-ERROR":(c=t.getPageInfo(a).checkElmId||"undefined",c="TEMPLATE-ERROR-"+c+"-"+(g("#"+c).length?"exists":"missing"));return c},showResubmitOverlay:function(a,b,c){var d,e,f,h=!1; 3890e=this.getResubmitCount(a);var k="text!"+i.config.rootContext+"/assets/"+i.config.buildId+"/html/all/reservation/common/resubmit-overlay.html",l=i.config.apiDomain+"/rest/content/"+htz.config.subSystemId+"/"+htz.config.dialect+"/all/reservation/common/resubmit-overlay?callback=define",j=q();j.inUse&&j.closeOverlay();1>e?(f="#resubmit-overlay-tpl",e="resubmit-"+e,this.resetPrevStep(a),this.incrementResubmitCount(a),this.updatePrevState(a)):(f="#contact-us-overlay-tpl",e="contact-us",h=!0);d=n.getUniqueErrorKey(); 3891require(["reservation/page-resubmit/core/view/page-resubmit-view",k,l],function(b,e,m){e&&s.addTemplate("resubmit",e);q().overlay({title:m.reservationPopups.resubmitOverlay.resubmitOverlayTitle,dismiss:!1},(new b({errorKey:d,step:a,template:g(f).html(),errorType:c,lBoxRef:j,content:m,isContactUs:h})).render().el)});this.trackRuntimeError(b,a,c,e,d)},trackRuntimeError:function(a,b,c,d,e){if("undefined"!==typeof WebTracking){var f=k.getFlow(),f=f?"-"+f:"",g=this.getPickupLocationCode(),g=g?"-"+g:"", 3892h=n.isPrivateMode();WebTracking.setError("debug-runtime-error-"+e+f+"-"+b+"-"+a+"-"+c+"-"+d+"-"+i.config.dialect+"-"+i.config.pos+g+(
3892h?"-"+h:"")+"-"+n.browserDeviceType(),b)}},trackWarning:function(a){if(a&&"undefined"!==typeof WebTracking){var b=[];b.push("debug-runtime-warning");var c=k.getFlow();c&&b.push(c);(c=k.getStep())&&b.push(c);a.warning&&b.push(a.warning);b.push(i.config.dialect);b.push(i.config.pos);(a=this.getPickupLocationCode())&&b.push(a);(a=this.getResData("pickupDate"))&&b.push(a); 3893(a=this.getResData("pickupTime"))&&b.push(a);(a=this.getResData("returnDate"))&&b.push(a);(a=this.getResData("returnTime"))&&b.push(a);b.push(n.browserDeviceType());WebTracking.setError(b.join("-"),c)}},buildErrorMessage:function(a,b){if(!b)return"";var c=e.getItem(d.RESERVATION_ERROR_LIST);if(c)c=f.parse(c);else if(a){for(var c={},r,m=0;m<a.length;m++)if(r=a[m].errorCode)c[g.trim(r)]=a[m].errorMessage;e.setItem(d.RESERVATION_ERROR_LIST,f.stringify(c))}b=g.trim(b);return c[b]+" ["+b+"]"},rqrOverlay:function(){var a= 3894Modernizr&&Modernizr.touch?"touchstart":"click",b=this;g(document).off(a,".rqr-policy").on(a,".rqr-policy",function(a){b.openRQRLink(a);return!1})},openRQRLink:function(a){require(["reservation/policy-details-overlay/core/presenter/policy-details-overlay-presenter"],function(b){b.showOverlayPopUp(a)})},checkForReferrerUrl:function(){var a=e.getItem(d.ITINERARY_DATA),b;if(a)try{a=f.parse(a),b=a.metaData.referrerUrl}catch(c){b=htz.homepage.json.data.model.metaData.referrerUrl}else b=htz.homepage.json.data.model.metaData.referrerUrl; 3895b&&e.setItem(d.REFERRER_URL,b)},keepTrackOfGeoPrefLocation:function(a){try{if(a){var b=e.getItem(d.ITINERARY_SC_DATA);if(b)if(b=f.parse(b),g.isArray(b)&&0<b.length){if(0<=g.inArray(a,b))return;b.push(a)}else b=[a];else b=[a];e.setItem(d.ITINERARY_SC_DATA,f.stringify(b))}}catch(c){}},checkIfGeoPrefLocation:function(a){try{if(a){var b=e.getItem(d.ITINERARY_SC_DATA);if(b&&(b=f.parse(b),g.isArray(b)&&0<b.length))return 0<=g.inArray(a,b)}}catch(c){}return!1},getResData:function(a){if(!a)return null;try{var b= 3896e.getItem(d.RESERVATION_INFORMATION_DATA);if(b)return b=f.parse(b),b[a]}catch(c){}return null},getPickupLocationCode:function(){try{var a=e.getItem(d.RESERVATION_INFORMATION_DATA);if(a)return a=f.parse(a),a.pickupLocationCode}catch(b){}return null},getCurrency:function(){try{var a=e.getItem(d.RESERVATION_INFORMATION_DATA);if(a)return a=f.parse(a),a.currency}catch(b){}return null},getAlternateCurrency:function(){try{var a=e.getItem(d.RESERVATION_INFORMATION_DATA);if(a)return a=f.parse(a),a.alternateCurrency}catch(b){}return null}, 3897getApproxTotal:function(){try{var a=e.getItem(d.RESERVATION_INFORMATION_DATA);if(a)return a=f.parse(a),a.approxTotal}catch(b){}return null},updateReservationInfo:function(a){try{if(a){var b=e.getItem(d.RESERVATION_INFORMATION_DATA),b=b?f.parse(b):{},c=!1;a.dialect&&(b.dialect=a.dialect,c=!0);a.pickupLocationCode&&(b.pickupLocationCode=a.pickupLocationCode,c=!0);a.currency?(b.currency=a.currency,c=!0):delete b.currency;a.alternateCurrency?(b.alternateCurrency=a.alternateCurrency,c=!0):delete b.alternateCurrency; 3898a.approxTotal?(b.approxTotal=a.approxTotal,c=!0):delete b.approxTotal;a.pickupDate&&(b.pickupDate=a.pickupDate,c=!0);a.pickupTime&&(b.pickupTime=a.pickupTime,c=!0);a.returnDate&&(b.returnDate=a.returnDate,c=!0);a.returnTime&&(b.returnTime=a.returnTime,c=!0);c&&e.setItem(d.RESERVATION_INFORMATION_DATA,f.stringify(b))}}catch(g){}},approxRateDecider:function(a){if(a.isPrepay&&a.currency&&a.alternateCurrency&&0<a.payLater){var b=a.currency===a.alternateCurrency,c=0<a.payLater?!0:!1;return a.isPrepay&& 3899!b&&c}return!1}
3899,formatDate:function(a,b){isNaN(a.getDate())&&(a=new Date);var c=a.getDate(),d=a.getMonth()+1,c=10>c?"0"+c:c,d=10>d?"0"+d:d,e=a.getFullYear();return b?[c,d,e].join("/"):[d,c,e].join("/")},standardizeDate:function(a,b){var c=a.split("/"),d=c[2],e;b?(e=c[1],c=c[0]):(e=c[0],c=c[1]);return[d,e,c].join("/")},goToPageFromResData:function(a){if(a){var b=a.get("data"),a=a.get("message"),c=k.isModify();if(b)if(b.model&&b.model.categories){e.setItem(d.EXTRAS_DATA,f.stringify(b.model));e.setItem(d.ITINERARY_INFO_DATA, 3900f.stringify(b.itinerary));e.setItem(d.RATE_DETAILS_DATA,f.stringify(b.rateDetails));if(a)try{e.setItem(d.EXTRAS_ERROR_DATA,f.stringify(a))}catch(g){}c?h.getRotar().rotate(d.MODIFY_EXTRAS):h.getRotar().rotate(d.EXTRAS)}else if(b.model&&b.model.vehicles){if(a)try{e.setItem(d.VEHICLES_ERROR_DATA,f.stringify(a))}catch(i){}e.setItem(d.VEHICLES_DATA,f.stringify(b.model));e.setItem(d.ITINERARY_INFO_DATA,f.stringify(b.itinerary));e.setItem(d.RATE_DETAILS_DATA,f.stringify(b.rateDetails));c?h.getRotar().rotate(d.MODIFY_VEHICLES): 3901h.getRotar().rotate(d.VEHICLES)}else if(b.model&&b.itinerary&&b.rateDetails){if(a)try{e.setItem(d.REVIEW_AND_BOOK_ERROR_DATA,f.stringify(a))}catch(j){}e.setItem(d.REVIEW_AND_BOOK_DATA,f.stringify(b.model));e.setItem(d.ITINERARY_INFO_DATA,f.stringify(b.itinerary));e.setItem(d.RATE_DETAILS_DATA,f.stringify(b.rateDetails));c?h.getRotar().rotate(d.MODIFY_REVIEW_AND_BOOK):h.getRotar().rotate(d.REVIEW_AND_BOOK)}else if(b.model){if(a)try{e.setItem(d.ITINERARY_ERROR_DATA,f.stringify(a)),e.setItem(d.ERRORS, 3902f.stringify(a))}catch(l){}c?(e.getItem(d.CONFIRMATION_NUMBER)&&e.setItem(d.ITINERARY_DATA,f.stringify(b.model)),h.getRotar().rotate(d.MODIFY_ITINERARY)):(e.setItem(d.ITINERARY_DATA,f.stringify(b.model)),h.getRotar().rotate(d.ITINERARY))}else this.goToItineraryPage(c);else this.goToItineraryPage(c)}},goToItineraryPage:function(a){a?h.getRotar().rotate(d.MODIFY_ITINERARY):h.getRotar().rotate(d.ITINERARY)},generateVehicleDetailTitle:function(a,b){var c=a.get("carGroup"),d=b.orSimilar||b.orSimilarText|| 3903"or similar",e=b.groupText||"Group",d=a.get("unique")?"":" <small>"+d+"</small>";return(c?"("+e+" "+c+") ":"")+a.get("name")+d},getShowMeLinkIndex:function(a){var b=0;g.each(a.reservationPopups.carTypeDetailsPopupContent.carTypeDetails,function(a,d){"ACAR"==d.carSipp&&(b=a)});return b},clearSessionStorage:function(a){for(var b=0;b<a.length;b++)e.removeItem(a[b])}}}); 3904define("reservation/utils/core/test-and-target",["config/app-config","json","utils/sessionhelper","utils/domhelper","reservation/process-config/core/reservation-constants"],function(f,h,g,i,d){return{handleTestTarget:function(a){f.config.isApp?this.resetConfirmationBackupData():d.CONFIRMATION===a&&(this.getConfirmationData(),this.resetConfirmationBackupData())},getConfirmationData:function(){var a=g.getItem(d.CONFIRMATION_BACKUP_DATA);try{var a=h.parse(a),b={};a.data&&(a=a.data);var c=a.rateDetails; 3905c&&c.vehicle&&(b.vehicleSipp=c.vehicle.sipp);c&&c.rateInfo&&(b.rentalTotal=c.rateInfo.approxTotal);b.confirmationNumber=a.confirmationSummaryInfo.confirmationNumber;var e=a.itinerary;b.pickupLocationCode=e.pickupLocation.locationOAGCode;b.pickupDate=e.pickupDateStandard;b.returnDate=e.dropoffDateStandard;return b}catch(f){return null}},resetConfirmationBackupData:function(){g.removeItem(d.CONFIRMATION_BACKUP_DATA)}}}); 3906define("reservation/common/gold-anytime-overlay/core/view/gold-anytime-overlay-view",["jquery","underscore","backbone"],function(a,b,c){return c.View.extend({initialize:function(){this.template=this.options.template;this.content=this.options.content},render:function(){this.$el.append(b.template(a(this.template).html(),{content:this.content}));return this}})}); 3907define("reservation/policy-details-overlay/core/view/policy-details-overlay-view",["jquery","underscore","utils/utils","backbone"],function(a,b,d,c){return c.View.extend({initialize:function(){this.template=this.options.template;this.policyDesc=this.options.policyDesc},render:function(){this.$el.append(b.template(a(this.template).html(),{policyDesc:this.policyDesc}));return this}})});
3908define("reservation/policy-details-overlay/core/presenter/policy-details-overlay-presenter","jquery config/app-config backbone utils/utils-proxy utils/domhelper reservation/policy-details-overlay/core/view/policy-details-overlay-view utils/sessionhelper reservation/process-config/core/reservation-constants helpers/resource-loader".split(" "),function(g,c,i,j,k,l,m,n,h){function d(){null==a&&(a=j.getLightbox());return a}var a=null;return{showOverlayPopUp:function(f){var o=i.Model.extend({}),b=g(f.currentTarget), 3909a=b.attr("data-key")||b.attr("lang"),b=m.getItem(n.RESERVATION_INFORMATION_DATA),e=this;b&&(b=JSON.parse(b));a=c.config.apiDomain+"/rest/hertz/v2/rental-policy/policyDetail/systemId/"+c.config.systemId+"/subsystemId/"+c.config.subSystemId+"/dialect/"+b.dialect+"/eoagCode/"+b.pickupLocationCode+"/policyType/"+a;d().overlay({title:g(f.currentTarget).text(),width:700});d().showProgress();!b.dialect||!b.pickupLocationCode?e.loadPolicyErrorMsg(!0):(new o).fetch({dataType:"jsonp",url:a,cache:!0,type:"GET", 3910success:function(b){var a=b.get("data");a.policyDescription?h.load({template:c.config.rootContext+"/assets/"+c.config.buildId+"/html/all/reservation/rate-details-overlay/rate-details-overlay.html",callback:function(b){k.addTemplate("rate-details-overlay",b.template);d().overlay({title:a.policyTitle,width:700},(new l({template:"#rate-details-overlay-tpl",policyDesc:a.policyDescription})).render().el)}}):e.loadPolicyErrorMsg(!1)},error:function(b,a){try{var c=JSON.parse(a.responseText);"fail"===c.resultInfo.result? 3911d().showContent(c.message.messages):e.loadPolicyErrorMsg(!0)}catch(f){e.loadPolicyErrorMsg(!0)}}})},loadPolicyErrorMsg:function(a){h.load({content:c.config.apiDomain+"/rest/content/"+c.config.systemId+"/"+c.config.dialect+"/all/reservation/rate-details-overlay/rate-details-overlay",callback:function(c){a?d().showContent(c.content.reservationGlobals.rentalTerms.policyInfoError):d().showContent(c.content.reservationGlobals.rateIncludes.rateIncludesDetailsNotAvailable)}})}}}); 3912define("reservation/special-instructions/core/presenter/special-instructions-presenter",["jquery","utils/utils-proxy","config/app-config","reservation/special-instructions/core/model/special-instructions-model","reservation/special-instructions/core/view/special-instructions-view"],function(k,a,d,f,g){function c(){null==b&&(b=a.getLightbox());return b}var b=null;return{showSpecialInsPopup:function(b,h,i){var j=new f,e=c();e.inUse&&e.closeOverlay();j.fetch({cache:!1,dataType:"jsonp",beforeSend:function(){d.config.isApp? 3913htz.utils.Spinner.spin():a.getSpinner().spin()},success:function(a){htz.config.isApp&&hzm.shared.googleTagManger("Hertz Car Rental Locations","","","",-1);c().overlay({title:b,width:584,center:!0,suppressClose:!0},(new g({template:"#location-popup-tpl",content:h,model:a,lBoxRef:c(),referrer:i})).render().el)},complete:function(){d.config.isApp?htz.utils.Spinner.stop():a.getSpinner().stop()}})}}}); 3914define("reservation/special-instructions/core/model/special-instructions-model",["utils/restmodel","config/app-config","jquery","underscore","backbone"],function(a,b){return a.extend({url:function(){var a=b.config.apiDomain+"/rest/location/specialInsData/oag/",c=b.popup.oag;return a+(void 0!=typeof c&&""!=c?c:"")+"?dialect="+b.config.dialect}})}); 3915define("reservation/special-instructions/core/view/special-instructions-view",["backbone","utils/utils-proxy"],function(a){return a.View.extend({initialize:function(){this.template=this.options.template;this.content=this.options.content;this.lBoxRef=this.options.lBoxRef;this.referrer=this.options.referrer},events:{"click #ok-btn":"acceptInstructions","click #popup-msg p a":"navigateHere"},navigateHere:function(){htz.config.isApp&&hzm.shared.googleTagManger("Hertz Car Rental Locations","Reservation Flow", 3916$("#location-popup h1").text(),"here",-1)},acceptInstructions:function(){htz.config.isApp&&hzm.shared.googleTagManger("Hertz Car Rental Locations","Reservation Flow",$("#location-popup h1").text(),"OK",-1);this.closeOverlay();("Y"==this.model.get("served_by")||this.model.get("bookable"))&&this.referrer.handlePopupSubmit(htz.popup.locType)},closeOverlay:function(){this.lBoxRef.inUse&&this.lBoxRef.closeOverlay()},render:function(){this.$el.append(_.template($(this.template).html(),{content:this.content, 3917data:this.model.attributes}));return this}})}); 3918define("reservation/itinerary/core/model/affiliate-member-ID-verification-model","backbone json utils/restmodel utils/utils utils/sessionhelper config/app-config".split(" "),function(b,c,a){return a.extend({defaults:{POS:"",pickupLocationCode:"",dropOffLocationCode:"",CDP:"",dialect:"",referrerURL:""}})}); 3919define("reservation/itinerary/core/view/affiliate-member-verification-popup-view",["jquery","underscore","backbone","utils/utils-proxy"],function(d,f,h,i){var c=null;return h.View.extend({events:{"click #submitAffiliateID":"submit","change input":"eventHandler"},initialize:function(){this.content=this.options.content;this.template=d("#homePageAffiliateMemberView").html();this.name=this.options.name;this.referrer=this.options.referrer;this.cdp=this.options.cdp;this.lBoxRef=this.options.lBoxRef},eventHandler:function(a){var a= 3920d(a.target),b=d.trim(a.val());a.is(":checkbox")&&(b=a.is(":checked")?b:"","affiliateMemberJoin"===a.attr("name")&&a.is(":checked")?a.closest("#affiliate-member-info").find("#affiliate-member-ID").prop("disabled",!0):a.closest("#affiliate-member-info").find("#affiliate-member-ID").prop("disabled",!1));this.referrer.formData.set(a.attr("name"),b,{silent:!0})},submit:function(){var a=this;this.referrer.viewHelper.validateAffiliateMember(this.cdp,this.$el.find("#affiliate-member-ID").val(),this.referrer, 3921!0).done(function(){a.referrer.submit()}).fail(function(b){var e=JSON.parse(b.responseText),g=e.resultInfo.resultCode;307===g||301===g?(null==c&&(c=i.getLightbox()),c.overlay({title:e.content.CDPLbTitle,width:654,center:!0,dismiss:!1},f.template(d("#alternative-cdp-tpl").html(),{content:a.content,error:e.message.messages})),setTimeout(function(){c.inUse&&c.closeOverlay();a.referrer.formData.set({affiliateCallCount:htz.res.config.affiliateMemberCallCount[a.referrer.formData.get("companyId")]},{silent:!0}); 3922a.referrer.submit()},6E3)):(a.lBoxRef.inUse&&a.lBoxRef.closeOverlay(),a.referrer.formData.trigger("error",a.referrer.model,b,a.referrer.referrer.find("#error-list")))})},render:function(){this.$el.append(f.template(this.template,{content:this.content,name:this.name,formData:this.referrer.formData}));return this},doCleanup:function(){this.template=this.content=null}})}); 3923define("reservation/itinerary/core/view/threeDS-view",["jquery","underscore","backbone","utils/utils-proxy"],function(a,f,g,e){return g.View.extend({initialize:function(){this.referrer=this.options.referrer;this.content=this.options.content;this.metaData=this.model.get("metaData");this.template=a("#3DS-notification-tpl").html()},events:{"click #3ds-link":"submitCVV","click #close":"close3DS","click .termsLink":"openTerms"},openTerms:function(){this.openContentInWindow(htz.config.rootContext+"/emember/join/gold/displayTermsAndConditions.do")}, 3924openContentInWindow:function(a,b,c){b||(b="phone"!=htz.deviceGroup?750:window.innerWidth);c||(c="phone"!=htz.deviceGroup?450:window.innerHeight);window.open(a,"Terms_And_Conditions","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width="+b+",height="+c+",left="+(window.screen.width/2-b/2)+",top="+(window.screen.height/2-c/2)).focus()},submitCVV:function(){var d=this,b=a("#accept3dsTerms").prop("checked");if(b){var c=a("#cvvNumber").val();a.ajax({cache:!1,async:!0, 3925data:JSON.stringify({cvvNumber:c,accept3dsTerms:b,screenWidth:window.screen.width,screenHeight:window.screen.height}),url:"/rentacar/rest/hertz/v2/member/login-cvv",dataType:"json",type:"POST",contentType:"application/json",success:function(){d.redirectTo3DS()},error:function(b,c,d){a("#cvvError").html(b.responseJSON.data);a("#cvvNumber").addClass("error-input");console.log("error submitting CVV");console.log(c);console.log(b);console.log(d)}})}else a("#cvvError").html(d.content.homePage.homePageContent.threeDTermsError), 3926a(".accept3dsTermsLabel").addClass("error-input")},redirectTo3DS:function(){e.getSpinner().spin();self.LightBox.INSTANCES[0].closeOverlay();(new e.getLightbox).overlay({url:htz.config.rootContext+"/templates/statemanagement/cyberSourceiFrame.jsp",width:560,center:!0,scroll:!1,screen:70,title:this.content.homePage.homePageContent.threeDStitle})},close3DS:function(){self.LightBox.INSTANCES[0].closeOverlay();var a=htz.helpers.SessionHelper.getItem("bookAsMember");void 0===this.metaData.get("threeDMsg"); 3927"1"==a&&HomePage.bookAsMemberSubmitRes(this.metaData.attributes.firstName)},render:function(){this.$el.append(f.template(this.template,{content:this.content,metaData:this.metaData,currency:htz.config.currency}));return this},doCleanup:function(){this.template=this.content=this.referrer=null}})}); 3928define("reservation/itinerary/core/view/fleet-section-view",["jquery","underscore","backbone","slick"],function(b,a,c){return c.View.extend({initialize:function(){this.content=this.options.content;this.template=this.options.template;this.render();this.initSlick()},render:function(){b("#hp-content-container").append(a.template(this.template,{content:this.content}));return this},initSlick:function(){try{b("#fleet-section-carousel-rd").slick({slidesToShow:1,dots:!0,speed:700,mobileFirst:!0})}catch(a){console.log(a)}}, 3929doCleanup:function(){this.template=this.content=this.referrer=null}})}); 3930define('reservation/itinerary/core/view/top-locations-view', ['jquery', 'underscore', 'backbone','slick'], function($, _, Backbone,Slick) { 3931 3932 var topLocationsView = Backbone.View.extend({ 3933 initialize : function() { 3934 this.content = this.options.content; 3935 this.template = this.options.template; 3936 this.render(); 3937 this.initSlick(); 3938 }, 3939 render : function(){ 3940 3941 $("#hp-content-container").append(_.template(this.template, { content: this.content })); 3942 return this; 3943 }, 3944 initSlick : function(){ 3945 try{ 3946 $("#topUS-locations-carousel-rd").slick({ 3947 slidesToShow: 5, 3948 slidesToScroll:5, 3949 dots:true, 3950 speed:700, 3951 3952 responsive:[ 3953 { 3954 breakpoint:1200, 3955 settings:{ 3956 slidesToShow: 4, 3957 slidesToScroll:5, 3958 dots:true, 3959 speed:700, 3960 }, 3961 }, 3962 { 3963 breakpoint:992, 3964 settings:{ 3965 slidesToShow: 3, 3966 slidesToScroll:3, 3967 dots:true, 3968 speed:700, 3969 arrows:false, 3970 }, 3971 }, 3972 { 3973 breakpoint:768, 3974 settings:{ 3975 slidesToShow: 2, 3976 slidesToScroll:2, 3977 dots:true, 3978 speed:700, 3979 arrows:false, 3980 }, 3981 }, 3982 { 3983 breakpoint:576, 3984 settings:{ 3985 slidesToShow: 1, 3986 slidesToScroll:1, 3987 dots:true, 3988 speed:700, 3989 arrows:false, 3990 }, 3991 }, 3992 ] 3993 }) 3994 }catch (e){ 3995 console.log(e); 3996 } 3997 }, 3998 doCleanup : function() { 3999 this.template = this.content = this.referrer = null; 4000 } 4001 }); 4002 4003 return topLocationsView; 4004}); 4005 4006define('reservation/itinerary/core/presenter/itinerary-regional-content-view', ['jquery', 'underscore', 'backbone','utils/utils-proxy', 4007 'reservation/itinerary/core/view/fleet-section-view', 4008 'reservation/itinerary/core/view/top-locations-view','reservation/process-config/core/reservation-constants'], 4009 function($, _, Backbone,utilProxy,fleetSectionView,topLocationsView,resConstants) { 4010 4011 var itineraryRegionalContentView = Backbone.View.extend({ 4012 initialize : function() { 4013 this.content = this.options.content; 4014 this.template = this.options.template; 4015 }, 4016 render : function(){ 4017 var mobileSection = this.content?.homePageSectionContents?.mobileSection; 4018 var mobileSectionHasData = mobileSection && Object.values(mobileSection).some(value => value !== ""); 4019 if(this.content) { 4020 if(this.content.homePageSectionContents.section2 || this.content.homePageSectionContents.section2 === undefined ){this.genericRender('#itinerary-info-section-tpl');} //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4021 if (mobileSectionHasData) { 4022 $("#mobileapp-section-container-rd").css("display","block"); 4023 } else { 4024 $("#mobileapp-section-container-rd").css("display","none"); 4025 } 4026 if(this.content.homePageSectionContents.section3){this.genericRender('#itinerary-joinGPR-section-tpl');} //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4027 if(this.content.homePageSectionContents.section4){this.genericRender('#location-section-tpl');} //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4028 if(this.content.homePageSectionContents.section5){this.renderFleet();} //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4029 if(this.content.homePageSectionContents.memberSection){this.genericRender('#member-section-tpl');} //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4030 if(this.content.homePageSectionContents.section6){this.renderTopLocations();} //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4031 if(this.content.homePageSectionContents.section7){this.genericRender('#itinerary-footnote-section-tpl');} //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4032 } 4033 4034 return this; 4035 }, 4036 genericRender(template){ 4037 var tpl=$(template); 4038 4039 try{ 4040 $("#hp-content-container").append(_.template(tpl.html(), { content: this.content })); 4041 }catch(e){ 4042 //$.publish(resConstants.HANDLE_RENDER_FAIL, e.message); 4043 } 4044 return this; 4045 }, 4046 //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4047 renderFleet : function(){
4048 try{ 4049 new fleetSectionView({template : $('#itinerary-fleet-tpl').html(), content : this.content }); 4050 }catch(e){ 4051 //$.publish(resConstants.HANDLE_RENDER_FAIL, e.message); 4052 } 4053 }, 4054 4055 //dtc4102//irac-154//Add additional homepage content displayed on US site through GTM to legacy site design - INC001393230 4056 renderTopLocations : function(){ 4057 try{ 4058 new topLocationsView({ template : $('#itinerary-top-locations-tpl').html(), content : this.content }); 4059 }catch(e){ 4060 //$.publish(resConstants.HANDLE_RENDER_FAIL, e.message); 4061 } 4062 this.adjustHeight(); 4063 4064 }, 4065 adjustHeight: function(){ 4066 var maxHeight = 0; 4067 4068 $("#topUS-locations-carousel-rd>.slick-list>.slick-track").children().each(function() { 4069 var currentHeight = $(this).height(); 4070 4071 if (currentHeight > maxHeight) { 4072 maxHeight = currentHeight; 4073 } 4074 }); 4075 4076 $("#topUS-locations-carousel-rd>.slick-list>.slick-track").children().each(function() { 4077 $(this).find(".tl-card-container").height(maxHeight); 4078 $(this).find(".tl-card-footer").css({ 4079 'position': 'absolute', 4080 'bottom':'0' 4081 }); 4082 }); 4083 }, 4084 doCleanup : function() { 4085 this.template = this.content = this.referrer = null; 4086 } 4087 }); 4088 4089 return itineraryRegionalContentView; 4090 }); 4091 4092 window.checkHertzNameSpace("htz.res.config"); 4093htz.res.config.ReservationConstants=function(){return{ITINERARY:"itinerary",VEHICLES:"vehicles",EXTRAS:"extras",REVIEW_AND_BOOK:"review-and-book",PAYMENT_PROCESSING:"payment-processing",NON_BOOKABLE:"non-bookable",CONFIRMATION:"confirmation",REVIEW:"review",CANCEL_CONFIRMATION:"cancel-confirmation",RESERVATION_LIST:"reservation-list",SEARCH:"search",ERRORS:"errors",MODIFY_ITINERARY:"modify/itinerary",MODIFY_VEHICLES:"modify/vehicles",MODIFY_EXTRAS:"modify/extras",MODIFY_CONFIRMATION:"modify/confirmation", 4094MODIFY_REVIEW_AND_BOOK:"modify/review-and-book",MODIFY_NON_BOOKABLE:"modify/non-bookable",MEMBER_REVIEW:"memberReview",ITINERARY_LAZY:"itinerary-lazy",VEHICLES_LAZY:"vehicles-lazy",REVIEW_AND_BOOK_LAZY:"review-and-book-lazy",LEGACY_ITINERARY:"reservationOnHomepage.jsp",LEGACY_VEHICLES:"whatView.jsp",LEGACY_EXTRAS:"extrasView.jsp",LEGACY_REVIEW_AND_BOOK:"bookableQuoteView.jsp",LEGACY_CONFIRMATION:"confirmationView.jsp",LEGACY_REVIEW:"reviewReservationView.jsp",LEGACY_CANCEL_CONFIRMATION:"cancelConfirmationView.jsp", 4095COUNTER_BYPASS_CONFIRMATION:"counter-bypass-confirmation",ONLINE_CHECKIN_CONFIRMATION:"online-checkin-confirmation",ITINERARY_DATA:"res-home-data",ITINERARY_DATA_WHITELABEL:"res-home-data-whitelabel",ITINERARY_SC_DATA:"res-itinerary-sc-data",VEHICLES_DATA:"res-vehicles-data",EXTRAS_DATA:"res-extras-data",REVIEW_AND_BOOK_DATA:"res-review-and-book-data",NON_BOOKABLE_DATA:"res-non-bookable-data",CONFIRMATION_DATA:"res-confirmation-data",CONFIRMATION_BACKUP_DATA:"res-confirmation-backup-data",REVIEW_DATA:"res-review-data", 4096CANCEL_CONFIRMATION_DATA:"res-cancel-confirmation-data",RATE_DETAILS_DATA:"res-rate-details-data",ITINERARY_INFO_DATA:"res-itinerary-info-data",RESERVATION_DATA:"res-data",RESERVATION_CONFIRMED:"res-confirmed",RESERVATION_PRESERVED_DATA:"res-preserved-state-data",RESERVATION_INFORMATION_DATA:"res-information",SELECTED_VEHICLE_INFO:"res-selected-vehicle-info",SELECTED_EXTRAS_INFO:"res-selected-extras-info",NEW_SIPP:"newSIPP",TYPE_IN_RQ:"type-in-rq",MEMBER_SEARCH_DATA:"htz.res.member.searchList",NON_MEMBER_SEARCH_DATA:"htz.res.nonmember.searchList", 4097UPSELL_LIST_DATA:"res-upsell-list-data",REDEEM_POINTS_DATA:"res-redeem-points-data",CONFIRMATION_NUMBER:"res-confirmation-number",CONFIRMATION_NUMBER_INFO:"res-info-confirmation-number",RENTAL_LINKS_DATA:"res-rental-links-data",SPECIAL_OFFERS_DATA:"special-offers-data",APP_CONFIG:"app-config",APP_MEMBER_INFO:"app-member-info",APP_RESERVATION_FORM:"app-res-form",QUOTE_ID:"res-quote-id",VEHICLE_ID:"res-vehicle-id",ITINERARY_LOCATION_INFO:"res_itinerary_location_info",ITINERARY_DISCOUNT_INFO:"res_itinerary_discount_info", 4098CALENDAR_MODE:"calendarMode",RESERVATION_ERROR_LIST:"res-error-list",HOD_VEHICLES:"hod-vehicle-available",ITINERARY_ERROR_DATA:"res-home-error-data",VEHICLES_E
4098RROR_DATA:"res-vehicles-error-data",EXTRAS_ERROR_DATA:"res-extras-error-data",REVIEW_AND_BOOK_ERROR_DATA:"res-review-and-book-error-data",NON_BOOKABLE_ERROR_DATA:"res-non-bookable-error-data",CONFIRMATION_ERROR_DATA:"res-confirmation-error-data",REVIEW_ERROR_DATA:"res-review-error-data",CANCEL_CONFIRMATION_ERROR_DATA:"res-cancel-confirmation-error-data", 4099VEHICLES_FALLBACK_ERROR_DATA:"res-vehicles-fallback-error-data",AFFILIATE_MEMBER_VERIFICATION_COUNT:0,RENDER_PREPARE_PRESENTER:"prepare-render.res.presenter",RENDER_FAILED_PRESENTER:"render-failed.res.presenter",RENDER_DONE_PRESENTER:"render-done.res.presenter",NAVIGATE_PREPARE_PRESENTER:"prepare-navigate.res.presenter",VALIDATE_ITINERARY:"validate-state.res.itinerary",CHANGE_VEHICLE_IN_REVIEW_BOOK:"vehicle-change.res.review-book",CHANGE_RATE_IN_REVIEW_BOOK:"rate-change.res.review-book",CHANGE_TOTAL_IN_REVIEW_BOOK:"total-change.res.review-book", 4100VALIDATE_CONFIRMATION:"validate-state.res.confirmation",ERROR_EXTRAS:"extras-errors.res.extras",RESET_ERRORS_EXTRAS:"extras-reset-errors.res.extras",SUCCESS_EXTRAS:"extras-add-remove-success.res.extras",REMOVE_EXTRAS:"extras-removed.res.rates",LOCATION_DELIVERY_PICKUP:"set-delivery-pickup-location.res.itinerary",LOCATION_COLLECTION_DROPOFF:"set-collection-dropoff-location.res.itinerary",LOCATION_PICKUP:"set-pickup-location.res.itinerary",RECENT_SEARCH_DATA:"set-itinerary-data.res.itinerary",TRACK_ERROR:"track-error", 4101HANDLE_RENDER_FAIL:"handle-render-fail",CURRENCY_CONVERTER:"currency-converter",REFERRER_URL:"referrer-url",ITINERARY_TEMPLATE:"home-page-tpl",VEHICLES_TEMPLATE:"vehicle-page-tpl",EXTRAS_TEMPLATE:"extras-page-tpl",REVIEW_AND_BOOK_TEMPLATE:"bookable-page-tpl",CONFIRMATION_TEMPLATE:"counter-bypass-summary-tpl",REVIEW_TEMPLATE:"res-update-cancel-prompt-tpl",CANCEL_TEMPLATE:"cancel-confirmation-tpl"}}(); 4102"function"==typeof define&&define.amd&&define("reservation/process-config/core/reservation-constants",[],function(){return htz.res.config.ReservationConstants}); 4103window.checkHertzNameSpace("htz.res.config");htz.res.config.ReservationConfig=function(){var b,c;return{configure:function(a){a.rotar&&(b=a.rotar);a.resourceConfig&&(c=a.resourceConfig)},getRotar:function(){return b},getResourceConfig:function(){return c}}}();"function"==typeof define&&define.amd&&define("reservation/config",[],function(){return htz.res.config.ReservationConfig}); 4104window.checkHertzNameSpace("htz.res.config"); 4105htz.res.config.ResourceConfigManager=function(e,f,d,a){return{getPageInfo:function(a){return d.getResourceConfig().getPageInfo(a)},getLazyPage:function(c){var b=null;switch(c){case a.ITINERARY:b=a.ITINERARY_LAZY;break;case a.VEHICLES:b=a.VEHICLES_LAZY;break;case a.REVIEW_AND_BOOK:b=a.REVIEW_AND_BOOK_LAZY}return b},getNextPage:function(c){var b=null;switch(c){case a.ITINERARY:b=a.VEHICLES;break;case a.VEHICLES:b=a.EXTRAS;break;case a.EXTRAS:b=a.REVIEW_AND_BOOK;break;case a.REVIEW_AND_BOOK:b=a.CONFIRMATION; 4106break;case a.SEARCH:b=a.REVIEW}return b},getPages:function(){return[a.ITINERARY,a.VEHICLES,a.EXTRAS,a.REVIEW_AND_BOOK,a.CONFIRMATION,a.REVIEW,a.CANCEL_CONFIRMATION,a.RESERVATION_LIST]}}}(htz,$,htz.res.config.ReservationConfig,htz.res.config.ReservationConstants);"function"==typeof define&&define.amd&&define("res/res-resource-config-manager",[],function(){return htz.res.config.ResourceConfigManager}); 4107window.checkHertzNameSpace("htz.res.config"); 4108htz.res.config.RouteConfig={routes:{"":"showItinerary",itinerary:"showItinerary","modify/itinerary":"showItineraryModify",vehicles:"showVehicles","vehicles/sort/:by/:dir":"showVehicles","vehicles/sort/:by":"showVehicles","vehicles/display/:number":"showVehiclesOnly","modify/vehicles":"showVehiclesModify","modify/vehicles/sort/:by/:dir":"showVehiclesModify","modify/vehicles/sort/:by":"showVehiclesModify","modify/vehicles/display/:number":"showVehiclesOnlyModify",extras:"showExtras","modify/extras":"showExtrasModify", 4109"review-and-book":"showReviewandBook","modify/review-and-book":"showReviewandBookModify","non-bookable":"showNonBookable","modify/non-bookable":"showNonBookableModify",confirmation:"showConfirmation","modify/confirmation":"showConfirmation",review:"showReview",search:"showSearch","reservation-list":"showReservationList","cancel-confirmation":"showCancelC
4109onfirmation","online-checkin-confirmation":"showOCIConfirmation","counter-bypass-confirmation":"showCBPConfirmation","*path":"handleUnknown"},showItinerary:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.ITINERARY)}, 4110showItineraryModify:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.ITINERARY,{isModify:!0})},showVehicles:function(a,b){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.VEHICLES,{sortBy:a,sortDir:b})},showVehiclesModify:function(a,b){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.VEHICLES,{sortBy:a,sortDir:b,isModify:!0})},showVehiclesOnly:function(a){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.VEHICLES,{number:a})}, 4111showVehiclesOnlyModify:function(a){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.VEHICLES,{number:a,isModify:!0})},showExtras:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.EXTRAS)},showExtrasModify:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.EXTRAS,{isModify:!0})},showReviewandBook:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.REVIEW_AND_BOOK)},showReviewandBookModify:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.REVIEW_AND_BOOK, 4112{isModify:!0})},showNonBookable:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.NON_BOOKABLE)},showNonBookableModify:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.NON_BOOKABLE,{isModify:!0})},showConfirmation:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.CONFIRMATION)},showReview:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.REVIEW)},showSearch:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.SEARCH)}, 4113showCancelConfirmation:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.CANCEL_CONFIRMATION)},showReservationList:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.RESERVATION_LIST)},showOCIConfirmation:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.ONLINE_CHECKIN_CONFIRMATION)},showCBPConfirmation:function(){htz.res.pages.PageHelper.show(htz.res.config.ReservationConstants.COUNTER_BYPASS_CONFIRMATION)},handleUnknown:function(){htz.res.pages.PageHelper.show("unknown")}, 4114getRoot:function(){return"/reservation"}}; 4115window.checkHertzNameSpace("htz.res.utils"); 4116htz.res.utils.DOMHelper=function(b,f,d,e){return{addTemplate:function(a,c){if(!a||!c)return!1;var b=d.createElm("res-"+a+"-page-templates","div",!0);return b?(b.html(c),!0):!1},removeTemplate:function(a){if(!a)return!1;a=b("#res-"+a+"-page-templates");return 0<a.length?(a.eq(0).remove(),!0):!1},getTemplatesId:function(a){return!a?"":"res-"+a+"-page-templates"},addPage:function(a,b){return!a?!1:e.getDomHelper().createPageElm(a,"res",b)?!0:!1},removePage:function(a){if(!a)return!1;a=b("#res-"+a+"-page-container"); 4117return 0<a.length?(a.eq(0).remove(),!0):!1},removeTemplateAndPage:function(a){this.removeTemplate(a);this.removePage(a)},getPageId:function(a){return!a?"":"res-"+a+"-page-container"},isPageAdded:function(a){return!a?!1:0<b("#"+this.getPageId(a)).length}}}($,htz,htz.utils.Utils,htz.utils.config.UtilConfig);"function"==typeof define&&define.amd&&define("utils/domhelper",[],function(){return htz.res.utils.DOMHelper}); 4118window.checkHertzNameSpace("htz.res.utils"); 4119htz.res.utils.ReservationLoader=function(j,k,d,l,f,e,g){function h(c,a){var b=a.checkElmId;b&&0<j("#"+b).length&&(a.template=null);if(c===g.ITINERARY&&a.content)try{if(e.getItem(a.content))htz.homepage.content=null;else{var i=htz.homepage.content;i&&(e.setItem(a.content,k.stringify(i)),htz.homepage.content=null)}}catch(d){}else c===g.RESERVATION_LIST&&a.content&&(b=localStorage.getItem("res-lookup-content"))&&e.setItem(a.content,b)}return{loadResourceByPage:function(c,a){var b=l.getPageInfo(c);null!= 4120b?(h(c,b),b.callback=function(b){b.template&&f.addTemplate(c,b.template);a&&"function"===typeof a&&a(b)},b.page=c,d.load(b)):a&&"function"===typeof a&&a()},loadResources:function(c,a,b){null!=c?(b&&(h(b,c),c.page=b),c.callback=function(c){c.template&&b&&f.addTemplate(b,c.template);a&&"function"===typeof a&&a(c)},d.load(c)):a&&"function"===typeof a&&a()}}}
4120($,JSON,htz.helpers.ResourceLoader,htz.res.config.ResourceConfigManager,htz.res.utils.DOMHelper,htz.helpers.SessionHelper,htz.res.config.ReservationConstants); 4121window.checkHertzNameSpace("htz.res.utils"); 4122htz.res.utils.DOMMonitor=function(i,h,e){function c(a){f(a);g(a)}function f(a){e.removeTemplate(a);(a=h.getLazyPage(a))&&e.removeTemplate(a)}function g(a){e.removePage(a);var b=h.getLazyPage(a);b&&e.removePage(b);if(null!=d&&(b=d[a])&&"function"===typeof b.doCleanup)try{b.doCleanup(),d[a]=null}catch(c){}}var d=null;return{monitor:function(a){if(a){var b=h.getPages(),a=i.inArray(a,b);0<a?(2<=a&&(g(b[0]),g(b[1])),3<=a&&g(b[2]),4===a&&(c(b[3]),c(b[5]),f(b[0]),f(b[1]),f(b[2])),5===a&&c(b[4]),6===a&&c(b[5])): 41230===a&&(c(b[4]),c(b[5]),c(b[6]))}},addPresenter:function(a,b){null==d&&(d=[]);d[a]=b},cleanupPage:function(a){c(a)},doCleanup:function(){d=null}}}($,htz.res.config.ResourceConfigManager,htz.res.utils.DOMHelper); 4124window.checkHertzNameSpace("htz.res.config"); 4125htz.res.config.PageValidator=function(d,e,a){var c=[a.ITINERARY,a.VEHICLES,a.EXTRAS,a.REVIEW_AND_BOOK,a.NON_BOOKABLE,a.CONFIRMATION,a.REVIEW,a.CANCEL_CONFIRMATION,a.SEARCH,a.ONLINE_CHECKIN_CONFIRMATION,a.COUNTER_BYPASS_CONFIRMATION,a.RESERVATION_LIST];return{getValidPage:function(b){if(this.isValidPage(b))return b;a:{for(b=0;b<c.length;b++)if(e.isPageAdded(c[b])){b=!0;break a}b=!1}return b?null:this.getDefaultPage()},getDefaultPage:function(){return a.ITINERARY},isValidPage:function(b){return 0<= 4126d.inArray(b,c)},isPartOfSPP:function(b){var a;a:{if(b)try{if(0<=b.indexOf(htz.config.rootContext+"/reservation"))b.split(htz.config.rootContext+"/reservation");else{a=!1;break a}}catch(c){}a=!0}return a}}}($,htz.res.utils.DOMHelper,htz.res.config.ReservationConstants); 4127window.checkHertzNameSpace("htz.res.pages");var appCore=htz.config.isApp?"app":"core"; 4128htz.res.pages.PageHelper=function(e,m,h,f,i,r,s,a){function n(a,b){var c=e.Deferred();window.plugins.remoteToLocal.readFromSharedStorage(a,function(a){a&&h.setItem(b,JSON.stringify(a));c.resolve()});return c.promise()}var c=[];c[a.ITINERARY]="reservation/itinerary/core/presenter/itinerary-presenter";c[a.VEHICLES]="reservation/vehicle/core/presenter/vehicle-presenter";c[a.EXTRAS]="reservation/extras/core/presenter/extras-presenter";c[a.REVIEW_AND_BOOK]="reservation/review-and-book/core/presenter/bookable-presenter"; 4129c[a.NON_BOOKABLE]="reservation/non-bookable/core/presenter/non-bookable-presenter";c[a.CONFIRMATION]="reservation/confirmation/core/presenter/confirmation-presenter";c[a.SEARCH]="reservation/itinerary/core/presenter/itinerary-presenter";c[a.REVIEW]="reservation/confirmation/core/presenter/confirmation-presenter";c[a.CANCEL_CONFIRMATION]="reservation/cancel-confirmation/core/presenter/cancel-confirmation-presenter";c[a.RESERVATION_LIST]="reservation/lookup/"+appCore+"/presenter/lookup-presenter";c[a.ONLINE_CHECKIN_CONFIRMATION]= 4130"reservation/confirmation/core/presenter/confirmation-presenter";c[a.COUNTER_BYPASS_CONFIRMATION]="reservation/confirmation/core/presenter/confirmation-presenter";var p=[a.CONFIRMATION_DATA,a.CANCEL_CONFIRMATION_DATA,a.REVIEW_DATA,a.ITINERARY_DATA,a.VEHICLES_DATA,a.EXTRAS_DATA,a.REVIEW_AND_BOOK_DATA,a.NON_BOOKABLE_DATA,a.ITINERARY_INFO_DATA,a.RATE_DETAILS_DATA,a.UPSELL_LIST_DATA,a.REDEEM_POINTS_DATA,a.APP_RESERVATION_FORM,a.ITINERARY_SC_DATA,a.RENTAL_LINKS_DATA,a.SELECTED_VEHICLE_INFO,a.SELECTED_EXTRAS_INFO], 4131q={show:function(a,b){var c=this,e=i.getValidPage(a);e&&(e!=a?f.getRotar().rotate(e):r.loadResourceByPage(a,function(a){c.showPage(a,b)}))},showPage:function(l,b){function o(){var a=l;try{var d=a.content;(!d||e.isEmptyObject(d))&&WebTracking.setError("debug-content-error-"+a.page+"-content-missing",a.page)}catch(f){}require([c[k]],function(a){a.show(l,b);s.addPresenter(k,a)})}var j=e.Deferred(),f=this,k=l.page,b=f.getPageType(k,b);
4131if(m.config.isApp){if(k==a.ITINERARY){var d;b:{d=window.location.search.substring(1).split("&"); 4132for(var g=0;g<d.length;g++){var i=d[g].split("=");if("appversion"==i[0]){d=i[1];break b}}d=!1}m.config.isApp&&(d&&"250"!=d?n("res_location_info",a.ITINERARY_LOCATION_INFO).then(function(){n("res_discount_info",a.ITINERARY_DISCOUNT_INFO).then(function(){j.resolve();setTimeout(function(){window.plugins.remoteToLocal.clearFromSharedStorage("res_location_info");window.plugins.remoteToLocal.clearFromSharedStorage("res_discount_info")},0)})}):(d=window.localStorage.getItem("res_location_info"),g=window.localStorage.getItem("res_discount_info"), 4133d&&h.setItem(a.ITINERARY_LOCATION_INFO,d),g&&h.setItem(a.ITINERARY_DISCOUNT_INFO,g),window.localStorage.removeItem("res_location_info"),window.localStorage.removeItem("res_discount_info"),j.resolve()))}else j.resolve();j.promise().then(function(){o.call(f)})}else o()},showDefault:function(){f.getRotar().rotate(i.getDefaultPage())},resetReservation:function(){h.removeListedItems(p)},resetReservationBut:function(a){if(a&&0!=a.length){var b=e.merge([],p),b=e.grep(b,function(b){return 0>e.inArray(b,a)}); 41340<b.length&&h.removeListedItems(b)}},getPageType:function(c,b){b||(b={});c==a.REVIEW?b.isReview=!0:c==a.ONLINE_CHECKIN_CONFIRMATION?b.isOCI=!0:c==a.COUNTER_BYPASS_CONFIRMATION?b.isCBP=!0:c==a.SEARCH&&(b.isSearch=!0);return b},getPresenter:function(a){return c[a]}};e.unsubscribe(a.RENDER_FAILED_PRESENTER);e.subscribe(a.RENDER_FAILED_PRESENTER,function(c,b){b&&b.isReview?f.getRotar().rotate(a.SEARCH):q.showDefault()});return q}($,htz,htz.helpers.SessionHelper,htz.res.config.ReservationConfig,htz.res.config.PageValidator, 4135htz.res.utils.ReservationLoader,htz.res.utils.DOMMonitor,htz.res.config.ReservationConstants); 4136window.checkHertzNameSpace("htz.res.utils"); 4137htz.res.utils.ResourceMonitor=function(f,d,c,e){return{trigger:function(a,b){var c=this;b&&0<b?setTimeout(function(){c.process(a)},b):c.process(a)},process:function(a){a=c.getNextPage(a);if(null!=a){var b=c.getPageInfo(a);b&&(b.callback=htz.res.utils.ResourceMonitor.action,b.page=a,d.load(b))}},action:function(a){a.template&&e.addTemplate(a.page,a.template)},fetchResource:function(a){return c.getPageInfo(a)}}}($,htz.helpers.ResourceLoader,htz.res.config.ResourceConfigManager,htz.res.utils.DOMHelper); 4138window.checkHertzNameSpace("htz.res.utils"); 4139htz.res.utils.ResourceLazyLoader=function(f,g,d,h){var c=null;return{trigger:function(a,b,d){var e=this;c=d;b&&0<b?setTimeout(function(){e.load(a)},b):e.load(a)},load:function(a){if(a=d.getLazyPage(a)){var b=d.getPageInfo(a);b?(b.callback=htz.res.utils.ResourceLazyLoader.action,b.page=a,g.load(b)):c=null}else c=null},action:function(a){a.template&&h.addTemplate(a.page,a.template);c&&a.content&&f.extend(!0,c,a.content);c=null}}}($,htz.helpers.ResourceLoader,htz.res.config.ResourceConfigManager,htz.res.utils.DOMHelper); 4140window.checkHertzNameSpace("htz.routers.res"); 4141htz.routers.res.ReservationRotar=function(g,d,a){return{rotate:function(h,e){var b=null;switch(h){case a.ITINERARY:b="#"+a.ITINERARY;break;case a.VEHICLES:b="#"+a.VEHICLES;break;case a.EXTRAS:b="#"+a.EXTRAS;break;case a.REVIEW_AND_BOOK:b="#"+a.REVIEW_AND_BOOK;break;case a.NON_BOOKABLE:b="#"+a.NON_BOOKABLE;break;case a.CONFIRMATION:b="#"+a.CONFIRMATION;break;case a.REVIEW:b="#"+a.REVIEW;break;case a.SEARCH:b="#"+a.SEARCH;break;case a.RESERVATION_LIST:b="#"+a.RESERVATION_LIST;break;case a.CANCEL_CONFIRMATION:b= 4142"#"+a.CANCEL_CONFIRMATION;break;case a.MODIFY_ITINERARY:b="#"+a.MODIFY_ITINERARY;break;case a.MODIFY_VEHICLES:b="#"+a.MODIFY_VEHICLES;break;case a.MODIFY_EXTRAS:b="#"+a.MODIFY_EXTRAS;break;case a.MODIFY_REVIEW_AND_BOOK:b="#"+a.MODIFY_REVIEW_AND_BOOK;break;case a.MODIFY_NON_BOOKABLE:b="#"+a.MODIFY_NON_BOOKABLE;break;case a.MODIFY_CONFIRMATION:b="#"+a.MODIFY_CONFIRMATION}if(b){e&&(b+="/"+e);try{if(!g.config.isApp&&window.location.hash===b){var c=b,c=c.substring(1),f=htz.res.config.RouteConfig;f[f.routes[c]]()}else d.getRotar().rotateTo(b)}catch(i){d.getRotar().rotateTo(b)}}}}}(htz, 4143htz.utils.config.UtilConfig,htz.res.config.ReservationConstants);"function"==typeof define&&define.amd&&define("routers/res-rotar",[],function(){return htz.routers.res.ReservationRotar}); 4144window.checkHertzNameSpace("htz.web.res.config");
4145htz.web.res.config.ResourceConfig=function(j,k,c){var k=navigator.userAgent.toLowerCase(),i=-1!=k.indexOf("msie")&&8>=parseInt(k.split("msie")[1])?!0:!1,d,a=j.config.buildId,m=j.config.subSystemId,l=j.config.dialect,e=j.config.orgDeviceGroup,b=j.config.rootContext,n=j.config.apiDomain,o=j.config.pos;l.substr(0,2);var h=n+"/rest/content/"+a+"/"+m+"/"+l+"/all/reservation",g=b+"/assets/"+a+"/html/all/reservation";return{getPageInfo:function(j){var f=null;switch(j){case c.ITINERARY:f={template:g+"/home/homePage.html", 4146content:h+"/home/homePage",checkElmId:c.ITINERARY_TEMPLATE};break;case c.ITINERARY_LAZY:f={template:g+"/home/homeOverlays.html",content:h+"/home/homeOverlays"};break;case c.VEHICLES:d=i?b+"/assets/"+a+"/all/reservation/vehicle/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/vehicle/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/vehicle.js",template:g+"/vehicle/vehiclePage.html",content:h+"/vehicle/vehiclePage",checkElmId:c.VEHICLES_TEMPLATE};break;case c.VEHICLES_LAZY:f={template:g+"/vehicle/vehicleOverlays.html", 4147content:h+"/vehicle/vehicleOverlays"};break;case c.EXTRAS:d=i?b+"/assets/"+a+"/all/reservation/extras/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/extras/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/extras.js",template:g+"/extras/extrasPage.html",content:h+"/extras/extrasPage",checkElmId:c.EXTRAS_TEMPLATE};break;case c.REVIEW_AND_BOOK:d=i?b+"/assets/"+a+"/all/reservation/bookable/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/bookable/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+ 4148"/reservation/bookable.js",template:g+"/review-and-book/review-and-book.html",content:h+"/review-and-book/review-and-book",checkElmId:c.REVIEW_AND_BOOK_TEMPLATE};break;case c.REVIEW_AND_BOOK_LAZY:f={template:g+"/review-and-book/review-and-book-overlays.html",content:h+"/review-and-book/review-and-book-overlays"};break;case c.NON_BOOKABLE:d=i?b+"/assets/"+a+"/all/reservation/bookable/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/bookable/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/nonbookable.js", 4149template:g+"/non-bookable/non-bookable.html",content:n+"/rest/content/"+m+"/"+l+"/"+o+"/all/reservation/non-bookable/non-bookable/contexts;howToReachUs=HTRU"};break;case c.CONFIRMATION:d=i?b+"/assets/"+a+"/all/reservation/confirmation/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/confirmation/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/confirmation.js",template:g+"/confirmation/confirmation.html",content:h+"/confirmation/confirmation",checkElmId:c.CONFIRMATION_TEMPLATE};break;case c.ONLINE_CHECKIN_CONFIRMATION:d= 4150i?b+"/assets/"+a+"/all/reservation/confirmation/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/confirmation/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/confirmation.js",template:g+"/confirmation/confirmation.html",content:h+"/confirmation/confirmation"};break;case c.COUNTER_BYPASS_CONFIRMATION:d=i?b+"/assets/"+a+"/all/reservation/confirmation/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/confirmation/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/confirmation.js",template:g+ 4151"/confirmation/confirmation.html",content:h+"/confirmation/confirmation"};break;case c.REVIEW:d=i?b+"/assets/"+a+"/all/reservation/confirmation/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/confirmation/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/confirmation.js",template:g+"/review/reviewPage.html",content:h+"/review/reviewPage",checkElmId:c.REVIEW_TEMPLATE};break;case c.SEARCH:f={template:g+"/home/homePage.html",content:h+"/home/homePage",checkElmId:c.ITINERARY_TEMPLATE};break; 4152case c.RESERVATION_LIST:d=i?b+"/assets/"+a+"/all/reservation/home/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/home/style.css";f={css:d,template:g+"/lookup/res-lookup.html",content:h+"/lookup/res-lookup"};break;case c.CANCEL_CONFIRMATION:d=i?b+"/assets/"+a+"/all/reservation/cancellation/ie_style.css":b+"/assets/"+a+"/"+e+"/reservation/cancellation/style.css";f={css:d,js:b+"/assets/"+a+"/"+e+"/reservation/cancelConfirmation.js",template:g+"/cancel-confirmation/cancel-confirmation.html",content:h+ 4153"/cancel-confirmation/cancel-confirmation",checkElmId:c.CANCEL_TEMPLATE};break;case c.CURRENCY_CONVERTER:f={css:b+"/assets/"+a+"/all/reservation/currency-converter/style.css",js:b+"/assets/"+a+"/reservation/currency-converter.js",template:g+"/currency-converter/currency-converter.html",content:h+"/currency-converter/currency-converter"}}return f}}}
4153(htz,$,htz.res.config.ReservationConstants);"function"==typeof define&&define.amd&&define("res/res-resource-config",[],function(){return htz.web.res.config.ResourceConfig}); 4154window.checkHertzNameSpace("htz.web.res.initiator");htz.web.res.initiator.ResInitiator=function(a,b,c){return{initiate:function(){c.configure({rotar:htz.routers.res.ReservationRotar,resourceConfig:htz.web.res.config.ResourceConfig});var d=new (Backbone.Router.extend(a));Backbone.history.start({root:a.getRoot()});b.configure({router:d})}}}(htz.res.config.RouteConfig,htz.utils.config.UtilConfig,htz.res.config.ReservationConfig);htz.web.res.initiator.ResInitiator.initiate(); 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231/* EOF */
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.