jQuery.fn.rating=function(url,options){if(url==null)return;var settings={url:url,increment:1,maxvalue:5,curvalue:0,getValAttName:''};if(options){jQuery.extend(settings,options)};jQuery.extend(settings,{cancel:(settings.maxvalue>1)?true:false});var container=jQuery(this);jQuery.extend(container,{averageRating:settings.curvalue,url:settings.url});settings.increment=(settings.increment<.75)?.5:1;var s=0;for(var i=0;i<=settings.maxvalue;i++){if(i==0){if(settings.cancel==true){var div='<div class="cancel"><a href="#0" title="Cancel Rating">Cancel Rating</a></div>';container.empty().append(div)}}else{var $div=$('<div class="star"></div>').append('<a href="#'+i+'" title="Give it '+i+'/'+settings.maxvalue+'">'+i+'</a>').appendTo(container);if(settings.increment==.5){if(s%2){$div.addClass('star-left')}else{$div.addClass('star-right')}}}i=i-1+settings.increment;s++}var stars=jQuery(container).children('.star');var cancel=jQuery(container).children('.cancel');stars.mouseover(function(){event.drain();event.fill(this)}).mouseout(function(){event.drain();event.reset()}).focus(function(){event.drain();event.fill(this)}).blur(function(){event.drain();event.reset()});stars.click(function(){if(settings.cancel==true){settings.curvalue=(stars.index(this)*settings.increment)+settings.increment;if(settings.getValAttName!=''){var attName=settings.getValAttName;var idVal=$('#'+attName).val()}else{var idVal=0}jQuery.post(container.url,{"rating":jQuery(this).children('a')[0].href.split('#')[1],"id":idVal});return false}else if(settings.maxvalue==1){settings.curvalue=(settings.curvalue==0)?1:0;$(this).toggleClass('on');jQuery.post(container.url,{"rating":jQuery(this).children('a')[0].href.split('#')[1]});return false}return true});if(cancel){cancel.mouseover(function(){event.drain();jQuery(this).addClass('on')}).mouseout(function(){event.reset();jQuery(this).removeClass('on')}).focus(function(){event.drain();jQuery(this).addClass('on')}).blur(function(){event.reset();jQuery(this).removeClass('on')});cancel.click(function(){event.drain();settings.curvalue=0;jQuery.post(container.url,{"rating":jQuery(this).children('a')[0].href.split('#')[1]});return false})}var event={fill:function(el){var index=stars.index(el)+1;stars.children('a').css('width','100%').end().slice(0,index).addClass('hover').end()},drain:function(){stars.filter('.on').removeClass('on').end().filter('.hover').removeClass('hover').end()},reset:function(){stars.slice(0,settings.curvalue/settings.increment).addClass('on').end()}};event.reset();return(this)};
