// Elemental Rotator (5.21.10)  
// copyright Blue Ridge Solutions, Inc. www.blueridges.com
//
// INSTRUCTIONS
// Create container with the eRotator class and a unique id
// Place your element(s) of choice within the container
// Set the variables below to achieve a desired effect 

// Set fx slideshow and Element Type (img, p, *)
var slideshow = '.eRotator2';
var elementType = '.slide'; 

// Final States (after fx, completed state)
var finalTop = 12;
var finalLeft = 0;
var finalOpacity = 1;
var finalHeight = 155;
var finalWidth = 948;

// Initial States (animate in, set to final if no fx)
var initialOpacity = 0;
var initialTop = finalTop;
var initialLeft = finalLeft; // change to finalWidth to scroll left to show next item on right
var initialHeight = finalHeight;
var initialWidth = finalWidth;

// Post States (animate out, set to final if no fx)
var postOpacity = initialOpacity;
var postTop = finalTop; 
var postLeft = finalLeft;  // change to -finalWidth to scroll left to show next item on right
var postHeight = finalHeight;
var postWidth = finalWidth;

// Set fx Time and Interval
var fxSpeed = 1500;
var fxTime = fxSpeed;
var fxInterval = 5000; // default 4000 ms, set to 0 to skip automatic transitions // timer is automatically cancelled if rotateFwd or rotateBak are explictly called
var fxTimerID = 0;

var fxDelay = 0;
var fxResume = fxInterval * 4;
var fxHasten = fxTime / 10;

$(function(){ // Apply Initial States and Interval
	var container ="";
	$(slideshow).each(function(){ 
		container = $(this).attr('id');
		container = "#"+container;
   
		// Set Random Starting Point
		//rand = Math.round($(container+' '+elementType).length*Math.random())-1;
		//for (i=0;i<rand;i++) { $(container+' '+elementType+':first').remove().insertAfter($(container+' '+elementType+':last')); }
				
		if($(container).css('position') != 'relative' || $(container).css('position') != 'absolute'){ $(container).css({position:'relative'}); }
		$(container).css({overflow: 'hidden', width: finalWidth, height: finalHeight}); // Set container Size
		$(container+' '+elementType).css({position:'absolute', display:'none', top: initialTop, left: initialLeft, opacity: initialOpacity, width: initialWidth, height: initialHeight}); // Set All to Initial State
		$(container+' '+elementType+':first').css({display:'block', top: finalTop, left: finalLeft, opacity: finalOpacity, width: finalWidth, height: finalHeight}); // Set 1st to Final State
		
		if(fxInterval) fxTimerID = setInterval('rotateFwd("'+container+'")', fxInterval); 
	});
	
	$(container+' .fwd_btn, .fwd_btn[rel='+container+']').css({zIndex:5}).click(function(e) {
		clearInterval(fxTimerID);
		fxTime = fxHasten;
		fxTimerID = 0;
		fxDelay = 1;
		e.preventDefault();
		rotateFwd(container);
		//fxTimerID = setInterval('rotateFwd("'+container+'")', fxResume); 
	});
	
	$(container+' .bak_btn, .bak_btn[rel='+container+']').css({zIndex:5}).click(function(e) {
		clearInterval(fxTimerID);															
		fxTime = fxHasten;
		fxTimerID = 0;
		e.preventDefault();
		rotateBak(container);
	});
	
	$(container+' .stop_btn, .stop_btn[rel='+container+']').click(function(e) {
		clearInterval(fxTimerID);															
		fxTimerID = 0;
		e.preventDefault();
	});
	
	$(container+' .start_btn, .start_btn[rel='+container+']').click(function(e) {
		clearInterval(fxTimerID);															
		fxTime = fxSpeed;
		fxTimerID = setInterval('rotateFwd("'+container+'")', fxInterval); 
		e.preventDefault();
	});

});


function rotateFwd(container){
	$(container+' '+elementType).stop(false, true);
	// add and remove class animating and do not animate quick clicks
	var eFirst = $(container+' '+elementType+':first');
	eFirst.remove().insertAfter(container+' '+elementType+':last');
	eFirst = $(container+' '+elementType+':first');
	var eLast = $(container+' '+elementType+':last');
	eLast.css({zIndex:0}).animate({top:postTop+'px', left:postLeft+'px', opacity:postOpacity, width:postWidth, height:postHeight}, fxTime); // Animate Out
	eFirst.css({zIndex:1, top:initialTop+'px', left:initialLeft+'px'}).animate({top:finalTop+'px', left:finalLeft+'px', opacity:finalOpacity, width:finalWidth, height:finalHeight}, fxTime); // Animate In

	/*if(fxDelay){
		clearInterval(fxTimerID);															
		fxTime = fxSpeed;
		fxTimerID = setInterval('rotateFwd("'+container+'")', fxInterval); 
	}*/
}

function rotateBak(container){
	$(container+' '+elementType).stop(true, true);
	var eFirst = $(container+' '+elementType+':first');
	var eLast = $(container+' '+elementType+':last');
	eLast.remove().insertBefore(container+' '+elementType+':first');
	eFirst.css({zIndex:0}).animate({top:initialTop+'px', left:initialLeft+'px', opacity:postOpacity, width:postWidth, height:postHeight}, fxTime); // Animate Out
	eLast.css({zIndex:1,top:postTop+'px', left:postLeft+'px'}).animate({top:finalTop+'px', left:finalLeft+'px', opacity:finalOpacity, width:finalWidth, height:finalHeight}, fxTime ); // Animate In
}
