var xmlhttp_request = false;
var whatsNewListNode;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
	xmlhttp_request = new XMLHttpRequest();
	if (xmlhttp_request.overrideMimeType) {
		xmlhttp_request.overrideMimeType('text/xml');
	}
} else if (window.ActiveXObject) { // IE
	try {
		xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	}
}

function getNews(id) {
	// validate id
	var isIDValid = false;
	var validRegExp = /^HYP[0-9]{4}$/;
	if (id.match(validRegExp)) {
		isIDValid = true;
	}
	if (isIDValid) {
		// if the XMLHTTP Request object was not created
		// redirect to library rather than using AJAX
		if (!xmlhttp_request) {
			// library
			location.href="/library.php?query=" + id;
		} else {
			// AJAX
			xmlhttp_request.onreadystatechange = function() { returnNews(); };
			xmlhttp_request.open('GET', '/newsitems.php?id=' + id, true);
			xmlhttp_request.setRequestHeader("Cache-Control", "no-cache");
			xmlhttp_request.setRequestHeader("Pragma", "no-cache");
			xmlhttp_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
			xmlhttp_request.send(null); // no data sent to page as GET was enough.
		}
	}
}

function returnNews() {
	// information on .readyState
	// .readyState == 0 {uninitialised - before open()}
	// .readyState == 1 {set up - before send()}
	// .readyState == 2 {sent}
	// .readyState == 3 {processing}
	// .readyState == 4 {complete}
	if (xmlhttp_request.readyState == 4) {
		if (xmlhttp_request.status == 200) {			
			displayNewsItem();					
		} else {
			alert('There was a problem with the request. (' + xmlhttp_request.status + ')');
		}
		// perform clean up operation (required for IE)
		xmlhttp_request.abort();
	}
}

function displayNewsItem() {
	var xmldoc = xmlhttp_request.responseXML;
	var newsItemTitle = xmldoc.getElementsByTagName('title').item(0).firstChild.data;
	var newsItemDescription = xmldoc.getElementsByTagName('description').item(0).firstChild.data;
	var newsItemLink = xmldoc.getElementsByTagName('link').item(0).firstChild.data;
	var newsItemLinkText = xmldoc.getElementsByTagName('link').item(0).getAttribute('text');
	// assume by default that the newsItemLink is internal
	var requiresExternalLinkIcon = false;
	var requiresTargetBlank = false;
	// if newsItemLink begins with http://, ftp:// or https:// then assume link is external
	if (newsItemLink.substring(0,7) == "http://" || newsItemLink.substring(0,6) == "ftp://" || newsItemLink.substring(0,8) == "https://") {
		requiresExternalLinkIcon = true;
		requiresTargetBlank = true;
	} 
	// if newsItemLink actually is for http://www.digitalmoneyforum.com, http://www.digitalidentityforum.com or http://www.chyp.com then
	// assume internal
	if (newsItemLink.substring(0,32) == "http://www.digitalmoneyforum.com" || newsItemLink.substring(0,29) == "http://www.digitalidforum.com" || newsItemLink.substring(0,19) == "http://www.chyp.com" || newsItemLink.substring(0,32) == "https://www.digitalmoneyforum.com" || newsItemLink.substring(0,29) == "https://www.digitalidforum.com" || newsItemLink.substring(0,19) == "https://www.chyp.com") {
		requiresExternalLinkIcon = false;
	}

	
	var newsDiv = document.getElementById('news');
	// locate existing newsDiv child div 
	if (newsDiv.hasChildNodes()) {
		for (i=0; i<newsDiv.childNodes.length; i++) {
			var currentNode = newsDiv.childNodes[i];
			if (currentNode.nodeName.toLowerCase() == "div") {
				// store old node
				//whatsNewListNode = currentNode;
				// remove old node
				//newsDiv.removeChild(currentNode);				
				// hide old node
				currentNode.style.display = "none";
			}
		}
		// create new div
		var divElement = document.createElement("div"); 						
		divElement.setAttribute("class", "newscontent"); // for Firefox
		divElement.setAttribute("className", "newscontent"); // for IE
		
			var divElement2 = document.createElement("div"); 						
			divElement2.setAttribute("class", "newscontenttitle"); // for Firefox
			divElement2.setAttribute("className", "newscontenttitle"); // for IE
		
				// create title
				var divElementTitle = document.createTextNode(newsItemTitle + ": ");
				divElement2.appendChild(divElementTitle);
				divElement.appendChild(divElement2);
			
			
			
			divElement.appendChild(document.createElement("br"));
			divElement.appendChild(document.createElement("br"));
			
			// create decription
			var divElementDescription = document.createTextNode(newsItemDescription);
			divElement.appendChild(divElementDescription);
		
			divElement.appendChild(document.createElement("br"));
			divElement.appendChild(document.createElement("br"));
		
			// create new ul
			var ulElement = document.createElement("ul");
		
				// create new li
				var liElement = document.createElement("li");
		
					// create new link & append to new li
					var linkElement = document.createElement("a");
					linkElement.setAttribute("href", newsItemLink);
					linkElement.setAttribute("title", newsItemLinkText);
					// if external link then target a new window
					if (requiresTargetBlank) {
						linkElement.setAttribute("target", "_blank");
					}
					var linkElementText = document.createTextNode(newsItemLinkText + " ");
					linkElement.appendChild(linkElementText);
					// if external link then add external link icon
					if (requiresExternalLinkIcon) {
						var linkElementExternalImage = document.createElement("img");
						linkElementExternalImage.setAttribute("src", "images/externallinkicon.gif");
						linkElementExternalImage.setAttribute("title", "This is an external link");
						linkElementExternalImage.setAttribute("class", "externallinkicon"); // for Firefox
						linkElementExternalImage.setAttribute("className", "externallinkicon"); // for IE
						linkElement.appendChild(linkElementExternalImage);
					}				
					liElement.appendChild(linkElement);
		
				// create new li2
				var liElement2 = document.createElement("li");
		
					// create new link2 & append to new li2
					var linkElement2 = document.createElement("a");
					linkElement2.setAttribute("href", "javascript: void(showList())");
					linkElement2.setAttribute("title", "Back to List");
					var linkElement2Text = document.createTextNode("Back to List");
					linkElement2.appendChild(linkElement2Text);
					liElement2.appendChild(linkElement2);
		
				// append new li to ul
				ulElement.appendChild(liElement);
				
				// append new li2 to ul
				ulElement.appendChild(liElement2);
		
			// append new ul to div
			divElement.appendChild(ulElement);
		
		// append new div to newsDiv
		newsDiv.appendChild(divElement);
	}	
}

function showList() {
	var newsDiv = document.getElementById('news');	
	var foundHiddenDiv = false;
	if (newsDiv.hasChildNodes()) {
		for (i=0; i<newsDiv.childNodes.length; i++) {
			var currentNode = newsDiv.childNodes[i];			
			if (currentNode.nodeName.toLowerCase() == "div") {
				// assuming first div tag is the hidden original list
				// and second is dynamically added news item div
				if (!foundHiddenDiv) {
					//newsDiv.replaceChild(whatsNewListNode ,currentNode);				
					currentNode.style.display = "block";
					foundHiddenDiv = true;
				} else {
					newsDiv.removeChild(currentNode);
				}
			}
		}
	}
}