function prototypeInit()
{
    init_rating();
    if(allow_rating){
        $$('.rating').each(function(n){
                        n.immediateDescendants().each(function(c){
                            Event.observe(c, 'click', submitRating);
                        });
                    });
    }
}
function submitRating(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++;
    new Ajax.Request('./rating.php', {
      method: 'post',
      parameters: {storyid: story_id, rating: starNbr, submit: 1},
      onSuccess: function(transport) {
          var response = new Array();
	  response=transport.responseText.split("|");
	  // remove all children from element
	  var rating = document.getElementById('rating_'+widgetId);
          while (rating.firstChild) {
             rating.removeChild(rating.firstChild);
          }
          rating.innerHTML=response[1];
          message=response[0];
          allow_rating=0;
          init_rating();
      }
    });
}
Event.observe(window, 'load', prototypeInit);


var NUMBER_OF_STARS = 10;
var message="";

function init_rating()
{
    var ratings = document.getElementsByTagName('div');
    for (var i = 0; i < ratings.length; i++)
    {
        if (ratings[i].className != 'rating')
            continue;
        var rating = ratings[i].firstChild.nodeValue;
        if(rating >= 0 && rating <= NUMBER_OF_STARS)
            ratings[i].removeChild(ratings[i].firstChild);
        if (rating > NUMBER_OF_STARS || rating < 0)
            continue;
        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+");");
            }
            ratings[i].appendChild(star);
        } 
        var vote = document.createElement('p');
        vote.appendChild(document.createTextNode(message));
        vote.setAttribute('id', 'vote_'+widgetId);
        ratings[i].appendChild(vote);
    }
}
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('vote_'+ratingId);
    voteElement.innerHTML=star+1;
}
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('vote_'+ratingId);
    voteElement.innerHTML="";
}