window.google=window.google||{};google.maps=google.maps||{};(function($){$.fn.MapSearch=function(options){var $this=this,$opts=$.extend({},$.fn.MapSearch.defaults,options),$proxy=Enlighten.Jasons.Site.Services.MapHelper,$map,$infoWindow,$accommodationMarkers=[],$activityMarkers=[],$featureMarkers=[],$accommodationCounter=0,$activityCounter=0,$days=[],$months=[],$featureIcon=[],$alertZoom=true,BuildAccommodationFilterList=function(){var list="";$("#MapSearchCategories ul.accommodation-list li input[type=checkbox]:checked").each(function(i,o){list+=$(o).val()+" "});return list},BuildActivitiesFilterList=function(){var list="";$("#MapSearchCategories ul.activities-list li input[type=checkbox]:checked").each(function(i,o){list+=$(o).val()+" "});return list},ClearMap=function(){for(var i in $accommodationMarkers)if($accommodationMarkers[i]!=null){$accommodationMarkers[i].setMap(null);$accommodationMarkers[i]=null}$accommodationMarkers=[]},LoadListings=function(){showLoading();$(".accommodation-activities .activities-tab.selected").length==0&&$proxy.SearchClientsForTravelGuide($opts.TownID,BuildAccommodationFilterList(),function(result,count){if($accommodationCounter==count)for(var i in result)AddAccommodationMarker(result[i]);hideLoading()},function(){},$accommodationCounter);$(".accommodation-activities .accommodation-tab.selected").length==0&&$proxy.SearchClientsForTravelGuide($opts.TownID,BuildActivitiesFilterList(),function(result,count){if($activityCounter==count)for(var i in result)AddActivitiesMarker(result[i]);hideLoading()},function(){},$activityCounter)},RemoveMarker=function(clientId){if($accommodationMarkers[clientId]!=null){$accommodationMarkers[clientId].setMap(null);$accommodationMarkers[clientId]=null}},FillDateArrays=function(){$days[0]="Sun";$days[1]="Mon";$days[2]="Tue";$days[3]="Wed";$days[4]="Thu";$days[5]="Fri";$days[6]="Sat";$months[0]="Jan";$months[1]="Feb";$months[2]="Mar";$months[3]="Apr";$months[4]="May";$months[5]="Jun";$months[6]="Jul";$months[7]="Aug";$months[8]="Sep";$months[9]="Oct";$months[10]="Nov";$months[11]="Dec"},FormatDate=function(d,html){try{var date=new Date,split=d.split("-");date.setYear(split[0]);date.setMonth(parseFloat(split[1])-1);date.setDate(split[2]);return html?$days[date.getDay()]+"<br />"+date.getDate()+" "+$months[date.getMonth()]:$days[date.getDay()]+" "+date.getDate()+" "+$months[date.getMonth()]}catch(e){console.log(e)}},HasAvailability=function(listing){return!(listing.Day1Price==0&&listing.Day3Price==0&&listing.Day3Price==0&&listing.Day3Price==0&&listing.Day4Price==0&&listing.Day5Price==0&&listing.Day6Price==0&&listing.Day7Price==0&&listing.Day8Price==0)},FormatContent=function(listing){var hasAvailability=HasAvailability(listing),content="";if(hasAvailability)content+="<div style='height: 180px; overflow: hidden !important;' id='infowindow-listing-details'>";else content+="<div style='width:350px; height: 110px; overflow: hidden !important;' id='infowindow-listing-details'>";content+="   <div style='clear: both; margin-bottom: 5px;'><strong><a href='"+listing.PartialUrl+"' style='font-size:13px; color:black;'>"+listing.TradingName+"</a></strong></div>";content+="   <span style='width:230px; float: left'>"+listing.PropertyStreet+" <br />";content+=listing.PropertySuburb?listing.PropertySuburb+"<br />":"";content+=listing.DefaultTownName+"<br />";content+=listing.PropertyPostCode?listing.PropertyPostCode+"<br />":"";content+="   </span>";if(listing.ImagePath!=""&&listing.ImagePath!=null)content+="<a href='"+listing.PartialUrl+"'><img src='"+$opts.ImagePath+listing.ImagePath+"' style='float: left;' width='100px' height='75px' /></a>";content+="<div style='clear: both; height: 10px; width: 350px;'></div>";if(hasAvailability){content+="<table class='info-window-rates'>";content+="    <tr>";for(var d=1;d<=8;d++)content+="    <th class='dayheading'><div>"+FormatDate(eval("listing.Day"+d+"Date"),true)+"</div></th>";content+="    </tr>";content+="    <tr>";for(var d=1;d<=8;d++){var base=parseFloat(eval("listing.Day"+d+"BaseRate")),rate=parseFloat(eval("listing.Day"+d+"Price"));if(rate==0)content+="    <td class='not-available'>SOLD</td>";else if(rate>0&&base>0&&rate<base){var percentage=Math.ceil((base-rate)/base*100);if(percentage>=10&&percentage<=60)content+="    <td class='PriceCell VeryHotRate'><div class='PriceSearchDayCell'>        <a href='"+listing.PartialUrl+"/book?from="+FormatDate(eval("listing.Day"+d+"Date"),false)+"'>"+eval("listing.Day"+d+"Price")+"</a>        <div class='VeryHotRateElement'>"+Math.ceil(percentage)+"% off</div>    </div></td>";else content+="    <td class='PriceCell'><div class='PriceSearchDayCell'><a href='"+listing.PartialUrl+"/book?from="+FormatDate(eval("listing.Day"+d+"Date"),false)+"'>"+rate+"</a></div></td>"}else content+="    <td class='PriceCell'><div class='PriceSearchDayCell'><a href='"+listing.PartialUrl+"/book?from="+FormatDate(eval("listing.Day"+d+"Date"),false)+"'>"+rate+"</a></div></td>"}content+="    </tr>";content+="</table>"}content+="</div>";return content},RefreshMap=function(){for(var i in $accommodationMarkers)if($accommodationMarkers[i]!=null){$accommodationMarkers[i].setMap(null);$accommodationMarkers[i]=null}for(var i in $activityMarkers)if($activityMarkers[i]!=null){$activityMarkers[i].setMap(null);$activityMarkers[i]=null}LoadListings()},AddAccommodationMarker=function(listing){var point=new google.maps.LatLng(listing.Latitude,listing.Longitude);if($accommodationMarkers[listing.ClientId]==null){var marker=new google.maps.Marker({position:point,map:$map,zIndex:1}),content=FormatContent(listing);bindInfoWindow(marker,content);$accommodationMarkers[listing.ClientId]=marker}},AddActivitiesMarker=function(listing){var point=new google.maps.LatLng(listing.Latitude,listing.Longitude);if($activityMarkers[listing.ClientId]==null){var marker=new google.maps.Marker({position:point,map:$map,zIndex:1}),content=FormatContent(listing);bindInfoWindow(marker,content);$activityMarkers[listing.ClientId]=marker}},bindInfoWindow=function(marker,content){google.maps.event.addListener(marker,"click",function(){$infoWindow.setContent(content);$infoWindow.open($map,marker)})},getScript=function(src){var s=document.createElement("script");s.src=src;document.body.appendChild(s)},showLoading=function(){$(".map-loading-icon").css("display","inline")},hideLoading=function(){setTimeout(function(){$(".map-loading-icon").hide()},1e3)};this.render=function(){$("#main-top").hide();$("fieldset","#search-results").hide();FillDateArrays();getScript("http://maps.google.com/maps/api/js?sensor=false&callback=$MapSearch.load");$("#MapSearchCategories ul li input[type=checkbox]").live("click",function(){RefreshMap()});$(".tab-wrapper .accommodation-tab").click(function(){RefreshMap()});$(".tab-wrapper .activities-tab").click(function(){RefreshMap()});$(".tab-wrapper .combined-tab").click(function(){RefreshMap()});return $this};this.load=function(){if($opts.Latitude!=null&&$opts.Longitude!=null){var latlng=new google.maps.LatLng($opts.Latitude,$opts.Longitude),myOptions={zoom:parseInt($opts.Zoom)==0?6:parseInt($opts.Zoom),center:latlng,mapTypeId:google.maps.MapTypeId.ROADMAP};$map=new google.maps.Map(document.getElementById($($this).attr("id")),myOptions)}$infoWindow=new google.maps.InfoWindow({width:440,maxHeight:400,maxWidth:440,disableAutoPan:false});LoadListings()};return this.render()};$.fn.MapSearch.defaults={}})(jQuery)
