$(function() {	
	/*======================================== クラスの宣言*/
	var ClassGlobal = function(){
		this.page=0;
		this.pageWidth=1000;
		this.slideSpeed=500;
		this.pageNameList =["top","concept","addlib","vm"]; 
		this.pageColorList =["#345","#0044aa","#800","#927645"]; //564   //a18555:visuamusio
		this.pageTotal=this.pageNameList.length-1;
		this.pageArray=new Array(this.pageTotal);
		this.thumbX=0;
		this.thumbY=0;
		this.firstFlag=true;
		
			var date = new Date();
			this.cashclear="?"+date.getFullYear()+(date.getMonth()+1)+date.getDate()+date.getDate()+date.getHours()+date.getMinutes()+date.getSeconds();

		//URLのクエリーの取得
		this.arg=$.address.queryString().split('-');
		if(this.arg[0])this.page=this.arg[0];
		this.lang=this.arg[1];
		if(this.lang!="jp" && this.lang!="en")this.lang="en";
	}
	
	var ClassPage = function(){
		this.title;
		this.loadFlag=false;
		this.focus=false;
		this.color;
	}
	// ユーザ言語環境のチェック ... add  by Aoki 
	function browserLanguage() {
 		try {return (navigator.browserLanguage || navigator.language || navigator.userLanguage).substr(0,2)}
  		catch(e) {return undefined;}
	}
	var internalCall = false; // 内部クリックかどうかのフラグ ... add  by Aoki 
	
	/*======================================== 読み込まれた直後の処理*/
	var g = new ClassGlobal();
	initClass();
		
	// ブラウザの言語環境によって言語を切り替えます　add by Aoki
	g.lang = (browserLanguage() == "ja")? "jp":"en"; 
	languageChange(g.lang);
	var currentLang = g.lang; // 現在表示中の言語
	
	endDialog();
	initPages();
	adjustLayout();
	adjustFade();
	
	$(window).resize(
		function () {
			adjustLayout();
			adjustFade();
			
			browserCheck();
		}
	);
	
	$(window).scroll(
		function () {
			//adjustLayout();
			adjustFade();
		}
	);
		
	
	/*======================================== レイアウトの強制変更*/
	function adjustLayout(){
		var w=$(window).width();
		var h=$(window).height();
		var ww=$(document).width();
		var hh=$(document).height();
		var cw=800;
		var offsetLeft=0;
		if(w<960)offsetLeft=(960-w)/2;
		$("#appart").css("left",w/2-cw/2+offsetLeft);
		$("#next").css("left",w/2+cw/2+20+offsetLeft);
		$("#prev").css("left",w/2-cw/2-40-20+offsetLeft);
		$("#next").css("top",h/2-50);
		$("#prev").css("top",h/2-50);
		$("#trim").css("top",60);
		$("#trim").css("left",w/2-cw/2+offsetLeft);
		$("#lang").css("left",w/2+cw/2-140+offsetLeft);
		
/*
		$("#nav").css("left",w/2-((g.pageTotal+1)*50)/2-20+offsetLeft);
		$("#navbg").css("left",w/2-((g.pageTotal+1)*50)/2-20+offsetLeft);
*/
		
		$("#nav").css("left",w/2-cw/2+offsetLeft);
		$("#navbg").css("left",w/2-cw/2+offsetLeft);


		$("#footer").css("left",w/2-690/2+offsetLeft);
		$("#dialog").css("left",w/2-cw/2+offsetLeft);
		$("#dialog").css("top",h/2-300);
		
		
	}

	function adjustFade(){
		var w=$(window).width();
		var h=$(window).height();
/*
		var ww=$(document).width();
		var hh=$(document).height();
*/
		var ww=$("html").width();
		var hh=$(document).height();

		$("#grad").css("width",ww);
		$("#fade").css("width",ww);
		$("#fade").css("height",hh);
		
		
	}
	
	
	/*======================================== クリックイベント処理*/
	/*=============== 言語ボタン*/
	$("#jp").click(function(){
		$.address.value("?"+g.page+"-"+"jp");
	});	

	$("#en").click(function(){
		$.address.value("?"+g.page+"-"+"en");
	});	
	
	/*=============== 次のページ*/
	$("#next").click(function(){
		internalCall = true;
		g.page++;
		$.address.value("?"+g.page+"-"+g.lang);
	});	
	
	/*=============== 前のページ*/
	$("#prev").click(function(){
		internalCall = true;
		g.page--;
		$.address.value("?"+g.page+"-"+g.lang);
	});	
	/*=============== AppArtロゴ*/
	$("#appart").click(function(){
		if(g.page>0){
		internalCall = true;
		g.page=0;
		$.address.value("?"+g.page+"-"+g.lang);
		}
	});	

	/*=============== ナビゲーション*/
	$(".navItem").live("click", function(){
  		var i = $(".navItem").index(this);//ファイルの中で何番目の.navItemかを取得
  		if(i!=g.page){
  			internalCall = true;
			g.page=i;
			$.address.value("?"+g.page+"-"+g.lang);
		}
	});	


	/*=============== サムネール*/
	$(".thumb").live("click", function(){
		var url=$(this).attr("rel")+g.cashclear;
		if(url){
			g.thumbX=$(this).offset().left+70;
			g.thumbY=$(this).offset().top+40;
			setDialog();
			beginDialog(url);
		}
	});	
	
	$("#close").live("click", function(){
		endDialog()
	});	

	$("#fade").live("click", function(){
		endDialog()
	});	
	
	
	/*=============== ギャラリー*/
	$(".galleryitem").live("click", function(){
		var tar="#"+$(this).attr("alt");
		var url=$(this).attr("url");
		
		var top=$(tar).offset().top;
		var left=$(tar).offset().left;
		var w=$(tar).width();
		var h=$(tar).height();
		
		$("#dialog").css("top",top);
		$("#dialog").css("left",left);
		$("#dialog").css("width",w);
		$("#dialog").css("height",h);
		
		$("#dialog").fadeOut(0,function(){
			$("#dialog").fadeIn(100,function(){
				loadGallery(tar,url);	
			});
		});
		
		
	});	
	
		
	function loadGallery(tar,url){
		$(tar).load(url,function(){
			endGallery();
		});
	}
	
	function endGallery(){
		$("#dialog").fadeOut(300);
	}
	
	/*============================== Hover処理*/
	
	$(".frame").live("mouseover", function(){
		$(this).css("backgroundPosition","0 130px");
	});	
	$(".frame").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	

	$("#appart").live("mouseover", function(){
		$(this).css("backgroundPosition","0 50px");
	});	
	$("#appart").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	
	
	$("#tw").live("mouseover", function(){
		$(this).css("backgroundPosition","0 -50px");
	});	

	$("#tw").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	

	
	$("#mail").live("mouseover", function(){
		$(this).css("backgroundPosition","0 -50px");
	});	

	$("#mail").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	


	$("#wow").live("mouseover", function(){
		$(this).css("backgroundPosition","0 40px");
	});	
	$("#wow").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	
	
	$("#wowlab").live("mouseover", function(){
		$(this).css("backgroundPosition","0 40px");
	});	
	$("#wowlab").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	
	
	
	$("#next").live("mouseover", function(){
		$(this).css("backgroundPosition","0 100px");
	});	
	$("#next").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	

	$("#prev").live("mouseover", function(){
		$(this).css("backgroundPosition","0 100px");
	});	
	$("#prev").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	

	$("#twitter-jp").live("mouseover", function(){
		$(this).css("backgroundPosition","0 40px");
	});	
	$("#twitter-jp").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	

	$("#twitter-en").live("mouseover", function(){
		$(this).css("backgroundPosition","0 40px");
	});	
	$("#twitter-en").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});
	
	$(".galleryitem").live("mouseover", function(){
		$(this).css("opacity",".5");
	});	

	$(".galleryitem").live("mouseout", function(){
		$(this).css("opacity","1");
	});	
	

	$(".appstore").live("mouseover", function(){
		$(this).css("backgroundPosition","0 -80px");
	});	
	
	$(".appstore").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	
	
	
	$(".twitter").live("mouseover", function(){
		$(this).css("backgroundPosition","0 -80px");
	});	
	
	$(".twitter").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	
	
	$(".press_high").live("mouseover", function(){
		$(this).css("backgroundPosition","0 -80px");
	});	
	
	$(".press_high").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	
	

	$(".press_low").live("mouseover", function(){
		$(this).css("backgroundPosition","0 -80px");
	});	
	
	$(".press_low").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	
	
	//VM
	$("#vmTwitter-jp").live("mouseover", function(){
		$(this).css("backgroundPosition","0 40px");
	});	
	$("#vmTwitter-jp").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});	

	$("#vmTwitter-en").live("mouseover", function(){
		$(this).css("backgroundPosition","0 40px");
	});	
	$("#vmTwitter-en").live("mouseout", function(){
		$(this).css("backgroundPosition","0 0px");
	});


	/*=============== ダイアログ*/
	function setDialog(){
		$("#dialog").css("top",g.thumbY);
		$("#dialog").css("left",g.thumbX);
	}
	

	function beginDialog(url){
		var w=$(window).width();
		var h=$(window).height();
		var offset=(h-600)/2;
		if(offset<30)offset=30;
		var s=$(window).scrollTop()+offset;
		
		
		$("#fade").fadeIn(0);
		$("#dialogLoading").show();
		
		$("#dialog").animate({width:800,height:600,top:s,left:w/2-400}, 400,'easeInOutQuad',function(){
		$("#close").show();
			loadDialog(url);
		});
	}

          
	function loadDialog(url){
			$("#dialogContents").load(url,function(){
				$("#dialogLoading").hide();
			});
	
	}
	
	function endDialog(){
		var w=$(window).width();
		$("#close").hide();
		$("#fade").fadeOut(0);
		$("#dialogContents").text("");
		$("#dialog").animate({width:0,height:0,top:g.thumbY,left:g.thumbX}, 400,'easeInOutQuad',function(){

		});

	}


	/*=============== 配列の数に合わせてPageクラスを追加*/
	function initClass(){
		for(i=0;i<=g.pageTotal;i++){
			g.pageArray[i]=new ClassPage();
			g.pageArray[i].title=g.pageNameList[i];
			g.pageArray[i].color=g.pageColorList[i];
		}
	}
	
	/*=============== 配列の数に合わせてSlideボックスを追加*/
	function initPages(){
		$("#nav").text("");
		$("#slide").text("");
		var h=0;
		
		for(i=0;i<=g.pageTotal;i++){
			g.pageArray[i].loadFlag=false;
			var n=i;
			var divname="nav-"+g.pageArray[i].title;
			$("#nav").append("<div id='"+divname+"' class='navItem'></div>");
			$("#slide").append("<div id='page-"+n+"' class='pageItem'><div class='loading'><img src='img/master/loading.gif'></div></div>");
		}				
		
		$("#nav").css("width",(g.pageTotal+1)*80+20);
		
		if(g.pageTotal<2)w=160;
		else w=160+(g.pageTotal-1)*40-(40/2);
		
		$(".nav-m").css("width",w);
		
		//pageChange(0);
		changeNavItem();
		arrowKeyVisible(0);
		//$.address.value("?"+g.page+"-"+g.lang); 
	}
	
	
	
	/*=============== 矢印ボタンが押されたとき*/
	function pageChange(speed){
		
		if(g.page<0)g.page=0;
		if(g.page>=g.pageTotal)g.page=g.pageTotal;
		changeNavItem();
		$("#footer").fadeOut(speed);
		pageSlide(speed);
		navAdjust();
	}
	
	
	
	/*=============== ナビゲーションの画像のセット*/
	function navAdjust(){
		for(i=0;i<=g.pageTotal;i++){
			var ext;
			if(i==g.page)offset="0 0";
			else offset="0 50px";
			
			var divname="nav-"+g.pageArray[i].title;
			var url="url(img/nav/"+g.pageArray[i].title+".png"+")";
			$("#"+divname).css("backgroundImage",url);
			
			if(i==2)$("#"+divname).css("margin-left","5px");
			if(i>1)$("#"+divname).css("width","30px");

		}
	}
	
	
	/*=============== ナビゲーションフォーカスの状態を変更*/
	function changeNavItem(){
		var offset=0;
		if(g.page>1)offset=(g.page-2)*30+160+5;
		else offset=g.page*80;
		
		
		
		$("#navfocus").css("left",offset);
	
		if(g.page<2){
			$("#navfocus").attr("class","navfocusbig");
		}else{
			$("#navfocus").attr("class","navfocusMini");
		}
		
	}
	

	/*=============== 矢印の表示の変更*/
	function arrowKeyVisible(speed){
		if(g.page==0)$("#prev").fadeOut(speed);
		else $("#prev").fadeIn(speed);
		if(g.page==g.pageTotal)$("#next").fadeOut(speed);
		else $("#next").fadeIn(speed);
	}
	
	/*=============== ページのスライドアニメーション*/
	function pageSlide(speed){
		$("#slide").animate({marginLeft:(g.page)*-g.pageWidth}, speed,'easeInOutQuad',function(){
			pageLoad(speed);
		});
	}	
	
	/*=============== ページの読み込み*/
	function pageLoad(speed){
		if(! g.pageArray[g.page].loadFlag){
			var url="page/"+g.lang+"/"+g.pageArray[g.page].title+".html"+g.cashclear;
			$("#page-"+g.page).load(url,function(){
				for(i=0;i<=g.pageTotal;i++){
					g.pageArray[g.page].focus=false;
				}
				g.pageArray[g.page].loadFlag=true;
				g.pageArray[g.page].focus=true;
				changePageHeight(speed);
				bgColorChange(speed+1);
				if(g.firstFlag)wrapperVisible();
			});
		}else{
			changePageHeight(speed);
			bgColorChange(speed+1);
		}
	}	


	function wrapperVisible(){
		g.firstFlag=false;
		$("#wrapper").css("visibility","visible");
	}
	

	/*=============== 背景色のアニメーション*/
	function bgColorChange(speed){
		$("body").animate( { backgroundColor: g.pageArray[g.page].color }, 1000);
	}
	
	/*=============== 読み込んだデータに応じてボックスのサイズ変更*/
	function changePageHeight(speed){
		var h=$("#page-"+g.page).children("div").height()+60;
		//log(h);
		$("#trim").css("height",h);
		$("#slide").css("height",h);

		var winH=$(window).height();
		var trimH=$("#trim").height();
		if(trimH<winH-60){
			$("#trim").css("height",winH-60);
			$("#slide").css("height",winH-60);
		}
		var y=h;
		if(y<550)y=550;
		$("#footer").css("top",y);

		$("#footer").fadeIn(speed);
	}
	
	
	/*=============== 言語の変更*/
	function languageChange(lang){

		g.lang=lang;
		
		if(lang=="jp"){
			$("#jp").css("backgroundPosition","0 0");
			$("#en").css("backgroundPosition","100% 100%");
			$("#tw").attr("href","http://www.twitter.com/wowdev");
			
		}else{
			$("#jp").css("backgroundPosition","0 100%");
			$("#en").css("backgroundPosition","100% 0");
			$("#tw").attr("href","http://www.twitter.com/wowdev_e");
		}
		
		
	}

	/*=============== デバッグ用*/
	function log(s){
		//$("#debug").text(s);
	}

	// add by aoki
	/*=============== URL変更イベント*/
	$.address.change(function(event) {
    		var index;
    		var lang;
		if(event.value!="/"){
			var tmp=event.value.split('/?');
			var arg=tmp[1].split('-');
    		index=arg[0];
    		lang=arg[1];
		}else{
    		index = 0;
    		lang = currentLang;
  		}
  		
        
        // 言語の切り替え
        if(lang != currentLang){
			   languageChange(lang);
			   currentLang = lang;
			   initPages();
        }
        g.page=index;
        pageChange(g.slideSpeed);
        arrowKeyVisible(g.slideSpeed);
	});
	

	
});


