/*
Written by Nick Sergeant, last updated February 15th, 2008.
http://www.nicksergeant.com
*/

var html = new Array;
var jsonator = new Array;
var totalFeedURLs = 0;
var a = 0;
var aa = 0;
var ee = 0;
var f = 0;
var h = 0;

function GetJobsFeed(feed,type) {
	var newScript = document.createElement('script');
	newScript.type = 'text/javascript';
	if (type == 'json') {
		newScript.src = feed;
	}
	else {
		newScript.src = 'http://pipes.yahoo.com/pipes/pipe.run?_id=8ri1mB_b3BG3sY4CCR2yXQ&_render=json&_callback=Transport&feed='+feed;
	}
	document.getElementsByTagName("head")[0].appendChild(newScript);
}

function Transport(feed) {
	jsonator[a] = feed;
	a++;
}

function Handler(type,feed,argTarget,argItems,argExclude,argContainer,argRetainContainer) {
	for (var i = 0; i < argItems; i++) {
		if (feed.value.items[i]) {
			if (html[h] == undefined) {
				html[h] = '';
			}
			itemTitle = (feed.value.items[i].title).replace(/\"/g,'\'');
			itemLink = (feed.value.items[i].link);
			itemDesc = (feed.value.items[i].description);
			// strip HTML from description
				itemDesc = itemDesc.replace(/<\/?[^>]+(>|$)/g, "");
			//trim description			
				lenDesc = 250;
				if (itemDesc.length > lenDesc) {
					itemDesc = itemDesc.substring(0, lenDesc);
					itemDesc = itemDesc.replace(/\w+$/, '');
					itemDesc += '...';
				}
			
			//format time
				if (feed.value.items[i].pubDate == undefined){
					itemDate = feed.value.items[i].published;
				}else{
					itemDate = feed.value.items[i].pubDate;
				}
				function leadingZero(nr)
				{
					if (nr < 10) nr = "0" + nr;
					return nr;
				}				
				
				itemPubDate = new Date(itemDate);				
				t_date = itemPubDate.getDate();	
				t_mon_name = new Array ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');		
				t_mon = t_mon_name[itemPubDate.getMonth()];
				t_year = itemPubDate.getFullYear();
				t_hour = itemPubDate.getHours();
				t_min = leadingZero(itemPubDate.getMinutes());
				ampm = " AM";
				if (t_hour == 0){ t_hour = 12;}
				if (t_hour > 11){ ampm = " PM";}
				if (t_hour > 12){ t_hour -= 12;}	
				


			switch (type) {
				case 'anchor-titles': {
					html[h] += '<a href="' + feed.value.items[i].link + '" title="' + itemTitle + '">' + itemTitle + '</a>';
					break;
				}
				case 'anchor-titles-related': {
					if (argExclude != '') {
						var re = new RegExp(argExclude,'gi');
						itemTitle = (feed.value.items[i].title).replace(re,'');
					}
					html[h] += '<a href="' + feed.value.items[i].link + '" title="' + itemTitle + '">' + itemTitle + '</a>';
					break;
				}

				case 'anchor-summary': {
					
					html[h] += '<div class="clearfix section_block">';
					
					html[h] += '<h2 class="section_headline"><a href="' + itemLink + '" title="' + itemTitle + '">' + itemTitle +'</a></h2><div class="m10l">';
					//html[h] += '<div class=summary>' + itemDate + '</div>';
					//html[h] += '<div class=summary>' + itemPubDate + '</div>';
					if (t_mon != undefined ){
						html[h] += '<div class="section_timestamp m5b">Posted ' + t_mon + ' ' + t_date + ', ' + t_year + ' @ ' + t_hour + ':' + t_min + ampm + '</div>';
						}
					if (t_mon == undefined ){
						html[h] += '<div class="section_timestamp m5b">' + feed.value.items[i].published + '</div>';
						}
					html[h] += '<div class="section_summary"><p>' + itemDesc + '</p></div></div></div>';			
					break;
				}	

				case 'list-titles': default: {
					html[h] += '<li><a href="' + feed.value.items[i].link + '" title="' + itemTitle + '">' + itemTitle + '</a></li>';			
					break;
				}
			
			}
		}
	}
	h++;
	ProcessJobsResult(html[h-1],argTarget,argContainer,argRetainContainer);
}

function CheckFeedStatus(argLength,argHandler,argTarget,argItems,argExclude,argContainer,argRetainContainer,aa) {
	if (argLength == jsonator.length) {
		Handler(argHandler,jsonator[aa],argTarget,argItems,argExclude,argContainer,argRetainContainer);
	}
	else {
		if (ee < 500) {
			setTimeout("CheckFeedStatus('" + argLength + "','" + argHandler + "','" + argTarget + "','" + argItems + "','" + argExclude + "','" + argContainer + "','" + argRetainContainer + "','" + aa + "')", '1000');
		}
		else {
			return false;
		}
		ee++;
	}
}

function ProcessJobsFeeds(args) {
	for (var i = 0; i < args.feeds.length; i++) {
		totalFeedURLs += args.feeds[i].urls.length;
	}
	for (var i = 0; i < args.feeds.length; i++) {
		for (var ii = 0; ii < args.feeds[i].urls.length; ii++) {
			GetJobsFeed(args.feeds[i].urls[ii].url,args.feeds[i].type);
			setTimeout("CheckFeedStatus('" + totalFeedURLs + "','" + args.feeds[i].handler + "','" + args.feeds[i].target + "','" + args.feeds[i].items + "','" + args.feeds[i].exclude + "','" + args.feeds[i].container + "','" + args.feeds[i].retainContainer + "','" + aa + "')",'1000');
			aa++;
		}
	}
}

function ProcessJobsResult(html,target,container,retainContainer) {
	if (html) {
		document.getElementById(target + '-loading').style.display = 'none';
		document.getElementById(target).innerHTML += html;
	}
	else {
		if (container != '' && retainContainer != 'true') {
			document.getElementById(target + '-loading').style.display = 'none';
			document.getElementById(container).style.display = 'none';
		}
		else {
			document.getElementById(target + '-loading').style.display = 'none';
		}
	}
}
