/*

  America.gov Site JavaScript: AJAX Rating Function
  
  America.gov Web Site
  United States Department of State
  Last Edited: May 2008 by Darren W Krape (krapedw@state.gov)

*/

$.fn.rating = function() {

  var p = $(this);
  $(this).find("input").hide();
  var radioButtons = $(this).find("input[@type=radio]");

  var blogID = $(this).find("input[@name=blogID]").attr("value");
  var postID = $(this).find("input[@name=postID]").attr("value");;
  
  var i = 1;
  while (i <= radioButtons.length) {
    var helpText = $(this).find("input:eq(" + (i - 1) + ")").attr("title");
    $(this).append("<a href='#' class='star' title='" + helpText + "'  alt='" + helpText + "'>" + i + "</a>");
    i++;
  };
  
  var currentRating = $(this).find("input.active").attr("value");
  
  if(currentRating) {
    var j = 0;
    while ((j + 1) <= currentRating) {
      $(this).find(".star:eq(" + j + ")").addClass("active");
      j++;
    }
  } else {
    currentRating = "";
  }
  
  $(p).append("<span class='hover-message'></span>");
  
  $(this).find(".star").hover(function(){
    var helpText = $(this).attr("title");
    $(p).find(".hover-message").text(helpText);

    $(this).addClass("highlight");
    $(p).find("a.star").addClass("disabled");
    $(p).find("a.star:lt(" + $(this).text() + ")").addClass("highlight");
    
  },function(){
    $(p).find("a.star").removeClass("disabled");
    $(p).find("a.star").removeClass("highlight");
    $(p).find(".hover-message").empty();
  });
  
  $(this).find(".star").click(function(){
    var submitRating = $(this).text();
    $(p).find(".star").remove();
    $(p).find(".hover-message").remove();

    var i = 1;
    while (i <= radioButtons.length) {
      if(submitRating >= i) var starActive = " submitted"; else var starActive = "";
      $(p).append("<span class='star" + starActive + "'>" + i + "</span>");
      i++;
    };

    $(p).append("<div class='message success'><span>Rating submitted</span></div>");

    $.ajax({
      type: "GET",
      url: "/index.php?rate_action=submit_vote",
      data: "blogID=" + blogID + "&postID=" + postID + "&newRating=" + submitRating + "&currentRating=" + currentRating
    });

    return false;
  });
  
};

$(function(){

  $('#form-rating').rating();

});