/* = TRANSITION ELEMENT
-------------------------------------------------*/

function fadeOutElement(elementId) {
	var elementTransition = new Fx.Styles(elementId, {duration: 1000, transition: Fx.Transitions.linear});
	
	elementTransition.start({
		'opacity': [1, 0]
	});
}

function fadeInElement(elementId) {
	
	var elementTransition = new Fx.Styles(elementId, {duration: 1000, transition: Fx.Transitions.linear});

	elementTransition.start({
		'opacity': [0, 1]
	});
}


function callFadeInElement(elementId) {
	if(!document.getElementById(elementId)) return false;
	
	if(elementId == "featured-image")
	{
		var featuredImage = document.getElementById(elementId);
		featuredImage.setAttribute("src", imageSet[arrayIndex]);
		fadeInElement(elementId);
		
		arrayIndex++;
		if(arrayIndex == 3) {
			arrayIndex = 0;
		}
		
	}
	else {
		var featuredStory = document.getElementById(elementId);

		var storyNumber = 'storyNumber='+fileIndex;
		var storyAjax = new Ajax('../includes/featured_stories.php', {method: 'post', update: $('featured-story'), postBody: storyNumber, onComplete: function() {
			fadeInElement($('featured-story'));
		}}).request();		
		
		fileIndex++;
		if(fileIndex == 4) {
			fileIndex = 1;
		}
	}
}

// global placeholder for imageSet array
var arrayIndex = genRandom(2);
var fileIndex = 0;

function rotateStoryImages() {
	if(!document.getElementById("featured-image-area")) return false;
	
	var featuredImageArea = document.getElementById("featured-image-area");
	var featuredImage = document.getElementById("featured-image");
	
	featuredImageArea.style.backgroundImage = "url("+imageSet[arrayIndex]+")";
	fadeOutElement("featured-image");
	

	setTimeout('callFadeInElement("featured-image")', 1000);
	
	return 0;
}

function rotateStoryText() {
	if(!document.getElementById("featured-story")) return false;
	
	var featuredStory = document.getElementById("featured-story");
	
	// fade the element out so you can swap out the data
	fadeOutElement("featured-story");

	setTimeout('callFadeInElement("featured-story")', 1000);
	
	return 0;
}



function getStoryRequest(reqOutput) {
	if(!document.getElementById("featured-story")) return false;
	
	var featuredStory = document.getElementById("featured-story");
	
	featuredStory.innerHTML = reqOutput;
	
	return 0;
}

function callRotateStories() {
	if(!document.getElementById) return false;
	if(!document.getElementById("featured-image")) return false;
	if(!document.getElementById("featured-story")) return false;
	
	var featuredImage = document.getElementById("featured-image");
	var featuredStory = document.getElementById("featured-story");
	
	featuredImage.setAttribute("src", imageSet[arrayIndex]);
	
	// start from 1 not 0 for file names
	fileIndex = arrayIndex + 1;
	// set the starting featured story text
	var storyNumber = 'storyNumber='+fileIndex;
	var storyAjax = new Ajax('../includes/featured_stories.php', {method: 'post', postBody: storyNumber, update: $('featured-story') }).request();
	
	arrayIndex++;
	if(arrayIndex == 3) {
		arrayIndex = 0;
	}
	
	fileIndex++;
	if(fileIndex == 4) {
		fileIndex = 1;
	}


	var rotateStoryTimeout = setInterval('rotateStoryText()', 15000);
	var rotateImageTimeout = setInterval('rotateStoryImages()', 15000);
	
	return 0;
}

/* = RANDOM NUMBER
	Generates a number between zero and the
	number passed to it.
-------------------------------------------------*/

function genRandom(upperLimit) {
	var randomNumber = Math.floor(Math.random()*upperLimit);
	return randomNumber;
}


/* = PREP NAV
-------------------------------------------------
	This function sets the hover events for
	nav drop downs.
	Required Nav Structure: Nexted ULs
-------------------------------------------------*/

function prepNav(elementId) {
	if(!document.getElementsByTagName) return 0;
	if(!document.getElementById) return 0;
	if(!document.getElementById(elementId)) return 0;
	
	var listItem = document.getElementById(elementId).getElementsByTagName("LI");
	for(var i = 0; i < listItem.length; i++)
	{
		listItem[i].onmouseover = listItem[i].onfocus = function() {
			if(this.className.indexOf("last") == -1){
				if(this.className)
					this.className += " hover";
				else
					this.className = "hover";
			}
			else {
				if(this.className)
					this.className += " last-hover";
				else
					this.className = "last-hover";
			}
			return 0;
		}
		
		listItem[i].onmouseout = listItem[i].onblur = function() {
			this.className = this.className.replace(/ ?hover ?/,"");
			this.className = this.className.replace(/ ?last-hover ?/,"");
		}
		
	}
	return 0;
}

function callPrepNav() {
	prepNav("top-nav");
	prepNav("main-nav");
	return 0;
}

addLoadEvent(callPrepNav);


function popupPage(passedurl) {
	var thepage = passedurl;
	windowprops = "resizable=yes, scrollbars=yes,toolbar=yes,height=550,width=700, top=75, left=125 ";
	thewindow=window.open(thepage,"",windowprops);
}

function clearRow(e) {
	if (!e) var e = window.event;
	if (e.target) t = e.target;
	else if (e.srcElement) t = e.srcElement;
	if (t.nodeType == 3) t = t.parentNode;
	var n = t.name;
	var i = t.id;
	var a = t.parentNode.parentNode.childNodes;
	for (var i=0; i<a.length; i++) {
		if (a[i].childNodes.length > 0 && a[i].childNodes[0].nodeName.toLowerCase() == 'input') a[i].childNodes[0].value = '';
	}
}

/* = ADD ON LOAD
-------------------------------------------------
	This adds functions to onload without
	stepping on each other.
-------------------------------------------------*/

function addLoadEvent(func) {
	var oldOnLoad = window.onload
	if (typeof window.onload != 'function') 
	{
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldOnLoad();
			func();
		}
	}
}
