/*requires g.raphael-min.js*/

/*!
 * g.Raphael 0.3 - Charting library, based on Raphaël
 *
 * Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com)
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
 */
Raphael.fn.g.piechart=function(E,D,N,B,K){K=K||{};var J=this,L=[],G=this.set(),M=this.set(),I=this.set(),R=[],T=B.length,U=0,X=0,W=0,C=9,V=true;M.covers=G;if(T==1){I.push(this.circle(E,D,N).attr({fill:this.g.colors[0],stroke:opt.stroke||"#fff","stroke-width":K.strokewidth==null?1:K.strokewidth}));G.push(this.circle(E,D,N).attr({fill:"#000",opacity:0,"stroke-width":3}));X=B[0];B[0]={value:B[0],order:0,valueOf:function(){return this.value;}};I[0].middle={x:E,y:D};I[0].mangle=180;}else{function Q(e,d,Y,g,c,l){var i=Math.PI/180,a=e+Y*Math.cos(-g*i),Z=e+Y*Math.cos(-c*i),f=e+Y/2*Math.cos(-(g+(c-g)/2)*i),k=d+Y*Math.sin(-g*i),j=d+Y*Math.sin(-c*i),b=d+Y/2*Math.sin(-(g+(c-g)/2)*i),h=["M",e,d,"L",a,k,"A",Y,Y,0,+(Math.abs(c-g)>180),1,Z,j,"z"];h.middle={x:f,y:b};return h;}for(var S=0;S<T;S++){X+=B[S];B[S]={value:B[S],order:S,valueOf:function(){return this.value;}};}B.sort(function(Z,Y){return Y.value-Z.value;});for(var S=0;S<T;S++){if(V&&B[S]*360/X<=1.5){C=S;V=false;}if(S>C){V=false;B[C].value+=B[S];B[C].others=true;W=B[C].value;}}T=Math.min(C+1,B.length);W&&B.splice(T)&&(B[C].others=true);for(var S=0;S<T;S++){var F=U-360*B[S]/X/2;if(!S){U=90-F;F=U-360*B[S]/X/2;}if(K.init){var H=Q(E,D,1,U,U-360*B[S]/X).join(",");}var P=Q(E,D,N,U,U-=360*B[S]/X);var O=this.path(K.init?H:P).attr({fill:K.colors&&K.colors[S]||this.g.colors[S]||"#666",stroke:K.stroke||"#fff","stroke-width":(K.strokewidth==null?1:K.strokewidth),"stroke-linejoin":"round"});O.value=B[S];O.middle=P.middle;O.mangle=F;L.push(O);I.push(O);K.init&&O.animate({path:P.join(",")},(+K.init-1)||1000,">");}for(var S=0;S<T;S++){var O=J.path(L[S].attr("path")).attr({fill:"#000",opacity:0,"stroke-width":3});K.href&&K.href[S]&&O.attr({href:K.href[S]});O.attr=function(){};G.push(O);I.push(O);}}M.hover=function(b,Z){Z=Z||function(){};var a=this;for(var Y=0;Y<T;Y++){(function(d,e,c){var f={sector:d,cover:e,cx:E,cy:D,mx:d.middle.x,my:d.middle.y,mangle:d.mangle,r:N,value:B[c],total:X,label:a.labels&&a.labels[c]};e.mouseover(function(){b.call(f);}).mouseout(function(){Z.call(f);});})(I[Y],G[Y],Y);}return this;};M.each=function(a){var Z=this;for(var Y=0;Y<T;Y++){(function(c,d,b){var e={sector:c,cover:d,cx:E,cy:D,x:c.middle.x,y:c.middle.y,mangle:c.mangle,r:N,value:B[b],total:X,label:Z.labels&&Z.labels[b]};a.call(e);})(I[Y],G[Y],Y);}return this;};M.click=function(a){var Z=this;for(var Y=0;Y<T;Y++){(function(c,d,b){var e={sector:c,cover:d,cx:E,cy:D,mx:c.middle.x,my:c.middle.y,mangle:c.mangle,r:N,value:B[b],total:X,label:Z.labels&&Z.labels[b]};d.click(function(){a.call(e);});})(I[Y],G[Y],Y);}return this;};M.inject=function(Y){Y.insertBefore(G[0]);};var A=function(f,a,Z,Y){var m=E+N+N/5,l=D,e=l+10;f=f||[];Y=(Y&&Y.toLowerCase&&Y.toLowerCase())||"east";Z=J.g.markers[Z&&Z.toLowerCase()]||"disc";M.labels=J.set();for(var d=0;d<T;d++){var n=I[d].attr("fill"),b=B[d].order,c;B[d].others&&(f[b]=a||"Others");f[b]=J.g.labelise(f[b],B[d],X);M.labels.push(J.set());M.labels[d].push(J.g[Z](m+5,e,5).attr({fill:n,stroke:"none"}));M.labels[d].push(c=J.text(m+20,e,f[b]||B[b]).attr(J.g.txtattr).attr({fill:K.legendcolor||"#000","text-anchor":"start"}));G[d].label=M.labels[d];e+=c.getBBox().height*1.2;}var g=M.labels.getBBox(),k={east:[0,-g.height/2],west:[-g.width-2*N-20,-g.height/2],north:[-N-g.width/2,-N-g.height-10],south:[-N-g.width/2,N+10]}[Y];M.labels.translate.apply(M.labels,k);M.push(M.labels);};if(K.legend){A(K.legend,K.legendothers,K.legendmark,K.legendpos);}M.push(I,G);M.series=I;M.covers=G;return M;};