(function(n){"use strict";typeof define=="function"&&define.amd?define(["jquery"],n):typeof module=="object"&&module.exports?module.exports=n(require("jquery")):n(window.jQuery)})(function(n){"use strict";n.fn.ratingLocales={};var e,o,s,h,t,r,f,c,l,i,u;e=".rating";o=0;s=5;h=.5;t=function(t,i){return t===null||t===undefined||t.length===0||i&&n.trim(t)===""};r=function(n,t){return n?" "+t:""};f=function(n,t){n.removeClass(t).addClass(t)};c=function(n){var t=(""+n).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0};l=function(n,t){return parseFloat(n.toFixed(t))};i=function(n,t,i,r){var u=r?t:t.split(" ").join(e+" ")+e;n.off(u).on(u,i)};u=function(t,i){var r=this;r.$element=n(t);r._init(i)};u.prototype={constructor:u,_parseAttr:function(n,i){var a=this,f=a.$element,c=f.attr("type"),l,e,r,u;if(c==="range"||c==="number"){e=i[n]||f.data(n)||f.attr(n);switch(n){case"min":r=o;break;case"max":r=s;break;default:r=h}l=t(e)?r:e;u=parseFloat(l)}else u=parseFloat(i[n]);return isNaN(u)?r:u},_setDefault:function(n,i){var r=this;t(r[n])&&(r[n]=i)},_listenClick:function(n,t){if(n.stopPropagation(),n.preventDefault(),n.handled!==!0)t(n),n.handled=!0;else return!1},_starClick:function(n){var t=this,i;t._listenClick(n,function(n){if(t.inactive)return!1;i=t._getTouchPosition(n);t._setStars(i);t.$element.trigger("change").trigger("rating.change",[t.$element.val(),t._getCaption()]);t.starClicked=!0})},_starMouseMove:function(n){var t=this,r,i;!t.hoverEnabled||t.inactive||n&&n.isDefaultPrevented()||(t.starClicked=!1,r=t._getTouchPosition(n),i=t.calculate(r),t._toggleHover(i),t.$element.trigger("rating.hover",[i.val,i.caption,"stars"]))},_starMouseLeave:function(n){var t=this,i;!t.hoverEnabled||t.inactive||t.starClicked||n&&n.isDefaultPrevented()||(i=t.cache,t._toggleHover(i),t.$element.trigger("rating.hoverleave",["stars"]))},_clearClick:function(n){var t=this;t._listenClick(n,function(){t.inactive||(t.clear(),t.clearClicked=!0)})},_clearMouseMove:function(n){var t=this,r,i,u,f;!t.hoverEnabled||t.inactive||!t.hoverOnClear||n&&n.isDefaultPrevented()||(t.clearClicked=!1,r='<span class="'+t.clearCaptionClass+'">'+t.clearCaption+"<\/span>",i=t.clearValue,u=t.getWidthFromValue(i)||0,f={caption:r,width:u,val:i},t._toggleHover(f),t.$element.trigger("rating.hover",[i,r,"clear"]))},_clearMouseLeave:function(n){var t=this,i;!t.hoverEnabled||t.inactive||t.clearClicked||!t.hoverOnClear||n&&n.isDefaultPrevented()||(i=t.cache,t._toggleHover(i),t.$element.trigger("rating.hoverleave",["clear"]))},_resetForm:function(n){var t=this;n&&n.isDefaultPrevented()||t.inactive||t.reset()},_setTouch:function(n,i){var r=this,f,o,e,u,s,h,c,l="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch;l&&!r.inactive&&(f=n.originalEvent,o=t(f.touches)?f.changedTouches:f.touches,e=r._getTouchPosition(o[0]),i?(r._setStars(e),r.$element.trigger("change").trigger("rating.change",[r.$element.val(),r._getCaption()]),r.starClicked=!0):(u=r.calculate(e),s=u.val<=r.clearValue?r.fetchCaption(r.clearValue):u.caption,h=r.getWidthFromValue(r.clearValue),c=u.val<=r.clearValue?h+"%":u.width,r._setCaption(s),r.$filledStars.css("width",c)))},_initTouch:function(n){var t=this,i=n.type==="touchend";t._setTouch(n,i)},_initSlider:function(n){var i=this;t(i.$element.val())&&i.$element.val(0);i.initialValue=i.$element.val();i._setDefault("min",i._parseAttr("min",n));i._setDefault("max",i._parseAttr("max",n));i._setDefault("step",i._parseAttr("step",n));(isNaN(i.min)||t(i.min))&&(i.min=o);(isNaN(i.max)||t(i.max))&&(i.max=s);(isNaN(i.step)||t(i.step)||i.step===0)&&(i.step=h);i.diff=i.max-i.min},_initHighlight:function(n){var t=this,i,r=t._getCaption();n||(n=t.$element.val());i=t.getWidthFromValue(n)+"%";t.$filledStars.width(i);t.cache={caption:r,width:i,val:n}},_getContainerCss:function(){var n=this;return"rating-container"+r(n.theme,"theme-"+n.theme)+r(n.rtl,"rating-rtl")+r(n.size,"rating-"+n.size)+r(n.animate,"rating-animate")+r(n.disabled||n.readonly,"rating-disabled")+r(n.containerClass,n.containerClass)},_checkDisabled:function(){var n=this,i=n.$element,t=n.options;n.disabled=t.disabled===undefined?i.attr("disabled")||!1:t.disabled;n.readonly=t.readonly===undefined?i.attr("readonly")||!1:t.readonly;n.inactive=n.disabled||n.readonly;i.attr({disabled:n.disabled,readonly:n.readonly})},_addContent:function(n,t){var r=this,i=r.$container,u=n==="clear";return r.rtl?u?i.append(t):i.prepend(t):u?i.prepend(t):i.append(t)},_generateRating:function(){var t=this,u=t.$element,r,i,e;i=t.$container=n(document.createElement("div")).insertBefore(u);f(i,t._getContainerCss());t.$rating=r=n(document.createElement("div")).attr("class","rating").appendTo(i).append(t._getStars("empty")).append(t._getStars("filled"));t.$emptyStars=r.find(".empty-stars");t.$filledStars=r.find(".filled-stars");t._renderCaption();t._renderClear();t._initHighlight();i.append(u);t.rtl&&(e=Math.max(t.$emptyStars.outerWidth(),t.$filledStars.outerWidth()),t.$emptyStars.width(e))},_getCaption:function(){var n=this;return n.$caption&&n.$caption.length?n.$caption.html():n.defaultCaption},_setCaption:function(n){var t=this;t.$caption&&t.$caption.length&&t.$caption.html(n)},_renderCaption:function(){var t=this,u=t.$element.val(),r,i=t.captionElement?n(t.captionElement):"";if(t.showCaption){if(r=t.fetchCaption(u),i&&i.length){f(i,"caption");i.html(r);t.$caption=i;return}t._addContent("caption",'<div class="caption">'+r+"<\/div>");t.$caption=t.$container.find(".caption")}},_renderClear:function(){var t=this,r,i=t.clearElement?n(t.clearElement):"";if(t.showClear){if(r=t._getClearClass(),i.length){f(i,r);i.attr({title:t.clearButtonTitle}).html(t.clearButton);t.$clear=i;return}t._addContent("clear",'<div class="'+r+'" title="'+t.clearButtonTitle+'">'+t.clearButton+"<\/div>");t.$clear=t.$container.find("."+t.clearButtonBaseClass)}},_getClearClass:function(){return this.clearButtonBaseClass+" "+(this.inactive?"":this.clearButtonActiveClass)},_getTouchPosition:function(n){var i=t(n.pageX)?n.originalEvent.touches[0].pageX:n.pageX;return i-this.$rating.offset().left},_toggleHover:function(n){var t=this,r,u,i;n&&(t.hoverChangeStars&&(r=t.getWidthFromValue(t.clearValue),u=n.val<=t.clearValue?r+"%":n.width,t.$filledStars.css("width",u)),t.hoverChangeCaption&&(i=n.val<=t.clearValue?t.fetchCaption(t.clearValue):n.caption,i&&t._setCaption(i+"")))},_init:function(t){var i=this,r=i.$element.addClass("hide");return i.options=t,n.each(t,function(n,t){i[n]=t}),(i.rtl||r.attr("dir")==="rtl")&&(i.rtl=!0,r.attr("dir","rtl")),i.starClicked=!1,i.clearClicked=!1,i._initSlider(t),i._checkDisabled(),i.displayOnly&&(i.inactive=!0,i.showClear=!1,i.showCaption=!1),i._generateRating(),i._listen(),r.removeClass("rating-loading")},_listen:function(){var t=this,f=t.$element,e=f.closest("form"),r=t.$rating,u=t.$clear;return i(r,"touchstart touchmove touchend",n.proxy(t._initTouch,t)),i(r,"click touchstart",n.proxy(t._starClick,t)),i(r,"mousemove",n.proxy(t._starMouseMove,t)),i(r,"mouseleave",n.proxy(t._starMouseLeave,t)),t.showClear&&u.length&&(i(u,"click touchstart",n.proxy(t._clearClick,t)),i(u,"mousemove",n.proxy(t._clearMouseMove,t)),i(u,"mouseleave",n.proxy(t._clearMouseLeave,t))),e.length&&i(e,"reset",n.proxy(t._resetForm,t)),f},_getStars:function(n){for(var i=this,r='<span class="'+n+'-stars">',t=1;t<=i.stars;t++)r+='<span class="star">'+i[n+"Star"]+"<\/span>";return r+"<\/span>"},_setStars:function(n){var t=this,i=arguments.length?t.calculate(n):t.calculate(),r=t.$element;return r.val(i.val),t.$filledStars.css("width",i.width),t._setCaption(i.caption),t.cache=i,r},showStars:function(n){var t=this,i=parseFloat(n);return t.$element.val(isNaN(i)?t.clearValue:i),t._setStars()},calculate:function(n){var i=this,f=t(i.$element.val())?0:i.$element.val(),r=arguments.length?i.getValueFromPosition(n):f,e=i.fetchCaption(r),u=i.getWidthFromValue(r);return u+="%",{caption:e,width:u,val:r}},getValueFromPosition:function(n){var t=this,u=c(t.step),i,r,f=t.$rating.width();return r=t.diff*n/(f*t.step),r=t.rtl?Math.floor(r):Math.ceil(r),i=l(parseFloat(t.min+r*t.step),u),i=Math.max(Math.min(i,t.max),t.min),t.rtl?t.max-i:i},getWidthFromValue:function(n){var i=this,t=i.min,r=i.max,f,e=i.$emptyStars,u;return!n||n<=t||t===r?0:(u=e.outerWidth(),f=u?e.width()/u:1,n>=r)?100:(n-t)*f*100/(r-t)},fetchCaption:function(n){var r=this,i=parseFloat(n)||r.clearValue,s,h,u,f,a,e=r.starCaptions,o=r.starCaptionClasses;return i&&i!==r.clearValue&&(i=l(i,c(r.step))),f=typeof o=="function"?o(i):o[i],u=typeof e=="function"?e(i):e[i],h=t(u)?r.defaultCaption.replace(/\{rating}/g,i):u,s=t(f)?r.clearCaptionClass:f,a=i===r.clearValue?r.clearCaption:h,'<span class="'+s+'">'+a+"<\/span>"},destroy:function(){var i=this,r=i.$element;return t(i.$container)||i.$container.before(r).remove(),n.removeData(r.get(0)),r.off("rating").removeClass("hide")},create:function(n){var t=this,i=n||t.options||{};return t.destroy().rating(i)},clear:function(){var n=this,t='<span class="'+n.clearCaptionClass+'">'+n.clearCaption+"<\/span>";return n.inactive||n._setCaption(t),n.showStars(n.clearValue).trigger("change").trigger("rating.clear")},reset:function(){var n=this;return n.showStars(n.initialValue).trigger("rating.reset")},update:function(n){var t=this;return arguments.length?t.showStars(n):t.$element},refresh:function(t){var i=this,r=i.$element;return t?i.destroy().rating(n.extend(!0,i.options,t)).trigger("rating.refresh"):r}};n.fn.rating=function(i){var f=Array.apply(null,arguments),r=[];f.shift();this.each(function(){var o=n(this),e=o.data("rating"),h=typeof i=="object"&&i,s=h.language||o.data("language")||"en",c={},l;e||(s==="en"||t(n.fn.ratingLocales[s])||(c=n.fn.ratingLocales[s]),l=n.extend(!0,{},n.fn.rating.defaults,n.fn.ratingLocales.en,c,h,o.data()),e=new u(this,l),o.data("rating",e));typeof i=="string"&&r.push(e[i].apply(e,f))});switch(r.length){case 0:return this;case 1:return r[0]===undefined?this:r[0];default:return r}};n.fn.rating.defaults={theme:"",language:"en",stars:5,filledStar:'<i class="glyphicon glyphicon-star"><\/i>',emptyStar:'<i class="glyphicon glyphicon-star-empty"><\/i>',containerClass:"",size:"md",animate:!0,displayOnly:!1,rtl:!1,showClear:!0,showCaption:!0,starCaptionClasses:{.5:"label label-danger",1:"label label-danger",1.5:"label label-warning",2:"label label-warning",2.5:"label label-info",3:"label label-info",3.5:"label label-primary",4:"label label-primary",4.5:"label label-success",5:"label label-success"},clearButton:'<i class="glyphicon glyphicon-minus-sign"><\/i>',clearButtonBaseClass:"clear-rating",clearButtonActiveClass:"clear-rating-active",clearCaptionClass:"label label-default",clearValue:null,captionElement:null,clearElement:null,hoverEnabled:!0,hoverChangeCaption:!0,hoverChangeStars:!0,hoverOnClear:!0};n.fn.ratingLocales.en={defaultCaption:"{rating} Stars",starCaptions:{.5:"Half Star",1:"One Star",1.5:"One & Half Star",2:"Two Stars",2.5:"Two & Half Stars",3:"Three Stars",3.5:"Three & Half Stars",4:"Four Stars",4.5:"Four & Half Stars",5:"Five Stars"},clearButtonTitle:"Clear",clearCaption:"Not Rated"};n.fn.rating.Constructor=u;n(document).ready(function(){var t=n("input.rating");t.length&&t.removeClass("rating-loading").addClass("rating-loading").rating()})})