/******************************************************************************
 *　スクリプト内実行モード設定


 *
 *　デバッグフラグ　Debug true..デバッグ中　false..ノーマル動作


 ******************************************************************************/
var Debug = false;

/******************************************************************************
 *　共通定数定義
 ******************************************************************************/
//ウィンドウの通常スタイル
var WINDOW_DEFAULT_STYLE = "toobar=no,localtion=no,directories=no,status=no,scrollbars=no,menubar=no";
//ウィンドウの通常スタイル＋リサイズＮＧ
var WINDOW_DEFAULT_STYLE_NORESIZE = WINDOW_DEFAULT_STYLE + ",resizable=no";
//ウィンドウの通常スタイル＋リサイズＯＫ
var WINDOW_DEFAULT_STYLE_RESIZE = WINDOW_DEFAULT_STYLE + ",resizable=yes";

//色定数
var NORMAL_BACK_COLOR = '#FFFFFF';	//通常色
var ERROR_BACK_COLOR = '#FFA07A';		//エラー色

var AutoRefreshTimerID = 10;

/******************************************************************************
 *　指定したターゲットへURLを送信する
 *
 *　引数１：argTarget	：送信先ターゲット
 *　引数２：argUrl		：送信URL
 *　引数３：argForce	：強制送信フラグ true..強制送信　false..エラーチェックあり
 ******************************************************************************/
function GoActionURL(argTarget, argUrl, argForce) {
	var IsValid = true;

	if(argForce!="TRUE") {
		//Validatorコントロールを使用する場合の対応


		if (typeof(Page_ClientValidate) == 'function') {
			IsValid = Page_ClientValidate();
		}
	}

	if(IsValid) {
		document.Form1.target=argTarget;
		document.Form1.action=argUrl;
	}
}

/******************************************************************************
 *　自動リフレッシュ機能セットアップ
 *
 ******************************************************************************/
function SetupAutoRefresh() {
	timerID = 10;

	clearInterval(timerID);
	timerID = setInterval("AutoRefresh()", 1500000);
	//timerID = setInterval("AutoRefresh()", 5000);		//テスト用に５秒
}
function AutoRefresh() {
	location.reload(true);
}

/******************************************************************************
 *　呼び出し元の画面の項目をセットする
 *
 *　引数１：argTarget	：呼び出しもとの項目名

 *　引数２：argValue	：セットする値
 ******************************************************************************/
function AutoSendValue(argTarget, argValue) {

	try {
		window.top.opener.document.getElementById(argTarget).value = argValue;
	}catch(e) {
		ShowExceptionMessage("AutoSendValue", e)
	}
	return false;

}

/******************************************************************************
 *　呼び出し元の画面の項目をセットする
 *
 *　引数１：argTarget	：呼び出しもとの項目名

 *　引数２：argValue	：セットする値
 ******************************************************************************/
function StopEnter2Submit(argEvent, argName)	{

	try {
		var key = 0;
		if (typeof(argEvent.keyCode) != 'undefined') {
	   		key = argEvent.keyCode;
		} else if (typeof(argEvent.which) != 'undefined') {
    		key = argEvent.which;
		}
		if (key == 0xd) {
			if (typeof(argName) != 'undefined' && argName != '') {
    			//document.forms[0].elements[argName].click();
    			return true;
    		}
    		return false;
		}
	}catch(e) {
		//ShowExceptionMessage("StopEnter2Submit", e);
	}
		
}

/******************************************************************************
 *　IMEを制御する
 *
 *　引数１：argTarget	：スタイル設定対象コントロール名

 *　引数２：argMode		：設定モード

 ******************************************************************************/
function SetIMEMode(argTarget, argMode) {

	document.Form1.elements[argTarget].style.imeMode = argMode;

}

/******************************************************************************
 *　ウィンドウのセンタリング
 *
 ******************************************************************************/
function WindowCenter(argWin) {

	var posLeft = (screen.width - argWin.document.body.clientWidth) / 2;
	var posTop = (screen.height - argWin.document.body.clientHeight) / 2;

	argWin.moveTo(posLeft, posTop);

	return false;
}

/******************************************************************************
 *　検索ウィンドウ自動選択ウィンドウ
 *
 *　引数１：argWindowKind	：検索ウィンドウの種類

 *　引数２：argUrl			：検索ウィンドウ表示URL
 *　引数３：argSendField	：デフォルトの値
 ******************************************************************************/
function AutoSetWindowOpen(argWindowKind, argUrl, argSendField) {

	try {
		var style = "toobar=no,localtion=no,directories=no,status=no,scrollbars=no,menubar=no,width=1px,height=1px";
	
		var SendValue = "";
		var sendfield = argSendField.split(",");

		//デフォルト値設定		
		for(var i=0; i<sendfield.length; i++) {
			if(sendfield[i]!="") {
				SendValue += document.getElementById(sendfield[i]).value;
			}
		}
		
		//送信URL生成
		var open_url = argUrl + "&sendval=" + SendValue;
		
		return OpenWindow(open_url, argWindowKind, style);
	}catch(e) {
		ShowExceptionMessage("OpenSearchWindow", e)
	}
	return false;
}

/******************************************************************************
 *　指定したターゲットへURLを送信する
 *
 *　引数１：argWindowKind	：検索ウィンドウの種類

 *　引数２：argUrl			：検索ウィンドウ表示URL
 *　引数３：argSendField	：デフォルトの値
 *　引数４：argWindowStyle	：検索ウィンドウのスタイル
 ******************************************************************************/
function OpenSearchWindow(argWindowKind, argUrl, argSendField, argWindowStyle) {

	try {

//		ShowMessage(argUrl);
//		ShowMessage(argSendField);
//		ShowMessage(argWindowStyle);

		var SendValue = "";
		var sendfield = argSendField.split(",");

		//デフォルト値設定		
		for(var i=0; i<sendfield.length; i++) {
			if(sendfield[i]!="") {
				SendValue += document.getElementById(sendfield[i]).value;
			}
		}
		
		//送信URL生成
		var open_url = argUrl + "&sendval=" + SendValue;

//		ShowMessage(open_url);
					
		return OpenWindow(open_url, argWindowKind, argWindowStyle);
		
	}catch(e) {
		ShowExceptionMessage("OpenSearchWindow", e)
	}
	return false;

}
/******************************************************************************
 *　ウィンドウを表示する
 *
 *　引数１：argUrl		：送信URL
 *　引数２：argTarget	：送信先ターゲット
 *　引数３：argStyle	：表示ウィンドウのスタイル
 ******************************************************************************/
function OpenWindow(argUrl, argTarget, argStyle) {
	try {
		if(argStyle=="") {
			window.open(argUrl, argTarget, WINDOW_DEFAULT_STYLE_RESIZE);
		}else {
			window.open(argUrl, argTarget, argStyle);
		}
	}catch(e) {
		ShowExceptionMessage("OpenWindow", e)
	}
	return false;
}

/******************************************************************************
 *　画像表示用ウィンドウを作成する
 *
 *　引数１：argUrl		：画像URL
 ******************************************************************************/
function ImageWindow(argUrl)
{
	var IW1;
	IW1=window.open("","ImageWindow","scrollbars=yes,resizable=yes,toolbar=no,location=no,directories=no,status=no,width=320,height=290");
	IW1.document.focus();
	IW1.document.write("<HTML><HEAD><TITLE>画像</TITLE>");
	IW1.document.write("</HEAD>");
	IW1.document.write("<FORM><TABLE cellSpacing='0' cellPadding='0' border='0' width='100%'>");
	IW1.document.write("<TR><TD align='center' height='70%'><IMG id='img100' src='" + argUrl + "' width=280></TD></TR>");
	IW1.document.write("<TR><TD align='center' height='10'></TD></TR>");
	IW1.document.write("<TR><TD align='center' height='20%'><INPUT type='image' name='ImgW' src='../images/btn_close.gif' onClick='window.close()'></TD></TR>");
	IW1.document.write("</TABLE></FORM>");
	IW1.document.write("</HTML>");
	IW1.document.close();
}

/******************************************************************************
 *　画像表示用ウィンドウを作成する（オプション設定可能バージョン）
 *
 *　引数１：argUrl		：画像URL
 *　引数２：argOpt		：window.openオプション（未設定時はデフォルト使用）
 *　引数３：argTitle		：タイトル（未設定時はデフォルト使用）
 ******************************************************************************/
function ImageWindowWithOption(argUrl,argOpt,argTitle)
{
	var IW1;
	if(argOpt=="") {
		IW1=window.open("","ImageWindow","scroolbars=yes,resizable=yes,toolbar=no,location=no,directories=no,status=no,width=280,height=250");
	}else {
		IW1=window.open("","ImageWindow",argOpt);
	}
	IW1.document.focus();
	if(argTitle=="") {
		IW1.document.write("<HTML><HEAD><TITLE>画像</TITLE>");
	}else {
		IW1.document.write("<HTML><HEAD><TITLE>宿画像</TITLE>");
	}
	IW1.document.write("</HEAD>");
	IW1.document.write("<FORM><TABLE cellSpacing='0' cellPadding='0' border='0'>");

	IW1.document.write("<TR><TD align='center'><IMG id='img100' src='" + argUrl + "'></TD></TR>");
	IW1.document.write("<TR><TD align='center'></TD></TR>");
	IW1.document.write("<TR><TD align='center'><INPUT type='image' name='ImgW' src='../images/btn_close.gif' onClick='window.close()'></TD></TR>");
	IW1.document.write("</TABLE></FORM>");
	IW1.document.write("</HTML>");
	IW1.document.close();
}
/******************************************************************************
 *　スプレッドの指定列をチェックする
 *
 *　引数１：argTarget	：処理対象のスプレッド
 *　引数２：argCol		：対象列番号
 ******************************************************************************/
function SpreadCheckOnCols(argTarget, argCol) {

	try {
		var target = document.all(argTarget);
		var rows = target.GetRowCount();
		var col = parseInt(argCol);
		for(row=0; row<rows ;row++) {
			target.SetValue(row, col, true, false);
		}
	}catch(e) {
		ShowExceptionMessage("SpreadCheckOnCols", e)
	}
	return false;
	
}

/******************************************************************************
 *　指定した行を先頭に位置づける
 *
 *　引数１：argSpread	：処理対象のスプレッド
 *　引数２：argCol		：チェック対象の列番号
 *　引数３：argTarget	：比較データの項目名


 ******************************************************************************/
function SpreadFindToMove(argSpread, argCol, argTarget) {
	
	try {
		var CheckString = "";
		var FindIndex = -1;
		//
		var TargetString = document.all(argTarget).value;
		var target = document.all(argSpread);
		var col = parseInt(argCol);
		var rows = target.GetRowCount();
		//
		for(row=0; row<rows ;row++) {
			CheckString = target.GetValue(row, col);
			FindIndex = CheckString.indexOf(TargetString);
			if(FindIndex!=-1) {	//Find!!
				SetCellActive(argSpread, row, "0");
				break;
			}
		}
	}catch(e) {
		ShowExceptionMessage("SpreadFindToMove", e)
	}
		
	return false;
}

/******************************************************************************
 *　指定した行を先頭に位置づける
 *
 *　引数１：argSpread	：処理対象のスプレッド
 *　引数２：argRow		：対象行番号
 *　引数２：argCol		：対象列番号
 ******************************************************************************/
function SetCellActive(argSpread, argRow, argCol) {

	try {
		var spread = document.all(argSpread);

		var Row = parseInt(argRow);
		var Col = parseInt(argCol);

		spread.SetActiveCell(Row, Col);
		var cell = spread.GetCellByRowCol(Row, Col); 
		var rowHeader = spread.all(spread.id+"_rowHeader");
		var view = spread.all(spread.id+"_view"); 

		if(view==null) return false;

		view.scrollTop = cell.offsetTop; 
		if (rowHeader!=null) { 
			rowHeader.scrollTop = view.scrollTop; 
		} 
	}catch(e) {
		ShowExceptionMessage("SetCellActive", e);
	}

	return false;
}

/******************************************************************************
 *　自ウィンドウをクローズする
 *
 ******************************************************************************/
function closeMyWindow() {
	window.top.close();
	return false;
}

/******************************************************************************
 *　項目のエラー状態指定で背景色を変更する
 *
 *　引数１：エラー対象項目
 *　引数２：エラー状態　true..エラー　false..通常
 *
 ******************************************************************************/
function SetFieldColor(argTarget, IsError) {

	try {
		if(IsError) {	//エラー
			document.all[argTarget].style.backgroundColor = ERROR_BACK_COLOR;
		}else {			//通常
			document.all[argTarget].style.backgroundColor = NORMAL_BACK_COLOR;
		}
	}catch(e) {
		ShowExceptionMessage("SetFieldColor", e);
	}

	return false;
}

/******************************************************************************
 *　メニューのサイズを元に戻す


 *
 *　引数１：argWidth ： メニューサイズ
 *　戻り値：なし


 *
 ******************************************************************************/
function ResetMenuWidth(argWidth) {

	try {
		//document.all["menumenu"].cols = argWidth;
		//Form1.menumenu.cols = 105;
		parent.framesetsize(0,105);
	}catch(e) {
		ShowExceptionMessage("ResetMenuWidth", e);
	}
	return false;
}

/******************************************************************************
 *　メッセージ取得関数
 *
 *　引数１：argMessageId ：メッセージコード


 *　戻り値：編集されたメッセージ
 *
 ******************************************************************************/
function DispMessage(argMessage) {

	try {
		ShowMessage(argMessage);
	} catch (e) {
		ShowExceptionMessage("DispMessage", e);
	};

	return false;
}

/******************************************************************************
 *　メッセージ取得関数
 *
 *　引数１：argMessageId ：メッセージコード


 *　戻り値：編集されたメッセージ
 *
 ******************************************************************************/
/*
function GetMessage(argMessageId) {
	
	for(var i=0;i<arguments.length;i++) alert(arguments[i]);
	
	//メッセージの雛形を取得



	var Message;
	for(var i=0; i<arguments.length; i++) {

	}
	return argMessageId;
}
*/	

/******************************************************************************
 *　例外発生時のメッセージを表示する
 *
 *　引数１：argFuncName	：関数名


 *　引数２：argErrorObj	：例外オブジェクト


 *
 ******************************************************************************/
function ShowExceptionMessage(argFuncName, argErrorObj) {
	ShowMessage("JavaScriptの処理で例外が発生しました。(" +  argFuncName + ":" + argErrorObj);
}

/******************************************************************************
 *　メッセージを表示する
 *
 *　引数１：argMessage	：表示メッセージ
 *
 ******************************************************************************/
function ShowMessage(argMessage) {
	alert(argMessage);
}

/******************************************************************************
 *　メッセージを表示する
 *
 *　引数１：argMessage	：表示メッセージ
 *　戻り値：true..OK　false..キャンセル
 *
 ******************************************************************************/
function ShowConfirm(argMessage) {
	if(Confirm(argMessage)) {
		return true;
	}else {
		return false;
	}
}

/******************************************************************************
 *　デバッグメッセージ表示
 *
 *　引数１：argString	：表示メッセージ
 ******************************************************************************/
function ShowDebugMessage(argString) {

	if(Debug==true) {
		ShowMessage(argString);
	}
	return false;
}


//■■■　以下デバッグ用ロジック　■■■
/******************************************************************************
 *　実行確認関数
 *
 ******************************************************************************/
function CallingCheck() {

	ShowMessage("呼び出されました");

	return false;
}

function SetColor() {
	alert('SetColor');
	try {
		SetFieldColor('TextBox1', true);
	}catch(e) {
		ShowExceptionMessage("SetColor", e);
	}

	return false;
}

