﻿(function($){	$.fn.slider = function(settings)	{		// Config Array		var config = $.extend(		{ 			type:					"slide",						dynamicCategories:		true,						direction:				"hor",			timeDelay:				350,			loopItems:				true,			autoSlide:				true,			mouseDisable:			true,			autoSlideDelay:			5000,						defaultVertNum:			3,					btnNextStr:				"slider-btnNext",			btnPrevStr:				"slider-btnPrev",			btnDisabledStr:			"-dis",			btnHoverStr:			"-over",			btnOpacityOff:			1,			btnOpacityOver:			1,						slideItemClass:			"slideItem",			slideItemHolder:		"slider-holder",			slideItemBound:			"slider-bound"		}, settings || {});				var slider = $(this);				// Variables to determine the position of the slider		var currentItem = 0;		var prevItem = 0;		var pos = 0;		var prevPos = [];		var timer;		var isReady = true;				var numItemsTotal;		var moveVal;		var numItemsVisible;		var holder;		var marginItemVal;		var marginHolderVal;		var originalChildren;		var currentPreviousIndex;					function initSlider()		{						// Insert the HTML necessary to create the slider			slider.html(setHTML(slider));			slider.css({display: 'block'});						numItemsTotal = $('.' + config.slideItemClass, slider).length;			moveVal = (config.direction == "hor") ? $('.' + config.slideItemClass, slider).outerWidth(true) : $('.' + config.slideItemClass, slider).outerHeight(true);			numItemsVisible = (config.direction == "hor") ? Math.floor(slider.outerWidth() / moveVal) : config.defaultVertNum;			holder = $('.' + config.slideItemHolder, slider);			marginItemVal = (config.direction == "hor") ? moveVal - $('.' + config.slideItemClass, slider).width() : moveVal - $('.' + config.slideItemClass, slider).height(); 			marginHolderVal = (config.direction == "hor") ? parseInt(($('.' + config.slideItemBound, slider).css("margin-left"))) : parseInt(($(slider).css("padding-top")));			originalChildren = $('.' + config.slideItemClass, slider);			currentPreviousIndex = originalChildren.length - 1;						originalChildren.each(function(num)			{				$(this).css({left: (num * moveVal) + 'px'}).removeClass('hide');			});						if (config.direction == "hor")			{				slider.css({width: ((moveVal * numItemsVisible) + (marginItemVal + marginHolderVal)) + 'px'});					if ($.browser.msie && $.browser.version == "6.0") { slider.css({height: (slider.outerHeight() - 2) + 'px'}); }			}			else			{							if ($.browser.msie && $.browser.version == "6.0") { slider.css({width: (slider.width() - 2) + 'px'}); }				slider.css({height: ((moveVal * numItemsVisible) - marginHolderVal) + 'px'});								$('.' + config.slideItemBound).css({height: slider.height() + 'px'});			}						// Setup a timer if the slider is set to automatic			if (config.autoSlide && numItemsTotal > numItemsVisible)			{				setTimer();								if (config.mouseDisable)				{					slider.mouseover(function()					{						clearTimer();					}).mouseout(function()					{						setTimer();					});				}			}									$('a', '.ss-controls').click(function()			{								if (isReady && currentItem != $(this).attr('rel'))				{					currentItem = $(this).attr('rel') - 1;									nextItem(true);				}				return false;			});		}			//  ========== FUNCTIONS ==========  \\				function nextItem(newItem)		{						pos = -(moveVal);						if (currentItem >= numItemsTotal - 1)			{				currentItem = 0;			}			else			{				currentItem++;			}			moveSlider(holder, pos, config.timeDelay, 'next', newItem);						if (config.dynamicCategories)			{				if (newItem == true)				{					setActiveControls();					prevItem = currentItem;				}			}		}						function setActiveControls()		{			$('li:eq(' + prevItem + ')', '.ss-controls').removeClass('active');			$('li:eq(' + currentItem + ')', '.ss-controls').addClass('active');		}				function positionSlider(num, dir)			{				if (dir == 'next')				{					$(holder).css({left: 0});													var nextItem = num + 1;					if (nextItem >= numItemsTotal)					{						nextItem = 0;					}										$('.slideItem', holder).each(function(e)					{						if (e == num)						{							$(this).css({left: 0});						}						else if (e == nextItem)						{							$(this).css({left: moveVal + 'px'});						}						else						{							$(this).css({left: (moveVal * 2) + 'px'});						}					});				}			}				function moveSlider(holder, pos, time, dir, newItem)			{								clearTimer();				setTimer();								switch(config.type)				{					case "slide":													if (newItem === true)						{							isReady = false;													$('.' + config.slideItemClass + ':eq(' + prevItem + ')', slider).css({left: 0}).animate({ left: '-621px' }, time, function() { $(this).css({display: 'none'}); isReady = true; });							$('.' + config.slideItemClass + ':eq(' + currentItem + ')', slider).css({display: 'block', left: '621px'}).animate({ left: 0 }, time);						}										break;				}			}					function setTimer()			{				timer = setInterval(timerNext, config.autoSlideDelay);			}		function timerNext()			{				nextItem(true);			}		function clearTimer()			{				clearInterval(timer);			}					// Add the HTML to create the slider		function setHTML(this_obj)			{				var html_str = '';				html_str += '<ul class="ss-controls">';								for (var i = 0; i < $('.' + config.slideItemClass, slider).length; i++)				{					if (i == 0)					{						html_str += '<li class="active"><a href="/" rel="' + i + '">' + (i + 1) + '</a></li>';					}					else					{						html_str += '<li><a href="/" rel="' + i + '">' + (i + 1) + '</a></li>';					}				}								html_str += '</ul>';				html_str += '<div class="' + config.slideItemBound + '">';				html_str += '<div class="' + config.slideItemHolder + ' clearfix">';				html_str += this_obj.html();				html_str += '</div></div>';				return html_str;			}				initSlider();	};})(jQuery);
