/*
 * Freelove Framework
 *
 * FF_Rater JS part v 1.1
 *
 */

Rater_backend = "/ajax/rater/";

$(Rater_Init);

function isChild(n, parent) {
	if(n) {
		var list = parent.getElementsByTagName('*');
		for(var i=0, e; e=list[i]; i++) {
			if(e == n) return true;
		}
	}
	return false;
}

function Rater_Init() {
	$(".R").mouseover(function(e) {
		Rater_Hide();

		var area = this.id.charAt(1);
		var ID = parseInt(this.id.substr(2));

		var em = $(this);
		$("body").append("<div class='RateBox'></div>");
		var RB = $(".RateBox");

		var pos = em.offset();
		var em_w = em.outerWidth();
		var em_h = em.outerHeight();
		var top = Math.round(pos.top - (RB.outerHeight() / 2) + (em_h / 2));
		var left = Math.round(pos.left - (RB.outerWidth() / 2) + (em_w / 2));
		RB.css("top", top + "px").css("left", left + "px");
		RB.html("<a href='#' class='plus' onclick=\"return Rater_v(1, " + ID + ", '" + area + "')\">+</a><a href='#' class='minus' onclick=\"return Rater_v(-1, " + ID + ", '" + area + "')\">&ndash;</a>");

		RB.mouseout(function(ev) {
			var node = RB[0];
			var target = ev.target || ev.srcElement;
			var rt = ev.relatedTarget || ev.toElement;
			try {
				if (rt && rt.nodeType == 3) rt = rt.parentNode;
			} catch(e) {
				rt = target;
			}
			if(rt == node || rt == target || isChild(rt, target)) {
				return false;
			}
			Rater_Hide();
			// setTimeout(Rater_Hide, 100);
		});

	});
}

function Rater_Hide() {
	$('.RateBox').remove();
	return false;
}

function Rater_v(vote, ID, area) {
	$.ajax({
		url: Rater_backend,
		type: 'POST',
		data: {area: area, id: ID, vote: vote},
		dataType: "json",
		success: function(data, txt_status) {

			if(typeof(data.alert) != "undefined") {
				alert(data.alert);
				return false;
			}

			$("#x" + area + ID).html("" + data.rate);
		}
	});

	return false;
}
