forked from garrett/jquery.ui.stars
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ui.stars.min.js
17 lines (17 loc) · 5.59 KB
/
ui.stars.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* jQuery UI Stars v2.1.1
* http://plugins.jquery.com/project/Star_Rating_widget
*
* Copyright (c) 2009 Orkan ([email protected])
* Dual licensed under the MIT and GPL licenses.
* http://docs.jquery.com/License
*
* $Rev: 114 $
* $Date:: 2009-06-12 #$
* $Build: 32 (2009-06-12)
*
* Depends:
* ui.core.js
*
*/
(function(A){A.widget("ui.stars",{_init:function(){var B=this,E=this.options,F=0;E.isSelect=E.inputType=="select";this.$form=A(this.element).closest("form");this.$selec=E.isSelect?A("select",this.element):null;this.$rboxs=E.isSelect?A("option",this.$selec):A(":radio",this.element);this.$stars=this.$rboxs.map(function(I){var J={value:this.value,title:(E.isSelect?this.text:this.title)||this.value,isDefault:(E.isSelect&&this.defaultSelected)||this.defaultChecked};if(I==0){E.split=typeof E.split!="number"?0:E.split;E.val2id=[];E.id2val=[];E.id2title=[];E.name=E.isSelect?B.$selec.get(0).name:this.name;E.disabled=E.disabled||(E.isSelect?A(B.$selec).attr("disabled"):A(this).attr("disabled"))}if(J.value==E.cancelValue){E.cancelTitle=J.title;return null}E.val2id[J.value]=F;E.id2val[F]=J.value;E.id2title[F]=J.title;if(J.isDefault){E.checked=F;E.value=E.defaultValue=J.value;E.title=J.title}var H=A("<div/>").addClass(E.starClass);var K=A("<a/>").attr("title",E.showTitles?J.title:"").text(J.value);if(E.split){var G=(F%E.split);var L=Math.floor(E.starWidth/E.split);H.width(L);K.css("margin-left","-"+(G*L)+"px")}F++;return H.append(K).get(0)});E.items=F;E.isSelect?this.$selec.remove():this.$rboxs.remove();this.$cancel=A("<div/>").addClass(E.cancelClass).append(A("<a/>").attr("title",E.showTitles?E.cancelTitle:"").text(E.cancelValue));E.cancelShow&=!E.disabled&&!E.oneVoteOnly;E.cancelShow&&this.element.append(this.$cancel);this.element.append(this.$stars);if(E.checked===undefined){E.checked=-1;E.value=E.defaultValue=E.cancelValue;E.title=""}this.$value=A('<input type="hidden" name="'+E.name+'" value="'+E.value+'" />');this.element.append(this.$value);this.$stars.bind("click.stars",function(H){if(!E.forceSelect&&E.disabled){return false}var G=B.$stars.index(this);E.checked=G;E.value=E.id2val[G];E.title=E.id2title[G];B.$value.attr({disabled:E.disabled?"disabled":"",value:E.value});C(G,false);B._disableCancel();!E.forceSelect&&B.callback(H,"star")}).bind("mouseover.stars",function(){if(E.disabled){return false}var G=B.$stars.index(this);C(G,true)}).bind("mouseout.stars",function(){if(E.disabled){return false}C(B.options.checked,false)});this.$cancel.bind("click.stars",function(G){if(!E.forceSelect&&(E.disabled||E.value==E.cancelValue)){return false}E.checked=-1;E.value=E.cancelValue;E.title="";B.$value.val(E.value).attr({disabled:"disabled"});D();B._disableCancel();!E.forceSelect&&B.callback(G,"cancel")}).bind("mouseover.stars",function(){if(B._disableCancel()){return false}B.$cancel.addClass(E.cancelHoverClass);D();B._showCap(E.cancelTitle)}).bind("mouseout.stars",function(){if(B._disableCancel()){return false}B.$cancel.removeClass(E.cancelHoverClass);B.$stars.triggerHandler("mouseout.stars")});this.$form.bind("reset.stars",function(){!E.disabled&&B.select(E.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});function C(G,I){if(G!=-1){var J=I?E.starHoverClass:E.starOnClass;var H=I?E.starOnClass:E.starHoverClass;B.$stars.eq(G).prevAll("."+E.starClass).andSelf().removeClass(H).addClass(J);B.$stars.eq(G).nextAll("."+E.starClass).removeClass(E.starHoverClass+" "+E.starOnClass);B._showCap(E.id2title[G])}else{D()}}function D(){B.$stars.removeClass(E.starOnClass+" "+E.starHoverClass);B._showCap("")}this.select(E.value);E.disabled&&this.disable()},_disableCancel:function(){var C=this.options,B=C.disabled||C.oneVoteOnly||(C.value==C.cancelValue);if(B){this.$cancel.removeClass(C.cancelHoverClass).addClass(C.cancelDisabledClass)}else{this.$cancel.removeClass(C.cancelDisabledClass)}this.$cancel.css("opacity",B?0.5:1);return B},_disableAll:function(){var B=this.options;this._disableCancel();if(B.disabled){this.$stars.filter("div").addClass(B.starDisabledClass)}else{this.$stars.filter("div").removeClass(B.starDisabledClass)}},_showCap:function(B){var C=this.options;if(C.captionEl){C.captionEl.text(B)}},value:function(){return this.options.value},select:function(D){var C=this.options,B=(D==C.cancelValue)?this.$cancel:this.$stars.eq(C.val2id[D]);C.forceSelect=true;B.triggerHandler("click.stars");C.forceSelect=false},selectID:function(D){var C=this.options,B=(D==-1)?this.$cancel:this.$stars.eq(D);C.forceSelect=true;B.triggerHandler("click.stars");C.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(C,B){var D=this.options;D.callback&&D.callback(this,B,D.value,C);D.oneVoteOnly&&!D.disabled&&this.disable()}});A.extend(A.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,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);