jQuery.fn.sponsorsSlider = function(settings){

	 //overriding settings
	var settings = jQuery.extend({
		imagesVisible : 1, //this parameter sets ammount of images, that will rotate together
		pause : 3000, //pause before next slide
		duration : 1000, //duration of sliding
		startAgainFlag : true, //re-start or not? animation after arrow click
		startAgainPause : 5000 //pause after button click, when animation will start again
	},settings);
	
	//getting all blocks
	var elements = $(this).children('li');
		
	//very many variables!
	var cnt = -1, 
	startingPosition = 0, 
	step = parseInt($(this).css('width')),
	elemWidth = parseInt($(this).css('width')),
	classPrefix = 'sponsorsSlider-group-',
	sliderTimer;
	if (isNaN(elemWidth)) {
		elemWidth = $(this).parent().css('width');
		step = $(this).parent().css('width');
	}
	
	//preapearing elements
	elements.each(function(){
		cnt++;
		$(this).addClass(classPrefix+cnt);	
		if (cnt == 0) {
			$(this).addClass('sponsors-slider-active'); 
		} else {
			$(this).css({left: (-1*elemWidth)+'px', top:'0px'});
		}
	});
		
    	
	//arrow handlers
	$('.sponsors-slider-leftArrow').click(function(){
		if (startingPosition == 0) {
			startingPosition = cnt; 
		} else {
			startingPosition --;
		}
		
		clearInterval(sliderTimer);
		//let's show previous stuff
		elements.removeClass('sponsors-slider-active');
		elements.css({left: (-1*elemWidth)+'px', top:'0px'});
		$('.'+classPrefix+startingPosition).addClass('sponsors-slider-active');
		$('.'+classPrefix+startingPosition).css('left', '0');
		if (settings.startAgainFlag) startAgain();
		return false;
	});
	
	$('.sponsors-slider-rightArrow').click(function () {
		clearInterval(sliderTimer);
		slide();
		if (settings.startAgainFlag) startAgain();
		return false;
	});

	//starting animation again after button click
	function startAgain () {
		sliderTimer = setInterval(slide, settings.startAgainPause);
	}
		
	//let's go!
	sliderTimer = setInterval(slide,settings.pause);
		
	function slide() {
		if (cnt >= startingPosition) {
		
		//let's hide arrows till animation is performing
		$('.sponsors-slider-arrow').hide();
		
		$('.'+classPrefix+startingPosition).removeClass('sponsors-slider-active');
		$('.'+classPrefix+startingPosition).addClass('sponsors-slider-inMove');
				
		//if list of blocks go to end, start it again
		startingPosition++;
		if (startingPosition > cnt) {startingPosition = 0;}
				
		//moving new blocks to the start position that is equal -1 * container width
		$('.'+classPrefix+startingPosition).css({left: (-1*elemWidth)+'px', top:'0px'});
		$('.'+classPrefix+startingPosition).addClass('sponsors-slider-inMove');
				
		//moving both blocks with 'inMove' class
		$('.sponsors-slider-inMove').animate({
			'left' : '+='+step
		}, settings.duration, '', 
			function () {
				$('.'+classPrefix+startingPosition).addClass('sponsors-slider-active');
				$('.sponsors-slider-inMove').removeClass('sponsors-slider-inMove');
				//revealing arrows
				$('.sponsors-slider-arrow').show();
			});
		}		
	}
};	
