gremmie@1: function dlRatingOver(event) gremmie@1: { gremmie@1: var div = $(this).parent('div'); gremmie@1: var stars = $('img', div); gremmie@1: for (var i = 0; i <= event.data; ++i) gremmie@1: { gremmie@1: var star = $(stars[i]); gremmie@1: star.attr('src', '/static/downloads/stars/rating_over.gif'); gremmie@1: } gremmie@1: } gremmie@1: gremmie@1: function dlRatingOut(event) gremmie@1: { gremmie@1: var div = $(this).parent('div'); gremmie@1: var stars = $('img', div); gremmie@1: for (var i = 0; i <= event.data; ++i) gremmie@1: { gremmie@1: var star = $(stars[i]); gremmie@1: star.attr('src', '/static/downloads/stars/rating_' + star.attr('class') + '.gif'); gremmie@1: } gremmie@1: } gremmie@1: gremmie@1: function dlRatingClick(event) gremmie@1: { gremmie@1: var star = $(this); gremmie@1: var id = star.attr('id'); gremmie@1: if (id.match(/star-(\d+)-(\d+)/)) gremmie@1: { gremmie@1: $.post('/downloads/rate/', { id: RegExp.$1, rating: parseInt(RegExp.$2) + 1}, gremmie@1: function(rating) { gremmie@1: rating = parseFloat(rating); gremmie@1: if (rating < 0) gremmie@1: { gremmie@1: alert("You've already rated this download."); gremmie@1: return; gremmie@1: } gremmie@1: alert('Thanks for rating this download!'); gremmie@1: var div = star.parent('div'); gremmie@1: var stars = $('img', div); gremmie@1: rating = parseFloat(rating); gremmie@1: for (var i = 0; i < 5; ++i) gremmie@1: { gremmie@1: var s = $(stars[i]); gremmie@1: s.removeClass(s.attr('class')); gremmie@1: if (rating >= 1.0) gremmie@1: { gremmie@1: s.attr('src', '/static/downloads/stars/rating_on.gif'); gremmie@1: s.addClass('on') gremmie@1: rating -= 1.0; gremmie@1: } gremmie@1: else if (rating >= 0.5) gremmie@1: { gremmie@1: s.attr('src', '/static/downloads/stars/rating_half.gif'); gremmie@1: s.addClass('half') gremmie@1: rating = 0; gremmie@1: } gremmie@1: else gremmie@1: { gremmie@1: s.attr('src', '/static/downloads/stars/rating_off.gif'); gremmie@1: s.addClass('off') gremmie@1: } gremmie@1: } gremmie@1: }, gremmie@1: 'text'); gremmie@1: } gremmie@1: } gremmie@1: gremmie@1: $(document).ready(function() { gremmie@1: $('.rating').each(function(n) { gremmie@1: var div = $(this); gremmie@1: var id = div.attr('id'); gremmie@1: var numeric_id = -1; gremmie@1: if (id.match(/rating-(\d+)/)) gremmie@1: { gremmie@1: numeric_id = RegExp.$1; gremmie@1: } gremmie@1: var rating = div.html(); gremmie@1: div.html(''); gremmie@1: for (var i = 0; i < 5; ++i) gremmie@1: { gremmie@1: var star = $(''); gremmie@1: if (rating >= 1) gremmie@1: { gremmie@1: star.attr('src', '/static/downloads/stars/rating_on.gif'); gremmie@1: star.addClass('on') gremmie@1: --rating; gremmie@1: } gremmie@1: else if (rating >= 0.5) gremmie@1: { gremmie@1: star.attr('src', '/static/downloads/stars/rating_half.gif'); gremmie@1: star.addClass('half') gremmie@1: rating = 0; gremmie@1: } gremmie@1: else gremmie@1: { gremmie@1: star.attr('src', '/static/downloads/stars/rating_off.gif'); gremmie@1: star.addClass('off') gremmie@1: } gremmie@1: star.attr('alt', 'star'); gremmie@1: star.attr('id', 'star-' + numeric_id + '-' + i); gremmie@1: star.bind('mouseover', i, dlRatingOver); gremmie@1: star.bind('mouseout', i, dlRatingOut); gremmie@1: star.click(dlRatingClick); gremmie@1: div.append(star); gremmie@1: } gremmie@1: }); gremmie@1: });