/*============================================================================================
初期設定
============================================================================================*/

loadCount=0;						//ファイル読み込み設定を最初のものとそれ以降で分岐させる
var currentIconMode,oResults;
var timeoutMs = 7000;
var treeLoading=0;					//第一階層の展開時の際に展開中以外のツリーを展開させないための判断
var j=1;							//histDataの値を読み込むための変数

if(histArray == undefined){ //select_list.tplで使う場合、histDataをnullにしておく
 var histArray="";
} 

//ページに応じてCSSの設定を保持
var openIconStyle;
var closeIconStyle;
var loadIconStyle;
/*============================================================================================
ツリーの作成と描画
============================================================================================*/
/*-----------------------------------------------------------------
//ページに応じてCSS設定切り替えを調整
-----------------------------------------------------------------*/
function setIconStyle(){
	if(treeStyle=="sideMenuTree"){
		openIconStyle = 'url(../common/img/icon03.gif) no-repeat 3px 7px';
		closeIconStyle = 'url(../common/img/icon04.gif) no-repeat 3px 7px';
		loadIconStyle = 'url(../common/css/yui/treeview/treeview-loading.gif) no-repeat 0px 2px';
	}else if(treeStyle=="mainTree"){
		openIconStyle = 'url(../common/img/main_tree_open00.gif) no-repeat left top';
		closeIconStyle = 'url(../common/img/main_tree_close00.gif) no-repeat left top';
		loadIconStyle = 'url(../common/css/yui/treeview/treeview-loading.gif) no-repeat 5px 5px';
	}
}
/*-----------------------------------------------------------------
//初期状態のデータ処理
-----------------------------------------------------------------*/

function loadfile(fileName,treeObj,rootObj,tree){
	var node = tree.getRoot();	//ツリールートの取得
	node.fileId = "";
	node.hist = ""
	var sUrl = globalTreeURL + fileName;/*ここをcgiのurlに変更する*/
	var callback1 = {
		success:function(aResponse){
			aStates = eval(decodeURIComponent(aResponse.responseText));
			loopSetNode(aStates,node,false);					 //ノードのセット
			tree.draw();
			menuToggle(treeObj,rootObj);
			treeLoading=0;
		},
		failure:function(aResponse){
		},
		timeout: timeoutMs 
	}
	YAHOO.util.Connect.asyncRequest('GET', sUrl, callback1 ,null);/* submitの代わりに送信する(cgi側ではprint文で出力すればいいはず(出力前にヘッダ忘れずに)) */
}

/*-----------------------------------------------------------------
//2回目以降のデータ処理
-----------------------------------------------------------------*/


function loadNodeData(node, fnLoadComplete)	{
	var sUrl = globalTreeURL + node.fileId;/*ここをcgiのurlに変更する*/
	var callback2 = {
	 	/*-----------------------------------------------------------------
		//ファイルの読み込みが成功したとき
		-----------------------------------------------------------------*/
		success: function(oResponse) {
			oResults = eval(decodeURIComponent(oResponse.responseText));
			loopSetNode(oResults,node,false);					//ノードのセット
			oResponse.argument.fnLoadComplete();
		},
		/*-----------------------------------------------------------------
		//ファイルの読み込みが失敗したとき
		-----------------------------------------------------------------*/
		failure: function(oResponse) {
				oResponse.argument.fnLoadComplete();
		},
		argument: {
				"node": node,
				"fnLoadComplete": fnLoadComplete
		},
		timeout: timeoutMs 
	 };
	 YAHOO.util.Connect.asyncRequest('GET', sUrl, callback2,null);<!-- submitの代わりに送信する(cgi側ではprint文で出力すればいいはず(出力前にヘッダ忘れずに)) -->
}

/*-----------------------------------------------------------------
//ツリー展開履歴の分解
-----------------------------------------------------------------*/
/*
function histBreak(hist){
  var histArray = hist.split("_");
  return histArray;
}
*/
/*-----------------------------------------------------------------
//ノード追加のループ処理
-----------------------------------------------------------------*/
function loopSetNode(dataArray,node,open){
	for(var i in dataArray){
		//サイドバーツリーのとき、ツリー展開履歴通りにツリーを開く処理を行う。
		if(histArray != null){	
			if(dataArray[i][3] == histArray[j]){
				open=true;
				j+=1;
			}else{
				open=false;
			}
			
		}
		
	 	var tempNode =	setNode(
					dataArray[i][0],
					dataArray[i][1],
					dataArray[i][2],
					dataArray[i][3],
					dataArray[i][4],
					node,
					open
					);
		if(typeof dataArray[i][3] == "object"){
			loopSetNode(dataArray[i][3],tempNode,open);
		}
	}
}



/*-----------------------------------------------------------------
//ノード追加処理
-----------------------------------------------------------------*/
function setNode(label,url,leaf,file,root,nodeRoot,open){
	//nodeRoot :親の持つルート番号
	//root : 子の持つルート番号
	
	var tempNode = new YAHOO.widget.TextNode(label,nodeRoot,open);

	tempNode.fileId= file;
	if(tempNode.hist == undefined){ //第一階層にはtempNode.histが設定されてないため、そのエラー処理
		tempNode.hist = "";
	}
	
	tempNode.hist = nodeRoot.hist +  root  +"_" ; //
	if(typeof url== "string" && leaf==0){
	 	tempNode.href= url +  tempNode.hist;
	 	tempNode.isLeaf = true;	
	}

	return tempNode;
}


/*-----------------------------------------------------------------
//ツリー表示部分の開閉と第一階層のアイコン変更（＋とーのみ）
-----------------------------------------------------------------*/
function menuToggle(treeObj,rootObj){
	if(document.getElementById(treeObj).style.display=='block'){
		setStyleTreeTop(rootObj,treeObj,"close");
		document.getElementById(treeObj).style.display='none';
		document.getElementById(rootObj).style.background=closeIconStyle;
	}else{
		setStyleTreeTop(rootObj,treeObj,"open");
		document.getElementById(treeObj).style.display='block';
		document.getElementById(rootObj).style.background=openIconStyle;
	}
}
/*-----------------------------------------------------------------
//サイドメニューの際のスタイル変更
-----------------------------------------------------------------*/

function setStyleTreeTop(rootObj,treeObj,dispFlg){
	if(treeStyle=="sideMenuTree"){
		if(dispFlg=="open"){
			document.getElementById(rootObj).style.borderBottom = 'none';
			document.getElementById(treeObj).style.borderBottom = '1px solid #538C0D';
			document.getElementById(treeObj).style.padding = '0px 0px 3px 0px'; 
		}else{
			document.getElementById(rootObj).style.borderBottom = '1px solid #538C0D';
			document.getElementById(treeObj).style.borderBottom = 'none';
			document.getElementById(treeObj).style.padding = '0px 0px 0px 0px'; 
		}
	}
}	

/*============================================================================================
ツリーの実行
============================================================================================*/


function showTreeMenu(treeObj,fileName,rootObj){
	if(document.getElementById(treeObj).style.display=='block'){
		menuToggle(treeObj,rootObj);
	}else{

			setIconStyle();
			var tree = new YAHOO.widget.TreeView(treeObj);
			tree.setDynamicLoad(loadNodeData, currentIconMode);
			document.getElementById(rootObj).style.background=loadIconStyle;
			loadfile(fileName,treeObj,rootObj,tree);

	}
}

