jQuery.fn.rating=function(url,options){if(url==null)
return;var settings={url:url,onrating:null,oncancel:null,increment:1,maxvalue:5,curvalue:-1};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,onrating:settings.onrating,oncancel:settings.oncancel});settings.increment=(settings.increment<.75)?.5:1;if(settings.maxvalue>1&&settings.curvalue!=-1)
settings.curvalue=settings.curvalue+settings.increment;if(settings.maxvalue==1&&settings.curvalue==-1)
settings.curvalue=0;var s=0;if(settings.cancel==true){var div='<div class="cancel"><a href="#X" title="Cancel Rating">Cancel Rating</a></div>';container.append(div);}
for(var i=0;i<=settings.maxvalue;i++){if(i==0){if(settings.maxvalue>1){var div='<div class="star zero"><a href="#0" title="Give it 0/'+settings.maxvalue+'">0</a></div>';container.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;jQuery.post(container.url,{"rating":jQuery(this).children('a')[0].href.split('#')[1]},function(data){if(container.onrating)
container.onrating(data);});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]},function(data){if(container.onrating)
container.onrating(data);});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]},function(data){if(container.oncancel)
container.oncancel(data);});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();if(index!=1)
stars.filter('.zero').removeClass('on').removeClass('hover').end();},drain:function(){stars.filter('.on').removeClass('on').end().filter('.hover').removeClass('hover').end();},reset:function(){if(settings.curvalue!=-1)
if(settings.curvalue==settings.increment)
stars.slice(0,settings.curvalue/settings.increment).addClass('on').end();else
stars.slice(1,settings.curvalue/settings.increment).addClass('on').end();}};event.reset();return(this);};