!function(){"use strict";var a=window.location.href;a.indexOf("#")!==a.indexOf("#!")&&(window.location.href=a.replace("#","#!")),angular.module("lodge-sales",["angular-carousel","ui.router","lodge","ui.bootstrap","ngAnimate","angular-loading-bar","openlayers-directive","leaflet-directive","pascalprecht.translate"]),angular.module("lodge",["ui.router","ui.bootstrap.datepicker"]),angular.module("lodge-sales").run(["$rootScope","$injector","$log",function(a,b,c){var d;try{d=b.get("$analytics")}catch(a){return void c.warn("$analytics not available")}a.$on("lodgeSearchQuery",function(a,b){var c="/hotels/recherche/"+_.str.slugify(b.destination.country.name)+"/"+_.str.slugify(b.destination.name);d.pageTrack(c)}),a.$on("lodgePropertyView",function(a,b){var e="/hotels/"+_.str.slugify(b.address.country.code||"xx")+"/"+_.str.slugify(b.address.locality.name||"xx")+"/"+_.str.slugify(b.name);c.debug("$analytics.pageTrack",e),d.pageTrack(e)}),a.$on("lodgeBookCartSaved",function(a,b){console.log("lodgeBookCartSaved:event");var c="/checkout/",e=b.items[0]["@type"].toLowerCase();switch(e){case"air":c+="air";break;case"stayitem":c+="stay";break;case"omra":c+="omra";break;case"haj":c+="hajj";break;case"vo":c+="voyages-organisés";break;default:c+=e}d.pageTrack(c)})}]),angular.module("lodge").config(["datepickerConfig","datepickerPopupConfig",function(a,b){angular.extend(a,{showWeeks:!1,dayFormat:"d",startingDay:1,minDate:new Date,maxDate:moment().add(18,"months").toDate(),maxMode:"month"}),b.toggleWeeksText=null,b.showButtonBar=!1}]),angular.module("lodge-sales").config(["settings","$translateProvider",function(a,b){b.translations(a.i18n.lang,a.i18n.strings),b.preferredLanguage(a.i18n.lang)}]),angular.module("lodge-sales").config(["$sceProvider","$stateProvider","$urlRouterProvider","$httpProvider","$locationProvider",function(a,b,c,d,e){var f={blank:"/recherche",search:"/recherche/:country/:destination?from&to&guests&bmin&bmax&rating&hotelName&sort&order",view:"/:country/:location/:slug,:propertyCode?from&to&guests",params:{from:"du",to:"au",guests:"chambres",rating:"categorie",hotelName:"hotel",sort:"tri",order:"ordre"}};a.enabled(!1),e.hashPrefix("!"),b.state("blank",{url:f.blank,templateUrl:"hermes-lodge-search",controller:"lodge_SearchCtrl"}).state("search",{url:f.search,templateUrl:"hermes-lodge-search",controller:"lodge_SearchCtrl"}).state("view",{url:"/hotel/:propertyCode?from&to&rooms",templateUrl:"hermes-lodge-view",controller:"lodge_ViewCtrl",reloadOnSearch:!1}).state("viewSlug",{url:f.view,templateUrl:"hermes-lodge-view",controller:"lodge_ViewCtrl",reloadOnSearch:!1}),c.otherwise(f.blank),d.defaults.headers.common.Accept="application/json"}]),angular.module("lodge").controller("lodge_MapCtrl",["$scope","$log","$state","$stateParams","settings","$http","$location","$rootScope",function(a,b,c,d,e,f,g,h){function i(b,c){a.selectedHotel=c.model.hotel}var j=[];a.result.items.forEach(function(a){void 0!==a.coordinates&&j.push({lat:a.coordinates[0],lng:a.coordinates[1],compileMessage:!1,message:a.name,hotel:a})}),angular.extend(a,{center:{lat:j[0].lat,lng:j[0].lng,zoom:10},markers:j,selectedHotel:!1}),a.$on("leafletDirectiveMarker.click",i)}]),angular.module("lodge").controller("lodge_QuoteCtrl",["$scope","$log","$state","$stateParams","$location","$http","lodgeQuery","$window","settings","$timeout","$filter","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(b,c){if(b!=c){for(var d=a.propertyQuery.rooms;d.length<b;)d.push({adults:2,children:0,ages:[]});d.length=b}}function n(b){for(var c=b.children,d=b.ages;d.length<c;)d.push({}),a.propertyQuery.childCount++;for(;d.length>c;)d.pop(),a.propertyQuery.childCount--}function o(b,c){b.preventDefault(),b.stopPropagation();var d=a.toggleCalendars[c];a.toggleCalendars={},a.toggleCalendars[c]=!d}function p(){var b=a.propertyQuery,c=g.toLocation(b,!0),d=g.toApi(b,!0);e.search(c.search),a.status="loading",f.get(i.quotes.index,{params:d}).success(q).error(r)}function q(b){if(console.log("onQuotesLoaded.....................",b),b=JSOG.decode(b),0===b.quotes.length)return a.emit("lodgeRoomsUnavailable",a.propertyQuery),void(a.stay={});for(var c=b.quotes.reduce(s,[]),d=b.orderTemplate,e=d.trip.segments[0].rooms,f=e.length;f--;)d.items.unshift({type:"lodge",room:e[f],choices:t(e[f],c)});angular.extend(a,{stay:{checkin:d.trip.segments[0].checkin,checkout:d.trip.segments[0].checkout},cart:d,currentItem:d.items[0],status:"found"})}function r(){b.debug("onQuotesError",arguments),a.$emit("lodgeQuoteError",a.propertyQuery),a.status="error"}function s(a,b){for(var c,d=b.product.occupancy,e=b.product.roomType,f=b.product.board,g=a.length;g--&&!c;)a[g].occupancy===d&&(c=a[g]);void 0===c&&(c={occupancy:d,rooms:{}},a.push(c));var h=c.rooms[e.name];return h||(c.rooms[e.name]={room:e,boards:{}},h=c.rooms[e.name]),h.boards[f.code]||(h.boards[f.code]={board:f,quotes:[]}),h.boards[f.code].quotes.push(b),a}function t(a,b){for(var c,d=a.occupancy,e=b.length;e--&&!c;)if(b[e].occupancy===d)return b[e].rooms;return null}function u(b){var c=["type","room","choices"];angular.forEach(b,function(a,d){-1===c.indexOf(d)&&delete b[d]}),a.currentItem=b,a.readyToBook=!1}function v(b,c){angular.extend(b,c);var d=a.cart.items.filter(function(a){return"lodge"===a.type&&void 0===a.product});a.currentItem=d[0],a.readyToBook=0===d.length,l.okToBook=!0,w()}function w(){for(var b=a.cart.items,c=b.length,d=0;c--;)d+=100*b[c].totals.total;a.cart.totals.total=d/100}function x(){a.cart.trip.segments[0].property.name=d.slug,a.cart.trip.segments[0].property.address={country:d.country,location:d.location},a.cart.items.forEach(function(a){delete a.choices,a.room&&(a.travellers=a.room.guests)});var c=JSOG.encode(a.cart);c.items.forEach(function(a){delete a.room}),f.post("/carts",c).then(function(b){angular.isArray(b.data)&&(b.data=b.data[0]),h.location.href="/ngapps/checkout#/"+b.data._id,a.$emit("lodgeBookCartSaved",b.data)},function(){b.error("cart saving failed",arguments),a.status="error",a.error="Un problème est survenu lors du passage à la page paiement."})}b.debug("in_lodge_QuoteCtrl",l.property,d);var y=angular.extend({maxStay:30,minStay:1},i.options);l.okToBook=!1,y.minCheckin=moment().startOf("day").add(y.daysToMinCheckin||0).toDate(),y.maxCheckout=moment(y.minCheckin).add(y.monthsToMaxCheckout||10).toDate(),y.maxCheckin=moment(y.maxCheckout).subtract(y.minStay,"days"),d.from&&d.to?(a.status="loading",g.fromStateParam(d).then(function(c){b.debug("lodge_QuoteCtrl......",c),a.$emit("lodgePropertyQuery",c),a.propertyQuery=c;var d=g.toApi(c,!0);b.debug("lodge_QuoteCtrl",d),f.get(i.quotes.index,{params:d}).success(q).error(r)})):(a.status="blank",a.propertyQuery={property:d.propertyCode,childCount:0,roomCount:1,rooms:[{adults:2,children:0,ages:[]}]}),angular.extend(a,{options:y,getQuotes:p,promptForOffer:u,chooseOffer:v,toCheckout:x,childCountUpdated:n,toggleCalendar:o,toggleCalendars:{}}),a.$watch("propertyQuery.roomCount",m)}]),angular.module("lodge").controller("lodge_SearchFormCtrl",["$scope","$http","$window","$location","$log","settings","lodgeQuery","$rootElement","$document",function(a,b,c,d,e,f,g,h,i){function j(){var b;a.date2&&(b=a.date2.split("--")),a.query&&(a.query.checkin=b[0],a.query.checkout=b[1])}function k(){var b;a.date1&&(b=a.date1.split("--")),a.query&&(a.query.checkin=m(b[0]),a.query.checkout=m(b[1]))}function l(b){var c=0;angular.forEach(a.query.rooms,function(a){c+=a.adults}),a.roomInput="chambres "+a.query.roomCount+" ,Adultes "+c+" ,Enfant "+a.query.childCount,a.roomDiv=!a.roomDiv}function m(a){var b=a.split("/");return new Date(b[2],b[1]-1,b[0]).toLocaleDateString("en-US")}function n(b,c){if(e.debug("roomCountUpdated",b,c),b!=c){for(var d=a.query.rooms;d.length<b;)d.push({adults:2,children:0,ages:[]});for(;d.length>b;)d.pop()}}function o(b){e.debug("childCountUpdated",b),console.log("---------","childCountUpdated",b,b.ages);var c=b.children,d=b.ages,f=d.length;for(a.query.childCount-=f;d.length<c;)d.push({});for(;d.length>c;)d.pop();a.query.childCount+=c}function p(a){return b.get(f.destinations.search.replace(":term",a)).then(function(a){return console.log(a),a.data})}function q(){var b=a.query;if(void 0!==b.destination){var e=g.toLocation(b);if(console.log("kdfjlkdjflkjdkfj",b,a),"search"===a.context){d.path("/recherche"+e.path);var h=d.search();h=angular.extend(h,e.search),d.search(e.search)}else{var i=[];angular.forEach(e.search,function(a,b){if("guests"==b)for(var c=0;c<e.search.guests.length;c++)i.push(b+"="+e.search.guests[c]);else i.push(b+"="+e.search[b])}),c.location.href=f.lodge.salesApp+"#!/recherche"+e.path+"?"+i.join("&")}}}function r(b,c){b.preventDefault(),b.stopPropagation(),a.toggleCalendars[c]=!a.toggleCalendars[c]}var s=moment().startOf("day"),t=angular.element(h.find("meta[name=description]")[0]);t.attr("content","hotel"),t.attr("charset","UTF-8");var u={adults:[1,2,3,4],children:[0,1,2,3,4],ages:[1,2,3,4,5,6,7,8,9,10,11],roomCount:[1,2,3,4,5,6],minCheckin:s.toDate(),maxCheckin:moment(s).add(12,"months").toDate(),checkin:{minDate:s.toDate(),minMonth:moment(s).startOf("month").toDate(),maxDate:moment(s).add(1,"years").toDate(),initDate:"options.checkin.minMonth"},checkout:{initDate:"options.checkout.minMonth"}};a.date1="",a.date2="",a.roomDiv=!1,a.roomInput="Chambre - Adultes ...",i.bind("click",function(b){"inputDivRooms"===b.target.id||"guests__inputs divRooms ng-scope"===b.target.className||!0!==a.roomDiv||b.target.classList.contains("divRoomsInputs")||b.target.nextSibling.classList.contains("divRoomsInputs")||(a.roomDiv=!a.roomDiv,a.$apply())}),u.checkout.minDate=moment(s).add(1,"days").toDate(),u.checkout.minMonth=moment(u.checkout.minDate).startOf("month").toDate(),u.checkout.initDate="options.checkout.minMonth",u.checkout.maxDate=moment(u.checkout.minDate).add(1,"years").toDate(),a.context,f.lodge.standaloneSearchForm&&(a.query={childCount:0,roomCount:1,rooms:[{adults:2,children:0,ages:[]}],rating:[]}),a.$watch("query.roomCount",n),angular.extend(a,{destinations:p,SimplePickerChange:k,roomChange:l,options:u,search:q,childCountUpdated:o,toggleCalendar:r,toggleCalendars:{},changesDateSearch:j}),e.debug("lodge_SearchFormCtrl: done")}]),angular.module("lodge").controller("lodge_SearchCtrl",["$scope","$log","$state","$stateParams","$http","lodgeQuery","$window","$location","$timeout","settings","$translate","$rootElement",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(b){b.value=!b.value;var c=a.filters.categories,d=[];for(var e in c)"any"!==e&&!0===c[e].value&&d.push(e);0===d.length?h.search("rating",null):h.search("rating",d.join("+"))}function n(c){a.query=c,C=a.query,b.debug("query",C);for(var d in a.filters.categories)C.rating.indexOf(d)>-1&&(a.filters.categories[d].value=!0);C.bmin&&(a.filters.budget=C.bmin+500),a.$emit("lodgeSearchQuery",C),p()}function o(c){b.error(c),a.error=c}function p(){var b=a.query;console.log("settings.quotes.index:",j.quotes.index),b.limit=b.limit||E,a.status="searching",b.api||(b.api=f.toApi(b),b.sent=0),b.skip>0&&(b.api.skip=b.skip),e.get(j.quotes.index,{params:b.api}).success(q).error(s)}function q(b,c){var d=a.query;if(d.sent++,202===c)d.sent<40?D=i(p,1e3):r();else if(205===c)a.status="empty",delete d.sent,delete d.api;else if(200===c){var e=JSOG.decode(b),g=f.toLocation(d);angular.forEach(e.items,function(a){t(a,g)}),d.skip>0?Array.prototype.push.apply(a.result.items,e.items):a.result=e,a.hasMore=e.links&&void 0!==e.links.next,0===a.result.items.length?(a.status="empty",delete d.sent,delete d.api):a.status="found"}}function r(){b.error(new Error("search result timeout")),a.status="timeout",delete C.sent,delete C.api}function s(){b.error("Search Error",arguments),a.status="error"}function t(a,b){a.links=a.links||{},a.links.self="#!/"+_.str.slugify(a.address.country.name||a.address.country.code)+"/"+_.str.slugify(a.address.locality.name)+"/"+_.str.slugify(a.name)+","+a.code,a.sref=angular.extend({country:_.str.slugify(a.address.country.name||a.address.country.code),location:_.str.slugify(a.address.locality.name),slug:_.str.slugify(a.name),propertyCode:a.code},b.search)}function u(){if(!a.hasMore||["searching","empty"].indexOf(a.status)>-1)return!1;a.query.skip=a.result.items.length,a.query.limit=E,p()}function v(b){a.viewMode="map"===b?"map":"list"}function w(a){h.search("order",a.order||null),h.search("sort",a.code)}function x(a){var b=parseInt(a,10);if(angular.isNumber(b)){var c=Math.max(b-500,0);h.search("bmin",c),h.search("bmax",c+1e3)}}function y(a){a.length>1&&h.search("hotelName",a)}function z(){a.query.checkout=moment(a.query.checkin).add(a.query.nights,"days").format("YYYY-MM-DD")}function A(){a.query.nights=moment(a.query.checkout).diff(moment(a.query.checkin),"days")}b.info("lodge_SearchCtrl: init",d);var B=angular.element(l.find("meta[name=description]")[0]);B.attr("content","machin -----"),B.attr("charset","UTF-8");var C,D,E=30;a.countryCode=d.country;var F=[{code:"recommended",label:k.instant("recommended"),checked:!1},{code:"price",label:k.instant("sort-price-desc"),order:"desc",checked:!1},{code:"price",label:k.instant("sort-price-asc"),order:"asc",checked:!1},{code:"category",label:k.instant("sort-category-desc"),order:"desc",checked:!1},{code:"category",label:k.instant("sort-category-asc"),order:"asc",checked:!1}],G=[{code:"recommended",label:"Recommandé",checked:!1},{code:"price",label:"Prix décroissant",order:"desc",checked:!1},{code:"price",label:"Prix croissant",order:"asc",checked:!1},{code:"category",label:"Catégorie décroissante",order:"desc",checked:!1},{code:"category",label:"Catégorie croissante",order:"asc",checked:!1}],H={categories:{any:{label:k.instant("all"),value:!0},"1ST":{label:k.instant("1 star"),value:!1},"2ST":{label:k.instant("2 stars"),value:!1},"3ST":{label:k.instant("3 stars"),value:!1},"4ST":{label:k.instant("4 stars"),value:!1},"5ST":{label:k.instant("5 stars"),value:!1}}};if(angular.extend(a,{context:"search",loadMore:u,sortChange:w,budgetChange:x,hotelNameChange:y,categoriesChange:m,stateParams:d,nightsChanged:z,checkoutChanged:A,setViewMode:v,viewMode:"list"}),c.includes("search")?(f.fromStateParam(d).then(n,o),a.status="searching"):(a.status="blank",a.query={childCount:0,roomCount:1,rooms:[{adults:2,children:0,ages:[]}],nights:1,rating:[]}),d.sort||d.order){for(var I=0;I<F.length;I++)F[I].code===d.sort&&F[I].order===d.order&&(F[I].checked=!0,G[I].checked=!0);a.sorters=F,a.sortersfr=G}else a.sorters=F,a.sortersfr=G;if(d.rating){var J=d.rating.split("+");H.categories.any.value=!1;for(var K in H.categories)J.indexOf(K)>-1&&(H.categories[K].value=!0);a.filters=H}else a.filters=H;a.hasMore=!1}]),angular.module("lodge").controller("lodge_ViewCtrl",["$scope","$log","$state","$stateParams","settings","$sce","lodgeQuery","$http","$location","$anchorScroll","$rootScope","$timeout","$filter",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(c){b.debug("lodge_ViewCtrl: onPropertyLoaded",c),c.rating.tripAdvisor&&(c.links=c.links||{},c.links.reviews=f.trustAsUrl(t.replace(":taId",c.rating.tripAdvisor.id))),c.description?(c.summary=c.description.content,c.description=c.area?c.area.content:void 0):c.area&&(c.summary=c.area.content),c.roomInfo&&(c.description?c.description=c.roomInfo.content:c.description+=c.roomInfo.content),c.photos.forEach(function(a,b){a.href=0==b?a.href.replace("320x180","1920x1000"):a.href.replace("320x180","1200x800")}),a.property=c,a.pdfImage="https:"+c.photos[0].href;var d=[{lat:c.coordinates[0],lon:c.coordinates[1],name:c.name}];angular.extend(a,{center:{lat:c.coordinates[0],lon:c.coordinates[1],zoom:16},markers:d}),document.title=k.title=c.name+" "+c.address.locality.name,a.$emit("lodgePropertyView",c)}function o(c,d){new Error("Could not load property description.").number=d,b.error("Could not load property description.",arguments),a.error="Erreur lors du chargement de l'hotel. Veuillez réessayer plus tard"}function p(a){i.hash(a),j()}function q(){console.log("generate program as pdf"),a.loadingProgram=!0,kendo.pdf.defineFont({"DejaVu Sans":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans.ttf","DejaVu Sans|Bold":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans-Bold.ttf","DejaVu Sans|Bold|Italic":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf","DejaVu Sans|Italic":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf"}),kendo.drawing.drawDOM("#program",{template:$("#page-template").html(),paperSize:"A4",margin:"1cm",scale:.5,forcePageBreak:".page-break",multiPage:!0}).then(function(b){console.log(" ending generating pdf"),u=b;var c=m("date")(new Date,"yyyy-MM-dd");kendo.drawing.pdf.saveAs(u,"détail "+a.property.name+"-"+c+".pdf"),a.loadingProgram=!1,a.$apply()})}function r(){q()}function s(){a.loadingTarif=!0;var b=m("date")(a.currentDate,"yyyy-MM-dd");kendo.pdf.defineFont({"DejaVu Sans":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans.ttf","DejaVu Sans|Bold":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans-Bold.ttf","DejaVu Sans|Bold|Italic":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf","DejaVu Sans|Italic":"https://kendo.cdn.telerik.com/2016.1.112/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf"}),console.log(" in generate tarifs as pdf"),l(function(){kendo.drawing.drawDOM("#tarifs",{paperSize:"A4",margin:"1cm",scale:.7}).then(function(c){kendo.drawing.pdf.saveAs(c,"devis "+a.property.name+"-"+b+".pdf"),a.loadingTarif=!1,a.$apply()})},10)}b.debug("lodge_ViewCtrl: init"),console.log("in lodge view controller");var t="//www.tripadvisor.com/WidgetEmbed-cdspropertydetail?locationId=:taId&partnerId=2329B67D74EA4BE5BBF080EB6AA6B31D&lang=fr_FR&display=true",u=null;h.get(e.properties.index+"/"+d.propertyCode).success(n).error(o),angular.extend(a,{scrollTo:p,context:"search",status:"searching",generatePDF:r,loadingProgram:!1,generatePdfTarifs:s,loadingTarif:!1}),a.currentDate=new Date}]),angular.module("lodge").controller("RoomsInputCtrl",["$scope","$attrs","$log",function(a,b,c){function d(b,c){return console.log(a.$parent.$eval(b)),angular.isDefined(b)?a.$parent.$eval(b):c}function e(){return{adults:2,children:[]}}for(var f={maxRooms:d(b.maxRooms,4),maxGuests:d(b.maxGuests,8),maxChildren:d(b.maxChildren,4),maxAdults:d(b.maxAdults,4),minAdults:d(b.minAdults,1),adultAge:d(b.adultAge,12)},g={roomCount:[],childAge:[],childCount:[],adultCount:[]},h=1;h<=f.maxRooms;)g.roomCount.push(h),h++;for(h=1;h<f.adultAge;)g.childAge.push(h),h++;for(h=f.minAdults;h<f.maxAdults;)g.adultCount.push(h),h++;for(h=0;h<=f.maxChildren;)g.childCount.push(h),h++;a.options=g,a.roomCountChange=function(b){for(;this.rooms.length<b;)this.rooms.push(e()),this.childCount.push(0);for(;this.rooms.length>b;){var c=this.rooms.pop();this.hasChildren-=c.children.length}a.change()},a.childCountChange=function(b,c){for(;b.children.length<c;)b.children.push({age:void 0}),a.hasChildren++;for(;b.children.length>c;)b.children.pop(),a.hasChildren--}}]).directive("roomsInput",["$parse","$log",function(a,b){return{restrict:"EA",replace:!0,template:'<div class="rooms-input" ng-class="{ in: isOpen(), fade: animation() }" style="max-width:300px"><select class="form-control" ng-options="count as (count + \' Chambre(s)\') for count in options.roomCount" ng-required ng-model="roomCount" ng-change="roomCountChange(roomCount)" ></select><table class="table table-condensed"><tr><th>Chambre</th><th>Adultes</th><th>Enfants</th><th ng-if="hasChildren > 0">Ages des enfants</th></tr><tr ng-repeat="room in rooms"><td>{{$index + 1}}</td><td><select class="form-control input-sm" ng-options="count for count in options.adultCount " ng-model="room.adults" style="margin-bottom: 0;display: inline;width: auto;"></select></td><td><select class="form-control input-sm" ng-options="count for count in options.childCount " ng-model="childCount[$index]" ng-change="childCountChange(room, childCount[$index])" style="margin-bottom: 0;display: inline;width: auto;"></select></td><td ng-if="hasChildren > 0"><select class="form-control input-sm" ng-repeat="child in room.children" ng-options="age as (age + \' an(s)\') for age in options.childAge" ng-model="child.age" ng-required style="margin-bottom: 0;display: inline;width: auto;"></select></td></tr></table></div>',scope:{roomCount:"&"},require:["roomsInput","^ngModel","?maxRooms"],controller:"RoomsInputCtrl",link:function(a,b,c,d){function e(){a.rooms=f.$modelValue,a.rooms=f.$modelValue,a.roomCount=a.rooms.length,a.childCount=[],a.hasChildren=0;for(var b=0;b<a.rooms.length;b++)a.childCount.push(a.rooms[b].children.length),a.hasChildren+=a.rooms[b].children.length}var f=(d[0],d[1]);a.change=function(){f.$setViewValue(a.rooms),f.$setValidity("rooms",!0)},f.$render=function(){e()},e()}}}]).directive("roomsInputPopup",["$compile","$parse","$document","$position","$filter",function(a,b,c,d,e){return{restrict:"EA",require:"^ngModel",link:function(f,g,h,i){function j(a){p?p(f,!!a):m.isOpen=!!a}function k(){m.position=n?d.offset(g):d.position(g),m.position.top=m.position.top+g.prop("offsetHeight")}var l,m=f.$new(),n=!0;h.$observe("roomsInputPopup",function(a){l=m.$watch("rooms",function(){i.$render()},!0)}),f.$on("$destroy",function(){x.remove(),l(),m.$destroy()});var o,p;h.isOpen&&(o=b(h.isOpen),p=o.assign,f.$watch(o,function(a){m.isOpen=!!a})),m.isOpen=!!o&&o(f);var q=function(a){m.isOpen&&a.target!==g[0]&&m.$apply(function(){j(!1)})},r=function(){m.$apply(function(){j(!0)})},s=angular.element("<div rooms-input-popup-wrap><div rooms-input></div></div>");s.attr({"ng-model":"rooms"});var t=angular.element(s.children()[0]),u={};h.roomsInputOptions&&(u=f.$eval(h.roomsInputOptions),t.attr(angular.extend({},u))),i.$render=function(){var a=i.$viewValue?e("humanizeRooming")(i.$modelValue):"";g.html(a+' | <span class="caret"></span>'),m.rooms=i.$modelValue};var v=!1,w=!1;m.$watch("isOpen",function(a){a?(k(),c.bind("click",q),w&&(g.unbind("focus",r),g.unbind("click",r)),g[0].focus(),v=!0):(v&&c.unbind("click",q),g.bind("focus",r),g.bind("click",r),w=!0),p&&p(f,a)});var x=a(s)(m);c.find("body").append(x)}}}]).directive("roomsInputPopupWrap",function(){return{restrict:"EA",replace:!0,transclude:!0,template:"<ul class=\"dropdown-menu rooms-input-popup\" style=\"padding: 10px\" ng-style=\"{display: (isOpen && 'block') || 'none', top: position.top+'px', left: position.left+'px'}\"><li ng-transclude></li></ul>",link:function(a,b,c){b.bind("click",function(a){a.preventDefault(),a.stopPropagation()})}}}).filter("humanizeRooming",["$translate",function(a){return function(b){for(var c=0,d=0,e=b.length,f=b.length-1;f>=0;f-=1)c+=b[f].adults,d+=b[f].children.length;return d>0?a("r-rooms-a-adults-c-children",{r:e,a:c,c:d}):a("r-rooms-a-adults",{r:e,a:c})}}]),angular.module("ui.bootstrap.datepicker").controller("DatepickerController",["$scope","$attrs","$parse","$interpolate","$timeout","$log","dateFilter","datepickerConfig",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","minMode","maxMode","showWeeks","startingDay","yearRange"],function(c,e){i[c]=angular.isDefined(b[c])?e<8?d(b[c])(a.$parent):a.$parent.$eval(b[c]):h[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=h[d]?new Date(h[d]):null}),angular.isDefined(b.initDate)&&(console.log(b.initDate,c(b.initDate)),a.$parent.$watch(c("$parent.$parent."+b.initDate),function(a){console.log("initdare "+a),j.$modelValue||(i.activeDate=a?new Date(a):new Date,i.refreshView())})),a.datepickerMode=a.datepickerMode||h.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),this.activeDate=angular.isDefined(b.initDate)?a.$parent.$eval(b.initDate):new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)&&(a.activeDateId=b.uid,!0)},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$modelValue){var a=new Date(j.$modelValue),b=!isNaN(a);b?this.activeDate=a:f.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'),j.$setValidity("date",b)}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$modelValue?new Date(j.$modelValue):null;j.$setValidity("date-disabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(c,d){var e=j.$modelValue?new Date(j.$modelValue):null;return{date:c,label:g(c,d),selected:e&&0===this.compare(c,e),disabled:this.isDisabled(c),current:0===this.compare(c,new Date),classes:b.dateClasses&&a.dateClasses({date:c,mode:a.datepickerMode})||""}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$modelValue?new Date(j.$modelValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var k=function(){e(function(){i.element[0].focus()},0,!1)};a.$on("datepicker.focus",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),b.stopPropagation(),"enter"===c||"space"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate),k()}else!b.ctrlKey||"up"!==c&&"down"!==c?(i.handleKeyDown(c,b),i.refreshView()):(a.toggleMode("up"===c?1:-1),k())}}]),angular.module("lodge").filter("lodgeRating",function(){var a={"1ST":"","2ST":"","3ST":"","4ST":"","5ST":"",RSD:"Résidence",riad:"Riad",NA:""},b={"1ST":":1EST:HS:H1_5:CAMP1:HSR1:APTH:1LL:AT1:1:","2ST":":2EST:HS2:H2S:HR2:2LL:HSR2:H2_5:APTH2:AT2:CAMP2:2:","3ST":":3EST:HS3:BB3:HR3:AT3:3LL:APTH3:H3S:H3_5:3:","4ST":":4EST:SUP:4LL:APTH4:H4_5:HS4:BB4:HR4:4LUX:HRS:4:","5ST":":5EST:BB5:HIST:APTH5:5LUX:HR5:H5_5:5LL:HS5:5:",RSD:":23:24:25:",riad:":16:",NA:":-1:161:26:"};return function(c){if(!c)return"";if(c.code)for(var d in b)if(b[d].indexOf(":"+c.code+":")>-1)return a[d];return c.name||c.code}}),angular.module("lodge").filter("money",["$filter",function(a){var b={MAD:"Dh",EUR:"€",USD:"$"};return function(c,d){var e=c.split(" ");return a("number")(e[0],0)+" "+b[e[1]]}}]),angular.module("lodge").filter("rooming",["$translate",function(a){function b(b,c,d){return 1===b?a.instant(c):a.instant(d,{n:b})}return function(c){if(!angular.isArray(c)||0===c.length)return"";var d=c.reduce(function(a,b){return a+b.adults},0),e=c.reduce(function(a,b){return a+b.ages.length},0),f={rooms:b(c.length,"one-room","n-room"),adults:b(d,"one-adult","n-adult"),children:b(e,"one-child","n-child")};return e>0?a.instant("rooms-adults-children",f):a.instant("rooms-adults",f)}}]).filter("money",function(){return function(a){return angular.isString(a)&&(a=a.split(" ")),a[0]=Math.round(parseFloat(a[0])),angular.isArray(a)?a[0]+" "+a[1]:a}}).filter("guests",function(){function a(a,b,c){return 1===a?b:c.replace(":count",a)}return function(b){for(var c=0,d=[],e=b.length;e--;)b[e].age?d.push(b[e].age):c++;var f="";if(f+=a(c,"un adulte",":count adultes"),d.length>0){var g=d.map(function(b){return a(b,"1 an",":count ans")});f+=", "+a(d.length,"un enfant",":count enfants"),f+=" ("+g.join(", ")+")"}return f}}),function(){var a,b;return a={},b=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},a.encode=function(a,c,d){var e,f,g,h;h=1,g={},f=function(a){return a.__jsogObjectId||(a.__jsogObjectId=""+h++),a.__jsogObjectId},e=function(a){var c,d;return d=function(a){var b,c,d,h;if(b=f(a),g[b])return g[b].__jsogUsed=!0,{"@ref":b};d=g[b]={"@id":b};for(c in a)h=a[c],"__jsogObjectId"!==c&&(d[c]=e(h));return d},c=function(a){var b;return function(){var c,d,f;for(f=[],c=0,d=a.length;c<d;c++)b=a[c],f.push(e(b));return f}()},null==a?a:b(a)?c(a):"object"==typeof a?d(a):a};var i=e(a);for(var j in g)g[j].__jsogUsed?delete g[j].__jsogUsed:delete g[j]["@id"];return i},a.decode=function(a){var c,d;return d={},(c=function(a){var e,f;return f=function(a){var b,e,f,g,h;if(f=a["@ref"],null!=f&&(f=f.toString()),null!=f)return d[f];g={},b=a["@id"],null!=b&&(b=b.toString()),b&&(d[b]=g);for(e in a)h=a[e],"@id"!==e&&(g[e]=c(h));return g},e=function(a){var b;return function(){var d,e,f;for(f=[],d=0,e=a.length;d<e;d++)b=a[d],f.push(c(b));return f}()},null==a?a:b(a)?e(a):"object"==typeof a?f(a):a})(a)},a.stringify=function(b){return JSON.stringify(a.encode(b))},a.parse=function(b){return a.decode(JSON.parse(b))},"undefined"!=typeof module&&null!==module&&module.exports&&(module.exports=a),"undefined"!=typeof window&&null!==window&&(window.JSOG=a),"function"==typeof define&&define.amd&&define("JSOG",[],function(){return a}),a}.call(this),angular.module("lodge").factory("lodgeQuery",["$q","$http","settings",function(a,b,c){function d(a){var b=a.split(","),c=parseInt(b.shift(),10),d=b.map(function(a){return{v:parseInt(a,10)}});return{adults:c,ages:d,children:d.length}}function e(e){angular.isArray(e.guests)||(e.guests=[e.guests]);for(var f,g=moment(e.from||"invalid","YYYY-MM-DD"),h=moment(e.to||"invalid","YYYY-MM-DD"),i=e.guests.slice(),j=e.country,k=e.destination,l={rooms:[],roomCount:0,childCount:0},m=a.defer();i[0];)f=d(i.shift()),l.rooms.push(f),l.childCount+=f.children;return l.roomCount=l.rooms.length,g.isValid()&&h.isValid()&&g.isBefore(h)?(l.checkin=g.toDate(),l.checkout=h.toDate()):(l.noDates=!0,l.checkin=moment().add(7,"days").toDate(),l.checkout=moment().add(8,"days").toDate()),e.propertyCode?(l.property=e.propertyCode,m.resolve(l),m.promise):(l.rating=[],e.rating&&(l.rating=e.rating.split("+")),e.hotelName&&(l.hotelName=e.hotelName),l.sort=e.sort||"recommended",l.order=e.order||"desc",isNaN(e.bmin)||(l.bmin=parseInt(e.bmin,10),l.bmax=l.bmin+1e3),j&&k?(console.log("ehehehehehehehehehehehe",c.destinations.index),b.get(c.destinations.index+"&code="+k).success(function(a){l.destination=a,m.resolve(l)}).error(function(a){m.reject(new Error("Unknown Destination"))})):m.resolve(l),m.promise)}function f(a){return a.v}function g(a,b){var c=a.rooms.reduce(function(a,b){var c=[b.adults].concat(b.ages.map(f));return a.push(c.join(",")),a},[]),d=moment(a.checkin).format("YYYY-MM-DD"),e=moment(a.checkout).format("YYYY-MM-DD"),g={search:{guests:c,from:d,to:e}};return b||void 0===a.destination||(g.path="/"+(a.destination.country.code?a.destination.country.code:a.destination.country)+"/"+a.destination.code),g}function h(a){var b={currency:"MAD",from:moment(a.checkin).format("YYYY-MM-DD"),to:moment(a.checkout).format("YYYY-MM-DD"),guests:a.rooms.map(function(a){return[a.adults].concat(a.ages.map(f)).join(",")})};if(a.property)return b.property=a.property,b;var c=a.destination.country.toLowerCase();return angular.extend(b,{skip:a.skip||0,limit:a.limit||25,country:c,locality:a.destination.code,order:a.order||"desc",sort:a.sort||"recommended"}),a.rating&&a.rating.length&&(b.rating=a.rating.join("+")),angular.forEach(["bmin","bmax","hotelName"],function(c){a[c]&&(b[c]=a[c])}),b}return{fromStateParam:e,toLocation:g,toApi:h}}])}();