var map;
var baseIcon;
var point;
var marker;
var infoToShow;
var dom;
var centerpoint;
var request;
var request2;
var totalLat = 0;
var totalLng = 0;
var totalPoints = 0;
var gmarkers = new Array();
var htmls = new Array();
var radiusOfEarth = 3958.75;
var degreesPerRadian = 180 / Math.PI;
var radiansPerDegree = Math.PI / 180;
var deltaLat;
var deltaLng;
var top;
var left;
var right;
var bottom;
var points = []; 
var bounds;

function preloadMarkers() {
	var i = 0;
	img = new Image();
	images = new Array("./images/mm_20_green.png","./images/mm_20_blue.png","./images/mm_20_red.png");
	for (i = 0; i < images.length; i++) {
		img.src = images[i];     
	}
}

function getElementTextNS(prefix, local, parentElem, index) { 
	var result = ""; 
	if (prefix && isIE) { 
		result = parentElem.getElementsByTagName(prefix + ":" + local)[index]; 
	} 
	else { 
		result = parentElem.getElementsByTagName(local)[index]; 
	} 
	if (result) { 
		if (result.childNodes.length > 1) { 
			return result.childNodes[1].nodeValue; 
		} 
		else { 
			if (result.firstChild == null) {
				return ''; 
			}
			return result.firstChild.nodeValue;             
		} 
	} 
	else { 
		return "n/a"; 
	} 
}

function buildInfoWindow(url, created, age, address, address2, price, img, bedrooms, bathrooms, mls, sqFt, sold, solddate, soldprice) {
	var theHtml = "";
	
	theHtml = '<div style="padding-top:3px;white-space:nowrap;"><table border=0 cellpadding=2 width="220"><tr><td style="font-size:12px;font-weight:bold;"><a href="';
	theHtml += url;
	theHtml += '" target="_blank">MLS# ' + mls + '</a></td><td width=10>&nbsp;</td>';
	if (sold == true) {
		theHtml += '</tr><td colspan=3 style="font-size:12px;font-weight:bold;" nowrap>SOLD for $' + soldprice + ' on ' + solddate + '</td></tr>';
	}
	else {
		theHtml += '<td align="right" style="font-size:12px;font-weight:bold;">';
		theHtml += '$' + price + '</td></tr>';
	}
	theHtml += '<tr><td valign="top">' + address + '<br>' + address2 + '</td><td width=10>&nbsp;</td>';
	theHtml += '<td valign="top" align="right">' + sqFt + ' SqFt.<br>' + bedrooms + ' BR/' + bathrooms + ' BA</td></tr>';
	theHtml += '<tr><td colspan=3>&nbsp;</td></tr>';
	theHtml += '<tr><td colspan=3 align="center">';
	theHtml += '<a href="' + url + '" target="_blank">';
	theHtml += '<img src="' + img + '" style="border:1px solid black" width="150"></a></td>';
	theHtml += "</tr></table></div>";
	
	return theHtml;			
}

function createAndPlotMarker(point, age, html, sold, radiussearch) {
	if (radiussearch) {
		if (sold == true) {
			baseIcon.image = "./images/mm_20_blue.png";
		}
		else {
			baseIcon.image = "./images/mm_20_red.png";
		}
	}
	else {
		if (parseInt(age) <= 3) {
			baseIcon.image = "./images/mm_20_green.png";
		}
		else if (parseInt(age) <= 7) {
			baseIcon.image = "./images/mm_20_blue.png";
		}
		else {
			baseIcon.image = "./images/mm_20_red.png";
		}
	}
	var marker = new GMarker(point, baseIcon);
	
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});
	totalLat += parseFloat(point.y);
	totalLng += parseFloat(point.x);
	gmarkers[totalPoints] = marker;
	htmls[totalPoints] = html;
	totalPoints++;
	map.addOverlay(marker);
};

function plotHomes(theXML, radiussearch) {
	var props = theXML.getElementsByTagName("prop");	
	totalPoints = 0;		
	bounds = new GLatLngBounds();
	for (var i = 0; i < props.length; i++) {
		var prop = props[i];
		var point = prop.getElementsByTagName("point")[0];
		var lat = point.attributes.getNamedItem("lat").value;
		var lon = point.attributes.getNamedItem("lng").value;
		
		var thisPoint = new GPoint(lon, lat);
		
		var gpoint = new GLatLng(lat, lon);
		bounds.extend(gpoint);
		
		var info = prop.getElementsByTagName("info")[0];
		var url = getElementTextNS("", "url", info, 0);
		var created = getElementTextNS("", "created", info, 0);
		var address = getElementTextNS("", "address", info, 0);
		var address2 = getElementTextNS("", "address2", info, 0);
		var price = getElementTextNS("", "price", info, 0);
		var img = getElementTextNS("", "img", info, 0);
		var age = getElementTextNS("", "age", info, 0);
		var bedrooms = getElementTextNS("", "bedrooms", info, 0);
		var bathrooms = getElementTextNS("", "bathrooms", info, 0);
		var mls = getElementTextNS("", "mls", info, 0);
		var sqFt = getElementTextNS("", "sqft", info, 0);
		var solddate = getElementTextNS("", "solddate", info, 0);
		var soldprice = getElementTextNS("", "soldprice", info, 0);
		
		if (solddate != "") {
			sold = true;
		}
		else {
			sold = false;
		}
		
		var theHtml = buildInfoWindow(url, created, age, address, address2, price, img, bedrooms, bathrooms, mls, sqFt, sold, solddate, soldprice);
		var mkr = createAndPlotMarker(thisPoint, age, theHtml, sold, radiussearch);
	}
	//map.setZoom(map.getBoundsZoomLevel(bounds));
	//var newcenter = new GLatLng(parseFloat(centerpoint.y), parseFloat(centerpoint.x));
	//map.setCenter(newcenter);			
	document.getElementById("resultCount").innerHTML = totalPoints;

}
// the escape() method in Javascript is deprecated -- should use encodeURIComponent if available 
function encode(uri) { 
	if (encodeURIComponent) { 
		return encodeURIComponent(trim(uri)); 
	} 				
	if (escape) { 
		return escape(trim(uri)); 
	} 
}
// trim function
function trim(str) { 
	//return str.replace(/^\s*|\s*$/g,""); 
	return str;
}
