/*
 * jQuery UI Stars v3.0.1
 * http://plugins.jquery.com/project/Star_Rating_widget
 *
 * Copyright (c) 2010 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: 35 (2010-05-01)
 *
 * Depends:
 * jquery.ui.core.js
 * jquery.ui.widget.js
 *
 */
(function($){$.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 self=this,o=this.options,starId=0;this.element.data('former.stars',this.element.html());o.isSelect=o.inputType=='select';this.$form=$(this.element).closest('form');this.$selec=o.isSelect?$('select',this.element):null;this.$rboxs=o.isSelect?$('option',this.$selec):$(':radio',this.element);this.$stars=this.$rboxs.map(function(i)
{var el={value:this.value,title:(o.isSelect?this.text:this.title)||this.value,isDefault:(o.isSelect&&this.defaultSelected)||this.defaultChecked};if(i==0){o.split=typeof o.split!='number'?0:o.split;o.val2id=[];o.id2val=[];o.id2title=[];o.name=o.isSelect?self.$selec.get(0).name:this.name;o.disabled=o.disabled||(o.isSelect?$(self.$selec).attr('disabled'):$(this).attr('disabled'));}
if(el.value==o.cancelValue){o.cancelTitle=el.title;return null;}
o.val2id[el.value]=starId;o.id2val[starId]=el.value;o.id2title[starId]=el.title;if(el.isDefault){o.checked=starId;o.value=o.defaultValue=el.value;o.title=el.title;}
var $s=$('<div/>').addClass(o.starClass);var $a=$('<a/>').attr('title',o.showTitles?el.title:'').text(el.value);if(o.split){var oddeven=(starId%o.split);var stwidth=Math.floor(o.starWidth/o.split);$s.width(stwidth);$a.css('margin-left','-'+(oddeven*stwidth)+'px');}
starId++;return $s.append($a).get(0);});o.items=starId;o.isSelect?this.$selec.remove():this.$rboxs.remove();this.$cancel=$('<div/>').addClass(o.cancelClass).append($('<a/>').attr('title',o.showTitles?o.cancelTitle:'').text(o.cancelValue));o.cancelShow&=!o.disabled&&!o.oneVoteOnly;o.cancelShow&&this.element.append(this.$cancel);this.element.append(this.$stars);if(o.checked===undefined){o.checked=-1;o.value=o.defaultValue=o.cancelValue;o.title='';}
this.$value=$("<input type='hidden' name='"+o.name+"' value='"+o.value+"' />");this.element.append(this.$value);this.$stars.bind('click.stars',function(e){if(!o.forceSelect&&o.disabled)return false;var i=self.$stars.index(this);o.checked=i;o.value=o.id2val[i];o.title=o.id2title[i];self.$value.attr({disabled:o.disabled?'disabled':'',value:o.value});fillTo(i,false);self._disableCancel();!o.forceSelect&&self.callback(e,'star');}).bind('mouseover.stars',function(){if(o.disabled)return false;var i=self.$stars.index(this);fillTo(i,true);}).bind('mouseout.stars',function(){if(o.disabled)return false;fillTo(self.options.checked,false);});this.$cancel.bind('click.stars',function(e){if(!o.forceSelect&&(o.disabled||o.value==o.cancelValue))return false;o.checked=-1;o.value=o.cancelValue;o.title='';self.$value.val(o.value);o.disableValue&&self.$value.attr({disabled:'disabled'});fillNone();self._disableCancel();!o.forceSelect&&self.callback(e,'cancel');}).bind('mouseover.stars',function(){if(self._disableCancel())return false;self.$cancel.addClass(o.cancelHoverClass);fillNone();self._showCap(o.cancelTitle);}).bind('mouseout.stars',function(){if(self._disableCancel())return false;self.$cancel.removeClass(o.cancelHoverClass);self.$stars.triggerHandler('mouseout.stars');});this.$form.bind('reset.stars',function(){!o.disabled&&self.select(o.defaultValue);});$(window).unload(function(){self.$cancel.unbind('.stars');self.$stars.unbind('.stars');self.$form.unbind('.stars');self.$selec=self.$rboxs=self.$stars=self.$value=self.$cancel=self.$form=null;});function fillTo(index,hover){if(index!=-1){var addClass=hover?o.starHoverClass:o.starOnClass;var remClass=hover?o.starOnClass:o.starHoverClass;self.$stars.eq(index).prevAll('.'+o.starClass).andSelf().removeClass(remClass).addClass(addClass);self.$stars.eq(index).nextAll('.'+o.starClass).removeClass(o.starHoverClass+' '+o.starOnClass);self._showCap(o.id2title[index]);}
else fillNone();};function fillNone(){self.$stars.removeClass(o.starOnClass+' '+o.starHoverClass);self._showCap('');};this.select(o.value);o.disabled&&this.disable();},_disableCancel:function(){var o=this.options,disabled=o.disabled||o.oneVoteOnly||(o.value==o.cancelValue);if(disabled)this.$cancel.removeClass(o.cancelHoverClass).addClass(o.cancelDisabledClass);else this.$cancel.removeClass(o.cancelDisabledClass);this.$cancel.css('opacity',disabled?0.5:1);return disabled;},_disableAll:function(){var o=this.options;this._disableCancel();if(o.disabled)this.$stars.filter('div').addClass(o.starDisabledClass);else this.$stars.filter('div').removeClass(o.starDisabledClass);},_showCap:function(s){var o=this.options;if(o.captionEl)o.captionEl.text(s);},value:function(){return this.options.value;},select:function(val){var o=this.options,e=(val==o.cancelValue)?this.$cancel:this.$stars.eq(o.val2id[val]);o.forceSelect=true;e.triggerHandler('click.stars');o.forceSelect=false;},selectID:function(id){var o=this.options,e=(id==-1)?this.$cancel:this.$stars.eq(id);o.forceSelect=true;e.triggerHandler('click.stars');o.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(e,type){var o=this.options;o.callback&&o.callback(this,type,o.value,e);o.oneVoteOnly&&!o.disabled&&this.disable();}});$.extend($.ui.stars,{version:'3.0.1'});})(jQuery);
