/*==============
XMLHttpRequestオブジェクト生成
================
obj = 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 moz1,firefox1,opera8 Mac safari1 Linux k3用
		return new XMLHttpRequest() ;
	}else{
		return null ;
	}
}



/*===============
送信関数
=================
sendRequest(onloaded,'&p=1','POST','./smp.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 obj = createHttpRequest();
	if(obj == 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;

	//受信処理
	//operaはonreadystatechangeに多重レスバグがあるのでonloadが安全
	//Moz,FireFoxはobj.readyState==3でも受信するので通常はonloadが安全
	//Win ieではonloadは動作しない
	//Konquerorはonloadが不安定

	if(window.opera || safari || mozes){
		obj.onload = function(){
			callback(obj);
		}
	}else{
		obj.onreadystatechange = function(){
			if(obj.readyState == 4){
				callback(obj);
			}
		}
	}

	//エンコード
	if(method == 'GET'){
		//url = url + encodeURI(data);
		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 メソッド
	obj.open(method, url, async);

	if(method == 'POST'){
		//このメソッドがWin Opera8でエラーになったので分岐
		//if(!window.opera){
		//	obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		//}

		//このメソッドがWin Opera8.0でエラーになったので分岐(8.01はOK)
		if(!window.opera){
			obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
		}else{
			if((typeof obj.setRequestHeader) == 'function'){
				obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
			}
		}
	}

	//send メソッド
	obj.send(data);
}

