var PoiFilter={None:0,Schools:1,ShoppingCentres:2,Parks:4,CommunityFacilities:8,Entertainment:16,Restaurants:32,Recreations:64,HealthCares:128,EmergencyServices:256,Airports:512,PowerStations:1024,RubbishDumps:2048,Cemeteries:4096,TreatmentPlants:8192,CbaBranches:16384,CbaAtms:32768,Jails:65536,HouseStar1:131072,HouseStar2:262144,HouseStar3:524288,HouseStar4:1048576,HouseStar5:2097152,HouseStar0:4194304};var BasePoiMarker=new Class({ImageUrl:"",ImageWidth:21,ImageHeight:25,ImageShadowUrl:"",ImageShadowWidth:21,ImageShadowHeight:25,LatLng:[],OnClick:null,PoiType:null,GMarkerObject:null});var PoiTypeCount=new Class({PoiTypeID:0,Count:0});var PoiTypeCountArray=new Class({CountArray:new Array(),IsTypeInArray:function(a){for(var b=0;b<this.CountArray.length;b++){if(this.CountArray[b].PoiTypeID==a){return true;}}return false;},GetCountForType:function(a){for(var b=0;b<this.CountArray.length;b++){if(this.CountArray[b].PoiTypeID==a){return this.CountArray[b].Count;}}return 0;},IncrementCountForType:function(c){for(var b=0;b<this.CountArray.length;b++){if(this.CountArray[b].PoiTypeID==c){this.CountArray[b].Count++;return;}}var a=new PoiTypeCount();a.PoiTypeID=c;a.Count=1;this.CountArray.push(a);}});var BaseGoogleMapBehaviour=new Class({MapObject:null,SelectedFilters:PoiFilter.None,Pois:new Array(),Listings:new Array(),PoiCounts:new PoiTypeCountArray(),ID:"",AjaxLoadingDivID:"",ItemsBeingLoaded:0,ShowLoading:function(a){if(a){this.ItemsBeingLoaded++;}else{this.ItemsBeingLoaded--;if(this.ItemsBeingLoaded<0){this.ItemsBeingLoaded=0;}}document.getElementById(this.AjaxLoadingDivID).style.display=this.ItemsBeingLoaded>0?"block":"none";},CurrentInfoWindowMarker:null,AddPoi:function(a){this.SetUpPoi(a);this.Pois.push(a);this.PoiCounts.IncrementCountForType(a.PoiType);},AddListing:function(a){this.SetUpPoi(a);this.Listings.push(a);this.PoiCounts.IncrementCountForType(a.PoiType);},SetUpPoi:function(a){var b=new GIcon();b.image=a.ImageUrl;b.iconSize=new GSize(a.ImageWidth,a.ImageHeight);b.shadow=a.ImageShadowUrl;b.shadowSize=new GSize(a.ImageShadowWidth,a.ImageShadowHeight);b.iconAnchor=new GPoint(a.ImageWidth/2,a.ImageHeight);b.infoWindowAnchor=new GPoint(12,17);var c=new GMarker(new GLatLng(a.LatLng[0],a.LatLng[1]),{icon:b,clickable:true,zIndexProcess:this.CalculatePoiImportance});c.Importance=this.GetPoiImportance(a.PoiType);GEvent.addListener(c,"click",a.OnClick);a.GMarkerObject=c;},GetPoiImportance:function(b){var a=0;if(b==PoiFilter.HouseStar0||b==PoiFilter.HouseStar1||b==PoiFilter.HouseStar2||b==PoiFilter.HouseStar3||b==PoiFilter.HouseStar4||b==PoiFilter.HouseStar5){switch(b){case PoiFilter.HouseStar0:a=1;break;case PoiFilter.HouseStar1:a=2;break;case PoiFilter.HouseStar2:a=3;break;case PoiFilter.HouseStar3:a=4;break;case PoiFilter.HouseStar4:a=5;break;case PoiFilter.HouseStar5:a=6;break;default:a=0;}}return a;},CalculatePoiImportance:function(a,c){return GOverlay.getZIndex(a.getPoint().lat())+(a.Importance*1000000);},LoadListings:function(){this.ShowLoading(true);var c=this.MapObject.getBounds();var d=c.getNorthEast();var b=c.getSouthWest();var a=this.FnWrapper(this.OnGetListingsComplete,this);Fairfax.Classifieds.Ore.Web.ConsumerWebsite.Controls.Maps.AjaxMapService.GetListings(location.pathname+location.search,b.lat(),b.lng(),d.lat(),d.lng(),function(){var e=arguments[0];a(e);});},OnGetListingsComplete:function(b){var a=this.MapObject.getInfoWindow();var e=!a.isHidden();var f=null;for(var g=0;g<this.Listings.length;g++){var c=this.Listings[g];if(!e||this.CurrentInfoWindowMarker!=c.GMarkerObject){this.MapObject.removeOverlay(c.GMarkerObject);}else{f=c;}}this.Listings=new Array();for(var g=0;g<b.length;g++){if(f==undefined||(f.LatLng[0]!=b[g].Latitude&&f.LatLng[1]!=b[g].Longitude)){var d=new BasePoiMarker();d.LatLng=[b[g].Latitude,b[g].Longitude];d.ImageUrl=b[g].ImageUrl;d.ImageWidth=b[g].ImageWidth;d.ImageHeight=b[g].ImageHeight;d.PoiType=b[g].PoiFilterType;var c=b[g];var h=new Function("OpenListingInfoWinAjax(this, "+c.AdID+", "+c.Rating+", "+this.ID+");");d.OnClick=h;this.AddListing(d);c.GMarkerObject=d.GMarkerObject;}}if(f!=undefined){this.Listings.push(f);this.PoiCounts.IncrementCountForType(f.PoiType);}this.FilterListings();this.ShowLoading(false);},FilterListings:function(){for(var a=0;a<this.Listings.length;a++){var b=this.Listings[a];if(this.ShouldDisplayPoi(b.PoiType)){this.MapObject.addOverlay(b.GMarkerObject);}else{this.MapObject.removeOverlay(b.GMarkerObject);}}},LoadPois:function(){if(this.SelectedFilters==PoiFilter.None){this.RemovePois();return;}this.ShowLoading(true);var c=this.MapObject.getBounds();var d=c.getNorthEast();var b=c.getSouthWest();var a=this.FnWrapper(this.OnGetPoisComplete,this);Fairfax.Classifieds.Ore.Web.ConsumerWebsite.Controls.Maps.AjaxMapService.GetPois(this.SelectedFilters,b.lat(),b.lng(),d.lat(),d.lng(),275,function(){var e=arguments[0];a(e);});},RemovePois:function(){for(var a=0;a<this.Pois.length;a++){var b=this.Pois[a];this.MapObject.removeOverlay(b.GMarkerObject);}},OnGetPoisComplete:function(d){var a=this.MapObject.getInfoWindow();var e=!a.isHidden();var f=null;for(var g=0;g<this.Pois.length;g++){var c=this.Pois[g];if(!e||this.CurrentInfoWindowMarker!=c.GMarkerObject){this.MapObject.removeOverlay(c.GMarkerObject);}else{f=c;}}this.Pois=new Array();for(var g=0;g<d.length;g++){if(f==undefined||(f.LatLng[0]!=d[g].Latitude&&f.LatLng[1]!=d[g].Longitude)){var h=new BasePoiMarker();h.LatLng=[d[g].Latitude,d[g].Longitude];h.ImageUrl=d[g].ImageUrl;h.ImageWidth=d[g].ImageWidth;h.ImageHeight=d[g].ImageHeight;h.PoiType=d[g].PoiFilterType;var b=new Function(this.ID+".CurrentInfoWindowMarker = this;OpenPoiInfoWin(this, '"+d[g].Name+"', '"+d[g].Address+"', "+d[g].DisplayCba+");");h.OnClick=b;this.AddPoi(h);}}if(f!=undefined){this.Pois.push(f);this.PoiCounts.IncrementCountForType(f.PoiType);}for(var g=0;g<this.Pois.length;g++){var c=this.Pois[g];this.MapObject.addOverlay(c.GMarkerObject);}this.ShowLoading(false);},FnWrapper:function(a,b){return function(){a.apply(b,arguments);};},DisplayAllPois:function(){for(var a=0;a<this.Pois.length;a++){var b=this.Pois[a];if(this.ShouldDisplayPoi(b.PoiType)){this.MapObject.addOverlay(b.GMarkerObject);}}for(var a=0;a<this.Listings.length;a++){var b=this.Listings[a];if(this.ShouldDisplayPoi(b.PoiType)){this.MapObject.addOverlay(b.GMarkerObject);}}},SetFilter:function(b,a){if(a){this.SelectedFilters|=b;}else{this.SelectedFilters^=b;}if(b==PoiFilter.HouseStar0||b==PoiFilter.HouseStar1||b==PoiFilter.HouseStar2||b==PoiFilter.HouseStar3||b==PoiFilter.HouseStar4||b==PoiFilter.HouseStar5){this.FilterListings();}else{this.LoadPois();}},ShouldDisplayPoi:function(a){var b=false;if(this.SelectedFilters==PoiFilter.None){b=false;}else{b=(this.SelectedFilters&a)==a;}return b;},RefreshSinglePoiFilter:function(d){var c=document.getElementById("poiFilterErrorMessage-"+d);if(c!=null){if(!this.PoiCounts.IsTypeInArray(d)){c.style.color="#AAA";var b=c.getElementsByTagName("label");if(b!=null&&b.length>0){b[0].title="None found in area";var a=b[0].getElementsByTagName("input");if(a!=null&&a.length>0){a[0].disabled=true;}}c.disabled=true;}}}});function OpenListingInfoWinAjax(b,c,d,a){if(a!=undefined){a.ShowLoading(true);}Fairfax.Classifieds.Ore.Web.ConsumerWebsite.Controls.Maps.AjaxMapService.GetListingWindowDetails(c,function(){OpenListingInfoWinAjaxComplete(arguments[0],d,b,a);});}function OpenListingInfoWinAjaxComplete(b,c,d,a){OpenListingInfoWin(d,b.ThumbnailUrl,b.Beds,b.Baths,b.Cars,b.Address,b.Price,b.AgencyName,b.AdTagArea,b.AdState,b.AdArea,b.AdSuburb,b.Latitude,b.Longitude,c,b.DetailsUrl,b.PhotosUrl,b.ShortlistUrl,b.EmailFriendUrl,b.GetDirectionsUrl,b.SuburbProfileUrl,b.RecentSalesUrl);a.CurrentInfoWindowMarker=d;a.ShowLoading(false);}function OpenListingInfoWin(m,a,h,r,d,x,A,e,n,i,z,u,t,f,g,b,c,y,l,w,j,v){var k={PropertyPhoto:'<img alt="" src="'+a+'" />',PropertyType:"propTypeHouse",Bedrooms:h==""?"-":h,Bathrooms:r==""?"-":r,Carspaces:d==""?"-":d,Address:x,DisplayPrice:A,AgencyName:e,AdTagArea:n,AdState:i,AdArea:z,AdSuburb:u,ViewDetailsUrl:b,MorePhotosUrl:c,ShortlistUrl:y,EmailFriendUrl:l,GetDirectionUrl:w,SuburbProfileUrl:j,RecentSalesLink:v};var q="";if(g>0){q="<div style='border:0;background:none' class='cB-matchList stars-"+g+"'><b>Matches my preferences:</b><h4 style='margin:0;'><span style='display:block;margin:0;'> </span></h4></div>";}k.Rating=q;var p=listing_html.substitute(k,/\${([^}]+)}/g);GEvent.addListener(m,"infowindowopen",initInfoWindow.bind(this,[m,t,f]));m.openInfoWindowHtml(p);}function OpenPoiInfoWin(h,c,d,f){var e="/ore/Stylesheets/img-components/comm-bank-logo-stack.png";var b="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=tf&amp;c=20&amp;mc=click&amp;pli=1013497&amp;PluID=0&amp;ord="+PrettyDateTime(new Date());var i={PoiName:c,PoiAddress:d};var a="";var g="";if(f){a="<td style='width:130px;padding:5px 0 0 0;vertical-align:top;'><a href='"+b+"' target='_blank'><img style='border:0' src='"+e+"' /></a></td>";g="<br /><a style='font-size:0.92em;' href='"+b+"' target='_blank'>More information</a>";}i.CbaSponsorship1=a;i.CbaSponsorship2=g;var j=poi_html.substitute(i,/\${([^}]+)}/g);h.openInfoWindowHtml(j);}function OpenInfoWin(b,a){b.openInfoWindowHtml(a);}function PrettyDateTime(c){if(c){var i=c.getDay();var e=c.getMonth();var g=c.getFullYear();var a=c.getHours();var f=c.getMinutes();var h=c.getSeconds();var b="AM";if(a>11){b="PM";}if(a>12){a=a-12;}if(a==0){a=12;}if(a<10){a="0"+a;}if(f<10){f="0"+f;}if(h<10){h="0"+h;}return i+"/"+e+"/"+g+" "+a+":"+f+":"+h+" "+b;}return"";}function SaveMapDefaultPosition(a){if(a&&a.savePosition){a.savePosition();}}function OnMapTypeChanged(a,d){var c=a;var e=d;var b="hybrid";switch(c.getCurrentMapType()){case G_SATELLITE_MAP:b="satellite";break;case G_HYBRID_MAP:b="hybrid";break;default:b="map";break;}s=s_gi(e);s.linkTrackVars="prop8,eVar8,event26";s.linkTrackEvents="event26";s.prop8=b;s.eVar8=b;s.events="event26";s.tl(this,"o",b);Cookie.write("bgm.MapType",b,{domain:document.domain,path:"/",duration:365});}if(typeof(Sys)!=="undefined"){Sys.Application.notifyScriptLoaded();}
