(function(a){a.fn.rating=function(c){c=a.extend({useHtml5:false,interactive:true,maxValue:5,startValue:0,resetButton:true,starSize:20,emptyCssClass:"pacem_StarEmpty",hoverCssClass:"pacem_StarOver",selectedCssClass:"pacem_StarSelected",legendElement:null,legendCssClass:"pacem_RatingLegend",legendCaptions:["poor","weak","average","good","awesome"],drawHtml5Star:function(p,h){h=h||"empty";var a=p;if(!a)throw"Missing canvas context.";var e=a.canvas;e.width=e.width;for(var d=Math.min(e.width,e.height)*.5,g={x:e.width*.5,y:e.height*.5},l=Math.PI*.5,o=Math.PI*.2,i=d*.5,f=0;f<10;f+=2){var k=l+f*o,m=g.x+d*Math.cos(k),n=g.x-d*Math.sin(k),j=l+(f+1)*o,q=g.x+i*Math.cos(j),r=g.x-i*Math.sin(j);if(f==0)a.moveTo(m,n);else a.lineTo(m,n);a.lineTo(q,r)}switch(h){case"empty":var b=a.createLinearGradient(0,0,0,2*d);b.addColorStop(0,"#222");b.addColorStop(1,"#999");var c=a.createLinearGradient(0,0,0,2*d);c.addColorStop(0,"#444");c.addColorStop(1,"#777");a.strokeStyle=b;a.fillStyle=c;a.lineWidth=1;break;case"over":var b=a.createLinearGradient(0,0,0,2*d);b.addColorStop(0,"#fbb");b.addColorStop(1,"#f00");var c=a.createLinearGradient(0,0,0,2*d);c.addColorStop(0,"#fffcc0");c.addColorStop(1,"#ff0");a.strokeStyle=b;a.fillStyle=c;a.lineWidth=1;break;case"selected":var b=a.createLinearGradient(0,0,0,2*d);b.addColorStop(0,"#fff");b.addColorStop(1,"#c0c0c0");var c=a.createLinearGradient(0,0,0,2*d);c.addColorStop(0,"#fffcc0");c.addColorStop(.67,"#ffd400");a.strokeStyle=b;a.fillStyle=c;a.lineWidth=1;break;default:throw"Unknown mode "+h+".";}a.closePath();a.fill();a.stroke()},drawHtml5ResetButton:function(e,c){c=c||"normal";var a=e;if(!a)throw"Missing canvas context.";var b=a.canvas;b.width=b.width;a.scale(b.width*1/32,b.height*1/32);switch(c){case"normal":var d=a.createLinearGradient(0,0,0,32);d.addColorStop(0,"#c0c0c0");d.addColorStop(1,"#666");a.fillStyle=d;a.strokeStyle="#333";a.lineWidth=1;break;case"over":a.fillStyle="#c0c0c0";a.strokeStyle="#333";a.lineWidth=1;break;case"pressed":a.fillStyle="#fff";a.strokeStyle="#333";a.lineWidth=1;break;default:throw"Unknown mode "+c+".";}a.moveTo(0,15);a.lineTo(12,4);a.lineTo(12,9);a.bezierCurveTo(32,10,32,22,32,25);a.bezierCurveTo(32,25,25,19,12,21);a.lineTo(12,26);a.closePath();a.fill();a.stroke();a.moveTo(21,22);a.bezierCurveTo(27,22,32,25,32,27);a.bezierCurveTo(32,29,31,32,30,32);a.lineTo(21,25);a.closePath();a.fill();a.stroke()}},c||{});var b={ratingField:"pacem_RatingDataField"};return this.each(function(){var f=a(this);if(!f.is("select"))return;var e=c,d={createHtml5Canvas:function(){return a("<canvas>").css("cursor","pointer").attr("width",e.starSize).attr("height",e.starSize)},createStarDiv:function(){return a("<div>").addClass(e.emptyCssClass).css("display","inline-block").width(e.starSize).height(e.starSize)},drawHtml5Star:function(a,b){var c=a.getContext("2d");e.drawHtml5Star(c,b)},drawHtml5ResetButton:function(a,b){var c=a.getContext("2d");e.drawHtml5ResetButton(c,b)},starClickHandler:function(c){c.preventDefault();c.stopPropagation();var e=a(this),d=parseInt(e.data(b.ratingField)),h=g.selectedValue=d.toString();f.val(h).change()},starOverHandler:function(c){c.preventDefault();c.stopPropagation();var h=a(this),f=a(this).data(b.ratingField);e.useHtml5&&a.each(g.html5Canvases,function(c,a){if(a.data(b.ratingField)<=f)d.drawHtml5Star(a.get(0),"over");else d.drawHtml5Star(a.get(0),"empty")});d.showLabel(f)},starOutHandler:function(a){a.preventDefault();a.stopPropagation();d.synchronizeStars()},synchronizeStars:function(){var c=f.val();e.useHtml5&&a.each(g.html5Canvases,function(e,a){if(a.data(b.ratingField)<=c)d.drawHtml5Star(a.get(0),"selected");else d.drawHtml5Star(a.get(0),"empty")});d.showLabel(c)},showLabel:function(b){var f=c,e=g.legend;if(!e)return;var d=a(e);b=parseInt(b)-1;b<0&&d.html("");f.legendCaptions.length>b&&d.html(f.legendCaptions[b])},resetOverHandler:function(b){b.preventDefault();b.stopPropagation();var c=a(this);e.useHtml5&&d.drawHtml5ResetButton(c.get(0),"over")},resetOutHandler:function(b){b.preventDefault();b.stopPropagation();var c=a(this);e.useHtml5&&d.drawHtml5ResetButton(c.get(0),"normal")},resetPressHandler:function(){var b=a(this);e.useHtml5&&d.drawHtml5ResetButton(b.get(0),"pressed")},resetClickHandler:function(b){b.preventDefault();b.stopPropagation();var c=a(this);f.val(e.startValue.toString()).change()}},g={html5Canvases:[],starDivs:[],selectedValue:e.startValue,legend:null};f.hide().empty().change(function(){if(g.selectedValue!=f.val())g.selectedValue=f.val();d.synchronizeStars()});a("<option>").attr("value","0").text("0").appendTo(f);var k=e.useHtml5,m=g.legend=e.legendElement||a("<span>").css("display","inline-block").insertAfter(f);e.legendCssClass&&a(m).addClass(e.legendCssClass);d.showLabel(e.startValue);for(var j=e.maxValue;j>0;j--){var i=j.toString();a("<option>").attr("value",i).text(i).appendTo(f);if(k==true){var h=d.createHtml5Canvas().data(b.ratingField,i).insertAfter(f);g.html5Canvases.unshift(h);h.click(d.starClickHandler).mouseover(d.starOverHandler).mouseout(d.starOutHandler);d.drawHtml5Star(h[0],e.startValue>=i?"selected":"empty")}else{var h=d.createStarDiv().data(b.ratingField,i).insertAfter(f);g.starDivs.unshift(h);h.click(d.starClickHandler).mouseover(d.starOverHandler).mouseout(d.starOutHandler)}}if(e.resetButton)if(k){var l=d.createHtml5Canvas().insertAfter(f);l.mousedown(d.resetPressHandler).click(d.resetClickHandler).mouseover(d.resetOverHandler).mouseout(d.resetOutHandler).css("marginRight","6px");d.drawHtml5ResetButton(l[0],"normal")}})};a.fn.rating.version="1.0"})(jQuery)
