(function($){

	$.fn.topPromotion=function(options,callback){
		var settings = $.extend({
			playInterval : 8000,	//(autoPlay)スライド切替間隔
			restartTime : 1000,		//(autoPlay)pause後restartさせる間隔
			slideTime : 800,		//(autoPlay)スライドアニメーション時間
			slideTimeH : 300		//hover時スライドアニメーション時間
		},options),
		intTimer = null,			//setIntervalオブジェクト
		outTimer = null,			//setTimeoutオブジェクト
		onHover = false,			//hover中かどうか
		Prom = {
			sl:$(this),
			lists:"",
			thumb:$(this).find(".prThumbNav"),
			curImg:0,
			cntImgs:3,				//3画像固定
			//初期処理
			init : function() {
				Prom.sl.each(function(){
					Prom.lists = Prom.sl.children(".prImgLists").find("li");
					Prom.lists.css({"display":"block","opacity":0,"z-index":0});
					Prom.lists.eq(0).css({"opacity":1,"z-index":Prom.cntImgs});

					Prom.thumbNavCreate();
					
					//ADD EVENT (over PAUSE & out RESTART)
					$(Prom.lists.children("a")).hover(function(){
						Prom.lists.find("img").css({"opacity":0});
						Prom.lists.eq(Prom.curImg).find("img").css({"opacity":0.7});
						if($(Prom.sl+":animated").length==0){
							Prom.pause();
						}
					},function(){
						Prom.lists.find("img").css({"opacity":1});
						Prom.restart();
					});
				});
				Prom.autoPlay();
			},
			//スライドナビ生成
			thumbNavCreate : function() {
				var
				nav="",imgAttr=Array,i=0,sTarget="";
				if(Prom.thumb.length==0){
					if(Prom.cntImgs>1){
						Prom.sl.append("<ul class=\"prThumbNav\"></ul>");
						Prom.thumb=Prom.sl.find(".prThumbNav");
						
						for(i=0;Prom.cntImgs>i;i++){
							imgAttr=Prom.getImageAttr(Prom.lists.eq(i).find("img"));
							if(Prom.curImg==i){
								nav+="<li class=\"prThumbCur\">";
							}else{
								nav+="<li>";
							}
							if(imgAttr["href"]){
								if(imgAttr["target"]){
									sTarget = " target=\""+imgAttr["target"]+"\"";
								}else{
									sTarget = "";
								}
								nav+="<a href=\""+imgAttr["href"]+"\" "+sTarget+"><img src=\""+imgAttr["src"]+"\" alt=\""+imgAttr["alt"]+"\" /></a>";
							}else{
								nav+="<img src=\""+imgAttr["src"]+"\" alt=\""+imgAttr["alt"]+"\" />";
							}
						}
						Prom.thumb.append(nav);
						//INIT
						Prom.thumb.find("img").css({"opacity":0.3});
						Prom.thumb.find("img").eq(0).css({"opacity":1});

						//ADD EVENT (over PAUSE & out RESTART)
						Prom.thumb.find("a").hover(function(){
							var curImgX = Prom.thumb.find("a").index(this);
							onHover=true;
							Prom.pause();
							if(curImgX != Prom.curImg){
								Prom.thumbAnim(curImgX,150,150);
								Prom.pageNext(curImgX,settings.slideTimeH);
							}
						},
						function(){
							onHover=false;
							Prom.restart();
						});
					}
				}else{
					if(!onHover){	//hover中でなければ処理
						Prom.thumbAnim(Prom.curImg,400,800);
					}
				}
			},
			thumbAnim : function(page,outTime,inTime){
				nav=Prom.thumb.find("li");
				navImg=nav.filter(".prThumbCur").find("img");
				navImg.stop(false,false).animate({"opacity":0.3},outTime);
				nav.eq(page).find("img").stop(false,true).animate({"opacity":1},inTime,function(){
				});
				nav.removeClass("prThumbCur");
				nav.eq(page).addClass("prThumbCur");
			},
			//改ページ処理
			pageNext : function(page,time) {
				var
				current=Prom.lists.eq(Prom.curImg),
				next=Prom.lists.eq(page),
				thumb=Prom.sl.find(".prThumbNav"),
				pNavPrev="",pNavNext="",pNavPrevCss="",pNavNextCss="";
				Prom.curImg = page;
				if(!onHover){Prom.thumbNavCreate();}
					
				//カレント以外は一旦表示クリア
				Prom.lists.css({"opacity":1});
				next.css({"z-index":Prom.cntImgs,"opacity":0});
				current.css({"z-index":Prom.cntImgs-1,"opacity":1});
				Prom.lists.not(current).not(next).css({"z-index":1,"opacity":0});
				next.stop(true,true).animate({"opacity":1},time);
			},
			//イメージリストの属性取得
			getImageAttr : function(el){
				var src="",rtnVal=Array,i=0;
				rtnVal["alt"]=el.attr("alt");
				rtnVal["src"]="";
				rtnVal["href"]=el.parents("a").attr("href");
				rtnVal["target"]=el.parents("a").attr("target");
				
				src=el.attr("src").split("/");
				for(i=0;src.length>i;i++){
					if(src[i]){
						if(src.length==(i+1)){
							rtnVal["src"]+="/t_"+src[i];
						}else{
							rtnVal["src"]+="/"+src[i];
						}
					}
				}
				return rtnVal;
			},
			//自動再生
			autoPlay : function(){
				var page=0;
				intTimer = setInterval(function(){
					if(Prom.cntImgs==Prom.curImg+1){
						page = 0;
					}else{
						page = Prom.curImg+1;
					}
					Prom.pageNext(page,settings.slideTime);
				},settings.playInterval);
			},
			//一時停止
			pause : function(){
				clearInterval(intTimer);
				intTimer=null;
				clearTimeout(outTimer);
				outTimer=null;
			},
			//再スタート
			restart : function(){
				if(!intTimer){
					clearInterval(intTimer);
					intTimer=null;
					onHover=false;
					if(!outTimer){
						outTimer = setTimeout(function(){
							Prom.autoPlay();
							clearTimeout(outTimer);
							outTimer=null;
						},settings.restartTime);
					}
				}
			}
		}
		Prom.init();
	}
})(jQuery);

jQuery(document).ready(function($) {
	if($("#prArea").length > 0){
		$("#prArea").topPromotion();
	}
});

