var oj = false
////
// XMLHttpRequestオブジェクト生成
//
// @sample oj=createHttpRequest()
// @return XMLHttpRequestオブジェクト
//
function createHttpRequest()
{
	if(window.ActiveXObject){
		 //Win e4,e5,e6用
		try {
		  return new ActiveXObject("Msxml2.XMLHTTP") ;
		} catch (e) {
		  try {
		    return new ActiveXObject("Microsoft.XMLHTTP") ;
		  } catch (e2) {
		    return null ;
 		  }
 		}
	} else if(window.XMLHttpRequest){
		 //Win Mac Linux m1,f1,o8 Mac s1 Linux k3用
		return new XMLHttpRequest() ;
	} else {
		return null ;
	}
}

////
// 送信関数
//
// @sample sendRequest(onloaded,'&p=1','POST','./about2.php',true,true)
// @param callback 受信時に起動する関数名
// @param data	 送信するデータ
// @param method "POST" or "GET"
// @param urlリクエストするファイルのURL
// @param async	非同期ならtrue 同期ならfalse
// @param sload	スーパーロード trueで強制、省略またはfalseでデフォルト
//
function sendRequest(callback,data,method,url,async,sload)
{
	//XMLHttpRequestオブジェクト生成
	//var oj = createHttpRequest()
	oj = createHttpRequest()
	if( oj == null ) return null
	
	//強制ロードの設定
	var sload = (!!sendRequest.arguments[5])?sload:false;
	if(sload)url=url+"?t="+(new Date()).getTime()
	//ブラウザ判定
	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 
	
	//タイムアウト処理(5分)
	timerID = setTimeout("HttpAbort('result','強制切断','タイムアウト')",300000)

	//受信処理
	if(window.opera || safari || mozes){
		oj.onload = function () { callback(oj) }
	} else {
		oj.onreadystatechange =function () 
		{
			if ( oj.readyState == 4 ){
				if (oj.status == 200) {
					callback(oj)
				//} else if (oj.status == 404) {
				} else {
					ErrAbort('result','エラー検出による強制切断','xmlhttp-readyState:[' + oj.readyState + ']<br>xmlhttp-status:[' + oj.status + ']')
				}
			} else {
				//データ送信中の可能性も考慮し、タイムアウト処理で対処
			}
		}
	}
	
	//URLエンコード
	if(method == 'GET') {
		if(data!=""){
			//&と=で一旦分解しencode
			var encdata = '';
			var datas = data.split('&');
			//
			for(i=0;i<datas.length;i++)
			{
				var dataq = datas[i].split('=');
				encdata += '&'+encodeURIComponent(dataq[0])+'='+encodeURIComponent(dataq[1]);
			}
			url=url + encdata;
		}
	}

	//open メソッド
	oj.open( method , url , async )
	
	//ヘッダセット
	if(method == 'POST') {
		
		//このメソッドがWin Opera8.0でエラーになったので分岐(8.01はOK)
		if(!window.opera){
			oj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
		} else {
			if((typeof oj.setRequestHeader) == 'function')
				oj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
		}
	}
	
	//send メソッド
	oj.send(data)
}
////
// XMLHttp切断
//
function HttpAbort(id, msg, sql_st) {
	if (oj.readyState == 0 || oj.readyState == 4) return;
	oj.abort();

	document.getElementById('list').innerHTML = 'XMLHttp切断';
	clearTimeout(timerID);
}

////
// エラー切断
//
function ErrAbort(id, msg, sql_st) {
	oj.abort();

//	document.getElementById('list').innerHTML = msg;
	document.getElementById('list').innerHTML = msg + sql_st;
	clearTimeout(timerID);
}
