﻿rateText = ["Оу, щит!", "Сойдёт", "Нормуль", "Прикольно", "Супер!"];
rateActiveClass = ["one-star active", "two-stars active", "three-stars active", "four-stars active", "five-stars active"];
rateActiveHalfClass = ["one-star active half", "two-stars active half", "three-stars active half", "four-stars active half", "five-stars active half"];
ratePassiveClass = ["one-star", "two-stars", "three-stars", "four-stars", "five-stars"];

// Proccess data from server
function ClientCallback(result, context) {
    data = result.split('*');
    id = data[0];
    classNumber = data[1];
    isWhole = data[2];

    if (isWhole == "1") className = rateActiveClass;
    else className = rateActiveHalfClass;

    currRateNumber = GetCurrentRateNumber(id, "currRate");
    SetRateStatus(id, "rate", currRateNumber, ratePassiveClass);
    SetRateStatus(id, "rate", classNumber, className);
    SetCurrentRateNumber(id, "currRate", classNumber);

    $("#voteEnabled_" + id).val("1"); 
}

function OnVoteClick(id) {
    currId = GetId(id);
        
    enable = $("#voteEnabled_" + currId);  
    if (enable.val() == "0") return;
    else enable.val("0");

    currRateNumber = GetCurrentRateNumber(id, "currVote");
    SetRateStatus(currId, "vote", currRateNumber, ratePassiveClass);

    currNumber = GetControlNumber(id);

    SetCurrentRateNumber(currId, "currVote", currNumber);
    SetRateText(currId, currNumber);

    // Send data to server
    // CallServer(currId + "*" + currNumber, null);
    // Replaced by JQuery Ajax
    $.ajax(
    {
        type: "POST",
        data: "currId=" + currId + "&currNumber=" + currNumber,
        success: function(data) { ClientCallback(data, null); }
    });
}

function OnVoteOver(id) {
    currId = GetId(id);
    currNumber = GetControlNumber(id);
    currRateNumber = GetCurrentRateNumber(id, "currVote");
    if (currNumber < currRateNumber) SetRateStatus(currId, "vote", currRateNumber, ratePassiveClass);
}

function OnVoteOut(id) {
    currId = GetId(id);
    currRateNumber = GetCurrentRateNumber(id, "currVote");
    SetRateStatus(currId, "vote", currRateNumber, rateActiveClass);
}

function GetId(id) {
    values = id.split('_');
    return parseInt(values[values.length - 2]);
}

function GetControlNumber(id) {
    values = id.split('_');
    return parseInt(values[values.length - 1]);
}

function SetCurrentRateNumber(currId, controlParam, number) {
    $("#" + controlParam + "_" + currId).val(number);
}

function GetCurrentRateNumber(id, controlParam) {
    number = parseInt($("#" + controlParam + '_' + currId).val());
    if (isNaN(number)) number = 0;
    return number;
}

function SetRateStatus(currId, controlParam, rateNumber, rateClass) {
    if (rateNumber == 0) return;
    elem = $("#" + controlParam + "_" + currId + "_" + rateNumber);
    elem.removeClass();
    elem.addClass(rateClass[rateNumber - 1]);
}

function SetRateText(currId, number) {
    $("#rateText_" + currId).html(rateText[number - 1]);
    $("#rateContainer_" + currId).css("display", "block");
}



