<!--
var g_SelectedPhoto = 0;
var g_SelectedMLS = 0;
var g_SelectedLAT = 0;
var g_SelectedLNG = 0;
var g_SelectedZoom = 14;
var g_SelectedRECH = 0;
var g_selectedCenter = "Magog,QC";
var g_ShowToolTip = 0;

function ZZselectProp(mls, id)
{
	window.location.href = "http://www.equipelambert.com/?action=listing&view="+id+"&mls="+mls;
}

function selectImg(imgPath, mls, id)
{
	var imgViewer = document.getElementById("imgViewer");

	if (imgViewer != null)
	{
		imgViewer.src = imgPath;

		g_SelectedPhoto = id;
		g_SelectedMLS = mls;
	}
}

	var map;
	var mId = -1;
	var markerMan;
	var mapArr = new Array();
	var markers = new Array();
	var geocoder  = new GClientGeocoder();
	var infoDest = new Array();
	var mapDirections = null;
	var selMarker = null;
	var pointer   = null;
	var xmlData = null;
	var convAddrInfos = new Array();
	var convPostalInfos = new Array();

	function updateMarkerPt(uid, newPt)
	{
		for(var i = 0; i < markers.length; i++)
		if (markers[i].uid == uid)
		{
			markers[i].setPoint(newPt);
			break;
		}

		if (selMarker.uid == uid)
			selMarker.setPoint(newPt);

		markerMan.refresh();
	}	
			
	function selectMarker(overlay)
	{
		if (typeof overlay == "undefined"){overlay = selMarker}

		if (selMarker == null)
		{
			selMarker = addMarker(overlay.getPoint(), true);
			map.addOverlay(selMarker);
			//markerMan.addMarker(selMarker,1,19);
		}
		else	selMarker.setPoint(overlay.getPoint()); //alert(selMarker.getPoint());

		selMarker.postal  = overlay.postal;
		selMarker.address = overlay.address;
		selMarker.uid     = overlay.uid;
		//selMarker.myhtml  = overlay.myhtml;

		markerMan.refresh();
	}

	function selectMarkerByPt(point)
	{
		var markerPoint;
		var precision = 0.0000000000001;

		for(var i = 0; i < markers.length; i++)
		{
			markerPoint	= markers[i].getPoint();

			var diffX = Math.abs(markerPoint.lng() - point.lng());
			var diffY = Math.abs(markerPoint.lat() - point.lat());

			if (diffX <= precision && diffY <= precision)
			{
				selectMarker(markers[i]);
				break;
			}
		}
	}

	function selectMarkerById(uid)
	{
		for(var i = 0; i < markers.length; i++)
		{
			if (markers[i].uid == uid)
			{
				selectMarker(markers[i]);
				break;
			}
		}
	}

	function addMarker(point, selected)
	{
		if (typeof selected == "undefined"){selected = false}
		if (typeof infoWin == "undefined"){infoWin = null}

		var baseIcon = new GIcon(G_DEFAULT_ICON);

		if (selected)
		{
			baseIcon.image = "images/icon-home-over.png";
		}
		else	baseIcon.image = "images/icon-home.png";

		baseIcon.iconSize   = new GSize(20, 19);
		baseIcon.iconAnchor = new GPoint(10,10);
		baseIcon.shadow     = "";
		var markerOptions = {icon:baseIcon};
		var marker = new GMarker(point, markerOptions);

		if (selected === false)
			markers.push(marker);

		return marker;
	}

	function MaddMarker(point, ltid, mytooltip)
	{
		var baseIcon = new GIcon(G_DEFAULT_ICON);

		baseIcon.image = ltid;

		baseIcon.iconSize   = new GSize(20, 19);
		baseIcon.iconAnchor = new GPoint(10,10);
		baseIcon.shadow     = "";
		var markerOptions = {icon:baseIcon};
		var marker = new GMarker(point, markerOptions);

if ( (g_ShowToolTip > 0) && (tooltip != '') )
{
	marker.tooltip = mytooltip;


	GEvent.addListener(marker, "click", function()
			{
				selectProp(marker.uid, marker.pid)
			});


	GEvent.addListener(marker, "mouseover", function()
			{
				createTooltip(marker);
			});

	GEvent.addListener(marker, "mouseout", function()
			{
				hideTooltip();
			});
}
else
{
	GEvent.addListener(marker, "click", function()
			{
				if (marker.myhtml)
				{
					selectMarker(marker);
					marker.openInfoWindowHtml(marker.myhtml);
				}
			});
}

		markers.push(marker);

		return marker;
	}
		    
	function addFirstMarkerFromPostalList(callback)
	{
		if("undefined" == typeof callback) {callback = null;}

		info = convPostalInfos.shift();

		geocoder.getLatLng(info[1],
			function(point)
			{
				if (!point)
				{
					if (callback != null && convPostalInfos.length == 0)
					{
						callback();
					}
				}
				else
				{
					marker = addMarker(point);
					marker.myhtml  = info[0];
					marker.postal  = info[1];
					marker.uid 	   = info[2];
					marker.address = info[3];

					if (callback != null && convPostalInfos.length == 0)
					{
						callback();
					}

					setInfos("/?action=marker_save&id="+info[2]+"&lng="+point.lng()+"&lat="+point.lat());
				}
			});
	}

	function addFirstMarkerFromAddrList(callback)
	{
		if("undefined" == typeof callback) {callback = null;}

		info = convAddrInfos.shift();

		geocoder.getLatLng(info[3],
			function(point)
			{
				if (!point)
				{
					convPostalInfos.push(info);
					setInfos("/?action=marker_save&id="+info[2]);

					if (callback != null && convAddrInfos.length == 0) callback();
				}
				else
				{
					marker = addMarker(point);
					marker.myhtml  = info[0];
					marker.postal  = info[1];
					marker.uid 	   = info[2];
					marker.address = info[3];

					if (callback != null && convAddrInfos.length == 0)
						callback();

					setInfos("/?action=marker_save&id="+info[2]+"&lng="+point.lng()+"&lat="+point.lat());
				}
			});
	}

	function centerOn(query, zoom, callback)
	{
		if("undefined" == typeof callback) {callback = null;}
		if("undefined" == typeof zoom) {zoom = g_SelectedZoom;}

		geocoder.getLatLng(query,
			function(point)
			{
				if (point != null)
				{
					map.setCenter(point, zoom);
					//mapArr[mId][1] = new GMarkerManager(map);
					//markerMan = mapArr[mId][1];

					if (callback != null) callback(point);
				}
				else	alert("NOT FOUND: " + query);
			});
	}

	function centerOnPt(lat, lng)
	{
		map.setCenter(new GLatLng(lat,lng), g_SelectedZoom);
	}

	function showPointerOn(point)
	{
		if (pointer == null)
		{
			var baseIcon      = new GIcon(G_DEFAULT_ICON);

			baseIcon.image      = "images/icon-pointer.png";

			baseIcon.iconSize   = new GSize(35, 35);
			baseIcon.iconAnchor = new GPoint(15,30);
			baseIcon.shadow     = "";
			var markerOptions   = {icon:baseIcon, draggable:true, bouncy:true};
			pointer = new GMarker(point, markerOptions);
			map.addOverlay(pointer);
		}

		pointer.setPoint(point);
	}

	function loadMarkersFromXML(xmlMarkers, callback)
	{
		if("undefined" == typeof callback) {callback = null;}

		var mLat		= null;
		var mLng		= null;
		var mInfoHTML	= null;
		var mPostal		= null;
		var mUid  	 	= null;
		var mAddress	= null;
		var mGeoFailed	= null;
		var mTID		= null;
		var toDecode	= null;
		var iCpt		= 0;
				
		var refreshFct = function()
			{
				if (convAddrInfos.length == 0 && convPostalInfos.length == 0)
			    	{
			    		markerMan.addMarkers(markers, 7, 17);
					markerMan.refresh();

					if (callback != null) callback();
			    	}
			    	else if (convPostalInfos.length > 0)
			    	{ 
			    		for (var i = 0; i<convPostalInfos.length; i++)
			    		{
						var fct = function(){addFirstMarkerFromPostalList(refreshFct)};
						setTimeout(fct, 210*i);
			    		}
			    	}
			};

		var xml = GXml.parse(xmlMarkers);

		var nodes = xml.documentElement.getElementsByTagName("marker");

		for (var i = 0; i < nodes.length; i++)
		{
			mInfoHTML	= GXml.value(nodes[i]);
			mLat		= nodes[i].getAttribute("lat");
			mLng		= nodes[i].getAttribute("lng");
			mPostal	= nodes[i].getAttribute("postal");
			mAddress	= nodes[i].getAttribute("address");
			mUid		= nodes[i].getAttribute("uid");
			mGeoFailed	= nodes[i].getAttribute("geofailed");
			mTID		= nodes[i].getAttribute("tid");
			mInfoToolTip= nodes[i].getAttribute("tooltip");
			mPid		= nodes[i].getAttribute("pid");

			if (mLat == "" || mLng == "")
			{
			    	var info = new Array();
			    	info[0] = mInfoHTML;
				info[1] = mPostal;
				info[2] = mUid;
				info[3] = mAddress;

				if (mGeoFailed == 0)
				{
					convAddrInfos.push(info);
					var fct = function(){addFirstMarkerFromAddrList(refreshFct)};
					setTimeout(fct, 10000*iCpt);
			  		iCpt = iCpt + 1;
				}
				else	convPostalInfos.push(info);
			}
			else
			{
				var point = new GLatLng(mLat, mLng);

				marker		= MaddMarker(point, mTID, mInfoToolTip);
						
				marker.myhtml	= mInfoHTML;
				marker.postal	= mPostal;
				marker.uid		= mUid;
				marker.address	= mAddress;

				marker.pid		= mPid;
			}
		}
				
		if (convAddrInfos.length == 0 ) refreshFct();

		if (g_SelectedRECH > 0)
		{
			centerOn(g_selectedCenter, g_SelectedZoom);
		}
		else
		{
			if (g_SelectedLAT != 0)
			{
				selectMarkerById(g_SelectedMLS);

				centerOnPt(g_SelectedLAT, g_SelectedLNG);
			}
		}
	}

	function addAllMarkers(callback)
	{
		if("undefined" == typeof callback) {callback = null;}

		markers = new Array();

		if (xmlData == null)
		{
			GDownloadUrl("/?action=marker_list&mls="+g_SelectedMLS+"&rech="+g_SelectedRECH, function(data){loadMarkersFromXML(data, callback);xmlData=data;});
		}
		else	loadMarkersFromXML(xmlData, callback);
	}

	function activateMap(mId)
	{
		map = mapArr[mId][0];
		markerMan = mapArr[mId][1];
		if("undefined" != typeof markerMan)
			markerMan.refresh();
	}

	function loadGMapRech(p_center, p_zoom)
	{
		g_selectedPhoto = -1;
		g_SelectedRECH = 1;
		g_ShowToolTip = 1;

		g_selectedCenter = p_center;
		g_SelectedZoom = p_zoom;

		loadGMap();
	}

	function loadGMap(callback, mapId)
	{
		if("undefined" == typeof callback || callback == null) {callback = addAllMarkers;}
		if("undefined" == typeof mapId) {mapId = "map";}

		if (GBrowserIsCompatible())
		{
			mId = mId+1;
			mapArr[mId] = new Array();

			mapArr[mId][0] = new GMap2(document.getElementById(mapId));
			map = mapArr[mId][0];

initTooltip();   

			map.addControl(new GSmallMapControl());
			map.enableDoubleClickZoom();
			map.enableContinuousZoom();

			centerOn(g_selectedCenter, 10, function(){
				mapArr[mId][1] = new GMarkerManager(map);
				markerMan = mapArr[mId][1];
				callback();
				});
/*
			GEvent.addListener(map, "click", function(overlay, point)
					{
						if (overlay && overlay.myhtml)			
						{
							selectMarker(overlay); 
							//alert(overlay.getPoint());
			   				overlay.openInfoWindowHtml(overlay.myhtml);
						 }
					});
*/
		}

	    window.onunload = GUnload;
	}


function initTooltip()
{
	tooltip = document.createElement('div');
	tooltip.style.background = 'white';
	tooltip.style.width = '160px';
	tooltip.style.padding = '4px 4px 4px 4px';
	tooltip.style.border = '1px solid black';
	map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
	tooltip.style.visibility = 'hidden';
}

            
function createTooltip(marker)
{
	tooltip.innerHTML = marker.tooltip;

	var point = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GLatLng(0,0),true),map.getZoom());
	var offset = map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor = marker.getIcon().iconAnchor;
	var width = marker.getIcon().iconSize.width;
	var height = tooltip.clientHeight;
	var x = offset.x - point.x - anchor.x + width;
	var y = offset.y - point.y - anchor.y - height;

	var top = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getNorthEast(),map.getZoom());
	var topRightX = top.x - point.x;
	var topRightY = top.y - point.y;

	if (y < topRightY) y += topRightY - y + 2;
	if ((x + tooltip.clientWidth) > topRightX) x -= (x + tooltip.clientWidth) - topRightX + 2;

	if (((x + tooltip.clientWidth) > topRightX - 250) && (y < (topRightY + 30))) y += 25;
	if (((x + tooltip.clientWidth) > topRightX - 125) && (y > (topRightY + (380 - height)))) x -= (x + tooltip.clientWidth) - topRightX + 125 + 2;

	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x, y));
	pos.apply(tooltip);
	tooltip.style.visibility = 'visible';
}

function hideTooltip()
{
	tooltip.style.visibility = 'hidden';
}
//-->
