
$.fn.starRater=function(options,ratingObj){if(ratingObj==null){ratingObj={AverageRating:0,AbsoluteRatingCount:0};}
var opts=$.extend({},$.fn.starRater.defaults,options);return this.each(function(){var $this=$(this);var $on=$this.find('.ui-rater-starsOn');var $off=$this.find('.ui-rater-starsOff');if(opts.size==null){opts.size=$on.height();}
var width=Math.ceil($off.width()*(ratingObj.AverageRating/opts.units));$on.width(width);$this.find('.ui-rater-rating').html(ratingObj.AverageRating.toFixed(1));$this.find('.ui-rater-rateCount').html(ratingObj.AbsoluteRatingCount);if(opts.enabled){$off.mousemove(function(e){var left=e.clientX-$off.offset().left;var width=$off.width()-($off.width()-left);width=Math.ceil(width/(opts.size/opts.step))*opts.size/opts.step;$on.width(width);}).hover(function(e){$on.addClass('ui-rater-starsHover');},function(e){$on.removeClass('ui-rater-starsHover');var width=ratingObj.AverageRating*opts.size;$on.width(width);}).click(function(e){var currentRating=Math.round($on.width()/$off.width()*(opts.units*opts.step))/opts.step;$off.unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave');$off.css('cursor','default');$on.css('cursor','default');$.fn.starRater.rate($this,opts,currentRating);}).css('cursor','pointer');$on.css('cursor','pointer');}});};$.fn.starRater.defaults={postHref:location.href,units:5,enabled:true,method:"POST",count:0,fadeDelay:300,step:1};$.fn.starRater.rate=function($this,opts,rating){var $on=$this.find('.ui-rater-starsOn');var $off=$this.find('.ui-rater-starsOff');var $count=$this.find('.ui-rater-rateCount')
var uri=opts.onGetRatingUri(rating);$off.fadeTo(300,0.4,function(){$.ajax({url:uri,type:opts.method,success:function(result){if(result.Status.Error==null&&result.Value.length==1){var ratingObj=result.Value[0];var resultRating=ratingObj.AverageRating;$off.fadeTo(300,0.1,function(){$on.removeClass('ui-rater-starsHover').width(resultRating*opts.size);$count.text(ratingObj.AbsoluteRatingCount);$this.find('.ui-rater-rating').text(resultRating.toFixed(1));$off.fadeTo(300,1);$this.attr('title','Your rating: '+resultRating.toFixed(1));});}}});});};$.fn.thumbRater=function(options,ratingObj){var opts=$.extend({},$.fn.thumbRater.defaults,options);if(ratingObj==null){ratingObj={PositiveRatingCount:0,NegativeRatingCount:0};}
return this.each(function(){var $this=$(this);var $upItem=$this.find('a.thumbsUp');if(opts.id==undefined)
opts.id=$this.attr('id');if(options.enabled){$upItem.hover(function(e){$upItem.addClass('thumbsUp-hover');},function(e){$upItem.removeClass('thumbsUp-hover');}).click(function(e){$.fn.thumbRater.rate($this,opts,opts.upValue);$upItem.unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave').css('cursor','default');$downItem.unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave').css('cursor','default');}).css('cursor','pointer');}
var $downItem=$this.find('a.thumbsDown');if(options.enabled){$downItem.hover(function(e){$downItem.addClass('thumbsDown-hover');},function(e){$downItem.removeClass('thumbsDown-hover');}).click(function(e){$.fn.thumbRater.rate($this,opts,opts.downValue);$upItem.unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave').css('cursor','default');$downItem.unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave').css('cursor','default');}).css('cursor','pointer');}
$.fn.thumbRater.updateValue($this,ratingObj,false);});};$.fn.thumbRater.updateValue=function($this,ratingObj,fade){var $upItem=$this.find('a.thumbsUp');var $downItem=$this.find('a.thumbsDown');var finalValue=ratingObj==null?0:ratingObj.PositiveRatingCount-ratingObj.NegativeRatingCount;var $value=$this.find("span.value");if(fade){$value.fadeTo(300,0.4,function(){$.fn.thumbRater.updateValueControl($value,finalValue);$value.fadeTo(300,1);});}else{$.fn.thumbRater.updateValueControl($value,finalValue);}}
$.fn.thumbRater.updateValueControl=function($control,finalValue){$control.removeClass("valueMinus").removeClass("valuePlus").removeClass("valueZero");if(finalValue<0){$control.addClass("valuePlus");$control.text(finalValue);}else if(finalValue>0){$control.addClass("valueMinus");$control.text("+"+finalValue);}else{$control.addClass("valueZero");$control.text(finalValue);}}
$.fn.thumbRater.rate=function($this,opts,rating){var $upItem=$this.find('a.thumbsUp');var $upIcon=$upItem.find('span.icon');var $downItem=$this.find('a.thumbsDown');var $downIcon=$downItem.find('span.icon');var uri=opts.onGetRatingUri(rating);$.ajax({url:uri,type:opts.method,success:function(result){if(result.Status.Error==null&&result.Value.length==1){var ratingObj=result.Value[0];$.fn.thumbRater.updateValue($this,ratingObj,true);}}});};$.fn.thumbRater.defaults={postHref:location.href,enabled:true,upValue:0,downValue:0};
