
// モデレーション関連のメッセージ
messageResource = {
  commonExplanation : 'フォーラムの管理にご協力お願いします。<br />この投稿が下の説明に該当すると思ったとき「だけ」、クリックすることでご協力いただければ幸いです。<br />注意: 違反報告機能は、自分と違う意見を封じるためのものではありません。<br /><br />',
  doneIt: 'ご報告ありがとうございます。<br />もし間違ってボタンを押されても問題はありません。詳しくは<a href="/faq">「よくある質問」</a>をご覧ください',
  1: {
    label: "種類違い",
    explanation: "書き込んでいるスレッドやカテゴリーが違う"
  },
  2: {
    label: "スパム",
    explanation: "シェアやスレッドでの議論と無関係な宣伝や主義主張の書き込みである"
  },
  3: {
    label: "複数投稿",
    explanation: "同じ内容の多数箇所への書き込みや、繰り返しの書き込みである"
  },
  4: {
    label: "注意",
    explanation: "投稿内容に問題あり(公序良俗に反する内容、他者のプライバシー情報の公開、悪意のあるURLや電話番号への誘導、等)"
  },
};

var Moderation = {
 handleSuccess : function(o){
  if(o.responseText !== undefined){
//alert(o.argument.messageId + ", " + o.argument.modType);
    var messageId = o.argument.messageId;
    var modType = o.argument.modType;
    var mod = document.getElementById('mod_'+messageId);

    // 成功の場合の書き換え結果 for moderationNNN
/*    mod.innerHTML = "Transaction id: " + o.tId;
    mod.innerHTML += "HTTP status: " + o.status;
    mod.innerHTML += "Status code message: " + o.statusText;
    mod.innerHTML += "<li>HTTP headers: <ul>" + o.getAllResponseHeaders + "</ul></li>";
    mod.innerHTML += "PHP response: " + o.responseText;
    mod.innerHTML += "Argument object: " + o.argument;*/
    mod.innerHTML = messageResource.doneIt;
  }
 },
 handleFailure : function(o){
  if(o.responseText !== undefined){
//alert(o.argument.messageId + ", " + o.argument.modType);
    var messageId = o.argument.messageId;
    var modType = o.argument.modType;
    var mod = document.getElementById('mod_'+messageId);

    // 失敗の場合の書き換え結果 for moderationNNN
/*    mod.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
    mod.innerHTML += "<li>HTTP status: " + o.status + "</li>";
    mod.innerHTML += "<li>Status code message: " + o.statusText + "</li>";*/
    mod.innerHTML = messageResource.doneIt;

    /* tooltipが出てる場合、それをすぐ消す */
    YAHOO.util.Dom.setStyle("tt_"+messageId+"_"+modType, 'display', 'none');
  }
 }
}

function moderate(e, param){
//alert(param.messageId + ", " + param.modType);
  YAHOO.util.Connect.asyncRequest(
    "POST",
    "/bbs/message/moderate/id/"+param.messageId+"/type/"+param.modType,
//    "/bbs/frontend_dev.php/message/moderate/id/"+param.messageId+"/type/"+param.modType,
    {
        success: Moderation.handleSuccess,
        failure: Moderation.handleFailure,
/*        timeout: 10000,*/
        argument: {
          messageId: param.messageId,
          modType: param.modType
        }
    },
    ""
  );
  return false;
}

/**
 * ボタンを作成し、ツールチップとclickハンドラをつける
 */
function makeModerationButton(messageId, modType) {
  new YAHOO.widget.Button({ 
    id: 'mod_'+messageId+'_'+modType,
    type: "button",  
    label: messageResource[modType].label,
    container: "mod_"+messageId,
    checked: false,
    onclick: {
      fn: moderate,
      obj: {
        messageId: messageId,
        modType: modType
      }
    }
  });
}
function makeModerationTooltip(messageId, modType) {
  // mod_メッセージid_タイプ に、tt_メッセージid_タイプ のツールチップをつける
  ttV = new YAHOO.widget.Tooltip(
    "tt_"+messageId+"_"+modType,
    {
      context:"mod_"+messageId+"_"+modType,
      text:"hoge",
      text: messageResource.commonExplanation
            + messageResource[modType].explanation,
      showdelay:100,
      hidedelay:100
    });
}

/* mod_メッセージid_タイプボタンの作成 */
function attachModerationButton(messageId) {
  makeModerationButton(messageId, 1);
  makeModerationButton(messageId, 2);
  makeModerationButton(messageId, 3);
  makeModerationButton(messageId, 4);
}
/* mod_メッセージid_タイプ に、tt_メッセージid_タイプ のツールチップをつける */
function attachModerationTooltip(messageId) {
  makeModerationTooltip(messageId, 1);
  makeModerationTooltip(messageId, 2);
  makeModerationTooltip(messageId, 3);
  makeModerationTooltip(messageId, 4);
}

/*
 * ボタンの作成のあとDOMの再描画をしないとツールチップの割り当てができない
 * ので、setTimeout()で待ち合わせ
 */
function attachModeration(messageId) {
  attachModerationButton(messageId);
  setTimeout(function() { attachModerationTooltip(messageId); }, 1);
}
