var googleMapVisible = false;
var googleMapLoaded = false;
var properties = new Array();
var GMAP;

window.onunload = GUnload;

var onLoadGoogleMap = function() {
	makeMoveable('popupGoogleMap');
}

registerOnLoad(onLoadGoogleMap);

function googleMapToggle()
{
	var map = new getObj('popupGoogleMapContainer');
	if (googleMapVisible) {
		map.style.display = "none";
		googleMapVisible = false;
	}
	else if (map.ready) {
		map.style.display = "block";
		if (!googleMapLoaded) {
			googleMapLoad();
			googleMapLoaded = true;
		}
		googleMapVisible = true;
		
		var size = getPageSize();
		var offset = getScrollOffset();
		var wh = size[3];
		var oh = offset[1];
		var mh = (wh / 2) + oh;
		
		var boxTop = mh - (300 / 2);
		if (boxTop < 40) {
			boxTop = 40;
		}
		map.style.top = boxTop + 'px';
	}
}

function googleMapToggleXY(x,y)
{
	var map = new getObj('popupGoogleMapContainer');
	if (googleMapVisible) {
		map.style.display = "none";
		googleMapVisible = false;
	}
	else if (map.ready) {
		map.style.display = "block";
		if (!googleMapLoaded) {
			googleMapLoadXY(x,y);
			googleMapLoaded = true;
		}
		else {
			googleMapLoadXY(x,y);
			googleMapLoaded = true;
		}
		googleMapVisible = true;
		
		var size = getPageSize();
		var offset = getScrollOffset();
		var wh = size[3];
		var oh = offset[1];
		var mh = (wh / 2) + oh;
		
		var boxTop = mh - (300 / 2);
		if (boxTop < 40) {
			boxTop = 40;
		}
		map.style.top = boxTop + 'px';
	}
}

function googleMapSetHeaderPrecise(bool)
{
	var map = new getObj('popupGoogleMapTitle');
	if (map.ready) {
		if (bool) {
			map.obj.innerHTML = "Map";
		}
		else {
			map.obj.innerHTML = "Map (Location may not be 100% accurate)";
		}
	}
}

function googleMapLoad() {
	if (GBrowserIsCompatible()) {
		var m = new getObj('google_map');
		if (m.ready) {
			var map = new GMap2(document.getElementById("google_map"));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.enableDoubleClickZoom();
			GMAP = map;
		}
	}
}

function googleMapLoadXY(x,y) {
	if (GBrowserIsCompatible()) {
		var m = new getObj('google_map');
		if (m.ready) {
			var map = new GMap2(document.getElementById("google_map"));
			map.setCenter(new GLatLng(x,y), 15);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.enableDoubleClickZoom();
			GMAP = map;
			var func = function() {
				googleMapAddMarker(x,y);
			}
			window.setTimeout(func, 0);
		}
	}
}

function googleMapAddMarker(x,y)
{
	var map = GMAP;
	var point = new GLatLng(x,y);
	var gicon = new GIcon();
	gicon.image = '/images/site/maps/marker.png';
	gicon.shadow = '/images/site/maps/shadow50.png';
	gicon.iconSize = new GSize(20, 34);
	gicon.shadowSize = new GSize(37, 34);
	gicon.iconAnchor = point;
	
	map.addOverlay(new GMarker(point, { icon: gicon }));
}

function setupGoogleResultsMap(along, alat, scale)
{
	if (GBrowserIsCompatible()) {
		var m = new getObj('googleMainMap');
		if (m.ready) {
			var map = new GMap2(m.obj);
			map.setCenter(new GLatLng(alat, along), scale);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.enableDoubleClickZoom();
			GMAP = map;
		}
	}
}

function plotGoogleMapPoints(points)
{
	var map = GMAP;
	for (n = 0; n < points.length; n ++) {
		var lat = points[n][0];
		var lng = points[n][1];
		var lid = points[n][2];
		var point = new GLatLng(lat, lng);
		var gicon = new GIcon();
		gicon.image = '/images/site/maps/marker.png';
		gicon.shadow = '/images/site/maps/shadow50.png';
		gicon.iconSize = new GSize(20, 34);
		gicon.shadowSize = new GSize(37, 34);
		gicon.iconAnchor = point;
		
		marker = new GMarker(point, { icon: gicon, title: 'Click to View Details' });
		marker.property_id = lid;
		marker.property_hint = "Click To Show Details";
		marker.onMapClick = function() {
			if (GMAP.lastClickedMarker) {
				var gicon2 = GMAP.lastClickedMarker.getIcon();
				gicon2.image = '/images/site/maps/marker.png';
				GMAP.removeOverlay(GMAP.lastClickedMarker);
				GMAP.addOverlay(GMAP.lastClickedMarker);
			}
			GMAP.lastClickedMarker = this;
			
			var gicon2 = this.getIcon();
			gicon2.image = '/images/site/maps/marker2.png';
			GMAP.removeOverlay(this);
			GMAP.addOverlay(this);
			getPropertyBrief(this.property_id);
		};
		
		GEvent.bind(marker, "click", marker, marker.onMapClick);
		
		map.addOverlay(marker);
	}
}

function getPropertyBrief(id)
{
	if (properties[id]) {
		values = new Array();
		values[0] = new Array();
		values[0][0] = id;
		values[0][1] = properties[id];
		displayBrief('', values);
	}
	else {
		var func = displayBrief;
		var atts = '';
		var cmd = "property.getBrief";
		
		if (propertyListStyle == 2) {
			cmd = "property.getIBrief";
		}
		
		myRPC(cmd,id,func,atts);
	}
};

function displayBrief(atts, values)
{
	if (values.length == 1) {
		var property = values.pop();
		var id = property[0];
		var html = property[1];
		var block = new getObj("mapPropertyDetails");
		block.obj.innerHTML = decode64(html);
		properties[id] = html;
	}
}

