(function($) {	
	$.nxsSlideBox = function(sourceBox, aOptions){
		var $sSourceId 		= sourceBox;
		var $sSourceObject 	= $(sourceBox);
		var $aOptions		= aOptions;
		var $oTimer			= null;
		var $iCount			= 0;
		var $iActPos		= 0;
		var $iFirstPos		= 0;
		var $iLastPos		= 0;
		
		init();		

		function goToLeft() {
			if ($oTimer) {
				window.clearTimeout($oTimer);
				$oTimer = window.setTimeout(automaticFnc, aOptions.autoTime);
			}
			
			$iHideElement = $iActPos + ($aOptions.countToShow-1);
			
			$(".nxsslider_"+$iHideElement).hide();
			$iActPos--;

			if ($iActPos < $iFirstPos) {				
				$iFirstActiveElement = $iActPos + 1;				
				$(".nxsslider_"+$iFirstActiveElement).before($(".nxsslider_"+$iLastPos));
				$(".nxsslider_"+$iLastPos).addClass("nxsslider_"+$iActPos).removeClass("nxsslider_"+$iLastPos).attr('nxsslider_id', $iActPos);
				$iLastPos--;
				$iFirstPos--;
			}
			
			$(".nxsslider_"+$iActPos).show();	
		}
		
		function goToRight() {
			if ($oTimer) {
				window.clearTimeout($oTimer);
				$oTimer = window.setTimeout(automaticFnc, aOptions.autoTime);
			}
		
			$(".nxsslider_"+$iActPos).hide();
			$iActPos++;
			
			$iShowElement = $iActPos + ($aOptions.countToShow-1);

			if ($iShowElement > $iLastPos) {				
				$iLastActiveElement = $iShowElement - 1;				
				$(".nxsslider_"+$iLastActiveElement).after($(".nxsslider_"+$iFirstPos));
				$(".nxsslider_"+$iFirstPos).addClass("nxsslider_"+$iShowElement).removeClass("nxsslider_"+$iFirstPos).attr('nxsslider_id', $iShowElement);
				$iLastPos++;
				$iFirstPos++;
			}
			
			$(".nxsslider_"+$iShowElement).show();			
		}
		
		function automaticFnc() {
			if ($aOptions.autoDirection == "left") {
				goToLeft();
			} else {
				goToRight();
			}
		}

		function init() {					
			$sSourceObject.children("."+$aOptions.sliderClass).each(function (){
				$(this).attr('nxsslider_id', $iCount);
				$(this).addClass('nxsslider_'+$iCount);
				$iLastPos = $iCount;
				$iCount++;
				if ($iCount > $aOptions.countToShow)
					$(this).hide();
			});
			
			if (!$aOptions.showAlwaysArrows) {			
				if ($iCount <= $aOptions.countToShow) {				
					if ($aOptions.arrowLeft != "")
						$("#"+$aOptions.arrowLeft).hide();
					if ($aOptions.arrowRight != "")
						$("#"+$aOptions.arrowRight).hide();
				}
			}
			
			if ($aOptions.arrowLeft != "")
				$("#"+$aOptions.arrowLeft).unbind("click").click(goToLeft);
			if ($aOptions.arrowRight != "")
				$("#"+$aOptions.arrowRight).unbind("click").click(goToRight);
				
			if ($aOptions.runAuto === true && $iCount > $aOptions.countToShow) {
				$oTimer = window.setTimeout(automaticFnc, aOptions.autoTime);
			}
		}	
	}
	
	
	$.fn.nxsSlideBox = function(aOptions){
		aOptions = aOptions || {};							
		aOptions.arrowLeft			=	aOptions.arrowLeft || '';
		aOptions.arrowRight			=	aOptions.arrowRight || '';
		aOptions.sliderClass		=	aOptions.sliderClass || 'slider';		
		aOptions.showAlwaysArrows	=	aOptions.showAlwaysArrows || false;
		aOptions.countToShow		=	aOptions.countToShow || 5;
		aOptions.runAuto			=	aOptions.runAuto || false;
		aOptions.autoTime			=	aOptions.autoTime || 2500;
		aOptions.autoDirection		=	aOptions.autoDirection || 'left';
								
		this.each(function() {
			new $.nxsSlideBox(this, aOptions);
		});
	}
	
})(jQuery);
