PageSourceSearch

https://www.hertz.nu/rentacar/assets/1787068635827/all/reservation/start.js

js hertz.nu collected 2026-10-07 03:58:26 UTC 327,670 bytes, 4,231 lines download raw bytes

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.