/* ==== Blog Feed Parser (Sidhuvudpuff) ====*/
var BlogFeedParser = function(){ // created by singleton.
	// status monitors.
	var hasRun = false;
	var ajaxRunning = false;
	var entries = [];

	// private vars.
	var template,newestFeed,newestItem,newestFile,newestAuthor,wrapper,checksum,feedsParsed=0;

	var sels = { // css sels.
		wrapper : "div.LocalNewsWrapper",
		blogWrapper : '.BlogWrapper',
		blogLoading : 'loading'
	}

	var blogEntry = new Template( // blog entry template.
		'<dl>'+
			'<dt><span class="#{author}"></span> #{blogTitle}:</dt>'+
			'<dd><a href="#{link}"> #{itemTitle}</a></dd>'+
		'</dl>'
	);

	var getLocalSite = function() {
		return false; // not used in this build.
	}

	var parseBlogFeeds = function(){
		var localSite = getLocalSite();
		for(var i=0, max=blogUrlItems.length; i<max; i++){
			if((localSite!=null && (blogUrlItems[i].indexOf('/'+localSite) > -1)) || !localSite){
				ajaxRunning = true;
				new Ajax.Request(blogUrlItems[i],{
					method : 'get',
					onSuccess: function(request){
						var item = request.responseXML.getElementsByTagName('item');
						if(item.length > 0){
							var obj = {};
							obj.item = item[0];
							obj.channel = request;
							obj.file = request.request.url.substring(request.request.url.length-7,request.request.url.length-4);
							entries.push(obj);
						}
						ajaxRunning = false;
					}
				});
			}
			feedsParsed++;
		}
	}

	var getInnerHTML = function(parentElm,elm){ // move this to global?
		return parentElm.getElementsByTagName(elm)[0].lastChild.nodeValue;
	}

	return { // public interface.
		exists: function(){
			var testItems, testPageHead;
			testItems = (typeof blogUrlItems == 'object' && blogUrlItems.length>0);
			wrapper = $('mainTop');
			if(!wrapper) return;
			wrapper = wrapper.select(sels.wrapper);
			return testItems && wrapper.length>0;
		},

		init: function(){
			if(this.exists() && hasRun == false){
				this.install();
				// should only run once per pageLoad.
				hasRun = true;
			}
		},

		install : function(){
			var data = {};
			checksum = blogUrlItems.length;
			var current;

			var blogs = wrapper[0].select(sels.blogWrapper)[0];
			blogs.addClassName(sels.blogLoading);

			parseBlogFeeds();

			var whileFeedsParsed = setInterval(function(){
				if(feedsParsed==checksum && !ajaxRunning){
					for(var i=0,max=entries.length;i<max;i++){
						var test = Date.parse(getInnerHTML(entries[i].item,'pubDate'));
						if((!current && !newestItem) || (test > current)){ /* no item stored OR test item newer than current item */
							newestFeed = entries[i].channel.responseXML.getElementsByTagName('channel')[0];
							newestItem = entries[i].item;
							newestFile = entries[i].file;
							newestAuthor = entries[i].file;
							current = test;
						}
					}

					blogs.removeClassName(sels.blogLoading);

					data['itemTitle'] = getInnerHTML(newestItem,'title');
					data['blogTitle'] = getInnerHTML(newestFeed,'title');
					data['link'] = getInnerHTML(newestItem,'link');
					data['author'] = newestAuthor;
					blogs.insert(blogEntry.evaluate(data));
					clearInterval(whileFeedsParsed);
				}
			},1000);
		}
	}
}();
/* *** /Blog Feed Parser *** */
