/*
 jQuery Raty - A Star Rating Plugin

 The MIT License

 @author  : Washington Botelho
 @doc     : http://wbotelhos.com/raty
 @version : 2.7.0

*/
(function(e){var c={init:function(a){return this.each(function(){this.self=e(this);c.destroy.call(this.self);this.opt=e.extend(!0,{},e.fn.raty.defaults,a);c._adjustCallback.call(this);c._adjustNumber.call(this);c._adjustHints.call(this);this.opt.score=c._adjustedScore.call(this,this.opt.score);"img"!==this.opt.starType&&c._adjustStarType.call(this);c._adjustPath.call(this);c._createStars.call(this);this.opt.cancel&&c._createCancel.call(this);this.opt.precision&&c._adjustPrecision.call(this);c._createScore.call(this);
c._apply.call(this,this.opt.score);c._setTitle.call(this,this.opt.score);c._target.call(this,this.opt.score);this.opt.readOnly?c._lock.call(this):(this.style.cursor="pointer",c._binds.call(this))})},_adjustCallback:function(){for(var a=["number","readOnly","score","scoreName","target"],b=0;b<a.length;b++)"function"===typeof this.opt[a[b]]&&(this.opt[a[b]]=this.opt[a[b]].call(this))},_adjustedScore:function(a){return a?c._between(a,0,this.opt.number):a},_adjustHints:function(){this.opt.hints||(this.opt.hints=
[]);if(this.opt.halfShow||this.opt.half)for(var a=this.opt.precision?10:2,b=0;b<this.opt.number;b++){var c=this.opt.hints[b];"[object Array]"!==Object.prototype.toString.call(c)&&(c=[c]);this.opt.hints[b]=[];for(var f=0;f<a;f++){var e=c[f],g=c[c.length-1];void 0===g&&(g=null);this.opt.hints[b][f]=void 0===e?g:e}}},_adjustNumber:function(){this.opt.number=c._between(this.opt.number,1,this.opt.numberMax)},_adjustPath:function(){this.opt.path=this.opt.path||"";this.opt.path&&"/"!==this.opt.path.charAt(this.opt.path.length-
1)&&(this.opt.path+="/")},_adjustPrecision:function(){this.opt.half=!0},_adjustStarType:function(){var a=["cancelOff","cancelOn","starHalf","starOff","starOn"];this.opt.path="";for(var b=0;b<a.length;b++)this.opt[a[b]]=this.opt[a[b]].replace(".","-")},_apply:function(a){c._fill.call(this,a);a&&(0<a&&this.score.val(a),c._roundStars.call(this,a))},_between:function(a,b,c){return Math.min(Math.max(parseFloat(a),b),c)},_binds:function(){this.cancel&&(c._bindOverCancel.call(this),c._bindClickCancel.call(this),
c._bindOutCancel.call(this));c._bindOver.call(this);c._bindClick.call(this);c._bindOut.call(this)},_bindClick:function(){var a=this;a.stars.on("click.raty",function(b){var d=!0,f=a.opt.half||a.opt.precision?a.self.data("score"):this.alt||e(this).data("alt");a.opt.click&&(d=a.opt.click.call(a,+f,b));if(d||void 0===d)a.opt.half&&!a.opt.precision&&(f=c._roundHalfScore.call(a,f)),c._apply.call(a,f)})},_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 a=this;a.self.on("mouseleave.raty",function(b){var d=+a.score.val()||void 0;c._apply.call(a,d);c._target.call(a,d,b);c._resetTitle.call(a);a.opt.mouseout&&a.opt.mouseout.call(a,d,b)})},_bindOutCancel:function(){var a=this;a.cancel.on("mouseleave.raty",function(b){var d=a.opt.cancelOff;"img"!==a.opt.starType&&(d=a.opt.cancelClass+" "+d);c._setIcon.call(a,this,d);a.opt.mouseout&&(d=+a.score.val()||void 0,a.opt.mouseout.call(a,d,b))})},
_bindOver:function(){var a=this;a.stars.on(a.opt.half?"mousemove.raty":"mouseover.raty",function(b){var d=c._getScoreByPosition.call(a,b,this);c._fill.call(a,d);a.opt.half&&(c._roundStars.call(a,d,b),c._setTitle.call(a,d,b),a.self.data("score",d));c._target.call(a,d,b);a.opt.mouseover&&a.opt.mouseover.call(a,d,b)})},_bindOverCancel:function(){var a=this;a.cancel.on("mouseover.raty",function(b){var d=a.opt.path+a.opt.starOff,f=a.opt.cancelOn;"img"===a.opt.starType?a.stars.attr("src",d):(f=a.opt.cancelClass+
" "+f,a.stars.attr("class",d));c._setIcon.call(a,this,f);c._target.call(a,null,b);a.opt.mouseover&&a.opt.mouseover.call(a,null)})},_buildScoreField:function(){return e("<input />",{name:this.opt.scoreName,type:"hidden"}).appendTo(this)},_createCancel:function(){var a=this.opt.path+this.opt.cancelOff,b=e("<"+this.opt.starType+" />",{title:this.opt.cancelHint,"class":this.opt.cancelClass});"img"===this.opt.starType?b.attr({src:a,alt:"x"}):b.attr("data-alt","x").addClass(a);"left"===this.opt.cancelPlace?
this.self.prepend("&#160;").prepend(b):this.self.append("&#160;").append(b);this.cancel=b},_createScore:function(){var a=e(this.opt.targetScore);this.score=a.length?a:c._buildScoreField.call(this)},_createStars:function(){for(var a=1;a<=this.opt.number;a++){var b=c._nameForIndex.call(this,a);b={alt:a,src:this.opt.path+this.opt[b]};"img"!==this.opt.starType&&(b={"data-alt":a,"class":b.src});b.title=c._getHint.call(this,a);e("<"+this.opt.starType+" />",b).appendTo(this);this.opt.space&&this.self.append(a<
this.opt.number?"&#160;":"")}this.stars=this.self.children(this.opt.starType)},_error:function(a){e(this).text(a);e.error(a)},_fill:function(a){for(var b=0,d=1;d<=this.stars.length;d++){var f=this.stars[d-1];var e=c._turnOn.call(this,d,a);if(this.opt.iconRange&&this.opt.iconRange.length>b){var g=this.opt.iconRange[b];e=c._getRangeIcon.call(this,g,e);d<=g.range&&c._setIcon.call(this,f,e);d===g.range&&b++}else e=this.opt[e?"starOn":"starOff"],c._setIcon.call(this,f,e)}},_getFirstDecimal:function(a){a=
a.toString().split(".")[1];var b=0;a&&(b=parseInt(a.charAt(0),10),"9999"===a.slice(1,5)&&b++);return b},_getRangeIcon:function(a,b){return b?a.on||this.opt.starOn:a.off||this.opt.starOff},_getScoreByPosition:function(a,b){var d=parseInt(b.alt||b.getAttribute("data-alt"),10);if(this.opt.half){var f=c._getWidth.call(this);f=parseFloat((a.pageX-e(b).offset().left)/f);d=d-1+f}return d},_getHint:function(a,b){if(0!==a&&!a)return this.opt.noRatedMsg;var d=c._getFirstDecimal.call(this,a),e=this.opt.hints[(Math.ceil(a)||
1)-1],h=e,g=!b||this.move;if(this.opt.precision)g&&(d=0===d?9:d-1),h=e[d];else if(this.opt.halfShow||this.opt.half)h=e[g&&0===d?1:5<d?1:0];return""===h?"":h||a},_getWidth:function(){var a=this.stars[0].width||parseFloat(this.stars.eq(0).css("font-size"));a||c._error.call(this,"Could not get the icon width!");return a},_lock:function(){var a=c._getHint.call(this,this.score.val());this.style.cursor="";this.title=a;this.score.prop("readonly",!0);this.stars.prop("title",a);this.cancel&&this.cancel.hide();
this.self.data("readonly",!0)},_nameForIndex:function(a){return this.opt.score&&this.opt.score>=a?"starOn":"starOff"},_resetTitle:function(a){for(a=0;a<this.opt.number;a++)this.stars[a].title=c._getHint.call(this,a+1)},_roundHalfScore:function(a){var b=parseInt(a,10);a=c._getFirstDecimal.call(this,a);0!==a&&(a=5<a?1:.5);return b+a},_roundStars:function(a,b){var d=(a%1).toFixed(2);if(b||this.move)var e=.5<d?"starOn":"starHalf";else d>this.opt.round.down&&(e="starOn",this.opt.halfShow&&d<this.opt.round.up?
e="starHalf":d<this.opt.round.full&&(e="starOff"));e&&c._setIcon.call(this,this.stars[Math.ceil(a)-1],this.opt[e])},_setIcon:function(a,b){a["img"===this.opt.starType?"src":"className"]=this.opt.path+b},_setTarget:function(a,b){b&&(b=this.opt.targetFormat.toString().replace("{score}",b));a.is(":input")?a.val(b):a.html(b)},_setTitle:function(a,b){if(a){var d=parseInt(Math.ceil(a),10);this.stars[d-1].title=c._getHint.call(this,a,b)}},_target:function(a,b){if(this.opt.target){var d=e(this.opt.target);
d.length||c._error.call(this,"Target selector invalid or missing!");var f=b&&"mouseover"===b.type;if(void 0===a)a=this.opt.targetText;else if(null===a)a=f?this.opt.cancelHint:this.opt.targetText;else{"hint"===this.opt.targetType?a=c._getHint.call(this,a,b):this.opt.precision&&(a=parseFloat(a).toFixed(1));var h=b&&"mousemove"===b.type;f||h||this.opt.targetKeep||(a=this.opt.targetText)}c._setTarget.call(this,d,a)}},_turnOn:function(a,b){return this.opt.single?a===b:a<=b},_unlock:function(){this.style.cursor=
"pointer";this.removeAttribute("title");this.score.removeAttr("readonly");this.self.data("readonly",!1);for(var a=0;a<this.opt.number;a++)this.stars[a].title=c._getHint.call(this,a+1);this.cancel&&this.cancel.css("display","")},cancel:function(a){return this.each(function(){var b=e(this);!0!==b.data("readonly")&&(c[a?"click":"score"].call(b,null),this.score.removeAttr("value"))})},click:function(a){return this.each(function(){!0!==e(this).data("readonly")&&(a=c._adjustedScore.call(this,a),c._apply.call(this,
a),this.opt.click&&this.opt.click.call(this,a,e.Event("click")),c._target.call(this,a))})},destroy:function(){return this.each(function(){var a=e(this),b=a.data("raw");b?a.off(".raty").empty().css({cursor:b.style.cursor}).removeData("readonly"):a.data("raw",a.clone()[0])})},getScore:function(){var a=[],b;this.each(function(){b=this.score.val();a.push(b?+b:void 0)});return 1<a.length?a:a[0]},move:function(a){return this.each(function(){var b=parseInt(a,10),d=c._getFirstDecimal.call(this,a);b>=this.opt.number&&
(b=this.opt.number-1,d=10);var f=c._getWidth.call(this)/10;b=e(this.stars[b]);d=b.offset().left+f*d;d=e.Event("mousemove",{pageX:d});this.move=!0;b.trigger(d);this.move=!1})},readOnly:function(a){return this.each(function(){var b=e(this);b.data("readonly")!==a&&(a?(b.off(".raty").children("img").off(".raty"),c._lock.call(this)):(c._binds.call(this),c._unlock.call(this)),b.data("readonly",a))})},reload:function(){return c.set.call(this,{})},score:function(){var a=e(this);return arguments.length?c.setScore.apply(a,
arguments):c.getScore.call(a)},set:function(a){return this.each(function(){e(this).raty(e.extend({},this.opt,a))})},setScore:function(a){return this.each(function(){!0!==e(this).data("readonly")&&(a=c._adjustedScore.call(this,a),c._apply.call(this,a),c._target.call(this,a))})}};e.fn.raty=function(a){if(c[a])return c[a].apply(this,Array.prototype.slice.call(arguments,1));if("object"!==typeof a&&a)e.error("Method "+a+" does not exist!");else return c.init.apply(this,arguments)};e.fn.raty.defaults={cancel:!1,
cancelClass:"raty-cancel",cancelHint:"Cancel this rating!",cancelOff:"cancel-off.png",cancelOn:"cancel-on.png",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,path:void 0,precision:!1,readOnly:!1,round:{down:.25,full:.6,up:.76},score:void 0,scoreName:"score",single:!1,space:!0,starHalf:"star-half.png",starOff:"star-off.png",starOn:"star-on.png",starType:"img",
target:void 0,targetFormat:"{score}",targetKeep:!1,targetScore:void 0,targetText:"",targetType:"hint"}})(jQuery);