////////////////////////////////////////////////////////////
// Module Name : Javascript For Ajax
// Author : Tanaka
// $Id$
// Production   : Okushin System Ltd.
////////////////////////////////////////////////////////////

// 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('Giving up :( Cannot create an XMLHTTP instance');
    }

    return xmlhttp;
}

// 送信処理
function sendRequest (method, url, data, async, callback)
{

    // XMLHttpRequestオブジェクト生成
    var xmlhttp = createHttpRequest();

    //ブラウザ判定
    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 : readyState==3でも受信するので通常はonloadが安全
    // Win ie      : onloadは動作しない
    // Konqueror   : onloadが不安定
    if(window.opera || safari || mozes){
        xmlhttp.onload = function ()
        {
            callback(xmlhttp);
        }
    } else {
        xmlhttp.onreadystatechange = function ()
        {
            // サーバーからの応答判定
            //   0 : 初期化されていません
            //   1 : 読み込み中です
            //   2 : 読み込み完了
            //   3 : 双方向に扱えます
            //   4 : すべて完了しました
            if (xmlhttp.readyState == 4) {

                // サーバーの応答コード判定
                //   200 : OK
                if (xmlhttp.status == 200) {
                    callback(xmlhttp);
                } else {
                    alert("There was a problem with the request.");
                }
            }
        }
    }

    xmlhttp.open(method, url, async);
    xmlhttp.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
    xmlhttp.send(data);
}



	//ファイルにアクセスし受信内容を確認します
	function requestFile( data , method , fileName , async ,callback )
	{
		//XMLHttpRequestオブジェクト生成
		var httpoj = createHttpRequest()	
		
		//受信時に起動するイベント
		httpoj.onreadystatechange = function()	
		{ 
			//readyState値は4で受信完了
			if (httpoj.readyState==4)	
			{ 
				//コールバック
				callback(httpoj)
			}
		}

		//open メソッド
		httpoj.open( method , fileName , async )	
		//send メソッド
		httpoj.send( data ) 
	}

