﻿/// Paging
jQuery(function ($) {
	$.fn.paging = function (options) {
		var paging = new $.fn.paging.paging(this, $.extend($.fn.paging.defaults, options));
		//return this.each(function() {
		//});
	}

	$.fn.paging.defaults = {
		visibleItems: 1
	}

	// Paging
	$.fn.paging.paging = function (paging, options) {
		this._options = options;
		this.init(paging);
	}

	$.fn.paging.paging.prototype = {
		init: function (paging) {
			this._command = paging.find('.command');
			this._items = paging.find('.items > .contentItem');
			var sliceEnd = 1 - this._options.visibleItems;
			if (sliceEnd < 0) this._items = this._items.slice(0, sliceEnd);

			// Mark items scroll margin
			var pagingLeft = 0;
			this._items.each(function () {
				var self = $(this);
				self.attr('pagingLeft', pagingLeft);
				pagingLeft += self.outerWidth(true);
			});

			if (this._items.length > 1) {
				var self = this;
				// Add command buttons
				var prev = $('<a href="#" class="prev" />').appendTo(this._command);
				var next = $('<a href="#" class="next" />').appendTo(this._command);
				prev.add(next).bind('click', function (e) {
					e.preventDefault();
					var selected = self._items.filter('.selected');
					if (!selected.length) selected = self._items.first();
					if (e.target == prev[0] && selected[0] != self._items.first()[0]) {
						self._items.removeClass('selected');
						var pagingLeft = selected.prev('[pagingLeft]').addClass('selected').attr('pagingLeft');
						self._items.parent()
							.stop(true, false)
							.animate({ 'margin-left': -pagingLeft + 'px' }, 500);
					} else if (e.target == next[0] && selected[0] != self._items.last()[0]) {
						self._items.removeClass('selected');
						var pagingLeft = selected.next('[pagingLeft]').addClass('selected').attr('pagingLeft');
						self._items.parent()
							.stop(true, false)
							.animate({ 'margin-left': -pagingLeft + 'px' }, 500);
					}
				});
			}
		}
	}
});
