var DBAccess = Class.create({

  // コンストラクタ
  initialize: function(disp_mode) {
    // 入出力データオブジェクト（Arrayクラス）の生成を行う
    ioData = new Array();

    // XMLHttpRequestオブジェクトの生成を行う
    if( window.XMLHttpRequest ) { // IE以外、またはIE7以降
      // XMLHttpRequestでオブジェクト生成する
      httpObj = new XMLHttpRequest();
    }
    else if( window.ActiveXObject ) { // IE6の場合
      try {
        // ActiveXObjectでオブジェクト生成する
        httpObj = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e) {
        alert("XMLHttpRequestオブジェクト生成失敗");
        document.error_chk.action = '/error';
        document.error_chk.submit();
        return;
      }
    }

    // HTTPレスポンスデータの初期設定処理
    ioData.completFlag = 0;        // 検索実施フラグ
    ioData.resultData = 0;         // 検索結果
    ioData.error_message = "";     // エラー時メッセージ
    ioData.img = "";               // 検索実施フラグ
    ioData.disp_mode = disp_mode;  // 表示モード（コミュニティ検索orヘッダ）

    // HTTPレスポンスデータ受信時に呼び出すイベントハンドラ登録
    httpObj.onreadystatechange = this.getResponse;
  },

  // DB書込依頼
  setData : function (get_community_id , value,img) {
    var url = '/community/inserthope';
    var data = 'community_id=' + get_community_id + '&hope=' + value;

    // 変更したいイメージのID
    ioData.img = img;
    // フラグをONに遷移する
    ioData.completFlag = 1;
    // 指定したURLに接続
    httpObj.open( 'POST', url, true );
    // POSTデータ用ヘッダ
    httpObj.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8" );
    // HTTPリクエストを送信
    httpObj.send( data );
  },

  // DB書込依頼（検索条件保存）
  setSaveSearch : function (value) {
    var url = '/search/savesearch/insert?';
    var urldata = url + value;
    var data = "";

    // フラグをONに遷移する
    ioData.completFlag = 1;

    // 指定したURLに接続
    httpObj.open( 'GET', urldata, true );

    // POSTデータ用ヘッダ
    httpObj.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8" );
    // HTTPリクエストを送信
    httpObj.send( data );
  },


  // HTTPレスポンスデータ取得
  getDataObj : function () {
    // 自分が保持している入出力データオブジェクト（Arrayクラス）を渡す
    return(ioData);
  },

  // レスポンスデータ受信（登録関数なので XMLHttpRequest オブジェクトで動作する処理）
  getResponse : function ( ) {
    if(httpObj.readyState == 4 && httpObj.responseText ) { // 受信完了でかつDB書き込み結果が空でないの場合
      // レスポンスを取得し,evalしてJavascript化
      eval("ioData.resultData = " + httpObj.responseText);
      // エラーフラグによる処理分岐（エラー時は、アラート取得してエラーページへ移動する）
      switch(ioData.resultData[0].error_flag) {
      case 0:
        // フラグをOFFに遷移する
        ioData.completFlag = 0;
        return;
      case 1:
//        デバック用
//        ioData.error_message = "コミュニティIDの取得失敗です";
//        alert(ioData.error_message);
        document.error_chk.action = '/error';
        document.error_chk.submit();
        break;
      case 2:
//        デバック用
//        ioData.error_message = "指定されたコミュニティIDが存在しなかったです";
//        alert(ioData.error_message);
        document.error_chk.action = '/error';
        document.error_chk.submit();
        break;
      case 3:
//        デバック用
//        ioData.error_message = "コミュニティが非表示の状態です";
//        alert(ioData.error_message);
        document.error_chk.action = '/error';
        document.error_chk.submit();
        break;
      case 4:
//        デバック用
//        ioData.error_message = "ログインしてないです";
//        alert(ioData.error_message);
        if(ioData.disp_mode == 0)    {
          document.error_chk.action = '/my/top';
          document.error_chk.submit();
        } else {
          // 一旦ログインさせる画面に行った後コミュニティトップ画面に戻ってくる
          document.error_chk.action = '/community/join/login_chk/' + ioData.resultData[0].community_id;
          document.error_chk.submit();
        }
        break;
      case 5:
//      ここは本番でもalertを出す
        ioData.error_message = "すでに参加しています";
        alert(ioData.error_message);
        // フラグをOFFに遷移する
        ioData.completFlag = 0;
        return;

      case 6:
//        デバック用
//        ioData.error_message = "期待度が選択されていない状態です";
//       alert(ioData.error_message);
        document.error_chk.action = '/error';
        document.error_chk.submit();
        break;

      case 7:
//        デバック用
//        ioData.error_message = "[検索結果登録]パラメータが不正です。";
//       alert(ioData.error_message);
        document.error_chk.action = '/error';
        document.error_chk.submit();
        break;

      case 8:
//        デバック用
//        ioData.error_message = "[検索結果登録]DB登録に失敗しました。";
//       alert(ioData.error_message);
        document.error_chk.action = '/error';
        document.error_chk.submit();
        break;
      }
    }
  }
});
