var arrMarkTitles = {
  0: ["Ужасно", "Плохо", "Посредственно", "Хорошо", "Великолепно"],
  1: ["Для начинающих", "Для любителей", "Для опытных", "Для продвинутых", "Для экспертов"]
};
jQuery.fn.clientMark = function(options) {
   var className = $(this).attr("class");
   var allStars = $(this);
   allStars.each(function(i) {
     var idEssence = $(this).attr("idEssence");
     var selectedIndex = $(this).attr("selectedIndex");
     var disabledValue = $(this).attr("isDisabled") == '1' ? true : false;
     $(this).activateMarks({
          disabled: disabledValue,
          /*captionEl: $("#mark_title_" + i),*/
          selectedIndex: selectedIndex,
          /*selectedValue: arrStarsControls[i]["selected"],*/
          /*arrMarksTitles: arrMarksTitles,*/
          callback: function(posNumber) {
            $.ajax ({
              type: "POST",
              url: W_AJAX + "mark.php",
              data: "selectedIndex=" + posNumber + "&essenceType=" + options.essenceType + "&idFolder=" + options.idFolder + "&ID_essence=" + idEssence + "&markType=" + options.markType + "&canAuthorEdit=" + options.canAuthorEdit,
              success: function (responseText) {
                var arrResponse = (navigator.userAgent.indexOf ("Opera") != -1) ? eval('(' + responseText + ')') : JSON.parse(responseText);
                if (!arrResponse['status']) {
                  alert(arrResponse['error']);
                }
              }
            });
          }
      }, options.markType);
   });
}

jQuery.fn.activateMarks = function(options, markType) {
  //Назначение событий для звезд
  basicValues(this, options.selectedIndex, markType);
  /*setTitle(options.captionEl, options.arrMarksTitles, options.selectedIndex);*/
  if (!options.disabled) { //Если не заблокировано
    $(this).click( function(event) {
      //var posNumber = clickOnStars(myGetLeft($(this).get(0)), $(this).width(), event, options.callback);
      var posNumber = clickOnStars($(this).offset().left , $(this).width(), event, options.callback);
      posNumber = posNumber == 5 ? 4 : posNumber;
      /*setTitle(options.captionEl, options.arrMarksTitles, posNumber);*/
      options.selectedIndex = posNumber;
      $(this).unbind().css("cursor", "default"); //блокируем элемент управления
    });
    var that = $(this);
    $(this).hover( function(event) {
        //posNumber = mouseOverOnStars(this, myGetLeft($(this).get(0)), $(this).width(), event, markType);
        posNumber = mouseOverOnStars(this, $(this).offset().left, $(this).width(), event, markType);
        posNumber = posNumber == 5 ? 4 : posNumber;
        /*setTitle(options.captionEl, options.arrMarksTitles, posNumber);*/
        //setTitle(posNumber, markType);
      },
      function(event){
        mouseOutOnStars(this, event, options.selectedIndex, markType);
        hideTitle(markType);
        /*setTitle(options.captionEl, options.arrMarksTitles, options.selectedIndex);*/
      });
  }
  else $(this).css("cursor", "default");
}

  /*
  //Выводим текстовое описание оценки
  setTitle = function(captionEl, arrMarksTitles, posNumber) {
    $(captionEl).html(arrMarksTitles[posNumber]);
  }*/
  //Выводим текстовое описание оценки
  setTitle = function(posNumber, markType) {
    var topEl = markType == 1 ? "slognost" : "kachestvo";
//    $("." + topEl + " .inner_mark_1").add("." + topEl + " .inner_mark_2").attr("title", arrMarkTitles[markType][posNumber]);
     $("." + topEl + " .markTitle").html("<center>" + arrMarkTitles[markType][posNumber] + "</center>").show();
  }
  
  hideTitle = function(markType) {
    var topEl = markType == 1 ? "slognost" : "kachestvo";
     $("." + topEl + " .markTitle").html("").hide();
  }

  //Устанавливаем начальное значение звёздочек
  basicValues = function(item, selectedIndex, markType) {
    var leftDivPos = $(item).offset().left;
    var widthDiv = $(item).width();
    $(item).children().width(getWidth(selectedIndex, markType));
    if (getWidth(selectedIndex, markType) == '0%' && markType == 1)
    	$("#complexityImg").width(0);
    //if(markType == 1) alert(selectedIndex);
  }

  // Событие mouseClick для звезд
  clickOnStars = function(left, width, evt, callback){
    evt = (evt) ? evt : ((window.event) ? window.event : null);
    if (evt) {
      var clickX = evt.clientX;
      if (window.navigator.appName == "Microsoft Internet Explorer") clickX -= 2;
      var posNumber = parseInt((clickX - left) / width * 5);
      callback(posNumber);
      return posNumber;
    }
  }

  // Событие mouseOver для звезд
  mouseOverOnStars = function(item, left, width, evt, markType){
    starsWidth = $(item).children().width();
    evt = (evt) ? evt : ((window.event) ? window.event : null);
    if (evt){
    	$(item).children().get(0).className="inner_mark_1";
    	if (markType == 1)
    		$("#complexityImg").attr('src', W_IMAGES + 'complexity_gradient-y.gif')
    }
    var leftDivPos = $(item).offset().left;
    var widthDiv = $(item).width();
    $(item).mousemove( function(event){
      mouseOnStars(item, leftDivPos, widthDiv, event, markType/*, captionEl, arrMarksTitles*/);
    });
    var overX = evt.clientX;
    if (window.navigator.appName == "Microsoft Internet Explorer") overX -= 2;
    var posNumber = parseInt((overX - leftDivPos) / width * 5);
    posNumber = posNumber == 5 ? 4 : posNumber;
    return posNumber;
  }

  // Событие mouseOn для звезд
  mouseOnStars = function(item, left, width, evt, markType/*, captionEl, arrMarksTitles*/){
    evt = (evt) ? evt : ((window.event) ? window.event : null);
    if (evt) {
      var coordX = evt.clientX;
      if (window.navigator.appName=="Microsoft Internet Explorer") coordX -= 2;
//      alert((parseInt((coordX - left) / width * 5) + 1) * 20 + "%" ); 
      $(item).children().width((parseInt((coordX - left) / width * 5) + 1) * 20 + "%").show();
      if ($(item).attr("class") == "complexity") {
        $(item).find("#complexityImg").width((parseInt((coordX - left) / width * 5)/* + 1*/) * 20 + "%");
      }
      var posNumber = parseInt((coordX-left)/width*5);
      posNumber = posNumber == 5 ? 4 : posNumber;
      setTitle(posNumber, markType);
      /*setTitle(captionEl, arrMarksTitles, parseInt((coordX-left)/width*5));*/
    }
  }

  // Событие mouseOut для звезд
  mouseOutOnStars = function(item, evt, selectedIndex, markType){
    //selectedIndex = selectedIndex < 0 ? 0 : selectedIndex;
    starsWidth = $(item).children().width();
    evt = (evt) ? evt : ((window.event) ? window.event : null);
    if (evt) {
      $(item).children().get(0).className="inner_mark_2";
      //var newW = getWidth(selectedIndex, markType);
      var newW = parseInt((parseInt(selectedIndex) + 1) * 20);
      //$('#ttt').html($('#ttt').html() + '<br />' + newW);
//      if (newW > 100) alert(1);
//      newW = newW > 100 ? 100 : newW;
	    $(item).children().width(newW + '%')//.hide();
	    //$(item).children().width(getWidth(selectedIndex, markType));
      if (newW == 0 && markType == 1)
      	$("#complexityImg").width(0);
    	if ($(item).attr("class") == "complexity") {
	      $("#complexityImg").attr('src', W_IMAGES + 'complexity_gradient-r.gif')
    	}
    }
    //alert(newW)
    $(item).unbind("mousemove");
  }

  function getWidth(selectedIndex, markType){
  	return parseInt((parseInt(selectedIndex) + 1) * 20) + "%";
  }
  
  
