function loadXml(url, callFunc, ignoreWhite) {
	functionToCall = callFunc;
	stripWS = ignoreWhite;
	xmlRequestObj = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")
	xmlRequestObj.onreadystatechange = proccessXML;
	xmlRequestObj.open("GET", url, true);
	xmlRequestObj.send(null);
}


// private

function is_ws(nod) {
	return !(/[^\t\n\r ]/.test(nod.data));
}

function findWhiteSpace(node, nodeNo) {
	for (i=0; i<node.childNodes.length; i++) {
		if (node.childNodes[i].nodeType == 3 && is_ws(node.childNodes[i])) {
			nodesToDelete[nodesToDelete.length] = node.childNodes[i]
		}
		if (node.childNodes[i].hasChildNodes()) {
			findWhiteSpace(node.childNodes[i], i);
		}
	}
	node = node.parentNode;
	i = nodeNo;
}

function stripWhiteSpace(node) {
	nodesToDelete = Array();
	findWhiteSpace(node, 0);
	for(i=nodesToDelete.length-1;i>=0;i--) {
		nodeRef = nodesToDelete[i];
		nodeRef.parentNode.removeChild(nodeRef)
	}
}

function proccessXML() {
	if (xmlRequestObj.readyState == 4 && (xmlRequestObj.status == 200 || xmlRequestObj.status == 304)) {
		if(stripWS) {
			stripWhiteSpace(xmlRequestObj.responseXML);
		}
		resultXML = xmlRequestObj.responseXML;
		functionToCall(xmlRequestObj.responseXML)
	}
}

function NewsDisplay(xdoc) {
	number_of_news_articles = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article").length;
	news_display_code = "";
	for(i = 0; i<number_of_news_articles; i++){
		news_display_code = news_display_code + "<div class=\"news_holder\"><h1>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_title")[0].firstChild.nodeValue + "</h1><h2>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_date")[0].firstChild.nodeValue + "</h2>";
		number_of_paragraphs = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_contents").length;
		for(z = 0; z<number_of_paragraphs; z++){
			news_display_code = news_display_code + "<p style=\"margin: 0px 0px 5px 0px; text-indent: 10px;\">" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_contents")[z].firstChild.nodeValue + "</p>";
		}
		news_display_code = news_display_code + "</div>";
	}
	ListArchiveDates(xdoc,number_of_news_articles);
	ListCategories(xdoc,number_of_news_articles);
	document.getElementById("news_content").innerHTML = news_display_code;
}

function ListArchiveDates(xdoc,number_of_news_articles) {
	xmldoc=xdoc;
	dates_array = new Array();
	for(i = 0; i<number_of_news_articles; i++){
		dates_array[i] = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_date")[0].firstChild.nodeValue;
	}
	list_of_dates_array = getUniqueValues(dates_array);
	archived_dates_list = "<p><a href=\"javascript:NewsDisplay(xmldoc);\" class=\"sub_nav\">View All</a></p>";
	for(ii = 0; ii<list_of_dates_array.length; ii++){
		archived_dates_list = archived_dates_list + "<p><a href=\"javascript:DisplayDateNews(xmldoc,'" + list_of_dates_array[ii] + "');\" class=\"sub_nav\">" + list_of_dates_array[ii] + "</a></p>";
	}
	document.getElementById("archive_date_holder").innerHTML = archived_dates_list;
}

function ListCategories(xdoc,number_of_news_articles) {
	xmldoc=xdoc;
	categories_array = new Array();
	for(i = 0; i<number_of_news_articles; i++){
		categories_array[i] = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_category")[0].firstChild.nodeValue;
	}
	list_of_categories_array = getUniqueValues(categories_array);
	archived_categories_list = "<p><a href=\"javascript:NewsDisplay(xmldoc);\" class=\"sub_nav\">All (" + number_of_news_articles +")</a></p>";
	for(ii = 0; ii<list_of_categories_array.length; ii++){
		z = 0;
		for(y = 0; y<categories_array.length; y++){
			if(categories_array[y]==list_of_categories_array[ii]){
				z = z + 1;
			}
		}
		archived_categories_list = archived_categories_list + "<p><a href=\"javascript:DisplayCategoryNews(xmldoc ,'" + list_of_categories_array[ii] + "');\" class=\"sub_nav\">" + list_of_categories_array[ii] + " (" + z + ")</a><br /></p>";
	}
	document.getElementById("archive_categories_holder").innerHTML = archived_categories_list;
}

function getUniqueValues(array_to_fix) {
	var hash = new Object();
	for (j = 0; j < array_to_fix.length; j++) {hash[array_to_fix[j]] = true}
	var array = new Array();
	for (value in hash) {array.push(value)};
	return array;
}

function DisplayCategoryNews(xdoc,category_to_view) {
	number_of_news_articles = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article").length;
	news_display_code = "";
	for(i = 0; i<number_of_news_articles; i++){
		if(xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_category")[0].firstChild.nodeValue==category_to_view){
			news_display_code = news_display_code + "<div class=\"news_holder\"><h1>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_title")[0].firstChild.nodeValue + "</h1><h2>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_date")[0].firstChild.nodeValue + "</h2>";
		number_of_paragraphs = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_contents").length;
		for(z = 0; z<number_of_paragraphs; z++){
			news_display_code = news_display_code + "<p style=\"margin: 0px 0px 5px 0px; text-indent: 10px;\">" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_contents")[z].firstChild.nodeValue + "</p>";
		}
		news_display_code = news_display_code + "</div>";
		}
	}
	ListArchiveDates(xdoc,number_of_news_articles);
	ListCategories(xdoc,number_of_news_articles);
	document.getElementById("news_content").innerHTML = news_display_code;
}

function DisplayDateNews(xdoc,date_to_view) {
	number_of_news_articles = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article").length;
	news_display_code = "";
	for(i = 0; i<number_of_news_articles; i++){
		if(xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_date")[0].firstChild.nodeValue==date_to_view){
			news_display_code = news_display_code + "<div class=\"news_holder\"><h1>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_title")[0].firstChild.nodeValue + "</h1><h2>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_date")[0].firstChild.nodeValue + "</h2>";
		number_of_paragraphs = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_contents").length;
		for(z = 0; z<number_of_paragraphs; z++){
			news_display_code = news_display_code + "<p style=\"margin: 0px 0px 5px 0px; text-indent: 10px;\">" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_contents")[z].firstChild.nodeValue + "</p>";
		}
		news_display_code = news_display_code + "</div>";
		}
	}
	ListArchiveDates(xdoc,number_of_news_articles);
	ListCategories(xdoc,number_of_news_articles);
	document.getElementById("news_content").innerHTML = news_display_code;
}

function IndexNewsDisplay(xdoc) {
	number_of_news_articles = xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article").length;
	news_display_code = "";
	z = 1;
	for(i = 0; i<number_of_news_articles; i++){
		if(z<4){
			news_display_code = news_display_code + "<div class=\"news_holder\"><img src=\"" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_image")[0].firstChild.nodeValue + "\" alt=\"" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_title")[0].firstChild.nodeValue + "\" /><h2>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_title")[0].firstChild.nodeValue + "</h2><span>" + xdoc.getElementsByTagName("news_articles")[0].getElementsByTagName("article")[i].getElementsByTagName("article_contents")[0].firstChild.nodeValue + "</span><div class=\"clear\"></div></div>";
		}
		z++;
	}
	document.getElementById("news_content").innerHTML = news_display_code;
}
