Raphael.fn.speedometer=function(A,b,d){var G={plateColor:"#555555",color1:"#ffffff",color2:"#ffdd33",needleColor:"#ff6622",needleHubColor:"#333333",lightAngle:45,lightDistance:0.5,startNumber:0,endNumber:10,numNumbers:10,startAngle:-20,endAngle:200,height:d,width:b,odometerText:"MPH",rumbleMagnitude:1,rumble:false};var M=b*0.5,I=d*0.5,r,n,x,s,m,z,J,F,C,a,g,j,p,D,B,y,O,u,w,L,H,f,t,E,N,v,l;var c=Raphael(A,b,d);function q(h){var o=h/(G.endNumber-G.startNumber);var k=((G.endAngle-2*G.startAngle)*o)-90+G.startAngle;return k}function e(P,o){P+=90-G.lightAngle;if(P>=360){P%=360}if(P<0){P+=360}var k="#fff";var h="#000";if(P>0&&P<180){if(o=="right"){return h}else{return k}}else{if(o=="left"){return h}else{return k}}}function K(af){c.clear();n=(G.height*0.5-10*af);x=50*af;m=5*af;z=3*af;J=3*af;F=14*af;C=3*af;a=5*af;s=18*af;E=0;g=18*af;D=3*af;B=3*af;y=10*af;O=4*af;u=150*af;w=35*af;L=7*af;N=true;v=false;var T=c.circle(M,I,n);var U=0.5-G.lightDistance*Math.cos(0.01745*G.lightAngle);var S=0.5-G.lightDistance*Math.sin(0.01745*G.lightAngle);r="#"+((parseInt("0x"+G.plateColor.substr(1,6))&16711422)>>1).toString(16);T.attr("fill","r("+U+","+S+")"+G.plateColor+"-"+r);T.attr({stroke:"#333","stroke-width":0});U=M-J*G.lightDistance*Math.cos(0.01745*G.lightAngle);S=I-J*G.lightDistance*Math.sin(0.01745*G.lightAngle);var at=c.circle(U,S,n);U=M+z*G.lightDistance*Math.cos(0.01745*G.lightAngle);S=I+z*G.lightDistance*Math.sin(0.01745*G.lightAngle);var ag=c.circle(U,S,n);var ao=c.circle(M,I,n);ag.attr({stroke:"#333","stroke-width":m});at.attr({stroke:"#fff","stroke-width":m});ao.attr({stroke:"#ccc","stroke-width":m});for(i=0;i<G.numNumbers;i++){var ap=0.01745*((G.endAngle-2*G.startAngle)/G.numNumbers),ae=(i*ap)+G.startAngle*0.01745,aq=i*(G.endNumber-G.startNumber)/G.numNumbers+G.startNumber,ab=M-(n-x-4*af)*Math.cos(ae),aa=I-(n-x-4*af)*Math.sin(ae),h=c.text(ab,aa,Math.round(aq)+" ");h.attr({"font-size":s,fill:G.color1});var Z=M-(n-x+F)*Math.cos(ae),Y=I-(n-x+F)*Math.sin(ae),ai=M-(n-F)*Math.cos(ae),ah=I-(n-F)*Math.sin(ae),ad=c.path("M"+Z+" "+Y+"L"+ai+" "+ah);ad.attr({stroke:G.color2,"stroke-width":a,"stroke-linecap":"butt",opacity:0.65});if(i+1!=G.numNumbers){var ar=F*1.5,ae=ae+ap*0.5,Z=M-(n-x+ar)*Math.cos(ae),Y=I-(n-x+ar)*Math.sin(ae),ai=M-(n-ar)*Math.cos(ae),ah=I-(n-ar)*Math.sin(ae),V=c.path("M"+Z+" "+Y+"L"+ai+" "+ah);V.attr({stroke:G.color1,"stroke-width":C,"stroke-linecap":"butt"})}}var o=n-x+F;var R=M-(o)*Math.cos(G.startAngle*0.0178);var k=I-(o)*Math.sin(G.startAngle*0.0178);var an=M-(o)*Math.cos(G.endAngle*0.0175);var am=I-(o)*Math.sin(G.endAngle*0.0175);var ac=c.path("M"+R+" "+k+"A "+o+" "+o+"  10 1 1 "+an+" "+am);ac.attr({stroke:G.color2,"stroke-width":C,"stroke-linecap":"round",opacity:0.65});function aj(){var ax=1;var au=4,aA=45*af,aw=50*af,aG=au*aA,aC=M-aG*0.5,az=I+70*af,aB=c.rect(aC,az,aG,aw,5*af);aB.attr({fill:"#000"});var aF=[];function aD(aI,aJ,aM){var aL;var aK=c.rect(aC+aI,az,aA,aw);var aH=c.text(aC+aI+aA*0.5,az+aw*0.5,aM);if(aJ){aH.attr({fill:"#000"});aK.attr({fill:"90-#444:0-#aaa:50-#444:100"})}else{aH.attr({fill:"#fff"});aK.attr({fill:"90-#222:0-#555:50-#222:100"})}aH.attr({"font-size":aA-3*af});return{value:function(aN){aH.attr({text:aN})},add:function(){var aN=parseInt(aH.attr("text"));aN++;if(aN==10){aN=0;aL.add(1)}aH.attr({text:aN})},setNextDigit:function(aN){aL=aN},reset:function(){aH.attr({text:"0"})}}}for(i=0;i<au-ax;i++){aF.push(new aD(i*aA,false,0))}for(i=au-ax;i<au;i++){aF.push(new aD(i*aA,true,0))}for(i=1;i<au;i++){aF[i].setNextDigit(aF[i-1])}var av=c.rect(aC+(aA*(au-ax))-2.5*af,az+aw-16*af,7*af,16*af);av.attr({fill:"#000","stroke-width":0});var ay=c.circle(aC+(aA*(au-ax))+1*af,az+aw-12*af,4*af);ay.attr({fill:"#fff","stroke-width":4*af,stroke:"#000"});var aE=c.text(M,az+aw+15*af,G.odometerText);aE.attr({fill:G.color1,"font-size":14*af});return{scrollTo:function(aH){for(i=0;i<aF.length;i++){aF[i].reset()}setInterval(function(){if(aH-->0){aF[au-1].add()}else{clearInterval(this)}},10)}}}l=aj();p="#"+((parseInt("0x"+G.needleHubColor.substr(1,6))&16711422)>>1).toString(16);j="#"+((parseInt("0x"+G.needleHubColor.substr(1,6))&8355711)<<1).toString(16);U=M+B*G.lightDistance*Math.cos(0.01745*G.lightAngle);S=I+B*G.lightDistance*Math.sin(0.01745*G.lightAngle);var Q=c.circle(U,S,g);U=M-D*G.lightDistance*Math.cos(0.01745*G.lightAngle);S=I-D*G.lightDistance*Math.sin(0.01745*G.lightAngle);var W=c.circle(U,S,g);var X=c.circle(M,I,g-1*af);W.attr({fill:j,"stroke-width":0});Q.attr({fill:p,"stroke-width":0});X.attr({fill:G.needleHubColor,"stroke-width":0});var ak=c.path("M"+(M+O*0.5)+" "+(I-u)+"L"+(M+y*0.5)+" "+I+" L"+(M+L*0.5)+" "+(I+w)+"L"+(M-L*0.5)+" "+(I+w)+"L"+(M-y*0.5)+" "+I+"L"+(M-O*0.5)+" "+(I-u)+"z");ak.attr({fill:G.needleColor,"stroke-width":0*af,cx:M,cy:I});var P=ak.getTotalLength();H=c.path(ak.getSubpath(0,P/2)).attr({stroke:"#fff",opacity:0.5});f=c.path(ak.getSubpath(P/2,P)).attr({stroke:"#000",opacity:0.5});t=c.set();t.push(ak);t.push(H);t.push(f);var al=q(E);t.rotate(al,M,I)}K(b/400);return{position:function(h){var k=q(h);t.rotate(k,M,I);f.attr({stroke:e(k,"left")});H.attr({stroke:e(k,"right")});E=h},accelerate:function(h,k,P){v=true;if(!P){P="elastic"}if(!k){k=2000}var o=q(h);t.animate({rotation:o+" "+M+" "+I},k,P,function(){v=false});f.animateWith(t,{stroke:e(o,"left")});H.animateWith(t,{stroke:e(o,"right")});E=h},setOptions:function(h){for(name in h){G[name]=h[name]}K(G.width/400);clearInterval(N);if(G.rumble){N=setInterval(function(){if(!v){var k=E+(Math.random()-0.5)*G.rumbleMagnitude;var o=q(k);t.animate({rotation:o+" "+M+" "+I},10)}},100)}},scrollTo:function(h){l.scrollTo(h)}}};
