/**
 * ライブラリ： クチコミの評価
 */

//
var reviewEvaluation_idle = true;

/**
 *  クチコミ評価の追加
 *
 *  @param
 *  @return
 */
function getReviewEvaluationString(value_)
{
    //
    switch (value_)
    {
        case 1:
            return "参考になった";
        case 2:
            return "参考にならなかった";
        case 3:
            return "そのとおり！";
        case 4:
            return "好みが違うかな";
        case 5:
            return "ホントに行った？";
    }
}

/**
 *  クチコミを評価して、ページをリロードする。
 *
 *  @param
 *  @return
 */
function addReviewEvaluation(tenantId_,
                             reviewerId_,
                             clipId_,
                             evaluatorId_,
                             value_)
{
    //
    if (reviewEvaluation_idle)
    {
        //
        reviewEvaluation_idle = false;

        //
        jQuery.post("/service/addReviewEvaluation.php",
        {
            tenantId:tenantId_,
            reviewerId:reviewerId_,
            evaluatorId:evaluatorId_,
            clipId:clipId_,
            value: value_
        },
        function(data)
        {
            //
            reviewEvaluation_idle = true;

            //
            if(data == "good")
            {
                //
                alert("「" + getReviewEvaluationString(value_) + "」として評価しました。");
                window.location.reload();
            }
            //
            else
            {
                //
                alert("登録時に問題が起こりました。");
            }
        });
    }
}

/**
 *  クチコミ評価の削除
 *
 *  @param
 *  @return
 */
function removeReviewEvaluation(tenantId_,
                                reviewerId_,
                                clipId_,
                                evaluatorId_)
{
    //
    if(!window.confirm('評価を削除しますがよろしいですか？'))
    {
        //
        return 0;
    }

    //
    if (reviewEvaluation_idle)
    {
        //
        reviewEvaluation_idle = false;

        //
        jQuery.post("/service/removeReviewEvaluation.php",
        {
            tenantId:tenantId_,
            reviewerId:reviewerId_,
            clipId:clipId_,
            evaluatorId:evaluatorId_
        },
        function(data)
        {
            //
            reviewEvaluation_idle = true;

            //
            if (data == "good")
            {
                //
                alert("あなたの評価は削除されました。");
                window.location.reload();
            }
            //
            else
            {
                //
                alert("削除時に問題が起こりました。");
            }
        });
    }
}

/**
 *  適切なクチコミ評価ボタンを取得する
 *
 *  @param
 *  @return
 */
function getElement_ReviewEvaluationButtons(tenantId_, reviewerId_, clipId_, evaluatorId_, templateType_)
{
    //
    return jQuery.ajax({
                url: "/service/getReviewEvaluationButtons.php",
                data:{  tenantId : tenantId_,
                        reviewerId : reviewerId_,
                        clipId : clipId_,
                        evaluatorId : evaluatorId_,
                        templateType : templateType_},
                async: false
          }).responseText;
}

/**
 *  適切なクチコミ評価ボタンを取得する
 *
 *  @param
 *  @return
 */
function getElement_ReviewEvaluation_AlreadyEvaluated(tenantId_,
                                                      reviewerId_,
                                                      clipId_,
                                                      value_,
                                                      templateType_)
{
    //
    return jQuery.ajax({
               url: "/service/getReviewEvaluationAlreadyEvaluated.php",
               data:{  tenantId : tenantId_,
                       reviewerId : reviewerId_,
                       clipId : clipId_,
                       value : value_,
                       templateType : templateType_},
               async: false
           }).responseText;
}

/**
 *  クチコミを評価して、特定のHTMLエレメントを更新する
 *
 *  @param
 *  @return
 */
function addReviewEvaluation_Redraw(tenantId_,
                                    reviewerId_,
                                    clipId_,
                                    evaluatorId_,
                                    value_,
                                    elementId_,
                                    templateType_)
{
    //
    if (reviewEvaluation_idle)
    {
        //
        reviewEvaluation_idle = false;

        //
        jQuery.post("/service/addReviewEvaluation.php",
        {
            tenantId:tenantId_,
            reviewerId:reviewerId_,
            evaluatorId:evaluatorId_,
            clipId:clipId_,
            value: value_
        },
        function(data)
        {
            //
            reviewEvaluation_idle = true;

            //
            if (data == "good")
            {
                //
                var buttons = getElement_ReviewEvaluation_AlreadyEvaluated(
                                    tenantId_,
                                    reviewerId_,
                                    clipId_,
                                    value_,
                                    templateType_);

                //
                document.getElementById(elementId_).innerHTML = buttons;

                // フレーム内のコンテンツの場合
                if (parent.location != location)
                {
                    // 更新するターゲットを上階層にする
                    jQuery("#" + elementId_ + " a").attr("target", "_top");
                }
            }
            //
            else
            {
                //
                alert("登録時に問題が起こりました。");
            }
        });
    }
}

/**
 *  クチコミ評価の削除
 *
 *  @param
 *  @return
 */
function removeReviewEvaluation_Redraw(tenantId_,
                                       reviewerId_,
                                       evaluatorId_,
                                       clipId_,
                                       elementId_,
                                       templateType_)
{
    //
    if(!window.confirm('評価を削除しますがよろしいですか？'))
    {
        //
        return 0;
    }

    //
    if (reviewEvaluation_idle)
    {
        //
        reviewEvaluation_idle = false;

        //
        jQuery.post("/service/removeReviewEvaluation.php",
        {
            tenantId:tenantId_,
            reviewerId:reviewerId_,
            clipId:clipId_,
            evaluatorId:evaluatorId_
        },
        function(data)
        {
            //
            reviewEvaluation_idle = true;

            //
            if (data == "good")
            {
                //
                var buttons = getElement_ReviewEvaluationButtons(tenantId_, reviewerId_, $clipId_, evaluatorId_, templateType_);

                //
                document.getElementById(elementId_).innerHTML = buttons;

                // フレーム内のコンテンツの場合
                if (parent.location != location)
                {
                    // 更新するターゲットを上階層にする
                    jQuery("#" + elementId_ + " a").attr("target", "_top");
                }
            }
            //
            else
            {
                //
                alert("削除時に問題が起こりました。");
            }
        });
    }
}

// ヘルプ画像
var visibleEvalHelp = false;

//
var evalHelp_w = 400;

//
var evalHelp_h = 400;

/**
 *
 *
 * @param
 * @return
 */
function show_eval_help()
{
    //
    if (!visibleEvalHelp)
    {
        //
        toggle_eval_help();
    }
}

/**
 *
 *
 * @param
 * @return
 */
function hide_eval_help()
{
    //
    if (visibleEvalHelp)
    {
        //
        toggle_eval_help();
    }
}

/**
 *
 *
 * @param
 * @return
 */
function toggle_eval_help()
{
    //
    if (visibleEvalHelp)
    {
        //
        jQuery('#eval_help').fadeOut('fast');
    }
    //
    else
    {
        //
        width  = document.body.clientWidth  || document.documentElement.clientWidth;

        //
        height = document.documentElement.clientHeight;

        //
        move_x = document.body.scrollLeft   || document.documentElement.scrollLeft;

        //
        move_y = document.body.scrollTop    || document.documentElement.scrollTop;

        //
        var EvalHelp = jQuery('#eval_help');

        //
        EvalHelp.css('top',  (height / 2 + move_y) - evalHelp_h / 2 + 'px');

        //
        EvalHelp.css('left', (width / 2 + move_x) - evalHelp_w / 2 + 'px');

        //
        EvalHelp.fadeIn('fast');
    }

    //
    visibleEvalHelp = !visibleEvalHelp;
}

/**
 *  thickboxの拡張。
 *  動的コンテンツに対してthickboxの機能を付けられる。
 *
 *  @param
 *  @return
 */
function thickbox(link)
{
    //
    var t = link.title || link.name || null;

    //
    var a = link.href || link.alt;

    //
    var g = link.rel || false;

    //
    tb_show(t,a,g);

    //
    link.blur();

    //
    return false;
}

