	//<![CDATA[
	var map;
	var markers = [];
	var infoWindow;
	var locationSelect;
	var sidebar;
	var sLat;
	var sLng;

	function load() {
		map = new google.maps.Map(document.getElementById("map"), {
			center: new google.maps.LatLng(40, -100),
			zoom: 4,
			mapTypeId: 'roadmap',
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
		});
		infoWindow = new google.maps.InfoWindow();
      	sidebar = document.getElementById("sidebar");
	}

	function searchLocations() {
		var address = document.getElementById("addressInput").value;
		var geocoder = new google.maps.Geocoder();
		geocoder.geocode({address: address}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				var locationMarker = new google.maps.Marker({
					map: map,
					position: results[0].geometry.location
				});
				sLat = results[0].geometry.location.lat();
				sLng = results[0].geometry.location.lng();
				searchLocationsNear(results[0].geometry.location.lat(), results[0].geometry.location.lng());
			} else {
				alert(address + ' not found');
			}
		});
	}

	function clearLocations() {
		infoWindow.close();
		for (var i = 0; i < markers.length; i++) {
			markers[i].setMap(null);
		}
		markers.length = 0;
	}

	function autoSetLocation(lat,lng) {
		if(lat && lng) {
			searchLocationsNear(lat, lng);
		}
	}

	function searchLocationsNear(lat, lng) {
		clearLocations();
		var radius = document.getElementById('radiusSelect').value;
		var searchUrl = 'phpsqlsearch_genxml.php?lat=' + lat + '&lng=' + lng + '&radius=' + radius;

		downloadUrl(searchUrl, function(data) {
		var xml = parseXml(data);
		var markerNodes = xml.documentElement.getElementsByTagName("marker");
		var sidebar = document.getElementById('sidebar');
		sidebar.innerHTML = '';
		if (markerNodes.length == 0) {
			sidebar.innerHTML = 'No results found.';
			map.setCenter(new GLatLng(40, -100), 4);
			return;
		}

		var numResults = document.getElementById('resultCount');
		var html = "<span class=\"counter\">" + markerNodes.length + "</span>";
		if (markerNodes.length == 1) {
			html += " Store in Your Area";
		} else {
			html += " Stores in Your Area";
		}
		numResults.innerHTML = html;

		var bounds = new google.maps.LatLngBounds();
		for (var i = 0; i < markerNodes.length; i++) {
			var name = markerNodes[i].getAttribute("name");
			var address1 = markerNodes[i].getAttribute("address1");
			var address2 = markerNodes[i].getAttribute("address2");
			var city = markerNodes[i].getAttribute("city");
			var stateprov = markerNodes[i].getAttribute("stateprov");
			var zip = markerNodes[i].getAttribute("zip");
			var phone = markerNodes[i].getAttribute("phone");
			var store_type = markerNodes[i].getAttribute("store_type");         
			var distance = parseFloat(markerNodes[i].getAttribute("distance"));
			var latlng = new google.maps.LatLng(
				parseFloat(markerNodes[i].getAttribute("lat")),
				parseFloat(markerNodes[i].getAttribute("lng")));
			var marker = createMarker(latlng, name, address1, address2, city, stateprov, zip, phone, store_type);
			var sidebarEntry = createSidebarEntry(marker, name, address1, address2, city, stateprov, zip, phone, distance);
			sidebar.appendChild(sidebarEntry);
			bounds.extend(latlng);
		}
		map.fitBounds(bounds);
       
		});
	}
  
	function createMarker(latlng, name, address1, address2, city, stateprov, zip, phone, store_type) {
		var html = "<div class=\"storemarker\"><span class=\"title\">" + name + "</span><br /><span class=\"address\">" + address1;
		if (address2 != "") {
			html += "<br />" + address2;
		}
		html += "<br />" + city + ", " + stateprov;
		if (phone != "") {
			html += "<br /><span class=\"phone\">" + phone + "</span>";
		}
		var dAddress = escape(address1 + " " + address2 + " " + city + "," + stateprov);
		html += "<br /><span class=\"directions\"><a href=\"http://maps.google.com/maps?saddr=" + sLat + "," + sLng + "&daddr=" + dAddress + "\" target=\"_blank\">Driving Directions</a></span>";
		html += "</div>";
				
		if (store_type == "E") {
			var marker = new google.maps.Marker({
				map: map,
				position: latlng,
				icon: 'images/experience.png' 
			});
		} else if (store_type == "S") {
			var marker = new google.maps.Marker({
				map: map,
				position: latlng,
				icon: 'images/wii.png' 
			});
		} else {
			var marker = new google.maps.Marker({
				map: map,
				position: latlng
			});
		}

		google.maps.event.addListener(marker, 'click', function() {
			infoWindow.setContent(html);
			infoWindow.open(map, marker);
		});
		return marker;
	}

	function createSidebarEntry(marker, name, address1, address2, city, stateprov, zip, phone, distance) {
		var div = document.createElement('div');
		var html = '<span class="location">' + name + '</span> <span class="distance">(' + distance.toFixed(1) + 'mi)</span><br />' + address1;		
		if (address2 != "") {
			html += "<br />" + address2;
		}
		html += "<br />" + city + ", " + stateprov;
		if (phone != "") {
			html += "<br />" + phone;
		}
		div.innerHTML = html;
		div.style.cursor = 'pointer';
		//div.style.paddingBottom = '5px';
		//div.style.marginBottom = '5px';
		//div.style.borderBottom = '1px solid #333';
		google.maps.event.addDomListener(div, 'click', function() {
        	div.className = 'active';
        	google.maps.event.trigger(marker, 'click');
		});
		google.maps.event.addDomListener(div, 'mouseover', function() {
			div.style.backgroundColor = '#b6e2ed';
		});
		google.maps.event.addDomListener(div, 'mouseout', function() {
			div.style.backgroundColor = '#fff';
		});

  		return div;
	}

	function downloadUrl(url, callback) {
		var request = window.ActiveXObject ?
			new ActiveXObject('Microsoft.XMLHTTP') :
			new XMLHttpRequest;

		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				request.onreadystatechange = doNothing;
				callback(request.responseText, request.status);
			}
		};
		request.open('GET', url, true);
		request.send(null);
	}

	function parseXml(str) {
		if (window.ActiveXObject) {
			var doc = new ActiveXObject('Microsoft.XMLDOM');
			doc.loadXML(str);
			return doc;
		} else if (window.DOMParser) {
			return (new DOMParser).parseFromString(str, 'text/xml');
		}
	}

	function doNothing() {}

	//]]>
