/* ticker_v2.js
 * Author:      David Coleman
 * Purpose:     Gets contents of an rss feed (xml) via ajax 
 *				and builds a string that will be scrolled in the 
 *				ticker "mooquee" object
 * Parameters:  none
 * Returns:     nothing
 *				instantiates a new mooquee object
 */
var ticker_v2 = function() {
	var httpRequest = null;

	/* 
	*    init_xhr 
	*    initializes XMLHTTP Request object 
	*/
	this.init_xhr = function() {
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
		    httpRequest = new XMLHttpRequest();
		    if (httpRequest.overrideMimeType) {
		        httpRequest.overrideMimeType('text/xml');
		    }
		} else if (window.ActiveXObject) { // IE
		    try {
		        httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		    } catch (e) {
		        try {
		            httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
		        } catch (e) {
			
				}
		    }
		}
		if (!httpRequest) {
			return false;
		}
		return true;
	}

	/* 
	 *    get_news_feed 
	 *    sends HTTP request to grab xml document 
	 */
	this.get_news_feed = function() {
		if (!this.init_xhr()) {
			return false;
		}
		httpRequest.onreadystatechange = this.parse_response;
	    httpRequest.open('GET', 'downloads/press_releases/feed.xml', true);
	    httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	    httpRequest.send(null);
	}

	/* 
	 *    build_string 
	 *    constructs the ticker string from rss items' "title" & "link" elements 
	 */
	/*this.build_string = function(items) {
		var str = '';
		for (var i = 0; i < items.length; i++) {
			str += '<a class="news-link" href="'+escape(items[i]['link'])+'">'+escape(items[i]['title'])+'</a>&nbsp;&nbsp;&nbsp;&nbsp;';
		}
		return str;
	}*/

	/* 
	 *    parse_response 
	 *    handles the http response, parsing the xml document for item titles and links 
	 */
	this.parse_response = function() {
		var xml;
		if (httpRequest.readyState == 4) {
	        if (httpRequest.status == 200) {
	            xml = httpRequest.responseXML;
			}
		}
		if (xml) {
			var rssItems    = xml.getElementsByTagName("item"); // get all items from rss feed
			var tickerItems = new Array();						// array of JSON objects ({title => "title", link => "link"})
			var tickerString = '';								// string of anchors that is scrolled in ticker
			
			// get title and link from each rss item, push onto tickerItems
			for (var i = 0; i < rssItems.length; i++) {
				var title = rssItems[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
				var link  = rssItems[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
				if (rssItems[i].getElementsByTagName("expDate")[0]) {
					// check for expiration date on this ticker item,
					// do not display if past expiration date
					var expireDate = rssItems[i].getElementsByTagName("expDate")[0].childNodes[0].nodeValue;
					if (expireDate) {
						expireDate = Date.parse(expireDate);
						if (isNaN(expireDate)) {
							// if date is invalid, add error message to ticker title string
							tickerItems.push({title: title+' INVALID EXPIRATION!', link: link});
							continue;
						}
						expireDate = new Date(expireDate);
						var now = new Date();
						if (now.getTime() < expireDate.getTime()) {
							tickerItems.push({title: title, link: link});
						}
					} else {
						tickerItems.push({title: title, link: link});
					}
				} else {
					tickerItems.push({title: title, link: link});
				}
			}
			// build tickerString
			for (var i = 0; i < tickerItems.length; i++) {
				var link = tickerItems[i]['link'];
				var title = tickerItems[i]['title'];
				if (link != 'none') {
					if (!link.match(/http/) && link.match(/\.html/)) {
						tickerString += '<a class="news-link" href="'+link+'">'+title+'</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
					} else {
						tickerString += '<a class="news-link" target="_blank" href="'+link+'">'+title+'</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
					}
				} else {
					tickerString += title + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
				}
				// OLD CODE, SHOULD BE REMOVED
/*				// if link == 'none' just output the title text, otherwise put the title in an anchor <a></a>
				if (tickerItems[i]['link'] != 'none') {
					tickerString += '<a class="news-link" target="_blank" href="'+tickerItems[i]['link']+'">'+tickerItems[i]['title']+'</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
				} else {
					tickerString += tickerItems[i]['title'] + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
				} */
			}
     		$('ticker').innerHTML = unescape(tickerString);
			// create "mooquee" ticker object inside div with id="ticker"
			new mooquee($('ticker'));
		} else {
			$('ticker').innerHTML = '';
		}
	}
    
	

}