function PSP_UI_Vote(uid, params) {
	this.uid = uid;
	this.params = params;
}

PSP_UI_Vote.list = [];

PSP_UI_Vote.prototype = {
	  locked : false
	
	, init : function() {
		if (this.params.voted) {
			this.lock(this.params.rating);
		}
	}

	, lock : function(rate) {
		this.trace(rate, true);
		this.locked = true;
	}
	
	, trace: function(rate, flag) {
		if (this.locked) return;

		rate = Math.floor(rate);

		for(var i = rate - 1; i >= 0; i--) {
			var div = document.getElementById('vote-' + this.uid + '-' + i);
			if (div) {
				if(flag) {
					if(!div.saved_class) {
						div.saved_className = div.className;
					}
						
					if(div.className!='star-active star-over') {
						div.className = 'star-active star-over';
					}
				}
				else {
					if(div.saved_className && div.className != div.saved_className) {
						div.className = div.saved_className;
					}
				}
			}
		}
		
		i = rate + 1;
		while(div = document.getElementById('vote-' + this.uid + '-' + i)) {
			if (div.saved_className && div.className != div.saved_className) {
				div.className = div.saved_className;
			}

			i++;
		}
	}
	
	, vote: function(rate, params) {
		document.getElementById('wait-vote-' + this.uid).innerHTML = '...';

		params['rate'] = rate;

		var obj = this;
		jQuery.getJSON(params.href, params, function(json) {
			document.getElementById('wait-vote-' + obj.uid).innerHTML = '(' + json.rating + ')';
			obj.lock(json.rating);
		});
	}
}

