// Borrowed from http://www.progressive-coding.com/tutorial.php?id=6

var NUMBER_OF_STARS = 5;

function init_rating(div, isModifiable)
{
    var rating = parseFloat(div.firstChild.nodeValue);
    var originalRating = rating;
    if (isNaN(rating) || rating > NUMBER_OF_STARS || rating < 0) {
        return;
    }
    div.removeChild(div.firstChild);
    while (div.childNodes.length > 0) {
        div.removeChild(div.firstChild);
    }
    var widgetId = div.getAttribute('id');
    if (isModifiable && rating > 0) {
        var star = document.createElement('img');
        star.setAttribute('id', 'star_'+widgetId+'_0');
        star.setAttribute('src', '/djangomedia/img/stars/rating_none_off.gif');
        star.onmouseover = new Function("evt", "displayHover('"+widgetId+"', 0);");
        star.onmouseout = new Function("evt", "displayNormal('"+widgetId+"', 0);");
        div.appendChild(star);
    }
    for (var j = 1; j <= NUMBER_OF_STARS; j++)
    {
        var star = document.createElement('img');
        if (rating >= 0.95)
        {
            star.setAttribute('src', '/djangomedia/img/stars/rating_tenths_10.png');
            star.className = 'c10';
            rating--;
        } else if (rating > 0.05) {
            var tenths = Math.round((rating % 1.0) * 10);
            star.setAttribute('src', '/djangomedia/img/stars/rating_tenths_' + tenths + '.png');
            star.className = 'c' + tenths;
            rating = 0;
        } else {
            star.setAttribute('src', '/djangomedia/img/stars/rating_tenths_0.png');
            star.className = 'c0';
        }
        star.setAttribute('id', 'star_'+widgetId+'_'+j);
        if (isModifiable) {
            star.onmouseover = new Function("evt", "displayHover('"+widgetId+"', "+j+");");
            star.onmouseout = new Function("evt", "displayNormal('"+widgetId+"', "+j+");");
        }
        div.appendChild(star);
    } 
    if (isModifiable) {
        $('img', div).click(submitRating);
    } else {
        div.setAttribute('title', originalRating + ' stars');
    }
}

function displayHover(ratingId, star)
{
    if (star == 0) {
        $('#star_'+ratingId+'_0').attr('src', '/djangomedia/img/stars/rating_none_over.gif');
    } else {
        displayNormal(ratingId, 0);
        for (var i = 1; i <= star; i++)
        {
            $('#star_'+ratingId+'_'+i).attr('src', '/djangomedia/img/stars/rating_over.gif');
        }
    }
}

function displayNormal(ratingId, star)
{
    if (star == 0) {
        $('#star_'+ratingId+'_0').attr('src', '/djangomedia/img/stars/rating_none_off.gif');
    }
    for (var i = 1; i <= star; i++)
    {
        var status = document.getElementById('star_'+ratingId+'_'+i).className.substr(1);
        document.getElementById('star_'+ratingId+'_'+i).setAttribute('src', '/djangomedia/img/stars/rating_tenths_'+status+'.png');
    }
}
