// JavaScript Document

// Homepage Slideshow code

var news; // Array of news
var newsItem = 0;
var delay = parseInt(document.getElementById('NewsScroller').getAttribute('delay'));
var speed = (delay*1000); // 1000 = 1 second, 2000 = 2 second... so forth
var timer;
var read_more_text = "Read More..."; /* default text for read more link if one isn't specified is RSS tab */

createMain();

/* standard httprequest call */
function getXMLHttp() {
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		var xmlhttp = new XMLHttpRequest();
		if (xmlhttp.overrideMimeType) {
			xmlhttp.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!xmlhttp) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	return xmlhttp;
}

/* get RSS data and process */
function createMain() {
	url = document.getElementById('NewsScroller').getAttribute('rss');
	sitepath = document.getElementById('NewsScroller').getAttribute('sitepath');
	http_request = new getXMLHttp();

	http_request.onreadystatechange = function () {
		if (http_request.readyState == 1) { // Not Loaded yet
			document.getElementById('NewsScroller').innerHTML = '<img src="'+sitepath+'/loading.gif" style="margin: 120px 300px;"/>';
		}
		if (http_request.readyState == 4) { 
			if (http_request.status == 200) { // Loaded
					var xmldoc = http_request.responseXML;
					var root_node = xmldoc.getElementsByTagName('item');
					news = gPRSS(root_node);
					news.current = 0;
					initializeNewsBox();
				} else {
					alert('There was a problem with the request.');
				}
			}
	};
	http_request.open('GET', url, true);
	http_request.send(null);
}

function initializeNewsBox(){
	i=newsItem;
	var scrollerDiv = document.getElementById('NewsScroller');
	var scrollerDivContent = "";
	
	/* news text goes here */
	scrollerDivContent += '<div id="ScrollerText"></div>';

	/* number of items and play/pause button */
	scrollerDivContent += '<div id="ScrollerBottom"><div id="ScrollerNumbers"></div>&nbsp;<div id="PlayButtons"><img onclick="stopNews(this);" src="'+sitepath+'/img_pause.gif" /></div><div id="readmoreurl"></div></div>';
	
	scrollerDiv.innerHTML = scrollerDivContent;
	
	renderNewsItem(i); /* create formatted news item */
	renderNavigation(); /* create item numbers */
	timer = setInterval(newsTimer,speed);  /* timer control */
}

/* display item numbers and read more link/text */
function renderNewsItem(i) {
	var newsItemContent = "";
	var linkArea = "";

	newsItemContent += news[i].summary+linkArea;	

	document.getElementById('ScrollerText').innerHTML=newsItemContent;

	if(news[i].readmoreurl != null) {
		if (news[i].readmoretext === undefined) news[i].readmoretext = read_more_text;
		document.getElementById('readmoreurl').innerHTML = '<table cellpadding=0 cellspacing=0><tr><td onclick=\'location.href="'+news[i].readmoreurl+'"\'>'+news[i].readmoretext+'</td></tr></table>';
	} else {
		document.getElementById('readmoreurl').innerHTML = ""
	}

}

/* timer delay for displaying news */
function newsTimer() {

	if(newsItem == (news.length-1)) {
		newsItem=0;		
	} else {
		newsItem++;
	}
	
	renderNewsItem(parseInt(newsItem));
	renderNavigation();
}

/* if specific news item number clicked */
function changeNews(o) {
	var newNews = o.innerHTML-1;
	renderNewsItem(newNews);
	newsItem = newNews;
	renderNavigation();
	var pB = document.getElementById('PlayButtons').getElementsByTagName('img')[0];
	pB.src=sitepath+'/img_play.gif';
	pB.onclick=function(){ startNews(this);};
	clearInterval(timer);
}

/* create item numbers */
function renderNavigation() {
	var l = document.getElementById('ScrollerNumbers');
	var inner = "";
	for(i=0;i<news.length;i++){
		if(newsItem == i) {
			inner += '<a class="NewsSelected" href="#" onclick="changeNews(this);">'+(i+1)+'</a> ';
		} else {
			inner += '<a href="#" onclick="changeNews(this);">'+(i+1)+'</a> ';
		}
	}
	l.innerHTML=inner;
}
/* if pause button pressed */
function stopNews(o) {
	o.src=sitepath+'/img_play.gif';
	o.onclick=function(){ startNews(this);};
	clearInterval(timer);
}
/* if play button pressed */
function startNews(o) {
	o.src=sitepath+'/img_pause.gif';
	o.onclick=function(){ stopNews(this);};
	timer = setInterval(newsTimer,speed);
}


function convertDate( d ) {
	var m = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
	var arr = d.split(',')[1].split(' ');
	var day = arr[1];
	var month = arr[2];
	var year = arr[3];
	var i;
	for(i=0; i<m.length; i++) { 
		if(month == m[i]) {
           month = (i+1);
		}
	}

	month = month.toString();
	if(month.length == 1) {
		month = '0'+month;
	}
	day = day.toString();
	if(day.length == 1) {
		day = '0'+day;
	}

	var cDate = month+'/'+day+'/'+year;
	return cDate;
}

/* process data returned by httprequest */
function gPRSS( XMLNode ) {
	var XMLItem = new Array();
	for (i=0; XMLNode.length>i; i++)
	{
		 XMLItem[i] = new Array();
		 for (k=0; XMLNode[i].childNodes.length>k; k++)
		 {
			 if(XMLNode[i].childNodes[k].firstChild != null) {
				 switch(XMLNode[i].childNodes[k].tagName) {
					 case "link" : XMLItem[i]["link"] = XMLNode[i].childNodes[k].firstChild.data;
										break;							
					 case "title" : XMLItem[i]["title"] = XMLNode[i].childNodes[k].firstChild.data;
										break;							
					 case "description" : XMLItem[i]["summary"] = XMLNode[i].childNodes[k].firstChild.data;
										break;							
					 case "k:display_link" : XMLItem[i]["display"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:read_more_link" : XMLItem[i]["readmoreurl"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:read_more_text" : XMLItem[i]["readmoretext"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "pubDate" :   XMLItem[i]["date"] = convertDate(XMLNode[i].childNodes[k].firstChild.data);
										break;
				 }
			 } else {
				 //XMLItem[i]["readmoretext"] = read_more_text;
			 }
		 }
	}
	/* sort by date - newest to oldest */
	var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;
	XMLItem.sort(function (a, b){
				a = a['date'].replace(dateRE,"$3$1$2");
				b = b['date'].replace(dateRE,"$3$1$2");
				if (a>b) return -1;
				if (a <b) return 1;
				return 0; } );

	return XMLItem;
}