/*!
 * jQuery UI Stars v3.0.X
 * http://plugins.jquery.com/project/Star_Rating_widget
 *
 * Copyright (c) 2008-2011 Marek "Orkan" Zajac (orkans@gmail.com)
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * THIS IS AN UNOFFICIAL RELEASE WITH INCLUDED PATCH FOR JQUERY 1.6
 *
 * Depends:
 *	jquery.ui.core.js
 *	jquery.ui.widget.js
 *
 */
(function(a){a.widget("ui.stars",{options:{inputType:"radio",split:0,disabled:!1,cancelTitle:"Cancel Rating",cancelValue:0,cancelShow:!0,disableValue:!0,oneVoteOnly:!1,showTitles:!1,captionEl:null,callback:null,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"},_create:function(){function e(a,d){if(a!=-1){var e=d?c.starHoverClass:c.starOnClass,g=d?c.starOnClass:c.starHoverClass;b.$stars.eq(a).prevAll("."+c.starClass).andSelf().removeClass(g).addClass(e),b.$stars.eq(a).nextAll("."+c.starClass).removeClass(c.starHoverClass+" "+c.starOnClass),b._showCap(c.id2title[a])}else f()}function f(){b.$stars.removeClass(c.starOnClass+" "+c.starHoverClass),b._showCap("")}var b=this,c=this.options,d=0;this.element.data("former.stars",this.element.html()),c.isSelect=c.inputType=="select",this.$form=a(this.element).closest("form"),this.$selec=c.isSelect?a("select",this.element):null,this.$rboxs=c.isSelect?a("option",this.$selec):a(":radio",this.element),this.$stars=this.$rboxs.map(function(e){var f={value:this.value,title:(c.isSelect?this.text:this.title)||this.value,isDefault:c.isSelect&&this.defaultSelected||this.defaultChecked};e==0&&(c.split=typeof c.split!="number"?0:c.split,c.val2id=[],c.id2val=[],c.id2title=[],c.name=c.isSelect?b.$selec.get(0).name:this.name,c.disabled=c.disabled||(c.isSelect?a(b.$selec).prop("disabled"):a(this).prop("disabled")));if(f.value==c.cancelValue)return c.cancelTitle=f.title,null;c.val2id[f.value]=d,c.id2val[d]=f.value,c.id2title[d]=f.title,f.isDefault&&(c.checked=d,c.value=c.defaultValue=f.value,c.title=f.title);var g=a("<div/>").addClass(c.starClass),h=a("<a/>").attr("title",c.showTitles?f.title:"").text(f.value);if(c.split){var i=d%c.split,j=Math.floor(c.starWidth/c.split);g.width(j),h.css("margin-left","-"+i*j+"px")}return d++,g.append(h).get(0)}),c.items=d,c.isSelect?this.$selec.remove():this.$rboxs.remove(),this.$cancel=a("<div/>").addClass(c.cancelClass).append(a("<a/>").attr("title",c.showTitles?c.cancelTitle:"").text(c.cancelValue)),c.cancelShow&=!c.disabled&&!c.oneVoteOnly,c.cancelShow&&this.element.append(this.$cancel),this.element.append(this.$stars),c.checked===undefined&&(c.checked=-1,c.value=c.defaultValue=c.cancelValue,c.title=""),this.$value=a("<input type='hidden' name='"+c.name+"' value='"+c.value+"' />"),this.element.append(this.$value),this.$stars.bind("click.stars",function(a){if(!c.forceSelect&&c.disabled)return!1;var d=b.$stars.index(this);c.checked=d,c.value=c.id2val[d],c.title=c.id2title[d],b.$value.val(c.value),b.$value.prop("disabled",c.disabled),e(d,!1),b._disableCancel(),!c.forceSelect&&b.callback(a,"star")}).bind("mouseover.stars",function(){if(c.disabled)return!1;var a=b.$stars.index(this);e(a,!0)}).bind("mouseout.stars",function(){if(c.disabled)return!1;e(b.options.checked,!1)}),this.$cancel.bind("click.stars",function(a){if(!c.forceSelect&&(c.disabled||c.value==c.cancelValue))return!1;c.checked=-1,c.value=c.cancelValue,c.title="",b.$value.val(c.value),c.disableValue&&b.$value.prop("disabled",!0),f(),b._disableCancel(),!c.forceSelect&&b.callback(a,"cancel")}).bind("mouseover.stars",function(){if(b._disableCancel())return!1;b.$cancel.addClass(c.cancelHoverClass),f(),b._showCap(c.cancelTitle)}).bind("mouseout.stars",function(){if(b._disableCancel())return!1;b.$cancel.removeClass(c.cancelHoverClass),b.$stars.triggerHandler("mouseout.stars")}),this.$form.bind("reset.stars",function(){!c.disabled&&b.select(c.defaultValue)}),a(window).unload(function(){b.$cancel.unbind(".stars"),b.$stars.unbind(".stars"),b.$form.unbind(".stars"),b.$selec=b.$rboxs=b.$stars=b.$value=b.$cancel=b.$form=null}),this.select(c.value),c.disabled&&this.disable()},_disableCancel:function(){var a=this.options,b=a.disabled||a.oneVoteOnly||a.value==a.cancelValue;return b?this.$cancel.removeClass(a.cancelHoverClass).addClass(a.cancelDisabledClass):this.$cancel.removeClass(a.cancelDisabledClass),this.$cancel.css("opacity",b?.5:1),b},_disableAll:function(){var a=this.options;this._disableCancel(),a.disabled?this.$stars.filter("div").addClass(a.starDisabledClass):this.$stars.filter("div").removeClass(a.starDisabledClass)},_showCap:function(a){var b=this.options;b.captionEl&&b.captionEl.text(a)},value:function(){return this.options.value},select:function(a){var b=this.options,c=a==b.cancelValue?this.$cancel:this.$stars.eq(b.val2id[a]);b.forceSelect=!0,c.triggerHandler("click.stars"),b.forceSelect=!1},selectID:function(a){var b=this.options,c=a==-1?this.$cancel:this.$stars.eq(a);b.forceSelect=!0,c.triggerHandler("click.stars"),b.forceSelect=!1},enable:function(){this.options.disabled=!1,this._disableAll()},disable:function(){this.options.disabled=!0,this._disableAll()},destroy:function(){return this.$form.unbind(".stars"),this.$cancel.unbind(".stars").remove(),this.$stars.unbind(".stars").remove(),this.$value.remove(),this.element.unbind(".stars").html(this.element.data("former.stars")).removeData("stars"),this},callback:function(a,b){var c=this.options;c.callback&&c.callback(this,b,c.value,a),c.oneVoteOnly&&!c.disabled&&this.disable()}}),a.extend(a.ui.stars,{version:"@VERSION@"})})(jQuery)
