/////////////////////////////////////////////////////////////////////////////////////////
//common.js
//  Contains functions which can be utilized by multiple pages
/////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////
//Global Variables
/////////////////////////////////////////////////////////////////////////////////////////
var lastViewedPageName = "";
var lastViewedShowID = "";
var lastViewedNewsID = "";
var lastViewedDiscID = "";
var latestDiscID = "";

/////////////////////////////////////////////////////////////////////////////////////////
//Window functions
/////////////////////////////////////////////////////////////////////////////////////////
function showPlayer() {
  document.getElementById("audio_button").style.visibility = "hidden";
  document.getElementById("audio_div").style.visibility = "visible";
}

function hidePlayer() {
  document.getElementById("audio_div").style.visibility = "hidden";
  document.getElementById("audio_button").style.visibility = "visible";
}

/////////////////////////////////////////////////////////////////////////////////////////
//General use functions
/////////////////////////////////////////////////////////////////////////////////////////
function addTableRow(table, col1_value, col2_value) {
  var textNode;
  var currentRow = document.createElement("tr");
  var leftCell = document.createElement("td");
  var rightCell = document.createElement("td");
  var spacerCell = document.createElement("td");
  spacerCell.width = "5px";
  textNode = document.createTextNode(col1_value);
  leftCell.appendChild(textNode);
  textNode = document.createTextNode(col2_value);
  rightCell.appendChild(textNode);
  currentRow.appendChild(leftCell);
  currentRow.appendChild(spacerCell);
  currentRow.appendChild(rightCell);
  table.appendChild(currentRow);
}

function addAddressRow(table, addr, city, state, zip, map) {
  var textNode;
  var currentRow = document.createElement("tr");
  var leftCell = document.createElement("td");
  leftCell.vAlign = "top";
  var spacerCell = document.createElement("td");
  spacerCell.width = "5px";
  var rightCell = document.createElement("td");
  textNode = document.createTextNode("Address:");
  leftCell.appendChild(textNode);
  textNode = document.createTextNode(addr);
  rightCell.appendChild(textNode);
  rightCell.appendChild(document.createElement("br"));
  textNode = document.createTextNode(city + ", " + state + " " + zip + " ");
  rightCell.appendChild(textNode);
  var mapLink = document.createElement("a");
  mapLink.href = map;
  mapLink.target = "_blank";
  mapLink.appendChild(document.createTextNode("(Map)"));
  rightCell.appendChild(mapLink);
  
  currentRow.appendChild(leftCell);
  currentRow.appendChild(spacerCell);
  currentRow.appendChild(rightCell);
  table.appendChild(currentRow);
}

function showInitialPageState(nextShowID, latestNewsID) {
  getPageContents(lastViewedPageName);
}

function disableButtons(){
	var inputs = document.getElementsByTagName("input");
	for(var i=0; i<inputs.length; i++)
	{
	  if (inputs[i].type.toLowerCase() == "button")
		  inputs[i].disabled = true;
	}
}

function enableButtons(){
	var inputs = document.getElementsByTagName("input");
	for(var i=0; i<inputs.length; i++)
	{
	  if (inputs[i].type.toLowerCase() == "button")
		  inputs[i].disabled = false;
	}
}


/////////////////////////////////////////////////////////////////////////////////////////
//Ajax functions
/////////////////////////////////////////////////////////////////////////////////////////
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Your browser does not support AJAX.");
	}
}

//Global AJAX variables
var showRequest = getXmlHttpRequestObject();
var newsRequest = getXmlHttpRequestObject();
var newsListRequest = getXmlHttpRequestObject();
var pageRequest = getXmlHttpRequestObject();
var scriptRequest = getXmlHttpRequestObject();
var showListRequest = getXmlHttpRequestObject();
var validEmailRequest = getXmlHttpRequestObject();
var sendEmailRequest = getXmlHttpRequestObject();
var submitAddressRequest = getXmlHttpRequestObject();
var removeAddressRequest = getXmlHttpRequestObject();
var discListRequest = getXmlHttpRequestObject();
var discRequest = getXmlHttpRequestObject();
var pictureListRequest = getXmlHttpRequestObject();
var pictureRequest = getXmlHttpRequestObject();
var videoListRequest = getXmlHttpRequestObject();
var videoRequest = getXmlHttpRequestObject();

//Retrieve the show list
function getShowList() {	
	if (showListRequest.readyState == 4 || showListRequest.readyState == 0) {		
    document.getElementById("show_list_div").innerHTML = "";
	  document.getElementById("show_list_processing").style.visibility = "visible";
		showListRequest.open("GET", 'get_show_list.php', true);
		showListRequest.onreadystatechange = handleShowListUpdate; 
		showListRequest.send(null);
	}	
}

//Called when the AJAX response is returned.
function handleShowListUpdate() {
	if (showListRequest.readyState == 4) {
	  document.getElementById("show_list_processing").style.visibility = "hidden";
	
		var xmlDoc = showListRequest.responseXML;		
		
		var shows = xmlDoc.getElementsByTagName("show");
		
		var show_list_div = document.getElementById("show_list_div");
		show_list_div.innerHTML = "";
		
		//Add the table
		var showsTable = document.createElement("table");
		showsTable.style.fontFamily = "tahoma";
    showsTable.style.fontSize = "11px";	
    tableBody = document.createElement("tbody");
    showsTable.appendChild(tableBody);
    
    var currentRow;
    var leftCell;
    var rightCell;
    var showDate;
    var startTime;
    var groupName;
    var venueName;
		var textNode;
		var showLink;
		
		for (i = 0; i < shows.length; i++) {
		  currentRow = document.createElement("tr");
  		leftCell = document.createElement("td");
  		rightCell = document.createElement("td");
  		rightCell.style.paddingLeft = "2px";
  		showDate = shows[i].childNodes[0].firstChild.nodeValue;
  		startTime = shows[i].childNodes[1].firstChild.nodeValue;
  		showID = shows[i].childNodes[2].firstChild.nodeValue;
  		groupName = shows[i].childNodes[3].firstChild.nodeValue;
  		venueName = shows[i].childNodes[4].firstChild.nodeValue;
  		
  		//Add the date and time
  		textNode = document.createTextNode(showDate + " " + startTime + " ");
  		leftCell.appendChild(textNode);
  		
  		//Add the link to the show
  		showLink = document.createElement("a");
  		showLink.href = "javascript: getShowInfo(" + showID + ")";
      showLink.appendChild(document.createTextNode(groupName + " @ " + venueName));
      
      rightCell.appendChild(showLink);
      currentRow.appendChild(leftCell);
      currentRow.appendChild(rightCell);

      tableBody.appendChild(currentRow);
		}
		
		show_list_div.appendChild(showsTable);
  }
}

function getDiscList() {	
	if (discListRequest.readyState == 4 || discListRequest.readyState == 0) {		
	  document.getElementById("disc_list_processing").style.visibility = "visible";
		discListRequest.open("GET", 'get_disc_list.php', true);
		discListRequest.onreadystatechange = handleDiscListUpdate; 
		discListRequest.send(null);
	}	
}

//Called when the AJAX response is returned.
function handleDiscListUpdate() {
	if (discListRequest.readyState == 4) {
	  document.getElementById("disc_list_processing").style.visibility = "hidden";
	
		var xmlDoc = discListRequest.responseXML;		
		
		var discs = xmlDoc.getElementsByTagName("disc");
		
		var disc_list_div = document.getElementById("disc_list");
		
		//Add the table
		var discsTable = document.createElement("table");
		discsTable.style.fontFamily = "tahoma";
    discsTable.style.fontSize = "11px";	
    tableBody = document.createElement("tbody");
    discsTable.appendChild(tableBody);
    
    var currentRow;
    var leftCell;
    var rightCell;
    var titleLink;
    var title;
    var thumbnail;
    var thumbnailLink;
    var disc_id;
		
		for (i = 0; i < discs.length; i++) {
		  currentRow = document.createElement("tr");
  		leftCell = document.createElement("td");
  		rightCell = document.createElement("td");
  		rightCell.style.paddingLeft = "2px";
  		rightCell.vAlign = "top";
  		rightCell.style.fontWeight = "bold";
  		disc_id = discs[i].childNodes[0].firstChild.nodeValue;
  		title = discs[i].childNodes[1].firstChild.nodeValue;
  		thumbnailLink = discs[i].childNodes[2].firstChild.nodeValue;
  		
  		//Add the thumbnail image and link
  		imageLink = document.createElement("a");
  		imageLink.style.border = "0pt none black";
  		imageLink.href = "javascript: getDiscInfo(" + disc_id + ")";
      thumbnail = document.createElement("img");
      thumbnail.src = thumbnailLink;
      imageLink.appendChild(thumbnail);
      leftCell.appendChild(imageLink);      
  		
  		//Add the title link
  		titleLink = document.createElement("a");
  		titleLink.href = "javascript: getDiscInfo('" + disc_id + "')";
  		textNode = document.createTextNode(title);
  		titleLink.appendChild(textNode);
  		rightCell.appendChild(titleLink);

      currentRow.appendChild(leftCell);
      currentRow.appendChild(rightCell);

      tableBody.appendChild(currentRow);
		}
		
		disc_list_div.appendChild(discsTable);
  }
}

//Retrieve the show list
function getPictureList() {	
	if (pictureListRequest.readyState == 4 || pictureListRequest.readyState == 0) {		
	  document.getElementById("pic_list_processing").style.visibility = "visible";
		pictureListRequest.open("GET", 'get_picture_list.php', true);
		pictureListRequest.onreadystatechange = handlePictureListUpdate; 
		pictureListRequest.send(null);
	}	
}

function handlePictureListUpdate() {
  if (pictureListRequest.readyState == 4) {
    document.getElementById("pic_list_processing").style.visibility = "hidden";
    var xmlDoc = pictureListRequest.responseXML;
    
    var pictures = xmlDoc.getElementsByTagName("thumbnail");
    
    var pic_list_div = document.getElementById("pic_list");
    
    var picture_id;
    var thumbnail_url;
    
    var pic_table = document.createElement("table");
    pic_table.width = "90%";
    
    var t_body = document.createElement("tbody");
    
    var table_row;
    var table_cell;
    var thumbnail
    
    for (var i = 0; i < pictures.length; i++) {
      picture_id = pictures[i].childNodes[0].firstChild.nodeValue;
      thumbnail_url = pictures[i].childNodes[1].firstChild.nodeValue;
      
      table_row = document.createElement("tr");
      table_cell = document.createElement("td");
      table_cell.align = "center";
      
      thumbnail_link = document.createElement("a");
      thumbnail_link.href = "javascript: getPicture('" + picture_id + "')";
      
      thumbnail = document.createElement("img");
      thumbnail.src = thumbnail_url;
      
      thumbnail_link.appendChild(thumbnail);
      
      table_cell.appendChild(thumbnail_link);
      table_row.appendChild(table_cell);
      t_body.appendChild(table_row);
    }
    
    pic_table.appendChild(t_body)
    pic_list_div.appendChild(pic_table);
  }
}

function getPicture(picture_id) {	
	if (pictureRequest.readyState == 4 || pictureRequest.readyState == 0) {		
	  document.getElementById("content").innerHTML = "";
	  document.getElementById("content_processing").style.visibility = "visible";
		pictureRequest.open("GET", 'get_picture.php?picture_id=' + picture_id, true);
		pictureRequest.onreadystatechange = handlePictureUpdate; 
		pictureRequest.send(null);
	}	
}

function handlePictureUpdate() {
  if (pictureRequest.readyState == 4) {
    document.getElementById("content_processing").style.visibility = "hidden";
    var xmlDoc = pictureRequest.responseXML;
    
    var pictures = xmlDoc.getElementsByTagName("picture")[0];
    
    var content_div = document.getElementById("content");
    content_div.style.verticalAlign = "middle";
    var picture_url = pictures.childNodes[0].firstChild.nodeValue;
    var comment =pictures.childNodes[1].firstChild.nodeValue;
    
    var pic_table = document.createElement("table");
    pic_table.width = "100%";
    
    var t_body = document.createElement("tbody");
    
    var table_row;
    var table_cell;
    var picture
  
    table_row = document.createElement("tr");
    table_cell = document.createElement("td");
    table_cell.align = "center";
    table_cell.vAlign = "middle";
    
    picture = document.createElement("img");
    picture.src = picture_url;
    
    table_cell.appendChild(picture);
    table_row.appendChild(table_cell);
    t_body.appendChild(table_row);
    
    table_row = document.createElement("tr");
    table_cell = document.createElement("td");
    table_cell.align = "center";
    table_cell.vAlign = "middle";
    
    table_cell.appendChild(document.createTextNode(comment));
    table_row.appendChild(table_cell);
    t_body.appendChild(table_row);
  
    pic_table.appendChild(t_body);
    content_div.appendChild(pic_table);
  }
}

//Retrieve the show list
function getVideoList() {	
	if (videoListRequest.readyState == 4 || videoListRequest.readyState == 0) {		
	  document.getElementById("video_list_processing").style.visibility = "visible";
		videoListRequest.open("GET", 'get_video_list.php', true);
		videoListRequest.onreadystatechange = handleVideoListUpdate; 
		videoListRequest.send(null);
	}	
}

function handleVideoListUpdate() {
  if (videoListRequest.readyState == 4) {
    document.getElementById("video_list_processing").style.visibility = "hidden";
    var xmlDoc = videoListRequest.responseXML;
    
    var pictures = xmlDoc.getElementsByTagName("thumbnail");
    
    var video_list_div = document.getElementById("video_list");
    
    var video_id;
    var thumbnail_url;
    
    var video_table = document.createElement("table");
    video_table.width = "90%";
    
    var t_body = document.createElement("tbody");
    
    var table_row;
    var table_cell;
    var thumbnail
    
    for (var i = 0; i < pictures.length; i++) {
      video_id = pictures[i].childNodes[0].firstChild.nodeValue;
      thumbnail_url = pictures[i].childNodes[1].firstChild.nodeValue;
      
      table_row = document.createElement("tr");
      table_cell = document.createElement("td");
      table_cell.align = "center";
      
      thumbnail_link = document.createElement("a");
      thumbnail_link.href = "javascript: getVideo('" + video_id + "')";
      
      thumbnail = document.createElement("img");
      thumbnail.src = thumbnail_url;
      
      thumbnail_link.appendChild(thumbnail);
      
      table_cell.appendChild(thumbnail_link);
      table_row.appendChild(table_cell);
      t_body.appendChild(table_row);
    }
    
    video_table.appendChild(t_body);
    video_list_div.appendChild(video_table);
  }

}

function getVideo(video_id) {	
	if (videoRequest.readyState == 4 || videoRequest.readyState == 0) {		
	  document.getElementById("content").innerHTML = "";
	  document.getElementById("content_processing").style.visibility = "visible";
		videoRequest.open("GET", 'get_video.php?video_id=' + video_id, true);
		videoRequest.onreadystatechange = handleVideoUpdate; 
		videoRequest.send(null);
	}	
}

function handleVideoUpdate() {
  if (videoRequest.readyState == 4) {
    document.getElementById("content_processing").style.visibility = "hidden";
    var xmlDoc = videoRequest.responseXML;
    
    var videos = xmlDoc.getElementsByTagName("video")[0];
    
    var content_div = document.getElementById("content");
    var video_url = videos.childNodes[0].firstChild.nodeValue;
    var comment = videos.childNodes[1].firstChild.nodeValue;
    
    var video_table = document.createElement("table");
    video_table.width = "100%";
    
    var t_body = document.createElement("tbody");
    
    var table_row;
    var table_cell;
  
    table_row = document.createElement("tr");
    table_cell = document.createElement("td");
    table_cell.align = "center";
    table_cell.vAlign = "middle";
  
    var video_screen = document.createElement("iframe");
    video_screen.style.zIndex = "9";
    video_screen.height = "580px";
    video_screen.width = "780px";
    video_screen.src = video_url;
    
    table_cell.appendChild(video_screen);
    table_row.appendChild(table_cell);
    t_body.appendChild(table_row);
    
    table_row = document.createElement("tr");
    table_cell = document.createElement("td");
    table_cell.align = "center";
    table_cell.vAlign = "middle";
    
    table_cell.appendChild(document.createTextNode(comment));
    table_row.appendChild(table_cell);
    t_body.appendChild(table_row);    
    
    video_table.appendChild(t_body);
    content_div.appendChild(video_table);
  }
}

//Retrieve the show info on demand
function getShowInfo(show_id) {	
	if (showRequest.readyState == 4 || showRequest.readyState == 0) {		
    lastViewedShowID = show_id;	
    document.getElementById("show_details_div").innerHTML = "";
	  document.getElementById("show_processing").style.visibility = "visible";
		showRequest.open("GET", 'get_show_details.php?show_id=' + show_id, true);
		showRequest.onreadystatechange = handleShowUpdate; 
		showRequest.send(null);
	}	
}

//Called when the AJAX response is returned.
function handleShowUpdate() {
	if (showRequest.readyState == 4) {
	  document.getElementById("show_processing").style.visibility = "hidden";
	
		var xmlDoc = showRequest.responseXML;		
		
		var show = xmlDoc.getElementsByTagName("show")[0];
		
		//pull out the variables
		var values = [show.childNodes.length];
		
		for (i = 0; i < show.childNodes.length; i++) {
		  if (show.childNodes[i].firstChild != null)
		    values[i] = show.childNodes[i].firstChild.nodeValue;
		  else
		    values[i] = "";
		}
		
		//Add the header to the div
		var details_div = document.getElementById("show_details_div");
		var textNode;
		
		var bandLink = document.createElement("a");
		bandLink.href = values[12];
		bandLink.style.fontWeight = "bold";
		textNode = document.createTextNode(values[11]);
		bandLink.appendChild(textNode);
		details_div.appendChild(bandLink);
		
		var atSign = document.createElement("font");
		atSign.style.fontFamily = "tahoma";
		atSign.style.fontWeight = "bold";
		textNode = document.createTextNode(" @ ");
		atSign.appendChild(textNode);
		details_div.appendChild(atSign);
		
		var venueLink = document.createElement("a");
		venueLink.href = values[10];
		venueLink.style.fontWeight = "bold";
		textNode = document.createTextNode(values[4]);
		venueLink.appendChild(textNode);
    details_div.appendChild(venueLink);

		details_div.appendChild(document.createElement("br"));
		
		//Add the table
		var details_table = document.createElement("table");
		details_table.style.fontFamily = "tahoma";
    details_table.style.fontSize = "11px";
    details_table.cellPadding = "0";	
    table_body = document.createElement("tbody");
    details_table.appendChild(table_body);
    
    //Add each detail element
    addTableRow(table_body, "Date:", values[0]);
    addTableRow(table_body, "Time:", values[1] + "-" + values[2]);
    addAddressRow(table_body, values[5], values[6], values[7], values[8], values[13]);
    addTableRow(table_body, "Phone:", values[9]);
    addTableRow(table_body, "Cost:", values[3]);
  
		details_div.appendChild(details_table);
  }
}

//Retrieve the show info on demand
function getDiscInfo(disc_id) {	
	if (discRequest.readyState == 4 || discRequest.readyState == 0) {		
    lastViewedDiscID = disc_id;	
    document.getElementById("disc_details").innerHTML = "";
	  document.getElementById("disc_details_processing").style.visibility = "visible";
		discRequest.open("GET", 'get_disc_details.php?disc_id=' + disc_id, true);
		discRequest.onreadystatechange = handleDiscUpdate; 
		discRequest.send(null);
	}	
}

//Called when the AJAX response is returned.
function handleDiscUpdate() {
	if (discRequest.readyState == 4) {
	  document.getElementById("disc_details_processing").style.visibility = "hidden";
	
		var xmlDoc = discRequest.responseXML;		
		
		var details_div = document.getElementById("disc_details");
		
		var disc = xmlDoc.getElementsByTagName("disc")[0];
		var title = disc.childNodes[0].firstChild.nodeValue;
		var release_date = disc.childNodes[1].firstChild.nodeValue;
		var description = disc.childNodes[2].firstChild.nodeValue;
		var playlist_url = disc.childNodes[3].firstChild.nodeValue;
		var purchase_url = disc.childNodes[4].firstChild.nodeValue;
		var picture = disc.childNodes[5].firstChild.nodeValue;
		
		//Display the picture
		var cd_image = document.createElement("img");
		cd_image.style.position = "absolute";
		cd_image.style.left = "5px";
		cd_image.style.top = "5px";
		cd_image.src = picture;
		
		details_div.appendChild(cd_image);
		
		//Create the table to display the info
		var info_table = document.createElement("table");
		info_table.style.fontFamily = "tahoma";
		info_table.style.fontSize = "12px";
		info_table.style.position = "absolute";
		info_table.style.left = "270px";
		info_table.style.top = "0px";
		info_table.style.width = "400px";
		
		var t_body = document.createElement("tbody");
		var table_row = document.createElement("tr");
		var table_cell = document.createElement("td");
		
		//Show the title and release
		var text_node = document.createElement("font");
		text_node.style.fontWeight = "bold"
		text_node.style.color = "#CC3300";
		text_node.appendChild(document.createTextNode(title + " (" + release_date + ")"));
		
		table_cell.appendChild(text_node);
		table_row.appendChild(table_cell);
		t_body.appendChild(table_row);
		
		//Show the description
		table_row = document.createElement("tr");
		table_cell = document.createElement("td");
		
		table_cell.appendChild(document.createTextNode(description));
		table_row.appendChild(table_cell);
		t_body.appendChild(table_row);
		
		//Show the link to buy it
		table_row = document.createElement("tr");
		table_row.style.height = "30px";
		table_cell = document.createElement("td");
		
		var purchase_link = document.createElement("a");
		purchase_link.href = purchase_url;
		purchase_link.target = "_blank";
		
		purchase_link.appendChild(document.createTextNode("Click here to buy it."));
		table_cell.appendChild(purchase_link);
		table_row.appendChild(table_cell);
		t_body.appendChild(table_row);
		
		//Show the mp3 player		
		table_row = document.createElement("tr");
		table_cell = document.createElement("td");
		var player_div = document.createElement("div");
    player_div.innerHTML = "<embed src='http://www.andizzle.net/xspf_player_slim.swf?playlist_url=" + playlist_url + "&autoload=true' height='15' width='400'></embed>";
		table_cell.appendChild(player_div);
		table_row.appendChild(table_cell);
		t_body.appendChild(table_row);
		
		info_table.appendChild(t_body);
		details_div.appendChild(info_table);
  }
}

//Retrieve the news list
function getNewsList() {	
	if (newsListRequest.readyState == 4 || newsListRequest.readyState == 0) {		
	  document.getElementById("news_list_div").innerHTML = "";
	  document.getElementById("news_list_processing").style.visibility = "visible";
		newsListRequest.open("GET", 'get_news_list.php', true);
		newsListRequest.onreadystatechange = handleNewsListUpdate; 
		newsListRequest.send(null);
	}	
}

//Called when the news response is returned.
function handleNewsListUpdate() {
  if (newsListRequest.readyState == 4) {
    document.getElementById("news_list_processing").style.visibility = "hidden";
	  var xmlDoc = newsListRequest.responseXML;		
		
		var newsList = xmlDoc.getElementsByTagName("news_item");
		
		var news_id;
		var created_date;
		var newsTitle;
		
		var leftCell;
		var rightCell;
    var currentRow;
    var newsLink;
    
    var newsTable = document.createElement("table");
    newsTable.style.fontFamily = "tahoma";
    newsTable.style.fontSize = "11px";
    
    var tableBody = document.createElement("tbody");
    newsTable.appendChild(tableBody);   
		
    for (i = 0; i < newsList.length; i++) {
      news_id = newsList[i].childNodes[0].firstChild.nodeValue;
      created_date = newsList[i].childNodes[1].firstChild.nodeValue;
      newsTitle = newsList[i].childNodes[2].firstChild.nodeValue;
      
      currentRow = document.createElement("tr");
      leftCell = document.createElement("td");
      rightCell = document.createElement("td");
      rightCell.style.paddingLeft = "2px";
      
      //Add the date to the left table cell
      leftCell.appendChild(document.createTextNode(created_date));
      
      //Create a link and add it to the right cell
      newsLink = document.createElement("a");
      newsLink.href = "javascript: getNewsItem(" + news_id + ")";
      newsLink.appendChild(document.createTextNode(newsTitle));
      rightCell.appendChild(newsLink);
      
      currentRow.appendChild(leftCell);
      currentRow.appendChild(rightCell);
      
      tableBody.appendChild(currentRow);
    }
    
    //Add the table to the div
    document.getElementById("news_list_div").appendChild(newsTable);
  }
}

//Retrieve the news item on demand
function getNewsItem(news_id) {	
	if (newsRequest.readyState == 4 || newsRequest.readyState == 0) {		
    lastViewedNewsID = news_id;	
	  document.getElementById("news_text").innerHTML = "";
	  document.getElementById("news_processing").style.visibility = "visible";
		newsRequest.open("GET", 'get_news_text.php?news_id=' + news_id, true);
		newsRequest.onreadystatechange = handleNewsUpdate; 
		newsRequest.send(null);
	}	
}

//Called when the news response is returned.
function handleNewsUpdate() {
  if (newsRequest.readyState == 4) {
    document.getElementById("news_processing").style.visibility = "hidden";
	  var xmlDoc = newsRequest.responseXML;		
		
		var news_item = xmlDoc.getElementsByTagName("news_item")[0];
		
		var created_date = news_item.childNodes[0].firstChild.nodeValue;
		var title = news_item.childNodes[1].firstChild.nodeValue;
		var news_text = news_item.childNodes[2].firstChild.nodeValue;
		
		var news_text_div = document.getElementById("news_text");
		
		//Clear the div and print the title and news item
		news_text_div.innerHTML = "";
		
		news_text_div.innerHTML = "<font style='font-weight: bold; color: #CC3300'>" + created_date + " - " + title + "</font><br>";
		news_text_div.innerHTML += "<font style='font-size: 11px; font-family: tahoma'>" + news_text.replace(/\n/g, "<br>") + "</font>";		
		
  }
}

//Retrieve the page contents on demand
function getPageContents(page_name) {	
  if (page_name == "")
    page_name = "MainPage";
	if (pageRequest.readyState == 4 || pageRequest.readyState == 0) {		
    lastViewedPageName = page_name;	
	  document.getElementById("page_contents").innerHTML = "";
	  document.getElementById("page_loading").style.visibility = "visible";
	  document.getElementById("page_name").value = page_name;
		pageRequest.open("GET", 'get_page_contents.php?page_name=' + page_name, true);
		pageRequest.onreadystatechange = handlePageReturn; 
		pageRequest.send(null);
	}	
}

//Called when the news response is returned.
function handlePageReturn() {
  if (pageRequest.readyState == 4) {
	  var page_contents = pageRequest.responseText;		
		var content_div = document.getElementById("page_contents");
		
		document.getElementById("page_loading").style.visibility = "hidden";
		content_div.innerHTML = page_contents;
		runPageScripts(lastViewedPageName);
  }
}

//Retrieve and run any additional javascript needed by the page
function runPageScripts(page_name) {	
	if (scriptRequest.readyState == 4 || scriptRequest.readyState == 0) {			
		scriptRequest.open("GET", 'get_script_contents.php?page_name=' + page_name, true);
		scriptRequest.onreadystatechange = handleScriptReturn; 
		scriptRequest.send(null);
	}	
}

//Called when the news response is returned.
function handleScriptReturn() {
  if (scriptRequest.readyState == 4) {
	  var script_contents = scriptRequest.responseText;		
		
		eval(script_contents);
  }
}

//Validate the email address entered into the page
function validateEmail() {	
	if (validEmailRequest.readyState == 4 || validEmailRequest.readyState == 0 && document.getElementById("email_addr").value != "") {	
    document.getElementById("email_status").innerHTML = "";	
	  document.getElementById("validating_email").style.visibility = "visible";
		validEmailRequest.open("GET", 'get_valid_email.php?email_addr=' + document.getElementById("email_addr").value, true);
		validEmailRequest.onreadystatechange = handleValidEmailReturn; 
		validEmailRequest.send(null);
	}	
}

//Called when the news response is returned.
function handleValidEmailReturn() {
  if (validEmailRequest.readyState == 4) {
	  document.getElementById("validating_email").style.visibility = "hidden";
    
    var xmlDoc = validEmailRequest.responseXML;		
		var email_is_valid = xmlDoc.getElementsByTagName("valid_email")[0].firstChild.nodeValue;
    if (email_is_valid == "true") {
      document.getElementById("btn_send").disabled = false;
    }
    else {
      document.getElementById("email_status").innerHTML = "<font color='red'>Sorry, this email address does not appear to be valid.</font>";
		}
  }
}

//Validate the email address entered into the page
function sendMessage() {	
  if (document.getElementById("email_message").value == "") {
    document.getElementById("email_status").value = "<font color='red'>Email message is blank.</font>";
    return;
  }
  
	if (sendEmailRequest.readyState == 4 || sendEmailRequest.readyState == 0) {	
	  disableButtons();
    document.getElementById("email_status").innerHTML = "";	
	  document.getElementById("validating_email").style.visibility = "visible";
		sendEmailRequest.open("GET", 'send_email_message.php?from_addr=' + document.getElementById("email_addr").value + "&message=" + encodeURI(document.getElementById("email_message").value), true);
		sendEmailRequest.onreadystatechange = handleSendEmailReturn; 
		sendEmailRequest.send(null);
	}	
}

//Called when the news response is returned.
function handleSendEmailReturn() {
  if (sendEmailRequest.readyState == 4) {
	  document.getElementById("validating_email").style.visibility = "hidden";
    
    var xmlDoc = sendEmailRequest.responseXML;		
		var email_is_valid = xmlDoc.getElementsByTagName("sent_email")[0].firstChild.nodeValue;
    if (email_is_valid == "true") {
      document.getElementById("email_status").innerHTML = "<font color='green'>Thank you.  Your message has been sent.</font>";
    }
    else {
      document.getElementById("email_status").innerHTML = "<font color='red'>Sorry, there was a server error.</font>";
		}
  }
}

//Validate the email address entered into the page
function submitEmail() {	
  if (document.getElementById("email_addr").value == "") {
    document.getElementById("email_status").innerHTML = "<font color='red'>Email address is blank.</font>";
    return;
  }
  
	if (submitAddressRequest.readyState == 4 || submitAddressRequest.readyState == 0) {	
	  disableButtons();
    document.getElementById("email_status").innerHTML = "";	
	  document.getElementById("validating_email").style.visibility = "visible";
		submitAddressRequest.open("GET", 'submit_email_address.php?email_addr=' + document.getElementById("email_addr").value, true);
		submitAddressRequest.onreadystatechange = handleSubmitAddressReturn; 
		submitAddressRequest.send(null);
	}	
}

//Called when the submit response is returned.
function handleSubmitAddressReturn() {
  if (submitAddressRequest.readyState == 4) {
	  document.getElementById("validating_email").style.visibility = "hidden";
    enableButtons();
    
    var xmlDoc = submitAddressRequest.responseXML;		
		var email_is_valid = xmlDoc.getElementsByTagName("email_status")[0].firstChild.nodeValue;
		
    if (email_is_valid == "success") {
      document.getElementById("email_status").innerHTML = "<font color='green'>Thank you.  Your email has been added to the list.</font>";
    }
    else if (email_is_valid == "corrupted") {
      document.getElementById("email_status").innerHTML = "<font color='red'>Sorry, it appears this email address is not valid.</font>";
    }
    else if (email_is_valid == "duplicate") {
      document.getElementById("email_status").innerHTML = "<font color='red'>This email address is already in the list.</font>";
    }
    else {
      document.getElementById("email_status").innerHTML = "<font color='red'>Sorry, there was a server error.</font>";
		}
  }
}

//Validate the email address entered into the page
function removeEmail() {	
  if (document.getElementById("email_addr").value == "") {
    document.getElementById("email_status").innerHTML = "<font color='red'>Email address is blank.</font>";
    return;
  }
  
	if (removeAddressRequest.readyState == 4 || removeAddressRequest.readyState == 0) {	
	  disableButtons();
    document.getElementById("email_status").innerHTML = "";	
	  document.getElementById("email_processing").style.visibility = "visible";
		removeAddressRequest.open("GET", 'remove_email_address.php?email_addr=' + document.getElementById("email_addr").value, true);
		removeAddressRequest.onreadystatechange = handleRemoveAddressReturn; 
		removeAddressRequest.send(null);
	}	
}

function handleRemoveAddressReturn() {
  if (removeAddressRequest.readyState == 4) {
	  document.getElementById("email_processing").style.visibility = "hidden";
    enableButtons();
    
    var xmlDoc = removeAddressRequest.responseXML;		
		var email_is_valid = xmlDoc.getElementsByTagName("email_status")[0].firstChild.nodeValue;
		
    if (email_is_valid == "success") {
      document.getElementById("email_status").innerHTML = "<font color='green'>Thank you.  Your email has been removed from the list.</font>";
      document.getElementById("lost_email").Play();
    }
    else if (email_is_valid == "corrupted") {
      document.getElementById("email_status").innerHTML = "<font color='red'>Sorry, it appears this email address is not valid.</font>";
    }
    else if (email_is_valid == "not_found") {
      document.getElementById("email_status").innerHTML = "<font color='red'>This email address was not found in the list.</font>";
    }
    else {
      document.getElementById("email_status").innerHTML = "<font color='red'>Sorry, there was a server error.</font>";
		}
  }
}
