(function(){var A=window.$_hotel={};A.init=function(B){this.data=B;this.data.getPricesCount=0;if(B.hotel_404){A.timeoutRedirect();return false}$u.yield(function(){A.setAndCheckImages();A.rearrangeLayout();
A.setupUserTools();A.collapseFeatureList()});$u.yield(function(){A.setupGrid();A.setImgClicks();A.countGetPriceClicks()});$u.yield(function(){A.newRequest();A.makeMap()});$u.delay(100,function(){A.track()
})};A.track=function(){$u.track([{track:"div#hotel_map a",event:"click",cat:"Hotel Page",act:"Opened Hotel Map"},{track:"div#sideBarTools p.propertyThumbs a img",event:"click",cat:"Hotel Page",act:"Opened Hotel Photo"}])
};A.no_avail_track=function(){var B=this.data.getPricesCount;$u.trackNow(["Hotel Results","No available rooms","User has searched "+B+" times",B])};A.countGetPriceClicks=function(){$("#userDataTools div.userToolsButton span.pseudo_button").bind("click.count",function(){A.data.getPricesCount++
})};A.rearrangeLayout=function(){$("div.propertyImages").appendTo("div#sideBarTools");$("div#sideBarTools").append('<div class="propertyFeatures"><h2>Features</h2></div>');$("ul.propertyFeatures").appendTo("div.propertyFeatures");
if($("ul.propertyFeatures").children().length==0){$("div.propertyFeatures").css({display:"none"})}if($("p.propertyThumbs a").length==0){$("div.propertyImages").css({display:"none"})}};A.setupUserTools=function(){var B=$("div#userDataTools");
B.insertBefore("div.propertyDescription");B.css({display:"block"})};A.collapseFeatureList=function(){var C=$c.defaults.sidebarPropFeatures;var B=$("ul.propertyFeatures");var F=B.children();var E=F.length;
if(E>C){for(var D=C;D<E;D++){$(F[D]).addClass("extraFeature")}var H='<a href="javascript:void(0);" class="featureListShowMore">'+$txt.hotel.showMoreFeaturesLink+"</a>";B.after(H);var G=function(I){return function(){$("li.extraFeature").css({display:"list-item"});
$(this).css({display:"none"})}}(this);$("a.featureListShowMore").click(G)}};A.timeoutRedirect=function(){var H=$("span#hotel_404_redirect_time");var C=10;var G=C;var B=$("div.breadCrumb div.bc_Inner a");
var E=$(B[B.length-1]).attr("href");for(var F=0;F<=C;F++){var D=function(I){H.text(I)};if(F==C){D=function(){location.href=E}}$u.delay(1000*F,D,G);G=G-1}};A.setupRoomDesc=function(){var B=$("td.roomType span");
B.each(function(){var D=$(this);var C={x:Math.round(D.offset().left),y:Math.round(D.offset().top),w:Math.round(D.width()),h:Math.round(D.height())};var F="desc_"+D.text().toLowerCase().replace(/\s+/g,"-").replace(/[^a-zA-Z0-9\-]/g,"");
var E=$("div#"+F);var G=$("div.hotel_roomType");E.appendTo("body");D.mouseenter(function(){E.css({left:C.x-50+"px",top:C.y+C.h+10+"px",display:"block"})});D.mouseleave(function(){E.css({display:"none"})
})})};A.makeMap=function(){if(this.data.latitude==0){this.mapGeocode()}else{this.createMap({x:this.data.longitude,y:this.data.latitude})}};A.mapGeocode=function(){var C=$("p.propertyAddress").text()+", "+$txt.general.geoCodeAppend;
if(GBrowserIsCompatible()){var G=null;var F=new GClientGeocoder();var B=null;var E=this;var D=function(H){E.createMap(H)};F.getLatLng(C,function(H){if(H==null){return false}else{D(H)}})}};A.createMap=function(E){$("div.propertyImages").before('<div class="propertyMap"><h2>Location</h2><div id="hotel_map"></div></div>');
var D="214x180";var F="14";var C="http://maps.google.com/staticmap?maptype=mobile&sensor=false";C+="&key="+this.data.apiKey;C+="&zoom="+F+"&size="+D;C+="&center="+E.y+","+E.x;$('<div id="zoom_map" style="display:none;">'+$txt.hotel.loadingMap+"</div>").appendTo("body");
$("div#hotel_map").html('<a href="#zoom_map" title="'+$txt.hotel.mapClicker+'">\
			<img src="'+C+'" alt="Hotel map" />\
			<span class="marker_shadow"></span>\
			<span class="marker"></span>\
			</a>');
var B=$c.urls.contentImgs+$c.urls.fancyZoomImgs;$("div#hotel_map a").fancyZoom({directory:B,width:700,height:500});$("div#hotel_map a").click(function(){$u.yield(A.loadMapScripts,E)})};A.loadMapScripts=function(B){$u.loadScript("/Content/js/lib/google-jsapi.js","gloader",function(){gloader.load("maps","2",{"callback":function(){$u.loadScript("/Content/js/lib/maps_markermanager_1.1.js","MarkerManager",function(){$u.delay(900,A.loadLargeMap,B)
})}})});$(window).resize(function(){GUnload()})};A.loadLargeMap=function(D){if(typeof A.map!=="undefined"){$("div#hotel_large_map").remove();A.map=null;GUnload()}$("div#zoom_content").html('<div id="hotel_large_map"></div>');
A.map=new GMap2(document.getElementById("hotel_large_map"));$t.createUI(A.map);var B=new GLatLng(D.y,D.x);A.map.setCenter(B,16);var C=new GIcon();C.image=$c.urls.contentImgs+"map-icon.png";C.shadow=$c.urls.contentImgs+"map-icon-shadow.png";
C.iconsize=new GSize(24,33);C.shadowsize=new GSize(38,33);C.iconAnchor=new GPoint(11,34);C.infoWindowAnchor=new GPoint(15,7);A.map.addOverlay(new GMarker(B,{icon:C}))};A.setImgClicks=function(){var D=$("p.propertyThumbs a");
var B=D.length;var E=Math.floor(Math.random()*B);$("div.propertyDescription h2").after('<div class="fullPropertyImage"></div>');var C=$(D[E]).attr("href");if(typeof C!="undefined"){$("div.fullPropertyImage").html("<img src=\""+C+'" onerror="$_hotel.image404(this)" />')
}else{$("div.fullPropertyImage").css({display:"none"})}$('<div id="show_img" style="display:none;"></div>').appendTo("body");var F=$txt.hotel.picClickTitle;D.each(function(){var H=$(this);H.attr({"title":F});
var G=H.attr("href");H.attr({"rel":G});H.removeAttr("href");H.click(function(){$t.ajaxFBObj.show(H,"","med","");var I=H.attr("rel");var J=$("<img src=\""+I+'" />');$("div#show_img").html(J);J.load(function(){H.attr({"href":"#show_img"});
var K=$c.urls.contentImgs+$c.urls.fancyZoomImgs;H.fancyZoom({directory:K,scaleImg:true});$u.delay(100,function(){H.trigger("click")});$t.ajaxFBObj.hide()});H.unbind();H.bind("click",function(){var K=$("<img src=\""+I+'" />');
$("div#show_img").html(K)})})})};A.setAndCheckImages=function(){var B=$("p.propertyThumbs a img");B.each(function(){var C=$(this);C.one("error",function(){A.image404(C)});C.attr({"src":C.attr("rel")})})
};A.image404=function(C){var B=$(C).parent();B.css({display:"none"})};A.setupGrid=function(){$("div.propertyDescription").before('<div class="gridHeight"></div>')};A.newRequest=function(){this.data.ajax={};
this.data.ajax.url=$c.urls.propertyData;this.data.ajax.reqCount=0;this.data.ajax.Response=[];this.data.highestPAXCount=0;this.data.Dates={};this.getGridData()};A.getGridData=function(){$t.ajaxFBObj.show("div.gridHeight","centre","big","#FFF");
var B=$_userState.current;this.data.ajax.url+="?"+this.data.propIDs;this.data.ajax.url+="adults="+B.adults;this.data.ajax.url+="&children="+B.children;this.data.ajax.url+="&infants="+B.infants;this.data.ajax.url+="&checkIn="+B.checkIn[0];
this.data.ajax.url+="&checkOut="+B.checkOut[0];this.data.ajax.url+="&currencyid=1";this.doAJAX()};A.newUrl=function(){this.data.ajax.url=$c.urls.propertyData;this.data.ajax.url+="?"+this.data.propIDs;this.data.ajax.url+="adults="+this.data.adults;
this.data.ajax.url+="&children="+this.data.children;this.data.ajax.url+="&infants="+this.data.infants;this.data.ajax.url+="&checkIn="+this.data.checkIn;this.data.ajax.url+="&checkOut="+this.data.checkOut;
this.data.ajax.url+="&currencyid=1"};A.doAJAX=function(){var B=this.data.ajax.url;var C=this;$.ajax({url:B,type:"GET",dataType:"json",success:function(D){C.data.ajax.Response[C.data.ajax.reqCount]=D;if(D.MoreResults==true&&yData.reqCount==0){C.startGridTable();
C.data.ajax.url=C.data.ajax.url+"&searchid="+D.SearchId;C.doAJAX()}else{if(D.MoreResults==true&&C.data.ajax.reqCount>0){C.newUrl();C.data.ajax.url=C.data.ajax.url+"&searchid="+D.SearchId;C.doAJAX()}else{if(D.MoreResults==false&&C.data.ajax.reqCount>0){C.ajaxCompleted()
}else{if(D.MoreResults==false&&C.data.ajax.reqCount==0){C.startGridTable();C.ajaxCompleted()}}}}C.appendGridData(D.RoomRates);C.data.ajax.reqCount++},error:function(F,E,D){$u.ajaxFail("div.gridHeight")
}})};A.ajaxCompleted=function(){this.data.ajax.allDone=true;$t.ajaxFBObj.hide();$u.yield(A.setupRoomDesc)};A.startGridTable=function(){$("table.propertyGrid").remove();var M='<table class="propertyGrid" cellpadding="0" cellspacing="0" border="0">';
var L=$_userState.current;var E=$c.date.millisecondsInDay();var D=$c.date.dayNames;var I=$c.date.monthNames;M+='<tr class="gridHeader"><td colspan="2" class="roomDescHeader"><span>'+$txt.hotel.roomDescHead+"</span></td>";
M+='<td class="maxGuestHeader"><span class="maximum">'+$txt.hotel.maximum+'</span> <span class="guests">'+$txt.hotel.guests+"</span></td>";var N=L.checkIn[1].getTime();var P=$_userState.current.nights;
var O=$c.defaults.priceViewColumns;O=(P>O)?P:O;for(var K=0;K<O;K++){var H=new Date(N+(K*E));var B=H.getDate();var F=D[H.getDay()];var G=I[H.getMonth()];var C="";C='<span class="dateDayName">'+F+"</span> ";
C+='<span class="dateNum">'+B+"</span> ";C+='<span class="dateMonth">'+G+"</span>";var J="";if(K<L.nights){J="selectedNight"}else{J=""}M+="<td class=\""+J+'">'+C+"</td>"}M+="</tr></table>";$("div.gridHeight").html(M)
};A.appendGridData=function(Y){Y=A.sortData(Y);var G=Y.length;var L="";var F=null;var C=0;var X=$_userState.current;var R=$c.defaults.priceViewColumns;R=(X.nights>R)?X.nights:R;for(var V=0;V<G;V++){var T="";
F=Y[V];var M=false;for(var H in F.NightlyRates){if(F.NightlyRates[H]!=0){M=true;break}}if(!M){continue}else{C++}var d=F.Name;var P=F.MaximumGuests;var Z;if(P<2){Z="guest"}else{Z="guests"}var S=0;var B=$_userState.current.nights;
var E="";var D="";var J=R;while(J--){if(F.FreeNights[J]){D="hasFreeNights";break}}for(var O=0;O<B;O++){var K=F.NightlyRates[O];var N=F.FreeNights[O];if(K>0){if(!N){S+=K}E="bookable"}else{S=false;E="";break
}}L+="<tr class=\""+T+D+" "+E+'">';L+='<td class="roomType"><span>'+d+"</span></td>";var X=$_userState.current;var a="";if(S!==false){a="<a href=\""+F.BookingUrl+'" title="'+$txt.general.currencySymbol+S+" - "+$txt.hotel.bookNowLink+' "><span class="inner"><span class="bookText">'+$txt.hotel.bookNowLink+"</span> <span>"+$txt.general.currencySymbol+S+"</span></span></a>"
}else{a='<span class="cant_book" title="'+$txt.hotel.unavailRow+'"><span>N/A</span></span>'}L+='<td class="roomBookLink">'+a+"</td>";L+='<td class="roomGuests"><span class="guests_'+P+'" title="'+$txt.hotel.maxGuests+P+" "+Z+'"><span>'+P+"</span></span></td>";
var Q=$txt.general.currencySymbol;var c=$txt.general.freeText;for(var U=0;U<R;U++){var b=F.NightlyRates[U];var N=F.FreeNights[U];var W="";if(U<B){W="selectedNight"}else{W=""}if(b==0){b='<td class="gridData sold '+W+'"  title="'+$txt.hotel.unavailCell+'"><span class="soldText">Sold</sold></td>'
}else{if(b<0){var I=b*-1;b='<td class="gridData minNights '+W+'"  title="'+$txt.hotel.minNights+'"><span class="minNights">Min '+I+"</span></td>"}else{if(N===true){b='<td class="gridData freeNight '+W+'"><span class="bg"><b>'+c+"</b></span></td>"
}else{b='<td class="gridData '+W+'">'+Q+b+"</td>"}}}L+=b}L+="</tr>"}if(C!=0){$("table.propertyGrid").append(L);$("table.propertyGrid").after('<div class="priceDisclaimer">'+$txt.hotel.guestsDisclaimer+"</div>")
}else{$("table.propertyGrid").css({display:"none"});$("table.propertyGrid").after('<div class="noRoomAvailable"><b>'+$txt.hotel.noRoomAvailable+"</b></div>")}if(this.data.ajax.allDone==true){this.initialBuildComplete()
}};A.initialBuildComplete=function(){this.showBookableTotals();this.updateGuestCount($_userState.current.totalGuests)};A.showBookableTotals=function(){var E=$("table.propertyGrid tr.bookable");var D=$("table.propertyGrid tr").length-1;
var B=E.length;if(B==0){A.no_avail_track();return false}var G;if(B>0&&B<D){var F=17;$("tr.userToolsRow").after('<tr class="availSep"><td colspan="'+F+'"></td></tr>');G=true}else{G=false}for(var C=0;C<B;
C++){var H=E[C];if(G){$("tr.availSep").before(H)}}};A.updateGuestCount=function(C){var G=$("table.propertyGrid tr.bookable");var H=$_userState.current;var B=G.length;for(var E=0;E<B;E++){var D=$(G[E]);
var F=parseInt(D.children("td.roomGuests").text());if(F<C){D.addClass("guestCountExceeded");D.children("td.roomBookLink").append('<span class="maxGuestsNotice" title="'+$txt.hotel.guestsExceeded+'"><span>'+$txt.hotel.guestsExceeded+"</span></span>")
}else{D.removeClass("guestCountExceeded");D.children("td.roomBookLink").children("span.maxGuestsNotice").remove()}}};A.sortData=function(C){var B=function(F,E){var D=F.FreeNights.length;var G=false;var I=false;
while(D--){if(F.FreeNights[D]){G=true}if(E.FreeNights[D]){I=true}}if(G&&!I){return -1}if(I&&!G){return 1}var H=[F.Name,E.Name];H.sort();if(H[0]==F.Name){return -1}else{return 1}};C.sort(B);return C}})()

