//==========================================================
// version_number = "$Id: ajax.js 1681 2009-09-29 08:04:34Z wakui $"
//==========================================================
//==========================================================
// Ajaxオブジェクト
//==========================================================
//==========================================================
// 共通変数
//==========================================================
var commonObj;  // 共通オブジェクト変数
var commonMode; // AjaxCallBack関数制御変数

//▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼
//==========================================================
// XMLHttpRequestオブジェクト生成
//==========================================================
function createHttpRequest(){
	var xmlhttp = null;
	if(window.ActiveXObject){
		try {
			// MSXML2以降用
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP") ;
		} catch (e) {
			try {
				// 旧MSXML用
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ;
			} catch (e2) {
			}
		}
	} else if(window.XMLHttpRequest){
		// Win Mac Linux m1,f1,o8 Mac s1 Linux k3用
		xmlhttp = new XMLHttpRequest() ;
		// Mozilla対応（バージョンにより、サーバーからXML mime-type のヘッダが
		//              帰ってこない場合、正常に動作しないことがある）
		// xmlhttp.overrideMimeType('text/xml');
	} else {
	}
	if (xmlhttp == null) {
		alert('XMLHTTPインスタンスを作成する事が出来ませんでした。');
	}
	return xmlhttp;
}
//==========================================================
// 送信処理
//==========================================================
function sendRequest(xmlhttp, method, url, async, data, callback){
	//ブラウザ判定
	var ua = navigator.userAgent;
	var safari  = ua.indexOf("Safari")!=-1;
	var konqueror = ua.indexOf("Konqueror")!=-1;
	var mozes = ((a = navigator.userAgent.split("Gecko/")[1] ) ? a.split(" ")[0] : 0) >= 20011128 ;
	// コールバック処理成否フラグ
	var callbackFlg = new Boolean(false);

	// サーバーからの受信処理
	// opera       : onreadystatechangeに多重レスバグがあるのでonloadが安全
	// Moz,FireFox : readyState==3でも受信するので通常はonloadが安全
	// Win ie      : onloadは動作しない
	// Konqueror   : onloadが不安定
	if(window.opera || safari || mozes){
		xmlhttp.onload = function (){
			callbackFlg = callback(xmlhttp);
		}
	} else {
		xmlhttp.onreadystatechange = function (){
			// サーバーからの応答判定
			//   0 : 初期化されていません
			//   1 : 読み込み中です
			//   2 : 読み込み完了
			//   3 : 双方向に扱えます
			//   4 : すべて完了しました
			if (xmlhttp.readyState == 4) {
				// サーバーの応答コード判定
				//   200 : OK
				if (xmlhttp.status == 200) {
					callbackFlg = callback(xmlhttp);
				} else {
					alert('リクエスト応答がありません。');
				}
			}
		}
	}
	xmlhttp.open(method, url, async);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlhttp.send(data);
	return (callbackFlg);
}
//==========================================================
// AJAX起動
//  execmode : 処理種類のフラグ
//  execfile : 実行URL
//     param : URLパラメータ
// commonObj : 呼び出し元オブジェクト
//==========================================================
function callAjax(execmode, execfile, param, tgtobj){
	// コールバック処理成否フラグ
	var callAjaxFlg = new Boolean(false);

	// 呼び出し元オブジェクトがnullの場合は処理を行わない
	if (tgtobj == null || tgtobj == 'null') {
		return false;
	}

	// XMLHttpRequestオブジェクト生成
	var xmlhttp = createHttpRequest();
	if (xmlhttp == null) {
		return false;
	}
	// 送信データパラメータ情報設定
	var data = param;
	commonMode = execmode;
	commonObj = tgtobj;
	// 送信処理
	callAjaxFlg = sendRequest(xmlhttp, "POST", execfile, false, data, callBack);
	return (callAjaxFlg);
}

function callBack(xmlhttp){
	var result = commonObj;
	if(commonMode == 'ins'){
		result.innerHTML = xmlhttp.responseText;
		return true;
	} else if (commonMode == 'static') {
		str = xmlhttp.responseText;
		seekResult = str.replace(/\r\n/g, '');
		seekResult = seekResult.replace(/\n/g, '');
		seekResult = seekResult.replace(/<BR>/g, '\n');
		// 処理結果コードを取得する
		if(seekResult == ''){
			return true;
		}
		var firstTabIndex = seekResult.search("\t");
		var judString = seekResult.substring(0, firstTabIndex);
		var dispString = seekResult.substring(firstTabIndex+1, seekResult.length);
		// アラートを出すが処理を続行するかどうか判定
		if(judString == '0'){
			alert(dispString);
			return true;
		} else {
			alert(dispString);
			return false;
		}
	} else if (commonMode == 'insVal') {
		result.value = xmlhttp.responseText;
		return true;
	} else {
		return true;
	}
}

