/*
 * jQuery UI Stars v2.1.1
 * http://plugins.jquery.com/project/Star_Rating_widget
 *
 * Copyright (c) 2009 Orkan (orkans@gmail.com)
 * 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(j){var k={value:this.value,title:(e.isSelect?this.text:this.title)||this.value,isDefault:(e.isSelect&&this.defaultSelected)||this.defaultChecked};if(j==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(k.value==e.cancelValue){e.cancelTitle=k.title;return null}e.val2id[k.value]=f;e.id2val[f]=k.value;e.id2title[f]=k.title;if(k.isDefault){e.checked=f;e.value=e.defaultValue=k.value;e.title=k.title}var h=a("<div/>").addClass(e.starClass);var l=a("<a/>").attr("title",e.showTitles?k.title:"").text(k.value);if(e.split){var g=(f%e.split);var m=Math.floor(e.starWidth/e.split);h.width(m);l.css("margin-left","-"+(g*m)+"px")}f++;return h.append(l).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);