/*
+-----------------------------
| Ajax関連
+-----------------------------
*/
if(typeof gsi.ajaxUtils == 'undefined'){
	gsi.ajaxUtils = new Object();
}
// +-----------------------------
// | SUBMIT処理(Ajaxで画面内容を更新)
// +-----------------------------
gsi.ajaxUtils.submit = function (actionName, actionPath, target, formId)
{
	//cancel event observation (for IE).
	if(Event != undefined){
		Event.stopObserving(window,'beforeunload', checkBrowserUnload); 
	}
	//複数のフォームがある場合、一番最後に定義されたフォームを使用する
	//Ajaxで動的にFORMタグが増えていく為
	var frm;
	if(formId=='')
	{
		frm = gsi.forms.getCurrentForm();
	}else{
		frm = document.forms[formId];
	}
	frm.actionName.value = actionName;
	frm.action = actionPath;
	new Ajax.Request(
		actionPath,
		{
			method: "post",
			parameters: Form.serialize(frm),
			onComplete: function(req)
			{
				gsi.ajaxUtils.ajaxComplete(req,target)
			},
			onFailure: function()
			{
				gsi.ajaxUtils.ajaxError(target)
			}
		}
	);
};
// +-----------------------------
// | Ajaxエラー時コールバック関数
// +-----------------------------
gsi.ajaxUtils.ajaxError = function (target)
{
	$(target).innerHTML = "通信エラー";
};
// +-----------------------------
// | Ajaxレスポンス用コールバック関数
// +-----------------------------
gsi.ajaxUtils.ajaxComplete = function(request, target)
{
	try{
		eval(request.responseText);
		return;
	}catch(E){
		//レスポンスで返ってきたHTMLでターゲットのDIVを書き換える
		$(target).innerHTML = request.responseText;
		var frm = gsi.forms.getCurrentForm();
		if(frm.js != undefined)
		{
			gsi.forms.loadJs(frm.js.value);
		}
		
		// エラー画面にはerrorPageを宣言しておく。
		var errorElement = document.getElementById("errorPage");
		if( errorElement == null || errorElement == undefined){
			var scriptElement = document.getElementById("loadScript" + frm.name);
			if(scriptElement != null && scriptElement != undefined)
			{
				eval(scriptElement.innerHTML);
			}
		}
		gsi.ajaxUtils.setToken();
	}
}
// +-----------------------------
// | SUBMIT処理(Ajaxで画面内容を更新) コンボボックス用
// +-----------------------------
gsi.ajaxUtils.combo = function (actionName, actionPath, target)
{
	//複数のフォームがある場合、一番最後に定義されたフォームを使用する
	//Ajaxで動的にFORMタグが増えていく為
	var frm = gsi.forms.getCurrentForm();
	frm.actionName.value = actionName;
	frm.action = actionPath;
	new Ajax.Request(
		actionPath,
		{
			method: "post",
			parameters: Form.serialize(frm),
			onComplete: function(req)
			{
				gsi.ajaxUtils.ajaxCompleteCmb(req,target)
			},
			onFailure: function()
			{
				gsi.ajaxUtils.ajaxError(target)
			}
		}
	);
};
// +-----------------------------
// | Ajaxレスポンス用コールバック関数
// +-----------------------------
gsi.ajaxUtils.ajaxCompleteCmb = function(request, target)
{
	var frm = gsi.forms.getCurrentForm();
	setOptionsFromAjax(request, frm.elements[target]);
};



//+-----------------------------
//| トークン設定処理
//+-----------------------------
gsi.ajaxUtils.setToken = function(){
	var frm = gsi.forms.getCurrentForm();
	var param = "";
	var url = contextRoot + '/cmn/token.cgi?actionName=open';
	var callMethd = gsi.ajaxUtils.setTokenArea;
	var myAjax = new Ajax.Request(
	url,
	{
		method: "get",
		parameters: param,
		onComplete: callMethd
	});
}

//+-----------------------------
//| トークン設定戻り処理
//+-----------------------------
gsi.ajaxUtils.setTokenArea = function(originalRequest){
	var frm = gsi.forms.getCurrentForm();
	document.getElementById("tokenArea").innerHTML= originalRequest.responseText;
	if (typeof document.getElementById("token_key").textContent == "undefined")	{
		// IE
		frm.tokenkey.value = token_key.innerText;
	}else{
		// Firefox
		frm.tokenkey.value = document.getElementById("token_key").textContent
	}
}


/** Function for Browser Back */
function checkBrowserUnload(e) {   
     window.event.returnValue = "※注意※ログイン画面へ戻ります。";   
}
