﻿function NodeVoteRating(id, plus, minus, isEnabled) {
	this.init = function() {
		this.fill();

		if (this.isEnabled) {
			this.activate();
		} else {
			this.deActivate();
		}

		this.hideLoading();
	}

	this.showLoading = function() {
		$("#voteRatingContainer" + this.id + " .loading").css("display", "block");
		$("#voteRatingContainer" + this.id + " .ratingContainer").css("display", "none");
	}

	this.hideLoading = function() {
		$("#voteRatingContainer" + this.id + " .ratingContainer").css("display", "block");
		$("#voteRatingContainer" + this.id + " .loading").css("display", "none");
	}

	this.activate = function() {
		$("#voteRatingPlus" + this.id).removeClass("plusInactive");
		$("#voteRatingPlus" + this.id).addClass("plusActive");
		
		$("#voteRatingMinus" + this.id).removeClass("minusInactive");
		$("#voteRatingMinus" + this.id).addClass("minusActive");
		
		var rating = this;
		$("#voteRatingPlus" + this.id).click(function() {
			rating.showLoading();
			$.getJSON("/rating/node/" + rating.id + "/plus", function(data) {
				rating.deActivate();
				$("#voteRatingPlusValue" + rating.id).html(data.value);
				rating.hideLoading();
			})
		});
		$("#voteRatingMinus" + this.id).click(function() {
			rating.showLoading();
			$.getJSON("/rating/node/" + rating.id + "/minus", function(data) {
				rating.deActivate();
				$("#voteRatingMinusValue" + rating.id).html(data.value);
				rating.hideLoading();
			})
		});
	}

	this.deActivate = function() {
		$("#voteRatingPlus" + this.id).removeClass("plusActive");
		$("#voteRatingPlus" + this.id).addClass("plusInactive");

		$("#voteRatingMinus" + this.id).removeClass("minusActive");
		$("#voteRatingMinus" + this.id).addClass("minusInactive");

		$("#voteRatingContainer" + this.id + " .symbol").unbind();
	}

	this.fill = function() {
		$("#voteRatingPlusValue" + this.id).html(this.plus);
		$("#voteRatingMinusValue" + this.id).html(this.minus);
	}

	this.id = id;
	this.plus = plus;
	this.minus = minus;
	this.isEnabled = isEnabled;

	this.init();
}
