/* Name: SlideScroller
 * URL: http://lukees.com/project/scroller
 * Description: Creates a box with scrolling pages.
 * 
 * Author: Luke Seeley
 * Email: luke@lukees.com
 * ------------------------------------------------------- */

addLoadEvent(initScroller);

// User Set Up
var pageWidth = "579px";
var pageHeight = "36px";

// Global Variables
var numPages = 0;
var currentPage = "page1";
var existance_nextButton = false;
var existance_previousButton = false;
var existance_pagination = false;

function initScroller() {

	// Perform Harry carey if no pages found
	if(!setupScroller()) return false;
	
	// Initiate slider effect
	var scroll = new Fx.Scroll('scroller', {
		wait: false,
		duration: 500,
		transition: Fx.Transitions.Quad.easeInOut
	});

	// Set next button onclick behaviour
	if(existance_nextButton) {
		$('scroller-nav-next').addEvent('click', function(event) {
			currentPage = getNextPage();
			event = new Event(event).stop();
			scroll.toElement(currentPage);
		});
	}
}

/* Returns the next page */
function getNextPage() {
	var number = parseInt(currentPage.split('page')[1]);
	return (number < numPages)? "page" + ++number : "page1";
}

/* Adds IDs to the pages and page nav links */
function setupScroller() {
	var pages = $ES('div.page','scroller');
	numPages = pages.length;
	if(numPages == 0) return false;
	
	// Created scroller navigation
	createControls();
	
	// Set page IDs and dimensions
	for(var j=0; j<pages.length; j++){
		var left = j * parseInt(pageWidth.split(/px/)[0]);
		pages[j].id = "page" + (j+1);
		pages[j].setStyles({'width':pageWidth,'height':pageHeight,'left':left,'top':'0px'});
	}		
	
	// Set Scroller dimensions
	$('scroller-wrap').setStyles({'width':pageWidth});
	$('scroller').setStyles({'width':pageWidth, 'height':pageHeight});
	
	// Set current page	
	if(existance_pagination)
		setNavCurrentState(currentPage);
	
	return true;
}

/* Create scroller navigation */
function createControls() {	
	// Creates Next link if not already created by user
	if(!existance_nextButton) {
		nextLink = document.createElement('a');
		nextLink.id = "scroller-nav-next";
		nextLink.href = "#";
		nextLink.appendChild(document.createTextNode('Next Page'));
		$('scroller-wrap').appendChild(nextLink);
		existance_nextButton = true;
	}
}


/* Helper Functions
---------------------------------------------------------- */

/* Calls the given function when the page loads (thanks: Jeremy Keith) */
function addLoadEvent(func) {
	var oldonload = window.onload;
	if(typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}