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