/* rating */

// StringBuffer object
function StringBuffer() {
	this.buffer = "";
	this.append = new Function("str", "this.buffer += str;");
	this.getString = new Function("return this.buffer");
}

var yourRating = 0;
var postRatedCount = 0;
var ratingContainer = "";

/**
 * volá se při loadu stránky, zjistí, zda uživatel může hlasovat a podle toho připraví hlasovací odkazy
 **/
function onRatingStatusResult(ratingStatus) {
	if (typeof(ratingStatus) != "object") return;

	var canVote = ratingStatus.allowed;
	var postRating;
	for (var i = 0; i < ratingStatus.ratingResults.length; i++) {
		var result = ratingStatus.ratingResults[i];
		postRating = result.rating;
		postRatedCount = result.totalVotes;
	}
	
	writeRatingControls(canVote, postRating, postRatedCount);
}

/**
 * samotné zahlasování
 **/
function rate(rating, category, idArticle) {
	// započtení hlasu k článku
	yourRating = rating;
	$("#"+ratingContainer).html("");
	$("#"+ratingContainer).css( { 'background-position' : '0px -127px' } );
	var contents = [{name:category, identifier:idArticle}];
	RatingService.rate(contents, rating, onRatingResult);
	$("#multimedia-content .fr").html("<strong>Děkujeme za hodnocení</strong>");
}

/**
 * zavolá se po odhlasování (poté, co proběhne funkce rate(). Zpracování výsledků, zákaz dalšího hlasování
 **/
function onRatingResult(ratings){
	if (typeof(ratings) != "object") return;
	var canVote = true;
	var postRating;

	for (var i = 0; i < ratings.length; i++) {
		var rating = ratings[i];
		var postRating = rating.rating;
		var postRatedCount = rating.totalVotes;
		var postId = rating.ratedType.identifier;
	}
	$("#multimedia-content .file-info .rating img, #multimedia-list #podcastitem-"+postId+" .rating img").animate({
				width: postRating*20 + "%"
	}, 500);
	$("#podcastitem-"+postId+" a[rel]").attr("rel", parseInt(postRating*20));
	writeRatingControls(canVote, postRating, postRatedCount);
//	$("#rateResult").addClass("infos");
//	$("#rateResult").text("Děkujeme za hlas. Vaše hodnocení je "+yourRating+", celkový průměr je "+Math.round(postRating)+".");
//	$("#rateResult").show();
}

function initRating(strIdentificator, idArticle) {
	$("#multimedia-content .fr").css( { "visibility" : "hidden"} );
	var sb = new StringBuffer();

	//sb.append('<div class="rating">');
	//sb.append('	<h3>Hodnocení</h3>');
	//sb.append('	<p>Líbí se Vám tento projekt? Máte možnost ocenit jeho kvalitu.</p>');
	sb.append('	<strong>Ohodnoť</strong>');
	sb.append('	<p id="rateArticle">');
	sb.append('		<a href="#1" class="rate1" title="Udělit 1 hvězdičku" onclick="rate(1, \''+strIdentificator+'\', \''+idArticle+'\'); return false;"><span>1/5</span></a><span> | </span>');
	sb.append('		<a href="#2" class="rate2" title="Udělit 2 hvězdičky" onclick="rate(2, \''+strIdentificator+'\', \''+idArticle+'\'); return false;"><span>2/5</span></a><span> | </span>');
	sb.append('		<a href="#3" class="rate3" title="Udělit 3 hvězdičky" onclick="rate(3, \''+strIdentificator+'\', \''+idArticle+'\'); return false;"><span>3/5</span></a><span> | </span>');
	sb.append('		<a href="#4" class="rate4" title="Udělit 4 hvězdičky" onclick="rate(4, \''+strIdentificator+'\', \''+idArticle+'\'); return false;"><span>4/5</span></a><span> | </span>');
	sb.append('		<a href="#5" class="rate5" title="Udělit 5 hvězdiček" onclick="rate(5, \''+strIdentificator+'\', \''+idArticle+'\'); return false;"><span>5/5</span></a>');
	sb.append('	</p>');
	//sb.append('	<p id="rateResult"></p>');
	//sb.append('</div>');
	$(document).ready(function() {
		//$("#content #left").append(sb.getString());
		$("#multimedia-content .fr").html(sb.getString());
		ratingContainer = "rateArticle";
		$("#"+ratingContainer+" a").each( function() {
			$(this).hover(
				function() { var no = this.className.substr(4); $("#"+ratingContainer).css( { 'background-position' : '0px ' + (-21*no) + 'px' } ); },
				function() { $("#"+ratingContainer).css( { 'background-position' : '0px 0px' } ); }
			);
		});
	});
	
	
}

function writeRatingControls(boolCanVote, intPostRating, intPostRatedCount) {
	if (!boolCanVote) {
		// nastaveni bgr hvezdicek na aktualni stav
		/*var tmp = -21*Math.round(intPostRating*1);
		$("#rateArticle").css( { 'background-position' :'0px '+tmp+'px' } );*/
		$("#multimedia-content .fr").html("");
	} else {
		$("#multimedia-content .fr").css( { "visibility" : "visible"} );
	}
}
