(function($) {

// input -
//	        <div id="slider">
//			  <div id="left_btn"></div>
//			  <div class="slider_block">...</div>
//			  ...
//			  <div class="slider_block">...</div>
//			  <div id="right_btn"></div>
//			 </div>
//			 
// All .scrollables must have smth like
//.slider_block
//{
//	width:872px;
//	height:300px;
//	float:left;
//}

	// опции сделать несложно, но - потом
	// (как минимум .slider_block, #left_btn, #right_btn, speed, queuing, easing, cycle - в опции)
	$.fn.realEasySlider = function(){

		var itemsRaw = $(this).find('.slider_block');

		if (itemsRaw.size() == 0) {
			$(this).hide();
			return;
		}

		itemsRaw.wrapAll('<div class="scroll-container"></div>');
		var items = itemsRaw.toArray();
		$.each(items, function(i, v){
			items[i] = $(items[i]);
		});
		itemsRaw.remove();
		
		var container = $(this).find('.scroll-container');
		container.wrap('<div class="scroll-view"></div>');
		container.css({
			'margin': '0',
			'padding': '0',
			'position':'absolute'
		});
		var view = $(this).find('.scroll-view');

		var visibleCount = 5;
		view.css({
			'margin': '0',
			'padding': '0',
			'overflow': 'hidden',
			'position':'relative',
			'float':'left'
		});

		for (var i = 0; i < Math.min(visibleCount, items.length); i++) {
            container.append(items[i]);
		}

		var leftButton = $(this).find('#left_btn');
		var rightButton = $(this).find('#right_btn');

		var itemCount = items.length;
		var height    = items[0].height();
		var itemWidth = items[0].width();
		var viewWidth = visibleCount * itemWidth;
		var totalWidth = (visibleCount + 1) * itemWidth;
		var speed = 0.8; // px/ms
		var curItem = 0;

		container.width(totalWidth);
		container.height(height);
		
		view.width(viewWidth);
		view.height(height);

		$.realEasySlider = {isRunning: false};

        if(itemCount > 6)
        {
            var reg = /^(.+)(\/upload\/gallery\/tmb)/;
            var pic = container.children().get(2).children[0].src.replace(reg, "");
            $('.BGR').attr('src', '/upload/gallery' + pic);
            $('.photoname').text(container.children().get(2).children[0].alt);
            $('.Transp_text').text(container.children().get(2).children[1].innerHTML);
        }

        $('.slider_block img').live("click", function() {

            if(itemCount <= 6){
                var pic = $(this).attr('src').substr(19, 100);
                $('.BGR').attr('src', '/upload/gallery' + pic);
                $('.photoname').text($(this).attr('alt'));
                $('.Transp_text').text($(this).next('.ttl').text());
            }else{
                if(2 - $(this).parent().index() > 0)
                    slideLeft(2 - $(this).parent().index());
                else
                    slideRight($(this).parent().index() - 2);
            }
        });

		if (visibleCount >= itemCount) {
			leftButton.css({ opacity: 0.2 });
			rightButton.css({ opacity: 0.2 });
			return;
		}
        if(itemCount <= 6)
            $("#centsquare").hide();
        else
            $("#centsquare").show();

		leftButton.click(function(){
            slideLeft(1);
		});

		rightButton.click(function(){
            slideRight(1);
		});

        function slideRight(count){
			if ($.realEasySlider.isRunning)
				return;
			$.realEasySlider.isRunning = true;


            for(var i = 1; i <= count; i++)
            {
                curItem = (curItem + 1) % itemCount;
			    container.append(items[(curItem + visibleCount - 1) % itemCount]);
            }

			var desiredLeft = -itemWidth*count;
			var t = Math.abs(itemWidth*count) / speed;
			container.animate(
				{left: (desiredLeft) + 'px'},
				{queue:true, duration:t, complete:function(){
					container.children().slice(0, count).remove();
					container.css('left', 0 + 'px');
					$.realEasySlider.isRunning = false;
                    if(itemCount > 6)
                    {
                        var reg = /^(.+)(\/upload\/gallery\/tmb)/;
                        var pic = container.children().get(2).children[0].src.replace(reg, "");
                        $('.BGR').attr('src', '/upload/gallery' + pic);
                        $('.photoname').text(container.children().get(2).children[0].alt);
                        $('.Transp_text').text(container.children().get(2).children[1].innerHTML);
                    }
				}}
			);
		}

        function slideLeft(count){
			if ($.realEasySlider.isRunning)
				return;
			$.realEasySlider.isRunning = true;

			for(var i = 1; i <= count; i++) {
                curItem = (curItem + itemCount - 1) % itemCount;
                container.prepend(items[curItem]);
            }
            container.css('left', (-itemWidth*count) + 'px');

			var t = Math.abs(itemWidth*count) / speed;
			container.animate(
				{left: (0) + 'px'},
				{queue:true, duration:t, complete:function(){
				    container.children().slice(container.children().size() - count, container.children().size()).remove();
					container.css('left', '0px');
					$.realEasySlider.isRunning = false;
                    if(itemCount > 6)
                    {
                        var reg = /^(.+)(\/upload\/gallery\/tmb)/;
                        var pic = container.children().get(2).children[0].src.replace(reg, "");
                        $('.BGR').attr('src', '/upload/gallery' + pic);
                        $('.photoname').text(container.children().get(2).children[0].alt);
                        $('.Transp_text').text(container.children().get(2).children[1].innerHTML);
                    }
				}}
			);
		}
	}
})(jQuery);


