
(function($){$.ratingDisplay=function(el,o){var self=this;self.el=$(el);self.settings=$.extend({},$.rating.defaults,o);self.selected=self.settings.selected;self.max=0;self.container=self.el.each(function(){var e=$(this);var t=e.attr('title');if($.trim(t)==''){t=e.text();e.attr('title',t);}var m=/(\d+[\.,]?\d*)\s?\/+\s?(\d+)/.exec(t);if(!m){return;}self.selected=parseFloat(m[1]);self.max=parseInt(m[2]);}).empty().append('<div class="star-rating star-rating-display"/>').find('.star-rating-display');self.container.css('width',self.max*self.settings.width+'px');if(self.selected){self.selectEl=self.container.append('<span class="selected"></a>').find('.selected').css('width',self.selected*self.settings.width+'px');}};$.rating=function(el,o){var self=this;self.el=$(el);self.settings=$.extend({},$.rating.defaults,o);self.disabled=self.settings.disabled;self.selected=self.settings.selected;self.clicked=0;var options=[];self.container=self.el.find('select').hide().find('option').each(function(){var val=$(this).val();if($.trim(val)==''||parseInt(val)==0){return;}options.push($(this).val());}).end().after('<div class="star-rating"/>').next();self.selectEl=self.container.append('<span class="selected"></span>').find('.selected');self.clickEl=self.container.append('<span class="clicked"></span>').find('.clicked');for(var i=0;i<options.length;i++){var e=$('<a class="star" href="#'+options[i]+'" title="'+options[i]+'/'+options.length+'" style="width:'+((i+1)*parseInt(self.settings.width))+'px;z-index:'+((options.length-i)+2)+'">'+options[i]+'</a>');self.container.append(e.data('rating-value',options[i]));}self.container.css('width',options.length*self.settings.width+'px');self.stars=self.container.find('.star');self.stars.bind('click',function(){if(!self.disabled){$(this).trigger('rating.click',[true]);}return false;}).bind('rating.click',function(e,user){self.selectEl.hide();self.clickEl.css('width',$(this).css('width'));self.clicked=$(this).data('rating-value');self.settings.onClick.apply(self,[e,user]);return false;}).bind('rating.select',function(e,v){var val=$(this).data('rating-value');if(v==undefined){v=val;}self.selectEl.show();self.selectEl.css('width',v*self.settings.width+'px');self.selected=val;self.settings.onSelect.apply(self,[e]);return false;}).bind('mouseover',function(){if(!self.disabled){if(!self.clicked){self.selectEl.hide();}self.clickEl.hide();$(this).addClass('over');}self.settings.onMouseover.apply(self,[this]);}).bind('mouseout',function(){if(!self.clicked){self.selectEl.show();}self.clickEl.show();$(this).removeClass('over');self.settings.onMouseout.apply(self,[this]);});if(self.selected>0){self.select(self.selected);}if(self.clicked>0){self.click(self.clicked);}if(self.disabled){self.disable();}this.settings.onInit.apply(this);};$.rating.defaults={selected:0,disabled:false,width:16,onInit:function(){},onClick:function(){},onSelect:function(){},onClear:function(){},onCancel:function(){},onEnable:function(){},onDisable:function(){},onMouseover:function(){},onMouseout:function(){}};$.extend($.rating.prototype,{select:function(val){this.selectEl.css('width',0+'px');val=parseFloat(val);this.stars.each(function(){if($(this).data('rating-value')==Math.ceil(val)){$(this).trigger('rating.select',[val]);}});},click:function(val){this.clickEl.css('width',0+'px');this.stars.each(function(){if($(this).data('rating-value')==val){$(this).trigger('rating.click');}});},clear:function(){this.selectEl.css('width',0+'px');this.clickEl.css('width',0+'px');this.clicked=this.selected=0;this.settings.onClear.apply(this);},cancel:function(){this.selectEl.show();this.clickEl.css('width',0+'px');this.clicked=0;this.settings.onCancel.apply(this);},enable:function(){this.disabled=false;this.stars.css('cursor','pointer');this.settings.onEnable.apply(this);},disable:function(){this.disabled=true;this.stars.css('cursor','default');this.settings.onDisable.apply(this);}});$.fn.rating=function(o,v){if(typeof o=='string'){var p=$(this).data('rating')[o];if(!$.isFunction(p)){return p;}}return this.each(function(){if(typeof o=='string'){$(this).data('rating')[o](v);}else{if(!$(this).data('rating')){$(this).data('rating',new $.rating(this,o));}}});};$.fn.ratingDisplay=function(o){return this.each(function(){if(!$(this).data('ratingDisplay')){$(this).data('ratingDisplay',new $.ratingDisplay(this,o));}});};})(jQuery);