var xmlHttp;
var flag = "notinquotes";

function createTable()
{
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	} 
        if(document.getElementById("useArtist").innerHTML=="all")
        {
                var url="/ScheduleDatabase.csv";
        } else {
                var url="/ScheduleDatabase.csv";
        }
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
} 

function stateChanged() 
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		parseResponse(xmlHttp.responseText);
	} 
} 

function GetXmlHttpObject()
{ 
	var objXMLHttp=null;
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest();
	} 
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	return objXMLHttp;
} 

	function toggleFlag()
	{
		if (flag == "notinquotes")
		{
			flag = "inquotes";
		} else {
			flag = "notinquotes";
		}
	}

function parseResponse(response)
{

        // these make the split handle quotes and commas properly
	response = response.split(""); // split the whole string into an array of characters
	for(i=0;i<response.length;i++)	// i is a single character in the database file
	{
		if (response[i] == "\"")
		{
			toggleFlag(); // toggle whether or not we are inside of quotes
		}

		if (response[i] == "," && flag=="inquotes")
		{
			response[i] = "&#44;"; // replace commas with entity reference for a comma
		}
	}
	response = response.join(""); // combine the array back into a string

	response = response.replace(/\"/g,""); // remove quotes

	database = response.split("\n");	// split database into lines

	for(i in database)	// i is a line in the database
	{
		database[i] = database[i].split(",");		// split each line into columns
	}










// an explanation:
//		database[x][0] is the name
//		database[x][1] is the start_date
//		database[x][2] is the end_date
//		database[x][3] is the production
//		database[x][4] is the role
//		database[x][5] is the theater/company
//		database[x][6] is the Name URL
//              database[x][7] is the Company/Venue URL
//	... where x is the line#


	var useArtist = document.getElementById("useArtist").innerHTML;



	var tableHTML = "";
	tableHTML += "<table border='0' id='sortme' class='skedtable' align='center' width='90%' cellspacing='0' cellpadding='5' style='background-color: rgb(202, 234, 228);font-family:arial;font-size:10pt;border-collapse:collapse;'>";
	tableHTML += "<thead><tr><th style='border:1px solid black;'><a href='javascript:void(0);'>Name</a></th><th style='border:1px solid black;'><a href='javascript:void(0);'>Start Date</a></th><th style='border:1px solid black;'><a href='javascript:void(0);'>End Date</a></th><th style='border:1px solid black;'><a href='javascript:void(0);'>Production</a></th><th style='border:1px solid black;'><a href='javascript:void(0);'>Role/Position</a></th><th style='border:1px solid black;'><a href='javascript:void(0);'>Company/Venue</a></th></tr></thead><tbody>";

	for(i in database)
	{
		if(database[i][0] == useArtist.replace(",","&#44;") || useArtist == "all")
		{
				var todaysDate = new Date();
				todaysDate.setHours(0,0,0,0);
                                database[i][2] = (database[i][2]) ? database[i][2] : "";
				var eventDate = database[i][2].replace(/\./g,"/");
				var eventDateObj = new Date();
				eventDateObj.setTime(Date.parse(eventDate));
				eventDate = eventDate.split("/");
				var year = eventDate[0];
				var month = eventDate[1];
				var date = eventDate[2];
				if(year == "00") {
					var show_for_eternity = true;
				} else if(month == "00") {
					eventDateObj.setYear(year*1+1);
					eventDateObj.setTime(eventDateObj.getTime() - 1000*60*60*24); // subtract a day
				} else if(date == "00") {
					eventDateObj.setDate(01);
					if(month*1-1 < 11) {
						eventDateObj.setMonth((month*1-1)+1);
					} else {
						eventDateObj.setYear(year*1+1);
						eventDateObj.setMonth(0);
					}
					eventDateObj.setTime(eventDateObj.getTime() - 1000*60*60*24); // subtract a day
				}

			if(todaysDate.getTime() <= eventDateObj.getTime() || show_for_eternity) {
				tableHTML += "<tr><td style='border:1px solid black;'>";

				if(database[i][6] && database[i][6].match(/[a-zA-Z0-9]+/))
				{
					tableHTML += "<a href='" + database[i][6] + "' target='_blank'>" + database[i][0] + "</a>";
				} else {
					tableHTML += database[i][0];
				}

				tableHTML += "</td><td style='border:1px solid black;'>" + database[i][1] + "</td><td style='border:1px solid black;'>" + database[i][2] + "</td><td style='border:1px solid black;'>" + database[i][3] + "</td><td style='border:1px solid black;'>" + database[i][4] + "</td><td style='border:1px solid black;'>";
			


				if(database[i][7] && database[i][7].match(/[a-zA-Z0-9]+/))
				{
					tableHTML += "<a href='" + database[i][7] + "' target='_blank'>" + database[i][5] + "</a>";

				} else {
					tableHTML += database[i][5];
				}
	
				tableHTML += "</td></tr>";
			}
		}
	}

	tableHTML += "</tbody></table>";

	document.getElementById("artistTable").innerHTML = tableHTML;

	initTable('sortme', new Array(null, null, null, null, null, null, null, null));
}
