if (typeof cm_js_clickable_stars_printed == "undefined") {

  var savedRatings = new Object();
  var ratingClasses = new Array(
                            "sprites star star_0_0",
                            "sprites star star_1_0",
                            "sprites star star_2_0",
                            "sprites star star_3_0",
                            "sprites star star_4_0",
                            "sprites star star_5_0"
                            );
  var ratingStrings = new Array(
														"星1つ､",
														"星2つ､",
														"星3つ､",
														"星4つ､",
														"星5つ､"
                             );
  var titleStrings = new Array(
														"星1つ",
														"星2つ",
														"星3つ",
														"星4つ",
														"星5つ"
                             );
  var selectedRatingStrings = new Array(
														"選択していません",
														"星1つ選択",
														"星2つ選択",
														"星3つ選択",
														"星4つ選択",
														"星5つ選択"
                             );
	function getRatingString(rating) {return ratingStrings[(rating-1)];}
	function getTitleString(rating) {return titleStrings[(rating-1)];}
	function getSelectedRatingString(rating) {return selectedRatingStrings[rating];}
	function getRatingClass(index) {return ratingClasses[index];}
  function getRatingFromElementID(elemID) {
    var prefix = 'starsArea_for_';
    if(elemID.substring(0,prefix.length) == prefix){
      return parseInt(elemID.substring(prefix.length, prefix.length+1));
    }else{
      return 0;
    }
  }
  function setRating(rating, starsElemID) {
    cm_js_saveRating(rating, starsElemID);
    cm_js_swapStars(rating, starsElemID);
  }
  function cm_js_saveRating(rating, starsElemID) {
    savedRatings[starsElemID] = rating;
    cm_js_updateAltText(rating, starsElemID);
  }
  function cm_js_swapStars(rating, starsElemID) {
    var imageElemName = "stars_for_" + starsElemID;
    imageObj = document.getElementById(imageElemName);
    imageObj.className = getRatingClass(rating);
  }
  function cm_js_processRateEvent(elemID, starsElemID, callback) {
    var rating = getRatingFromElementID(elemID);
		
		if($("#" + starsElemID + "Input").val() != rating){
			setRating(rating, starsElemID);
			callback(starsElemID, rating);
		}else{
			setRating(0, starsElemID);
			callback(starsElemID, 0);
		}
  }
  function cm_js_updateAltText(rating, starsElemName) {
    var imageAltElemName = "stars_for_" + starsElemName + "AltText";
    ratingString = getSelectedRatingString(rating);
    jQuery("#" + imageAltElemName).html(ratingString);
  }
  function showStars(starsID,rating,callback) {
    var imageID = "stars_for_" + starsID;
    savedRatings[starsID] = rating;
    var starsHTML  = "<span id=" + '"' + imageID + '"' +
                    " class=" + '"' + getRatingClass(rating) + '"' + ">" +
                    "<span id=" + '"' + imageID + "AltText" + '"' + ">" + getSelectedRatingString(rating) +
                    "</span>";
    for (var i = 1; i <= 5; i++) {
      var id = "starsArea_for_" + i + "_" + starsID;
      var altText = getRatingString(i);

      starsHTML += "<div title=" + '"' + getTitleString(i) + '"' + " id=" + '"' + id  + '" ' + "style=" + '"' + "float:left; width:13px;" + '" ' + "tabindex=0" + " alt=" + "'" +altText + "'" + ">" + 
                  "&nbsp;" + 
                  "</div>";
    }
    starsHTML += "</span>";
    var html = $("#" +starsID ).html();
    $("#" +starsID ).html(html + starsHTML);
    if (rating != 0) {
      cm_js_updateAltText(rating, starsID);
    }
    $("#" +imageID).bind("mouseleave",
      function() {
        cm_js_swapStars(savedRatings[starsID], starsID);
      }
    );
    for (var i = 1; i <= 5; i++) {
      var id = "starsArea_for_" + i + "_" + starsID;

      $("#" +id).bind("click",
        function(event) {
          var elemID = event.target.id;
          cm_js_processRateEvent(elemID, starsID, callback);
          $("#" + elemID).blur();
        }
      );
      $("#" +id).bind("keypress",
        function(event) {
          var key = event.charCode || event.keyCode;
          if (key && key == 13) {
            var elemID = event.target.id;
            cm_js_processRateEvent(elemID, starsID, callback);
            event.preventDefault(); // prevent browser from submitting
          }
        }
      );
      $("#" +id).bind("mouseover",
        function(event) {
          var elemID = event.target.id;
          var rating = getRatingFromElementID(elemID);
          cm_js_swapStars(rating, starsID);
        }
      );

    }

  }

}
var cm_js_clickable_stars_printed = true;

var rateReviewCallback = function reviewStarsClicked(starsDisplayElement, rating) {
	$("#" + starsDisplayElement + "Input").val(rating);

	$("#structuredRatingsList").css("display", "inline");
	$("#structuredRatingsShowLink").hide();
	$("#structuredRatingsHideLink").show();

	return false;
};
