function Slider() {
	this.initialize.apply(this, arguments);
}

Slider.prototype = {
	//// サムネイルの処理
  thumb : {
		index  : 0,
		counter: 0,
		auto   : false,
		top    : 0,
		max    : $('#slider_thumb ul li img').size(),
		width  : $('#slider_thumb ul li img').width(),
		height : $('#slider_thumb ul li img').height(),
		src    : null,
		before : null,

		focus  : function(before, after) {
			if (before) {
				$(before).removeClass('thumb_focus').fadeTo(150, 0.6).css('border-color', '#CCC');
			}
			$(after).addClass('thumb_focus').css('border-color', '#444').fadeTo(150, 1);
		},

		scroll : function(prop) {
			var top = 0;

			if (prop.manual) {
				top = $('#slider_thumb ul').scrollTop() + prop.manual;
				// サムネイル先読み
				self.image.load(math.floor(top / 120));

				$('#slider_thumb ul').scrollTop(top);
			}
			else {
				top = (self.thumb.height * prop.index) + (prop.index * 14) + (prop.index * 3) - (self.thumb.height - 30);

				// サムネイル先読み
				self.image.load(prop.index + 1);

				$('#slider_thumb ul').animate({ scrollTop: top });
			}

		},

		auto_scroll : function() {
			self.thumb.index++;
			if (self.thumb.index >= self.thumb.max) self.thumb.index = 0;

			self.thumb.auto = true;
			$('#slider_thumb ul li img:eq(' + self.thumb.index + ')').click();
			self.thumb.auto = false;
		},
		auto_scroll_timer   : null,
		manual_scroll_timer : null
  },

	//// イメージの処理
	image : {
		change : function() {
			var desc = image_desc[self.thumb.index];
			var url  = location + 'releases/' + desc.id;
			
			$('#slider_screen img.jacket').attr('src', 'images/loading.gif');
			$('#slider_screen img.jacket').attr('src', self.thumb.src).load(self.show_desc).
				closest('a').attr('href', url).attr('target', '_blank');
		},

		//// ロード
		load : function(index) {
			var imgXpath = '#slider_thumb ul li img:eq('+index+')';

			if (index >= 0 && index < self.thumb.max) {
				if ($(imgXpath).attr('src').match('loading.gif')) {
					$(imgXpath).attr('src', 'images/releases/'+ image_desc[index].id +'.jpg');
				}
			}
		}
	},

	show_desc :	function() {
		var desc = image_desc[self.thumb.index];

		// 説明の表示
		$('.image_desc')
			.empty()
			.append('<h3>[' + desc.id + '] ' + desc.title + '</h3>')
			.append('<span class="bold">Artist(s)</span><span>: ' + desc.artists + '</span><br />')
			.append('<span class="bold">Released</span><span>: ' + desc.date + '</span>')
			.append('<div id="top_play"><a href="javascript:player.showPlay(\'' + desc.id + '\');"><img src="images/play_off.gif" border="0" onmouseover="this.src=\'images/play_on.gif\'" onmouseout="this.src=\'images/play_off.gif\'" /></a></div>')
			.slideDown(300);
	},

	initialize : function() {
		//self.thumb.auto_scroll_timer = setInterval(self.thumb.auto_scroll, 5000);

		// 最新3リリースのみサムネイル表示
		// ※ 全部表示すると重くなるから
		for (var i = 0; i < 3; i++) {
			self.image.load(i);
		}

		// サムネイルのクリック
		$('#slider_thumb ul li img').click(function(e) {
			if (self.thumb.before === e.target) return;
			//if (self.thumb.auto === false) clearInterval(self.thumb.auto_scroll_timer); // クリックしたら自動スクロールをリセットする

			// プレイヤーを引っ込める
			$('#player').animate({ left: -240 }, { duration: 200 })
				.next('#player_show').animate({ left: 0 }, { duration: 200 });
			$.data($('#player_show').get(0), 'player', false);

			// 説明を引っ込める
			$('.image_desc').slideUp(200);

			// フォーカス
			self.thumb.focus(self.thumb.before, e.target);

			// フェード表示
			self.thumb.index = $('#slider_thumb ul li img').index(e.target);
			self.thumb.src   = 'images/releases/'+ image_desc[self.thumb.index].id +'.jpg';

			// サムネイルがまだロード画像だったら差し替える
			if ($('#slider_thumb ul li img:eq('+self.thumb.index+')').attr('src').match('loading.gif')) {
				$('#slider_thumb ul li img:eq('+self.thumb.index+')').attr('src', self.thumb.src);
			}

			self.image.change();

			self.thumb.scroll({ index : self.thumb.index });

			self.thumb.before = e.target;
			//if (self.thumb.auto === false) self.thumb.auto_scroll_timer = setInterval(self.thumb.auto_scroll, 5000);
		})
		// マウスオーバー
		.hover(
			function() { $(this).fadeTo(200, 1); },
			function() { if (!$(this).hasClass('thumb_focus')) $(this).fadeTo(200, 0.6); }
		);

		// スライダー操作
		$('#slider_thumb_up').hover(
			function() {
				$(this).css('background', '#F00');
				//clearInterval(self.thumb.auto_scroll_timer);
				self.thumb.manual_scroll_timer = setInterval("$('#slider_thumb ul').animate({ scrollTop: '-=50px' }, 200)", 200);
			},
			function () {
				$(this).css('background', '#000');
				clearInterval(self.thumb.manual_scroll_timer);
				//self.thumb.auto_scroll_timer = setInterval(self.thumb.auto_scroll, 5000);
			}
		)

		$('#slider_thumb_down').hover(
			function() {
				$(this).css('background', '#F00');
				//clearInterval(self.thumb.auto_scroll_timer);
				self.thumb.manual_scroll_timer = setInterval(function(){
					$("#slider_thumb ul").animate({ scrollTop: '+=50px' }, 100);
					var index = Math.floor($("#slider_thumb ul").scrollTop() / 120) + 1;
					self.image.load(index);
				}, 200);
			},
			function () {
				$(this).css('background', '#000');
				clearInterval(self.thumb.manual_scroll_timer);
				//self.thumb.auto_scroll_timer = setInterval(self.thumb.auto_scroll, 5000);
			}
		);

		// 最初のサムネイルを選択状態に
		$('#slider_thumb ul li img:first').click();
	}
}

var self   = Slider.prototype;
var slider = new Slider();

