(function(b){b.widget("ui.stars",{_init:function(){var a=this,h=this.options,g=0;h.isSelect=h.inputType=="select";this.$form=b(this.element).closest("form");this.$selec=h.isSelect?b("select",this.element):null;this.$rboxs=h.isSelect?b("option",this.$selec):b(":radio",this.element);this.$stars=this.$rboxs.map(function(f){var e={value:this.value,title:(h.isSelect?this.text:this.title)||this.value,isDefault:(h.isSelect&&this.defaultSelected)||this.defaultChecked};if(f==0){h.split=typeof h.split!="number"?0:h.split;h.val2id=[];h.id2val=[];h.id2title=[];h.name=h.isSelect?a.$selec.get(0).name:this.name;h.disabled=h.disabled||(h.isSelect?b(a.$selec).attr("disabled"):b(this).attr("disabled"))}if(e.value==h.cancelValue){h.cancelTitle=e.title;return null}h.val2id[e.value]=g;h.id2val[g]=e.value;h.id2title[g]=e.title;if(e.isDefault){h.checked=g;h.value=h.defaultValue=e.value;h.title=e.title}var n=b("<div/>").addClass(h.starClass);var d=b("<a/>").attr("title",h.showTitles?e.title:"").text(e.value);if(h.split){var o=(g%h.split);var c=Math.floor(h.starWidth/h.split);n.width(c);d.css("margin-left","-"+(o*c)+"px")}g++;return n.append(d).get(0)});h.items=g;h.isSelect?this.$selec.remove():this.$rboxs.remove();this.$cancel=b("<div/>").addClass(h.cancelClass).append(b("<a/>").attr("title",h.showTitles?h.cancelTitle:"").text(h.cancelValue));h.cancelShow&=!h.disabled&&!h.oneVoteOnly;h.cancelShow&&this.element.append(this.$cancel);this.element.append(this.$stars);if(h.checked===undefined){h.checked=-1;h.value=h.defaultValue=h.cancelValue;h.title=""}this.$value=b('<input type="hidden" name="'+h.name+'" value="'+h.value+'" />');this.element.append(this.$value);this.$stars.bind("click.stars",function(c){if(!h.forceSelect&&h.disabled){return false}var d=a.$stars.index(this);h.checked=d;h.value=h.id2val[d];h.title=h.id2title[d];a.$value.attr({disabled:h.disabled?"disabled":"",value:h.value});if(h.voted){h.starOnClass="ui-stars-voted-star-on";j(d,false)}else{h.voted=true;j(d,false)}a._disableCancel();!h.forceSelect&&a.callback(c,"star")}).bind("mouseover.stars",function(){if(h.disabled){return false}var c=a.$stars.index(this);j(c,true)}).bind("mouseout.stars",function(){if(h.disabled){return false}j(a.options.checked,false)});this.$cancel.bind("click.stars",function(c){if(!h.forceSelect&&(h.disabled||h.value==h.cancelValue)){return false}h.checked=-1;h.value=h.cancelValue;h.title="";a.$value.val(h.value).attr({disabled:"disabled"});i();a._disableCancel();!h.forceSelect&&a.callback(c,"cancel")}).bind("mouseover.stars",function(){if(a._disableCancel()){return false}a.$cancel.addClass(h.cancelHoverClass);i();a._showCap(h.cancelTitle)}).bind("mouseout.stars",function(){if(a._disableCancel()){return false}a.$cancel.removeClass(h.cancelHoverClass);a.$stars.triggerHandler("mouseout.stars")});this.$form.bind("reset.stars",function(){!h.disabled&&a.select(h.defaultValue)});b(window).unload(function(){a.$cancel.unbind(".stars");a.$stars.unbind(".stars");a.$form.unbind(".stars");a.$selec=a.$rboxs=a.$stars=a.$value=a.$cancel=a.$form=null});function j(f,d){if(f!=-1){var c=d?h.starHoverClass:h.starOnClass;var e=d?h.starOnClass:h.starHoverClass;a.$stars.eq(f).prevAll("."+h.starClass).andSelf().removeClass(e).addClass(c);a.$stars.eq(f).nextAll("."+h.starClass).removeClass(h.starHoverClass+" "+h.starOnClass);a._showCap(h.id2title[f])}else{i()}}function i(){a.$stars.removeClass(h.starOnClass+" "+h.starHoverClass);a._showCap("")}this.select(h.value);h.disabled&&this.disable()},_disableCancel:function(){var d=this.options,a=d.disabled||d.oneVoteOnly||(d.value==d.cancelValue);if(a){this.$cancel.removeClass(d.cancelHoverClass).addClass(d.cancelDisabledClass)}else{this.$cancel.removeClass(d.cancelDisabledClass)}this.$cancel.css("opacity",a?0.5:1);return a},_disableAll:function(){var a=this.options;this._disableCancel();if(a.disabled){this.$stars.filter("div").addClass(a.starDisabledClass)}else{this.$stars.filter("div").removeClass(a.starDisabledClass)}},_showCap:function(a){var d=this.options;if(d.captionEl){d.captionEl.text(a)}},value:function(){return this.options.value},select:function(e){var f=this.options,a=(e==f.cancelValue)?this.$cancel:this.$stars.eq(f.val2id[e]);f.forceSelect=true;a.triggerHandler("click.stars");f.forceSelect=false},selectID:function(e){var f=this.options,a=(e==-1)?this.$cancel:this.$stars.eq(e);f.forceSelect=true;a.triggerHandler("click.stars");f.forceSelect=false},enable:function(){this.options.disabled=false;this._disableAll()},disable:function(){this.options.disabled=true;this._disableAll()},destroy:function(){this.options.isSelect?this.$selec.appendTo(this.element):this.$rboxs.appendTo(this.element);this.$form.unbind(".stars");this.$cancel.unbind(".stars").remove();this.$stars.unbind(".stars").remove();this.$value.remove();this.element.unbind(".stars").removeData("stars")},callback:function(f,a){var e=this.options;e.callback&&e.callback(this,a,e.value,f);e.oneVoteOnly&&!e.disabled&&this.disable()}});b.extend(b.ui.stars,{version:"2.1.1",getter:"value",defaults:{inputType:"radio",split:0,disabled:false,cancelTitle:"Cancel Rating",cancelValue:0,cancelShow:true,oneVoteOnly:false,showTitles:false,captionEl:null,callback:null,voted:false,starWidth:16,cancelClass:"ui-stars-cancel",starClass:"ui-stars-star",starOnClass:"ui-stars-star-on",starHoverClass:"ui-stars-star-hover",starDisabledClass:"ui-stars-star-disabled",cancelHoverClass:"ui-stars-cancel-hover",cancelDisabledClass:"ui-stars-cancel-disabled"}})})(jQuery);