// 제작일 : 2007년 4월 3일
// 제작자 : 최영규 (http://hooriza.com/)

if (typeof HBASE != "object" || HBASE.version < 2.6) {
	alert("후리자  별점 평가 플러그인을 사용하기 위해서는 Hooriza Plugin Base 2.6 이상이 필요합니다");
}

HBASE.SR = {

	baseURL : "",
	postOwner : 0,

	initialize : function(baseURL, postOwner) {
		HBASE.SR.baseURL = baseURL;
		HBASE.SR.postOwner = postOwner;
	},
		
	onLoad : function() {
		
		var tags = $("dl.sr_border");
		tags.each(HBASE.SR.makeStars);	
	},
	
	star : function(obj) {
		
		var self = this;
		
		this.voted = false;

		this.title = $(".sr_title", obj);
		this.result = $(".sr_result", obj);
		this.outer = $(".sr_bg", obj);
		this.inner = $(".sr_fg", this.outer);
		
		this.uid = obj.id.substr(7);
		
		var text = this.result[0].innerText || this.result[0].textContent;
		text = text.split(" ");
		
		var votes = parseInt(text[1]); // 총 N분이 투표해서
		var rate = parseFloat(text[3]); // N 점
		
		this.inner.width(this.inner.html().length * 19);
		
		this.drawRate = function() {
			var rate = parseFloat(this.inner[0].innerText || this.inner[0].textContent);
			this.inner.width(rate * 19);
		}
		
		this.drawRate();
		
		if (this.inner[0].className.indexOf("sr_voted") > -1) return;

		this.outer.bind("mouseout" , { self : this }, function(event) {
			
			if (self.voted) return;
			
			var relatedTarget = event.relatedTarget || event.toElement;
			if (relatedTarget == self.outer[0] || relatedTarget == self.inner[0]) return;
			
			self.drawRate();
		});

		this.outer.bind("mousemove", { self : this }, function(event) {

			if (self.voted) return;

			var x = event.layerX ? event.layerX - 1 : event.offsetX;
			
			x = parseInt((x + 11) / 19) * 19;
			self.inner.css("width", x + "px");

		});
		
		this.outer.bind("click", { self : this }, function(event) {
			
			if (!self.voted) {
				
				var rate = self.inner.width() / 19;
				
				jQuery.ajax({
					type : "POST",
					url : HBASE.SR.baseURL + "/vote.php?ts=" + new Date().getTime(),
					dataType : "json",
					data : {
						'owner' : HBASE.SR.postOwner,
						'uid' : self.uid,
						'rate' : rate
					},
					async : true,
					error : function() {
						alert("투표 중에 알수없는 에러");
					},
					success : function(msg) {
						
						if (msg.error) {
							alert(msg.error);
							return;
						}
						
						var votes = msg.votes;
						var rate = msg.rates / msg.votes;
						
						self.inner.css("width", Math.round(rate * 19) + "px");

						self.title.html("이미 투표하셨습니다");						
						self.result.html("(총 " + votes + "분이 투표해서 " + rate.toPrecision(2) + "점)");

						self.inner[0].className = "sr_fg sr_voted";
						self.outer[0].removeAttribute("href");
						
						self.voted = true;
					}
				});
				
			}
			
			self.outer[0].blur();
			
			event.preventDefault();
			event.stopPropagation();
		});

	},
	
	makeStars : function(idx, obj) {
		new HBASE.SR.star(obj);
	}
	
};

$(window).bind("load", HBASE.SR.onLoad);

function showAll() {
	document.body.className += ' show-entry';
}

function hideAll() {
	document.body.className = document.body.className.replace(/show\-entry/, '');
}