;
(function($) {

	$.fn.sliderGM = function(settings) {

		var settings = $.extend( {
			scrollableItems : 6,
			activeClass : 'active',
			displayPrevButton : true,
			displayNextButton : true,
			mini: false
		}, settings);

		return this.each(function() {

			var $this = $(this);
			var $wrapper = $('<div/>').addClass('pos-r').css( {
				overflow : 'hidden'
			}).width($(this).outerWidth());
			var $items = $this.children();

			var _W = $items.first().outerWidth();
			var _NUM = settings.scrollableItems;
			var _INDEX = 0;
			var _PAGE = Math.ceil($items.length / _NUM);
			var _MIN = 0;
			var _MAX = ($items.length - _NUM) * _W;

			var $pagination = $('<ul/>').addClass(
					'event-pagination pos-r marg-t');

			if (settings.displayPrevButton) {

				var $prev = $('<li/>').attr('href', '#').text('prev');

				if (settings.mini) 
				{
					$prev.addClass('event-Mini-pagination-prev');
				} 
				else 
				{
					$prev.addClass('event-pagination-prev');
				}

				$prev.click(function() {
					prev();
					return false;
				});

				$pagination.append($prev);

			}

			if (settings.displayNextButton) {

				var $next = $('<li/>').attr('href', '#').text('next');

				if (settings.mini) {
					$next.addClass('event-Mini-pagination-next');
				} else {
					$next.addClass('event-pagination-next');
				}

				$next.click(function() {
					next();
					return false;
				});

				$pagination.append($next);

			}

			$items.each(function(i, e) {
				if (i % _NUM == 0)
					$pagination.append($('<li/>').append(
							$('<a/>').attr('href', '#').text('\u25CF')
									.addClass((i == 0) ? 'active' : '').click(
											function() {
												if ($(this).hasClass('active'))
													return false;
												$(this).closest('ul').find(
														'a.active')
														.removeClass('active')
														.end().end().addClass(
																'active');
												scroll(i);
												return false;
											})));
			});

			var scroll = function(index) {
				var PX = _W * index;

				if (PX < _MIN)
					PX = _MIN
				else if (PX > _MAX)
					PX = _MAX

				$this.animate( {
					left : -PX
				});
				_INDEX = index;
			}

			var prev = function() {
				if (_INDEX == 0)
					return;
				$pagination.find('.active').removeClass('active').parent()
						.prev().children().addClass('active');
				scroll(_INDEX - _NUM);
			}

			var next = function() {
				if (_INDEX > $items.length - _NUM)
					return;
				$pagination.find('.active').removeClass('active').parent()
						.next().children().addClass('active');
				scroll(_INDEX + _NUM);
			}

			$this.addClass('pos-r').width(_W * $items.length).wrap($wrapper)
					.after($pagination);
		});
	};

})(jQuery);
