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