/*! * jQuery Raty FA - A Star Rating Plugin with Font Awesome * * Licensed under The MIT License * * @author : Jacob Overgaard * @doc : http://jacob87.github.io/raty-fa/ * @version : 0.1.1 * */ !function(a){var b={init:function(c){return this.each(function(){b.destroy.call(this),this.opt=a.extend(!0,{},a.fn.raty.defaults,c);var d=a(this),e=["number","readOnly","score","scoreName"];b._callback.call(this,e),this.opt.precision&&b._adjustPrecision.call(this),this.opt.number=b._between(this.opt.number,0,this.opt.numberMax),this.stars=b._createStars.call(this),this.score=b._createScore.call(this),b._apply.call(this,this.opt.score),this.opt.cancel&&(this.cancel=b._createCancel.call(this)),this.opt.width&&d.css("width",this.opt.width),this.opt.readOnly?b._lock.call(this):(d.css("cursor","pointer"),b._binds.call(this)),b._target.call(this,this.opt.score),d.data({settings:this.opt,raty:!0})})},_adjustPrecision:function(){this.opt.targetType="score",this.opt.half=!0},_apply:function(a){"undefined"!=typeof a&&a>=0&&(a=b._between(a,0,this.opt.number),this.score.val(a)),b._fill.call(this,a),a&&b._roundStars.call(this,a)},_between:function(a,b,c){return Math.min(Math.max(parseFloat(a),b),c)},_binds:function(){this.cancel&&b._bindCancel.call(this),b._bindClick.call(this),b._bindOut.call(this),b._bindOver.call(this)},_bindCancel:function(){b._bindClickCancel.call(this),b._bindOutCancel.call(this),b._bindOverCancel.call(this)},_bindClick:function(){var b=this,c=a(b);b.stars.on("click.raty",function(d){b.score.val(b.opt.half||b.opt.precision?c.data("score"):a(this).data("score")),b.opt.click&&b.opt.click.call(b,parseFloat(b.score.val()),d)})},_bindClickCancel:function(){var a=this;a.cancel.on("click.raty",function(b){a.score.removeAttr("value"),a.opt.click&&a.opt.click.call(a,null,b)})},_bindOut:function(){var c=this;a(this).on("mouseleave.raty",function(a){var d=parseFloat(c.score.val())||void 0;b._apply.call(c,d),b._target.call(c,d,a),c.opt.mouseout&&c.opt.mouseout.call(c,d,a)})},_bindOutCancel:function(){var b=this;b.cancel.on("mouseleave.raty",function(c){a(this).attr("class",b.opt.cancelOff),b.opt.mouseout&&b.opt.mouseout.call(b,b.score.val()||null,c)})},_bindOverCancel:function(){var c=this;c.cancel.on("mouseover.raty",function(d){a(this).attr("class",c.opt.cancelOn),c.stars.attr("class",c.opt.starOff),b._target.call(c,null,d),c.opt.mouseover&&c.opt.mouseover.call(c,null)})},_bindOver:function(){var c=this,d=a(c),e=c.opt.half?"mousemove.raty":"mouseover.raty";c.stars.on(e,function(e){var f=parseInt(a(this).data("score"),10);if(c.opt.half){var g=parseFloat((e.pageX-a(this).offset().left)/(c.opt.size?c.opt.size:parseInt(d.css("font-size")))),h=g>.5?1:.5;f=f-1+h,b._fill.call(c,f),c.opt.precision&&(f=f-h+g),b._roundStars.call(c,f),d.data("score",f)}else b._fill.call(c,f);b._target.call(c,f,e),c.opt.mouseover&&c.opt.mouseover.call(c,f,e)})},_callback:function(a){for(var b in a)"function"==typeof this.opt[a[b]]&&(this.opt[a[b]]=this.opt[a[b]].call(this))},_createCancel:function(){var b=a(this),c=this.opt.cancelOff,d=a("",{class:c,title:this.opt.cancelHint});return"left"==this.opt.cancelPlace?b.prepend(" ").prepend(d):b.append(" ").append(d),d},_createScore:function(){return a("",{type:"hidden",name:this.opt.scoreName}).appendTo(this)},_createStars:function(){for(var c=a(this),d=1;d<=this.opt.number;d++){var e=b._getHint.call(this,d),f=this.opt.score&&this.opt.score>=d?"starOn":"starOff";f=this.opt[f],a("",{class:f,title:e,"data-score":d}).appendTo(this),this.opt.space&&c.append(dc){var g=b.opt.iconRange[c],h=g.on||b.opt.starOn,i=g.off||b.opt.starOff,j=f?h:i;d<=g.range&&e.attr("class",j),d==g.range&&c++}else{var j=f?"starOn":"starOff";e.attr("class",this.opt[j])}}},_getHint:function(a){var b=this.opt.hints[a-1];return""===b?"":b||a},_lock:function(){var c=parseInt(this.score.val(),10),d=c?b._getHint.call(this,c):this.opt.noRatedMsg;a(this).data("readonly",!0).css("cursor","").attr("title",d),this.score.attr("readonly","readonly"),this.stars.attr("title",d),this.cancel&&this.cancel.hide()},_roundStars:function(a){var b=(a-Math.floor(a)).toFixed(2);if(b>this.opt.round.down){var c="starOn";this.opt.halfShow&&b1?b:b[0]},readOnly:function(c){return this.each(function(){var d=a(this);d.data("readonly")!==c&&(c?(d.off(".raty").children("i").off(".raty"),b._lock.call(this)):(b._binds.call(this),b._unlock.call(this)),d.data("readonly",c))})},reload:function(){return b.set.call(this,{})},score:function(){return arguments.length?b.setScore.apply(this,arguments):b.getScore.call(this)},set:function(b){return this.each(function(){var c=a(this),d=c.data("settings"),e=a.extend({},d,b);c.raty(e)})},setScore:function(c){return a(this).each(function(){a(this).data("readonly")!==!0&&(b._apply.call(this,c),b._target.call(this,c))})}};a.fn.raty=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist!"):b.init.apply(this,arguments)},a.fn.raty.defaults={cancel:!1,cancelHint:"Cancel this rating!",cancelOff:"fa fa-fw fa-minus-square",cancelOn:"fa fa-fw fa-check-square",cancelPlace:"left",click:void 0,half:!1,halfShow:!0,hints:["bad","poor","regular","good","gorgeous"],iconRange:void 0,mouseout:void 0,mouseover:void 0,noRatedMsg:"Not rated yet!",number:5,numberMax:20,precision:!1,readOnly:!1,round:{down:.25,full:.6,up:.76},score:void 0,scoreName:"score",single:!1,size:null,space:!0,starHalf:"fa fa-fw fa-star-half-o",starOff:"fa fa-fw fa-star-o",starOn:"fa fa-fw fa-star",target:void 0,targetFormat:"{score}",targetKeep:!1,targetText:"",targetType:"hint",width:!1}}(jQuery);