
var LISTING_DATA=new Object();var map;var IMG_BASE_URL="/images/gmap/";var LISTING_MARKERS=new Object();var sprite=IMG_BASE_URL+"listing_icons_sprite.png";var house_icon_size=new google.maps.Size(23,26);var house_icon_anchor=new google.maps.Point(3,26);var houses_icon_size=new google.maps.Size(27,30);var houses_icon_anchor=new google.maps.Point(3,30);var condo_icon_size=new google.maps.Size(19,26);var condo_icon_anchor=new google.maps.Point(0,26);var condos_icon_size=new google.maps.Size(25,33);var condos_icon_anchor=new google.maps.Point(0,33);var listing_icon_array=Array();listing_icon_array['house']=new Array();listing_icon_array['house']['shadow']=new google.maps.MarkerImage(sprite,new google.maps.Size(32,34),new google.maps.Point(0,0),new google.maps.Point(7,30));listing_icon_array['house']['1']=new google.maps.MarkerImage(sprite,house_icon_size,new google.maps.Point(32,0),house_icon_anchor);listing_icon_array['house']['2']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(55,0),houses_icon_anchor);listing_icon_array['house']['3']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(82,0),houses_icon_anchor);listing_icon_array['house']['4']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(109,0),houses_icon_anchor);listing_icon_array['house']['5']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(136,0),houses_icon_anchor);listing_icon_array['house']['plus']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(163,0),houses_icon_anchor);listing_icon_array['house']['1_sel']=new google.maps.MarkerImage(sprite,house_icon_size,new google.maps.Point(190,0),house_icon_anchor);listing_icon_array['house']['2_sel']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(213,0),houses_icon_anchor);listing_icon_array['house']['3_sel']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(240,0),houses_icon_anchor);listing_icon_array['house']['4_sel']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(267,0),houses_icon_anchor);listing_icon_array['house']['5_sel']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(294,0),houses_icon_anchor);listing_icon_array['house']['plus_sel']=new google.maps.MarkerImage(sprite,houses_icon_size,new google.maps.Point(321,0),houses_icon_anchor);listing_icon_array['condo']=new Array();listing_icon_array['condo']['shadow']=new google.maps.MarkerImage(sprite,new google.maps.Size(29,34),new google.maps.Point(0,34),new google.maps.Point(5,30));listing_icon_array['condo']['1']=new google.maps.MarkerImage(sprite,condo_icon_size,new google.maps.Point(32,34),condo_icon_anchor);listing_icon_array['condo']['2']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(55,34),condos_icon_anchor);listing_icon_array['condo']['3']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(82,34),condos_icon_anchor);listing_icon_array['condo']['4']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(109,34),condos_icon_anchor);listing_icon_array['condo']['5']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(136,34),condos_icon_anchor);listing_icon_array['condo']['plus']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(163,34),condos_icon_anchor);listing_icon_array['condo']['1_sel']=new google.maps.MarkerImage(sprite,condo_icon_size,new google.maps.Point(190,34),condo_icon_anchor);listing_icon_array['condo']['2_sel']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(213,34),condos_icon_anchor);listing_icon_array['condo']['3_sel']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(240,34),condos_icon_anchor);listing_icon_array['condo']['4_sel']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(267,34),condos_icon_anchor);listing_icon_array['condo']['5_sel']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(294,34),condos_icon_anchor);listing_icon_array['condo']['plus_sel']=new google.maps.MarkerImage(sprite,condos_icon_size,new google.maps.Point(321,34),condos_icon_anchor);function createListingMarker(listing_id,property_type,point,featured_order_by,content_index){var listing_icon=listing_icon_array[property_type]['1'];var listing_icon_selected=listing_icon_array[property_type]['1_sel'];var listing_icon_shadow=listing_icon_array[property_type]['shadow'];var markerOptions={icon:listing_icon,position:point,map:map,shadow:listing_icon_shadow};var listingmarker=new google.maps.Marker(markerOptions);listingmarker.id=listing_id;listingmarker.active=false;listingmarker.customicon=listing_icon;listingmarker.customicon_selected=listing_icon_selected;google.maps.event.addListener(listingmarker,"mouseover",function(){if(listingmarker.active!=true){listingmarker.setIcon(listingmarker.customicon_selected);}});google.maps.event.addListener(listingmarker,"mouseout",function(){if(listingmarker.active!=true){listingmarker.setIcon(listingmarker.customicon);}});google.maps.event.addListener(listingmarker,"click",function(){if(listingmarker.active!=true){CURRENT_LISTING_ID=listingmarker.id;listingmarker.active=true;listingmarker.setIcon(listingmarker.customicon_selected);var infowindow_url="?";var boxClass='listing_info_window';var boxWidth='235px';var boxShadow='<img src="/images/gmap/listing_info_window_shadow.png" />';var boxShadowOffset=new google.maps.Size(28,-30);new Ajax.Request(infowindow_url,{method:'post',parameters:{controller:'FeaturedListings',product:'web',action:'details',acnt:ACNT,listing_id:listing_id,featured_order_by:featured_order_by,content_index:content_index,from:'map_search',infowindow:1},onSuccess:function(transport){infowindow_html=transport.responseText;var info_window_options={latlng:listingmarker.getPosition(),map:map,boxClass:boxClass,content:infowindow_html,pixelOffset:new google.maps.Size(28,-60),boxStyle:{width:boxWidth},infoBoxClearance:new google.maps.Size(1,1),shadow:boxShadow,shadowOffset:boxShadowOffset};var pano_window_options={latlng:listingmarker.getPosition(),map:map,boxClass:boxClass,content:infowindow_html,disableAutoPan:true,pixelOffset:new google.maps.Size(28,-160),boxStyle:{width:boxWidth},infoBoxClearance:new google.maps.Size(1,1)};var latlng=listingmarker.getPosition();var svservice=new google.maps.StreetViewService();svservice.getPanoramaByLocation(latlng,50,function(data,status){if(status==google.maps.StreetViewStatus.OK){var has_street_view=true;}else{var has_street_view=false;}
if(has_street_view)
{info_window_options.content=info_window_options.content.replace(/class="btn_street_view_na"/g,'style="display: none;"');pano_window_options.content=pano_window_options.content.replace(/class="btn_street_view_na"/g,'style="display: none;"');}
listingmarker.infoWindow=new InfoBox(info_window_options);listingmarker.infoWindow.open(map,listingmarker);var panorama=map.getStreetView();listingmarker.panoWindow=new InfoBox(pano_window_options);listingmarker.panoWindow.open(panorama,listingmarker);if(has_street_view)
{if(panorama.getVisible())
{google.maps.event.trigger(map,'resize');google.maps.event.trigger(panorama,'resize');}
google.maps.event.addListener(listingmarker.panoWindow,"closeclick",function(){if(listingmarker.active==true){listingmarker.infoWindow.close();listingmarker.active=false;listingmarker.setIcon(listingmarker.customicon);}else{listingmarker.active=false;}});}
google.maps.event.addListener(listingmarker.infoWindow,"closeclick",function(){if(listingmarker.active==true){if(has_street_view)
{listingmarker.panoWindow.close();}
listingmarker.active=false;listingmarker.setIcon(listingmarker.customicon);}else{listingmarker.active=false;}});});},onFailure:function(){alert("The ajax request failed - was trying to retrieve this listing's information to show in the info window.");}});}});return listingmarker;}
function setupListingMarkers(page_id){var listings=LISTING_DATA[page_id];var bounds=new google.maps.LatLngBounds();var listing_cnt=0;for(listing_id in listings){listing_cnt++;var listing_id=listings[listing_id]['listing_id'];var page=listings[listing_id]['page'];var lpp=listings[listing_id]['lpp'];var index_on_page=listings[listing_id]['index_on_page'];var total_listings=listings[listing_id]['total_listings'];var featured_order_by=listings[listing_id]['featured_order_by'];var content_index=listings[listing_id]['content_index'];var listing_point=new google.maps.LatLng(parseFloat(listings[listing_id]['lat']),parseFloat(listings[listing_id]['lng']));var property_type="house";if(listings[listing_id]['type']=='Co-op'||listings[listing_id]['type']=='Two Family Home'||listings[listing_id]['type']=='Timeshare'||listings[listing_id]['type']=='Co-Operative'||listings[listing_id]['type']=='Condo'||listings[listing_id]['type']=='Townhouse'||listings[listing_id]['type']=='Condo/Townhouse'||listings[listing_id]['type']=='Multi Family Home')
{property_type="condo";}
if(!bounds.contains(listing_point)){bounds.extend(listing_point);}
var marker=createListingMarker(listing_id,property_type,listing_point,featured_order_by,content_index);LISTING_MARKERS[listing_id]=marker;}
if(listing_cnt!=0){map.fitBounds(bounds);}}
function showStreetView(listing_id){if(listing_id){}else{alert("cannot show streetview because no listing was specified");return;}
var panorama=map.getStreetView();if(panorama.getVisible())
{panorama.setVisible(false);}
else
{latlng=LISTING_MARKERS[listing_id].getPosition();sv_service=new google.maps.StreetViewService();sv_service.getPanoramaByLocation(latlng,50,function(data,status){if(status==google.maps.StreetViewStatus.OK){panorama.setPosition(latlng);panorama.setVisible(true);}
else{alert("Sorry, street view is unavailable for this location.");}});}}
function load_map(page_id){var starting_zoom=8;var starting_map_type=google.maps.MapTypeId.TERRAIN;var starting_centerpoint=$F("starting_centerpoint");var ctrpt=starting_centerpoint.split(",");var ctrpt=starting_centerpoint.split(",");var latlng=new google.maps.LatLng(ctrpt[0],ctrpt[1]);var mapOptions={zoom:starting_zoom,center:latlng,mapTypeId:starting_map_type,scaleControl:true};map=new google.maps.Map(document.getElementById("Map"),mapOptions);window.setTimeout(function(){setupListingMarkers(page_id);},100);}
function get_listing_data(page_id){if(LISTING_DATA[page_id]){load_map(page_id);}
else{var url="?";new Ajax.Request(url,{method:'post',parameters:{controller:'ListingMap',action:'fetch_new_listing_set',product:'Web',acnt:ACNT,listing_page_id:page_id},onSuccess:function(transport){var listing_data=transport.responseJSON;if(listing_data){LISTING_DATA[page_id]=listing_data;load_map(page_id);}else{alert("Failed to retrieve listing map data: "+transport.responseText);}},onFailure:function(){alert("The ajax request failed - was trying to retrieve listing data for a map");}});}}
Event.observe(window,'load',function(){if($("listing_map_select")){$("listing_map_select").observe("change",function(){get_listing_data($("listing_map_select").getValue());});get_listing_data($("listing_map_select").getValue());}});
