// reset the default easing equation
$.easing.def = "easeOutCirc";

$(document).ready(function() {
	// grab the parent div
	var allSlides = $("#slider");
	// set up all the individual variables
	var sliderLeft = $("#sliderLeft", allSlides),
		sliderRight = $("#sliderRight", allSlides),
		sliderNav = $("a.sliderNav", allSlides),
		totalSlides = $('div.sliderContents', allSlides).length,
		controls = $("#sliderControls", allSlides),
		display = $("#advance", controls);
		
	// preset the toggle for auto-advance
	allSlides.data('auto',true);
	
	// set up the function to toggle auto-advance
	function toggleAuto(x) {
		if(!x) {
			if(allSlides.data('auto')) {
				// set auto off
				allSlides.data('auto',false);
				display.text('off');
			} else {
				// set auto on
				allSlides.data('auto',true);
				display.text('on');
			}			
		} else {
			if(x == 'on') {
				// set auto on
				allSlides.data('auto',true);
				display.text('on');
			} else {
				// set auto off
				allSlides.data('auto',false);
				display.text('off');
			}
		}
	}
	
	// and go ahead and control clicks of the controller
	display.click(function(e){
		e.preventDefault();
		toggleAuto();
	});
		
	sliderNav.css('opacity','0');	
	sliderNav.live('mouseover mouseout', function(event) {
		if (event.type == 'mouseover') {
			$(this).fadeTo(200, 1);	
		} else {
			$(this).fadeTo(200, 0.6);
		}
	});
	
	// fade in initially	
	$('div.sliderContents.active', allSlides).fadeIn(500, function() {
		sliderNav.animate({opacity: 0.6}, 200)
	});
	
	// advance left one slide
	sliderLeft.live('click', function(event) {
		event.preventDefault();
		// kill the auto-advance
		toggleAuto('off');
		// fade navigation links and trigger the move
		sliderRight.fadeTo(100, 0);
		sliderLeft.fadeTo(100, 0, function() {
			// grab the current slide
			var currentSlide = $('div.sliderContents.active', allSlides);
			// grab the previous slide
			if(currentSlide.hasClass('first')) {
				/* move forward to the last slide
				var prevSlide = $('div.sliderContents.last', allSlides),
					displacement = $('div.sliderContents.last', allSlides).css('left');
				var displacement = displacement.substr(0, displacement.length-2);
				prevSlide.addClass('active');
				currentSlide.removeClass('active');
				$('div.sliderContents', allSlides).animate({
					left: '-='+displacement
				}, 950, function() {
					sliderNav.fadeTo(100, 0.6);
				}); */
			
				var prevSlide = $('div.sliderContents.last', allSlides);
				
				prevSlide.addClass('active');
				currentSlide.removeClass('active')
					.fadeOut(400, function() {
					prevSlide.fadeIn(400, function() {
						//sliderNav.fadeTo(100, 0.6);
					});
					sliderNav.fadeTo(400, 0.6);
				});
			} else {
				/* move backward normally
				var prevSlide = currentSlide.prev('div.sliderContents').addClass('active');
				currentSlide.removeClass('active');
				$('div.sliderContents', allSlides).animate({
					left: '+=968'
				}, 650, function() {
					sliderNav.fadeTo(100, 0.6);
				}); */
			
				var prevSlide = currentSlide.prev('div.sliderContents');
				
				prevSlide.addClass('active');
				currentSlide.removeClass('active')
					.fadeOut(400, function() {
					prevSlide.fadeIn(400, function() {
						//sliderNav.fadeTo(100, 0.6);
					});
					sliderNav.fadeTo(400, 0.6);
				});
			}
		});
	});
	
	// advance right one slide
	sliderRight.live('click', function(event) {
		event.preventDefault();
		// kill the auto-advance
		toggleAuto('off');
		// fade navigation links and trigger the move
		sliderLeft.fadeTo(100, 0);
		sliderRight.fadeTo(100, 0, function() { 
			// grab the current slide
			var currentSlide = $('div.sliderContents.active', allSlides);
			// grab the previous slide
			if(currentSlide.hasClass('last')) {
				/* move back to the first slide
				var nextSlide = $('div.sliderContents.first', allSlides),
					displacement = $('div.sliderContents.first', allSlides).css('left');
				var displacement = displacement.substr(0, displacement.length-2);
				var displacement = parseInt(displacement)*(-1);
				nextSlide.addClass('active');
				currentSlide.removeClass('active');
				$('div.sliderContents', allSlides).animate({
					left: '+='+displacement
				}, 950, function() {
					sliderNav.fadeTo(100, 0.6);
				});*/
				
				var nextSlide = $('div.sliderContents.first', allSlides);
				
				nextSlide.addClass('active');
				currentSlide.removeClass('active')
					.fadeOut(400, function() {
					nextSlide.fadeIn(400, function() {
						//sliderNav.fadeTo(100, 0.6);
					});
					sliderNav.fadeTo(400, 0.6);
				});
				
				
			} else {
				/* move forward normally
				var nextSlide = currentSlide.next('div.sliderContents').addClass('active');
				currentSlide.removeClass('active');
				$('div.sliderContents', allSlides).animate({
					left: '-=968'
				}, 650, function() {
					sliderNav.fadeTo(100, 0.6);
				});*/
				
				var nextSlide = currentSlide.next('div.sliderContents');
				
				nextSlide.addClass('active');
				currentSlide.removeClass('active')
					.fadeOut(400, function() {
					nextSlide.fadeIn(400, function() {
						//sliderNav.fadeTo(100, 0.6);
					});
					sliderNav.fadeTo(400, 0.6);
				});
			}
			
		});
	});
	
	// advance every 5 seconds unless an arrow is clicked
	setInterval(function(){
		var exp = allSlides.data('auto');
		if(exp){
			advance();
		}
	},5000);
	
	// auto-advance script (moving right by singles)
	function advance() {
		
		// fade navigation links and trigger the move
		sliderLeft.fadeTo(200, 0);
		sliderRight.fadeTo(200, 0, function() {
			// grab the current slide
			var currentSlide = $('div.sliderContents.active', allSlides);
			// grab the previous slide
			if(currentSlide.hasClass('last')) {
				/* move back to the first slide
				var nextSlide = $('div.sliderContents.first', allSlides),
					displacement = $('div.sliderContents.first', allSlides).css('left');
				var displacement = displacement.substr(0, displacement.length-2);
				var displacement = parseInt(displacement)*(-1);
				nextSlide.addClass('active');
				currentSlide.removeClass('active');
				$('div.sliderContents', allSlides).animate({
					left: '+='+displacement
				}, 950, function() {
					sliderNav.fadeTo(100, 0.6);
				});*/
				
				var nextSlide = $('div.sliderContents.first', allSlides);
				
				nextSlide.addClass('active');
				currentSlide.removeClass('active')
					.fadeOut(800, function() {
					nextSlide.fadeIn(800, function() {
						//sliderNav.fadeTo(200, 0.6);
					});
					sliderNav.fadeTo(400, 0.6);
				});
				
				
			} else {
				/* move forward normally
				var nextSlide = currentSlide.next('div.sliderContents').addClass('active');
				currentSlide.removeClass('active');
				$('div.sliderContents', allSlides).animate({
					left: '-=968'
				}, 650, function() {
					sliderNav.fadeTo(100, 0.6);
				});*/
				
				var nextSlide = currentSlide.next('div.sliderContents');
				
				nextSlide.addClass('active');
				currentSlide.removeClass('active')
					.fadeOut(800, function() {
					nextSlide.fadeIn(800, function() {
						//sliderNav.fadeTo(200, 0.6);
					});
					sliderNav.fadeTo(400, 0.6);
				});
			}
		});
	}
});
