/*
	* Based on Wil Stuckey's Star Rating Plugin ( wil[dot]stuckey[at]gmail[dot]com ) - see http://www.visualjquery.com/rating/rating_redux.html
	*
	* Modified by Ben Schwabe ( ben[dot]schwabe[at]gmail[dot]com ) to include a hidden field and to allow multiple select boxes
	* Also removed auto form submission. bla bla bla... 
	* Fixed compatability with jQuery 1.2.3
*/

(function($) {
  var buildRating = function(obj) {
    var rating = averageRating(obj),
        obj    = buildInterface(obj),
        stars  = $("div.star", obj),
        cancel = $("div.cancel", obj),
		hiddenfield = $("input.hiddenValue", obj)

        var fill = function() {
          drain();
          $("a", stars).css("width", "100%");
          stars.slice(0, stars.index(this) + 1).addClass("hover");
        },
        drain = function() {
          stars.removeClass("on").removeClass("hover");
        },
        reset = function() {
          drain();
          stars.slice(0, rating).addClass("on");
        },
        cancelOn = function() {
          drain();
          $(this).addClass("on");
        },
        cancelOff = function() {
          reset();
          $(this).removeClass("on")
        }

    stars
      .hover(fill, reset).focus(fill).blur(reset)
      .click(function() {
        rating = stars.index(this) + 1;
		$(hiddenfield).attr('value', rating);
		reset();
        return false;
      });

    reset();
    return obj;

  }

  var buildInterface = function(selectBox) {
    var container = $("<div></div>").attr({"class": selectBox.className});
    var optGroup  = $("option", $(selectBox));
    var size      = 0;
        
    // Render the div for each star
    optGroup.slice(1,optGroup.length).each(function() {
      		container.append($('<div class="star"><a href="#' + this.value + '" title="Give it ' + this.value + '/'+ (optGroup.length-1) +'">' + this.value + '</a></div>'));
    });
	container.append($('<input type="hidden" name="' + selectBox.name + '" id="' + selectBox.id + '" class="hiddenValue" value="'+ selectBox.value  +'" />'));
    $(selectBox).after(container).remove();
    return container;
  }

  var averageRating = function(selectBox) { 
  
	 var selectedValue ='';
	 
  	 var optGroup  = $("option", $(selectBox));
	 optGroup.each(function() {
			if(this.selected)
			{
				selectedValue = this.value;		
			}
		});
	 return selectedValue;
  }

  $.fn.rating = function() { return $($.map(this, function(i) { return buildRating(i)[0] })); }

	if ($.browser.msie) try { document.execCommand("BackgroundImageCache", false, true)} catch(e) { }

})(jQuery);

(function($) {
    $(function() {
        $('#prRateExperience select').rating();
        
        $('.detailedRatings').each(function() {
            var detailedRating = $(this), anchor = $("<span></span>");
            
            var changeAchorState = function() {
              if(detailedRating.is(":hidden")) {
                anchor.text("Show detailed rating");
                anchor.parent().removeClass('reveal');
              }
              else {
                anchor.text("Hide detailed rating");
                anchor.parent().addClass('reveal');
              }
            };
            changeAchorState();  // initial state
            detailedRating.prev('.ratingFull').append(
              anchor.addClass('toggleDetailedRating').
              click(function() {
                detailedRating.slideToggle('normal', changeAchorState);
              }).hover(function() {
                $(this).addClass('hover');
              },function() {
                $(this).removeClass('hover');
              }));
        });
    });
})(jQuery);