EASE_OUT = YAHOO.util.Easing.easeOut;
EASE_IN = YAHOO.util.Easing.easeIn;
EASE_NONE = YAHOO.util.Easing.easeNone;

// Configuration
PANEL_WIDTH = 190;
ANIMATION_DURATION = 0.5;
AUTOSLIDE_DELAY = 5000; // milliseconds
EASING = EASE_OUT;
// End Configuration

var yud = YAHOO.util.Dom;
var CAROSEL_IN_PROGRESS = false;
var MANUAL_OVERRIDE = false;
YAHOO.util.Event.onDOMReady( initCarosel );

var carosel = {
	initialized: false,
	
	init: function() {
		this.in_progress = false;
		this.turny = yud.get('wnb_rotating_container');
		turnyWidth = yud.getChildren(this.turny).length * PANEL_WIDTH +  PANEL_WIDTH;
		yud.setStyle(this.turny, 'width', turnyWidth);
		this.initialized = true;
	},
	
	slide: function( direction ) {
		
		if (CAROSEL_IN_PROGRESS) return;
		
		if (! this.initialized) {
			this.init();
		}
		carosel.pad( direction );
	
		var position = yud.getXY(this.turny);
		position[0] += direction == 'right' ? -1 * PANEL_WIDTH : PANEL_WIDTH;
	
		var myAnim = new YAHOO.util.Motion(
			'wnb_rotating_container', 
			{ points: { to: position } },
			ANIMATION_DURATION,
			EASING
		);
		
		myAnim.onStart.subscribe( function() { CAROSEL_IN_PROGRESS = true; } );
		myAnim.onComplete.subscribe( function() {  carosel.unpad( direction ); CAROSEL_IN_PROGRESS = false; } );
		
		myAnim.animate();
	
	},

	pad: function( direction ) {
		var leftMost = yud.getFirstChild(this.turny);
		var rightMost = yud.getLastChild(this.turny);
		if (direction == 'right') {
			yud.insertAfter( leftMost.cloneNode(true), rightMost );
		} else {
			yud.insertBefore( rightMost.cloneNode(true), leftMost );
			yud.setX(this.turny , yud.getX(this.turny) - PANEL_WIDTH);
		}
	},
	
	unpad: function( direction ) {
		if (direction == 'right') {
			this.turny.removeChild(yud.getFirstChild(this.turny));
			yud.setX(this.turny, yud.getX(this.turny) + PANEL_WIDTH);
		}
		else { 
			var deadManWalking =  yud.getLastChild(this.turny);
			this.turny.removeChild(deadManWalking);
		}
	}
}

function initCarosel() {
	
	// Randomize order
	var turny = yud.get('wnb_rotating_container');
	var panels = yud.getChildren(yud.get('wnb_rotating_container'));
	var len = panels.length;
	for (var i = 0; i < len; i++) {
		turny.appendChild(turny.removeChild(panels[Math.floor(Math.random() * panels.length)]));
	}
	setTimeout("timedTrigger()", AUTOSLIDE_DELAY);
}
	
function timedTrigger() {
	// Stop autoscrolling when carosel is interacted with
	if (MANUAL_OVERRIDE) return;
	
	// Don't scoll if scroll is in progress
	if (CAROSEL_IN_PROGRESS) return;
	
	// Scroll every whatever seconds
	setTimeout('timedTrigger()', AUTOSLIDE_DELAY);
	carosel.slide("right");
}