var http_request = false;
var sponsor = false;
var state = "type";
var resourceBy = -1;
var id;
var sortBy;
var innerAttrSort = false;
var display;

function changeSort( type, aid, sort2) {
	var obj = document.getElementById("viewby");
	if (type == 'sponsor') {
		document.getElementById('viewby').innerHTML = 'View resources by:&nbsp;&nbsp;<a href="#"  onclick="return changeSort(\'type\');" >Type</a><span>|</span><a href="#" onclick="return changeSort(\'sponsor\');" >Sponsor</a>';
		obj.childNodes[3].className="current";
		obj.childNodes[1].className="";
		sponsor = true;
		state = 'featured';
	} else if (type == 'type') {
		document.getElementById('viewby').innerHTML = 'View resources by:&nbsp;&nbsp;<a href="#"  onclick="return changeSort(\'type\');" >Type</a><span>|</span><a href="#" onclick="return changeSort(\'sponsor\');" >Sponsor</a>';
		obj.childNodes[1].className="current";
		obj.childNodes[3].className="";
		sponsor = false;
		state = 'featured';
	}
	if (type == "sponsor_all") {
		state= "type_all";
		document.getElementById('viewby').innerHTML = 'View resources by:&nbsp;&nbsp;<a href="#"  onclick="return changeSort(\'type_all\','+id+');" >Most Recent</a><span>|</span><a href="#" onclick="return changeSort(\'sponsor_all\','+id+',true);" >Type</a>';
		if(sort2) {
			obj.childNodes[1].className="";
			obj.childNodes[3].className="current";
		} else {
			obj.childNodes[1].className="current";
			obj.childNodes[3].className="";
		}
		sortBy = aid;
		sponsor = true;
	}
	if (type == "type_all") {
		state= "type_all";
		document.getElementById('viewby').innerHTML = 'View resources by:&nbsp;&nbsp;<a href="#"  onclick="return changeSort(\'type_all\','+id+');" >Most Recent</a><span>|</span><a href="#" onclick="return changeSort(\'type_all\','+id+',true);" >Sponsor</a>';
		if(sort2) {
			obj.childNodes[1].className="";
			obj.childNodes[3].className="current";
		} else {
			obj.childNodes[1].className="current";
			obj.childNodes[3].className="";
		}
		sortBy = aid;
		sponsor = false;
	}
	
	if(sort2) {
		innerAttrSort = true;
	} else {
		innerAttrSort = false;
	}
	
	makeRequestResources();
	return false;
}

function compare(x,y) {
	if(x.type == y.type) { return 0; }
	if(x.type < y.type) { return -1; }
	return 1;
}

function getArticles( 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 "title" : XMLItem[i]["title"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:type" : if( sponsor ) {
										XMLItem[i]["sponsor"] = XMLNode[i].childNodes[k].firstChild.data;
									 } else {
										XMLItem[i]["type"] = XMLNode[i].childNodes[k].firstChild.data;
									 }
										break;									
					 case "k:summary_img" : XMLItem[i]["image"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "title" : XMLItem[i]["title"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:sponsor" : if( sponsor ) {
										XMLItem[i]["type"] = XMLNode[i].childNodes[k].firstChild.data;
									 } else {
										XMLItem[i]["sponsor"] = XMLNode[i].childNodes[k].firstChild.data;
									 }
										break;
					 case "description" : XMLItem[i]["description"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "link" : XMLItem[i]["hlink"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:visit_site" : XMLItem[i]["sponsor_link"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "guid" :      XMLItem[i]["id"] = XMLNode[i].childNodes[k].firstChild.data.split('ct=')[1];
										break;
					 case "pubDate" :   XMLItem[i]["date"] = convertDate(XMLNode[i].childNodes[k].firstChild.data);
										break;
					 case "k:go_to_article_now_url_internal" : XMLItem[i]["go_internal"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:go_to_article_now_url_external" : XMLItem[i]["go_external"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
				 }
			 }
		 }
	}

	XMLItem.sort(compare);
	
	var oldType = "";
	k = -1;
	m = 0;
	var articles = new Array();
	for (i=0; XMLItem.length>i; i++)
	{
		if (oldType != XMLItem[i].type ) {
			k++;
			oldType = XMLItem[i].type;
			articles[k] = new Array();
			m=0;
		}
		articles[k].type = XMLItem[i].type;
		articles[k][m] = XMLItem[i];
		m++;
	}
	
	var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;
	for (i=0; articles.length>i; i++)
	{
		if(articles[i].type == sortBy) {
			id = i;
		}
		
		articles[i].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 articles;
}

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];
//	monthTemp = arr[2];
	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;
}

function buildJumpTo(articles) {
	var oldType = "";
	var jumpToBlock = "";
	jumpToBlock = "Jump to:&nbsp;&nbsp;";
	var i;
	var test = articles.length;
	for (i=0; articles.length>i; i++)
	{
		if (oldType != articles[i].type ) {
			jumpToBlock += '<a href="#'+articles[i].type+'">'+articles[i].type+'</a>';
			oldType = articles[i].type;
			if(articles.length != (i+1) ) {
				jumpToBlock += '<span> | </span>';
			}
		}
	}
	return jumpToBlock;
}

function cE (i) {
	return(!(typeof i === 'undefined'));
}

function displayAllTypes( articles ) {
	if(innerAttrSort) {	articles[id].sort( function (x,y) {	if(x.sponsor == y.sponsor) { return 0; }	if(x.sponsor < y.sponsor) { return -1; }	return 1; }); } // sorting if they are sorting by sponsor or type
	resourceBlocks = '';
	var backgroundImage = 'Sponsor';
	if(sponsor) { backgroundImage = 'Type'; }
	resourceBlocks += '<h2 id="'+articles[id].type+'" style="background: url(/atf/cf/{DB6A45E4-C446-4248-82C8-E131B6424741}/BG-ORANGEGREY.GIF) no-repeat 0;" ><span style="float:left;width:330px">'+articles[id].type+'&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;All Results</span><a style="float:left;margin-right:40px;text-transform:none;font-weight:normal;" href="#">'+backgroundImage+'</a></h2>';
	for (j=0; articles[id].length>j; j++) {
		var img = "";
		var nI = "";
		img = '';
		nI = "width:330px;";
		if (cE(articles[id][j].go_internal)){
			bottomLink = '<a href="'+articles[id][j].go_internal+'" class="intlink">Go to Resource now</a>';				
			title='<a href="'+articles[id][j].go_internal+'">'+articles[id][j].title+'</a>';
		} else if (cE(articles[id][j].go_external)){
			bottomLink = '<a href="'+articles[id][j].go_external+'" class="extlink" target="'+id+'_'+j+'">Go to Resource now</a>';
			title='<a href="'+articles[id][j].go_external+'" target="'+i+'_'+j+'">'+articles[id][j].title+'</a>';
		} else {
			bottomLink = '<a href="'+articles[id][j].hlink+'" class="intlink">Go to Resource now</a>';				
		} 
		var summary = "";
		if(cE(articles[id][j].description)) {
			summary = '<p>'+articles[id][j].description+'</p>';
		}
 		resourceBlocks += '<div class="resourceblock first">'+img+'<div class="text" style="'+nI+'">  <h3>'+title+'</h3>'+summary+bottomLink+'</div><div class="extlinks">'+articles[id][j].sponsor+'<br />';
		if(!sponsor) {
		    resourceBlocks += '<a href="'+articles[id][j].sponsor_link+'" target="_site" class="extlink">visit site</a></div>'; 
		} else { 
			resourceBlocks += '<a href="#" onclick="return changeSort(\'type_all\', \''+articles[id][j].sponsor+'\');">view all</a></div>'; 
			}
		resourceBlocks += '<div class="clear"></div></div>';
	}
	resourceBlocks += '<div class="backtotoplink"><a href="#anchorlinks2">Back to top</a></div>';
	return resourceBlocks;
}


function createResources(articles) {
	var resourceBlocks = "";
	var maxArticles = 3;
	var backgroundImage = "";

	for (i=0; articles.length>i; i++)
	{
		if(sponsor) { 
			backgroundImage = 'style="background: url(http://www.umc.org/atf/cf/{DB6A45E4-C446-4248-82C8-E131B6424741}/BG-TYPEORANGEGREY.GIF) no-repeat 0;"';
			thisSortType = 'sponsor_all';
			//resourceBlocks += '<h2 id="'+articles[i].type+'" '+backgroundImage+' ><a href="#" onclick="return changeSort(\''+thisSortType+'\',\''+articles[i].type+'\');">'+articles[i].type+'</a></h2>';
		} else {
			thisSortType = 'type_all';
		}
		resourceBlocks += '<h2 id="'+articles[i].type+'" '+backgroundImage+' >Featured '+articles[i].type+' Resources ( <a href="#" onclick="return changeSort(\''+thisSortType+'\',\''+articles[i].type+'\');">View all</a> )</h2>';
		
		for (j=0; articles[i].length>j; j++) {
 			if (maxArticles<=j) { break; }
			if (cE(articles[i][j].go_internal)){
				bottomLink = '<a href="'+articles[i][j].go_internal+'" class="intlink">Go to Resource now</a>';				
				title='<a href="'+articles[i][j].go_internal+'">'+articles[i][j].title+'</a>';
			} else if (cE(articles[i][j].go_external)){
				bottomLink = '<a href="'+articles[i][j].go_external+'" class="extlink" target="'+i+'_'+j+'">Go to Resource now</a>';
				title='<a href="'+articles[i][j].go_external+'" target="'+i+'_'+j+'">'+articles[i][j].title+'</a>';
			} else {
				bottomLink = '<a href="'+articles[i][j].hlink+'" class="intlink">Go to Resource now</a>';				
			} 
			var img = "";
			var nI = "";
			if(cE(articles[i][j].image)) {
				img = '<div class="photo"><img alt="" src="'+articles[i][j].image+'" /></div>';
			} else {
				nI = "width:352px;"
			}
			var summary = ""
			if(cE(articles[i][j].description)) {
				summary = '<p>'+articles[i][j].description+'</p>';
			}
			resourceBlocks += '<div class="resourceblock first">'+img+'<div class="text" style="'+nI+'">  <h3>'+title+'</h3>'
								+summary+bottomLink+'</div><div class="extlinks">'+articles[i][j].sponsor+'<br />';
			if(!sponsor) { resourceBlocks += '<a class="extlink" href="'+articles[i][j].sponsor_link+'" class="extlink" target="'+i+'_'+j+'">visit site</a></div>'; }
			  else { resourceBlocks += '<a class="extlink" href="#" onclick="return changeSort(\'type_all\',\''+articles[i][j].sponsor+'\'); ">view all</a></div>'; }
			resourceBlocks += '<div class="clear"></div></div>';
		}
		resourceBlocks += '<div class="backtotoplink"><a style="float:left;" href="#anchorlinks2">Back to top</a><a style="float:right; margin-right:7px;" href="#" onclick="return changeSort(\''+thisSortType+'\',\''+articles[i].type+'\');">View all '+articles[i].type+' items</a></div>';
	}
	return resourceBlocks;
}

function makeRequestResources() {
	url = document.getElementById('articles').getAttribute('rss');
	http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = displayResources;
	http_request.open('GET', url, true);
	http_request.send(null);
}

function displayResources() {
	if (http_request.readyState == 1) {
		//document.getElementById('articles').innerHTML = "Loading...";
	}
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var xmldoc = http_request.responseXML;
			var root_node = xmldoc.getElementsByTagName('item');
			var articles = getArticles(root_node);
			switch(state) {
				case "type_all"	:   document.getElementById('anchorlinks2').innerHTML = '&lt;&lt; <a href="#" onclick="return changeSort(\'type\');">Back to Featured Resources</a>';
									document.getElementById('articles').innerHTML = displayAllTypes(articles);
									break;
				default			:	document.getElementById('anchorlinks2').style.visibility = "";
									document.getElementById('articles').innerHTML = createResources(articles);
									document.getElementById('anchorlinks2').innerHTML = buildJumpTo(articles);
									break;
			}
			} else {
				alert('There was a problem with the request.');
			}
		}
}

function addLoadListener(fn)
{
	if (typeof window.addEventListener != 'undefined')
	{
		window.addEventListener('load', fn, false);
	}
 	else if (typeof document.addEventListener != 'undefined')
 	{
   	document.addEventListener('load', fn, false);
	}
 	else if (typeof window.attachEvent != 'undefined')
 	{
   	window.attachEvent('onload', fn);
 	}
 	else
 	{
   	var oldfn = window.onload;
   	if (typeof window.onload != 'function')
   	{
     window.onload = fn;
   	}
   	else
   	{
	window.onload = function()
     {
       oldfn();
       fn();
     };
   }
 }
}

function init(){
	display = document.getElementById('articles');
	document.getElementById('articles').innerHTML = '<img src="/atf/cf/{DB6A45E4-C446-4248-82C8-E131B6424741}/loading_ajx.gif" style="margin:50px auto 0 210px;"/>';
}
addLoadListener(init);

addLoadListener(makeRequestResources);