
// ＝＝＝＝＝＝＝＝ ツールバースタイル関連定数 ＝＝＝＝＝＝＝＝
	var sOffBackColor = "#F4F4FF";
	var sOffTextColor = "menutext"
	var sOffBorderColor = "#F4F4FF";
	var sOffPadding = "1px 1px 1px 1px";

	var sOverBackColor = "lavender";
	var sOverTextColor = "menutext"
	var sOverBorderColor = "white #AAAAAA #AAAAAA white";
	var sOverPadding = "1px 1px 1px 1px";

	var sDownBackColor = "window"
	var sDownTextColor = "menutext"
	var sDownBorderColor = "#AAAAAA white white #AAAAAA";
	var sDownPadding = "2px 0px 0px 2px";

// ＝＝＝＝＝ ツールバーのスタイル調整関数 ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

var selectedButton = null; // プルダウンメニュー表示中のボタン

// カラーパレット表示ボタンの選択状態スタイルをクリア
function clearColorButton() {
	var palletButton = document.all("tblColorBtn");
	palletButton.style.backgroundColor = sOffBackColor;
	palletButton.style.borderColor = sOffBorderColor;
	palletButton.style.color = sOffTextColor;
	if ( palletButton.id == "tblColorBtn" ) {
		document.all("divPallet").style.display='none'
	}
}

// メニューボタンにマウスオーバーされたらスタイルを変更
function menu_button_over(eButton) {
	var eButtonTable = null;
		if ( eButton.tagName == "DIV" ) {
			eButtonTable = eButton.parentNode.parentNode.parentNode.parentNode;
		} else {
			return false;
		}

	eButtonTable.style.borderColor = sOverBorderColor;
}

// マウスポインタがボタンから離れたらスタイルを変更
function menu_button_out(eButton) {

	var eButtonTable = null;
		if ( eButton.tagName == "DIV" ) {
			eButtonTable = eButton.parentNode.parentNode.parentNode.parentNode;
		} else {
			return false;
		}

	// スタイルを変更
	eButtonTable.style.backgroundColor = sOffBackColor;
	eButtonTable.style.borderColor = sOffBorderColor;
	eButtonTable.style.color = sOffTextColor;
}

// メニューボタンがマウスダウンされた
function menu_button_down(eButton) {
	var eButtonTable = null;
		if ( eButton.tagName == "DIV" ) {
			eButtonTable = eButton.parentNode.parentNode.parentNode.parentNode;
		} else {
			return false;
		}

	eButtonTable.style.borderColor = sDownBorderColor;
}

// メニューボタンがクリックされた
function menu_button_click(eButton) {
	var eButtonTable = null;
		if ( eButton.tagName == "DIV" ) {
			eButtonTable = eButton.parentNode.parentNode.parentNode.parentNode;
		} else {
			return false;
		}

	// カラーパレット表示ボタンがクリックされた
	if ( eButtonTable.id == "tblColorBtn" ) {
		showColorPallet(eButtonTable);
	}
}

// ============== 色関連 ==================================================

// カラーパレットを表示
function showColorPallet(eButtonTable) {
		selectedButton = eButtonTable;							// ボタンを選択状態に設定
		document.all("divPallet").style.display='block';		// パレット表示
		document.attachEvent('onmouseup', mouse_up_for_menu);	// mouse_up_for_menuイベントをdocumentにセット
}

// document内のマウスアップでカラーボタンのスタイルを初期化し、パレットを非表示にする
function mouse_up_for_menu() {
	selectedButton = null;							// 選択状態のボタンを初期化
	clearColorButton();								// カラーボタンの書式をクリア
	document.all("divPallet").style.display='none';	// パレットの非表示化
	document.detachEvent('onmouseup', mouse_up_for_menu);	// イベントのクリア
}

// カラーパレットで色が選択された
function subWindowButton_up(eButton) {
	if ( eButton.parentNode.parentNode.parentNode.parentNode.id != "tblColorPallet" ) { return; }

	// 選択済みのセルを色付けする
	setColorToSelectedCell( eButton.colorStyle );

	// メニューボタンに表示中のイメージを、クリックされたパレットのイメージに変更する
	document.all("tblColorBtn").firstChild.firstChild.firstChild.firstChild.src = eButton.firstChild.firstChild.firstChild.firstChild.src;

}

// ============== セレクタ関連 ==================================================

	// セレクタウインドウ Open
	function openSelector() {

//		window.open('Controller?action=displaySelecter','_blank','width=500px,height=550px,statusbar=no,toolbar=no');

//	モーダルセレクタ
		var args = new Array();
		args[0] = window;
		args[1] = axesXMLData;
		var ret = showModalDialog('Controller?action=displaySelecter',args,'dialogHeight:550px;dialogWidth:500px;toolbar=no;status:no;');
	}

// ============== レポートのCSV,Excelエクスポート ===============================

	//エクスポートボタンクリック
	function export_button_click() {

		// サーバへのアクセス状況を設定(イメージを動かす)
		setLoadingStatus(true);

		// 現在表示されている行/列の情報を取得し、hiddenに保存する
		// （親メンバがドリル未で非表示となっているメンバは含めない。）
		setViewingColRowInfo();

		// 色情報を取得し、hiddenに保存する
		setColorInfo();

		// サーバーへ送信
		document.SpreadForm.action = "Controller?action=exportReport";
		document.SpreadForm.target = "loadingStatus";
		document.SpreadForm.submit();

	}

	// 現在表示されている行/列の情報を取得し、hiddenに保存する
	function setViewingColRowInfo() {

		// 重複しているKeyを除外するためにDictionaryを使用する
		var viewCol0KeyDict = new ActiveXObject("Scripting.Dictionary");
		var viewCol1KeyDict = new ActiveXObject("Scripting.Dictionary");
		var viewCol2KeyDict = new ActiveXObject("Scripting.Dictionary");
		var viewRow0KeyDict = new ActiveXObject("Scripting.Dictionary");
		var viewRow1KeyDict = new ActiveXObject("Scripting.Dictionary");
		var viewRow2KeyDict = new ActiveXObject("Scripting.Dictionary");

		var viewColIndexKey_hidden = "";
		var viewRowIndexKey_hidden = "";

		// 行・列ヘッダの表示中のSpreadIndexリスト
		var colSpreadIndexArray = (new VBArray(viewingColSpreadIndexKeysDict.Keys())).toArray();
		var rowSpreadIndexArray = (new VBArray(viewingRowSpreadIndexKeysDict.Keys())).toArray();

		for ( var i = 0; i < colSpreadIndexArray.length; i++ ) {
			var colSpreadIndex = colSpreadIndexArray[i];
			var colKeyArray = viewingColSpreadIndexKeysDict.Item(colSpreadIndex);

			// Keyリスト(COL)
			if ( !viewCol0KeyDict.Exists(colKeyArray[0]) ) {
				viewCol0KeyDict.Add(colKeyArray[0], 1);
			}
			if ( colKeyArray[1] != "" ) {
				if ( !viewCol1KeyDict.Exists(colKeyArray[1]) ) {
					viewCol1KeyDict.Add(colKeyArray[1], 1);
				}
			}
			if ( colKeyArray[2] != "" ) {
				if ( !viewCol2KeyDict.Exists(colKeyArray[2]) ) {
					viewCol2KeyDict.Add(colKeyArray[2], 1);
				}
			}

			// SpreadIndex,Keyリスト(COL)
			if ( viewColIndexKey_hidden != "" ) {
				viewColIndexKey_hidden += ",";
			}
			viewColIndexKey_hidden += colSpreadIndex + ":" + colKeyArray.join(";");
		}

		for ( var i = 0; i < rowSpreadIndexArray.length; i++ ) {
			var rowSpreadIndex = rowSpreadIndexArray[i];
			var rowKeyArray = viewingRowSpreadIndexKeysDict.Item(rowSpreadIndex);

			// Keyリスト(ROW)
			if ( !viewRow0KeyDict.Exists(rowKeyArray[0]) ) {
				viewRow0KeyDict.Add(rowKeyArray[0], 1);
			}
			if ( rowKeyArray[1] != "" ) {
				if ( !viewRow1KeyDict.Exists(rowKeyArray[1]) ) {
					viewRow1KeyDict.Add(rowKeyArray[1], 1);
				}
			}
			if ( rowKeyArray[2] != "" ) {
				if ( !viewRow2KeyDict.Exists(rowKeyArray[2]) ) {
					viewRow2KeyDict.Add(rowKeyArray[2], 1);
				}
			}

			// SpreadIndex,Keyリスト(ROW)
			if ( viewRowIndexKey_hidden != "" ) {
				viewRowIndexKey_hidden += ",";
			}
			viewRowIndexKey_hidden += rowSpreadIndex + ":" + rowKeyArray.join(";");
		}


		// Dictionary よりKeyリストを取得
		var viewColKeyArray = new Array(3);
			viewColKeyArray[0] = (new VBArray(viewCol0KeyDict.Keys())).toArray();
			viewColKeyArray[1] = (new VBArray(viewCol1KeyDict.Keys())).toArray();
			viewColKeyArray[2] = (new VBArray(viewCol2KeyDict.Keys())).toArray();

		var viewRowKeyArray = new Array(3);
			viewRowKeyArray[0] = (new VBArray(viewRow0KeyDict.Keys())).toArray();
			viewRowKeyArray[1] = (new VBArray(viewRow1KeyDict.Keys())).toArray();
			viewRowKeyArray[2] = (new VBArray(viewRow2KeyDict.Keys())).toArray();

		// hidden へ登録
		document.SpreadForm.viewCol0KeyList_hidden.value  = viewColKeyArray[0];
		document.SpreadForm.viewCol1KeyList_hidden.value  = viewColKeyArray[1];
		document.SpreadForm.viewCol2KeyList_hidden.value  = viewColKeyArray[2];
		document.SpreadForm.viewRow0KeyList_hidden.value  = viewRowKeyArray[0];
		document.SpreadForm.viewRow1KeyList_hidden.value  = viewRowKeyArray[1];
		document.SpreadForm.viewRow2KeyList_hidden.value  = viewRowKeyArray[2];

		document.SpreadForm.viewColIndexKey_hidden.value = viewColIndexKey_hidden;
		document.SpreadForm.viewRowIndexKey_hidden.value = viewRowIndexKey_hidden;

	}

	// 色情報をhiddenに設定
	function setColorInfo() {

		var colorIndexInfoArray = getColorIndexInfoArray();
		if ( colorIndexInfoArray != null ) {
			document.SpreadForm.colHdrColor.value = colorIndexInfoArray[0];	// 列ヘッダー部の色情報
			document.SpreadForm.rowHdrColor.value = colorIndexInfoArray[1];	// 行ヘッダー部の色情報
			document.SpreadForm.dataHdrColor.value = colorIndexInfoArray[2];// データテーブル部の色情報

//alert("colValue:" + document.SpreadForm.colHdrColor.value);
//alert("rowValue:" + document.SpreadForm.rowHdrColor.value);
//alert("pageValue:" + document.SpreadForm.dataHdrColor.value);

		}
	}

// ============== レポート保存 ================================================

	// レポート情報を保存する
	function saveReportInfo(reportName, folderID) {

		// サーバへのアクセス状況を設定(イメージを動かす)
		setLoadingStatus(true);

		// ドリル情報を保存
		var axes = axesXMLData.selectNodes("/root/Axes/Members");
		for ( var i = 0; i < axes.length; i++ ) {
			var drillStatString = "";
			var axisID = axes[i].getAttributeNode("id").value;
			var members = axes[i].selectNodes(".//Member");
//alert(members.length);

			for ( var j = 0; j < members.length; j++ ) {
				var thisNode = members[j];
				var uName = thisNode.selectSingleNode("UName").text;
				var isDrilled = thisNode.selectSingleNode("isDrilled").text;
				if ( isDrilled == "true" ) {
					isDrilled = "1";
				} else {
					isDrilled = "0";
				}
				if(drillStatString != "" ) {
					drillStatString += ",";
				}
				drillStatString += uName + ":" + isDrilled;
			}

			document.getElementById("dim" + axisID).value = drillStatString;
		}


		// 色情報を取得
		var colorInfoArray = getColorArray();

		// 色情報をhiddenに登録
		if( colorInfoArray != null ) {
			document.SpreadForm.hdrColorInfo.value = colorInfoArray[0];	// ヘッダー部の色情報
			document.SpreadForm.dtColorInfo.value  = colorInfoArray[1];	// データテーブルの色情報
		}

		// サーバーへ送信
		document.SpreadForm.action = "Controller?action=saveClientReportStatus&reportName=" + reportName + "&folderID=" + folderID;
		document.SpreadForm.target = "loadingStatus";
		document.SpreadForm.submit();

	}

// ============== ログアウト ================================================

	// ログアウト実行
	function logout() {

		if ( showConfirm("CFM1") ) {
			document.SpreadForm.action = "Controller?action=logout";
			document.SpreadForm.target = "_top";
			document.SpreadForm.submit();
		}

	}

