/* 
* jQuery - Lite Content Slider - Plugin v1.0
* http://www.aakashweb.com/
* Copyright 2010, Aakash Chakravarthy
* Released under the MIT License.
*
* 2010-10-06 :: KC
*   Added ( pause / resume ) on mouse ( over / out ) events
*/

(function($){
	$.fn.liteSlider= function(options) {

		var defaults = {
			content : '.content',
			width : 500,
			height : 250,
			autoplay : false,
			delay : 3,
			buttonsClass : '',
			activeClass : '',
			controlBt : '',
			playText : ' Play',
			pauseText : 'Pause'
		};

		var options = $.extend(defaults, options);

		var slideNo = 1;
		var timer = 0;
		var playStatus = options.autoplay;
		var thisClass = ($(this).attr('class')).split(' ');
		var theClass = '.' + thisClass[0];
		var count = 0;
		var slides;
		var currentSlide = 1;
		var delay = parseInt(options.delay) * 1000;

		$(this).children(options.content).each(function() {
			slides = ++count;
		});

		function wrapContent(ele) {
			ele.wrap('<div class="sliderContentsWrap" />');
		}

		function applyCss(ele) {
			$('.sliderContentsWrap').css({
				padding : 0,
				margin : 0,
				width : options.width,
				height : options.height,
				overflow : 'hidden',
				position : 'relative'
			});

			ele.css({
				padding : 0,
				margin : 0,
				width : options.width * slides,
				height : options.height,
				position : 'absolute'
			});

			ele.children(options.content).css({
				float : 'left',
				width : options.width,
				height : options.height
			});
		}

		function resetButtons() {
			i = 0;
			$('.' + options.buttonsClass).each(function() {
				i ++;
				$(this).addClass('bt' + i);
				if (i == 1) $(this).addClass('active');
				$(this).attr('rel', i);
			});
		}

		function goToSlide(theSlide) {
			var animateLeft = - (options.width) * (parseInt(theSlide) - 1); 
			$('.sliderContentsWrap' + ' ' + theClass)
			.animate({
				left: animateLeft
			}, "slow", "swing");

			$('.' + options.buttonsClass).each(function() {
				$(this).removeClass(options.activeClass);
				if ($(this).hasClass('bt' + theSlide)) {
					$(this).addClass(options.activeClass);
				}
			});

			currentSlide = theSlide;
		}

		function autoplay() {
			if (currentSlide < slides){
				goToSlide(parseInt(currentSlide) + 1);
			} else {
				goToSlide(1);
			}
		}

		function playSlide() {
			clearInterval(timer);
			timer = setInterval(function() {
				autoplay();
				}, delay);

			$(options.controlBt).text(options.pauseText);
			playStatus = true;
		}

		function pauseSlide(){
			clearInterval(timer);
			$(options.controlBt).text(options.playText);
			playStatus = false;
		}

		function setSlideHover(ele) {
			$(ele).hover(
				function() { pauseSlide() },
				function() { playSlide() }
			);
		}

		function init(ele){
			wrapContent(ele);
			applyCss(ele);
			setSlideHover(ele);
			resetButtons();

			if (options.autoplay == true) {
				playSlide();
			} else {
				pauseSlide();
			}
		}

		return this.each(function() {
			init($(this));

			$('.' + options.buttonsClass).click(function(e) {
				e.preventDefault();
				pauseSlide();
				goToSlide($(this).attr('rel'));
			});

			$(options.controlBt).click(function(e) {
				e.preventDefault();
				if (playStatus == true) {
					pauseSlide();
				} else {
					playSlide();
				}
			});

		});

	};
})(jQuery);
