$(document).ready(function(){
 starRating.create('.rateWidget');
});

// The widget
var starRating = {
  create: function(selector) {
    // loop over every element matching the selector
    $(selector).each(function() {
      var $list = $('<div></div>');
      // loop over every radio button in each container
      $(this)
        .find('input:radio')
        .each(function(i) {
          var rating = $(this).parent().text();
          var $item = $('<a href="#"></a>')
            .attr('title', rating)
            .addClass(i % 2 == 1 ? 'rating-right' : '')
            .text(rating);
          
          starRating.addHandlers($item);
          $list.append($item);
          
          if($(this).is(':checked')) {
            $item.prevAll().andSelf().addClass('rating');
          }
        });
        // Hide the original radio buttons
       $(this).append($list).find('label').hide();
       
    });
  },
  addHandlers: function(item)
  {
    $(item).click(function(e) 
    {
         if ( $(this).parent().parent().hasClass("rateActive") == false )
         {
                  // Handle Star click
                  var $star = $(this);
                  var $allLinks = $(this).parent();

                  // Set the radio button value

                  var value =  parseInt($star.text());
                  
                  // check the input radio 
                  $allLinks.parent().find('input:radio[name$="rating"][value="' + value  + '"]').attr('checked','checked');

                  // Set the ratings
                  $allLinks.children().removeClass('rating');
                  $star.prevAll().andSelf().addClass('rating');


                  if ($allLinks.parent().hasClass("ajaxSave") == true)
                  {
                        var eventId = $allLinks.parent().find('input.eventIdRate').val();
                        var rate_data = 'eventId='+eventId+'&rate='+value;

                        $.ajax({
                               type     : "POST",
                               url      : Whaddado.base_url+'events/rate/',
                               data     : rate_data,
                               dataType : "json"
                             });
                             
                        $(this).parent().parent().addClass("rateActive");
                  } else  if ($allLinks.parent().hasClass("ajaxSaveList") == true) {
                        var boxId = $allLinks.parent().find('input.listIdRate').val();
                        var rate_data = 'boxId='+boxId+'&rate='+value;

                        $.ajax({
                               type     : "POST",
                               url      : Whaddado.base_url+'box/rate/',
                               data     : rate_data,
                               dataType : "json"
                             });

                        $(this).parent().parent().addClass("rateActive");
                  }

                  // prevent default link click
                  e.preventDefault();
         }

         return false;
          
    }).hover(function() 
    {
        if ( $(this).parent().parent().hasClass("rateActive") == false )
        {
      // Handle star mouse over
             $(this).prevAll().andSelf().addClass('rating-over');
        }
    }, function()
    {
        if ( $(this).parent().parent().hasClass("rateActive") == false )
        {
            // Handle star mouse out
            $(this).siblings().andSelf().removeClass('rating-over')
        }
    });    
  }
  
}
