(function(){function n(t,i,r){var o=[],u,e,f;for(u in t)if(t.hasOwnProperty(u))if(typeof t[u]=="undefined")o.push(r+u);else if(i>1)for(e=n(t[u],i-1,u+"."),f=0;f<e.length;f++)o.push(e[f])}function i(t,i,r){var o=[],u,e,f;for(u in t)if(t.hasOwnProperty(u))if(typeof t[u]=="function")o.push(r+u);else if(i>1)for(e=n(t[u],i-1,u+"."),f=0;f<e.length;f++)o.push(e[f])}ko.components.register("ko-stars",{viewModel:function(n){var t=this,e=typeof n.bindTo!="undefined"&&(ko.isObservable(n.bindTo)||ko.isComputed(n.bindTo)),o=typeof n.disableOn!="undefined"&&(ko.isObservable(n.disableOn)||ko.isComputed(n.disableOn)),i=[],s=e?n.bindTo():0,u,f,r;t.Rating=ko.observable(s);e&&i.push(t.Rating.subscribe(function(){n.bindTo(t.Rating())}));u=function(n){n?$(".star-rating").rating("enable"):$(".star-rating").rating("disable")};o&&i.push(n.disableOn.subscribe(function(n){u(!n)}));t.DefaultDescription=ko.computed(function(){var n=t.Rating();return!n?"Not Rated":"Rating: "+n});t.RatingDescription=ko.observable(t.DefaultDescription());f={};r=typeof n.starClass=="undefined"?"star-rating":n.starClass;f[r]=!0;t.starClass=ko.observable(f);t.splits=ko.observable(typeof n.splits=="undefined"?2:n.splits);t.maxRating=ko.observable(typeof n.maxRating=="undefined"?5:n.maxRating);t.stars=ko.computed(function(){for(var i=t.splits(),u=t.maxRating(),f=u*i,r=[],n=1;n<f+1;n++)r.push(n/i);return r});t.afterRender=function(i,f){f===t.maxRating()&&($("."+r).rating({split:t.splits(),focus:function(n){t.RatingDescription("Rating: "+n)},blur:function(){t.RatingDescription(t.DefaultDescription())},callback:function(n){var i=parseFloat(n);isNaN(i)||t.Rating(i);t.RatingDescription(t.DefaultDescription())}}),$("."+r).rating("select",""+t.Rating()),o&&u(!n.disableOn()))};t.dispose=function(){for(var n=0;n<i.length;n++)i[n].dispose()}},template:'\t\t\t\t\t<div id="rating_container" class="rating-container">                        <div class="stars-container" data-bind="foreach: { data: stars(), afterRender: afterRender }">                            <input name="stars" type="radio" data-bind="value: $data, css: $parent.starClass "/>                        <\/div>                        <span class="rating-display" data-bind="text: RatingDescription"><\/span>                    <\/div>'});ko.bindingHandlers.log={logBinding:function(n,t,i,r){console.group&&console.group("Binding Log");console&&console.log&&(console.log("Element: %o",n),console.log("Binding Value: %o",t),console.log("View Model Value: %o",i),console.log("Binding Context: %o",r));console.group&&console.groupEnd()},init:function(n,t,i,r,u){var f=ko.utils.unwrapObservable(t());ko.bindingHandlers.log.logBinding(n,f,r,u)}};var t={Create:function(t){var r=this;r.logUndefinedProperties=t;r.original=ko.bindingProvider.instance;r.nodeHasBindings=r.original.nodeHasBindings;r.logBindingError=function(n,t){console.group&&console.group("Binding Error");console&&console.log&&(console.log("Element: %o",n),console.log(t));console.group&&console.groupEnd()};r.getBindings=function(){var t,u,f;try{return t=r.original.getBindings.apply(r.original,arguments),r.logUndefinedProperties&&(u=n(t,1),u&&r.logBindingError(arguments[0],"Undefined binding result detected for properties: "+u.join(", "))),arguments[0]&&arguments[0].outerHTML&&arguments[0].outerHTML.indexOf("attr: {id: id }")>0,f=i(t,1),f&&r.logBindingError(arguments[0],"Function is being bound to element attribute:  "+f.join(",")),t}catch(e){r.logBindingError(arguments[0],"Error in binding: "+e)}}},enable:function(n){ko.bindingProvider.instance=new t.Create(n)},disable:function(){ko.bindingProvider.instance=!ko.bindingProvider.instance.original?ko.bindingProvider.instance:ko.bindingProvider.instance.original}};ko.showBindingErrors=function(n,i){n?t.enable(i):t.disable()}})()