// jQuery関数
(function($) {
	// slider
	$.fn.slider = function(settings) {
		var s = settings;
		
		return this.each(function() {
			var container = $(this); // スライダー全体のコンテナ
			var panelContainer = $(s.panelContainer); // パネルのコンテナ
			var panelCount = $(s.panels).length; // パネルの数
			var distance = $(s.panels).eq(0).outerWidth(); // 1回の移動距離 = パネルの横幅
			var displayCount = s.displayCount; // 同時表示数
			var c = counter(0, panelCount - displayCount);

			// リンク設定
			var links = [s.linkPrev, s.linkNext];
			$(links[0]).addClass(s.linkDisabledClass); // まず「前へ」リンクをdisabledにする
			$.each(links, function(i, elem) {
				var n = (i == 0) ?  -1 : 1;
				$(elem).click(function() {
					if (panelContainer.hasClass('animated')) {
						return false;
					}
					if (c.add(n)) {
						slide.apply(panelContainer, [distance * n * -1]); // スライド
					}
					
					// 「前へ」リンクのdisabledをつけたり外したり
					if (c.isMin()) {
						$(links[0]).addClass(s.linkDisabledClass);
					} else {
						$(links[0]).removeClass(s.linkDisabledClass);
					}
					
					// 「次へ」リンクのdisabledをつけたり外したり
					if (c.isMax()) {
						$(links[1]).addClass(s.linkDisabledClass);
					} else {
						$(links[1]).removeClass(s.linkDisabledClass);
					}
				});
			});
			
		});
		
		// スライド関数
		function slide(n) {
			var self = this;
			self.addClass('animated');
			var pos = this.position();
			var goal = pos.left + n;
			self.animate({
				left: goal
			}, {
				duration: "slow",
				easing: "easeInOutQuart",
				complete: function() {
					self.removeClass('animated');
				}
			})
		}
		
		// カウンターオブジェクト
		function counter(min, max) {
			var min = min;
			var max = max;
			var current = min;
			return {
				add: function(n) {
					current = current + n;
					if (current > max) {
						current = max;
						return false;
					} else if (current < min) {
						current = min;
						return false;
					}
					return true;
				},
				isMax: function() {
					return (current == max) ? true : false;
				},
				isMin: function() {
					return (current == min) ? true : false;
				}
			}
		}
	}
})(jQuery);


$(function() {
	// slider設定
	$('#slider').slider({
		linkPrev: '#sliderPrev', // 「前へ」リンク
		linkNext: '#sliderNext', // 「次へ」リンク
		linkDisabledClass: 'disabled', // 「前へ」「次へ」を押せなくするClass
		panelContainer: '#sliderPanelContainer', // 実際にスライドする要素
		panels: '#sliderPanelContainer li', // パネル要素
		displayCount: 3 // 同時表示数
	});
})

