/**
 * Simple Slider - jQuery plugin
 *
 * @author Aurimas Tubis a.k.a Okanakis <aurimas@kryptis.lt>
 *
 * Built for jQuery library
 * http://jquery.com
 */

(function($) {
	
	activateLeft = function(obj) {
		obj.addClass('active');
	}
	//----------------------------------------------------------

	activateRight = function(obj) {
		obj.addClass('active');
	}
	//----------------------------------------------------------

	deActivateLeft = function(obj) {
		obj.removeClass('active');
	}
	//----------------------------------------------------------

	deActivateRight = function(obj) {
		obj.removeClass('active');
	}
	//----------------------------------------------------------
	
	$.fn.simpleSlider = function(settings){
		// default|available configuration properties
		var defaults = {			
			prevId: 		'',
			nextId: 		'',	
			sliderName:     '',
			itemsName:      '',
			speed: 			500,
			containerWidth: 0,
			itemWidth:      0,
			inline:         1,
            numScroll:      1,
			extraName:      ''
		}; 

		var settings = $.extend(defaults, settings);  
		
		//check if not empty settings
		if ((!settings.sliderName) || (!settings.itemsName) || (!settings.prevId) || (!settings.nextId)) {
			return;
		}
		
		//find items to slide
		var items = $(this).find(settings.itemsName);
		if (!items.length) {
			return;
		}
		
		var sliderObj = $(this).find(settings.sliderName); //Slider object
		var prevObj = $(settings.prevId);               //Prev button object
		var nextObj = $(settings.nextId);               //Next button object
		
		var numItems = 0;
		var marginLeft = parseInt(sliderObj.css("marginLeft"));
		var containerW = parseInt($(this).css('width'));
		var clicks = 0;
		
		//Set one item width
		if (!settings.itemWidth) {
			if (settings.inline == 1) //Number of visible items in slider container
				settings.itemWidth = containerW;
			else {
				settings.itemWidth = items.width() + parseInt(items.css('padding-left')) + parseInt(items.css('padding-right'));
            }
		}
		
		numItems = items.length;
		//Set slider width, that all items there be in one row
		sliderObj.css({'width': (numItems+1)*settings.itemWidth+'px'}); //(numItems+1) - plus one, extra space
		
		if (numItems > settings.inline) {
			activateRight(nextObj); //Activate next button
		}
		
		//Set extra object to show number of current visible item; Useful when inline=1
		var extraObj = 0;
		if (settings.extraName) {
			extraObj = $(settings.extraName);
		}

		prevObj.click(function() {
			clicks -= settings.numScroll;
			moveRight();
			$(this).blur();
			return false;
		});					
		//----------------------------------------------------------
	
		nextObj.click(function() {
			clicks += settings.numScroll;
			moveLeft();
			$(this).blur();
			return false;
		});
		//----------------------------------------------------------

		moveLeft = function() {
			if (clicks >= (numItems - settings.inline)) {
				clicks = (numItems > settings.inline) ? numItems - settings.inline : 0;
				deActivateRight(nextObj);
			}
			if (clicks > 0)
				activateLeft(prevObj);
			marginLeft = clicks * settings.itemWidth;
			if (extraObj) {
				extraObj.html(clicks+1);
			}
			sliderObj.animate({"marginLeft": -marginLeft+"px"}, settings.speed);
		}
		//----------------------------------------------------------
	
		moveRight = function() {
			if (clicks <= 0) {
				clicks = 0;
				deActivateLeft(prevObj);
			}
			if (clicks < (numItems - settings.inline))
				activateRight(nextObj);
			marginLeft = clicks * settings.itemWidth;
			if (extraObj) {
				extraObj.html(clicks+1);
			}
			sliderObj.animate({"marginLeft": -marginLeft+"px"}, settings.speed);
		}
		//----------------------------------------------------------
	};

})(jQuery);

