/* #####################################################################################

	NAME:		home.js
	
		NOTES:	ホーム画面の画像表示制御
				
	
	
	AUTHOR:		Yoshikatsu Iyo.		2009/08/28
									Copyright, PorkHamlet Co.Ltd. All rights reserved.

##################################################################################### */


/*~~< variable(s) >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
var		homeXMLPath		=	"/xml/book.xml";
var		scrollTime		=	3000;

var		infoValue		=	0;
var		listInfoTbl		=	new Array();
var		photographerInfoTbl		=	new Array();
var		objList;
var		displayMode		=	"undefined";
var		checkID			=	"undefined";

/*~~< object(s) >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*~~< program(s) >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

/* =========================================================================**
	main
		notes:	画像表示スタート
				
*========================================================================== */
function main(){

	window.onload	=	function(){
							
							// Ajax非対応ブラウザなら終了
							if( !chkAjaBrowser() )
							{
								alert("no Ajax");
								return;
							}
							
							// XMLから画像リストを取得
							getInfoTbl( homeXMLPath, listInfoTbl );
							
							
							
							waitGetInfoTbl();
						};
}


/* =========================================================================**
	getInfoTbl
		note:	XMLから画像情報を取得
				
*========================================================================== */
function getInfoTbl(	xmlUrl,		// xml file url
						infoTbl		// output photograher infomation table
){
	var		req		=	createHttpRequest();
	var		objThis	=	this;
	
	infoValue++;
	req.onreadystatechange	=	function(){
		if( req.readyState == 4 ){
			parseXML( req.responseXML, infoTbl );
			
			
			infoValue--;
		}
	}
	
	req.open("GET", xmlUrl );
	req.send("");
}


/* =========================================================================**
	waitGetInfoTbl
		note:	画像情報取得完了を待機
				
*========================================================================== */
function waitGetInfoTbl()
{
	if( 0 < infoValue )
	{
		setTimeout( function(){
							waitGetInfoTbl();
		},100);
		return;
	}
	
	
	// 画像オブジェクトを初期化
	photographerInfoTbl	=	listInfoTbl;
	objList		=	new ObjThumbnail( photographerInfoTbl, photographerInfoTbl.length, 0, photographerInfoTbl.length, 180, -1, 2000, "book", "undefined", clickFunc );
	objList.start();
	
	
	
	
	setBookGrid();
	
	
	
	
	window.onresize		=	function(){
								setBookGrid();
							};
	
	
	
	
	checkID			=	setInterval( function(){
										waitFadeInFinished();
						},100);
}


/* =========================================================================**
	waitFadeInFinished
		notes:	画像のフェードインが完了したらスライドを開始する
				
*========================================================================== */
function waitFadeInFinished()
{

	if( true == objList.checkStartup() )
	{
		clearInterval( checkID );
		checkID			=	"undefined";
		
		loop();
		displayMode		=	"list";
	}

}


/* =========================================================================**
	loop
		notes:	スライドを開始する
				
*========================================================================== */
function loop()
{
	objList.loop();
}


/* =========================================================================**
	stopAuto
		notes:	スライドを中止する
				
*========================================================================== */
function stopAuto()
{
	objList.stopLoop	=	true;
}


/* =========================================================================**
	restartAuto
		notes:	スライドを再開する
				
*========================================================================== */
function restartAuto()
{
	objList.stopLoop	=	false;
}


/* =========================================================================**
	clickFunc
		notes:	サムネイルがクリックされたら詳細画面を表示する
				
*========================================================================== */
function clickFunc(	objDetail	// 詳細画面情報
){
	if( "undefined" == displayMode )
	{
		return;
	}
	
	stopAuto();
	objDetail.display( photographerInfoTbl );
}


/* =========================================================================**
	selectPhotographer
		notes:	選択されたフォトグラファーの画像を表示。
				all の場合は、全ての画像を表示。
				
*========================================================================== */
function selectPhotographer(	name	// フォトグラファー名
){
	var		obj;

	
	stopAuto();
	objList.destroy();
	delete objList;
	if( name == "all" )
	{
		delete photographerInfoTbl;
		photographerInfoTbl		=	listInfoTbl;
		
		// 画像オブジェクトを初期化
		objList		=	new ObjThumbnail( photographerInfoTbl, photographerInfoTbl.length, 0, photographerInfoTbl.length, 180, -1, 2000, "book", "undefined", clickFunc );
		objList.start();
		
		setBookGrid();
		
		if( checkID == "undefined" )
		{
			checkID			=	setInterval( function(){
												waitFadeInFinished();
								},100);
		}
		
		obj		=	document.getElementById("all-active");
		obj.style.display	=	"none";
		obj		=	document.getElementById("all-selected");
		obj.style.display	=	"block";
		obj		=	document.getElementById("mizuta-active");
		obj.style.display	=	"block";
		obj		=	document.getElementById("mizuta-selected");
		obj.style.display	=	"none";
		obj		=	document.getElementById("tsubaki-active");
		obj.style.display	=	"block";
		obj		=	document.getElementById("tsubaki-selected");
		obj.style.display	=	"none";
		obj		=	document.getElementById("watanabe-active");
		obj.style.display	=	"block";
		obj		=	document.getElementById("watanabe-selected");
		obj.style.display	=	"none";
		obj		=	document.getElementById("ebara-active");
		obj.style.display	=	"block";
		obj		=	document.getElementById("ebara-selected");
		obj.style.display	=	"none";
		
		
	}
	else
	{
		delete photographerInfoTbl;
		photographerInfoTbl		=	new Array();
		for( i in listInfoTbl )
		{
			if( listInfoTbl[i]["name"] == name )
			{
				photographerInfoTbl.push( listInfoTbl[i] );
			}
		}
	
		// 画像オブジェクトを初期化
		objList		=	new ObjThumbnail( photographerInfoTbl, photographerInfoTbl.length, 0, photographerInfoTbl.length, 180, -1, 2000, "book", "undefined", clickFunc );
		objList.start();
		
		setBookGrid();
		
		if( checkID == "undefined" )
		{
			checkID			=	setInterval( function(){
												waitFadeInFinished();
								},100);
		}
							
							
							
							
		switch(name)
		{
			case "manabu-mizuta":
					obj		=	document.getElementById("all-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("all-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("mizuta-active");
					obj.style.display	=	"none";
					obj		=	document.getElementById("mizuta-selected");
					obj.style.display	=	"block";
					obj		=	document.getElementById("tsubaki-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("tsubaki-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("watanabe-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("watanabe-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("ebara-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("ebara-selected");
					obj.style.display	=	"none";
				break;
			case "saori-tsubaki":
					obj		=	document.getElementById("all-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("all-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("mizuta-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("mizuta-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("tsubaki-active");
					obj.style.display	=	"none";
					obj		=	document.getElementById("tsubaki-selected");
					obj.style.display	=	"block";
					obj		=	document.getElementById("watanabe-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("watanabe-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("ebara-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("ebara-selected");
					obj.style.display	=	"none";
				break;
			case "teruyuki-watanabe":
					obj		=	document.getElementById("all-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("all-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("mizuta-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("mizuta-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("tsubaki-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("tsubaki-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("watanabe-active");
					obj.style.display	=	"none";
					obj		=	document.getElementById("watanabe-selected");
					obj.style.display	=	"block";
					obj		=	document.getElementById("ebara-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("ebara-selected");
					obj.style.display	=	"none";
				break;
			case "eiji-ebara":
					obj		=	document.getElementById("all-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("all-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("mizuta-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("mizuta-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("tsubaki-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("tsubaki-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("watanabe-active");
					obj.style.display	=	"block";
					obj		=	document.getElementById("watanabe-selected");
					obj.style.display	=	"none";
					obj		=	document.getElementById("ebara-active");
					obj.style.display	=	"none";
					obj		=	document.getElementById("ebara-selected");
					obj.style.display	=	"block";
				break;
			default:
				break;
		}
	}
}


/* =========================================================================**
	setBookGrid
		notes:	ウインドウサイズに合わせて、画像表示領域の位置と幅を調整する。
				
*========================================================================== */
function setBookGrid()
{
	var		objBook	=	document.getElementById('book');
	var		left	=	parseInt( objBook.offsetLeft );
	var		width	=	( photographerInfoTbl.length - 1 ) * 180;
	
	if( width > document.body.clientWidth )
	{
		width	=	document.body.clientWidth;
		left	=	0;
	}
	else
	{
		left	=	( document.body.clientWidth - width + 30 ) / 2;
	}
	
	
	objBook.style.width		=	width + "px";
	objBook.style.left		=	left + "px";
}


main();












