// Rating JavaScript functions and AJAX methods
// Requires Prototype.js

// 1. onLoad reavealing
// 2. onHover star class updating
// 3. onClick AJAX request handling


Event.observe(window, 'load', function(){
   // Hide nojs form
   // Show ajax form

   $('rater_nojs').hide();
   $('rater_ajax').show();
   
   Event.observe('rating_star_5', 'mouseover', function(){updateStars('on', 5);});
   Event.observe('rating_star_4', 'mouseover', function(){updateStars('on', 4);});
   Event.observe('rating_star_3', 'mouseover', function(){updateStars('on', 3);});
   Event.observe('rating_star_2', 'mouseover', function(){updateStars('on', 2);});
   Event.observe('rating_star_1', 'mouseover', function(){updateStars('on', 1);});

   Event.observe('rating_star_5', 'mouseout', function(){updateStars('off', 5);});
   Event.observe('rating_star_4', 'mouseout', function(){updateStars('off', 4);});
   Event.observe('rating_star_3', 'mouseout', function(){updateStars('off', 3);});
   Event.observe('rating_star_2', 'mouseout', function(){updateStars('off', 2);});
   Event.observe('rating_star_1', 'mouseout', function(){updateStars('off', 1);});

   Event.observe('rating_star_5', 'click', function(){handleRating(5);});
   Event.observe('rating_star_4', 'click', function(){handleRating(4);});
   Event.observe('rating_star_3', 'click', function(){handleRating(3);});
   Event.observe('rating_star_2', 'click', function(){handleRating(2);});
   Event.observe('rating_star_1', 'click', function(){handleRating(1);});
   
   // updateStars("on", current_rating);
   // setTimeout("updateStars('on', current_rating);", 500);
   
   if (current_rating == 0) { $('ajax_label').update(rating_labels[0]); };
   
   //$('webbli_view_info_container').style.height = '234px';

});

function handleRating(star)
{
    current_rating = star;
    var url = "/webblidrome/handle_rating.php";
    updateStatusLabel("Rating...");
    new Ajax.Updater ('response', url,
        {
            method: 'post',
            parameters: {action: "rate_ajax", user_id: $F('user_id'), movie_id: $F('movie_id'), movie_rating: star }, 
            onSuccess: function(){
                updateStatusLabel("Rated!");
            }
        })
    
    return false;
}

function updateStatusLabel(newStatus)
{
    $('ajax_status_label').update(newStatus);
}

function updateStars(newClass, star)
{
    if (star == 0) {
        updateStars("on", 3);
    };
    // alert ("Updating the stars!" + newClass + star);
    if (newClass=="on") {
        for (var i=1; i < 6; i++) {
            if (i < (star+1)) {
                $('rating_star_'+i).removeClassName("off");
                $('rating_star_'+i).addClassName("on");
            }
            else
            {
                $('rating_star_'+i).removeClassName("on");
                $('rating_star_'+i).addClassName("off");
            };
            $('ajax_label').update(rating_labels[star]);
        };
    }
    else
    {
        updateStars("on", current_rating);
        // for (var i=1; i < 6; i++) {
        //             $('rating_star_'+i).removeClassName("on");
        //             $('rating_star_'+i).addClassName("off");    
        //             $('ajax_label').update(rating_labels[0]); 
        //         };
    };
}
