/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
//Function to initialise the XMLHttpRequest object, based on IBM tutorial
function init() {
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
	  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	  try {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (e2) {
		xmlHttp = false;
	  }
	}
	@end @*/
	
	if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
	  xmlHttp = new XMLHttpRequest();
	}
}

//Creates the address to do the AJAXing sets up the state change detection
function getData(form) {
	googleTidyUp();
	tidyUp();
	if(xmlHttp) {
		document.getElementById("status").firstChild.data = "Please Wait....";
	} else {
		document.getElementById("status").firstChild.data = "You don't appear to have AJAX support enabled";
		return ;
	}
	// Build the URL to connect to
	var url = "ajax.php?abc=abc";
	var params = "";
	var kml = "kml.php?abc=abc";
	var optionList = form.country.options;
	for(var i=0; i<optionList.length; i++) {
		if(optionList[i].selected) {
			params += "&country[]=" + optionList[i].value;
		}
	}
	var optionList = form.sport.options;
	for(var i=0; i<optionList.length; i++) {
		if(optionList[i].selected) {
			params += "&sport[]=" + optionList[i].value;
		}
	}
	var link = document.getElementById("earthLink");
	if(link) {
		link.setAttribute("href", kml + params);
	}
	// Open a connection to the server
	xmlHttp.open("GET", (url + params), true);	
	// Setup a function for the server to run when it's done
	xmlHttp.onreadystatechange = makeTable;	
	// Send the request
	xmlHttp.send(null);
}

//Tidies the pages up
function tidyUp() {
	document.getElementById("status").style.display = "block";
	document.getElementById("data").style.visibility = "hidden";
	document.getElementById("note").style.visibility = "hidden";
	var tbl = document.getElementById("data");
	if(tbl.firstChild.nodeName != "TBODY") {
		tbl = tbl.firstChild.nextSibling;
	} else {
		tbl  = tbl.firstChild;
	}
	var nodeLength = tbl.childNodes.length;
	for(var i=1; i<nodeLength; i++) {
		tbl.removeChild(tbl.childNodes[1]);
	}
}
//Tidies google map things
function googleTidyUp() {
	tidyUp();/*
	map.clearOverlays();
	*/
	map.getInfoWindow().hide();
	for(var i=0;i<markers.length; i++) {
		if(typeof markers[i] != 'undefined') {
			GEvent.clearListeners(markers[i], 'click');
			map.removeOverlay(markers[i]);
		}
	}
	markers = new Array();
	points = new Array();
	document.getElementById("status").style.display = "none";
	map.setCenter(center, 1, G_SATELLITE_MAP);
}

//Creates the results table
function makeTable() {
	if (xmlHttp.readyState == 4) {
		var row = document.createElement("TR");
		var link = document.createElement("A");
		var zoomLink = document.createElement("A");
		zoomLink.title="Click to Zoom";
		var linkText = document.createTextNode("(Official Site)");
		link.appendChild(linkText);
		row.className="odd";
		var rowTemp;
		var td = document.createElement("TD");
		var tbl = document.getElementById("data");
		var response = xmlHttp.responseText;
		var lines = response.split("\n");
		var tbl = document.getElementById("data");
		if(tbl.firstChild.nodeName != "TBODY") {
			tbl = tbl.firstChild.nextSibling;
		} else {
			tbl  = tbl.firstChild;
		}
		if(lines.length == 1) {
			googleTidyUp();
			document.getElementById("status").firstChild.data = "No results were found for your search";
			document.getElementById("status").style.display = "block";
			return ;
		}
		for(var i=0; i<(lines.length-1); i++) {
			lines[i] = (lines[i].substring(1,lines[i].length-1)).split("\",\"");
			rowTemp = row.cloneNode(false);
			var temp = td.cloneNode(false);
			var zoomTemp = zoomLink.cloneNode(false);
			//Team Name - Location
			var teamText = lines[i][0] + " - " + lines[i][1]
			zoomTemp.appendChild(document.createTextNode(teamText));
			zoomTemp.href = "javascript:zoom(" + lines[i][4] + "," + lines[i][5] + ")";
			temp.appendChild(zoomTemp);
			temp.appendChild(document.createTextNode(" "));
			//URL
			linkTemp = link.cloneNode(true)
			linkTemp.href = lines[i][3];
			temp.appendChild(linkTemp);
			rowTemp.appendChild(temp);
			//Country
			temp = td.cloneNode(false);
			temp.appendChild(document.createTextNode(lines[i][2]));
			rowTemp.appendChild(temp);
			
			rowTemp.className=((i%2==0)?"odd":"even");
			tbl.appendChild(rowTemp);
			
			//Map things
			var team = lines[i][0];
			var name = lines[i][1];
			var url = lines[i][3]
			var id = lines[i][4];
			var zoom = lines[i][5];
			var lat = lines[i][6];
			var lng = lines[i][7];
			//Create Map Marker
			//createMarker(id, team, name, url, lat, lng, zoom);
			window.setTimeout("createMarker(" + id + ",'" + team.replace("'", "&#145;") + "','" + name.replace("'", "&#145;") + "','" + url+ "'," + lat+ "," + lng+ "," + zoom + ")", 0);
		}
		//Make everything appear
		document.getElementById("data").style.visibility = "visible";
		document.getElementById("note").style.visibility = "visible";
		document.getElementById("status").style.display = "none";
		if(start == true) {
			window.setTimeout("zoom(" + id + "," + zoom + ")",100);
			start = false;
		}
	}
}

//Create Marker
function createMarker(id, team, name, url, lat, lng, zoom) {
	var point = new GLatLng(lat, lng);
	var zoomIn = '<a href="javascript:zoom(' + id  +',' + zoom + ')">Zoom In<\/a>';
	var zoomOut = '<a href="javascript:zoom(' + id  +',1)">Zoom Out<\/a>';
	var html = name + "<br>";
		html += '<a href="' + url + '" target="_blank" >' + team + "<\/a>";
		html += "<p><small>" + zoomIn + " | " + zoomOut +"<\/small><\/p>";
	points[id] = point;
	markers[id] = new GMarker(point);
	GEvent.addListener(markers[id], "click", function() {
		markers[id].openInfoWindowHtml(html);
	});
	map.addOverlay(markers[id]);
}

//Zooms in to the selected point
function zoom(id, level) {
	map.setCenter(points[id],level, G_SATELLITE_MAP)
	GEvent.trigger(markers[id], "click");
}
