/* 
 * クラス名：サーバ通信
 * 概　　要：指定されたurlに対してサーバ通信を行い、結果を所持する。
 * 
 * 作　　者：INET)Kirioka
 * 作 成 日：2011/06/02
 * 
 * 改訂履歴：
 * 
 * -----------------------------------------------------------------------------
 */

function httpConnectionClass(url, paraName)
{
    this.url       = url;                //リクエストURL
    this.paraName  = paraName;           //パラメータ名
    this.reqPara   = new Array;          //リクエスト情報を配列で所持
    this.resPara   = new Array;          //レスポンス情報を配列で所持
    this.errMsg    = "";                 //エラーメッセージ
    
}
//------------------------------------------------------------------------------
// リクエスト情報の配列を初期化
//------------------------------------------------------------------------------
httpConnectionClass.prototype.clrReqParam = function ()
{
    this.reqPara  = new Array;
}
//------------------------------------------------------------------------------
// レスポンス情報の配列を初期化
//------------------------------------------------------------------------------
httpConnectionClass.prototype.clrResParam = function ()
{
    this.resPara  = new Array;
}
//------------------------------------------------------------------------------
// リクエスト情報を配列に追加
//------------------------------------------------------------------------------
httpConnectionClass.prototype.addParam = function (para)
{
    this.reqPara.push(para);
}

//------------------------------------------------------------------------------
// リクエストの発行（POSTメソッド）
//------------------------------------------------------------------------------
httpConnectionClass.prototype.request = function ()
{
    this.errMsg = "";
    //リクエスト情報チェック
    if (this.url == '' || this.paraName == '') {
        this.errMsg = "データベースとの通信でエラーが発生しました。";
        return (false);
    }
    //リクエストパラメータ作成
    var value = "";
    if (this.reqPara.length > 0) {
        value = this.paraName + "=" + this.reqPara[0];
        for(i=1; i<this.reqPara.length; i++) {
            value = value.concat("&" + this.paraName + "=" + encodeURIComponent(this.reqPara[i]));
        }
    }
    //リクエスト処理
    if (window.XMLHttpRequest){
        xmlHttp = new XMLHttpRequest();
    }else{
        if (window.ActiveXObject){
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }else{
            xmlHttp = null;
        }
    }
    xmlHttp.open("POST", this.url, false);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=shift_jis");
    xmlHttp.send(value);
    //レスポンス情報を配列に格納(半角カンマ＋改行の改行と最後の要素は削除)
    var resTxt = xmlHttp.responseText.replace(/,\n/g, ",");
    var resArr = Array();
    resArr = resTxt.split(",");
    for (i=0;i < resArr.length - 1;i++) {
        this.resPara.push(resArr[i]);
    }
    //リクエスト結果チェック
    if (xmlHttp.readyState != 4 || xmlHttp.status != 200) {
        this.errMsg = "データベースとの通信でエラーが発生しました。";
        return (false);
    }
    return (true);
}


