//*********************************
//ヘッドライン
//jquery.timers.jsが必須
//スライドの場合の動きを「linear」「swing」以外とする場合は
//jquery.easing.jsが必須
//スライドの場合の動きを確認するサイト
//http://semooh.jp/jquery/cont/doc/easing/
//*********************************
(function($){
$.fn.arvHeadLine = function(option) {
	//*********************************************
	// オプションの初期値を設定
	//*********************************************
	var defaults = {
		'headLineCnt'    :0,//開始位置
		'headLineChangeType'    :"slideToggle",//切り替わりかた(fadeTo:フェードイン/アウト slideToggle:スライド)
		'headLineSlideType'    :"linear",//スライドの場合の動き(linear,swing,他はjquery.easing.jsに依存)
		'headLineChangeSpeed'    :800,//切り替わっていく速度(ミリ秒)
		'headLineChangeTime'    :5000,//切り替わる時間(ミリ秒)
		'headLineTarget'    :null,//切り替えるターゲットオブジェクト
		'headLineChangeEvent'    :null,//切り替えるタイミングで実行されるイベント
		'headLineTargetBoxWidth'    :null,//ヘッドラインの外枠の幅を取得
		'headLineChangeOutType' :this.headLineChangeType,//消えていく方法(fadeTo:フェードイン/アウト slideToggle:スライド)
		'headLineInitCallback':null,
		'clickEventFlg':false
	};

	//*********************************************
	// オプションの初期値を設定
	//*********************************************
	defaults = $.extend(defaults,{'headLineTarget':this.find("li"),'headLineTargetBoxWidth':this.width()+"px"});
	this.setting = $.extend(defaults,option);

	//*********************************************
	// プラグイン処理 ここから
	//*********************************************
	//初期設定
	var initFlg = true;
	if (this.setting.headLineInitCallback != null && initFlg) this.setting.headLineInitCallback(this);initFlg = false;
	this.setting.headLineTarget.hide();
	if(this.setting.headLineChangeType == "fadeTo"){
		this.css("overflow","hidden");
	}else if(this.setting.headLineChangeType == "slideToggle"){
		this.css("overflow","hidden");
		this.setting.headLineTarget.css("position","relative");
		this.setting.headLineTarget.css("left",this.setting.headLineTargetBoxWidth);
	}else{
	}
	
	//初めのヘッドライン表示
	if(this.setting.headLineChangeType == "fadeTo"){
		this.setting.headLineTarget.eq(this.setting.headLineCnt).fadeIn(this.setting.headLineChangeSpeed);
	}else if(this.setting.headLineChangeType == "slideToggle"){
		this.setting.headLineTarget.eq(this.setting.headLineCnt).show();
		this.setting.headLineTarget.eq(this.setting.headLineCnt).animate({left:"0px"},this.setting.headLineChangeSpeed);
	}else{
		this.setting.headLineTarget.eq(this.setting.headLineCnt).fadeIn(this.setting.headLineChangeSpeed);
	}
	
	if(this.setting.headLineChangeEvent != null){
		//イベントを実行
		this.setting.headLineChangeEvent();
	}
	
	//それ以降のヘッドライン表示
	var self = this;
	this.setting.headLineTarget.eq(this.setting.headLineCnt).everyTime(this.setting.headLineChangeTime,"controlled",function(){_headLine(self.setting.headLineCnt + 1);return;});
	
	//=============================================
	// 北海道人用に決め打ち　改善の余地アリ
	//=============================================
	$("#tokusyu-list li a").click(function(){
		if(self.setting.clickEventFlg){
			self.setting.headLineTarget.eq(self.setting.headLineCnt).stopTime("controlled");
			var cnt = $("#tokusyu-list li a").index(this);
			_headLine(cnt);
			$("#tokusyu-list li").removeClass("colorOn");
			$("#tokusyu-list li:eq(" + cnt + ")").addClass("colorOn");
			self.setting.headLineTarget.eq(self.setting.headLineCnt).everyTime(self.setting.headLineChangeTime,"controlled",function(){_headLine(self.setting.headLineCnt + 1);return;});
		}
		return false;
	});
	//=============================================
	// 北海道人用に決め打ち　ここまで
	//=============================================
	//*********************************************
	// プラグイン処理 ここまで
	//*********************************************

	//*********************************************
	// プラグインで使用する内部メソッド ここから
	//*********************************************
	var _headLine = function(count) {
		if(count > (self.setting.headLineTarget.length - 1)) count = 0;
		var beforeCount = self.setting.headLineCnt;
		if(self.setting.headLineChangeOutType == "fadeTo"){
			self.setting.headLineTarget.eq(beforeCount).fadeOut(self.setting.headLineChangeSpeed,function(){
				if(self.setting.headLineChangeType == "fadeTo"){
					self.setting.headLineTarget.eq(count).fadeIn(self.setting.headLineChangeSpeed);
				}else if(self.setting.headLineChangeType == "slideToggle"){
					self.setting.headLineTarget.eq(count).css("left",self.setting.headLineTargetBoxWidth);
					self.setting.headLineTarget.eq(count).show();
					self.setting.headLineTarget.eq(count).animate({left:"0px"},self.setting.headLineChangeSpeed,self.setting.headLineSlideType);
				}else{
					self.setting.headLineTarget.eq(count).fadeIn(self.setting.headLineChangeSpeed);
				}
			});
		}else if(self.setting.headLineChangeOutType == "slideToggle"){
			self.setting.headLineTarget.eq(beforeCount).animate({left:"-"+self.setting.headLineTargetBoxWidth},self.setting.headLineChangeSpeed,self.setting.headLineSlideType,function(){
				self.setting.headLineTarget.eq(beforeCount).hide();
				if(self.setting.headLineChangeType == "fadeTo"){
					self.setting.headLineTarget.eq(count).fadeIn(self.setting.headLineChangeSpeed);
				}else if(self.setting.headLineChangeType == "slideToggle"){
					self.setting.headLineTarget.eq(count).css("left",self.setting.headLineTargetBoxWidth);
					self.setting.headLineTarget.eq(count).show();
					self.setting.headLineTarget.eq(count).animate({left:"0px"},self.setting.headLineChangeSpeed,self.setting.headLineSlideType);
				}else{
					self.setting.headLineTarget.eq(count).fadeIn(self.setting.headLineChangeSpeed);
				}
			});
		}else{
			self.setting.headLineTarget.eq(beforeCount).fadeOut(self.setting.headLineChangeSpeed,function(){
				self.setting.headLineTarget.eq(count).fadeIn(self.setting.headLineChangeSpeed);
			});
		}
		
		if(self.setting.headLineChangeEvent != null){
			//イベントを実行
			self.setting.headLineChangeEvent();
		}
		
		self.setting.headLineCnt = count;
		return;
	};
	//*********************************************
	// プラグインで使用する内部メソッド ここまで
	//*********************************************

	// メソッドチェーン用
	return this;
};




//$.arvHeadLineSetCnt = function(Cnt) {
//	this.arvHeadLine.this.setting.headLineTarget.eq(this.arvHeadLine.this.setting.headLineCnt).stopTime("controlled");
//	$.fn.arvHeadLine._headLine(Cnt);
//	$.fn.arvHeadLine.this.setting.headLineTarget.eq($.fn.arvHeadLine.this.setting.headLineCnt).everyTime($.fn.arvHeadLine.this.setting.headLineChangeTime,"controlled",function(){$.fn.arvHeadLine._headLine($.fn.arvHeadLine.this.setting.headLineCnt + 1);return;});
//	
//	// メソッドチェーン用
//	return this;
//};


})(jQuery);

