/***************************************************************
 * Copyright notice
 * 
 * RSS feedreader 1.0
 * 
 * Copyright 2007 Peter Ruijter (Bedrijvenweb Nederland BV)
 * All rights reserved
 * 
 * This script is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * The GNU General Public License can be found at
 * http://www.gnu.org/copyleft/gpl.html.
 * 
 * This script is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * Email: ontwikkeling@bedrijvenweb.nl
 * WWW:   www.bedrijvenweb.nl
 * 
 ***************************************************************/

var RSSRequestObject = false; // XMLHttpRequest Object

/**
 * onreadystatechange function
 */
function ReqChange() {

	// If data received correctly
	if (RSSRequestObject.readyState==4) {
	
		// if data is valid
		if (RSSRequestObject.responseText.indexOf('invalid') == -1) { 	
			// Parsing RSS
			var node = RSSRequestObject.responseXML.documentElement; 
			
			// Get Channel information
			var channel = node.getElementsByTagName('channel').item(0);
			var rss_title = channel.getElementsByTagName('title').item(0).firstChild.data;
			var rss_link = channel.getElementsByTagName('link').item(0).firstChild.data;
			var content = '';
			var month=new Array(12);
			month['Jan']="januari";
			month['Feb']="februari";
			month['Mar']="maart";
			month['Apr']="april";
			month['May']="mei";
			month['Jun']="juni";
			month['Jul']="juli";
			month['Aug']="augustus";
			month['Sep']="september";
			month['Oct']="oktober";
			month['Nov']="november";
			month['Dec']="december";
			
			content = '<strong>Inhoud</strong><br /><ol>';
		
			// Browse items
			var items = channel.getElementsByTagName('item');
			var css_class = 'oneven';

			for (var n=0; n < items.length; n++) {
				var itemTitle = items[n].getElementsByTagName('title').item(0).firstChild.data;
				var itemLink = items[n].getElementsByTagName('link').item(0).firstChild.data;
				var itemDescription = items[n].getElementsByTagName('description').item(0).firstChild.data;
				var itemDate = items[n].getElementsByTagName('pubDate').item(0).firstChild.data;
					content += '<li><a href="#' + n + '">' + itemTitle + '</a></li>';
			}
			content += '</ol><p>&nbsp;</p><hr><p>&nbsp;</p>';
			
			for (var n=0; n < items.length; n++) {
				var itemTitle = items[n].getElementsByTagName('title').item(0).firstChild.data;
				var itemLink = items[n].getElementsByTagName('link').item(0).firstChild.data;
				var itemDescription = items[n].getElementsByTagName('description').item(0).firstChild.data;
				var itemDate = items[n].getElementsByTagName('pubDate').item(0).firstChild.data;

					content += '<a name="' + n + '"><h2>' + (n+1) + '. ' + itemTitle + '</h2>';
					content += '<p>&nbsp;</p><p><em>Datum: ' + itemDate.substr(5,2) + ' ' + month[itemDate.substr(8,3)] + ' ' + itemDate.substr(12,4)+'</em><br />';
					content += '<p>'+itemDescription+'</p><p>&nbsp;</p><hr><p>&nbsp;</p>';
			}
			
			// Display the result
			document.getElementById("ajaxreader").innerHTML = content;

			// Tell the reader the everything is done
			document.getElementById("status").innerHTML = "";
			
		} else {
			// Tell the reader that there was error requesting data
			document.getElementById("status").innerHTML = "<div class=error>Fout in het ophalen van nieuws.<div>";
		}
		HideShow('status');
	}
}

/**
 * AJAX RSS reader request
 */
function makeRequest(url) {
	document.getElementById('ajaxreader').innerHTML = "";
	post = createRequestObject();
	sendFeed(url);
}
function createRequestObject() {
	if(window.XMLHttpRequest) {
		RSSRequestObject = new XMLHttpRequest();
	} else if(window.ActiveXObject){
		RSSRequestObject = new ActiveXObject("MSXML2.XMLHTTP");
		alert('ActiveX');
	}
	return RSSRequestObject;
}
function checkReadyState(RSSRequestObject) {
	if(RSSRequestObject.readyState == 0) { document.getElementById('status').innerHTML = "Vraag nieuws op..."; }
	if(RSSRequestObject.readyState == 1) { document.getElementById('status').innerHTML = "Bezig met ophalen van nieuws..."; }
	if(RSSRequestObject.readyState == 2) { document.getElementById('status').innerHTML = "Bezig met ophalen van nieuws..."; }
	if(RSSRequestObject.readyState == 3) { document.getElementById('status').innerHTML = "Bezig met ophalen van nieuws..."; }
	if(RSSRequestObject.readyState == 4) {
		if(RSSRequestObject.status == 200) {
			return true;
		} else {
			document.getElementById('status').innerHTML = "HTTP " + RSSRequestObject.status;
		}
	}
}
function sendFeed(url) {
	post.onreadystatechange = sendRequest;
	post.open("POST", url, true);
	post.send(url);
}
function sendRequest() {
	if(checkReadyState(post)) {
		request = createRequestObject();
		request.onreadystatechange = ReqChange;
		request.open("GET", post.responseText, true);
		request.send(null);
	}
}

/**
 * Timer
 */
function update_timer() {
	makeRequest('request.php');
}
function HideShow(id){
	var el = GetObject(id);
	if(el.style.display=="none")
	el.style.display='';
	else
	el.style.display='none';
}
function GetObject(id){
	var el = document.getElementById(id);
	return(el);
}