Mercurial > public > sg101
diff media/js/downloads/rating.js @ 1:dbd703f7d63a
Initial import of sg101 stuff from private repository.
author | gremmie |
---|---|
date | Mon, 06 Apr 2009 02:43:12 +0000 |
parents | |
children | b43e1288ff80 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/media/js/downloads/rating.js Mon Apr 06 02:43:12 2009 +0000 @@ -0,0 +1,107 @@ +function dlRatingOver(event) +{ + var div = $(this).parent('div'); + var stars = $('img', div); + for (var i = 0; i <= event.data; ++i) + { + var star = $(stars[i]); + star.attr('src', '/static/downloads/stars/rating_over.gif'); + } +} + +function dlRatingOut(event) +{ + var div = $(this).parent('div'); + var stars = $('img', div); + for (var i = 0; i <= event.data; ++i) + { + var star = $(stars[i]); + star.attr('src', '/static/downloads/stars/rating_' + star.attr('class') + '.gif'); + } +} + +function dlRatingClick(event) +{ + var star = $(this); + var id = star.attr('id'); + if (id.match(/star-(\d+)-(\d+)/)) + { + $.post('/downloads/rate/', { id: RegExp.$1, rating: parseInt(RegExp.$2) + 1}, + function(rating) { + rating = parseFloat(rating); + if (rating < 0) + { + alert("You've already rated this download."); + return; + } + alert('Thanks for rating this download!'); + var div = star.parent('div'); + var stars = $('img', div); + rating = parseFloat(rating); + for (var i = 0; i < 5; ++i) + { + var s = $(stars[i]); + s.removeClass(s.attr('class')); + if (rating >= 1.0) + { + s.attr('src', '/static/downloads/stars/rating_on.gif'); + s.addClass('on') + rating -= 1.0; + } + else if (rating >= 0.5) + { + s.attr('src', '/static/downloads/stars/rating_half.gif'); + s.addClass('half') + rating = 0; + } + else + { + s.attr('src', '/static/downloads/stars/rating_off.gif'); + s.addClass('off') + } + } + }, + 'text'); + } +} + +$(document).ready(function() { + $('.rating').each(function(n) { + var div = $(this); + var id = div.attr('id'); + var numeric_id = -1; + if (id.match(/rating-(\d+)/)) + { + numeric_id = RegExp.$1; + } + var rating = div.html(); + div.html(''); + for (var i = 0; i < 5; ++i) + { + var star = $('<img />'); + if (rating >= 1) + { + star.attr('src', '/static/downloads/stars/rating_on.gif'); + star.addClass('on') + --rating; + } + else if (rating >= 0.5) + { + star.attr('src', '/static/downloads/stars/rating_half.gif'); + star.addClass('half') + rating = 0; + } + else + { + star.attr('src', '/static/downloads/stars/rating_off.gif'); + star.addClass('off') + } + star.attr('alt', 'star'); + star.attr('id', 'star-' + numeric_id + '-' + i); + star.bind('mouseover', i, dlRatingOver); + star.bind('mouseout', i, dlRatingOut); + star.click(dlRatingClick); + div.append(star); + } + }); +});