function prototypeInit()
{
    init_rating();
    if(allow_rating){
        $$('.rating').each(function(n){
                        n.immediateDescendants().each(function(c){
                            Event.observe(c, 'click', setRating);
                        });
                    });
    }
}
function setRating(evt)
{
    var tmp = Event.element(evt).getAttribute('id').substr(5);
    var widgetId = tmp.substr(0, tmp.indexOf('_'));
    var starNbr = tmp.substr(tmp.indexOf('_')+1);
    starNbr++;
    vote[widgetId.substr(4)].value=starNbr;
    reinitStar(widgetId, starNbr)
    /*var rating = document.getElementById('rating_'+widgetId);
    while (rating.firstChild) {
       rating.removeChild(rating.firstChild);
    }
    rating.innerHTML=starNbr;
    prototypeInit();*/
}
Event.observe(window, 'load', prototypeInit);


var NUMBER_OF_STARS = 10;
var ali_ie = navigator.appName.indexOf("Microsoft") != -1;
var vote = new Array();

function init_rating()
{
    var ratings = document.getElementsByTagName('div');
    if(allow_rating){
        var nvote = document.getElementById('nvote').value;
        for(var j=1; j<=nvote; j++){
    	   vote[j] = document.getElementById('vote_'+j);
    	}
    }
    for (var i = 0; i < ratings.length; i++)
    {
        if (ratings[i].className != 'rating')
            continue;
        var rating = ratings[i].firstChild.nodeValue;
        var showrating = rating;
        if (rating > NUMBER_OF_STARS || rating < 0)
            continue;
        ratings[i].removeChild(ratings[i].firstChild);
        var stars = document.createElement('div');
        if (ali_ie){
            // For IE :
            stars.style.styleFloat='left';
         } else{
            // For Firefox :
            stars.style.cssFloat='left';
         }
        for (var j = 0; j < NUMBER_OF_STARS; j++)
        {
            var star = document.createElement('img');
            if (rating >= 1)
            {
                star.setAttribute('src', './images/stars/rating_on.gif');
                star.className = 'on';
                rating--;
            }
            else if(rating >= 0.5)
            {
                star.setAttribute('src', './images/stars/rating_half.gif');
                star.className = 'half';
                rating = 0;
            }
            else
            {
                star.setAttribute('src', './images/stars/rating_off.gif');
                star.className = 'off';
            }
            var widgetId = ratings[i].getAttribute('id').substr(7);
            star.setAttribute('id', 'star_'+widgetId+'_'+j);
            if(allow_rating){
               star.onmouseover = new Function("evt", 'displayHover("'+widgetId+'", '+j+");");
               star.onmouseout = new Function("evt", 'displayNormal("'+widgetId+'", '+j+");");
            }
            stars.appendChild(star);//ratings[i]
        }
        ratings[i].appendChild(stars);
        var voteElement = document.createElement('div');
        if (ali_ie){
            // For IE :
            voteElement.style.styleFloat='left';
         } else{
            // For Firefox :
            voteElement.style.cssFloat='left';
         }
        voteElement.setAttribute('id', 'votetmp_'+widgetId);
        if(allow_rating){
        	voteElement.innerHTML=vote[widgetId.substr(4)].value;
        }else{
        	voteElement.innerHTML=showrating;
        }
        ratings[i].appendChild(voteElement);
    }
}
function displayHover(ratingId, star)
{
    for (var i = 0; i <= star; i++)
    {
        var starElement = document.getElementById('star_'+ratingId+'_'+i);
        starElement.setAttribute('src', './images/stars/rating_over.gif');
    }
    var voteElement = document.getElementById('votetmp_'+ratingId);
    voteElement.innerHTML=star+1;
}
function reinitStar(ratingId, rating)
{
    for (var i = 0; i < NUMBER_OF_STARS; i++){
       var star = document.getElementById('star_'+ratingId+'_'+i);
       if (rating >= 1){
           star.setAttribute('src', './images/stars/rating_on.gif');
           star.className = 'on';
           rating--;
       }else{
           star.setAttribute('src', './images/stars/rating_off.gif');
           star.className = 'off';
       }
    }
}
function displayNormal(ratingId, star)
{
    for (var i = 0; i <= star; i++)
    {
        var status = document.getElementById('star_'+ratingId+'_'+i).className;
        var starElement = document.getElementById('star_'+ratingId+'_'+i);
        starElement.setAttribute('src', './images/stars/rating_'+status+'.gif');
    }
    var voteElement = document.getElementById('votetmp_'+ratingId);
    if(allow_rating){
       	voteElement.innerHTML=vote[ratingId.substr(4)].value;
    }else{
       	voteElement.innerHTML="";
    }
}