Cwo.RegisterNamespace("Cwo.Maps.Search");Cwo.Maps.Search=function(G,w,c){var o=this,r=null,t=null,f=null,q=null,e=false,a=document.getElementById(G),x=w,L=null,E=null,k=null,I=false,F=0,p=null,n=0,A=0,h=0,j=100,u=2,v=62,J=51,M=24,s=20,y=19;function l(){var N=null;var O=null;if(w==="ToLet"){N=Cwo.Search.ToLet.Latitude;O=Cwo.Search.ToLet.Longitude}else{N=Cwo.Search.ForSale.Latitude;O=Cwo.Search.ForSale.Longitude}return{Latitude:N,Longitude:O}}function g(N){var O={visible:true,strokeColor:t.getColor(j,n,A,h),fillColor:t.getColor(s,v,J,M),strokeThickness:u};t.DrawPolygon(N,O)}function m(){var U=$("#RadiusSlider").slider("value");if(U===0){U=1}var N=[],P=l().Latitude*Math.PI/180,R=l().Longitude*Math.PI/180,Q=U/3956;for(var V=0;V<=360;V+=10){var S=(V/90)*Math.PI/2;var T=180*(Math.asin(Math.sin(P)*Math.cos(Q)+Math.cos(P)*Math.sin(Q)*Math.cos(S)))/Math.PI;var W;if(Math.cos(P)===0){W=lonin}else{W=((R-Math.asin(Math.sin(S)*Math.sin(Q)/Math.cos(P))+Math.PI)%(2*Math.PI))-Math.PI}W=180*W/Math.PI;var O=r.CreatePoint(T,W);N.push(O)}return N}function B(P){if(P.targetType!=="pushpin"){return}if((P.isPrimary||P.isSecondary||$.browser.opera)){if(P.target.InstructionID===undefined){return}var O=null;if(P.target.InstructionID===-1){var N=t.PixelToLatLong(P.getX(),P.getY());var S=t.GetZoom();if(S>=y){var Q=P.target.InstructionIDs;var R="{propertyInstructionIDs: "+JSON.stringify(Q.Items)+"}";new Cwo.AjaxCall("/webservices/Previews.asmx/GetPropertyPreviews",R,function(T){o.ShowAccordian(T,N.latitude,N.longitude)},null,null)}else{t.MoveTo(N.latitude,N.longitude);t.SetZoom(S+1)}}else{O="{InstructionID:'"+P.target.InstructionID+"'}";new Cwo.AjaxCall("/webservices/Previews.asmx/GetPropertyPreview",O,o.ShowPreview,null,null)}}}function i(N){var O={bounds:N};t=r.RenderMap(a,O);t.AttachEvent("click",B);t.AttachEvent("viewchangeend",o.OnEndZoom)}function C(V){var W=V.d.ContentContainer.ShapePoints,P=V.d.ContentContainer.ShapePoints.length,R=new Array(),O=new Array();if(P>0){for(var U=0;U<P;U++){var N=W[U],Q=N.length,T=new Array();for(var S=0;S<Q;S++){T[S]=r.CreatePoint(N[S].Latitude,N[S].Longitude);R.push(T[S])}O[U]=T}I=true}else{O.push(m());R=O[0];I=false}if(t===null){i(r.GetRectFromBounds(R))}else{t.SetView(r.GetRectFromBounds(R))}t.ClearPolygon();t.ClearMarkers();for(var U=0;U<O.length;U++){g(O[U])}}function b(){var O=$("#RadiusSlider").slider("value");var P="{placeID:'"+$("[id$='_placeIDHiddenField']").val()+"', bufferDistance:'"+O+"'}";var N=Cwo.Page.AjajCalls.CreateRequest("PlaceSearch");new Cwo.AjaxCall("/webservices/PlaceSearch.asmx/GetShape",P,function(Q){C(Q)},null,null)}function z(){var O=t.GetTopLeft(),S=t.GetBottomRight(),N=t.GetZoom(),Q=$("#RadiusSlider").slider("value");if(!I&&Q===0){Q=1;$("#RadiusSlider").slider("option","value",Q)}var P="{AskingPriceMin:'"+Cwo.Search.ForSale.Criteria.AskingPriceMin+"',AskingPriceMax:'"+Cwo.Search.ForSale.Criteria.AskingPriceMax+"',BedroomsMin:'"+Cwo.Search.ForSale.Criteria.BedroomsMin+"',BedroomsMax:'"+Cwo.Search.ForSale.Criteria.BedroomsMax+"',ReceptionsMin:'"+Cwo.Search.ForSale.Criteria.ReceptionsMin+"',ReceptionsMax:'"+Cwo.Search.ForSale.Criteria.ReceptionsMax+"',BathroomsMin:'"+Cwo.Search.ForSale.Criteria.BathroomsMin+"',BathroomsMax:'"+Cwo.Search.ForSale.Criteria.BathroomsMax+"',SearchString:'"+Cwo.Search.ForSale.Criteria.SearchString.replace(/['']/g,"\\'")+"',Radius:'"+Q+"',PropertyTypeID:'"+Cwo.Search.ForSale.Criteria.PropertyTypeID+"',PromotionID:'"+Cwo.Search.ForSale.Criteria.PromotionID+"',PlaceID:'"+$("[id$='_placeIDHiddenField']").val()+"',TopLeftVisible:{Latitude:'"+O.latitude+"',Longitude:'"+O.longitude+"'},BottomRightVisible:{Latitude:'"+S.latitude+"',Longitude:'"+S.longitude+"'},ZoomLevel:'"+N+"'}";var R=Cwo.Page.AjajCalls.CreateRequest("ForSaleMapSearch");new Cwo.AjaxCall("/webservices/ForSaleSearch.asmx/GetMapPoints",P,function(T){d(T,R)},null,null)}function D(){var O=t.GetTopLeft(),S=t.GetBottomRight(),N=t.GetZoom(),Q=$("#RadiusSlider").slider("value");if(!I&&Q===0){Q=1;$("#RadiusSlider").slider("option","value",Q)}var P="{RentalPriceMin:'"+Cwo.Search.ToLet.Criteria.RentalPriceMin+"',RentalPriceMax:'"+Cwo.Search.ToLet.Criteria.RentalPriceMax+"',BedroomsMin:'"+Cwo.Search.ToLet.Criteria.BedroomsMin+"',BedroomsMax:'"+Cwo.Search.ToLet.Criteria.BedroomsMax+"',FurnishingTypeID:'"+Cwo.Search.ToLet.Criteria.FurnishingTypeID+"',SearchString:'"+Cwo.Search.ToLet.Criteria.SearchString.replace(/['']/g,"\\'")+"',Radius:'"+Q+"',PropertyTypeID:'"+Cwo.Search.ToLet.Criteria.PropertyTypeID+"',TopLeftVisible:{Latitude:'"+O.latitude+"',Longitude:'"+O.longitude+"'},BottomRightVisible:{Latitude:'"+S.latitude+"',Longitude:'"+S.longitude+"'},ZoomLevel:'"+N+"',PlaceID:'"+$("[id$='_placeIDHiddenField']").val()+"',PromotionID:'"+Cwo.Search.ToLet.Criteria.PromotionID+"'}";var R=Cwo.Page.AjajCalls.CreateRequest("ToLetMapSearch");new Cwo.AjaxCall("/webservices/ToLetSearch.asmx/GetMapPoints",P,function(T){d(T,R)},null,null)}function d(ae,ag){if(!Cwo.Page.AjajCalls.IsCurrentSequenceIndex(w+"MapSearch",ag)){return}var V=ae.d.ContentContainer.MapPoints,ac=V.length,ad="<span>"+ae.d.ContentContainer.ResultCount+"</span> "+ae.d.ContentContainer.SearchPropertyTypeText+" within <span>",am="",af="",W=ae.d.ContentContainer.PlaceName;if(w==="ToLet"){am=$("#RadiusSlider").slider("value");if(am>0){af=((am===0.5)?"1/2 mile</span> of <span>":(am.toString()+((am>1)?" miles</span> of <span>":" mile</span> of <span>")))}ad+=af+W+"</span>";$("#"+Cwo.Search.ToLet.ControlIDs.ResultsListButton).attr({href:ae.d.ContentContainer.SearchURL});Cwo.Search.ToLet.ShowPromotionBanner(ae.d.ContentContainer.PromotionBannerHTML)}else{am=$("#RadiusSlider").slider("value");if(am>0){af=((am===0.5)?"1/2 mile</span> of <span>":(am.toString()+((am>1)?" miles</span> of <span>":" mile</span> of <span>")))}ad+=af+W+"</span>";$("#"+Cwo.Search.ForSale.ControlIDs.ResultsListButton).attr({href:ae.d.ContentContainer.SearchURL});Cwo.Search.ForSale.ShowPromotionBanner(ae.d.ContentContainer.PromotionBannerHTML)}$("#NumberOfProperties").html(ad);for(var aj=0;aj<ac;aj++){var Z,ab,N,al=false;if(V[aj].Type===0){Z={icon:"",text:V[aj].ItemCount.toString(),typeName:"clusterPoint"};al=true;ab=-1;var S=t.GetZoom();if(S===y){var ai=new Cwo.Collection();var X=V[aj];var ah=X.ClusteredIDs.length;for(var aa=0;aa<ah;aa++){ai.Add(X.ClusteredIDs[aa])}N=ai}}else{Z={icon:"",text:"",typeName:"mapPoint"};ab=V[aj].ID;N=-1}var ak=t.AddMarker(V[aj].Latitude,V[aj].Longitude,Z);ak.InstructionID=ab;ak.InstructionIDs=N;var P;if(al){P=$(".clusterPoint").last()}else{P=$(".mapPoint").last()}var U=$("<div></div>").html(V[aj].Summary).text();P.attr("id","mappoint"+aj).attr("title",U)}if(ae.d.ContentContainer.ResultCount===0){t.ClearMarkers();var Q=t.GetCenter(),Y=t.LatLongToPixel(Q.latitude,Q.longitude),O=t.PixelToLatLong(Y.x-289,Y.y-130);var T=$("#SearchPredictiveText").val();var R=("<div id='NoPropertiesNotification'><div class='FadedBackground'><div class='Header'><h6><img src='/images/icons/exclamation-mark.png' alt='No properties found' />No properties found in "+T+"</h6></div><ul><li>Please check the location entered is correct</li><li>Adjust your search filters</li><li>Try an alternative location</li></ul></div></div>");p=t.AddInfoBox(O.latitude,O.longitude,R,{})}if(k!==null&&k!==undefined){L.DeleteShape(k)}}this.LoadMap=function(){r=new Cwo.MapProvider(c);f=l();if(Cwo.Common.GetCookie("PropertyWideMapToken")!==""){t.SetClientToken(Cwo.Common.GetCookie("PropertyWideMapToken"))}o.MapLoaded()};this.MapLoaded=function(){o.UpdateNew()};this.OnEndZoom=function(){o.UpdateNew()};function K(){if(t!==null){t.ClearMarkers()}if(w==="ToLet"){D()}else{z()}}this.UpdateNew=function(){if(t!==null){t.Remove(p)}var N=$("#RadiusSlider").slider("value");if(t===null||F!==N){if(t!==null){t.DeleteAllShapeLayers()}F=N;b()}else{K()}};function H(Q,O){var S=t.GetCenter();var N=t.LatLongToPixel(Q,O);var P=(t.GetWidth()/2);var R=(t.GetHeight()/2);if(N.x<-10){if((N.x-300)>(P*-1)){N.x=(N.x+300)}}else{if(N.x>10){if((N.x+300)>P){N.x=(N.x-300)}}}if(N.y>=0){if((N.y+200)>R){N.y=(N.y-200)}}return N}this.ShowPreview=function(R){var O=R.d.ContentContainer.PropertyPreviews[0];var P='<ul id="MapSingleContainer">';P+='    <li id="Top">';P+="        <ul>";P+='            <li class="NumberOfProperties">Property Details</li>';P+='            <li class="Close" id="MapPreviewClose">Close</li>';P+="        </ul>";P+="    </li>";P+='    <li id="Middle">';P+="        <ul>";P+='            <li class="Open"><a>'+O.Price+"</a>";P+='                <div class="Details">';P+='                    <img src="'+O.MainPhotoUrl+'" id="MapPreviewReadMoreFromPhoto" alt="" />';P+="                    <ul>";P+='                        <li class="PropertyType">'+O.Summary+"</li>";P+='                        <li class="ReadMore" id="MapPreviewReadMore"><button>Read More</button></li>';P+='                        <li class="Favourites"><button id="AddToFavourites">Favourite</button></li>';P+="                    </ul>";P+="                </div>";P+="            </li>";P+="        </ul>";P+="    </li>";P+='    <li id="Bottom"></li>';P+="</ul>";if(q!==null){o.ClosePreview()}var N=H(O.Latitude,O.Longitude);var S=t.PixelToLatLong(N.x,N.y);q=t.AddInfoBox(S.latitude,S.longitude,P,{});$("#MapSingleContainer").parent("div").parent("div").css("z-index","3000");q.InstructionID=O.InstructionID;q.IsPopup=true;q.URLAliasPath=O.URLAliasPath;$("#MapPreviewClose").bind("click",o.ClosePreview);$("#MapSingleContainer").bind("dblclick",function(){return false});var Q=O.URLAliasPath.replace("&pound;","�");$("#MapPreviewReadMoreFromPhoto").bind("click",function(){Cwo.Page.NavigateWithReferrer(Q)});$("#MapPreviewReadMore").bind("click",function(){Cwo.Page.NavigateWithReferrer(Q)});new Cwo.Favourites.FavouriteButtonHandler(O.InstructionID,"AddToFavourites","add")};this.ClosePreview=function(){t.Remove(q)};this.ShowAccordian=function(P,O,S){var Q=P.d.ContentContainer.PropertyPreviews;var U=Q.length;var R='<ul id="MapAccordianContainer">';R+='       <li id="Top">';R+="           <ul>";R+='               <li class="NumberOfProperties">'+U+" Properties</li>";R+='               <li class="Close" id="MapPreviewClose">Close</li>';R+="           </ul>";R+="       </li>";R+='       <li id="Middle">';R+="           <ul>";for(var V=0;V<U;V++){if(V===0){R+='<li class="Open" id="MapPreviewPrice'+Q[V].InstructionID+'"><div id="MapPreviewHeaderBar'+Q[V].InstructionID+'">'+Q[V].Price+"</div>"}else{R+='<li class="Closed" id="MapPreviewPrice'+Q[V].InstructionID+'"><div id="MapPreviewHeaderBar'+Q[V].InstructionID+'">'+Q[V].Price+"</div>"}R+='    <div class="Details">';R+='       <img src="'+Q[V].MainPhotoUrl+'" id="MapPreviewReadMoreFromPhoto'+Q[V].InstructionID+'" alt="" />';R+="       <ul>";R+='           <li class="PropertyType">'+Q[V].Summary+"</li>";R+='           <li class="ReadMore"><button id="MapPreviewReadMore'+Q[V].InstructionID+'">Read More</button></li>';R+='           <li class="Favourites"><button id="AddToFavourites'+Q[V].InstructionID+'">Favourites</button></li>';R+="       </ul>";R+="   </div>";R+="</li>"}R+="           </ul>";R+="       </li>";R+='       <li id="Bottom">';R+="       </li>";R+="   </ul>";if(q!==null){o.ClosePreview()}var N=H(O,S);var W=t.PixelToLatLong(N.x,N.y);q=t.AddInfoBox(W.latitude,W.longitude,R,{});q.IsPopup=true;$("#MapAccordianContainer").parent("div").parent("div").css("z-index","6000");$("#MapPreviewClose").bind("click",o.ClosePreview);$("#MapAccordianContainer").bind("dblclick",function(){return false});for(var T=0;T<U;T++){o.BindPreviewButton(Q[T])}};this.BindPreviewButton=function(N){$("#MapPreviewReadMore"+N.InstructionID).bind("click",function(){Cwo.Page.NavigateWithReferrer(N.URLAliasPath)});$("#MapPreviewReadMoreFromPhoto"+N.InstructionID).bind("click",function(){Cwo.Page.NavigateWithReferrer(N.URLAliasPath)});$("li #MapPreviewPrice"+N.InstructionID).bind("click",function(O){o.ExpandCollapsePreview(N,O)});new Cwo.Favourites.FavouriteButtonHandler(N.InstructionID,"AddToFavourites"+N.InstructionID,"add")};this.ExpandCollapsePreview=function(O,N){if($("#MapPreviewPrice"+O.InstructionID).hasClass("Open")){$("#MapAccordianContainer #Middle .Open").removeClass().addClass("Closed")}else{$("#MapAccordianContainer #Middle .Open").removeClass().addClass("Closed");$("#MapPreviewPrice"+O.InstructionID).removeClass().addClass("Open")}};$(document).ready(function(){new Cwo.MapScriptLoadListner(o.LoadMap);Cwo.Maps.Search.Start=function(){Cwo.Page.EventController.Subscribe("ForSaleFilters.CriteriaChanged",function(){o.UpdateNew()});Cwo.Page.EventController.Subscribe("ToLetFilters.CriteriaChanged",function(){o.UpdateNew()})};if(navigator.userAgent.indexOf("MSIE")>-1){Cwo.Maps.Search.Start();return}Cwo.Maps.Search.Start()})};
