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);
}