﻿/// <reference path="../jquery-1.3.2-vsdoc.js"/>

(function($) {
	$.fn.productscroll = function(options) {
		var opts = $.extend({}, $.fn.productscroll.defaults, options);

		return this.each(function() {
			/***** Setup *****/
			var obj = $(this);
			var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
			/***** End Setup *****/

			var pageSize = $(this).find('.productscontainer').width();
			var unitWidth = $(this).find('.productscontainer').find('a').width();
			var productCount = $(this).find('div.products').children().length;
				$(this).find('div.products').width(productCount * (unitWidth + 8));
			var pages = Math.ceil(productCount / o.perPage);
			
			AttachEvents();

			/***** Private functions *****/
			function AttachEvents()
			{
				if (pages > 1)
				{
					$(obj).find('a.leftarrow')
						.bind('click', { dir: -1 }, ScrollPage)
						.show();

					$(obj).find('a.rightarrow')
						.bind('click', { dir: 1 }, ScrollPage)
						.show();

					UpdatePagerLinks();
				}
			}

			function GoToPage(pageNum, rush) {
				var pos = (pageNum - 1) * (pageSize);
				if (rush) {
					$(obj).find('div.products').css('left', -pos);
				} else {
					$(obj).find('div.products').animate({
						left: -pos
					}, 1000);
					o.page = pageNum;
				}

				UpdatePagerLinks();
			};
			function UpdatePagerLinks() {
				if (o.page == 1) {
					$(obj).find('a.leftarrow').addClass('leftarrowdisabled');
				} else {
					$(obj).find('a.leftarrow').removeClass('leftarrowdisabled');
				}
				if (o.page == pages) {
					$(obj).find('a.rightarrow').addClass('rightarrowdisabled');
				} else {
					$(obj).find('a.rightarrow').removeClass('rightarrowdisabled');
				}
			};
			function ScrollPage(e) {
				var newPage = o.page + e.data.dir;
				if (newPage > 0 && newPage <= pages)
					GoToPage(newPage, false);
				return false;
			};
			/***** End Private functions *****/
		});
	}
	/***** Options *****/
	$.fn.productscroll.defaults = {
		page: 1,
		perPage: 5
	};
	/***** End Options *****/
})(jQuery);