/*!
 * slideViewer 1.2
 * Examples and documentation at: 
 * http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html
 * 2007-2010 Gian Carlo Mingati
 * Version: 1.2.3 (9-JULY-2010)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Requires:
 * jQuery v1.4.1 or later, jquery.easing.1.2
 * 
 */
jQuery(function(){
   jQuery("div.svw").prepend("<img src='./js/jquery/spinner.gif' class='ldrgif' alt='loading...'/ >"); 
});

var animatetime = 5.5;//アニメーション実行時間(秒指定)
var pause = 10;//アニメーションの静止時間（秒指定）
var j = 0;
var crli= 0;
var counter = 0;
var clicked = false;
var quantofamo = 0;
var timerId;

//slideView関数
jQuery.fn.slideView = 
function(settings) {
	settings = jQuery.extend({
		easeFunc: "easeInOutExpo",//アニメーションの効果
		easeTime: animatetime*1000,
		uiBefore: false,
		toolTip: false,
		ttOpacity: 0.9
	}, settings);
	
	return this.each(
		function(){
			var container = jQuery(this);
			container.find("img.ldrgif").remove();
			container.removeClass("svw").addClass("stripViewer");
			//画像、liのサイズ取得
			var pictWidth = container.find("img").width();
			var pictHeight = container.find("img").height();
			var pictEls = container.find("li").size();
			//liの横サイズの合計を計算
			var stripViewerWidth = pictWidth*pictEls;
			//ulの横サイズを上記liの合計サイズより設定
			container.find("ul").css("width" , stripViewerWidth);
			container.css("width" , pictWidth);
			container.css("height" , pictHeight);
			container.each(
				function(i) {
				(!settings.uiBefore) ? jQuery(this).after("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>") : jQuery(this).before("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>");
					jQuery(this).find("li").each(
						function(n) {
							jQuery("div#stripTransmitter" + j + " ul").append("<li><a title='" + jQuery(this).find("img").attr("alt") + "' href='#'><\/a><\/li>");
						}
					);
					jQuery("div#stripTransmitter" + j + " a").each(
						function(z) {
							jQuery(this).bind("click", 
								function(){		
									jQuery(this).addClass("current").parent().parent().find("a").not(jQuery(this)).removeClass("current");
									var cnt = -(pictWidth*z);
									crli = z;
									clicked = true;
									clearTimeout(timerId);
									timerId = setTimeout(imageTimer,10000);
									container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc);
									return false;
								}
							);
						}
					);
					//ボタンをクリックした時の処理を組み込む
					container.bind("click", 
						function(e){
							var ui = (!settings.uiBefore) ? jQuery(this).next().find("a.current") : jQuery(this).prev().find("a.current");
							var bTotal = parseFloat(jQuery(this).css('borderLeftWidth').replace("px", "")) +  parseFloat(jQuery(this).css('borderRightWidth').replace("px", ""));
							var dOs = jQuery(this).offset();
							var zeroLeft = (bTotal/2 + pictWidth) - (e.pageX - dOs.left);
							if(zeroLeft >= pictWidth/2) { 
								var uiprev = ui.parent().prev().find("a");	
								(jQuery(uiprev).length != 0)? uiprev.trigger("click") : ui.parent().parent().find("a:last").trigger("click");							
							} 
							else {
								var uinext = ui.parent().next().find("a");
							  (jQuery(uinext).length != 0)? uinext.trigger("click") : ui.parent().parent().find("a:first").trigger("click");
							}
						}
					);

					jQuery("div#stripTransmitter" + j).css("width" , pictWidth);
					jQuery("div#stripTransmitter" + j + " a:first").addClass("current");
					jQuery('body').append('<div class="tooltip" style="display:none;"><\/div>');
					
					//toolTip機能
					if(settings.toolTip){
						var aref = jQuery("div#stripTransmitter" + j + " a");
						aref.live('mousemove', 
							function(e) {
								var att = jQuery(this).attr('title');
								posX=e.pageX+10;
								posY=e.pageY+10;
								jQuery('.tooltip').html(att).css({'position': 'absolute', 'top': posY+'px', 'left': posX+'px', 'display': 'block', 'opacity': settings.ttOpacity});
							}
						);
						aref.live('mouseout', 
							function() {
								jQuery('.tooltip').hide();
							}
						);				
					}
				}
			);
			j++;
			
			//初回のアニメーションタイマーを実行
			imageTimer();
			//アニメーションタイマー
			function imageTimer(){
				//クリックされた場合、そこを起点にする
				if(clicked) {
					counter = ((crli+1) % pictEls);
					clicked = false;
				}
				//アニメーション実行
				container.find("ul").queue([]).animate({ left: -pictWidth*counter}, settings.easeTime, settings.easeFunc);
				//現在の画像に合わせて、ボタンのclassを書き換え
				j$("div#stripTransmitter0 li a:not(eq("+ counter + "))").removeClass("current");
				j$("div#stripTransmitter0 li a:eq(" + counter + ")").addClass("current");
				//カウンターをインクリメント
				++counter;
				//ローテーションさせる画像の枚数を指定して、カウンターをゼロへ戻す
				if(counter%pictEls == 0) counter = 0;
				//タイマー設定。再帰的にローテーションを実装
				timerId = setTimeout(imageTimer,pause*1000);
			}
		}
	);
};


