var Accommodation=(function(){var c={};var d={};var b={};var a;var f=function(j,h,n,q,k){q.empty();var m=c[h].hotelInfos;var o=null;var p=null;jQuery.each(m,function(){if(this.special=="localResidence"){o=this;p=this.id;return false}});if(o!=null){q.append(jQuery("").attr("value",o.id).text(""))}for(var l=0;l").attr("value",g.id).text(g.name))}if(k){a.setupTransportationRoutes({supplierId:j,activityId:h,agencyId:n,hotelId:q.val(),routeSelectionContextData:k})}};var e=function(h){var g;h.done(function(i){g=i});return g};a={loadHotels:function(l){var i=jQuery(l.hotelSelectSelector);if(!b[l.activityId]||b[l.activityId].state()=="rejected"){var h=jQuery.Deferred();var k=!d[l.supplierId];var g={supplierid:l.supplierId,activityid:l.activityId,wantroutedata:k};var j=false;setTimeout(function(){j=true;h.reject()},30*1000);jQuery.post(baseurl+"externalservlet?action=GETTRANSPORTATIONDATA_JSONP",g,null,"jsonp").done(function(n){if(j){return}if(n.errorMessage){alert("Failed to retrieve hotel list: "+n.errorMessage);h.reject();return}var m=n.dataOfActivityById&&n.dataOfActivityById[l.activityId];var o=n.routeData;if(!m||(k&&!o)){h.reject();return}c[l.activityId]={hotelInfos:m.hotelInfos,routeInfos:m.routeInfos};if(k){routeData={};jQuery.each(o,function(q){var p=this;routeData[q]={hotelLinkMap:p.hotelLinkMap,hotelInfoMap:p.hotelInfoMap}});d[l.supplierId]=routeData}h.resolve(true)});b[l.activityId]=h}if(b[l.activityId].state()=="pending"){i.empty();i.append(jQuery("").text("-- Loading --"));i.prop("disabled",true)}b[l.activityId].done(function(){f(l.supplierId,l.activityId,l.agencyId,i,l.routeSelectionContextData);i.prop("disabled",false)})},setupTransportationRoutes:function(k){var i=k.routeSelectionContextData;jQuery(i.routesContainerSelector).hide();jQuery.each(i.routeSelectorMap,function(l,m){if(!m){return}jQuery(m).hide()});if(!k.hotelId){return}var h=c[k.activityId];var j=d[k.supplierId];var g=false;jQuery.each(h.routeInfos,function(n,o){if(k.agencyId!=0&&!o.agencyEnabled){return}if(j[o.id]){var p=j[o.id].hotelLinkMap[k.hotelId]||k.hotelId;var l=j[o.id].hotelInfoMap[p];if(l){if(l.notServicing){return}o=jQuery.extend({},o,l)}}console.log(" > ELA looking for routeInfo.id: "+o.id);var m=i.routeSelectorMap[o.id];if(m){console.log(" > ELA showing selector: "+m);jQuery(m).show();g=true}});if(g){jQuery(i.routesContainerSelector).show()}}};return a})();var accommodation_loadHotels=Accommodation.loadHotels;var accommodation_setupTransportationRoutes=Accommodation.setupTransportationRoutes;