var $D = YAHOO.util.Dom;
var $E = YAHOO.util.Event;
var numMedia;
var voteMedia = new Array();
var redirect_url = false;

/* animate successful vote */
var handleSuccess = function(o){
	var thisEl = o.argument['el'];
	
	var liNode = thisEl.parentNode.parentNode.getElementsByTagName('li')[0];
	
	// json response
	var r = eval('('+o.responseText+')'); 
	
	// $D.setStyle(liNode, 'opacity', 0);
	$D.setStyle(liNode, 'width', r.score.score / r.score.num_votes * 25 + '%');
	
	// var anim = new YAHOO.util.Anim(liNode, {opacity:{from:0, to:1}}, 1, YAHOO.util.Easing.easeOut);
    // anim.animate();
	
	// if all links are rated, let's reload the page
	var idMedia = thisEl.href.split('/')[3];
	var addMedia = true;
	var numAddMedia = 0;
	for ( key in voteMedia){
		numAddMedia++;
		if( key == idMedia ) {
			addMedia = false;
			break;
		}
	}
	if (addMedia) {
		voteMedia[idMedia] = 1;
		if (numAddMedia+1 == numMedia && redirect_url) document.location.href = redirect_url;
	}
}

var handleFailure = function(o){
	alert('Erreur de connexion au serveur.');
}

/* trigger connection */
function rateMedia(e){
	$E.preventDefault(e);
	
	var sUrl = this.href
	
	var callback = {
		success: handleSuccess,
		failure: handleFailure,
		argument: { el:this },
		timeout: 5000 
	};
	
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
	
}

/* attach events */
var attachStarRating = function(){
	var starClasses = ['one-star', 'two-stars', 'three-stars', 'four-stars'];
	for (var i=0; i < starClasses.length; i++){
		var starLinks = $D.getElementsByClassName(starClasses[i]);
		for (var j=0; j < starLinks.length; j++){
			$E.addListener(starLinks[j], 'click', rateMedia, starLinks[j], true);
		}
		if (i==0) numMedia = starLinks.length;		
	}
}

$E.addListener(window, 'load', attachStarRating);


