var trapezeRating = {
	
	pageX : function(elem) {
		return elem.offsetParent ? elem.offsetLeft + this.pageX(elem.offsetParent) : elem.offsetLeft;
	},
	
	pageY : function(elem) {
		return elem.offsetParent ? elem.offsetTop + this.pageY(elem.offsetParent) : elem.offsetTop;
	},
	
	setX : function(elem, pos) {
		elem.style.left = pos + "px";
	},
	
	setY : function(elem, pos) {
		elem.style.top = pos + "px";
	},
	
	prepareOverlay : function(anchorElm) {
		
		var myOverlay = document.getElementById('ratingOverlay');

		if (myOverlay) {
			var xLoc = this.pageX(anchorElm);
			var yLoc = this.pageY(anchorElm);
			var pageWidth = document.body.scrollWidth;
			var overlayWidth = 300;

			// position the overlay
			if (xLoc + overlayWidth > pageWidth) {
				var rightOffset = (xLoc + overlayWidth) - pageWidth;
				this.setX(myOverlay, xLoc - rightOffset - 10);
			} else {
				this.setX(myOverlay, xLoc);
			}
			this.setY(myOverlay, yLoc + 12);
		}
	},
	
	hideOverlay : function() {
		$('#ratingOverlay').hide();
	},
	
	resetLinks : function() {
	    $('#ratingOverlay ul li a').removeClass('active');
	},
	
	showRating : function(ratingElm) {
	    var listElm = document.getElementById('quickRateList');
	    var inputElm = document.getElementById('ratingValue');
	    var ratingVal = parseInt(ratingElm.text);
	    if ($.browser.msie) ratingVal = parseInt(ratingElm.innerHTML);
	    
	    inputElm.value = ratingVal;
	    
	    $('#ratingOverlay ul li.rating').empty();
	    $('#ratingOverlay ul li.rating').append(ratingVal/2);
	    $('.socialBar li.ratingValue').empty();
	    $('.socialBar li.ratingValue').append(ratingVal/2);
	    
	    this.colorNodes(ratingVal);
	},
	
	colorNodes : function(val) {
	    var j = 0;
	    $('#quickRateList li a').each(function(){
	        if (j++ < val) $(this).addClass('active');
	    });
	}
};

$(function(){
	
	if (typeof noRatingSubmit == 'undefined') var noRatingSubmit = false; 
	
	$('.socialBar a.star').bind('click', function() {
		trapezeRating.prepareOverlay(this);
		$('#ratingOverlay').show();
		return false;
	});
	
	$('#ratingOverlay ul li a').bind('click', function() {
	    if (!noRatingSubmit) $('#ratingOverlay form').trigger('submit');
		trapezeRating.hideOverlay();
		return false;
	});
	
	$('#ratingOverlay a.close').bind('click', function() {
	    trapezeRating.hideOverlay();
		return false;
	});
	
	$('#ratingOverlay ul li a').bind('mouseover', function() {
	    trapezeRating.resetLinks();
	    trapezeRating.showRating(this);
	});
	
});