// JavaScript Document
addLoadEvent(prepareRating);

function displayJsOnly(){ //affiche les boites active en javascript
	var jsOnlyElts = getElementsByClassName(document,"*",'jsOnlyContent');
	for(var i = 0; i < jsOnlyElts.length; i++){
		removeClass(jsOnlyElts[i],'jsOnlyContent');
	}
}

function prepareRating(){
	if(!document.getElementById('rating')) return;
	var rateContainer = document.getElementById('rating');
	var rateLinks = rateContainer.getElementsByTagName('a');
	for(var i = 0; i < rateLinks.length; i++){
		var rateLink = rateLinks[i];
		rateLink.index = i + 1;
		rateLink.currentClassName = rateContainer.className;
		rateLink.onmouseover = function(){ //afficher la classe de l'index pour rateContainer
			var classNameOver = 'rating' + this.index;
			var rateContainer = document.getElementById('rating');			
			rateContainer.className = classNameOver;
			return false;
		};
		
		rateLink.onmouseout = function(){ //réinitialise la classe pour le rateContainer
			var rateContainer = document.getElementById('rating');
			rateContainer.className = this.currentClassName;
			return false;
		};
		
		rateLink.onclick = function(){ //effectue la requete Ajax de vote
			removeAllLinks(); //supprime tous les liens de rateContainer donc plus de vote
			var data = saveRating(this); //requete Ajax - Argument lien du click
			return false; //annule le click	
		};
	}
}

function removeAllLinks(){ //supprime tous les liens une fois le vote effectué
	var rateContainer = document.getElementById('rating');
	rateContainer.innerHTML = '';
} 

function saveRating(elt){ //save le vote  en Ajax - return un tableau avec les datas suivantes : nbre de vote, moyenne des votes, message confirm.
	var url = elt.getAttribute('href') + '&ajax=true';
	url = url.split('?')[1];
	url = 'rating_ajax.php?' + url;
	var method = 'GET';
	var requester = getHTTPObject(); //methode à transformer
	requester.open(method, url, true); //setter parametres de la requete Ajax
	requester.send(null);
	requester.onreadystatechange = function(){
		if(4 == requester.readyState && 200 == requester.status){ //reponse de la requete Ajax
			var response = requester.responseText;
			updateRateContainer(response);
		}
	};
}

function updateRateContainer(response){ //met à jour les données du module de vote
	var data = response.split('||');
	var votes = data[0];
	var classRating = (data[1])? 'rating' + data[1] : 'rating0';
	var message = data[2] || '';
	var confirmContainer = document.getElementById('confirmRate');
	var rateContainer = document.getElementById('rating');
	var votesContainer = document.getElementById('numberRate').getElementsByTagName('span')[0];
	votesContainer.innerHTML = votes; //mise à jour du nombre de vote
	rateContainer.className = classRating; //mise à jour de la moyenne des votes
	confirmContainer.innerHTML = message; //mise à jour du message de confirmation
	confirmContainer.className = 'display'; //affichage du message de confirmation
	var timer = window.setTimeout(function(){ //masque le message de confirmation auprès 3 secondes
		if(timer) window.clearTimeout(timer);
		var confirmContainer = document.getElementById('confirmRate');
		confirmContainer.className = 'displayNone';
	},2300);	
}
