//<![CDATA[
function createMarker(ind, markerInfo) {
  var point = new GPoint(markerInfo.getLon(), markerInfo.getLat() ); 
  var myicon; 
  if ('1' == markerInfo.getMarker() ) { 
  	myicon = icon2;
  } else {
  	myicon = icon;
  }
  markerarray[ind] = new GMarker(point, myicon);
  map.addOverlay(markerarray[ind]);
  var info = formatInfoWin( ind, markerInfo.getIndex(), 
  			markerInfo.getName(), 
  			markerInfo.getDate(), 
  			markerInfo.getLoc() );
  GEvent.addListener(
  	markerarray[ind], "click", function() { 
		map.closeInfoWindow();
		showWholeBlurb("Loading...");
  		getBlurb(ind, markerInfo.getIndex());
  		map.centerAtLatLng(point);
  		markerarray[ind].openInfoWindowHtml( info );
		curmarker = ind;
  	}
  );
  GEvent.addListener(
  	markerarray[ind], "infowindowclose", function() { clearBlurb() }
  );
  addIndex(ind, markerInfo.getDate(), markerInfo.getLoc(), markerInfo.getName());
}
function formatInfoWin(ind, id, name, date, location) {
	var html = "<div align=left style=\"font-family: helvetica; font-size: 11;\">";
        html += "<b>Sighting&nbsp;#" + (ind+1) + "</b><br>";
	html += "<b>Name:</b>&nbsp;" + name + "<br>";
	html += "<b>Location:</b>&nbsp;" + location + "<br>";
	html += "<b>Date:</b>&nbsp;" + date;
	html += "</div>";
	return html;
}
function startIndex() {
  indextext = "<div class=text><table class=text border=0 cellspacing=5><tr><th>&nbsp;</th><th align=left>Date</th><th align=left>Location</th></tr>";
}
function endIndex() {
  indextext += "</table></div>";
}
function addIndex(ind, date, location, name) {
  indextext += "<tr><td align=right>" + (ind+1) + ".</td>";
  indextext += "<td>" + date + "</td>";
  indextext += "<td><a href=\"javascript:goMarker(" + ind + ");\">" + location + "</a></td>";
  indextext += "</tr>";
}
function getBlurb(ind, id) {
	var request = GXmlHttp.create();
	request.open("GET", dataDir+"sighting"+id+".xml", true);
	request.onreadystatechange = function() {

	if (request.readyState == 4) {
   	    var xmlDoc = request.responseXML;
        var blurb = 
        	xmlDoc.documentElement.getElementsByTagName("siting")[0].firstChild.nodeValue;
        var html = "<tt><b>Sighting #" + (ind+1) + "</b><br>"+blurb+"</tt><hr>";
        if (xmlDoc.documentElement.getElementsByTagName("comments")[0].childNodes.length > 0) {
          var comments = 
        	xmlDoc.documentElement.getElementsByTagName("comments")[0].firstChild.nodeValue;
          html += comments; 
	}
		showWholeBlurb(html);
       }
    }
    request.send(null);
}
function showWholeBlurb(blurb) {
	document.getElementById("blurb").innerHTML = blurb;
}
function getBlurbText() {
  return document.getElementById("blurb").innerHTML;
}
function clearBlurb() {
	showWholeBlurb("<br><br><center>Have you seen the crossingman?<br><br><a href=/atfmail/?SendTo=xingman>Contact us</a> with the date, time, and location (a picture is nice too).</center>");
}
function markerInfo(sightingNode) {
	this.lat = sightingNode.getElementsByTagName("lat")[0].firstChild.nodeValue;
	this.lon = sightingNode.getElementsByTagName("lon")[0].firstChild.nodeValue;
	this.index = sightingNode.getElementsByTagName("ind")[0].firstChild.nodeValue;
	this.name = sightingNode.getElementsByTagName("person")[0].firstChild.nodeValue;
	this.location = sightingNode.getElementsByTagName("location")[0].firstChild.nodeValue;
	this.date = sightingNode.getElementsByTagName("datestamp")[0].firstChild.nodeValue;
        this.marker = sightingNode.getElementsByTagName("marker")[0].firstChild.nodeValue;
	this.getLat = function() { return this.lat; }
	this.getLon = function() { return this.lon; }
	this.getName    = function() { return this.name; }
	this.getLoc     = function() { return this.location; }
	this.getDate    = function() { return this.date; }
	this.getIndex   = function() { return this.index; }
        this.getMarker  = function() { return this.marker; }
	this.getGPoint  = function() { return new GPoint(this.lat, this.lon); }
}
function getData() {
	var request = GXmlHttp.create();
	request.open("GET", dataDir+"markers.xml", true);
	request.onreadystatechange = function() {
	  if (request.readyState == 4) {
   	    var xmlDoc = request.responseXML;
		var sightings = xmlDoc.documentElement.getElementsByTagName("markers");
		markerarray = new Array(sightings.length);
		startIndex();
		for ( var i = 0 ; i < sightings.length  ; ++i ) {
			var mi = new markerInfo(sightings[i]); 
			createMarker(i, mi);
		}
		endIndex();
	  }
    }
    request.send(null);
}

function prevMarker() {
  goMarker(curmarker-1);
}
function nextMarker() {
  goMarker(curmarker+1);
}
function randomMarker() {
  goMarker(Math.floor(Math.random()*markerarray.length));
}
function goMarker(newmarker) {
  curmarker = newmarker;
  if (curmarker>=markerarray.length) {
    curmarker=-2;
  }
  if (curmarker<-2) {
    curmarker=markerarray.length-1;
  }
  if (curmarker >= 0) {
    GEvent.trigger(markerarray[curmarker], "click");
  } else if (curmarker == -1) {
    map.closeInfoWindow();
    showWholeBlurb(indextext);
  } else if (curmarker == -2) {
    map.closeInfoWindow();
    showWholeBlurb(hometext);
    defaultMap();
  }
}
function defaultMap() {
    map.centerAndZoom(new GPoint(lon, lat), zoom);
}

var dataDir = "http://www.alltooflat.com/pranks/crossingman/sightings/data/"
var icon = new GIcon();
icon.image = "xingman10.png";
icon.shadow = "xingmanshadow10.png";
icon.iconSize = new GSize(10,18);
icon.shadowSize = new GSize(18,18);
icon.iconAnchor = new GPoint(5, 18);
icon.infoWindowAnchor = new GPoint(5, 1);
var icon2 = new GIcon(icon);
icon2.image = "questionmark10.png";
icon2.shadow = "questionmarkshadow10.png";
var lon=-96.353637;
var lat=36.593750;
var zoom=14;
var map = new GMap(document.getElementById("map"));
map.addControl(new GLargeMapControl ());
map.addControl(new GMapTypeControl());
defaultMap();
var markerarray;
var curmarker=-2;
var hometext = getBlurbText();
var indextext = "";
getData();
//]]>

