
/**
 * Since carousel.addItem uses an HTML string to create the interface
 * for each carousel item, this method formats the HTML for an LI.
 **/

var fmtItem = function(imgUrl, url, title) {

  	var innerHTML = 
  		'<img src="' + 
  		imgUrl +
		'" width="' +
		100% +
		'" height="' +
		75+
		'"/>';
  
	return innerHTML;
	
};

/**
 * Custom inital load handler. Called when the carousel loads the initial
 * set of data items. Specified to the carousel as the configuration
 * parameter: loadInitHandler
 **/
var loadInitialItems = function(type, args) {

	var start = args[0];
	var last = args[1]; 
	var alreadyCached = args[2]; 
		
	load(this, start, last);	

	brightenOrDim(this);

};

/**
 * Custom load next handler. Called when the carousel loads the next
 * set of data items. Specified to the carousel as the configuration
 * parameter: loadNextHandler
 **/
var loadNextItems = function(type, args) {	

	var start = args[0];
	var last = args[1]; 
	var alreadyCached = args[2];
	
	if(!alreadyCached) {
		load(this, start, last);
	}

	brightenOrDim(this);

};

/**
 * Custom load previous handler. Called when the carousel loads the previous
 * set of data items. Specified to the carousel as the configuration
 * parameter: loadPrevHandler
 **/
var loadPrevItems = function(type, args) {
	var start = args[0];
	var last = args[1]; 
	var alreadyCached = args[2];
	
	if(!alreadyCached) {
		load(this, start, last);
	}
	
	brightenOrDim(this);
	
	
};

var brightenOrDim = function(carousel) {
	var firstItemRevealed=carousel.getFirstItemRevealed();
	var lastItemRevealed=carousel.getLastItemRevealed();
	var firstVisible = carousel.getProperty("firstVisible");
	var lastVisible = carousel.getLastVisible();
		
	var first = (firstItemRevealed == -1) ? firstVisible : firstItemRevealed;
	var last = (lastItemRevealed == -1) ? lastVisible : lastItemRevealed;
	
	for(var i=first; i<=last; i++) {
		var li = carousel.getItem(i);
		if(li) {
			if(i == firstItemRevealed || i==lastItemRevealed) {
				YAHOO.util.Dom.replaceClass(li, "bright", "dim");
			} else {
				YAHOO.util.Dom.replaceClass(li, "dim", "bright");
			}
		}
	}
	
};

var load = function(carousel, start, last) {
	for(var i=start;i<=last;i++) {
		carousel.addItem(i, fmtItem(imageList[i], urlList[i], "Number " + i), "bright");
/*
		// Example of an alternate way to add an item (passing an element instead of html string)
		var p = document.createElement("P");
		var t = document.createTextNode("Item"+i);
		p.appendChild(t);
		carousel.addItem(i, p );
*/
	}
};

/**
 * Custom button state handler for enabling/disabling button state. 
 * Called when the carousel has determined that the previous button
 * state should be changed.
 * Specified to the carousel as the configuration
 * parameter: prevButtonStateHandler
 **/
var handlePrevButtonState = function(type, args) {

	var enabling = args[0];
	var leftImage = args[1];
	if(enabling) {
		leftImage.src = "images/nero-b.gif";	
	} else {
		leftImage.src = "images/nero-bd.gif";
	}
	
};

