/**
 * Rating Javascript functionality
 * 
 * @author Chris Ramakers <chris@inventis.be>
 * @version 1.0
 */

var TAT = new Object();

TAT.makeAjaxRatings = function() {
	// Get all rating containers
	var starWidth = 20;
	var ratingContainers = document.getElementsByClassName("star_rating");
	
	// Change the behaviour of all links in each container
	$A(ratingContainers).each(function(ratingContainer){
		// Get the loading div
		var ratingContainerId = ratingContainer.id;
		var ratingContainer = $(ratingContainerId);
		var loadingDiv = $(ratingContainerId+"LoadingGif");
		// Get all links
		var links = ratingContainer.getElementsByTagName("a");
		$A(links).each(function(alink) {
			Event.observe(alink, 'click', function(e){
				// Apply the ajax behaviour
				var urlParts = alink.href.split("?");
				var ajaxRequest = new Ajax.Request(
					urlParts[0],
					{
						method: 'get', 
						parameters: urlParts[1],
						onLoading: function(e) {
							Element.show(loadingDiv);
						},
						onComplete: function(response) {
							Element.hide(loadingDiv);
							var responseParts = response.responseText.split("|");
							var responseCode = responseParts[0];
							var responseMessage = responseParts[1];
							if (responseCode == "Error") {
								new Insertion.After(ratingContainer, '<div class="response_error" id="response">'+responseMessage+'</div>');
								new Effect.Highlight('response', {startcolor:'#ffff99', endcolor:'#f5f5f5', duration: 1.5});
								new Effect.BlindUp('response', {queue: 'end'});
							} else if (responseCode == "Success") {
								new Insertion.After(ratingContainer, '<div class="response_success" id="response">'+responseMessage+'</div>');
								new Effect.Highlight('response', {startcolor:'#ffff99', endcolor:'#f5f5f5', duration: 1.5});
								new Effect.BlindUp('response', {queue: 'end'});
								Element.setStyle(ratingContainerId+"Totaal", {width: (responseParts[2]*starWidth)+"px"});
								//alert(responseParts[2]);
								var classnames = alink.className;
								alink.removeClassName(alink.className);
								alink.addClassName(classnames + '-active');
							}
						}
					}
				);
				
				// Prevent this link from actualy going to the page
				Event.stop(e);
			});
		}.bind(this));
	});
}

Event.observe(window, 'load', TAT.makeAjaxRatings);