var http_request = false;
var dateSort = false;
var state = "type";
var resourceBy = -1;
var id;
var sortBy;
var innerAttrSort = false;
var articles;
var bI = 'http://umcom.org/atf/cf/{DB6A45E4-C446-4248-82C8-E131B6424741}/blank-holder.gif';
var urlRSS = 'http://www.umcom.org/site/apps/nl/rss3.asp?c=mrLZJ9PFKmG&b=4680005';


/* Global variable to call rotator */
var umcStoryRotator = null;

function d(str) { // debug function
	
	if(document.getElementById('debugger') == null){
		var s = document.createElement('span');
		s.style.display = 'none';
		s.id = 'debugger';
		s.innerHTML = str+'\n';
		var b = document.getElementsByTagName('body')[0];
		b.appendChild(s);
	} else {
		var s = document.getElementById('debugger');
		s.innerHTML += str+'\n';
	}	
}

function compare(x,y) {
	//alert('compare() called')
	if(x.type == y.type) { return 0; }
	if(x.type < y.type) { return -1; }
	return 1;
}

function getArticles( XMLNode ) {
	var XMLItem = new Array();
	var test = "";
	var sA = 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 "description" : XMLItem[i]["summary"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:go_to_article_now" : XMLItem[i]["article"] = XMLNode[i].childNodes[k].firstChild.data;
									    break;
					 case "k:go_to_article_now_external" : XMLItem[i]["visitstate"] = XMLNode[i].childNodes[k].firstChild.data;
									    break;
					 case "k:image_url" : XMLItem[i]["thumbnail"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:feature_image" : XMLItem[i]["feature"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:arrow_text" : XMLItem[i]["arrowText"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:arrow_link" : XMLItem[i]["arrowLink"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "title" : XMLItem[i]["title"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "link" : XMLItem[i]["hlink"] = XMLNode[i].childNodes[k].firstChild.data;
										break;
					 case "k:link_label" : XMLItem[i]["readMoreLabel"] = 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;*/
				 }
			 }
			 XMLItem[i].include = true;
			 if(XMLItem[i].article != null) {
				if(XMLItem[i].article != "") {
					XMLItem[i].hlink = XMLItem[i].article;
				}
			 }
		 }
		 if(XMLItem[i].readMoreLabel==null) {
					XMLItem[i].readMoreLabel = "Read story";
				}
	}
	
	k = -1;
	var articles = new Array();
	for (i=0; XMLItem.length>i; i++)
	{
		k++;
		articles[k] = XMLItem[i];
	}
	
	var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;
	for (i=0; articles.length>i; 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 createFeatureResources(articles) {
	var resourceBlock = "";
	var featureBlock = '<div id="featureBlock">';
	var arrowBlock = '';
	var Tabs = '<div id="tabBlock">';
	var maxArticles = 3;
	var backgroundImage = "";
	var tA = maxArticles;
	for (i=0; articles.length>i; i++)
	{		
		if (tA<=i) { break; }
		if(articles[i].include) {
			if(i==0){ 
				featureBlock += '<div ID="article'+i+'" class="articleBlock">';
				Tabs += '<div ID="article'+i+'" class="tabOn">'
			}else {
				featureBlock += '<div style="display:none" ID="article'+i+'" class="articleBlock">'
				Tabs += '<div ID="article'+i+'" class="tabOff">'
			}	
			featureBlock += '<div class="featureText"><h2>'+articles[i].title+'</h2>';
			featureBlock += '<span style="color:white">'+articles[i].summary+'</span>';
			featureBlock += '<span class="whitearrow"><a style="color:white" href="'+articles[i].hlink+' "'
			if(articles[i].visitstate!=null)
				featureBlock+= 'target="'+articles[i].visitstate+'" ';
			featureBlock += '><b>Read More</b></a></span></div>';
			featureBlock += '<div class="featureImage"><img src="'+articles[i].feature+'" /></div>';
			if(articles[i].arrowText!=null && articles[i].arrowLink!=null)
			{
				arrowBlock = '<a href="'+articles[i].arrowLink;
				arrowBlock += '" style="display: block;"><div id="arrowBlock">';
				arrowBlock += shortenText(articles[i].arrowText,44,8)+'</div></a>';
				featureBlock +=arrowBlock;
			}
			featureBlock += '</div>'
			Tabs += '<a href="#" onClick="javascript:toggleFeature(this);return false">'
			Tabs += '<div class="text home"><h5>'+shortenText(articles[i].title,55,10)+'</h5></div></a></div>'	
		} else {
			tA++;
		}
	}
	resourceBlock += featureBlock + '</div>' + Tabs + '</div>';
	return resourceBlock;
}

function UMCStoryRotatorObject (stories,rotatorId,defaultStory) {
	/* Initializing values */
	this.stories = stories;
	this.storyObj = null; 
	this.storyTabObj = null; 
	this.displayedStory = null;
	this.defaultStory = defaultStory;
	this.maxArticles = 5;
	this.storyRotatorObj = document.getElementById(rotatorId);


	/*
	 *	Initialization function. Should run on creation
	 */
	this.init = function () {

				var storyObj = document.createElement('div');
				storyObj.className = 'kn-umc-stories';
 
				var storyTabObj = document.createElement('div');
				storyTabObj.className ='kn-umc-tab-area';
				storyTabObj.innerHTML = '<h4>MORE FEATURES</h4>';
				this.storyRotatorObj.appendChild(storyObj);
				
				this.storyRotatorObj.appendChild(storyTabObj);
				this.storyObj = storyObj;
				this.storyTabObj = storyTabObj;
				this.createStoryNodes();
				this.createStoryTabNodes();
				this.changeStory(this.defaultStory);
			}

	/*
	 *	Controller to display story
	 */
	this.changeStory = function (storyNumber) {
				this.lastDisplayedStory = this.displayedStory;
				this.displayedStory = storyNumber;
				this.displayStory(); 
				this.displayTab();
			}


	/*
	 *	Builds story nodes
	 */
	this.createStoryNodes = function () {
				var story = this.getStory();
				var i;
				this.storyNodes = new Array;
				//for(i=0; i < this.stories.length; i++) {
				for(i=0; i < this.maxArticles; i++) {
					var story = this.stories[i];
					var hlink = (story.article==null) ? story.hlink : story.article;
					var viewstate = (story.viewstate==null) ? '' : story.viewstate;
					var storyNode = document.createElement('div');
					storyNode.id = 'kn-umc-story-area-'+i;
					storyNode.className = 'kn-umc-story-area';
					storyNode.style.background = 'url(\''+story.feature+'\')';
					storyNode.style.display = 'none';
					var html = '<div class="kn-umc-story-right-area">'+
					'<h2>'+this.shortenText(story.title,70,10)+'</h2>'+
					'<p>'+story.summary+'<span class="readmore"><br /><br /><a href="'+hlink+'" target="'+
					viewstate + '">'+story.readMoreLabel+'</a></span></p></div>';
					storyNode.innerHTML = html;
					this.storyNodes[i] = storyNode;
					this.storyObj.appendChild(storyNode);
				}
			}


	/*
	 *	Displays story
	 */
	this.displayStory = function () {
				var i;
				var faderTime = 1000;
				
				/*if(this.lastDisplayedStory != null) {
					var lastDisplayedNode = this.storyNodes[this.lastDisplayedStory];
					fader(lastDisplayedNode.id, 100, 0, faderTime); 
				}*/
				//for(i=0;i<this.stories.length;i++) {
				for(i=0; i < this.maxArticles; i++) {
					if(this.displayedStory != i )  {
						this.storyNodes[i].style.display = 'none';
					}
				}
				var displayedNode = this.storyNodes[this.displayedStory];
				/*fader(displayedNode.id, 0, 100, faderTime); 
				displayedNode.style.display = 'block';*/
				jQuery("#"+displayedNode.id).fadeIn('slow');
			}

	/*
	 *	Creates the tab nodes
	 */
	this.createStoryTabNodes = function () {
				var story = this.getStory();
				var i;
				this.storyTabNodes = new Array;
				var prevArrow, nextArrow;
				prevArrow = document.createElement('div');
				prevArrow.onclick = this.getBackwardOnClick;
				prevArrow.className = 'kn-umc-tab prevArrow';
				prevArrow.id = 'kn-umc-tab-area-prev';
				prevArrow.innerHTML = "&nbsp;";
				
				nextArrow = document.createElement('div');
				nextArrow.onclick = this.getForwardOnClick;
				nextArrow.className = 'kn-umc-tab nextArrow';
				nextArrow.id = 'kn-umc-tab-area-next';
				nextArrow.innerHTML = "&nbsp;";
				
				//for(i=0; i < this.stories.length; i++) {
				this.storyTabObj.appendChild(prevArrow);
				for(i=0; i < this.maxArticles; i++) {
					var s = this.stories[i];
					var storyTabNode = document.createElement('div');
					storyTabNode.id = 'kn-umc-tab-area-'+i;
					if(i != this.displayedStory) {
						storyTabNode.onclick = this.getTabOnClick(i);
						storyTabNode.onmouseover = this.getTabOnRollOver(i);
						storyTabNode.onmouseout = this.getTabOnRollOff(i);
					}
					storyTabNode.className = 'kn-umc-tab';
					var html = '<h3>'+this.shortenText(s.title,70,10)+'</h3>'+
						'<img src="'+s.thumbnail+'" />'+
						'<div style="clear:both;line-height:1px;"></div>';
					storyTabNode.innerHTML = html;
					this.storyTabNodes[i] = storyTabNode;
					this.storyTabObj.appendChild(storyTabNode);
				}
				this.storyTabObj.appendChild(nextArrow);
			}



	/*
	 *	Displays tab area
	 */
	this.displayTab = function () {
				var i;
				//for(i=0; i < this.stories.length; i++) {
				for(i=0; i < this.maxArticles; i++) {
					var s = this.storyTabNodes[i];
					if(i == this.displayedStory) {
						s.className = 'kn-umc-tab kn-umc-tab-selected-'+i;
						s.onclick = '';
					} else {
						s.onclick = this.getTabOnClick(i);
						s.className = 'kn-umc-tab';
					}
				}
			}
	
	this.getTabOnClick = function (i) {
				switch(i) {
					case 0 : return function() { jQuery('.kn-umc-story-right-area').hide(); umcStoryRotator.changeStory(0); TabClick(0)}; break;
					case 1 : return function() { jQuery('.kn-umc-story-right-area').hide();umcStoryRotator.changeStory(1); TabClick(1)}; break;
					case 2 : return function() { jQuery('.kn-umc-story-right-area').hide();umcStoryRotator.changeStory(2); TabClick(2)}; break;
					case 3 : return function() { jQuery('.kn-umc-story-right-area').hide();umcStoryRotator.changeStory(3); TabClick(3)}; break;
					case 4 : return function() { jQuery('.kn-umc-story-right-area').hide();umcStoryRotator.changeStory(4); TabClick(4)}; break;
					default : return false;
					}
					//alert("rotate function called")
				}
					
		this.getBackwardOnClick = function () {
					var newSelection = 0;
					if(umcStoryRotator.displayedStory!=0)
						newSelection = umcStoryRotator.displayedStory - 1;
					else
						return;
						
					
					
					umcStoryRotator.changeStory(newSelection);
					TabClick(newSelection);
					//alert("rotate function called")
				}
				
		this.getForwardOnClick = function () {
					var newSelection = umcStoryRotator.maxArticles;
					if(umcStoryRotator.displayedStory<(umcStoryRotator.maxArticles - 1))
						newSelection = umcStoryRotator.displayedStory + 1;
					else
						return;
						
					
					
					umcStoryRotator.changeStory(newSelection); 
					TabClick(newSelection);
					//alert("rotate function called")
				}
				
		this.getTabOnRollOver = function (i) {
				switch(i) {
					case 0 : return function() { TabRollOver(0); }; break;
					case 1 : return function() { TabRollOver(1); }; break;
					case 2 : return function() { TabRollOver(2); }; break;
					case 3 : return function() { TabRollOver(3); }; break;
					case 4 : return function() { TabRollOver(4); }; break;
					default : return function() { TabRollOver(i); }; break;
					}
					//alert("rotate function called")
				}
	
				
		this.getTabOnRollOff = function (i) {
				switch(i) {
					case 0 : return function() { TabRollOut(0); }; break;
					case 1 : return function() { TabRollOut(1); }; break;
					case 2 : return function() { TabRollOut(2); }; break;
					case 3 : return function() { TabRollOut(3); }; break;
					case 4 : return function() { TabRollOut(4); }; break;
					default : return function() { TabRollOver(i); }; break;
					}
					//alert("rotate function called")
				}
	 /*
	 *	Shortens text function if text is too long.
	 *	@params	
	 *		text	string	text that will be shortened	
	 *		length	int	length in letters
	 *		words	int	length of words to cut off
	 */
	this.shortenText = function (text,length,words) {
				var textArray = text.split(' ');
				if( (text.length > length) && (textArray.length > words) ) {
					var newText = '';
					var textWords = (textArray.length > words) ? words : textArray.length;
					var i;
					for(i=0; i<textWords; i++) {
						newText += textArray[i]+' ';
					}
					newText += '...';
					return newText;
				} else if ( (text.length > length) && (textArray.length < words) ) {
					return text.substring(0,length)+"...";
				} else {
					return text;
				}
		}

	/*
	 *	get stories
	 */
	this.getStory = function () {
			return this.stories[this.displayedStory];
		}

	/*  Initializing object */
	this.init();
}

function createLinkboxResources(articleName, articles) {
	var beginning = '<table cellspacing="2" cellpadding="2" border="0" class="linkbox"><tbody><tr>';
	var end = "</td></tr></tbody></table>"
	var linkboxHeader = "";
	var resourceBlocks = "";
	var photoBlock = "<div id='photoBlock'>";
	var maxArticles = 3;
	var backgroundImage = "";
	var tA = maxArticles;
	for (i=0; articles.length>i; i++)
	{		
		if(i==0){
			linkboxHeader += '<td class="greenheader" > <a href='
			switch(articleName) 
			{
				case 'members' 	:	linkboxHeader += '"http://www.kintera.org/site/lookup.asp?c=hrKKIVPGIsE&b=3079951"';break;
				case 'clergy' 	:	linkboxHeader += '"http://www.kintera.org/site/lookup.asp?c=hrKKIVPGIsE&b=3057835"';break;
				case 'staff':	linkboxHeader += '"http://www.kintera.org/site/lookup.asp?c=hrKKIVPGIsE&b=3057833"';break;
				case 'confLeaders':	linkboxHeader += '"http://www.kintera.org/site/lookup.asp?c=hrKKIVPGIsE&b=3057833"';break;
				case 'churchLeaders':	linkboxHeader += '"http://www.kintera.org/site/lookup.asp?c=hrKKIVPGIsE&b=3057833"';break;
			}
			linkboxHeader += ' > '+articleName+' </a></td></tr><tr><td>';
		}
		if (tA<=i) { break; }
		if(articles[i].include) {
			resourceBlocks += '<div id="resourceBlock" >'
			if(i==0) {
				photoBlock += '<img id="'+articleName+'Item'+i+'" src="'+articles[i].image+'" />';
				resourceBlocks += '<div class="textTop" id="'+articleName+'Item'+i+'">';
			}else {
				photoBlock += '<img id="'+articleName+'Item'+i+'" style="display:none" src="'+articles[i].image+'" />';
				resourceBlocks += '<div class="text" id="'+articleName+'Item'+i+'">';
			}
			resourceBlocks += '<h4><a href="'+articles[i].hlink+'" onMouseOver="javascript:changeLinkboxPhoto(this);return false;" ';
			if(articles[i].visitstate!=null)
				resourceBlocks+= 'target="'+articles[i].visitstate+'" ';
			resourceBlocks += '>'+articles[i].title+'</a></h4></div></div>';
		} else {
			tA++;
		}
		//tA = maxArticles;
	}
	photoBlock += '</div>';
	return beginning + linkboxHeader + photoBlock + resourceBlocks + end;
}


function makeRequestResources(articleName) {
	
	switch(articleName) {
		case "feature"   :	url=urlRSS;	break;
	}
	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;
	}
	//alert('makeRequestResources articles: ' + articles)
	//http_request.onreadystatechange = function(){displayResources(articleName);};
	//http_request.open('GET', url, true);
	//http_request.send(null);
	//alert('GET is commented out');
}


var root_node;
function displayResources(articleName) {
	//alert('displayResources() articles: ' + articles)
	if (http_request.readyState == 1) {}
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var xmldoc = http_request.responseXML;
			root_node = xmldoc.getElementsByTagName('item');
			articles = getArticles(root_node);

			umcStoryRotator =  new UMCStoryRotatorObject(articles, "feature", 0);

		} 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 TabClick(i)
{
	var newTab = $('kn-umc-tab-area-'+i);
	newTab.style.background='transparent url(http://www.umcgiving.org/atf/cf/{a5da7032-3d61-4af7-88b9-96b0e1145ff4}/GIVING-TAB-SELECTED.JPG) no-repeat';
	jQuery('.kn-umc-story-right-area').slideDown('slow');
}
function TabRollOver(i)
{
	var newTab = $('kn-umc-tab-area-'+i);
	if(newTab.className!=('kn-umc-tab kn-umc-tab-selected-'+i))
		newTab.style.background='#cfe2b8';
}

function TabRollOut(i)
{
	var newTab = $('kn-umc-tab-area-'+i);
	if(newTab.className!=('kn-umc-tab kn-umc-tab-selected-'+i))
		{
			newTab.style.background='transparent url(http://www.umcgiving.org/atf/cf/%7Ba5da7032-3d61-4af7-88b9-96b0e1145ff4%7D/GIVING-TAB-UNSELECTED.JPG) repeat scroll 0%';
		}
}
function changeFeature(storyNum) {
				var oldNum
				if (storyNum==1)
					oldNum=0;
				else
					oldNum=1;
					
				var tabID = "kn-umc-tab-area-" + storyNum;
				var storyID = "kn-umc-story-area-" + storyNum;
				var oldtabID = "kn-umc-tab-area-" + oldNum;
				var oldstoryID = "kn-umc-story-area-" + oldNum;
				var tab = $(tabID)
				var story = $(storyID)
				var oldtab = $(oldtabID)
				var oldstory = $(oldstoryID)
				tab.className="kn-umc-tab kn-umc-tab-selected-"+storyNum;
				story.style.display="block";
				fader(storyID,0,100,1000);
				oldtab.className="kn-umc-tab";
				fader(oldstoryID,100,0,1000);
				oldstory.style.display="none";
				displayedStory = storyNum;
	}
	
function changeFeatureLite(storyNum)
{
	UMCStoryRotatorObject(storyNum);
}

function toggleFeature(e) {
	var tabs = $("tabBlock").getElementsByTagName('div');
	var articleBlocks = $("featureBlock").getElementsByTagName('div');
	if(e.parentNode.className != "tabOn") {
		//alert('this.className != "tabOn"');
		for (i=0;i<tabs.length;i++) {
			//alert(tabs[i].className);
			if (tabs[i].className == "tabOn") {
				tabs[i].setAttribute("class","tabOff");
				tabs[i].setAttribute("className","tabOff");
				}
			else if(tabs[i] == e.parentNode) {
				tabs[i].setAttribute("class","tabOn");
				tabs[i].setAttribute("className","tabOn");
			}
			//alert('tabs[i]: '+ tabs[i]+'\ne.parentNode: '+ e.parentNode)
		}
		for (i=0;i<articleBlocks.length;i++) {
			//alert('e.id: ' + e.id)
			if (e.parentNode.id == articleBlocks[i].id)
				articleBlocks[i].style.display = "block";
			else if(articleBlocks[i].className== "articleBlock")
				articleBlocks[i].style.display = "none";
		}
	}
}



function changeLinkboxPhoto(e) {
	
	var linkbox = $(e.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id);

	var featureBlocks = linkbox.getElementsByTagName('img');
	for (j=0;j<featureBlocks.length;j++) 
	{
		if (e.parentNode.parentNode.id == featureBlocks[j].id){
			if(featureBlocks[j].style.display=="none"){
				fader(featureBlocks[j].id,0,100,1000);
				featureBlocks[j].style.display = "block";
			}
		}
		else
			featureBlocks[j].style.display = "none";
	}	
}
/*Functions to fade feature pictures*/
function fader(id,_52,_53,_54)
{
	var _55=Math.round(_54/100);
	var _56=0;
	if(_52>_53)
	{
		var i;
		for(i=_52;i>=_53;i--)
		{
		setTimeout("changeOpac("+i+",'"+id+"')",(_56*_55));
		_56++;
		}
	}else{
		if(_52<_53){
			var i;
			for(i=_52;i<=_53;i++)
			{
				setTimeout("changeOpac("+i+",'"+id+"')",(_56*_55));
				_56++;
			}
		}
	}
}

function changeOpac(_59,id)
{
	var _5b=document.getElementById(id).style;
	_5b.opacity=(_59/100);
	_5b.MozOpacity=(_59/100);
	_5b.KhtmlOpacity=(_59/100);
	_5b.filter="alpha(opacity="+_59+")";
}

/*End functions to fade feature pictures*/

function shortenText(text,maxChar,maxWords)
{
	var wordArray=text.split(" ");
	if((text.length>maxChar)&&(wordArray.length>maxWords))
	{
		var newText="";
		var i;
		for(i=0;i<maxWords;i++)
		{
			newText+=wordArray[i]+" ";
		}
		newText+="...";
		if(newText.length<maxChar+3)
			{return newText;}
		else
			{return newText.substring(0,maxChar)+"...";}
	}else{
		if((text.length>maxChar)&&(wordArray.length<maxWords))
		{
			return text.substring(0,maxChar)+"...";
		}else{
			return text;
		}
	}
}
	
function init(){
	}
addLoadListener(init);

addLoadListener( function(){makeRequestResources('feature');} );

