    var global_id = 0;

    css = {
      width: '200px',
      top: '2px',
      left: '',
      right: '2px',
      border: 'none',
      padding: '5px',
      backgroundColor: 'navy',
      opacity: 1,
      color: '#fff',
      fontSize: '10px',
      fontFamily: 'Verdana, serif'
    };

    rate = function(type, id) {
      global_id = id;
      if(type=="up" || type=="down") {
        $.ajax({
          type: "POST",
          data: "ratings",
          url: "/ajax/rate"+type+"/"+id+"/",
          success: function(xhr,status,error){
            if(xhr.charAt(0) == "{" && xhr.charAt(xhr.length-1) == "}") {
              response = $.evalJSON(xhr);
              if(response.status == "fail") {
                messageBox("error",response.reason);
              } else {
                changeRate(global_id, response);
                messageBox("message","Твой голос учтен.");
              }
            } else {
              messageBox("error","Что-то пошло не так. Пожалуйста попробуйте повторить немного позже.");
            }
          },
          error: function(xhr, status, error) {
            messageBox("error","Что-то пошло не так. Пожалуйста попробуйте повторить немного позже.");
          }
        });
      }
    }

    rateup = function(id) {
      rate("up",id);
    }

    ratedown = function(id) {
      rate("down",id);
    }

    messageBox = function(type, message){
      switch(type) {
        case "message":{
          css.backgroundColor = "navy";
          break;
        }
        case "error":{
          css.backgroundColor = "red";
          break;
        }
      }
      $.blockUI({
        message: message,
        fadeIn: 500,
        fadeOut: 500,
        timeout: 3000,
        showOverlay: false,
        centerY: false,
        css: css})
    }

    changeRate = function(id, data) {
      if(data.current > 0) {
        if(!$("#score_"+id).hasClass("positive")) {
          $("#score_"+id).addClass("positive");
        }
        $("#score_"+id).html("+"+data.current);
      } else if(data.current < 0) {
        if(!$("#score_"+id).hasClass("negative")) {
          $("#score_"+id).addClass("negative");
        }
        $("#score_"+id).html(data.current);
      } else {
        if(!$("#score_"+id).hasClass("negative")) {
          $("#score_"+id).removeClass("negative");
        }
        if(!$("#score_"+id).hasClass("negative")) {
          $("#score_"+id).removeClass("positive");
        }
        $("#score_"+id).html("0");
      }
      if(data.changed == "up") {
        $("#rateup_"+id).addClass("up_used");
        $("#ratedown_"+id).addClass("down_unused");
      } else {
        $("#rateup_"+id).addClass("up_unused");
        $("#ratedown_"+id).addClass("down_used");
      }
    }
