var IMAGE_W = 967;

$(function(){
	$('#slider-image').simpleSlideImage({moveX:(-1*IMAGE_W),moveMaxCnt:10});
});


/**
 * イメージスライダー
 * @opt moveX x軸の移動幅
 * @opt moveY ここ指定しても動かないかも・・・
 * @opt moveMaxCnt scroll画像の移動枚数
 * @opt duration アニメーション完了時間
 * @opt easing 変化式
 * @opt interval インターバル
 * 		0の場合、オートスクロールしない
 * @opt animateComplete animation完了後のコールバック関数
 */

$.fn.simpleSlideImage = function(opt){
	var opt = $.extend({
		moveX:0,
		moveY:0,
		moveMaxCnt:0,
		duration:1200,
		easing:"easeInOutExpo",
		interval:0,
		hideArrowClass:"hide-arrow",
		animateComplete:function(){}
	},opt);

	return this.each(function(){
		var $target = $(this);
		var $targetContainer = $target.parent("div#slider-container");
		var $prev = $("#slider-left-arrow" , $targetContainer);
		var $next = $("#slider-right-arrow" , $targetContainer);
		var $linkArea = $('#slider-link-area' , $targetContainer);
		var timer;
		var move_cnt = 0;

		/**
		 * インターバル
		 */
		var interval = {
			//インターバルの設定
			play : function(){
				if(opt.interval > 0) {
					timer = setInterval(slide.next , opt.interval);
				}
			},
			//インターバルのクリア
			stop : function() {
				if(timer) {
					clearInterval(timer);
				}
			}
		};

		/**
		 * スライド
		 */
		var slide = {
			//初期化
			init : function() {
				if(move_cnt == opt.moveMaxCnt || move_cnt*-1 == opt.moveMaxCnt) {
					move_cnt = 0;
					$target.css({backgroundPosition: "0px 0px"});
				}
				arrow.show();
				opt.animateComplete.call();
			},
			//前へ
			prev : function() {
				move_cnt--;
				slide.animate();
			},
			//次へ
			next : function() {
				move_cnt++;
				slide.animate();
			},
			//アニメーション
			animate : function() {
				$target.stop(true , true).animate(
					{backgroundPosition: (opt.moveX * move_cnt) + "px " + (opt.moveY * move_cnt) + "px"},
					{duration:opt.duration,easing:opt.easing,complete:slide.init}
				);
			}
		};

		/**
		 * 矢印
		 */
		var arrow = {
			init : function() {
				if($next.length) {
					$next.click(function(){
						arrow.slideMove($next , "next");
						return false;
					});
				}
				if($prev.length) {
					$prev.click(function(){
						arrow.slideMove($prev , "prev");
						return false;
					});
				}
			},
			//矢印の表示
			show : function() {
				if($prev.length) $prev.removeClass(opt.hideArrowClass);
				if($next.length) $next.removeClass(opt.hideArrowClass);
			},
			//矢印の非表示
			hide : function() {
				if($prev.length) $prev.addClass(opt.hideArrowClass);
				if($next.length) $next.addClass(opt.hideArrowClass);
			},
			//矢印押下でのスライド動作
			slideMove : function(arrowObj , action) {
				if(!arrowObj.hasClass(opt.hideArrowClass)) {
					arrow.hide();
					interval.stop();
					if(action == "prev") {
						slide.prev();
					} else {
						slide.next();
					}
					interval.play();
				}
			}
		};

		/**
		 * リンクエリア
		 */
		var linkArea = {
			init : function(){
				if($linkArea.length) {
					if($('a' , $linkArea).length) {
						$('a' , $linkArea).hover(function(){
							$("#slider-link-area li").each(function(){
								if($(this).hasClass('active')) {
									$(this).removeClass('active');
									linkArea.mouseout($("#slider-link-image "+"."+$("a" , $(this)).attr("class")));
								}
							});
							$(this).parent("li").addClass('active');
							linkArea.mousein($("#slider-link-image "+"."+$(this).attr("class")));
						},
						function(){
//							$(this).parent("li").removeClass('active');
//							linkArea.mouseout($("#slider-link-image "+"."+$(this).attr("class")));
						});
					}
/*
					if($('#slider-link-image .slider-link').length) {
						var classN = 'slider-link';
						$('#slider-link-image .slider-link').hover(function(){
							$('.'+$(this).attr('class').substring(classN.length+1) , $linkArea).parent("li").addClass('active');
							linkArea.mousein($(this));
						},function() {
							$('.'+$(this).attr('class').substring(classN.length+1) , $linkArea).parent("li").removeClass('active');
							linkArea.mouseout($(this));
						});
					}
*/
					$('#slider-container').hover(
						function(){
						},
						function(){
							$("#slider-link-area li").each(function(){
								if($(this).hasClass('active')) {
									$(this).removeClass('active');
									linkArea.mouseout($("#slider-link-image "+"."+$("a" , $(this)).attr("class")));
								}
							});
						}
					);
				}
			},
			//マウスイン
			mousein : function(obj) {
				interval.stop();
				obj.css({left:0,top:0});
				obj.show();
			},
			//マウスアウト
			mouseout : function(obj) {
				obj.hide();
				interval.play();
			}
		};

		/*
		 * 初期化
		 */
		function initialize() {
			if($targetContainer.length) {
				arrow.init();
				linkArea.init();
			}
			//オートスライダー開始
			interval.play();
		}

		//初期化
		initialize();
	});
};
