/**
 * @author os
 */
var tw_slide;//コンテンツエリアスライド用tween
var content_height = 0;//コンテンツ実height

var current_content;
var current_id;
var top_page;

var CONTENT_OFFSET = 150;


function switchContent (id){
	
	this.createContent = function(){

		//wrapper
		var dom_wrapper = document.createElement("div");
		dom_wrapper.id = "wrapper";
		dom_wrapper.style.top = getDispSize().height+"px";//画面フルサイズにしておく
		document.body.appendChild(dom_wrapper);
		
		//globalmenu wrapper
		var globalmenu_wrapper = document.createElement("div");
		globalmenu_wrapper.id = "global-menu-wrapper";
		dom_wrapper.appendChild(globalmenu_wrapper);
		
		//global menuを配置
		globalmenu_wrapper.appendChild(globalMenu());
		
		//content_wrapper
		var content_wrapper = document.createElement("div");
		content_wrapper.id = "content-wrapper";
		dom_wrapper.appendChild(content_wrapper);
		
		//content
		var dom_content = document.createElement("div");
		dom_content.id = "content";
		content_wrapper.appendChild(dom_content);
		
	}
	
	/*-------------------*/
	
	this.slideContent = function(start_y,dist_y,dura,callback){	
		//スライドのクリア
		this.clearSlide();
		
		// (要素ID, 現在位置, イベント, 始点, 終点, 実行時間(大きければ大きいほど遅くなる),)
		//var start_y = getDispSize().height;
		tw_slide = new Tween($("wrapper").style,'top',Tween.strongEaseOut,start_y,dist_y,dura,'px');
		tw_slide.onMotionFinished = function(){
			callback();
		}
		tw_slide.start();
	}
	
	/*-------------------*/
	
	this.clearSlide = function(){
		if (tw_slide) {
			tw_slide.stop();
			tw_slide.onMotionFinished=null;
		}
	}
	
	
	//execute=============================================================

	//同一コンテンツには遷移しない
	if (current_id == id){
		return;
	}
	
	//スクロールバーを一時的に非表示
	document.body.style.overflow = "hidden";
	
	//現在のコンテンツidの更新
	var old_id = current_id;
	var old_content = current_content;//オブジェクトの参照
	current_content = null;
	current_id = id;
	
	var start_y;
	var dist_y;
	var dura;
	var callback;
	
	switch (id) {
		case "top"://topに遷移
			//スライドダウン
			start_y = $("wrapper").offsetTop;
			dist_y = getDispSize().height;
			dura = 0.5;
			callback = function(){
				//tweenし終わったら
				//旧コンテンツ全体をクリア
				$("wrapper").remove();
				//scrollbarをイネーブル
				document.body.style.overflow = "auto";
			};
			
			//現在のコンテンツを設定
			current_content = top_page;
			//メニューとフッタの表示
			current_content.show();
			break;
		default://top以外のコンテンツに遷移
			//旧コンテンツをクリア
			old_content.kill();
			
			//topからの遷移の場合はコンテンツエリアを新設
			if (old_id == "top") {
				this.createContent();//koko de wrapper ga set sareru
			}
			
			//新コンテンツをinit
			switch (id){
				case "news":
					current_content = new NewsPage();
				break;
				case "works":
					current_content = new WorksPage();
				break;
				case "photobook":
					current_content = new PhotobookPage();
				break;
				case "studio":
					current_content = new StudioPage();
				break;
				case "profile":
					current_content = new ProfilePage();
				break;
				case "blog":
					current_content = new BlogPage();
				break;
			}
			current_content.init();
			
			//スライドUP
			start_y = (old_id=="top") ? getDispSize().height : $("wrapper").offsetTop;
			dist_y = CONTENT_OFFSET;
			dura = 0.7;
			callback = function(){
				//scrollbarをイネーブル
				document.body.style.overflow = "auto";
				var body_y = document.body.scrollTop;
				window.scrollTo(0,body_y+1);
			};
		
			//コンテンツをロード
			current_content.load();
			break;
	}
	
	//スライドを実行
	this.slideContent(start_y,dist_y,dura,callback);
}


/*-----------------------------------------*/
/* pages
/*-----------------------------------------*/

function TopPage(){
	this.show = function(){
		$("top-menu").show();
		$("top-footer").show();
	}
	
	this.hide = function(){
		//topメニュー、フッターを見えなくする
		$("top-menu").hide();
		$("top-footer").hide();
	}
	
	this.kill = function(){
		this.hide();
	}
}

function NewsPage(){
	var me=this;
	
	this.init = function(){
		//news メニューをappend
		var dom_menu = document.createElement("div");
		dom_menu.id = "news-menu";
		$("content").appendChild(dom_menu);
		
		//news ボディーをappend
		var dom_body = document.createElement("div");
		dom_body.id = "news-body";
		$("content").appendChild(dom_body);
	}
	
	this.load = function(){
		//waitカーソル
		$("news-menu").appendChild(waitCursor());
		$("wait").style.marginLeft = "45px";

		//wrapper resize
		this.dispatchResize();
		
		//menuをロード
		ajaxLoad("news/news_menu.html",null,function(o){

			//wait削除
			$("wait").remove();
			
			//表示コンテンツのナビをセレクト状態に
			$("global-newsbtn").className = "selected";
			
			//menuを表示
			$("news-menu").innerHTML = o.responseText;
			
			//wrapper resize update
			me.dispatchResize();
			
			//最初のbodyを表示
			me.switchBody("newsmenu-allbtn","news/news_all.html");
		});
	}
	
	this.switchBody = function(btn_id,url){
		//bodyのクリア
		$("news-body").innerHTML = "";
		
		//waitカーソル
		$("news-body").appendChild(waitCursor());
		
		//コンテンツ実サイズを登録
		this.dispatchResize();
		
		//menuのリセット
		me.resetMenu();
		
		//bodyをロード
		ajaxLoad(url,null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//menuのbtnをセレクト状態に
			$(btn_id).className = "selected";
			
			//bodyを表示
			$("news-body").innerHTML = o.responseText;
			
			//コンテンツ実サイズを登録
			me.dispatchResize();
		})
	}
	
	this.resetMenu = function(){
		var len = $("news-menu").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("news-menu").firstChild.childNodes[i].firstChild.className = "button";
		}
	}
	
	this.dispatchResize = function(){
		if ($("news-menu") && $("news-body")){
			var h = Math.max($("news-menu").scrollHeight,$("news-body").scrollHeight);
			contentOnResize2(h);
			//window.scrollTo(0,1);
		}
	}
	
	this.kill = function(){
		$("global-newsbtn").className = "normal";
		//メニューを削除
		$("news-menu").remove();
		//ボディーを削除
		$("news-body").remove();	
	}
}

function StudioPage(){
	var me=this;
	
	this.init = function(){
		//news メニューをappend
		var dom_menu = document.createElement("div");
		dom_menu.id = "news-menu";
		$("content").appendChild(dom_menu);
		
		//news ボディーをappend
		var dom_body = document.createElement("div");
		dom_body.id = "news-body";
		$("content").appendChild(dom_body);
	}
	
	this.load = function(){
		//waitカーソル
		$("news-menu").appendChild(waitCursor());
		$("wait").style.marginLeft = "45px";
		
		//menuをロード
		ajaxLoad("studio/studio_menu.html",null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//表示コンテンツのナビをセレクト状態に
			$("global-studiobtn").className = "selected";
			
			//menuを表示
			$("news-menu").innerHTML = o.responseText;
			
			//wrapper resize update
			me.dispatchResize();
			
			//最初のbodyを表示
			$("news-menu").firstChild.firstChild.firstChild.onclick();
		});
	}
	
	this.switchBody = function(btn_id,url){
		//bodyのクリア
		$("news-body").innerHTML = "";
		
		//waitカーソル
		$("news-body").appendChild(waitCursor());
		
		//コンテンツ実サイズを登録
		this.dispatchResize();
		
		//menuのリセット
		me.resetMenu();
		
		//bodyをロード
		ajaxLoad(url,null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//menuのbtnをセレクト状態に
			$(btn_id).className = "selected";
			
			//bodyを表示
			$("news-body").innerHTML = o.responseText;
			
			//コンテンツ実サイズを登録
			me.dispatchResize();
		})
	}
	
	this.resetMenu = function(){
		var len = $("news-menu").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("news-menu").firstChild.childNodes[i].firstChild.className = "button";
		}
	}
	
	this.dispatchResize = function(){
		if ($("news-menu") && $("news-body")){
			var h = Math.max($("news-menu").scrollHeight,$("news-body").scrollHeight);
			contentOnResize2(h);
			window.scrollTo(0,1);
		}
	}
	
	this.kill = function(){
		$("global-studiobtn").className = "normal";
		//メニューを削除
		$("news-menu").remove();
		//ボディーを削除
		$("news-body").remove();	
	}
}

function ProfilePage(){
	var me=this;
	
	this.init = function(){
		//news メニューをappend
		var dom_menu = document.createElement("div");
		dom_menu.id = "news-menu";
		$("content").appendChild(dom_menu);
		
		//news ボディーをappend
		var dom_body = document.createElement("div");
		dom_body.id = "news-body";
		$("content").appendChild(dom_body);
	}
	
	this.load = function(){
		//waitカーソル
		$("news-menu").appendChild(waitCursor());
		$("wait").style.marginLeft = "45px";
		
		//menuをロード
		ajaxLoad("profile/profile_menu.html",null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//表示コンテンツのナビをセレクト状態に
			$("global-profilebtn").className = "selected";
			
			//menuを表示
			$("news-menu").innerHTML = o.responseText;
			
			//wrapper resize update
			me.dispatchResize();
			
			//最初のbodyを表示
			//me.switchBody("profilemenu-allbtn","profile/profile_all.html");
			$("news-menu").firstChild.firstChild.firstChild.onclick();
		});
	}
	
	this.switchBody = function(btn_id,url){
		//bodyのクリア
		$("news-body").innerHTML = "";
		
		//waitカーソル
		$("news-body").appendChild(waitCursor());
		
		//コンテンツ実サイズを登録
		this.dispatchResize();
		
		//menuのリセット
		me.resetMenu();
		
		//bodyをロード
		ajaxLoad(url,null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//menuのbtnをセレクト状態に
			$(btn_id).className = "selected";
			
			//bodyを表示
			$("news-body").innerHTML = o.responseText;
			
			//コンテンツ実サイズを登録
			me.dispatchResize();
		})
	}
	
	this.resetMenu = function(){
		var len = $("news-menu").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("news-menu").firstChild.childNodes[i].firstChild.className = "button";
		}
	}
	
	this.dispatchResize = function(){
		var h = Math.max($("news-menu").scrollHeight,$("news-body").scrollHeight);
		contentOnResize2(h);
		window.scrollTo(0,1);
	}
	
	this.kill = function(){
		$("global-profilebtn").className = "normal";
		//メニューを削除
		$("news-menu").remove();
		//ボディーを削除
		$("news-body").remove();	
	}
}

function WorksPage(){
	var me=this;
	var title_array;
	var category_array;
	var tw_scroll;
	var tw_menu;
	
	//初期化関連
	
	this.init = function(){
		//works menuをappend
		var dom_menu = document.createElement("div");
		dom_menu.id = "works-menu";
		dom_menu.style.top = "102px";
		$("content").appendChild(dom_menu);
		
		//プルダウンメニュー
		var dom_selecter_wrapper = document.createElement("div");
		dom_selecter_wrapper.id = "works-categoryselecter-wrapper";
		dom_menu.appendChild(dom_selecter_wrapper);
		
		var dom_selecter = document.createElement("select");
		dom_selecter.id = "works-categoryselecter";
		dom_selecter.name = "categoryselecter";
		dom_selecter.options[0] = new Option("category :","all");
		dom_selecter.options[1] = new Option("all","all");
		dom_selecter_wrapper.appendChild(dom_selecter);
		
		//works-list
		var dom_list = document.createElement("div");
		dom_list.id = "works-list";
		dom_menu.appendChild(dom_list);
		
		//works-pager
		var dom_pager = document.createElement("div");
		dom_pager.id = "works-pager";
		dom_menu.appendChild(dom_pager);
		
		//+--------------
		
		//works bodyをappend
		var dom_body = document.createElement("div");
		dom_body.id = "works-body";
		$("content").appendChild(dom_body);
	}


	this.load = function(){
		//waitカーソル
		$("works-list").appendChild(waitCursor());
		$("wait").style.marginLeft = "22px";
		
		//wrapper resize
		this.dispatchResize();
		
		//menuをロード
		ajaxLoad("works/works_menu.xml",null,function(o){

			//wait削除
			$("wait").remove();
			
			//表示コンテンツのナビをセレクト状態に
			$("global-worksbtn").className = "selected";
			
			//xmlをパース
			me.parseMenu(o);
			
			//selectオプションをセット
			me.initSelecter();
			
			//menuを表示
			me.switchMenu();
			
			//最初のbodyを表示
			$("works-listbtn0").onclick();
		})
	}
	
	//menu関連methods
	//menu全体
	this.switchMenu = function(cat){
		
		$("works-list").innerHTML = "";
		$("works-list").scrollTop = 0;
		
		var temp_cat = (cat) ? cat : "all";
		$("works-list").appendChild(me.dom_list(temp_cat));
		
		//スペーサー
		var spacer = document.createElement("div");
		spacer.id = "works-listspacer";
		$("works-list").appendChild(spacer);
		
		//ページャー
		this.initPager(temp_cat);
	}
	
	this.relocateMenu = function(){
		if (getDispSize().height < 550){
			$("works-menu").style.top = "102px";
			return;
		}
	
		//リロケートのクリア
		this.clearRelocateMenu();
		
		var dist_y = getBodyScroll().top-98;
		dist_y = (dist_y<(62+40)) ? (62+40) : dist_y;
		var start_y = $("works-menu").offsetTop;
		this.tw_menu = new Tween($("works-menu").style,"top",Tween.strongEaseOut,start_y,dist_y,0.5,"px");
		this.tw_menu.start();
		this.tw_menu.onMotionFinished = function(){
			//alert($("works-menu").style.top);
		}
	}

	this.clearRelocateMenu = function(){
		if (this.tw_menu){
			this.tw_menu.stop();
			this.tw_menu.onMotionFinished = null;
		}
	}

	//selecter
	this.initSelecter = function(){
		for (var i=0; i<this.category_array.length; i++){
			$("works-categoryselecter").options[i+2] = new Option(this.category_array[i].id,this.category_array[i].id);
		}
		//behavior
		$("works-categoryselecter").onchange = function(){
			me.switchMenu(this.value);
		}	
	}

	//list
	this.restListBtn = function(){
		var len = $("works-list").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("works-list").firstChild.childNodes[i].firstChild.className = "normal";
		}
	}

	this.clearScroll = function(){
		if (this.tw_scroll) {
			this.tw_scroll.stop();
			this.tw_scroll.onMotionFinished = null;
		}
	}
	
	this.slideList = function(page){
		this.resetPager();
		var dist_y = page*375;
		this.scrollElement("works-list",$("works-list").scrollTop,dist_y,1,function(){
			if ($("works-pager").firstChild.childNodes[page].firstChild) {
				$("works-pager").firstChild.childNodes[page].firstChild.className = "selected";
			}
		});
	}

	//pager
	this.initPager = function(cat){
		$("works-pager").innerHTML = "";
		
		var num;
		switch (cat){
			case "all":
				num = this.title_array.length;
			break;
			default:
				num = 0;
				for (var i=0;i<this.title_array.length;i++){
					if (this.title_array[i].category == cat){
						num++;
					}
				}
			break;
		}
		

		var btn_num = Math.ceil(num/15);
		var dom = document.createElement("ul");
		$("works-pager").appendChild(dom);
		
		//btns
		for (var i=0;i<btn_num;i++){
			dom.appendChild(this.dom_pagebtn(i));
		}
		
		//1番ボタンをセレクト
		$("works-pager").firstChild.firstChild.firstChild.className = "selected";
	}
	
	this.resetPager = function(){
		var len = $("works-pager").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("works-pager").firstChild.childNodes[i].firstChild.className = "normal";
		}
	}

	//ボディ関連methods

	this.switchBody = function(btn_id,url){	
	
	//ページ頭へスクロール
		bodyScrollTo(0,function(){	
			//bodyのクリア
			$("works-body").innerHTML = "";
			
			//waitカーソル
			$("works-body").appendChild(waitCursor());
			
			//menuをもどす
			$("works-menu").style.top = "102px";
			
			
				
			//menuのリセット
			me.restListBtn();
			
			//bodyをロード
			ajaxLoad(url,null,function(o){
				
				//wait削除
				$("wait").remove();
				
				//menuのbtnをセレクト状態に
				if (btn_id) {
					$(btn_id).className = "selected";
				}
				
				//bodyを表示
				$("works-body").innerHTML = o.responseText;
				
				//imgにonload.resizeをつける
				imageFix("works-body");
				
				//コンテンツ実サイズを登録
				me.dispatchResize();
			})
		});
	}
	
	//dom parts
	this.dom_list = function(cat){
		var dom = document.createElement("ul");
		
		switch(cat){
			case "all":
				for (var i = 0; i < this.title_array.length; i++) {
					dom.appendChild(this.dom_listbtn(this.title_array[i]));
				}
			break;
			default:
				for (var i=0;i<this.title_array.length;i++){
					if (this.title_array[i].category == cat){
						dom.appendChild(this.dom_listbtn(this.title_array[i]));
					}
				}
			break;
		}

		return dom;
	}
	
	this.dom_listbtn = function(dat){
		var dom = document.createElement("li");
		//a タグ
		var child1 = document.createElement("a");
		child1.id = dat.id;
		child1.className = "normal";
		child1.onclick = function(){
			me.switchBody(this.id,dat.lnk);
		}
		dom.appendChild(child1);
		//テキスト
		child1.appendChild(document.createTextNode(dat.tag));
		
		return dom;
	}
	
	this.dom_pagebtn = function(n){
		var dom = document.createElement("li");
		//a タグ
		var child1 = document.createElement("a");
		child1.className = "normal";
		child1.onclick = function(){
			me.slideList(n);
		}
		dom.appendChild(child1);
		//テキスト
		child1.appendChild(document.createTextNode(n+1));
		
		return dom;
	}
	
	//data methods
	
	this.parseMenu = function(o){
		
		var res = o.responseXML;
		
		var category_data = res.documentElement.getElementsByTagName("category");
		var title_data = res.documentElement.getElementsByTagName("title");
		
		//カテゴり配列
		this.category_array = new Array();
		for (var i=0;i<category_data.length;i++){
			this.category_array[i] = {
				id:category_data[i].getAttribute("id")
			};
		}
		
		//タイトル配列
		this.title_array = new Array();
		for (var i=0;i<title_data.length;i++){
			this.title_array[i] = {
				id:"works-listbtn"+i,
				tag:title_data[i].getAttribute("tag"),
				category:title_data[i].getAttribute("category"),
				lnk:title_data[i].getAttribute("lnk")
			}
		}
	}
	
	//basic methods
	this.dispatchResize = function(){
		var h = Math.max($("works-menu").scrollHeight,$("works-body").scrollHeight);
		
		contentOnResize2(h+50);
		var body_y = document.body.scrollTop;
		//window.scrollTo(0,body_y+1);
	}
	
	this.scrollElement = function(id,start_y,dist_y,dura,callback){	
		//スクロールのクリア
		this.clearScroll();
	
		// (要素オブジェクト, プロパティ名, イベント, 始点, 終点, 実行時間(大きければ大きいほど遅くなる),)
		this.tw_scroll = new Tween($(id),"scrollTop",Tween.strongEaseOut,start_y,dist_y,dura);
		this.tw_scroll.onMotionFinished = function(){
			callback();
		}
		
		this.tw_scroll.start();
	}
	
	this.kill = function(){
		$("global-worksbtn").className = "normal";
		//メニューを削除
		$("works-menu").remove();
		//ボディーを削除
		$("works-body").remove();
	}

}

function PhotobookPage(){
	var me=this;
	var title_array;
	var category_array;
	var tw_scroll;
	var tw_menu;
	
	//初期化関連
	
	this.init = function(){
		//works menuをappend
		var dom_menu = document.createElement("div");
		dom_menu.id = "works-menu";
		dom_menu.style.top = "102px";
		$("content").appendChild(dom_menu);
		
		//プルダウンメニュー
		var dom_selecter_wrapper = document.createElement("div");
		dom_selecter_wrapper.id = "works-categoryselecter-wrapper";
		dom_menu.appendChild(dom_selecter_wrapper);
		
		var dom_selecter = document.createElement("select");
		dom_selecter.id = "works-categoryselecter";
		dom_selecter.name = "categoryselecter";
		dom_selecter.options[0] = new Option("category :","all");
		dom_selecter.options[1] = new Option("all","all");
		dom_selecter_wrapper.appendChild(dom_selecter);
		
		//works-list
		var dom_list = document.createElement("div");
		dom_list.id = "works-list";
		dom_menu.appendChild(dom_list);
		
		//works-pager
		var dom_pager = document.createElement("div");
		dom_pager.id = "works-pager";
		dom_menu.appendChild(dom_pager);
		
		//+--------------
		
		//works bodyをappend
		var dom_body = document.createElement("div");
		dom_body.id = "works-body";
		$("content").appendChild(dom_body);
	}

	this.load = function(){
		//waitカーソル
		$("works-list").appendChild(waitCursor());
		$("wait").style.marginLeft = "22px";
		
		//wrapper resize update
		this.dispatchResize();
		
		//menuをロード
		ajaxLoad("photobook/photobook_menu.xml",null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//表示コンテンツのナビをセレクト状態に
			$("global-photobookbtn").className = "selected";
			
			//xmlをパース
			me.parseMenu(o);
			
			//selectオプションをセット
			me.initSelecter();
			
			//menuを表示
			me.switchMenu();
			
			//最初のbodyを表示
			$("works-listbtn0").onclick();
		})
	}
	
	//menu関連methods
	//menu全体
	this.switchMenu = function(cat){
		
		$("works-list").innerHTML = "";
		$("works-list").scrollTop = 0;
		
		var temp_cat = (cat) ? cat : "all";
		$("works-list").appendChild(me.dom_list(temp_cat));
		
		//スペーサー
		var spacer = document.createElement("div");
		spacer.id = "works-listspacer";
		$("works-list").appendChild(spacer);
		
		//ページャー
		this.initPager(temp_cat);	
	}
	
	this.relocateMenu = function(){
		if (getDispSize().height < 550){
			$("works-menu").style.top = "102px";
			return;
		}
	
		//リロケートのクリア
		this.clearRelocateMenu();
		
		var dist_y = getBodyScroll().top-98;
		//alert(getBodyScroll().top);
		dist_y = (dist_y<(62+40)) ? (62+40) : dist_y;
		var start_y = $("works-menu").offsetTop;
		this.tw_menu = new Tween($("works-menu").style,"top",Tween.strongEaseOut,start_y,dist_y,0.5,"px");
		this.tw_menu.start();
		this.tw_menu.onMotionFinished = function(){
			//alert($("works-menu").style.top);
		}
	}

	this.clearRelocateMenu = function(){
		if (this.tw_menu){
			this.tw_menu.stop();
			this.tw_menu.onMotionFinished = null;
		}
	}

	//selecter
	this.initSelecter = function(){
		for (var i=0; i<this.category_array.length; i++){
			$("works-categoryselecter").options[i+2] = new Option(this.category_array[i].id,this.category_array[i].id);
		}
		//behavior
		$("works-categoryselecter").onchange = function(){
			me.switchMenu(this.value);
		}	
	}

	//list
	this.restListBtn = function(){
		var len = $("works-list").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("works-list").firstChild.childNodes[i].firstChild.className = "normal";
		}
	}

	this.clearScroll = function(){
		if (this.tw_scroll) {
			this.tw_scroll.stop();
			this.tw_scroll.onMotionFinished = null;
		}
	}
	
	this.slideList = function(page){
		this.resetPager();
		var dist_y = page*375;
		this.scrollElement("works-list",$("works-list").scrollTop,dist_y,1,function(){
			if ($("works-pager").firstChild.childNodes[page].firstChild) {
				$("works-pager").firstChild.childNodes[page].firstChild.className = "selected";
			}
		});
	}

	//pager
	this.initPager = function(cat){
		$("works-pager").innerHTML = "";
		
		var num;
		switch (cat){
			case "all":
				num = this.title_array.length;
			break;
			default:
				num = 0;
				for (var i=0;i<this.title_array.length;i++){
					if (this.title_array[i].category == cat){
						num++;
					}
				}
			break;
		}
		

		var btn_num = Math.ceil(num/15);
		var dom = document.createElement("ul");
		$("works-pager").appendChild(dom);
		
		//btns
		for (var i=0;i<btn_num;i++){
			dom.appendChild(this.dom_pagebtn(i));
		}
		
		//1番ボタンをセレクト
		$("works-pager").firstChild.firstChild.firstChild.className = "selected";
	}
	
	this.resetPager = function(){
		var len = $("works-pager").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("works-pager").firstChild.childNodes[i].firstChild.className = "normal";
		}
	}

	//ボディ関連methods

	this.switchBody = function(btn_id,url){
				//ページ頭へスクロール
		bodyScrollTo(0,function(){
		//bodyのクリア
		$("works-body").innerHTML = "";
		
		//waitカーソル
		$("works-body").appendChild(waitCursor());
		
		//menuをもどす
		$("works-menu").style.top = "102px";
		

			
		//menuのリセット
		me.restListBtn();
		
		//bodyをロード
		ajaxLoad(url,null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//menuのbtnをセレクト状態に
			if (btn_id) {
				$(btn_id).className = "selected";
			}
			
			//bodyを表示
			$("works-body").innerHTML = o.responseText;
			
			//imgにonload.resizeをつける
			imageFix("works-body");
			
			//コンテンツ実サイズを登録
			me.dispatchResize();
		})
		});
	}
	
	//dom parts
	this.dom_list = function(cat){
		var dom = document.createElement("ul");
		
		switch(cat){
			case "all":
				for (var i = 0; i < this.title_array.length; i++) {
					dom.appendChild(this.dom_listbtn(this.title_array[i]));
				}
			break;
			default:
				for (var i=0;i<this.title_array.length;i++){
					if (this.title_array[i].category == cat){
						dom.appendChild(this.dom_listbtn(this.title_array[i]));
					}
				}
			break;
		}

		return dom;
	}
	
	this.dom_listbtn = function(dat){
		var dom = document.createElement("li");
		//a タグ
		var child1 = document.createElement("a");
		child1.id = dat.id;
		child1.className = "normal";
		child1.onclick = function(){
			me.switchBody(this.id,dat.lnk);
		}
		dom.appendChild(child1);
		//テキスト
		child1.appendChild(document.createTextNode(dat.tag));
		
		return dom;
	}
	
	this.dom_pagebtn = function(n){
		var dom = document.createElement("li");
		//a タグ
		var child1 = document.createElement("a");
		child1.className = "normal";
		child1.onclick = function(){
			me.slideList(n);
		}
		dom.appendChild(child1);
		//テキスト
		child1.appendChild(document.createTextNode(n+1));
		
		return dom;
	}
	
	//data methods
	
	this.parseMenu = function(o){
		
		var res = o.responseXML;
		
		var category_data = res.documentElement.getElementsByTagName("category");
		var title_data = res.documentElement.getElementsByTagName("title");
		
		//カテゴり配列
		this.category_array = new Array();
		for (var i=0;i<category_data.length;i++){
			this.category_array[i] = {
				id:category_data[i].getAttribute("id")
			};
		}
		
		//タイトル配列
		this.title_array = new Array();
		for (var i=0;i<title_data.length;i++){
			this.title_array[i] = {
				id:"works-listbtn"+i,
				tag:title_data[i].getAttribute("tag"),
				category:title_data[i].getAttribute("category"),
				lnk:title_data[i].getAttribute("lnk")
			}
		}
	}
	
	//basic methods
	this.dispatchResize = function(){
		var h = Math.max($("works-menu").scrollHeight,$("works-body").scrollHeight);
		contentOnResize2(h+50);
		//window.scrollTo(0,1);
	}
	
	this.scrollElement = function(id,start_y,dist_y,dura,callback){	
		//スクロールのクリア
		this.clearScroll();
	
		// (要素オブジェクト, プロパティ名, イベント, 始点, 終点, 実行時間(大きければ大きいほど遅くなる),)
		this.tw_scroll = new Tween($(id),"scrollTop",Tween.strongEaseOut,start_y,dist_y,dura);
		this.tw_scroll.onMotionFinished = function(){
			callback();
		}
		
		this.tw_scroll.start();
	}
	
	this.kill = function(){
		$("global-photobookbtn").className = "normal";
		//メニューを削除
		$("works-menu").remove();
		//ボディーを削除
		$("works-body").remove();
	}

}

function BlogPage(){
	var me=this;
	
	this.init = function(){
		//news メニューをappend
		var dom_menu = document.createElement("div");
		dom_menu.id = "news-menu";
		$("content").appendChild(dom_menu);
		
		//news ボディーをappend
		var dom_body = document.createElement("div");
		dom_body.id = "news-body";
		$("content").appendChild(dom_body);
	}
	
	this.load = function(){
		//waitカーソル
		$("news-menu").appendChild(waitCursor());
		$("wait").style.marginLeft = "45px";
		
		//menuをロード
		ajaxLoad("weblog/weblog_menu.html",null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//表示コンテンツのナビをセレクト状態に
			$("global-blogbtn").className = "selected";
			
			//menuを表示
			$("news-menu").innerHTML = o.responseText;
			
			//wrapper resize update
			me.dispatchResize();
			
			//最初のbodyを表示
			//me.switchBody("profilemenu-allbtn","profile/profile_all.html");
			$("news-menu").firstChild.firstChild.firstChild.onclick();
		});
	}
	
	this.switchBody = function(btn_id,url){
		//bodyのクリア
		$("news-body").innerHTML = "";
		
		//waitカーソル
		$("news-body").appendChild(waitCursor());
		
		//コンテンツ実サイズを登録
		this.dispatchResize();
		
		//menuのリセット
		me.resetMenu();
		
		//bodyをロード
		ajaxLoad(url,null,function(o){
			
			//wait削除
			$("wait").remove();
			
			//menuのbtnをセレクト状態に
			$(btn_id).className = "selected";
			
			//bodyを表示
			$("news-body").innerHTML = o.responseText;
			
			//コンテンツ実サイズを登録
			me.dispatchResize();
		})
	}
	
	this.resetMenu = function(){
		var len = $("news-menu").firstChild.childNodes.length;
		for (var i=0;i<len;i++){
			$("news-menu").firstChild.childNodes[i].firstChild.className = "button";
		}
	}
	
	this.dispatchResize = function(){
		var h = Math.max($("news-menu").scrollHeight,$("news-body").scrollHeight);
		contentOnResize2(h);
		window.scrollTo(0,1);
	}
	
	this.kill = function(){
		$("global-blogbtn").className = "normal";
		//メニューを削除
		$("news-menu").remove();
		//ボディーを削除
		$("news-body").remove();	
	}
}


/*-----------------------------------------*/
/* dom parts
/*-----------------------------------------*/

function clr(){
	var dom_clr = document.createElement("div");
	dom_clr.style.clear = "both";
	return dom_clr;
}

function waitCursor() {
	var dom_wait;
	dom_wait = document.createElement("div");
	dom_wait.id = "wait";
	dom_wait.className = "wait";
	return dom_wait;
}

function globalMenu(){
	var dom_menu = document.createElement("div");
	dom_menu.id = "global-menu";
	
	var list = document.createElement("ul");
	dom_menu.appendChild(list);
	
	/*home*/
	var child1 = document.createElement("li");
	child1.id = "global-homebtn";
	child1.className = "normal";
	var child1_1 = document.createElement("a");
	child1_1.onclick = function(){
		//コンテンツきりかえ
		switchContent("top");
	}
	child1_1.appendChild(document.createTextNode("home"));
	child1.appendChild(child1_1);
	list.appendChild(child1);
	
	/*news*/
	var child2 = document.createElement("li");
	child2.id = "global-newsbtn";
	child2.className = "normal";
	var child2_1 = document.createElement("a");
	child2_1.onclick = function(){
		//コンテンツきりかえ
		switchContent("news");
	}
	child2_1.appendChild(document.createTextNode("news"));
	child2.appendChild(child2_1);
	list.appendChild(child2);
	
	/*works*/
	var child3 = document.createElement("li");
	child3.id = "global-worksbtn";
	child3.className = "normal";
	var child3_1 = document.createElement("a");
	child3_1.onclick = function(){
		//コンテンツきりかえ
		switchContent("works");
	}
	child3_1.appendChild(document.createTextNode("works"));
	child3.appendChild(child3_1);
	list.appendChild(child3);

	/*photobook*/
	var child4 = document.createElement("li");
	child4.id = "global-photobookbtn";
	child4.className = "normal";
	var child4_1 = document.createElement("a");
	child4_1.onclick = function(){
		//コンテンツきりかえ
		switchContent("photobook");
	}
	child4_1.appendChild(document.createTextNode("photobook"));
	child4.appendChild(child4_1);
	list.appendChild(child4);
	
	/*studio*/
	var child5 = document.createElement("li");
	child5.id = "global-studiobtn";
	child5.className = "normal";
	var child5_1 = document.createElement("a");
	child5_1.onclick = function(){
		//コンテンツきりかえ
		switchContent("studio");
	}
	child5_1.appendChild(document.createTextNode("studio"));
	child5.appendChild(child5_1);
	list.appendChild(child5);
	
	/*profile*/
	var child6 = document.createElement("li");
	child6.id = "global-profilebtn";
	child6.className = "normal";
	var child6_1 = document.createElement("a");
	child6_1.onclick = function(){
		//コンテンツきりかえ
		switchContent("profile");
	}
	child6_1.appendChild(document.createTextNode("profile"));
	child6.appendChild(child6_1);
	list.appendChild(child6);

	/*blog*/
	var child7 = document.createElement("li");
	child7.id = "global-blogbtn";
	child7.className = "normal";
	var child7_1 = document.createElement("a");
	child7_1.onclick = function(){
		//コンテンツきりかえ
		switchContent("blog");
	}
	child7_1.appendChild(document.createTextNode("blog"));
	child7.appendChild(child7_1);
	list.appendChild(child7);
	
	return dom_menu;
}

/*-----------------------------------------*/
/* basic
/*-----------------------------------------*/

function getDispSize(){
	if (document.all) {
		if (window.opera) {
			return {
				width: document.body.clientWidth,
				height: document.body.clientHeight
			};
		}
		else {
			return {
				width: document.documentElement.clientWidth,
				height: document.documentElement.clientHeight
			};
		}
	}
	else 
		if (document.layers || document.getElementById) {
			return {
				width: window.innerWidth,
				height: window.innerHeight
			};
		}
}

function getBodyScroll(){
	return {
		top:document.body.scrollTop  || document.documentElement.scrollTop,
		left:document.body.scrollLeft || document.documentElement.scrollLeft
	}
}

function bodyScrollTo(dist_y,callback){
	var start_y = getBodyScroll().top;
	var isSafari = (navigator.appVersion.toLowerCase().indexOf('safari')+1?1:0);
	if (isSafari) {
		var tw_bs = new Tween(document.body, "scrollTop", Tween.strongEaseOut, start_y, dist_y, 0.5);
	} else {
		var tw_bs = new Tween(document.documentElement, "scrollTop", Tween.strongEaseOut, start_y, dist_y, 0.5);
	}
	tw_bs.onMotionFinished = function(){
		callback();
	}
	tw_bs.start();
}

function ajaxLoad(url,pars,func) {
    var myAjax = new Ajax.Request(url, {
		method: "get",
		parameters: pars,
		onComplete: func
	});
}

function contentOnResize(){
	var dispsize = getDispSize();
	if ($("content-wrapper")){
		var ch = dispsize.height-CONTENT_OFFSET-62;
		if (content_height < ch){
			$("content-wrapper").style.height = ch+"px";
			//alert("収まる"+ch);
		} else {
			$("content-wrapper").style.height = content_height+"px";
			//alert("はみでる"+content_height);
		}
	}
}

function contentOnResize2(h){//h:対象オブジェクトの高さ
	var dispsize = getDispSize();
	if ($("content-wrapper")){
		//ch : 表示エリア内でのコンテンツ表示サイズ値
		var ch = dispsize.height-CONTENT_OFFSET-$("global-menu").scrollHeight;
		
		if (h < ch){
			//もし対象オブジェクトが画面内におさまる場合
			
			$("content-wrapper").style.height = ch+"px";
			//alert("in:"+h+" / "+ch);
		} else {
			//もし対象オブジェクトが画面からはみ出る場合
			$("content-wrapper").style.height = h+"px";
			//alert("over: "+h);
		}
	}
	//alert()
}

function contentOnResize3(id){
	alert("resize3");
	var h = $(id).scrollHeight;
	
	var dispsize = getDispSize();
	if ($("content-wrapper")){
		//ch : 表示エリア内でのコンテンツ表示サイズ値
		var ch = dispsize.height-CONTENT_OFFSET-$("global-menu").scrollHeight;
		
		if (h < ch){
			//もし対象オブジェクトが画面内におさまる場合
			
			$("content-wrapper").style.height = ch+"px";
			//alert("in:"+h+" / "+ch);
		} else {
			//もし対象オブジェクトが画面からはみ出る場合
			$("content-wrapper").style.height = h+"px";
			//alert("over: "+h);
		}
	}
	//alert()
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function initBG(){
	var r= Math.round(Math.random()*2);
	switch(r){
		case 0:
			var img="img/bgp1.jpg";
		break;
		case 1:
			var img="img/bgp2.jpg";
		break;
		case 2:
			var img="img/bgp3.jpg";
		break;
	}
	document.getElementsByTagName("html")[0].style.backgroundImage = "url("+img+")";
	//document.body.style.backgroundImage = "url("+img+")";
		
}

//imgがロードされたらresizeを実行する
function imageFix(id){
	var img_array = document.getElementsByTagName("img");
	for (var i=0;i<img_array.length;i++){
		img_array[i].onload = function(){
			if (current_content) {
				current_content.dispatchResize();
			}
		}
	}
}


/*-----------------------------------------*/
/* window listeners
/*-----------------------------------------*/

window.onresize = function(){
	if (current_content) {
		current_content.dispatchResize();
	}
}

window.onscroll = function(){
	if ($("works-menu")) {
		current_content.relocateMenu();
	}
}

window.onload = function(){
	top_page = new TopPage();
	current_content = top_page;
	current_id = "top";
	initBG();
	
	
	MM_preloadImages("img/global_menu/home-trans.png",
		"img/global_menu/news-trans.png",
		"img/global_menu/news_now-trans.png",
		"img/global_menu/works-trans.png",
		"img/global_menu/works_now-trans.png",
		"img/global_menu/photo-trans.png",
		"img/global_menu/photo_now-trans.png",
		"img/global_menu/studio-trans.png",
		"img/global_menu/studio_now-trans.png",
		"img/global_menu/profile-trans.png",
		"img/global_menu/profile_now-trans.png"
	);
}




