
//使い方
/*
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js"></script>
<script type="text/javascript" charset="utf-8" src="./js/slideUL.js"></script>
<script type="text/javascript">
//第1引数:スライドさせるULのID, 第2引数:自動スライドさせる間隔（秒）※0にすると自動スライドしない ※2より大きい数を指定してください
slideUL("slideUL",4);
</script>
*/
//ナビゲーションボタンがクリックされるとクラスに「selected_IDの文字」が追加されます。

////////////////////////////////////////////////////////////////////
// 設定
////////////////////////////////////////////////////////////////////
//移動スピード
var moveSpeed=2000;
//何かボタンを押してもタイマーを継続して使用する場合は0。使用しない場合は1。
var timerType=1;
////////////////////////////////////////////////////////////////////
// ↑設定ここまで。以下は編集不可。
////////////////////////////////////////////////////////////////////

var nowNo={};
var divBoxWidth={};
var timerId={};
var timerInterval={};
var totalNo={};
function slideUL(idStr,timerSec){
	//自動的に移動させる間隔
	timerInterval[idStr]=1000*~~timerSec;//1000=1秒 
	//
	//#slideULの横幅
	var slideULWidth=$("#"+idStr).css("width").replace(/px/ig, '');
	//liの数
	totalNo[idStr]=$("#"+idStr).children().size();
	//liの横幅を求める
	divBoxWidth[idStr]=slideULWidth / totalNo[idStr];
	
	nowNo[idStr]=1;
	if(timerInterval[idStr]>moveSpeed){
		timerId[idStr] = setTimeout("autoMove('" + idStr + "','" + nowNo[idStr] + "')",timerInterval[idStr]);
	}
}
function autoMove(idStr,nowNum){
	totalNo[idStr]=~~totalNo[idStr];
	nowNo[idStr]=~~nowNum;
	$(".selected_"+idStr).removeClass("selected_"+idStr);
	//キューに何も入ってない状態のとき実行
	if($("#"+idStr).queue().length==0){
		if(nowNo[idStr]>=totalNo[idStr]){
			nowNo[idStr]=0;
		}
		var x = -1*nowNo[idStr]*divBoxWidth[idStr];
		nowNo[idStr]++;
		$("#"+idStr).animate({
			left: x
		}, moveSpeed, function() {
			$(".selected_"+idStr).removeClass("selected_"+idStr);
			$("[rel='slideUL:"+idStr+":"+nowNo[idStr]+"']").addClass("selected_"+idStr);
		});
		if(timerInterval[idStr]>moveSpeed){
				clearTimeout(timerId[idStr]);
				timerId[idStr] = setTimeout("autoMove('" + idStr + "','" + nowNo[idStr] + "')",timerInterval[idStr]);
		}
	}
}

//ナビボタンを押したときの処理
$("[rel^='slideUL']").live("click",function(){
	var classText=$(this).attr('class');
	if(!classText.match(/selected/)){
		//
		var relText=$(this).attr('rel');
		var naviData=relText.split(':');
		//class Selectedをクリア
		$(".selected_"+naviData[1]).removeClass("selected_"+naviData[1]);
		//キューをクリア
		$("#"+naviData[1]).clearQueue();
		
		if(naviData[2] == 'Next'){
			//Nextの処理
			autoMove(naviData[1],nowNo[naviData[1]],timerInterval[naviData[1]]);

			if(timerInterval[naviData[1]]>moveSpeed){
				if(timerType==1){
					//タイマーをクリア
					clearTimeout(timerId[naviData[1]]);
				}else{
					//タイマーをクリアして再度セット
					clearTimeout(timerId[naviData[1]]);
					timerId[naviData[1]] = setTimeout("autoMove('" + naviData[1] + "','" + nowNo[naviData[1]] + "')",timerInterval[naviData[1]]);
				}
			}
		}else if(naviData[2] == 'Prev'){
			//Prevの処理
			if(nowNo[naviData[1]]<=1){
				nowNo[naviData[1]]=totalNo[naviData[1]]-1;
			}else{
				nowNo[naviData[1]]=nowNo[naviData[1]]-2;
			}
			autoMove(naviData[1],nowNo[naviData[1]],timerInterval[naviData[1]]);

			if(timerInterval[naviData[1]]>moveSpeed){
				if(timerType==1){
					//タイマーをクリア
					clearTimeout(timerId[naviData[1]]);
				}else{
					//タイマーをクリアして再度セット
					clearTimeout(timerId[naviData[1]]);
					timerId[naviData[1]] = setTimeout("autoMove('" + naviData[1] + "','" + nowNo[naviData[1]] + "')",timerInterval[naviData[1]]);
				}
			}
		
		}else{
			//ナビボタンを押したとき
			if(nowNo[naviData[1]]!=naviData[2]){
				nowNo[naviData[1]]=naviData[2];
				naviData[2]--;
				var x = -1*naviData[2]*divBoxWidth[naviData[1]] + 'px';
				$("#"+naviData[1]).animate({
					left: x
				}, moveSpeed, function() {
		
					$(".selected_"+naviData[1]).removeClass("selected_"+naviData[1]);
					$("[rel='slideUL:"+naviData[1]+":"+nowNo[naviData[1]]+"']").addClass("selected_"+naviData[1]);
					// Animation complete.
				});
			}
			if(timerInterval[naviData[1]]>moveSpeed){
				if(timerType==1){
					//タイマーをクリア
					clearTimeout(timerId[naviData[1]]);
				}else{
					//タイマーをクリアして再度セット
					clearTimeout(timerId[naviData[1]]);
					timerId[naviData[1]] = setTimeout("autoMove('" + naviData[1] + "','" + nowNo[naviData[1]] + "')",timerInterval[naviData[1]]);
				}
			}
		}
	}
	return false;
});
//prevボタンを押したときの処理
$("[rel='slideULPrev']").live("click",function(){
	//キューをクリア
	$("#"+idStr).clearQueue();
	nowNo--;
	if(nowNo<=0){
		nowNo=totalNo;
	}
	var x = -1*(nowNo-1)*divBoxWidth;
	$("#"+idStr).animate({
		left: x
	}, moveSpeed, function() {
		// Animation complete.
	});
});
// yamastar slideUL.js

