

  function getEstrellas(num){
    var result = "";
    for(var i = 0; i < num; i++)
      result += '<div class="estrella_1 num_'+i+'.5"> </div>' + '<div class="estrella_2 num_'+(i+1)+'"> </div>';
    return result + '<div class="clear"></div>';
  }

  function seleccionaEstrellas(estrella, callBack){
    var elementos = jQuery(estrella).prevAll().andSelf();
    elementos.filter("[class ~='.5']").css("background","url(/lib/ebdml/57/estrella_roja_1.png) top left no-repeat");
    elementos.filter(":not([class ~='.5'])").css("background","url(/lib/ebdml/57/estrella_roja_2.png) top left no-repeat");

    elementos = jQuery(estrella).nextAll();
    elementos.filter("[class ~='.5']").css("background","url(/lib/ebdml/57/estrella_gris_1.png) top left no-repeat");
    elementos.filter(":not([class ~='.5'])").css("background","url(/lib/ebdml/57/estrella_gris_2.png) top left no-repeat");

    if(callBack)
      callBack.apply(jQuery(estrella).parent().get(0), [jQuery(estrella).attr("class").split("num_")[1]]);
  }

  function deseleccionaEstrellas(estrella, callBack){
    var elementos = jQuery(estrella).parent().children("*");
    elementos.filter("[class ~='.5']").css("background","url(/lib/ebdml/57/estrella_gris_1.png) top left no-repeat");
    elementos.filter(":not([class ~='.5'])").css("background","url(/lib/ebdml/57/estrella_gris_2.png) top left no-repeat");

    if(jQuery(estrella).parent().data("original") != '0')
      seleccionaEstrellas(jQuery(estrella).parent().find("[class~='num_"+jQuery(estrella).parent().data("original")+"']"));

    if(callBack)
      callBack.apply(jQuery(estrella).parent().get(0), [jQuery(estrella).parent().data("original")]);
  }
  

  function setEstrellas(elementos, callBack, In, Out, InNoVote, OutNoVote){
    jQuery(elementos).each(function(){
      var hidden = jQuery(this).find(":hidden[class~='voto']");
	  var enabled = jQuery(this).find(":hidden[class~='enabled']");
      var valor = 0;
      if (hidden.length == 0)
        jQuery(this).append('<input type="hidden" class="voto" value="0" />')
      else
        valor = hidden.val();
      
      var self = this;
      jQuery(this)
        .data("original", valor || '0')
        .append(getEstrellas(5))

      if (enabled.length == 0 || enabled.val() == 'S'){
        jQuery(this)
          .find("[class~='num_']")
            .click(function(){
              var valor = jQuery(this).attr("class").split("num_")[1];
              jQuery(self).html('<input type="hidden" class="voto" value="'+valor+'" />' + getEstrellas(5)).data("original", valor);
              jQuery(self).find(":hidden[class='voto']").val(valor);
              seleccionaEstrellas(jQuery(self).find("[class~='num_"+valor+"']"));
              if(callBack)
                callBack.apply(self, [valor]);
            })
            .hover(function(){
                seleccionaEstrellas(this, In);
              },function(){
                deseleccionaEstrellas(this, Out);
            })
	  }else{
        jQuery(this)
          .find("[class~='num_']")
            .hover(function(){
                if(InNoVote)
                  InNoVote.apply(this);
              },function(){
                if(OutNoVote)
                  OutNoVote.apply(this);
            })
	  }
      var estrella = null;
      if(valor > 0)
        estrella = jQuery(this).find("[class~='num_"+valor+"']");
      seleccionaEstrellas(estrella);
    })
  }

