	
	function showAllLocations () {
		showEventLocation('', true);
	}
	
	function showEventLocation(ename,allevents) {
		var resp = document.getElementById('searchResults');
		var trArray = resp.getElementsByTagName('tr');
		//map.clearOverlays();
		for (var i=0; i<markers.length; i++) {
			markers[i].hide();
		}
		for (var i=0; i<trArray.length; i++) {
			var tdArray = trArray[i].getElementsByTagName('td');
			if (tdArray.length>0) {
				var a = tdArray[0].firstChild;
				if (allevents || ((a) && (a.textContent==ename))) {
					showLocationMarker(tdArray[3].firstChild, false);
				}
			}
		}
	  if (markers.length>1) map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)-1);
	}
	
	function showLocationMarker(a, mopen) {
		//var aArray = td.getElementsByTagName('a');
		var locname = a.textContent;
		var address = a.getAttribute('addr');
		var lat = a.getAttribute('lat');
		var lng = a.getAttribute('lng');
		showMarker(locname, address, lat, lng, mopen);
	}

	function showMarker(lname, laddr, lat, lng, mopen) {
		var marker = null;
		var mlat = null;
		var mlng = null;
		for (i=0; i<markers.length; i++) {
			mlat = markers[i].getLatLng().lat();
			mlng = markers[i].getLatLng().lng();
			if ((lat==mlat)&&(lng==mlng)) {
				marker = markers[i];
				//alert ('marker found');
			}
		}			
		var mhtml = "<b>"+lname+"</b><br/>"+laddr;
	  if (marker==null) {
	  	//alert ('creating marker');
			var point = new GLatLng(parseFloat(lat),parseFloat(lng));
		  bounds.extend(point);
	  	marker = createMarker(point, mhtml);
	  	markers[markers.length] = marker;
		  map.addOverlay(marker);
		}
		if (marker.isHidden()) marker.show();
	  if (mopen) marker.openInfoWindowHtml(mhtml);
	}

	function createMarker(point, mhtml, icon) {
	  var marker = null;
	  if (typeof icon == "undefined") icon = "event";
	  marker = new GMarker(point, customIcons[icon]);
	  GEvent.addListener(marker, 'click', function() {
	    marker.openInfoWindowHtml(mhtml);
	  });
	  return marker;
	}

  function updateSidebar(e) {
		var sidebar = document.getElementById('searchResults');
		sidebar.innerHTML = '';

		var eventtable = document.createElement("table");
		eventtable.setAttribute( "class", "sortable");

		var eventtablehead = document.createElement("thead");
		eventtable.appendChild(eventtablehead);
				
  	var eventtableheaderrow = document.createElement("tr");
  	eventtablehead.appendChild(eventtableheaderrow);
  	
  	var eventcolheader = document.createElement("th");
  	eventtableheaderrow.appendChild(eventcolheader);
  	eventcolheader.innerHTML = "Event";

  	var ratingcolheader = document.createElement("th");
  	eventtableheaderrow.appendChild(ratingcolheader);
  	ratingcolheader.innerHTML = "Rating";
  	
  	var scheader = document.createElement("th");
  	eventtableheaderrow.appendChild(scheader);
  	scheader.innerHTML = "Schedule";
		
  	var loccolheader = document.createElement("th");
  	eventtableheaderrow.appendChild(loccolheader);
  	loccolheader.setAttribute( "onclick", "showAllLocations ();");
  	loccolheader.innerHTML = "Location";

  	var distcolheader = document.createElement("th");
  	eventtableheaderrow.appendChild(distcolheader);
  	distcolheader.innerHTML = "Dist";

		var eventtablebody = document.createElement("tbody");
		eventtable.appendChild(eventtablebody);

		if (e!=null) {
			var locations = e.getElementsByTagName('location');
			var sbevents = e.getElementsByTagName('event');
			for (var i=0; i<sbevents.length; i++) {
				var eventname = sbevents[i].getAttribute('name');
				var eventtype = sbevents[i].getAttribute('type');
				
				var criticsRating = sbevents[i].getAttribute('criticsRating');
				var mclink = sbevents[i].getAttribute('criticslink');
	
	
				var locname = sbevents[i].getElementsByTagName("location")[0].getAttribute('name');
				var locdist = sbevents[i].getElementsByTagName("location")[0].getAttribute('distance');
				var address = sbevents[i].getElementsByTagName("location")[0].getAttribute('addr1');
				var lat = sbevents[i].getElementsByTagName("location")[0].getAttribute('lat');
				var lng = sbevents[i].getElementsByTagName("location")[0].getAttribute('lng');
				var sss = sbevents[i].getElementsByTagName("schedule");
				var sched = "";
				if (sss.length>0) sched = sbevents[i].getElementsByTagName("schedule")[0].getAttribute('hour');
				var ehref = sbevents[i].getElementsByTagName("abstract")[0].getAttribute('website');
				var mhtml = "<b>"+locname+"</b><br/>"+address;
		  	
		  	var eventrow = document.createElement("tr");
		  	eventtablebody.appendChild(eventrow);
		  	
		  	var eventcol = document.createElement("td");
		  	eventrow.appendChild(eventcol);
		  	eventcol.setAttribute( "valign", "top");
		  	var eventlink = document.createElement("a");
		  	eventcol.appendChild(eventlink);
		  	eventlink.setAttribute( "href", ehref);
				eventlink.setAttribute( "onclick", 'showEventLocation(this.textContent);');
				eventlink.setAttribute( "target", "movieInfo");
				if (sched) eventlink.setAttribute( "title", sched);
				eventlink.textContent = eventname;
	
		  	var ratingcol = document.createElement("td");
		  	eventrow.appendChild(ratingcol);
		  	ratingcol.setAttribute( "valign", "top");
		  	var ratinglink = document.createElement("a");
		  	ratingcol.appendChild(ratinglink);
		  	ratinglink.setAttribute( "href", "http://www.metacritic.com"+mclink);
				ratinglink.setAttribute( "target", "movieInfo");
				ratinglink.textContent = criticsRating;
		  	
		  	var schedcol = document.createElement("td");
		  	eventrow.appendChild(schedcol);
		  	schedcol.setAttribute( "valign", "top");
				schedcol.textContent = sched;
				
		  	var loccol = document.createElement("td");
		  	eventrow.appendChild(loccol);
		  	loccol.setAttribute( "valign", "top");
		  	var loclink = document.createElement("a");
		  	loccol.appendChild(loclink);
		  	loclink.setAttribute( "href", "#");
		  	loclink.setAttribute( 'onclick', 'showMarker("'+lat+'","'+lng+'","'+mhtml+'", true);return false;');
				loclink.textContent = locname;
		 		
		  	var distcol = document.createElement("td");
		  	eventrow.appendChild(distcol);
		  	distcol.setAttribute( "valign", "top");
				distcol.textContent = locdist;
	
			}
		}
		sidebar.appendChild(eventtable);
		sorttable.makeSortable(eventtable);
	}
	
	function encodeURLdata(inputString) {
	  var encodedInputString=escape(inputString);
	  encodedInputString=encodedInputString.replace("+", "%2B");
	  encodedInputString=encodedInputString.replace("/", "%2F"); 
	  return encodedInputString;
	}


    var iconBlue = new GIcon(); 
    iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
    iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconBlue.iconSize = new GSize(12, 20);
    iconBlue.shadowSize = new GSize(22, 20);
    iconBlue.iconAnchor = new GPoint(6, 20);
    iconBlue.infoWindowAnchor = new GPoint(5, 1);

    var iconRed = new GIcon(); 
    iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
    iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconRed.iconSize = new GSize(12, 20);
    iconRed.shadowSize = new GSize(22, 20);
    iconRed.iconAnchor = new GPoint(6, 20);
    iconRed.infoWindowAnchor = new GPoint(5, 1);

    var customIcons = [];
    customIcons["center"] = iconBlue;
    customIcons["event"] = iconRed;
