var map;
var currentselected=0;
var greenIcon = getGIcon("/community/images/green.png");
var greenIconSelected = getGIcon("/community/images/green_highlight.png");
var selectedsales=Array();
var unselectedsales=Array();
var lastdiv;

function getGIcon(imageurl) {
  var theicon=new GIcon();
  theicon.image = imageurl;
  theicon.shadow = "/community/images/shadow50.png";
  theicon.iconSize = new GSize(32, 32);
  theicon.shadowSize = new GSize(37, 34);
  theicon.iconAnchor = new GPoint(9, 34);
  theicon.infoWindowAnchor = new GPoint(19, 2);
  return theicon;
}
      
function init() {
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
	updateMarkers();
	GEvent.addListener(map,'zoomend',function() {
		updateMarkers();
	});
	GEvent.addListener(map,'dragend',function() {
		updateMarkers();
	});
}


function updateMarkers() {
	lastdiv=0;
	currentselected=0;
	//remove the existing points
	map.clearOverlays();
	//create the boundary for the data
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var getVars = 'ne=' + northEast.toUrlValue()
	+ '&sw=' + southWest.toUrlValue()
	// log the URL for testing
	//GLog.writeUrl('js/server_sales.php?'+getVars);
	// retrieve the points using Ajax
	var request = GXmlHttp.create();
	request.open('GET', 'js/server_sales.php?'+getVars, true);

	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var jscript = request.responseText;
			var points;
			var resultslist=new Array();
			eval(jscript);
			var totalresults=0;
			for (i in points) {
				++totalresults;
				if (resultslist[points[i].level]==undefined) {
					resultslist[points[i].level]="";
				}
				resultslist[points[i].level]+="\n<li><div id=\"salediv"+totalresults+"\">"+points[i].sale;
				resultslist[points[i].level]+="<br/><a class=\"centermap\" href=\"#top\" onClick='selectAndCenterMap("+totalresults+","+points[i].lat+","+points[i].lng+");'>Center map on property</a></div></li>\n";
			
			}
			var rlkeys=new Array(resultslist.length);
			for (thelist in resultslist) {
				// document.write(thelist);
				rlkeys.push(thelist);
			}
//			rlkeys.sort(hoteltypesortfunction);
			
			
			totalresults=0;
			//create each point from the list
			for (i in points) {
				++totalresults;
				var point = new GLatLng(points[i].lat,points[i].lng);
				var marker = createMarker(point,points[i].sale,points[i].level,totalresults,false);
				map.addOverlay(marker);
				marker = createMarker(point,points[i].sale,points[i].level,totalresults,true);
				map.addOverlay(marker);
				marker.hide();
			}
			var resultstext="";
			for (level in rlkeys) {
				var thekey=rlkeys[level];
//				resultstext+="<div class=\"title\">"+thekey+"</div>\n<ul>"+resultslist[thekey]+"</ul><br>\n";
				resultstext+="<div class=\"list\"><ul>"+resultslist[thekey]+"</ul></div>";
			}
			var divel=document.getElementById('listdiv');
			if (totalresults==0) {
				if (startZoom!==0) {
					startZoom--;
					map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
				}
			} else if (totalresults==1) {
				divel.innerHTML="<div class=\"results\">Recent sale</div>"+resultstext;
			} else {
				divel.innerHTML="<div class=\"results\">Recent sales</div>"+resultstext;
			}
		} //end if readystate 4
		
	}
 
	request.send(null);
}

function selectAndCenterMap(itemnum,maplat, maplong) {
	map.panTo(new GLatLng(maplat,maplong), 13);
	markselected(itemnum);
	return true;
}

function createMarker(point, html, level,itemnum,isselected) {
	
	if (!isselected) {
		var icon=greenIcon; 
	} else {
		var icon=greenIconSelected; 
	}
	//alert("isselected: "+isselected+", image is "+icon.image);
	var marker = new GMarker(point,icon);
	GEvent.addListener(marker, 'click', function() {
					var markerHTML = html;
					marker.openInfoWindowHtml(markerHTML);
					markselected(itemnum);
	});
	if (isselected) {
		marker.hide();
	selectedsales	[itemnum]=marker;
	}
	else {
		marker.show();
	unselectedsales	[itemnum]=marker;
	}
	return marker;
}

function markselected(itemnum) {
		if (currentselected>0) {
		selectedsales	[currentselected].hide();
		unselectedsales	[currentselected].show();
    }
    unselectedsales[itemnum].hide();
    selectedsales[itemnum].show();
    currentselected=itemnum;
		if (lastdiv!=undefined && lastdiv != 0) {lastdiv.style.backgroundColor="white";}
	  var thediv=document.getElementById("salediv"+itemnum);
	  thediv.style.backgroundColor="#eeeeee"
	  lastdiv=thediv;
	  document.getElementById("map").focus();
}

window.onload = init;


