﻿window.onDomReady(mooInit);


var preloaded = new Array();
function preload_images() {
    for (var i = 0; i < arguments.length; i++){
        preloaded[i] = document.createElement('img');
        preloaded[i].setAttribute('src',arguments[i]);
    };
};


var NUMBER_OF_STARS = 5;

function submitRating(evt){
    var tmp = new Event(evt).target.getAttribute('id').substr(5);
    var parentDiv = document.getElementById(new Event(evt).target.getAttribute('id')).parentNode;
    var widgetId = tmp.substr(0, tmp.indexOf('_'));
    var starNbr = tmp.substr(tmp.indexOf('_')+1);
    var queryString = Object.toQueryString({'ratingID': widgetId, 'value': starNbr});
    var myAjax = new Ajax('/rating_tutorial.asp?'+queryString, {
        method: 'get',
        onComplete: function(result){
            //Vengono rimossi tutti i figli
            while (parentDiv.firstChild) {
                parentDiv.removeChild(parentDiv.firstChild);
            }
            //viene richiamata la funzione che andrà a rimettere le stelline
            setStarAfter(parentDiv, result)
        }
    }).request();
}


function mooInit(){
    init_rating();
    //preload immagini
    preload_images('/images/rating_on.gif','/images/rating_half.gif','/images/rating_off.gif')
	$$(".rating").getChildren().each(function(star) {
	    star.addEvent('click', submitRating);
    });
}

function setStarAfter(element, rating){
    for (var j = 0; j < NUMBER_OF_STARS; j++){
        var star = document.createElement('img');
        if (rating >= 1){
            star.setAttribute('src', '/images/rating_on.gif');
            star.className = 'on';
            rating--;
        }else if(rating >= 0.3 && rating <= 0.7){
            star.setAttribute('src', '/images/rating_half.gif');
            star.className = 'half';
            rating = 0;
        }else{
            star.setAttribute('src', '/images/rating_off.gif');
            star.className = 'off';
        }
        var widgetId = element.getAttribute('id').substr(7);
        star.style.cursor="default"
        star.setAttribute('id', 'star_'+widgetId+'_'+j);
        element.appendChild(star);
    } 

}

function init_rating(){
    var ratings = document.getElementsByTagName('div');
    for (var i = 0; i < ratings.length; i++){
        var alreadyRating = false;
        if (ratings[i].className != 'rating')
            continue;
        var rating = ratings[i].firstChild.nodeValue;
        if (rating.indexOf("_alreadyVote") > 0) {
            rating = rating.substr(0,rating.indexOf('_alreadyVote'));
            alreadyRating = true
        }
        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/rating_on.gif');
                star.className = 'on';
                rating--;
            }else if(rating >= 0.3 && rating <= 0.7){
                star.setAttribute('src', '/images/rating_half.gif');
                star.className = 'half';
                rating = 0;
            }else{
                star.setAttribute('src', '/images/rating_off.gif');
                star.className = 'off';
            }
            var widgetId = ratings[i].getAttribute('id').substr(7);
            star.setAttribute('id', 'star_'+widgetId+'_'+j);
            if (!alreadyRating){
                star.onmouseover = new Function("evt", "displayHover("+widgetId+", "+j+");");
                star.onmouseout = new Function("evt", "displayNormal("+widgetId+", "+j+");");
                star.style.cursor="pointer"
            }else{
                star.style.cursor="default"
            }
            ratings[i].appendChild(star);
        } 
    }
}



function displayHover(ratingId, star){
    for (var i = 0; i <= star; i++){
        document.getElementById('star_'+ratingId+'_'+i).setAttribute('src', '/images/rating_over.gif');
    }
}

function displayNormal(ratingId, star){
    for (var i = 0; i <= star; i++){
        var status = document.getElementById('star_'+ratingId+'_'+i).className;
        document.getElementById('star_'+ratingId+'_'+i).setAttribute('src', '/images/rating_'+status+'.gif');
    }
}