if(window.addEventListener){ window.addEventListener( "unload", GUnload, false ); } else { window.attachEvent( "onunload", GUnload ); } // declare global variables var map, cluster, bubbleSmall, bubbleFull; function mapOnload(lat, lng, zoom) { if (GBrowserIsCompatible()) { freezeSetHash = true; map=new GMap2(document.getElementById('map-canvas')); GEvent.addListener(map, 'load', mapOnloadFinished); map.setCenter(new GLatLng(lat, lng), zoom, G_NORMAL_MAP); //map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7))); //map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 28))); //map.enableScrollWheelZoom(); map.enableContinuousZoom(); new GKeyboardHandler(map); GEvent.addListener(map, 'dragend', refreshMap); GEvent.addListener(map, 'moveend', refreshMap); GEvent.addListener(map, 'zoomend', refreshMap); GEvent.addListener(map, 'click', function() { bubbleSmall.hide(); if (new Date().getTime() - markerClickTime > 200) bubbleFull.hide(); }); bubbleSmall = new EBubble(map, "https://www.realestatevine.ca/sites/all/themes/ore/images/info-window-small.png", new GSize(215,28), new GSize(213,26), new GPoint(1,1), new GPoint(110,35)); bubbleFull = new EBubble(map, "https://www.realestatevine.ca/sites/all/themes/ore/images/info-window.png", new GSize(302,135), new GSize(296,117), new GPoint(3,3), new GPoint(160,135), true); var cIcon = new GIcon(); cIcon.image = "https://www.realestatevine.ca/sites/all/themes/ore/images/map_properties.png"; cIcon.iconSize = new GSize(40, 35); cIcon.iconAnchor = new GPoint(24, 25); cIcon.infoWindowAnchor = new GPoint(20, 15); cluster=new ClusterMarker(map, { clusterMarkerTitle: ' ', clusterMarkerIcon:cIcon, intersectPadding:-5 } ); cluster.clusterMarkerMouseOver = function (args) { cmco(args); } cluster.clusterMarkerMouseOut = function (args) { bubbleSmall.hide(); } refreshMap(); map.savePosition(); // enables the large map control centre button to return the map to initial view freezeSetHash = false; } } var mapOnloadFinishedQueue_arr = new Array(); function mapOnloadFinished() { for (var i in mapOnloadFinishedQueue_arr) { eval(mapOnloadFinishedQueue_arr[i]); } } function mapLoadQueue(code) { mapOnloadFinishedQueue_arr.push(code); } function cmco(args) { //alert(args.clusteredMarkers.length); var t = args.clusteredMarkers.length + ' listings. Click to zoom.'; bubbleSmall.openOnMarker(args.clusterMarker, '
' + t + '
'); // args.clusterMarker.openInfoWindowHtml( args.clusteredMarkers.length + ' markers clustered here.'); } var refreshTime = 0; function refreshMap() { var x = new Date().getTime(); if (x - refreshTime > 300) refreshTime = x; else return; var x = map.getBounds(); var sw = x.getSouthWest(); var ne = x.getNorthEast(); GDownloadUrl("https://www.realestatevine.ca/sites/all/modules/ore/components/ahah.listings.php?action=get-map-markers" + '&lo1=' + sw.lng() + '&lo2=' + ne.lng() + '&la1=' + sw.lat() + '&la2=' + ne.lat() + '&priceMin=' + $('#price-min').val() + '&priceMax=' + $('#price-max').val() + '&beds=' + $('#beds').val().replace('+', '%2B') + '&baths=' + $('#baths').val().replace('+', '%2B'), function(data, responseCode) { markersArray = parseJson(data); cluster.removeMarkers(); cluster.addMarkers(markersArray); cluster.refresh(); } ); updateBingLink(); var c = map.getCenter(); var xy = c.lat() + ',' + c.lng(); var zm = map.getZoom(); ore_setHash('xy', xy); ore_setHash('zm', zm); } // refreshMap /*** MARKERS ***/ var markersIndex = new Array(); function parseJson (doc) { if (doc.length == 0) return false; var marker, markersArray = []; markersIndex = new Array(); var jsonData = eval("(" + doc + ")"); for (var i = 0; i < jsonData.markers.length; i++) { marker=newMarker(jsonData.markers[i].point, jsonData.markers[i].street, jsonData.markers[i].price, jsonData.markers[i].beds, jsonData.markers[i].baths, jsonData.markers[i].url, jsonData.markers[i].img, jsonData.markers[i].extra); markersArray.push(marker); markersIndex[jsonData.markers[i].prop_id] = i; } return markersArray; } // parseJson function clickMarker(id) { //alert(markersArray[markersIndex[id]].getLatLng().lat()); GEvent.trigger(markersArray[markersIndex[id]], 'click'); } var markerClickTime = new Date().getTime(); function newMarker(markerLocation, street, price, beds, baths, url, img, extra) { var cIcon = new GIcon(); cIcon.image = "https://www.realestatevine.ca/sites/all/themes/ore/images/map_property.png"; cIcon.iconSize = new GSize(34, 48); cIcon.iconAnchor = new GPoint(13, 43); cIcon.shadow = "https://www.realestatevine.ca/sites/all/themes/ore/images/map_property_shadow.png"; cIcon.shadowSize = new GSize(51, 48); cIcon.imageMap = [16,4,3,15,16,43,30,14]; cIcon.infoWindowAnchor = new GPoint(21, 12); var marker=new GMarker(markerLocation, {icon:cIcon}); GEvent.addListener(marker, 'mouseover', function() { bubbleMarkerMouseOver(marker, street, price, beds, baths, url, img, extra); }); GEvent.addListener(marker, 'click', function() { bubbleMarkerClick(marker, street, price, beds, baths, url, img, extra); }); GEvent.addListener(marker, 'mouseout', function() { bubbleSmall.hide(); }); return marker; } function bubbleMarkerMouseOver(marker, street, price, beds, baths, url, img, extra) { //bubbleFull.hide(); var t; if (price != '$0') t = price + ' -'; else t = '$? -'; if (beds == 1) t += ' 1 bed'; if (beds > 1) t += ' ' + ore_numFix(beds) + ' beds'; if (baths == 1) t += ' 1 bath'; if (baths > 1) t += ' ' + ore_numFix(baths) + ' baths'; if (t == price + ' -') t += ' ' + extra; bubbleSmall.openOnMarker(marker, '
' + t + '
'); ore_loadImagePreviews(); } function bubbleMarkerClick(marker, street, price, beds, baths, url, img, extra) { markerClickTime = new Date().getTime(); bubbleSmall.hide(); var t = '
'; t += '
' + street + '
'; t += '
'; if (img.length > 0) t += '
'; if (price == '$0') t += 'Price Unknown
'; else t += price + '
'; if (beds == 1) t += ' 1 bed'; if (beds > 1) t += ' ' + ore_numFix(beds) + ' beds'; if (baths == 1) t += ' 1 bath'; if (baths > 1) t += ' ' + ore_numFix(baths) + ' baths'; if (extra.length > 0) t += '
' + extra; t += '
More Details » '; t += '
'; bubbleFull.openOnMarker(marker, t); }