	var ratedValues = new Array();
	var ratedIds = new Array();
		
	/* Function: add_favourite
	 * Description: new response method added to ajax class
	 * Parameters: no parameters
	 */	 	  
	ajax.methods['rating'] = function(){}
	
	/* Function: checkRated()
	 * Description: check if user already have rated a file
	 * Parameters:
	 * - userId: current user id
	 * - songsIds: array with songs ids	 	 
	 */
	function checkRated(songsIds)
	{
		var songsString = songsIds.join(",");
		ajax.setProcessMethod("rating");
		ajax.technique = "synchronous";
		ajax.setParameter("songs",songsString);
		ajax.setParameter("check","true");						
		ajax.makeCustomRequest("/scripts/rating/rating.php");
		ajax.technique = "asynchronous";
		ratedValues = ajax.responseText.split(",");
		ratedIds = songsIds;
	}
	
	/* Function: rating()
	 * Description: create rating stars
	 * Parameters:
	 * - pd : the div id that gonna contain the rating
	 * - r: actual rating valoration
	 * - ns: number of stars to show 
	 */		 	 	 	 	 	 	 
	function rating(pd, r, ns)
	{
		var parentDiv = document.getElementById(pd);
		parentDiv.innerHTML = "";
		var ratId = parseInt(parentDiv.id.replace("rating_",""));
		
		//Default values
		var index = 0;
		var rating = arguments[1] ? arguments[1] : 1;
		var numStars = arguments[2] ? arguments[2] : 10;
		
		//Rating mode
		for(var i=0; i<ratedIds.length; i++)
		{	if(String(ratedIds[i]) == ratId) index = i;	}
		
		//If star must to be freezed
		if(ratedValues[index].match("true"))
		{ freezeStars(parentDiv.id,rating,numStars);}
		
		//Else if user can rate
		else if(ratedValues[index].match("false"))
		{	
			for(var i=1; i<=numStars; i++)
			{
				//Create new star
				var newStar = document.createElement("div");
				newStar.className = (i<=rating) ? "solid" : "empty";
				newStar.id = parentDiv.id+"_star_"+i;
				//onMouseOver: attach events 
				newStar.onmouseover = function() 
				{
					var currentId = this.id.replace(parentDiv.id+"_star_","");
					currentId = parseInt(currentId);
					var prevClass = new Array();
					//Change stars classes depends of current star
					for(var j = 1; j <= numStars; j++)
					{
						var thisStar = document.getElementById(parentDiv.id+"_star_"+j);
						prevClass[j] = thisStar.className;
						thisStar.className = (j <= currentId) ? "solid" : "empty";
					}
					//onMouseOut: Return stars to original class
					this.onmouseout = function()
					{
						for(var j = 1; j <= numStars; j++)
						{
							var thisStar = document.getElementById(parentDiv.id+"_star_"+j);
							thisStar.className = prevClass[j];
						}
					}
					//onClick: Send the rating value
					this.onclick = function()
					{
						var ratId = parseInt(parentDiv.id.replace("rating_",""));
						ajax.setProcessMethod("rating");
						ajax.technique = "synchronous";
						ajax.setParameter("id",ratId);
						ajax.setParameter("value",currentId);							
						ajax.makeCustomRequest("/scripts/rating/rating.php");
						ajax.technique = "asynchronous";
						freezeStars(parentDiv.id,ajax.responseText,numStars);
					}
				};
				//Add star to div content
				parentDiv.appendChild(newStar);
			}
		}
	}
	function freezeStars(parentDiv,rating,numStars)
	{
		var parentDiv = document.getElementById(parentDiv);
		parentDiv.innerHTML = "";		
		for(var i=1; i<=numStars; i++)
		{
			//Create new star
			var newStar = document.createElement("div");
			newStar.className=(i<=rating) ? "solid_off" :  "empty_off";
			parentDiv.appendChild(newStar);
		}
	} 