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]); bgneal@255: star.attr('src', '/media/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]); bgneal@255: star.attr('src', '/media/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: { bgneal@150: $.ajax({ bgneal@150: url: '/downloads/rate/', bgneal@150: type: 'POST', bgneal@150: data: { id: RegExp.$1, rating: parseInt(RegExp.$2) + 1}, bgneal@150: dataType: 'text', bgneal@150: success: 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: { bgneal@255: s.attr('src', '/media/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: { bgneal@255: s.attr('src', '/media/downloads/stars/rating_half.gif'); gremmie@1: s.addClass('half') gremmie@1: rating = 0; gremmie@1: } gremmie@1: else gremmie@1: { bgneal@255: s.attr('src', '/media/downloads/stars/rating_off.gif'); gremmie@1: s.addClass('off') gremmie@1: } gremmie@1: } gremmie@1: }, bgneal@150: error: function (xhr, textStatus, ex) { bgneal@150: alert('Oops, an error occurred. ' + xhr.statusText + ' - ' + bgneal@150: xhr.responseText); bgneal@150: } bgneal@150: }); 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: { bgneal@255: star.attr('src', '/media/downloads/stars/rating_on.gif'); gremmie@1: star.addClass('on') gremmie@1: --rating; gremmie@1: } gremmie@1: else if (rating >= 0.5) gremmie@1: { bgneal@255: star.attr('src', '/media/downloads/stars/rating_half.gif'); gremmie@1: star.addClass('half') gremmie@1: rating = 0; gremmie@1: } gremmie@1: else gremmie@1: { bgneal@255: star.attr('src', '/media/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: });