(function($){

	$.fn.slide=function(options,callback){
		var settings = $.extend({
			pageNav : true,			//pageNav生成制御
			thumbNav : true,		//thumNav生成制御
			autoPlay : false,		//autoPlay設定
			playInterval : 5000,	//(autoPlay)スライド切替間隔
			restartTime : 1000,		//(autoPlay)pause後restartさせる間隔
			slideTime : 800			//スライドアニメーション時間
		},options),
		intTimer = null,			//setIntervalオブジェクト
		outTimer = null,			//setTimeoutオブジェクト
		Slide = {
			sl:$(this),
			lists:"",
			curPage:0,
			cntPages:0,
			//初期処理
			init : function() {
				Slide.sl.each(function(){
					Slide.lists = Slide.sl.children(".g_sliderList").find("li");
					Slide.cntPages = Slide.lists.length;
					if(settings.autoPlay){
						Slide.lists.css({"position":"absolute","top":0});
						Slide.lists.css({"opacity":0,"z-index":0});
						Slide.lists.eq(0).css({"opacity":1,"z-index":Slide.cntPages});
					}else{
						if($.support.opacity){
							Slide.lists.css({"display":"none","opacity":0});
							Slide.lists.eq(0).css({"display":"block","opacity":1});
						}else{
							Slide.lists.css({"display":"none"});
							Slide.lists.eq(0).css({"display":"block"});
						}
					}
					if(settings.thumbNav){Slide.thumbNavCreate();}
					if(settings.pageNav){Slide.pageNavCreate();}
					
					//スライドhoverイベント autoPlay時一時停止
					if(settings.autoPlay){
						$(Slide.lists.children("a")).hover(function(){
							//autoPlay STOP & RESTART
							if($(Slide.sl+":animated").length==0){
								//autoPlay STOP & RESTART
								if(intTimer){
									clearInterval(intTimer);
									intTimer=null;
								}
							}
						},
						function(){
							if(!intTimer){
								clearInterval(intTimer);
								intTimer=null;
								if(!outTimer){
									outTimer = setTimeout(function(){
										Slide.autoPlay();
										clearTimeout(outTimer);
										outTimer=null;
									},settings.restartTime);
								}
							}
						});
					}
				});
			},
			//ページナビ生成
			pageNavCreate : function() {
				var
				prev=Slide.sl.find(".g_sliderPageNavLeft"),
				next=Slide.sl.find(".g_sliderPageNavRight");
				//prev
				if(prev.length==0){
					Slide.sl.append("<div class=\"g_sliderPageNavLeft\"><a href=\"#"+Slide.curPage+"\" rel=\""+(parseInt(Slide.curPage)-1)+"\" title=\"prev\">前へ</a></div>");
					prev = Slide.sl.find(".g_sliderPageNavLeft");
					prev.find("a").bind("click", function(){
						if($(Slide.sl+":animated").length==0){
							Slide.pageNext($(this).attr("rel"));
						}
						return false;
					});
				}
				if(Slide.curPage==0){
					prev.css({"opacity":0.2});
					prev.find("a").css({"display":"none"});
				}else{
					prev.css({"opacity":"1"});
					prev.find("a").css({"display":"block"});
					prev.find("a").attr("href","#"+(parseInt(Slide.curPage)-2));
					prev.find("a").attr("rel",(parseInt(Slide.curPage)-1));
				}
				//next
				if(next.length==0){
					Slide.sl.append("<div class=\"g_sliderPageNavRight\"><a href=\"#"+Slide.curPage+"\" rel=\""+(parseInt(Slide.curPage)+1)+"\" title=\"next\">次へ</a></div>");
					next = Slide.sl.find(".g_sliderPageNavRight");
					next.find("a").bind("click",function(){
						if($(Slide.sl+":animated").length==0){
							Slide.pageNext($(this).attr("rel"));
						}
						return false;
					});
				}
				if(Slide.curPage==parseInt(Slide.cntPages)-1){
					next.css({"opacity":0.2});
					next.find("a").css({"display":"none"});
				}else{
					next.css({"opacity":"1"});
					next.find("a").css({"display":"block"});
					next.find("a").attr("href","#"+(parseInt(Slide.curPage)+2));
					next.find("a").attr("rel",(parseInt(Slide.curPage)+1));
				}
			},
			//スライドナビ生成
			thumbNavCreate : function() {
				var
				thumb=Slide.sl.find(".g_sliderThumbNav"),
				nav="";
				if(thumb.length==0){
					if(Slide.cntPages>1){
						Slide.sl.append("<div class=\"g_sliderThumbNav\"><ul></ul></div>");
						thumb=Slide.sl.find(".g_sliderThumbNav");
						thumb.css({"width":Slide.sl.width()+"px"});
						for(i=0;Slide.cntPages>i;i++){
							if(Slide.curPage==i){
								nav+="<li class=\"g_sliderThumbCur\"><a href=\"#"+(i+1)+"\" rel=\""+i+"\" title=\""+(i+1)+"\">"+(i+1)+"</a></li>";
							}else{
								nav+="<li><a href=\"#"+(i+1)+"\" rel=\""+i+"\" title=\""+(i+1)+"\">"+(i+1)+"</a></li>";
							}
						}
						thumb.find("ul").append(nav);
						thumb.find("ul").css({"width":parseInt(Slide.cntPages*15)+"px","margin":"0 auto"});
						Slide.sl.css({"height":parseInt(Slide.lists.height()+thumb.height())+"px"});
	
						thumb.find("a").bind("click",function(){
							if($(Slide.sl+":animated").length==0){
								//autoPlay STOP & RESTART
								if(settings.autoPlay && intTimer){
									clearInterval(intTimer);
									intTimer=null;
									outTimer = setTimeout(function(){
										Slide.autoPlay();
										clearTimeout(outTimer);
										outTimer=null;
									},settings.restartTime);
								}
								if(Slide.curPage!=parseInt($(this).attr("rel"))){
									Slide.pageNext(parseInt($(this).attr("rel")));
								}
							}
							return false;
						});
					}
				}else{
					nav=thumb.find("li");
					nav.removeClass("g_sliderThumbCur");
					nav.eq(Slide.curPage).addClass("g_sliderThumbCur");
				}
			},
			//改ページ処理
			pageNext : function(page) {
				var
				current=Slide.lists.eq(Slide.curPage),
				next=Slide.lists.eq(page),
				thumb=Slide.sl.find(".g_sliderThumbNav"),
				pNavPrev="",pNavNext="",pNavPrevCss="",pNavNextCss="";
				Slide.curPage = page;
				if(settings.thumbNav){Slide.thumbNavCreate();}//サムネイルナビ生成

				if(settings.autoPlay){	//autoPLayはクロスフェード
					//カレント以外は一旦表示クリア
					Slide.lists.not(current).css({"opacity":0});
					next.css({"opacity":1});
					current.not(":animated").animate({"opacity":0},settings.slideTime,function(){
						current.css({"z-index":0,"opacity":0});
						next.css({"z-index":Slide.cntPages,"opacity":1});
						if(next.height()!=current.height()){
							Slide.sl.animate({"height":next.height()+thumb.height()+"px"});
						}
					});
				}else{
					if($.support.opacity){
						//カレント以外は一旦表示クリア
						Slide.lists.not(current).css({"display":"none","opacity":0});
						current.not(":animated").animate({"opacity":0},settings.slideTime,function(){
//						current.not(":animated").animate({"opacity":0},settings.slideTime,function(){
							current.css({"display":"none"});
							next.css({"display":"block"});
							next.not(":animated").animate({"opacity":1},settings.slideTime);
							if(next.height()!=current.height()){
								Slide.sl.animate({"height":next.height()+thumb.height()+"px"});
							}
						});
					}else{
						//カレント以外は一旦表示クリア
						Slide.lists.not(current).css({"display":"none"});
						current.css({"display":"none"});
						next.css({"display":"block"});
						if(next.height()!=current.height()){
							Slide.sl.animate({"height":next.height()+thumb.height()+"px"});
						}
					}
				}
				if(settings.pageNav){Slide.pageNavCreate();}//ページナビ生成
			},
			autoPlay : function(){
				var page=0;
				intTimer = setInterval(function(){
					if(Slide.cntPages==Slide.curPage+1){
						page = 0;
					}else{
						page = Slide.curPage+1;
					}
					Slide.pageNext(page);
				},settings.playInterval);
			}
		}
		Slide.init();
		if(settings.autoPlay && Slide.cntPages>1){
			Slide.autoPlay();
		}

	}
})(jQuery);

jQuery(document).ready(function($) {
	if($(".g_sliderArea").length > 0){
		$(".g_sliderArea").each(function(){
			$(this).slide({slideTime:400});
		});
	}

	if($(".g_sliderAreaTop").length > 0){
		$(".g_sliderAreaTop").each(function(){
			$(this).slide({pageNav:false,autoPlay:true,playInterval:7000,slideTime:900});
		});
	}
});

