//Slide Carousel
function slideCarousel() {
	var container = $('breakout');
	var slices = $$('ul.carousel > li');
	var sliceText = $$('ul#breakoutText li');

	if(!slices[0]) {
		return false;
	}
	
	var portalControls = new Element('ul');
	portalControls.addClassName('carouselControls');
	container.insert({
		top: portalControls
	});
	
	var nextButton = new Element('li');
	nextButton.addClassName('next');
	nextButton.update('Next Slide');
	portalControls.insert({
		top: nextButton
	});
	
	var previousButton = new Element('li');
	previousButton.addClassName('previous');
	previousButton.update('Previous Slide');
	portalControls.insert({
		top: previousButton
	});	
	
	var navSlices = new Element('ul');
	navSlices.addClassName('navCarousel');
		
	var navSlicesItems = [];
	
	var queue = Effect.Queues.get('sliceQueue');
	
	var currentSlice = 0;
	var previousSlice = 0;

	slices.each(function(slice, index){
		
		navSlicesItems[index] = new Element('li').update(index + 1);
		if(index == 0){
			navSlicesItems[index].addClassName('current');
		}
		else {
			slice.setOpacity(0);
			slice.hide();
		}
		
		navSlicesItems[index].observe('click', function(event){
			var sliceMove = index - currentSlice;
			navSlicesItems[index].fire('optiem:updateSlice', { indexMove: sliceMove, sliceSpeed: 1 });
			//navSlicesItems[index].fire('optiem:updateText', { indexMove: sliceMove, sliceSpeed: 1 });
			
			slideUpdater.stop();
		});
		
		navSlices.insert({ 
			bottom: navSlicesItems[index] 
		});
	});
	
	container.insert({
		bottom: navSlices
	});
	
	function slideChange(sliceMove, slideSpeed) {
		var slideTime = slideSpeed ? slideSpeed : 1;
		
		document.fire('optiem:pauseVideos');
		
		previousSlice = currentSlice;
		
		currentSlice = (slices.size() + ((currentSlice + sliceMove) % slices.size())) % slices.size();
		
		navSlicesItems[previousSlice].removeClassName('current');
		navSlicesItems[currentSlice].addClassName('current');
		
		/*if(currentSlice == 0){
			previousButton.addClassName('disabled');
			if(currentSlice != (slices.size()-1)){
				nextButton.removeClassName('disabled');
			}
		}
		else if(currentSlice == (slices.size()-1)){
			nextButton.addClassName('disabled');
			if(currentSlice != 0){
				previousButton.removeClassName('disabled');
			}
		}
		else {
			previousButton.removeClassName('disabled');
			nextButton.removeClassName('disabled');
		}*/
		
		new Effect.Fade(slices[previousSlice], {
			sync: false,
			from: 1,
			to: 0,
			transition: Effect.Transitions.sinoidal,
			duration: slideTime
			}
		);
		
		new Effect.Appear(slices[currentSlice], {
			sync: false,
			from: 0,
			to: 1,
			transition: Effect.Transitions.sinoidal,
			duration: slideTime
			}
		);	
		
		new Effect.Fade(sliceText[previousSlice], {
			sync: false,
			from: 1,
			to: 0,
			transition: Effect.Transitions.sinoidal,
			duration: slideTime
			}
		);
		
		new Effect.Appear(sliceText[currentSlice], {
			sync: false,
			from: 0,
			to: 1,
			transition: Effect.Transitions.sinoidal,
			duration: slideTime
			}
		);							
		
	}

	
	document.observe('optiem:updateSlice', function(event) {
		var sliceMove = event.memo.indexMove;
		var sliceSpeed = event.memo.sliceSpeed;
		slideChange(sliceMove, sliceSpeed);
	});

	var slideUpdater = new PeriodicalExecuter(function(pe){
		nextButton.fire('optiem:updateSlice', { indexMove: 1 });
	}, 5)
	
	previousButton.observe('click', function(event){
		if(queue.effects.size() == 0){
			previousButton.fire('optiem:updateSlice', { indexMove: -1 });
			event.stop();
		}
	});
	
	nextButton.observe('click', function(event){
		if(queue.effects.size() == 0){
			nextButton.fire('optiem:updateSlice', { indexMove: 1 });
			event.stop();
		}
	});
}

//Add Hover Class for LI in Main Navigation for IE6
//Note: Prototype driven
function IEHoverFix() {

	$$('#header #navMain li').each(function(e) {
		Event.observe(e, 'mouseover', function() {
			Element.addClassName(e, 'hover');
		});
		Event.observe(e, 'mouseout', function() {
			Element.removeClassName(e, 'hover');
		});
	});
	
}

//First and Last LI Selector
//Note: Prototype Driven
function liFirstLast() {
	var firstLIs =	$$('ul > li:first-child');
	var lastLIs = $$('ul > li:last-child');
	
	firstLIs.each(function(liFirst) {
		liFirst.addClassName('first');
		});
		
	lastLIs.each(function(liLast) {
		liLast.addClassName('last');
	});
}

//External Link Helper
//Updates Links with External Relation to
//use target="_blank"
function externalLinks(){
	var externalLinks = $$('a[rel=external]');
	
	externalLinks.each(function(externaLink){
		externaLink.writeAttribute('target', '_blank');
	});
}

//Input Clear
//Clears text inputs on a page on focus
//Note: Prototype driven
function inputClear() {
	var textInputs = $$('input[type="text"]');
	
	textInputs.each(function(textInput){
		textInput.initialValue = textInput.value;
		textInput.observe('focus', function(event) {
			if(textInput.value == textInput.initialValue){
				textInput.clear();
			}
		});
		textInput.observe('blur', function(event){
			if(textInput.value.blank() == true) {
				textInput.value = textInput.initialValue;
			}
		});
	});
}

// Cookie Functions
// Set the cookie 
function setCookie(name, value, expires, path, domain, secure) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

// Read the cookie 
function readCookie(name) { 
	var needle = name + "="; 
	var cookieArray = document.cookie.split(';'); 
	for(var i=0;i < cookieArray.length;i++) { 
		var pair = cookieArray[i]; 
		while (pair.charAt(0)==' ') { 
			pair = pair.substring(1, pair.length); 
		} 
		if (pair.indexOf(needle) == 0) { 
			return pair.substring(needle.length, pair.length); 
		} 
	} 
	return null; 
}

//Replacement for Window Onload - Loads before images, cross-browser
document.observe("dom:loaded", function() {
	//dynamicShadow('/images/global/shadow.png', 'page-container', 16, 0);	
	slideCarousel();
	externalLinks();
	liFirstLast(); // Adds classes 'first' and 'last' to respective LIs
	IEHoverFix();
});
