var xmlDataSource = '/rss.xml';
var ajaxNewsObj;
var newsXml;
var afterLoadCallback;
var afterLoadCallbackVar;

function xmlVal(xparent, xnode) {
	var x = xparent.getElementsByTagName(xnode);
	if(xnode.indexOf(":") > -1 && document.getElementsByTagNameNS !== undefined) {
		x = xparent.getElementsByTagNameNS('*',xnode.substr(xnode.indexOf(":")+1));
	}
	if(x.length < 1) return "";
	x = x[0].childNodes;
	if(x.length < 1) return "";
	return x[0].nodeValue;
}

function parseXml() {
	var newsItems = newsXml.getElementsByTagName('item');
	for(var i = 0; i < newsItems.length; i++) {
		addNews( new newsItem(
			xmlVal(newsItems[i],'dfi:type'),
			xmlVal(newsItems[i],'dfi:startdate'),
			xmlVal(newsItems[i],'dfi:enddate'),
			xmlVal(newsItems[i],'dfi:loc'),
			xmlVal(newsItems[i],'link'),
			xmlVal(newsItems[i],'title'),
			xmlVal(newsItems[i],'description'),
			"",
			"",
			xmlVal(newsItems[i],'dfi:img')
			));
	}
	if(afterLoadCallbackVar && afterLoadCallbackVar!=null && afterLoadCallbackVar!=0)
		afterLoadCallback(afterLoadCallbackVar);
	else
		afterLoadCallback();
}

function onAjaxNewsObjFinished() {
	if(ajaxNewsObj.readyState==4) {
		newsXml=getXml(ajaxNewsObj.responseText);
		parseXml();
	}
}

function loadNews2() {	
	ajaxNewsObj = getXmlHttpObject();
	if(!ajaxNewsObj) return;
	ajaxNewsObj.onreadystatechange=onAjaxNewsObjFinished;
	ajaxNewsObj.open("GET", xmlDataSource, true);
	ajaxNewsObj.send();
}
function getXmlHttpObject(){
	if (window.XMLHttpRequest) return new XMLHttpRequest();
	if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
	alert('Operation Aborted: Your browser does not support AJAX.');
	return null;
}

function getXml(txt) {
	var xmlDoc;
	if (window.DOMParser) {
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(txt,"text/xml");
	}
	else {
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(txt);
	}
	return xmlDoc;
}


function addNews(myNewsItem) {
	myNewsItems.push(myNewsItem);
	maxYear = Math.max(maxYear,myNewsItems[myNewsItems.length - 1].date.getFullYear());
	minYear = Math.min(minYear,myNewsItems[myNewsItems.length - 1].date.getFullYear());
	return;
	alert('Added News:' +
		'\nType of news: ' + myNewsItem.type +
		'\nStart Date: ' + myNewsItem.date +
		'\nEnd Date: ' + myNewsItem.enddate +
		'\nDuration: ' + myNewsItem.duration +
		'\nLocation: ' + myNewsItem.loc +
		'\nURL for News Headline Link: ' +myNewsItem.myHref +
		'\nText for News Headline Link: ' +myNewsItem.myLinktext +
		'\nDescription Text: ' +myNewsItem.desc +
		'\nURL for Description Text Link: ' +myNewsItem.content_href +
		'\nText for Description Text Link: ' +myNewsItem.content_linktext +
		'\nYear: ' +myNewsItem.year);
}

var myNewsItems = new Array();
var maxYear = 0, minYear = 9999;

var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

var newsTickerTime = 5000;
var newsTicker_i = -1;
var newsTickerLimit = 0;

function printNewsTicker(howMany) {
	newsTickerLimit = howMany;
	document.write('<div id="dfinews"></div>');
	$("#dfinews").append('<span id="dfinewsText"></span>');
	afterLoadCallback=newsTickerAdvance;
	loadNews2();
}

function newsTickerAdvance(){
	if( myNewsItems.length <= 0 ||  myNewsItems.length == null ||  myNewsItems.length === undefined) return;
	$("#dfinewsText").fadeOut(750, function(){
		$("#dfinewsText").empty();
		newsTicker_i++;
		if(newsTicker_i >= myNewsItems.length || newsTicker_i >= newsTickerLimit) newsTicker_i = 0;
		$("#dfinewsText").append(myNewsItems[newsTicker_i].printTicker());
		$("#dfinewsText").fadeIn(750, function(){
			setTimeout('newsTickerAdvance()',newsTickerTime);
		});
	});
}

function printNews(howMany) {
	document.write('<div id="newscontent"></div>');
	afterLoadCallback=printNewsAsync;
	afterLoadCallbackVar=howMany;
	loadNews2();
}

function printNewsAsync(howMany) {
	var newscontent = document.getElementById('newscontent');
	newscontent.innerHTML = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td style="padding:3px 0 10px 10px; color: #222222"><b>Latest News &amp; Events</b><br/></td></tr>';
	for(i = 0; i < myNewsItems.length && i < howMany; i++) {
		if(i%2==0)
			newscontent.innerHTML += '<tr><td style="background: #f5f5f5; border-top: dotted 2px #e5e5e5; padding: 3px 10px;" valign="top"><div style="text-align: right; padding: 2px 0; float:left;"><span class="bullet">&raquo;</span></div><div style="padding: 4px 0; width:90%; float: right;"><a href="' + myNewsItems[i].href + '" class="ashlink" title="' + getShortTitle(myNewsItems[i].desc) + '">' + myNewsItems[i].linktext + '</a></div></td></tr>';
		else
			newscontent.innerHTML += '<tr><td style="background: #ffffff; border-top: dotted 2px #e5e5e5; padding: 3px 10px;" valign="top"><div style="text-align: right; padding: 2px 0; float:left;"><span class="bullet">&raquo;</span></div><div style="padding: 4px 0; width:90%; float: right;"><a href="' + myNewsItems[i].href + '" class="ashlink" title="' + getShortTitle(myNewsItems[i].desc) + '">' + myNewsItems[i].linktext + '</a></div></td></tr>';
	}
	newscontent.innerHTML +='<tr><td style="padding:3px 0 3px 10px; text-align: right;" ><a href="news_index.jsp" class="orglinkN">More News &raquo;</a></td></tr></table>';
}

function getShortTitle(desc) {
	if(desc.length<=100) return desc;
	else return desc.substr(0,80) + '&#8230; (Click to read more)';
}

function printNewsPage() {
	document.write('<div id="newscontent" style="float:left; text-align: left;width:89.5%;"></div><div id="yearlist" style="float:right; width:10%;text-align:left;"></div>');
	var search1 = location.search;
	if(search1.length > 1) {
		search1 = search1.substr(1);
		var search2 = search1.split("&");
		for(var i = 0;i < search2.length; i++)
		{
			if(search2[i].split("=")[0]=='dfinews')
			{
				var newsType = search2[i].split("=")[1];
				if(newsType.length > 1) {
					afterLoadCallback=printNewsPageAsync;
					afterLoadCallbackVar=newsType;
					loadNews2();
					return;
				} 
			}	
		}	
	}
	afterLoadCallback=printNewsByYear;
	loadNews2();
}

function printNewsPageAsync(newsType) {
	yearList();
	if(newsType=='press') {
		printNewsType('Press Release');
		return;
	} else if(newsType=='event') {
		printNewsType('Event');
		return;
	} else if(newsType=='news') {
		printNewsType('News');
		return;
	} else if(IsNumeric(newsType)) {
		changeYear(newsType);
		return;
	}
}

function IsNumeric(sText)
{
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
		{
			IsNumber = false;
		}
	}
	
	return IsNumber;
}

function printNewsType(newsType) {
	var newscontent = document.getElementById('newscontent');
	if(!newscontent || newscontent == null) return true;
	var printed = 0;
	var itemsToPrint = '<h2>Viewing all ' + newsType + ' items:</h2>';
	for(i = 0; i < myNewsItems.length; i++) {
		if(myNewsItems[i].type == newsType) {
			printed++;
			itemsToPrint += myNewsItems[i].printNewsItem(printed%2);
		}
	}
	newscontent.innerHTML = itemsToPrint;
}

function printNewsByYear() {
	yearList();
	changeYear((new Date()).getFullYear());	
}

function changeYear(changeToYear) {
	var printed = 0;
	var itemsToPrint = '<h2>&nbsp;News &amp; Events for ' + changeToYear + ':</h2>';
	for(i = 0; i < myNewsItems.length; i++) {
		if(myNewsItems[i].year == changeToYear) {
			printed++;
			itemsToPrint += myNewsItems[i].printNewsItem(printed%2);
		}
	}
	document.getElementById('newscontent').innerHTML = itemsToPrint;
}

function yearList() {
	var yearlist = document.getElementById('yearlist');
	var myOutput = '<h2 style="display:block; width: 100%; text-align: center;">Year:</h2><ul style="margin: 0; padding: 0; list-style: none;">';
	for(i = maxYear; i >= minYear; i--) {
		myOutput += '<li><a style="text-decoration:none;display:block; margin: 3px 0; padding: 2px; border: solid 1px #cccccc; background: #eeeeee; text-align: center; cursor:pointer; font-weight:bold; color: #333333; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; letter-spacing: normal;" onmouseover="this.style.color=\'black\';this.style.background=\'#cccccc\'; this.style.letterSpacing=\'1px\';" onmouseout="this.style.color=\'#333333\';this.style.background=\'#eeeeee\';this.style.letterSpacing=\'normal\';" href="/news_index.jsp?dfinews='+i+'">' + i + '</a></li>';
	}
	myOutput += '</ul></div>';
	yearlist.innerHTML = myOutput;
}

function newsItem(myType, myDate, myEnddate, myLoc, myHref, myLinktext, myDesc, myHref2, myLinktext2, myImg) {
	this.type = myType;
	this.duration = 0;
	this.date = new Date(myDate);
	if(myEnddate != '') {
		this.enddate = new Date(myEnddate);
		this.duration = 1;
	}
	this.loc = myLoc;
	this.href = myHref;
	this.linktext=myLinktext;
	this.desc=myDesc; 
	this.content_href=myHref2;
	this.content_linktext=myLinktext2;
	this.year = this.date.getFullYear();
	this.img=myImg;
	
	this.printTicker = function() {
		var returnMe = '<a class="dfinewslink" href="' + this.href + '">' + this.linktext + '</a>';
		return returnMe;
	}
	
	this.printNewsItem = function(isOdd) {
		var myBG = "#ffffff";
		if(isOdd==0) myBG = "#f5f5f5";
		var returnMe = '<table border="0" cellpadding="5" cellspacing="0" style="width:98%; padding: 5px; margin: 0px 0; border-bottom: solid 1px #dddddd; border-top: solid 1px #dddddd; background: ' + myBG + ';">' +
							'<tr>' +
								'<td ' + ((this.img.length > 0)?(''):('colspan="2"')) + ' style="vertical-align:top;">'+
									'<p style="margin-top: 0;">' +
										'<a href="' + this.href + '" class="orglinkN" style="font-size: 14px; font-weight:bold;">' + 
											this.linktext + 
										'</a>' +
										'<br />' +
										'<br />' +
										'<span>'+
											this.desc +
										'</span>' +
									'</p>' +
								'</td>' +
								((this.img.length > 0)?('<td style="padding: 10px;width:150px;"><img width="150" src="'+this.img+'" /></td>'):(''))+
							'</tr>' +
							'<tr>' +
								'<td colspan="2" style="border-bottom: solid 1px #bbbbbb; margin: 0; padding: 0;">' +
									'<p style="margin-top:5px;text-align:right;">' +
										'<a href="' + ((this.content_linktext.length > 0)?(this.content_href + '" class="orglinkN">' + this.content_linktext):(this.href + '" class="orglinkN">Read More')) + '&nbsp;&raquo</a>' +
									'</p>' +
								'</td>' + 
							'</tr>' +
							'<tr>' +
								'<td style="font-size: 9px; text-style: italics; color: #666666;">' +
									((this.loc.length > 0)?(this.loc + ' - '):('')) + this.displayDate() +
								'</td>' +
								'<td style="font-size: 9px; text-style: italics; color: #666666; text-align: right; whitespace: nowrap;">' +
									'Filed under ' + this.getFileLink() +
								'</td>' +
							'</tr>' +
						'</table>';
		
		return returnMe;
	}
	
	this.displayDate = function() {
		var returnMe = month[this.date.getMonth()] + ' ' + this.date.getDate();
		if(this.duration > 0) {
			if(this.date.getMonth() == this.enddate.getMonth()) {
				returnMe += '-' + this.enddate.getDate() + ', ' + this.enddate.getFullYear();
			} else {
				returnMe += ' - ' + month[this.enddate.getMonth()] + ' ' + this.enddate.getDate() + ', ' + this.enddate.getFullYear();
			}
		} else {
			returnMe += ', ' + this.date.getFullYear();
		}
		return returnMe;
	}
	
	this.getFileLink = function() {
		var returnMe = '';
		if(this.type == "News") {
			returnMe = '<a href="/news_index.jsp?dfinews=news" class="orglinkN" style="font-size: 9px;">News</a>';
		} else if(this.type == "Press Release") {
			returnMe = '<a href="/news_index.jsp?dfinews=press" class="orglinkN" style="font-size: 9px;">Press Releases</a>';
		} else if(this.type == "Event") {
			returnMe = '<a href="/news_index.jsp?dfinews=event" class="orglinkN" style="font-size: 9px;">Events</a>';
		} else {
			returnMe = this.type + ((this.type.substr(this.type.length -1)=='s') ? '' : 's');
		}
		returnMe += ', <a href="/news_index.jsp?dfinews=' + this.date.getFullYear() + '" class="orglinkN" style="font-size: 9px;">' + this.date.getFullYear() + '</a>';
		return returnMe;
	}
}