﻿(function($) {
	$.fn.extend({
		windowed_scroller : function(options) {

			var left_arrow_id = $(options.left_arrow_id);
			var right_arrow_id = $(options.right_arrow_id);
			var scroller_block_id = $(options.scroller_block_id);
			var scroll_elements = $(options.scroll_elements, scroller_block_id);

			var i_w = options.scroller_item_width;
			var delta = options.scroller_delta * i_w;
			var durat = options.scroller_duration;

			var sc_w = 0; //width of scrollable content
			var sb_w = scroller_block_id.width(); //width of scrollable block
			var current_slide = 0;//slide_to position

			var ipb = Math.ceil(sb_w / i_w); //visible items per block
			var tis = 0;// total items
			var sic = 0;// already scrolled items count

			function check_buttons_status()
			{
				if(sic + ipb < tis)
				{
					right_arrow_id.show();
				}
				else
				{
					right_arrow_id.hide();
				}

				if(sic > 0)
				{
					left_arrow_id.show();
				}
				else
				{
					left_arrow_id.hide();
				}
//alert('sc_w = ' + sc_w + '; sb_w = ' + sb_w + '; sc_w-sb_w+ delta = ' + (sc_w - sb_w + delta) + '; delta = '+ delta + '; c_s = ' + current_slide + '; sic = '+sic);
			}

			scroll_elements.each(
				function( intIndex ){
					sc_w = sc_w + $(this).width();
					tis++;
				}
			);

			// скроллим на начало
			scroller_block_id.scrollTo(current_slide, {onAfter: check_buttons_status});

			left_arrow_id.click(function(event){
				event.preventDefault();

				sic--;

				if (current_slide > 0)
				{
					current_slide = current_slide - delta;
					scroller_block_id.scrollTo(current_slide, {duration: durat, onAfter: check_buttons_status});
				}
				else
				{
					current_slide = 0;
				}
				return false;
			});

			right_arrow_id.click(function(event){
				event.preventDefault();

				current_slide = current_slide + delta;
				sic++;

				if (current_slide < sc_w)
				{
					scroller_block_id.scrollTo(current_slide, {duration: durat, onAfter: check_buttons_status});
				}
				else
				{
					//current_slide = 0;
					//scroller_block_id.scrollTo(current_slide, {duration: durat});
				}
				return false;
			});
		}
	});
})(jQuery);
