/**
 * @package	: jQuery (Javascript) Slider
 * @author	: Yigit Genc <yigidix@gmail.com>
 * @version	: 0.1
 * @powered	: IMALATHANE, 2011.
 **/
(function($) {
	$.fn.slider = function(options) {
		var $slider = $(this);
		var sumPos	= 0;
		var len		= $slider.find('li').length;
		
		var settings = {
			auto		: false,
			timeout		: 4000,
			speed		: 400,
			effect		: 'slide',
			width		: null,
			height		: null,
			format		: 'horizonal',
			navTag		: '#slider-nav',
			buttonsTag	: '#slider-buttons',
			nextTag		: '#slide-next',
			prevTag		: '#slide-prev'
		};
		
		$.extend(settings, options || {});
		
		if (settings.format == 'horizontal')
			$slider.width($(this).width() * len);
		else
			$slider.height($(this).height() * len);
			
		var intSet = true;
		if (settings.auto) {
			if (intSet) {
				var int = setInterval(function() { slide('next', 0); }, settings.timeout);
			}
		}
		
		function slide(action, a) {
			$slider.stop();
			
			// Next
			if (action == 'next') {
				// Horizontal
				if (settings.format == 'horizontal') {
					if (sumPos != (settings.width * (len-1))) {
						if (a)
							sumPos = settings.width * (a-1);
						else {	
							sumPos += settings.width;
						}
						
						$(settings.navTag).find('.current').next().addClass('current').prev().removeClass('current');
						
						$slider.animate({left:'-'+sumPos+'px'}, settings.speed, function() { });
					}
					else {
						if (a)
							sumPos = settings.width * (a-1);
						else {	
							sumPos = 0;
						}
						$(settings.navTag).find('.current').removeClass('current');
						$(settings.navTag + ' a:first').addClass('current');
						$slider.animate({left:'-'+sumPos+'px'}, settings.speed, function() { });
					}
				}
				// Vertical
				else {
					if (sumPos != (settings.height * (len-1))) {
						if (a)
							sumPos = settings.height * (a-1);
						else {	
							sumPos += settings.height;
						}
						
						$(settings.navTag).find('.current').next().addClass('current').prev().removeClass('current');
					}
					else {
						sumPos = 0;
						$(settings.navTag).find('.current').removeClass('current');
						$(settings.navTag + ' a:first').addClass('current');
					}
					
					$slider.animate({top:'-'+sumPos+'px'}, settings.speed, function() { });
				}
			}
			// Previous
			else {
				// Horizontal
				if (settings.format == 'horizontal') {
					if (sumPos > 0) {
						sumPos -= settings.width;
						$(settings.navTag).find('.current').prev().addClass('current').next().removeClass('current');
					}
					else {
						sumPos = settings.width * (len - 1);
						$(settings.navTag).find('.current').removeClass('current');
						$(settings.navTag + ' a:last').addClass('current');
					}
					
					$slider.animate({left:'-'+sumPos+'px'}, settings.speed, function() { });
				}
				// Vertical
				else {
					if (sumPos > 0) {
						sumPos -= settings.height;
						$(settings.navTag).find('.current').prev().addClass('current').next().removeClass('current');
					}
					else {
						sumPos = settings.height * (len - 1);
						$(settings.navTag).find('.current').removeClass('current');
						$(settings.navTag + ' a:last').addClass('current');
					}
					
					$slider.animate({top:'-'+sumPos+'px'}, settings.speed, function() { });
				}
			}
		}
		
		$(settings.nextTag).click(function() { slide('next', 0); });
		$(settings.prevTag).click(function() { slide('prev', 0); });
		
		for (var i = 1; i <= len; i++)
			$(settings.navTag).append('<a href="javascript:void(0)" alt="'+i+'">&nbsp;</a>' + "\n");
		
		$(settings.navTag).find('a:first').addClass('current');
		
		$(settings.navTag + ' a').click(function() {
			var a = parseInt($(this).attr('alt'));
			slide('next', a);
			$(settings.navTag + ' a').removeClass('current');
			$(this).addClass('current');
			
		});
	};
}) (jQuery);
