From: Dmitry Baranovskiy Date: Wed, 23 Dec 2009 23:12:30 +0000 (+1100) Subject: Refactor getLength & getPointAtLength again X-Git-Tag: v1.3.0~4 X-Git-Url: http://git.roojs.org/?p=raphael;a=commitdiff_plain;h=7524b9fe3a8a1e9da9ea974147091ec2000fc93a Refactor getLength & getPointAtLength again --- diff --git a/raphael-min.js b/raphael-min.js index 566dbdb..b050b20 100644 --- a/raphael-min.js +++ b/raphael-min.js @@ -4,4 +4,4 @@ * Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com) * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. */ -window.Raphael=(function(){var a=/[, ]+/,aK=/^(circle|rect|path|ellipse|text|image)$/,J=document,aq=window,l={was:"Raphael" in aq,is:aq.Raphael},al=function(){if(al.is(arguments[0],"array")){var d=arguments[0],e=w[aS](al,d.splice(0,3+al.is(d[0],aj))),S=e.set();for(var R=0,aW=d[m];R

";if(ae.childNodes[m]!=2){return null;}}al.svg=!(al.vml=al.type=="VML");aP[aU]=al[aU];al._id=0;al._oid=0;al.fn={};al.is=function(e,d){d=aV.call(d);return((d=="object"||d=="undefined")&&typeof e==d)||(e==null&&d=="null")||aV.call(at.call(e).slice(8,-1))==d;};al.setWindow=function(d){aq=d;J=aq.document;};var az=function(e){if(al.vml){var d=/^\s+|\s+$/g;az=ah(function(R){var S;R=(R+ap)[aL](d,ap);try{var aW=new ActiveXObject("htmlfile");aW.write("");aW.close();S=aW.body;}catch(aY){S=createPopup().document.body;}var i=S.createTextRange();try{S.style.color=R;var aX=i.queryCommandValue("ForeColor");aX=((aX&255)<<16)|(aX&65280)|((aX&16711680)>>>16);return"#"+("000000"+aX[aw](16)).slice(-6);}catch(aY){return"none";}});}else{var E=J.createElement("i");E.title="Rapha\xebl Colour Picker";E.style.display="none";J.body[aH](E);az=ah(function(i){E.style.color=i;return J.defaultView.getComputedStyle(E,ap).getPropertyValue("color");});}return az(e);};al.hsb2rgb=ah(function(aZ,aX,a3){if(al.is(aZ,"object")&&"h" in aZ&&"s" in aZ&&"b" in aZ){a3=aZ.b;aX=aZ.s;aZ=aZ.h;}var R,S,a4;if(a3==0){return{r:0,g:0,b:0,hex:"#000"};}if(aZ>1||aX>1||a3>1){aZ/=255;aX/=255;a3/=255;}var aW=~~(aZ*6),a0=(aZ*6)-aW,E=a3*(1-aX),e=a3*(1-(aX*a0)),a5=a3*(1-(aX*(1-a0)));R=[a3,e,E,E,a5,a3,a3][aW];S=[a5,a3,a3,e,E,E,a5][aW];a4=[E,E,a5,a3,a3,e,E][aW];R*=255;S*=255;a4*=255;var a1={r:R,g:S,b:a4},d=(~~R)[aw](16),aY=(~~S)[aw](16),a2=(~~a4)[aw](16);d=d[aL](aQ,"0");aY=aY[aL](aQ,"0");a2=a2[aL](aQ,"0");a1.hex="#"+d+aY+a2;return a1;},al);al.rgb2hsb=ah(function(d,e,aX){if(al.is(d,"object")&&"r" in d&&"g" in d&&"b" in d){aX=d.b;e=d.g;d=d.r;}if(al.is(d,"string")){var aZ=al.getRGB(d);d=aZ.r;e=aZ.g;aX=aZ.b;}if(d>1||e>1||aX>1){d/=255;e/=255;aX/=255;}var aW=g(d,e,aX),i=aE(d,e,aX),R,E,S=aW;if(i==aW){return{h:0,s:0,b:aW};}else{var aY=(aW-i);E=aY/aW;if(d==aW){R=(e-aX)/aY;}else{if(e==aW){R=2+((aX-d)/aY);}else{R=4+((d-e)/aY);}}R/=6;R<0&&R++;R>1&&R--;}return{h:R,s:E,b:S};},al);var aA=/,?([achlmqrstvxz]),?/gi;al._path2string=function(){return this.join(",")[aL](aA,"$1");};function ah(E,e,d){function i(){var R=Array[aU].slice.call(arguments,0),aW=R[av]("\u25ba"),S=i.cache=i.cache||{},aX=i.count=i.count||[];if(S[O](aW)){return d?d(S[aW]):S[aW];}aX[m]>=1000&&delete S[aX.shift()];aX[f](aW);S[aW]=E[aS](e,R);return d?d(S[aW]):S[aW];}return i;}al.getRGB=ah(function(d){if(!d||!!((d=d+ap).indexOf("-")+1)){return{r:-1,g:-1,b:-1,hex:"none",error:1};}if(d=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}!(({hs:1,rg:1})[O](d.substring(0,2))||d.charAt()=="#")&&(d=az(d));var S,i,E,aY,aZ,aW=d.match(x);if(aW){if(aW[2]){aY=F(aW[2].substring(5),16);E=F(aW[2].substring(3,5),16);i=F(aW[2].substring(1,3),16);}if(aW[3]){aY=F((aZ=aW[3].charAt(3))+aZ,16);E=F((aZ=aW[3].charAt(2))+aZ,16);i=F((aZ=aW[3].charAt(1))+aZ,16);}if(aW[4]){aW=aW[4][z](/\s*,\s*/);i=U(aW[0]);E=U(aW[1]);aY=U(aW[2]);}if(aW[5]){aW=aW[5][z](/\s*,\s*/);i=U(aW[0])*2.55;E=U(aW[1])*2.55;aY=U(aW[2])*2.55;}if(aW[6]){aW=aW[6][z](/\s*,\s*/);i=U(aW[0]);E=U(aW[1]);aY=U(aW[2]);return al.hsb2rgb(i,E,aY);}if(aW[7]){aW=aW[7][z](/\s*,\s*/);i=U(aW[0])*2.55;E=U(aW[1])*2.55;aY=U(aW[2])*2.55;return al.hsb2rgb(i,E,aY);}aW={r:i,g:E,b:aY};var e=(~~i)[aw](16),R=(~~E)[aw](16),aX=(~~aY)[aw](16);e=e[aL](aQ,"0");R=R[aL](aQ,"0");aX=aX[aL](aQ,"0");aW.hex="#"+e+R+aX;return aW;}return{r:-1,g:-1,b:-1,hex:"none",error:1};},al);al.getColor=function(e){var i=this.getColor.start=this.getColor.start||{h:0,s:1,b:e||0.75},d=this.hsb2rgb(i.h,i.s,i.b);i.h+=0.075;if(i.h>1){i.h=0;i.s-=0.2;i.s<=0&&(this.getColor.start={h:0,s:1,b:i.b});}return d.hex;};al.getColor.reset=function(){delete this.start;};al.parsePathString=ah(function(d){if(!d){return null;}var i={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},e=[];if(al.is(d,"array")&&al.is(d[0],"array")){e=ar(d);}if(!e[m]){(d+ap)[aL](/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(R,E,aX){var aW=[],S=aV.call(E);aX[aL](/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(aZ,aY){aY&&aW[f](+aY);});while(aW[m]>=i[S]){e[f]([E][aO](aW.splice(0,i[S])));if(!i[S]){break;}}});}e[aw]=al._path2string;return e;});al.findDotsAtSegment=ah(function(e,d,a9,a7,S,R,aX,aW,a3){var a1=1-a3,a0=aI(a1,3)*e+aI(a1,2)*3*a3*a9+a1*3*a3*a3*S+aI(a3,3)*aX,aY=aI(a1,3)*d+aI(a1,2)*3*a3*a7+a1*3*a3*a3*R+aI(a3,3)*aW,a5=e+2*a3*(a9-e)+a3*a3*(S-2*a9+e),a4=d+2*a3*(a7-d)+a3*a3*(R-2*a7+d),a8=a9+2*a3*(S-a9)+a3*a3*(aX-2*S+a9),a6=a7+2*a3*(R-a7)+a3*a3*(aW-2*R+a7),a2=(1-a3)*e+a3*a9,aZ=(1-a3)*d+a3*a7,E=(1-a3)*S+a3*aX,i=(1-a3)*R+a3*aW;return{x:a0,y:aY,m:{x:a5,y:a4},n:{x:a8,y:a6},start:{x:a2,y:aZ},end:{x:E,y:i}};});var Q=ah(function(a1){if(!a1){return{x:0,y:0,width:0,height:0};}a1=G(a1);var aY=0,aX=0,R=[],e=[],E;for(var S=0,a0=a1[m];SaY){aZ=aZ-R*2;}if(!S&&aY>aZ){aY=aY-R*2;}}else{aZ=a7[0];aY=a7[1];a9=a7[2];a8=a7[3];}var a3=aY-aZ;if(Z.abs(a3)>bb){var ba=aY,bd=a4,a1=by;aY=aZ+bb*(S&&aY>aZ?1:-1);a4=a9+be*Z.cos(aY);by=a8+bc*Z.sin(aY);bi=I(a4,by,be,bc,a6,0,S,bd,a1,[aY,ba,a9,a8]);}a3=aY-aZ;var aX=Z.cos(aZ),bx=Z.sin(aZ),aW=Z.cos(aY),bw=Z.sin(aY),bl=Z.tan(a3/4),bo=4/3*be*bl,bm=4/3*bc*bl,bu=[a5,bz],bt=[a5+bo*bx,bz-bm*aX],bs=[a4+bo*bw,by-bm*aW],bq=[a4,by];bt[0]=2*bu[0]-bt[0];bt[1]=2*bu[1]-bt[1];if(a7){return[bt,bs,bq][aO](bi);}else{bi=[bt,bs,bq][aO](bi)[av]()[z](",");var bg=[];for(var br=0,bh=bi[m];br1000000000000&&(aW=0.5);Z.abs(S)>1000000000000&&(S=0.5);if(aW>0&&aW<1){e=K(i,d,R,E,a5,a4,a1,aY,aW);a2[f](e.x);aZ[f](e.y);}if(S>0&&S<1){e=K(i,d,R,E,a5,a4,a1,aY,S);a2[f](e.x);aZ[f](e.y);}a3=(a4-2*E+d)-(aY-2*a4+E);a0=2*(E-d)-2*(a4-E);aX=d-E;aW=(-a0+Z.sqrt(a0*a0-4*a3*aX))/2/a3;S=(-a0-Z.sqrt(a0*a0-4*a3*aX))/2/a3;Z.abs(aW)>1000000000000&&(aW=0.5);Z.abs(S)>1000000000000&&(S=0.5);if(aW>0&&aW<1){e=K(i,d,R,E,a5,a4,a1,aY,aW);a2[f](e.x);aZ[f](e.y);}if(S>0&&S<1){e=K(i,d,R,E,a5,a4,a1,aY,S);a2[f](e.x);aZ[f](e.y);}return{min:{x:aE[aS](0,a2),y:aE[aS](0,aZ)},max:{x:g[aS](0,a2),y:g[aS](0,aZ)}};}),G=ah(function(a5,a0){var R=r(a5),a1=a0&&r(a0),a2={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},d={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},aW=function(a6,a7){var i,a8;if(!a6){return["C",a7.x,a7.y,a7.x,a7.y,a7.x,a7.y];}!(a6[0] in {T:1,Q:1})&&(a7.qx=a7.qy=null);switch(a6[0]){case"M":a7.X=a6[1];a7.Y=a6[2];break;case"A":a6=["C"][aO](I[aS](0,[a7.x,a7.y][aO](a6.slice(1))));break;case"S":i=a7.x+(a7.x-(a7.bx||a7.x));a8=a7.y+(a7.y-(a7.by||a7.y));a6=["C",i,a8][aO](a6.slice(1));break;case"T":a7.qx=a7.x+(a7.x-(a7.qx||a7.x));a7.qy=a7.y+(a7.y-(a7.qy||a7.y));a6=["C"][aO](aG(a7.x,a7.y,a7.qx,a7.qy,a6[1],a6[2]));break;case"Q":a7.qx=a6[1];a7.qy=a6[2];a6=["C"][aO](aG(a7.x,a7.y,a6[1],a6[2],a6[3],a6[4]));break;case"L":a6=["C"][aO](aT(a7.x,a7.y,a6[1],a6[2]));break;case"H":a6=["C"][aO](aT(a7.x,a7.y,a6[1],a7.y));break;case"V":a6=["C"][aO](aT(a7.x,a7.y,a7.x,a6[1]));break;case"Z":a6=["C"][aO](aT(a7.x,a7.y,a7.X,a7.Y));break;}return a6;},e=function(a6,a7){if(a6[a7][m]>7){a6[a7].shift();var a8=a6[a7];while(a8[m]){a6.splice(a7++,0,["C"][aO](a8.splice(0,6)));}a6.splice(a7,1);a3=g(R[m],a1&&a1[m]||0);}},E=function(ba,a9,a7,a6,a8){if(ba&&a9&&ba[a8][0]=="M"&&a9[a8][0]!="M"){a9.splice(a8,0,["M",a6.x,a6.y]);a7.bx=0;a7.by=0;a7.x=ba[a8][1];a7.y=ba[a8][2];a3=g(R[m],a1&&a1[m]||0);}};for(var aY=0,a3=g(R[m],a1&&a1[m]||0);aY3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},aC=function(d,i){var e=this;for(var E in i){if(i[O](E)&&!(E in d)){switch(typeof i[E]){case"function":(function(R){d[E]=d===e?R:function(){return R[aS](e,arguments);};})(i[E]);break;case"object":d[E]=d[E]||{};aC.call(this,d[E],i[E]);break;default:d[E]=i[E];break;}}}},ai=function(d,e){d==e.top&&(e.top=d.prev);d==e.bottom&&(e.bottom=d.next);d.next&&(d.next.prev=d.prev);d.prev&&(d.prev.next=d.next);},W=function(d,e){if(e.top===d){return;}ai(d,e);d.next=null;d.prev=e.top;e.top.next=d;e.top=d;},k=function(d,e){if(e.bottom===d){return;}ai(d,e);d.next=e.bottom;d.prev=null;e.bottom.prev=d;e.bottom=d;},A=function(e,d,i){ai(e,i);d==i.top&&(i.top=e);d.next&&(d.next.prev=e);e.next=d.next;e.prev=d;d.next=e;},an=function(e,d,i){ai(e,i);d==i.bottom&&(i.bottom=e);d.prev&&(d.prev.next=e);e.prev=d.prev;d.prev=e;e.next=d;},s=function(d){return function(){throw new Error("Rapha\xebl: you are calling to method \u201c"+d+"\u201d of removed object");};},ao=/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/;if(al.svg){aP[aU].svgns="http://www.w3.org/2000/svg";aP[aU].xlink="http://www.w3.org/1999/xlink";var M=function(d){return +d+(~~d===d)*0.5;},T=function(S){for(var e=0,E=S[m];e0.5)*2-1);aI(aX-0.5,2)+aI(S-0.5,2)>0.25&&(S=Z.sqrt(0.25-aI(aX-0.5,2))*a6+0.5)&&S!=0.5&&(S=S.toFixed(5)-0.00001*a6);}return ap;});a3=a3[z](/\s*\-\s*/);if(a0=="linear"){var aW=a3.shift();aW=-U(aW);if(isNaN(aW)){return null;}var R=[0,0,Z.cos(aW*Z.PI/180),Z.sin(aW*Z.PI/180)],a2=1/(g(Z.abs(R[2]),Z.abs(R[3]))||1);R[2]*=a2;R[3]*=a2;if(R[2]<0){R[0]=-R[2];R[2]=0;}if(R[3]<0){R[1]=-R[3];R[3]=0;}}var aZ=p(a3);if(!aZ){return null;}var e=aF(a0+"Gradient");e.id="r"+(al._id++)[aw](36);aF(e,a0=="radial"?{fx:aX,fy:S}:{x1:R[0],y1:R[1],x2:R[2],y2:R[3]});d.defs[aH](e);for(var aY=0,a4=aZ[m];aYaX.height)&&(aX.height=aW.y+aW.height-aX.y);(aW.x+aW.width-aX.x>aX.width)&&(aX.width=aW.x+aW.width-aX.x);}}E&&this.hide();return aX;};au[aU].attr=function(){if(this.removed){return this;}if(arguments[m]==0){var R={};for(var E in this.attrs){if(this.attrs[O](E)){R[E]=this.attrs[E];}}this._.rt.deg&&(R.rotation=this.rotate());(this._.sx!=1||this._.sy!=1)&&(R.scale=this.scale());R.gradient&&R.fill=="none"&&(R.fill=R.gradient)&&delete R.gradient;return R;}if(arguments[m]==1&&al.is(arguments[0],"string")){if(arguments[0]=="translation"){return t.call(this);}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}if(arguments[0]=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient){return this.attrs.gradient;}return this.attrs[arguments[0]];}if(arguments[m]==1&&al.is(arguments[0],"array")){var d={};for(var e in arguments[0]){if(arguments[0][O](e)){d[arguments[0][e]]=this.attrs[arguments[0][e]];}}return d;}if(arguments[m]==2){var S={};S[arguments[0]]=arguments[1];Y(this,S);}else{if(arguments[m]==1&&al.is(arguments[0],"object")){Y(this,arguments[0]);}}return this;};au[aU].toFront=function(){if(this.removed){return this;}this.node.parentNode[aH](this.node);var d=this.paper;d.top!=this&&W(this,d);return this;};au[aU].toBack=function(){if(this.removed){return this;}if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);k(this,this.paper);var d=this.paper;}return this;};au[aU].insertAfter=function(e){if(this.removed){return this;}var d=this.paper,i=e.node;if(i.nextSibling){i.parentNode.insertBefore(this.node,i.nextSibling);}else{i.parentNode[aH](this.node);}A(this,e,this.paper);return this;};au[aU].insertBefore=function(d){if(this.removed){return this;}var e=d.node;e.parentNode.insertBefore(this.node,e);an(this,d,this.paper);return this;};au[aU].getTotalLength=function(){if(this.type!="path"){return -1;}return this.node.getTotalLength();};au[aU].getPointAtLength=function(e){if(this.type!="path"){return -1;}var d=this.node.getPointAtLength(e);return{x:d.x,y:d.y};};var N=function(e,d,S,R){d=M(d);S=M(S);var E=aF("circle");e.canvas&&e.canvas[aH](E);var i=new au(E,e);i.attrs={cx:d,cy:S,r:R,fill:"none",stroke:"#000"};i.type="circle";aF(E,i.attrs);return i;};var aB=function(i,d,aX,e,S,aW){d=M(d);aX=M(aX);var R=aF("rect");i.canvas&&i.canvas[aH](R);var E=new au(R,i);E.attrs={x:d,y:aX,width:e,height:S,r:aW||0,rx:aW||0,ry:aW||0,fill:"none",stroke:"#000"};E.type="rect";aF(R,E.attrs);return E;};var ag=function(e,d,aW,S,R){d=M(d);aW=M(aW);var E=aF("ellipse");e.canvas&&e.canvas[aH](E);var i=new au(E,e);i.attrs={cx:d,cy:aW,rx:S,ry:R,fill:"none",stroke:"#000"};i.type="ellipse";aF(E,i.attrs);return i;};var o=function(i,aW,d,aX,e,S){var R=aF("image");aF(R,{x:d,y:aX,width:e,height:S,preserveAspectRatio:"none"});R.setAttributeNS(i.xlink,"href",aW);i.canvas&&i.canvas[aH](R);var E=new au(R,i);E.attrs={x:d,y:aX,width:e,height:S,src:aW};E.type="image";return E;};var V=function(e,d,S,R){var E=aF("text");aF(E,{x:d,y:S,"text-anchor":"middle"});e.canvas&&e.canvas[aH](E);var i=new au(E,e);i.attrs={x:d,y:S,"text-anchor":"middle",text:R,font:j.font,stroke:"none",fill:"#000"};i.type="text";Y(i,i.attrs);return i;};var aR=function(e,d){this.width=e||this.width;this.height=d||this.height;this.canvas[v]("width",this.width);this.canvas[v]("height",this.height);return this;};var w=function(){var E=am[aS](null,arguments),i=E&&E.container,e=E.x,aW=E.y,R=E.width,d=E.height;if(!i){throw new Error("SVG container not found.");}var S=aF("svg");R=R||512;d=d||342;aF(S,{xmlns:"http://www.w3.org/2000/svg",version:1.1,width:R,height:d});if(i==1){S.style.cssText="position:absolute;left:"+e+"px;top:"+aW+"px";J.body[aH](S);}else{if(i.firstChild){i.insertBefore(S,i.firstChild);}else{i[aH](S);}}i=new aP;i.width=R;i.height=d;i.canvas=S;aC.call(i,i,al.fn);i.clear();return i;};aP[aU].clear=function(){var d=this.canvas;while(d.firstChild){d.removeChild(d.firstChild);}this.bottom=this.top=null;(this.desc=aF("desc"))[aH](J.createTextNode("Created with Rapha\xebl"));d[aH](this.desc);d[aH](this.defs=aF("defs"));};aP[aU].remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var d in this){this[d]=s(d);}};}if(al.vml){var aD=function(a4){var a1=/[ahqtv]/ig,aW=r;(a4+ap).match(a1)&&(aW=G);a1=/[clmz]/g;if(aW==r&&!(a4+ap).match(a1)){var e={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},R=/([clmz]),?([^clmz]*)/gi,S=/-?[^,\s-]+/g;var a0=(a4+ap)[aL](R,function(a5,a7,i){var a6=[];i[aL](S,function(a8){a6[f](M(a8));});return e[a7]+a6;});return a0;}var a2=aW(a4),E,a0=[],d;for(var aY=0,a3=a2[m];aY1&&(e=1);a3.opacity=e;}a4.fill&&(a3.on=true);if(a3.on==null||a4.fill=="none"){a3.on=false;}if(a3.on&&a4.fill){var i=a4.fill.match(c);if(i){a3.src=i[1];a3.type="tile";}else{a3.color=al.getRGB(a4.fill).hex;a3.src=ap;a3.type="solid";if(al.getRGB(a4.fill).error&&(a9.type in {circle:1,ellipse:1}||(a4.fill+ap).charAt()!="r")&&b(a9,a4.fill)){a5.fill="none";a5.gradient=a4.fill;}}}a6&&a2[aH](a3);var R=(a2.getElementsByTagName("stroke")&&a2.getElementsByTagName("stroke")[0]),a7=false;!R&&(a7=R=af("stroke"));if((a4.stroke&&a4.stroke!="none")||a4["stroke-width"]||a4["stroke-opacity"]!=null||a4["stroke-dasharray"]||a4["stroke-miterlimit"]||a4["stroke-linejoin"]||a4["stroke-linecap"]){R.on=true;}(a4.stroke=="none"||R.on==null||a4.stroke==0||a4["stroke-width"]==0)&&(R.on=false);R.on&&a4.stroke&&(R.color=al.getRGB(a4.stroke).hex);var e=((+a5["stroke-opacity"]+1||2)-1)*((+a5.opacity+1||2)-1),a0=(U(a4["stroke-width"])||1)*0.75;e<0&&(e=0);e>1&&(e=1);a4["stroke-width"]==null&&(a0=a5["stroke-width"]);a4["stroke-width"]&&(R.weight=a0);a0&&a0<1&&(e*=a0)&&(R.weight=1);R.opacity=e;a4["stroke-linejoin"]&&(R.joinstyle=a4["stroke-linejoin"]||"miter");R.miterlimit=a4["stroke-miterlimit"]||8;a4["stroke-linecap"]&&(R.endcap=a4["stroke-linecap"]=="butt"?"flat":a4["stroke-linecap"]=="square"?"square":"round");if(a4["stroke-dasharray"]){var a1={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};R.dashstyle=a1[O](a4["stroke-dasharray"])?a1[a4["stroke-dasharray"]]:ap;}a7&&a2[aH](R);}if(a9.type=="text"){var aW=a9.paper.span.style;a5.font&&(aW.font=a5.font);a5["font-family"]&&(aW.fontFamily=a5["font-family"]);a5["font-size"]&&(aW.fontSize=a5["font-size"]);a5["font-weight"]&&(aW.fontWeight=a5["font-weight"]);a5["font-style"]&&(aW.fontStyle=a5["font-style"]);a9.node.string&&(a9.paper.span.innerHTML=(a9.node.string+ap)[aL](/"));a9.W=a5.w=a9.paper.span.offsetWidth;a9.H=a5.h=a9.paper.span.offsetHeight;a9.X=a5.x;a9.Y=a5.y+M(a9.H/2);switch(a5["text-anchor"]){case"start":a9.node.style["v-text-align"]="left";a9.bbx=M(a9.W/2);break;case"end":a9.node.style["v-text-align"]="right";a9.bbx=-M(a9.W/2);break;default:a9.node.style["v-text-align"]="center";break;}}};var b=function(d,aX){d.attrs=d.attrs||{};var aY=d.attrs,a0=d.node.getElementsByTagName("fill"),S="linear",aW=".5 .5";d.attrs.gradient=aX;aX=(aX+ap)[aL](ao,function(a2,a3,i){S="radial";if(a3&&i){a3=U(a3);i=U(i);aI(a3-0.5,2)+aI(i-0.5,2)>0.25&&(i=Z.sqrt(0.25-aI(a3-0.5,2))*((i>0.5)*2-1)+0.5);aW=a3+ak+i;}return ap;});aX=aX[z](/\s*\-\s*/);if(S=="linear"){var e=aX.shift();e=-U(e);if(isNaN(e)){return null;}}var R=p(aX);if(!R){return null;}d=d.shape||d.node;a0=a0[0]||af("fill");if(R[m]){a0.on=true;a0.method="none";a0.type=(S=="radial")?"gradientradial":"gradient";a0.color=R[0].color;a0.color2=R[R[m]-1].color;var a1=[];for(var E=0,aZ=R[m];EE){return K(aY,aX,e[1],e[2],e[3],e[4],e[5],e[6],(E-aW)/R);}aW+=R;aY=+e[5];aX=+e[6];}}return d?aW:{x:aY,y:aX};};};au[aU].getTotalLength=ax(1);au[aU].getPointAtLength=ax();var N=function(e,d,aX,S){var R=af("group"),aW=af("oval"),i=aW.style;R.style.cssText="position:absolute;left:0;top:0;width:"+e.width+"px;height:"+e.height+"px";R.coordsize=e.coordsize;R.coordorigin=e.coordorigin;R[aH](aW);var E=new au(aW,R,e);E.type="circle";Y(E,{stroke:"#000",fill:"none"});E.attrs.cx=d;E.attrs.cy=aX;E.attrs.r=S;E.setBox({x:d-S,y:aX-S,width:S*2,height:S*2});e.canvas[aH](R);return E;},aB=function(e,aX,aW,aY,E,d){var R=af("group"),i=af("roundrect"),aZ=(+d||0)/(aE(aY,E));R.style.cssText="position:absolute;left:0;top:0;width:"+e.width+"px;height:"+e.height+"px";R.coordsize=e.coordsize;R.coordorigin=e.coordorigin;R[aH](i);i.arcsize=aZ;var S=new au(i,R,e);S.type="rect";Y(S,{stroke:"#000"});S.arcsize=aZ;S.setBox({x:aX,y:aW,width:aY,height:E,r:d});e.canvas[aH](R);return S;},ag=function(d,aY,aX,i,e){var R=af("group"),E=af("oval"),aW=E.style;R.style.cssText="position:absolute;left:0;top:0;width:"+d.width+"px;height:"+d.height+"px";R.coordsize=d.coordsize;R.coordorigin=d.coordorigin;R[aH](E);var S=new au(E,R,d);S.type="ellipse";Y(S,{stroke:"#000"});S.attrs.cx=aY;S.attrs.cy=aX;S.attrs.rx=i;S.attrs.ry=e;S.setBox({x:aY-i,y:aX-e,width:i*2,height:e*2});d.canvas[aH](R);return S;},o=function(e,d,aY,aX,aZ,E){var R=af("group"),i=af("image"),aW=i.style;R.style.cssText="position:absolute;left:0;top:0;width:"+e.width+"px;height:"+e.height+"px";R.coordsize=e.coordsize;R.coordorigin=e.coordorigin;i.src=d;R[aH](i);var S=new au(i,R,e);S.type="image";S.attrs.src=d;S.attrs.x=aY;S.attrs.y=aX;S.attrs.w=aZ;S.attrs.h=E;S.setBox({x:aY,y:aX,width:aZ,height:E});e.canvas[aH](R);return S;},V=function(e,aY,aX,aZ){var R=af("group"),E=af("shape"),aW=E.style,a0=af("path"),d=a0.style,i=af("textpath");R.style.cssText="position:absolute;left:0;top:0;width:"+e.width+"px;height:"+e.height+"px";R.coordsize=e.coordsize;R.coordorigin=e.coordorigin;a0.v=al.format("m{0},{1}l{2},{1}",M(aY),M(aX),M(aY)+1);a0.textpathok=true;aW.width=e.width;aW.height=e.height;i.string=aZ+ap;i.on=true;E[aH](i);E[aH](a0);R[aH](E);var S=new au(i,R,e);S.shape=E;S.textpath=a0;S.type="text";S.attrs.text=aZ;S.attrs.x=aY;S.attrs.y=aX;S.attrs.w=1;S.attrs.h=1;Y(S,{font:j.font,stroke:"none",fill:"#000"});S.setBox();e.canvas[aH](R);return S;},aR=function(i,d){var e=this.canvas.style;i==+i&&(i+="px");d==+d&&(d+="px");e.width=i;e.height=d;e.clip="rect(0 "+i+" "+d+" 0)";return this;},af;J.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!J.namespaces.rvml&&J.namespaces.add("rvml","urn:schemas-microsoft-com:vml");af=function(d){return J.createElement("');};}catch(ad){af=function(d){return J.createElement("<"+d+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var w=function(){var i=am[aS](null,arguments),d=i.container,aY=i.height,aZ,e=i.width,aX=i.x,aW=i.y;if(!d){throw new Error("VML container not found.");}var R=new aP,S=R.canvas=J.createElement("div"),E=S.style;e=e||512;aY=aY||342;e==+e&&(e+="px");aY==+aY&&(aY+="px");R.width=1000;R.height=1000;R.coordsize="1000 1000";R.coordorigin="0 0";R.span=J.createElement("span");R.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";S[aH](R.span);E.cssText=al.format("width:{0};height:{1};position:absolute;clip:rect(0 {0} {1} 0);overflow:hidden",e,aY);if(d==1){J.body[aH](S);E.left=aX+"px";E.top=aW+"px";}else{d.style.width=e;d.style.height=aY;if(d.firstChild){d.insertBefore(S,d.firstChild);}else{d[aH](S);}}aC.call(R,R,al.fn);return R;};aP[aU].clear=function(){this.canvas.innerHTML=ap;this.span=J.createElement("span");this.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";this.canvas[aH](this.span);this.bottom=this.top=null;};aP[aU].remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var d in this){this[d]=s(d);}};}if((/^Apple|^Google/).test(navigator.vendor)&&!(navigator.userAgent.indexOf("Version/4.0")+1)){aP[aU].safari=function(){var d=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){d.remove();});};}else{aP[aU].safari=function(){};}var ac=(function(){if(J.addEventListener){return function(R,i,e,d){var E=function(S){return e.call(d,S);};R.addEventListener(i,E,false);return function(){R.removeEventListener(i,E,false);return true;};};}else{if(J.attachEvent){return function(S,E,i,e){var R=function(aW){return i.call(e,aW||aq.event);};S.attachEvent("on"+E,R);var d=function(){S.detachEvent("on"+E,R);return true;};return d;};}}})();for(var aa=D[m];aa--;){(function(d){au[aU][d]=function(e){if(al.is(e,"function")){this.events=this.events||[];this.events.push({name:d,f:e,unbind:ac(this.shape||this.node,d,e,this)});}return this;};au[aU]["un"+d]=function(E){var i=this.events,e=i[m];while(e--){if(i[e].name==d&&i[e].f==E){i[e].unbind();i.splice(e,1);!i.length&&delete this.events;return this;}}return this;};})(D[aa]);}au[aU].hover=function(e,d){return this.mouseover(e).mouseout(d);};au[aU].unhover=function(e,d){return this.unmouseover(e).unmouseout(d);};aP[aU].circle=function(d,i,e){return N(this,d||0,i||0,e||0);};aP[aU].rect=function(d,R,e,i,E){return aB(this,d||0,R||0,e||0,i||0,E||0);};aP[aU].ellipse=function(d,E,i,e){return ag(this,d||0,E||0,i||0,e||0);};aP[aU].path=function(d){d&&!al.is(d,"string")&&!al.is(d[0],"array")&&(d+=ap);return q(al.format[aS](al,arguments),this);};aP[aU].image=function(E,d,R,e,i){return o(this,E||"about:blank",d||0,R||0,e||0,i||0);};aP[aU].text=function(d,i,e){return V(this,d||0,i||0,e||ap);};aP[aU].set=function(d){arguments[m]>1&&(d=Array[aU].splice.call(arguments,0,arguments[m]));return new P(d);};aP[aU].setSize=aR;aP[aU].top=aP[aU].bottom=null;aP[aU].raphael=al;function u(){return this.x+ak+this.y;}au[aU].scale=function(a2,a1,E,e){if(a2==null&&a1==null){return{x:this._.sx,y:this._.sy,toString:u};}a1=a1||a2;!+a1&&(a1=a2);var a6,a4,a5,a3,bi=this.attrs;if(a2!=0){var a0=this.getBBox(),aX=a0.x+a0.width/2,R=a0.y+a0.height/2,bh=a2/this._.sx,bg=a1/this._.sy;E=(+E||E==0)?E:aX;e=(+e||e==0)?e:R;var aZ=~~(a2/Z.abs(a2)),aW=~~(a1/Z.abs(a1)),a8=this.node.style,bk=E+(aX-E)*bh,bj=e+(R-e)*bg;switch(this.type){case"rect":case"image":var aY=bi.width*aZ*bh,bc=bi.height*aW*bg;this.attr({height:newh,r:bi.r*aE(aZ*bh,aW*bg),width:aY,x:bk-aY/2,y:bj-newh/2});break;case"circle":case"ellipse":this.attr({rx:bi.rx*aZ*bh,ry:bi.ry*aW*bg,r:bi.r*aE(aZ*bh,aW*bg),cx:bk,cy:bj});break;case"path":var ba=ab(bi.path),bd=true;for(var bf=0,a7=ba[m];bf":function(d){return aI(d-1,3)+1;},"<>":function(d){d=d*2;if(d<1){return aI(d,3)/2;}d-=2;return(aI(d,3)+2)/2;},backIn:function(e){var d=1.70158;return e*e*((d+1)*e-d);},backOut:function(e){e=e-1;var d=1.70158;return e*e*((d+1)*e+d)+1;},elastic:function(i){if(i==0||i==1){return i;}var e=0.3,d=e/4;return aI(2,-10*i)*Z.sin((i-d)*(2*Z.PI)/e)+1;},bounce:function(E){var e=7.5625,i=2.75,d;if(E<(1/i)){d=e*E*E;}else{if(E<(2/i)){E-=(1.5/i);d=e*E*E+0.75;}else{if(E<(2.5/i)){E-=(2.25/i);d=e*E*E+0.9375;}else{E-=(2.625/i);d=e*E*E+0.984375;}}}return d;}};var H={length:0},aN=function(){var aY=+new Date;for(var a9 in H){if(a9!="length"&&H[O](a9)){var be=H[a9];if(be.stop){delete H[a9];H[m]--;continue;}var aW=aY-be.start,a7=be.ms,a6=be.easing,ba=be.from,a3=be.diff,E=be.to,a2=be.t,a5=be.prev||0,aX=be.el,R=be.callback,a4={},d;if(aW255?255:(d<0?0:d);},t=function(d,i){if(d==null){return{x:this._.tx,y:this._.ty,toString:u};}this._.tx+=+d;this._.ty+=+i;switch(this.type){case"circle":case"ellipse":this.attr({cx:+d+this.attrs.cx,cy:+i+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+d+this.attrs.x,y:+i+this.attrs.y});break;case"path":var e=ab(this.attrs.path);e[0][1]+=+d;e[0][2]+=+i;this.attr({path:e});break;}return this;};au[aU].animateWith=function(e,i,d,R,E){H[e.id]&&(i.start=H[e.id].start);return this.animate(i,d,R,E);};au[aU].onAnimation=function(d){this._run=d||null;return this;};au[aU].animate=function(R,d,a1,a7){if(al.is(a1,"function")||!a1){a7=a1||null;}var a2={},a3={},a4={};for(var a0 in R){if(R[O](a0)){if(X[O](a0)){a2[a0]=this.attr(a0);(a2[a0]==null)&&(a2[a0]=j[a0]);a3[a0]=R[a0];switch(X[a0]){case"number":a4[a0]=(a3[a0]-a2[a0])/d;break;case"colour":a2[a0]=al.getRGB(a2[a0]);var aY=al.getRGB(a3[a0]);a4[a0]={r:(aY.r-a2[a0].r)/d,g:(aY.g-a2[a0].g)/d,b:(aY.b-a2[a0].b)/d};break;case"path":var e=G(a2[a0],a3[a0]);a2[a0]=e[0];var E=e[1];a4[a0]=[];for(var aX=0,a6=a2[a0][m];aX

";if(ae.childNodes[m]!=2){return null;}}al.svg=!(al.vml=al.type=="VML");aP[aU]=al[aU];al._id=0;al._oid=0;al.fn={};al.is=function(e,d){d=aV.call(d);return((d=="object"||d=="undefined")&&typeof e==d)||(e==null&&d=="null")||aV.call(at.call(e).slice(8,-1))==d;};al.setWindow=function(d){aq=d;J=aq.document;};var az=function(e){if(al.vml){var d=/^\s+|\s+$/g;az=ah(function(R){var S;R=(R+ap)[aL](d,ap);try{var aW=new ActiveXObject("htmlfile");aW.write("");aW.close();S=aW.body;}catch(aY){S=createPopup().document.body;}var i=S.createTextRange();try{S.style.color=R;var aX=i.queryCommandValue("ForeColor");aX=((aX&255)<<16)|(aX&65280)|((aX&16711680)>>>16);return"#"+("000000"+aX[aw](16)).slice(-6);}catch(aY){return"none";}});}else{var E=J.createElement("i");E.title="Rapha\xebl Colour Picker";E.style.display="none";J.body[aH](E);az=ah(function(i){E.style.color=i;return J.defaultView.getComputedStyle(E,ap).getPropertyValue("color");});}return az(e);};al.hsb2rgb=ah(function(aZ,aX,a3){if(al.is(aZ,"object")&&"h" in aZ&&"s" in aZ&&"b" in aZ){a3=aZ.b;aX=aZ.s;aZ=aZ.h;}var R,S,a4;if(a3==0){return{r:0,g:0,b:0,hex:"#000"};}if(aZ>1||aX>1||a3>1){aZ/=255;aX/=255;a3/=255;}var aW=~~(aZ*6),a0=(aZ*6)-aW,E=a3*(1-aX),e=a3*(1-(aX*a0)),a5=a3*(1-(aX*(1-a0)));R=[a3,e,E,E,a5,a3,a3][aW];S=[a5,a3,a3,e,E,E,a5][aW];a4=[E,E,a5,a3,a3,e,E][aW];R*=255;S*=255;a4*=255;var a1={r:R,g:S,b:a4},d=(~~R)[aw](16),aY=(~~S)[aw](16),a2=(~~a4)[aw](16);d=d[aL](aQ,"0");aY=aY[aL](aQ,"0");a2=a2[aL](aQ,"0");a1.hex="#"+d+aY+a2;return a1;},al);al.rgb2hsb=ah(function(d,e,aX){if(al.is(d,"object")&&"r" in d&&"g" in d&&"b" in d){aX=d.b;e=d.g;d=d.r;}if(al.is(d,"string")){var aZ=al.getRGB(d);d=aZ.r;e=aZ.g;aX=aZ.b;}if(d>1||e>1||aX>1){d/=255;e/=255;aX/=255;}var aW=g(d,e,aX),i=aE(d,e,aX),R,E,S=aW;if(i==aW){return{h:0,s:0,b:aW};}else{var aY=(aW-i);E=aY/aW;if(d==aW){R=(e-aX)/aY;}else{if(e==aW){R=2+((aX-d)/aY);}else{R=4+((d-e)/aY);}}R/=6;R<0&&R++;R>1&&R--;}return{h:R,s:E,b:S};},al);var aA=/,?([achlmqrstvxz]),?/gi;al._path2string=function(){return this.join(",")[aL](aA,"$1");};function ah(E,e,d){function i(){var R=Array[aU].slice.call(arguments,0),aW=R[av]("\u25ba"),S=i.cache=i.cache||{},aX=i.count=i.count||[];if(S[O](aW)){return d?d(S[aW]):S[aW];}aX[m]>=1000&&delete S[aX.shift()];aX[f](aW);S[aW]=E[aS](e,R);return d?d(S[aW]):S[aW];}return i;}al.getRGB=ah(function(d){if(!d||!!((d=d+ap).indexOf("-")+1)){return{r:-1,g:-1,b:-1,hex:"none",error:1};}if(d=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}!(({hs:1,rg:1})[O](d.substring(0,2))||d.charAt()=="#")&&(d=az(d));var S,i,E,aY,aZ,aW=d.match(x);if(aW){if(aW[2]){aY=F(aW[2].substring(5),16);E=F(aW[2].substring(3,5),16);i=F(aW[2].substring(1,3),16);}if(aW[3]){aY=F((aZ=aW[3].charAt(3))+aZ,16);E=F((aZ=aW[3].charAt(2))+aZ,16);i=F((aZ=aW[3].charAt(1))+aZ,16);}if(aW[4]){aW=aW[4][z](/\s*,\s*/);i=U(aW[0]);E=U(aW[1]);aY=U(aW[2]);}if(aW[5]){aW=aW[5][z](/\s*,\s*/);i=U(aW[0])*2.55;E=U(aW[1])*2.55;aY=U(aW[2])*2.55;}if(aW[6]){aW=aW[6][z](/\s*,\s*/);i=U(aW[0]);E=U(aW[1]);aY=U(aW[2]);return al.hsb2rgb(i,E,aY);}if(aW[7]){aW=aW[7][z](/\s*,\s*/);i=U(aW[0])*2.55;E=U(aW[1])*2.55;aY=U(aW[2])*2.55;return al.hsb2rgb(i,E,aY);}aW={r:i,g:E,b:aY};var e=(~~i)[aw](16),R=(~~E)[aw](16),aX=(~~aY)[aw](16);e=e[aL](aQ,"0");R=R[aL](aQ,"0");aX=aX[aL](aQ,"0");aW.hex="#"+e+R+aX;return aW;}return{r:-1,g:-1,b:-1,hex:"none",error:1};},al);al.getColor=function(e){var i=this.getColor.start=this.getColor.start||{h:0,s:1,b:e||0.75},d=this.hsb2rgb(i.h,i.s,i.b);i.h+=0.075;if(i.h>1){i.h=0;i.s-=0.2;i.s<=0&&(this.getColor.start={h:0,s:1,b:i.b});}return d.hex;};al.getColor.reset=function(){delete this.start;};al.parsePathString=ah(function(d){if(!d){return null;}var i={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},e=[];if(al.is(d,"array")&&al.is(d[0],"array")){e=ar(d);}if(!e[m]){(d+ap)[aL](/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(R,E,aX){var aW=[],S=aV.call(E);aX[aL](/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(aZ,aY){aY&&aW[f](+aY);});while(aW[m]>=i[S]){e[f]([E][aO](aW.splice(0,i[S])));if(!i[S]){break;}}});}e[aw]=al._path2string;return e;});al.findDotsAtSegment=function(e,d,ba,a8,aW,R,aY,aX,a4){var a2=1-a4,a1=aI(a2,3)*e+aI(a2,2)*3*a4*ba+a2*3*a4*a4*aW+aI(a4,3)*aY,aZ=aI(a2,3)*d+aI(a2,2)*3*a4*a8+a2*3*a4*a4*R+aI(a4,3)*aX,a6=e+2*a4*(ba-e)+a4*a4*(aW-2*ba+e),a5=d+2*a4*(a8-d)+a4*a4*(R-2*a8+d),a9=ba+2*a4*(aW-ba)+a4*a4*(aY-2*aW+ba),a7=a8+2*a4*(R-a8)+a4*a4*(aX-2*R+a8),a3=(1-a4)*e+a4*ba,a0=(1-a4)*d+a4*a8,E=(1-a4)*aW+a4*aY,i=(1-a4)*R+a4*aX,S=(90-Z.atan((a6-a9)/(a5-a7))*180/Z.PI)%360;return{x:a1,y:aZ,m:{x:a6,y:a5},n:{x:a9,y:a7},start:{x:a3,y:a0},end:{x:E,y:i},alpha:S};};var Q=ah(function(a1){if(!a1){return{x:0,y:0,width:0,height:0};}a1=G(a1);var aY=0,aX=0,R=[],e=[],E;for(var S=0,a0=a1[m];SaY){aZ=aZ-R*2;}if(!S&&aY>aZ){aY=aY-R*2;}}else{aZ=a7[0];aY=a7[1];a9=a7[2];a8=a7[3];}var a3=aY-aZ;if(Z.abs(a3)>bb){var ba=aY,bd=a4,a1=by;aY=aZ+bb*(S&&aY>aZ?1:-1);a4=a9+be*Z.cos(aY);by=a8+bc*Z.sin(aY);bi=I(a4,by,be,bc,a6,0,S,bd,a1,[aY,ba,a9,a8]);}a3=aY-aZ;var aX=Z.cos(aZ),bx=Z.sin(aZ),aW=Z.cos(aY),bw=Z.sin(aY),bl=Z.tan(a3/4),bo=4/3*be*bl,bm=4/3*bc*bl,bu=[a5,bz],bt=[a5+bo*bx,bz-bm*aX],bs=[a4+bo*bw,by-bm*aW],bq=[a4,by];bt[0]=2*bu[0]-bt[0];bt[1]=2*bu[1]-bt[1];if(a7){return[bt,bs,bq][aO](bi);}else{bi=[bt,bs,bq][aO](bi)[av]()[z](",");var bg=[];for(var br=0,bh=bi[m];br1000000000000&&(aW=0.5);Z.abs(S)>1000000000000&&(S=0.5);if(aW>0&&aW<1){e=K(i,d,R,E,a5,a4,a1,aY,aW);a2[f](e.x);aZ[f](e.y);}if(S>0&&S<1){e=K(i,d,R,E,a5,a4,a1,aY,S);a2[f](e.x);aZ[f](e.y);}a3=(a4-2*E+d)-(aY-2*a4+E);a0=2*(E-d)-2*(a4-E);aX=d-E;aW=(-a0+Z.sqrt(a0*a0-4*a3*aX))/2/a3;S=(-a0-Z.sqrt(a0*a0-4*a3*aX))/2/a3;Z.abs(aW)>1000000000000&&(aW=0.5);Z.abs(S)>1000000000000&&(S=0.5);if(aW>0&&aW<1){e=K(i,d,R,E,a5,a4,a1,aY,aW);a2[f](e.x);aZ[f](e.y);}if(S>0&&S<1){e=K(i,d,R,E,a5,a4,a1,aY,S);a2[f](e.x);aZ[f](e.y);}return{min:{x:aE[aS](0,a2),y:aE[aS](0,aZ)},max:{x:g[aS](0,a2),y:g[aS](0,aZ)}};}),G=ah(function(a5,a0){var R=r(a5),a1=a0&&r(a0),a2={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},d={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},aW=function(a6,a7){var i,a8;if(!a6){return["C",a7.x,a7.y,a7.x,a7.y,a7.x,a7.y];}!(a6[0] in {T:1,Q:1})&&(a7.qx=a7.qy=null);switch(a6[0]){case"M":a7.X=a6[1];a7.Y=a6[2];break;case"A":a6=["C"][aO](I[aS](0,[a7.x,a7.y][aO](a6.slice(1))));break;case"S":i=a7.x+(a7.x-(a7.bx||a7.x));a8=a7.y+(a7.y-(a7.by||a7.y));a6=["C",i,a8][aO](a6.slice(1));break;case"T":a7.qx=a7.x+(a7.x-(a7.qx||a7.x));a7.qy=a7.y+(a7.y-(a7.qy||a7.y));a6=["C"][aO](aG(a7.x,a7.y,a7.qx,a7.qy,a6[1],a6[2]));break;case"Q":a7.qx=a6[1];a7.qy=a6[2];a6=["C"][aO](aG(a7.x,a7.y,a6[1],a6[2],a6[3],a6[4]));break;case"L":a6=["C"][aO](aT(a7.x,a7.y,a6[1],a6[2]));break;case"H":a6=["C"][aO](aT(a7.x,a7.y,a6[1],a7.y));break;case"V":a6=["C"][aO](aT(a7.x,a7.y,a7.x,a6[1]));break;case"Z":a6=["C"][aO](aT(a7.x,a7.y,a7.X,a7.Y));break;}return a6;},e=function(a6,a7){if(a6[a7][m]>7){a6[a7].shift();var a8=a6[a7];while(a8[m]){a6.splice(a7++,0,["C"][aO](a8.splice(0,6)));}a6.splice(a7,1);a3=g(R[m],a1&&a1[m]||0);}},E=function(ba,a9,a7,a6,a8){if(ba&&a9&&ba[a8][0]=="M"&&a9[a8][0]!="M"){a9.splice(a8,0,["M",a6.x,a6.y]);a7.bx=0;a7.by=0;a7.x=ba[a8][1];a7.y=ba[a8][2];a3=g(R[m],a1&&a1[m]||0);}};for(var aY=0,a3=g(R[m],a1&&a1[m]||0);aY3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},aC=function(d,i){var e=this;for(var E in i){if(i[O](E)&&!(E in d)){switch(typeof i[E]){case"function":(function(R){d[E]=d===e?R:function(){return R[aS](e,arguments);};})(i[E]);break;case"object":d[E]=d[E]||{};aC.call(this,d[E],i[E]);break;default:d[E]=i[E];break;}}}},ai=function(d,e){d==e.top&&(e.top=d.prev);d==e.bottom&&(e.bottom=d.next);d.next&&(d.next.prev=d.prev);d.prev&&(d.prev.next=d.next);},W=function(d,e){if(e.top===d){return;}ai(d,e);d.next=null;d.prev=e.top;e.top.next=d;e.top=d;},k=function(d,e){if(e.bottom===d){return;}ai(d,e);d.next=e.bottom;d.prev=null;e.bottom.prev=d;e.bottom=d;},A=function(e,d,i){ai(e,i);d==i.top&&(i.top=e);d.next&&(d.next.prev=e);e.next=d.next;e.prev=d;d.next=e;},an=function(e,d,i){ai(e,i);d==i.bottom&&(i.bottom=e);d.prev&&(d.prev.next=e);e.prev=d.prev;d.prev=e;e.next=d;},s=function(d){return function(){throw new Error("Rapha\xebl: you are calling to method \u201c"+d+"\u201d of removed object");};},ao=/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/;if(al.svg){aP[aU].svgns="http://www.w3.org/2000/svg";aP[aU].xlink="http://www.w3.org/1999/xlink";var M=function(d){return +d+(~~d===d)*0.5;},T=function(S){for(var e=0,E=S[m];e0.5)*2-1);aI(aX-0.5,2)+aI(S-0.5,2)>0.25&&(S=Z.sqrt(0.25-aI(aX-0.5,2))*a6+0.5)&&S!=0.5&&(S=S.toFixed(5)-0.00001*a6);}return ap;});a3=a3[z](/\s*\-\s*/);if(a0=="linear"){var aW=a3.shift();aW=-U(aW);if(isNaN(aW)){return null;}var R=[0,0,Z.cos(aW*Z.PI/180),Z.sin(aW*Z.PI/180)],a2=1/(g(Z.abs(R[2]),Z.abs(R[3]))||1);R[2]*=a2;R[3]*=a2;if(R[2]<0){R[0]=-R[2];R[2]=0;}if(R[3]<0){R[1]=-R[3];R[3]=0;}}var aZ=p(a3);if(!aZ){return null;}var e=aF(a0+"Gradient");e.id="r"+(al._id++)[aw](36);aF(e,a0=="radial"?{fx:aX,fy:S}:{x1:R[0],y1:R[1],x2:R[2],y2:R[3]});d.defs[aH](e);for(var aY=0,a4=aZ[m];aYaX.height)&&(aX.height=aW.y+aW.height-aX.y);(aW.x+aW.width-aX.x>aX.width)&&(aX.width=aW.x+aW.width-aX.x);}}E&&this.hide();return aX;};au[aU].attr=function(){if(this.removed){return this;}if(arguments[m]==0){var R={};for(var E in this.attrs){if(this.attrs[O](E)){R[E]=this.attrs[E];}}this._.rt.deg&&(R.rotation=this.rotate());(this._.sx!=1||this._.sy!=1)&&(R.scale=this.scale());R.gradient&&R.fill=="none"&&(R.fill=R.gradient)&&delete R.gradient;return R;}if(arguments[m]==1&&al.is(arguments[0],"string")){if(arguments[0]=="translation"){return t.call(this);}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}if(arguments[0]=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient){return this.attrs.gradient;}return this.attrs[arguments[0]];}if(arguments[m]==1&&al.is(arguments[0],"array")){var d={};for(var e in arguments[0]){if(arguments[0][O](e)){d[arguments[0][e]]=this.attrs[arguments[0][e]];}}return d;}if(arguments[m]==2){var S={};S[arguments[0]]=arguments[1];Y(this,S);}else{if(arguments[m]==1&&al.is(arguments[0],"object")){Y(this,arguments[0]);}}return this;};au[aU].toFront=function(){if(this.removed){return this;}this.node.parentNode[aH](this.node);var d=this.paper;d.top!=this&&W(this,d);return this;};au[aU].toBack=function(){if(this.removed){return this;}if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);k(this,this.paper);var d=this.paper;}return this;};au[aU].insertAfter=function(e){if(this.removed){return this;}var d=this.paper,i=e.node;if(i.nextSibling){i.parentNode.insertBefore(this.node,i.nextSibling);}else{i.parentNode[aH](this.node);}A(this,e,this.paper);return this;};au[aU].insertBefore=function(d){if(this.removed){return this;}var e=d.node;e.parentNode.insertBefore(this.node,e);an(this,d,this.paper);return this;};var N=function(e,d,S,R){d=M(d);S=M(S);var E=aF("circle");e.canvas&&e.canvas[aH](E);var i=new au(E,e);i.attrs={cx:d,cy:S,r:R,fill:"none",stroke:"#000"};i.type="circle";aF(E,i.attrs);return i;};var aB=function(i,d,aX,e,S,aW){d=M(d);aX=M(aX);var R=aF("rect");i.canvas&&i.canvas[aH](R);var E=new au(R,i);E.attrs={x:d,y:aX,width:e,height:S,r:aW||0,rx:aW||0,ry:aW||0,fill:"none",stroke:"#000"};E.type="rect";aF(R,E.attrs);return E;};var ag=function(e,d,aW,S,R){d=M(d);aW=M(aW);var E=aF("ellipse");e.canvas&&e.canvas[aH](E);var i=new au(E,e);i.attrs={cx:d,cy:aW,rx:S,ry:R,fill:"none",stroke:"#000"};i.type="ellipse";aF(E,i.attrs);return i;};var o=function(i,aW,d,aX,e,S){var R=aF("image");aF(R,{x:d,y:aX,width:e,height:S,preserveAspectRatio:"none"});R.setAttributeNS(i.xlink,"href",aW);i.canvas&&i.canvas[aH](R);var E=new au(R,i);E.attrs={x:d,y:aX,width:e,height:S,src:aW};E.type="image";return E;};var V=function(e,d,S,R){var E=aF("text");aF(E,{x:d,y:S,"text-anchor":"middle"});e.canvas&&e.canvas[aH](E);var i=new au(E,e);i.attrs={x:d,y:S,"text-anchor":"middle",text:R,font:j.font,stroke:"none",fill:"#000"};i.type="text";Y(i,i.attrs);return i;};var aR=function(e,d){this.width=e||this.width;this.height=d||this.height;this.canvas[v]("width",this.width);this.canvas[v]("height",this.height);return this;};var w=function(){var E=am[aS](null,arguments),i=E&&E.container,e=E.x,aW=E.y,R=E.width,d=E.height;if(!i){throw new Error("SVG container not found.");}var S=aF("svg");R=R||512;d=d||342;aF(S,{xmlns:"http://www.w3.org/2000/svg",version:1.1,width:R,height:d});if(i==1){S.style.cssText="position:absolute;left:"+e+"px;top:"+aW+"px";J.body[aH](S);}else{if(i.firstChild){i.insertBefore(S,i.firstChild);}else{i[aH](S);}}i=new aP;i.width=R;i.height=d;i.canvas=S;aC.call(i,i,al.fn);i.clear();return i;};aP[aU].clear=function(){var d=this.canvas;while(d.firstChild){d.removeChild(d.firstChild);}this.bottom=this.top=null;(this.desc=aF("desc"))[aH](J.createTextNode("Created with Rapha\xebl"));d[aH](this.desc);d[aH](this.defs=aF("defs"));};aP[aU].remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var d in this){this[d]=s(d);}};}if(al.vml){var aD=function(a4){var a1=/[ahqtv]/ig,aW=r;(a4+ap).match(a1)&&(aW=G);a1=/[clmz]/g;if(aW==r&&!(a4+ap).match(a1)){var e={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},R=/([clmz]),?([^clmz]*)/gi,S=/-?[^,\s-]+/g;var a0=(a4+ap)[aL](R,function(a5,a7,i){var a6=[];i[aL](S,function(a8){a6[f](M(a8));});return e[a7]+a6;});return a0;}var a2=aW(a4),E,a0=[],d;for(var aY=0,a3=a2[m];aY1&&(e=1);a3.opacity=e;}a4.fill&&(a3.on=true);if(a3.on==null||a4.fill=="none"){a3.on=false;}if(a3.on&&a4.fill){var i=a4.fill.match(c);if(i){a3.src=i[1];a3.type="tile";}else{a3.color=al.getRGB(a4.fill).hex;a3.src=ap;a3.type="solid";if(al.getRGB(a4.fill).error&&(a9.type in {circle:1,ellipse:1}||(a4.fill+ap).charAt()!="r")&&b(a9,a4.fill)){a5.fill="none";a5.gradient=a4.fill;}}}a6&&a2[aH](a3);var R=(a2.getElementsByTagName("stroke")&&a2.getElementsByTagName("stroke")[0]),a7=false;!R&&(a7=R=af("stroke"));if((a4.stroke&&a4.stroke!="none")||a4["stroke-width"]||a4["stroke-opacity"]!=null||a4["stroke-dasharray"]||a4["stroke-miterlimit"]||a4["stroke-linejoin"]||a4["stroke-linecap"]){R.on=true;}(a4.stroke=="none"||R.on==null||a4.stroke==0||a4["stroke-width"]==0)&&(R.on=false);R.on&&a4.stroke&&(R.color=al.getRGB(a4.stroke).hex);var e=((+a5["stroke-opacity"]+1||2)-1)*((+a5.opacity+1||2)-1),a0=(U(a4["stroke-width"])||1)*0.75;e<0&&(e=0);e>1&&(e=1);a4["stroke-width"]==null&&(a0=a5["stroke-width"]);a4["stroke-width"]&&(R.weight=a0);a0&&a0<1&&(e*=a0)&&(R.weight=1);R.opacity=e;a4["stroke-linejoin"]&&(R.joinstyle=a4["stroke-linejoin"]||"miter");R.miterlimit=a4["stroke-miterlimit"]||8;a4["stroke-linecap"]&&(R.endcap=a4["stroke-linecap"]=="butt"?"flat":a4["stroke-linecap"]=="square"?"square":"round");if(a4["stroke-dasharray"]){var a1={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};R.dashstyle=a1[O](a4["stroke-dasharray"])?a1[a4["stroke-dasharray"]]:ap;}a7&&a2[aH](R);}if(a9.type=="text"){var aW=a9.paper.span.style;a5.font&&(aW.font=a5.font);a5["font-family"]&&(aW.fontFamily=a5["font-family"]);a5["font-size"]&&(aW.fontSize=a5["font-size"]);a5["font-weight"]&&(aW.fontWeight=a5["font-weight"]);a5["font-style"]&&(aW.fontStyle=a5["font-style"]);a9.node.string&&(a9.paper.span.innerHTML=(a9.node.string+ap)[aL](/"));a9.W=a5.w=a9.paper.span.offsetWidth;a9.H=a5.h=a9.paper.span.offsetHeight;a9.X=a5.x;a9.Y=a5.y+M(a9.H/2);switch(a5["text-anchor"]){case"start":a9.node.style["v-text-align"]="left";a9.bbx=M(a9.W/2);break;case"end":a9.node.style["v-text-align"]="right";a9.bbx=-M(a9.W/2);break;default:a9.node.style["v-text-align"]="center";break;}}};var b=function(d,aX){d.attrs=d.attrs||{};var aY=d.attrs,a0=d.node.getElementsByTagName("fill"),S="linear",aW=".5 .5";d.attrs.gradient=aX;aX=(aX+ap)[aL](ao,function(a2,a3,i){S="radial";if(a3&&i){a3=U(a3);i=U(i);aI(a3-0.5,2)+aI(i-0.5,2)>0.25&&(i=Z.sqrt(0.25-aI(a3-0.5,2))*((i>0.5)*2-1)+0.5);aW=a3+ak+i;}return ap;});aX=aX[z](/\s*\-\s*/);if(S=="linear"){var e=aX.shift();e=-U(e);if(isNaN(e)){return null;}}var R=p(aX);if(!R){return null;}d=d.shape||d.node;a0=a0[0]||af("fill");if(R[m]){a0.on=true;a0.method="none";a0.type=(S=="radial")?"gradientradial":"gradient";a0.color=R[0].color;a0.color2=R[R[m]-1].color;var a1=[];for(var E=0,aZ=R[m];E');};}catch(ad){af=function(d){return J.createElement("<"+d+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var w=function(){var i=am[aS](null,arguments),d=i.container,aY=i.height,aZ,e=i.width,aX=i.x,aW=i.y;if(!d){throw new Error("VML container not found.");}var R=new aP,S=R.canvas=J.createElement("div"),E=S.style;e=e||512;aY=aY||342;e==+e&&(e+="px");aY==+aY&&(aY+="px");R.width=1000;R.height=1000;R.coordsize="1000 1000";R.coordorigin="0 0";R.span=J.createElement("span");R.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";S[aH](R.span);E.cssText=al.format("width:{0};height:{1};position:absolute;clip:rect(0 {0} {1} 0);overflow:hidden",e,aY);if(d==1){J.body[aH](S);E.left=aX+"px";E.top=aW+"px";}else{d.style.width=e;d.style.height=aY;if(d.firstChild){d.insertBefore(S,d.firstChild);}else{d[aH](S);}}aC.call(R,R,al.fn);return R;};aP[aU].clear=function(){this.canvas.innerHTML=ap;this.span=J.createElement("span");this.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";this.canvas[aH](this.span);this.bottom=this.top=null;};aP[aU].remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var d in this){this[d]=s(d);}};}if((/^Apple|^Google/).test(navigator.vendor)&&!(navigator.userAgent.indexOf("Version/4.0")+1)){aP[aU].safari=function(){var d=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){d.remove();});};}else{aP[aU].safari=function(){};}var ac=(function(){if(J.addEventListener){return function(R,i,e,d){var E=function(S){return e.call(d,S);};R.addEventListener(i,E,false);return function(){R.removeEventListener(i,E,false);return true;};};}else{if(J.attachEvent){return function(S,E,i,e){var R=function(aW){return i.call(e,aW||aq.event);};S.attachEvent("on"+E,R);var d=function(){S.detachEvent("on"+E,R);return true;};return d;};}}})();for(var aa=D[m];aa--;){(function(d){au[aU][d]=function(e){if(al.is(e,"function")){this.events=this.events||[];this.events.push({name:d,f:e,unbind:ac(this.shape||this.node,d,e,this)});}return this;};au[aU]["un"+d]=function(E){var i=this.events,e=i[m];while(e--){if(i[e].name==d&&i[e].f==E){i[e].unbind();i.splice(e,1);!i.length&&delete this.events;return this;}}return this;};})(D[aa]);}au[aU].hover=function(e,d){return this.mouseover(e).mouseout(d);};au[aU].unhover=function(e,d){return this.unmouseover(e).unmouseout(d);};aP[aU].circle=function(d,i,e){return N(this,d||0,i||0,e||0);};aP[aU].rect=function(d,R,e,i,E){return aB(this,d||0,R||0,e||0,i||0,E||0);};aP[aU].ellipse=function(d,E,i,e){return ag(this,d||0,E||0,i||0,e||0);};aP[aU].path=function(d){d&&!al.is(d,"string")&&!al.is(d[0],"array")&&(d+=ap);return q(al.format[aS](al,arguments),this);};aP[aU].image=function(E,d,R,e,i){return o(this,E||"about:blank",d||0,R||0,e||0,i||0);};aP[aU].text=function(d,i,e){return V(this,d||0,i||0,e||ap);};aP[aU].set=function(d){arguments[m]>1&&(d=Array[aU].splice.call(arguments,0,arguments[m]));return new P(d);};aP[aU].setSize=aR;aP[aU].top=aP[aU].bottom=null;aP[aU].raphael=al;function u(){return this.x+ak+this.y;}au[aU].scale=function(a2,a1,E,e){if(a2==null&&a1==null){return{x:this._.sx,y:this._.sy,toString:u};}a1=a1||a2;!+a1&&(a1=a2);var a6,a4,a5,a3,bi=this.attrs;if(a2!=0){var a0=this.getBBox(),aX=a0.x+a0.width/2,R=a0.y+a0.height/2,bh=a2/this._.sx,bg=a1/this._.sy;E=(+E||E==0)?E:aX;e=(+e||e==0)?e:R;var aZ=~~(a2/Z.abs(a2)),aW=~~(a1/Z.abs(a1)),a8=this.node.style,bk=E+(aX-E)*bh,bj=e+(R-e)*bg;switch(this.type){case"rect":case"image":var aY=bi.width*aZ*bh,bc=bi.height*aW*bg;this.attr({height:newh,r:bi.r*aE(aZ*bh,aW*bg),width:aY,x:bk-aY/2,y:bj-newh/2});break;case"circle":case"ellipse":this.attr({rx:bi.rx*aZ*bh,ry:bi.ry*aW*bg,r:bi.r*aE(aZ*bh,aW*bg),cx:bk,cy:bj});break;case"path":var ba=ab(bi.path),bd=true;for(var bf=0,a7=ba[m];bfE){return al.findDotsAtSegment(aY,aX,e[1],e[2],e[3],e[4],e[5],e[6],(E-aW)/R);}aW+=R;aY=+e[5];aX=+e[6];}}return d?aW:al.findDotsAtSegment(aY,aX,e[1],e[2],e[3],e[4],e[5],e[6],1);};},n=function(E,d,aW,S,a2,a1,a0,aZ){var R={x:0,y:0},aY=0;for(var aX=0;aX<1.01;aX+=0.01){var e=K(E,d,aW,S,a2,a1,a0,aZ,aX);aX&&(aY+=Z.sqrt(aI(R.x-e.x,2)+aI(R.y-e.y,2)));R=e;}return aY;};au[aU].getTotalLength=ax(1);au[aU].getPointAtLength=ax();al.easing_formulas={linear:function(d){return d;},"<":function(d){return aI(d,3);},">":function(d){return aI(d-1,3)+1;},"<>":function(d){d=d*2;if(d<1){return aI(d,3)/2;}d-=2;return(aI(d,3)+2)/2;},backIn:function(e){var d=1.70158;return e*e*((d+1)*e-d);},backOut:function(e){e=e-1;var d=1.70158;return e*e*((d+1)*e+d)+1;},elastic:function(i){if(i==0||i==1){return i;}var e=0.3,d=e/4;return aI(2,-10*i)*Z.sin((i-d)*(2*Z.PI)/e)+1;},bounce:function(E){var e=7.5625,i=2.75,d;if(E<(1/i)){d=e*E*E;}else{if(E<(2/i)){E-=(1.5/i);d=e*E*E+0.75;}else{if(E<(2.5/i)){E-=(2.25/i);d=e*E*E+0.9375;}else{E-=(2.625/i);d=e*E*E+0.984375;}}}return d;}};var H={length:0},aN=function(){var aY=+new Date;for(var a9 in H){if(a9!="length"&&H[O](a9)){var be=H[a9];if(be.stop){delete H[a9];H[m]--;continue;}var aW=aY-be.start,a7=be.ms,a6=be.easing,ba=be.from,a3=be.diff,E=be.to,a2=be.t,a5=be.prev||0,aX=be.el,R=be.callback,a4={},d;if(aW255?255:(d<0?0:d);},t=function(d,i){if(d==null){return{x:this._.tx,y:this._.ty,toString:u};}this._.tx+=+d;this._.ty+=+i;switch(this.type){case"circle":case"ellipse":this.attr({cx:+d+this.attrs.cx,cy:+i+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+d+this.attrs.x,y:+i+this.attrs.y});break;case"path":var e=ab(this.attrs.path);e[0][1]+=+d;e[0][2]+=+i;this.attr({path:e});break;}return this;};au[aU].animateWith=function(e,i,d,R,E){H[e.id]&&(i.start=H[e.id].start);return this.animate(i,d,R,E);};au[aU].onAnimation=function(d){this._run=d||null;return this;};au[aU].animate=function(R,d,a1,a7){if(al.is(a1,"function")||!a1){a7=a1||null;}var a2={},a3={},a4={};for(var a0 in R){if(R[O](a0)){if(X[O](a0)){a2[a0]=this.attr(a0);(a2[a0]==null)&&(a2[a0]=j[a0]);a3[a0]=R[a0];switch(X[a0]){case"number":a4[a0]=(a3[a0]-a2[a0])/d;break;case"colour":a2[a0]=al.getRGB(a2[a0]);var aY=al.getRGB(a3[a0]);a4[a0]={r:(aY.r-a2[a0].r)/d,g:(aY.g-a2[a0].g)/d,b:(aY.b-a2[a0].b)/d};break;case"path":var e=G(a2[a0],a3[a0]);a2[a0]=e[0];var E=e[1];a4[a0]=[];for(var aX=0,a6=a2[a0][m];aX _120) { + if (math.abs(df) > _120) { var f2old = f2, x2old = x2, y2old = y2; @@ -650,8 +650,8 @@ window.Raphael = (function () { y = [p1y, p2y], x = [p1x, p2x], dot; - abs(t1) > 1e12 && (t1 = .5); - abs(t2) > 1e12 && (t2 = .5); + math.abs(t1) > 1e12 && (t1 = .5); + math.abs(t2) > 1e12 && (t2 = .5); if (t1 > 0 && t1 < 1) { dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1); x[push](dot.x); @@ -667,8 +667,8 @@ window.Raphael = (function () { c = p1y - c1y; t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a; t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a; - abs(t1) > 1e12 && (t1 = .5); - abs(t2) > 1e12 && (t2 = .5); + math.abs(t1) > 1e12 && (t1 = .5); + math.abs(t2) > 1e12 && (t2 = .5); if (t1 > 0 && t1 < 1) { dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1); x[push](dot.x); @@ -907,7 +907,7 @@ window.Raphael = (function () { }; }, radial_gradient = /^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/; - + // SVG if (R.svg) { Paper[proto].svgns = "http://www.w3.org/2000/svg"; @@ -973,7 +973,7 @@ window.Raphael = (function () { return null; } var vector = [0, 0, math.cos(angle * math.PI / 180), math.sin(angle * math.PI / 180)], - max = 1 / (mmax(abs(vector[2]), abs(vector[3])) || 1); + max = 1 / (mmax(math.abs(vector[2]), math.abs(vector[3])) || 1); vector[2] *= max; vector[3] *= max; if (vector[2] < 0) { @@ -1201,7 +1201,7 @@ window.Raphael = (function () { $(ig, {x: 0, y: 0}); ig.setAttributeNS(o.paper.xlink, "href", isURL[1]); el[appendChild](ig); - + var img = doc.createElement("img"); img.style.cssText = "position:absolute;left:-9999em;top-9999em"; img.onload = function () { @@ -1276,7 +1276,7 @@ window.Raphael = (function () { var a = el.attrs, node = el.node, fontSize = node.firstChild ? toInt(doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue("font-size"), 10) : 10; - + if (params[has]("text")) { a.text = params.text; while (node.firstChild) { @@ -1498,19 +1498,19 @@ window.Raphael = (function () { insertbefore(this, element, this.paper); return this; }; - Element[proto].getTotalLength = function () { - if (this.type != "path") { - return -1; - } - return this.node.getTotalLength(); - }; - Element[proto].getPointAtLength = function (length) { - if (this.type != "path") { - return -1; - } - var point = this.node.getPointAtLength(length); - return {x: point.x, y: point.y}; - }; + // Element[proto].getTotalLength = function () { + // if (this.type != "path") { + // return -1; + // } + // return this.node.getTotalLength(); + // }; + // Element[proto].getPointAtLength = function (length) { + // if (this.type != "path") { + // return -1; + // } + // var point = this.node.getPointAtLength(length); + // return {x: point.x, y: point.y}; + // }; var theCircle = function (svg, x, y, r) { x = round(x); y = round(y); @@ -1625,7 +1625,7 @@ window.Raphael = (function () { } }; } - + // VML if (R.vml) { var path2vml = function (path) { @@ -1657,16 +1657,6 @@ window.Raphael = (function () { res[push](r); } return res[join](S); - }, - segmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) { - var old = {x: 0, y: 0}, - len = 0; - for (var i = 0; i < 1.01; i+=.01) { - var dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, i); - i && (len += math.sqrt(pow(old.x - dot.x, 2) + pow(old.y - dot.y, 2))); - old = dot; - } - return len; }; R[toString] = function () { @@ -1858,7 +1848,7 @@ window.Raphael = (function () { res.H = a.h = res.paper.span.offsetHeight; res.X = a.x; res.Y = a.y + round(res.H / 2); - + // text-anchor emulationm switch (a["text-anchor"]) { case "start": @@ -2225,34 +2215,7 @@ window.Raphael = (function () { insertbefore(this, element, this.paper); return this; }; - var getLengthFactory = function (istotal) { - return function (length) { - if (this.type != "path") { - return -1; - } - var path = path2curve(this.attrs.path), x, y, p, l, - len = 0; - for (var i = 0, ii = path.length; i < ii; i++) { - p = path[i]; - if (p[0] == "M") { - x = +p[1]; - y = +p[2]; - } else { - l = segmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]); - if (!istotal && len + l > length) { - return findDotAtSegment(x, y, p[1], p[2], p[3], p[4], p[5], p[6], (length - len) / l); - } - len += l; - x = +p[5]; - y = +p[6]; - } - } - return istotal ? len : {x: x, y: y}; - }; - }; - Element[proto].getTotalLength = getLengthFactory(1); - Element[proto].getPointAtLength = getLengthFactory(); - + var theCircle = function (vml, x, y, r) { var g = createNode("group"), o = createNode("oval"), @@ -2437,7 +2400,7 @@ window.Raphael = (function () { } }; } - + // rest // Safari or Chrome (WebKit) rendering bug workaround method if ((/^Apple|^Google/).test(navigator.vendor) && !(navigator.userAgent.indexOf("Version/4.0") + 1)) { @@ -2448,7 +2411,7 @@ window.Raphael = (function () { } else { Paper[proto].safari = function () {}; } - + // Events var addEvent = (function () { if (doc.addEventListener) { @@ -2552,25 +2515,23 @@ window.Raphael = (function () { var bb = this.getBBox(), rcx = bb.x + bb.width / 2, rcy = bb.y + bb.height / 2, - kx = abs(x / this._.sx), - ky = abs(y / this._.sy); + kx = x / this._.sx, + ky = y / this._.sy; cx = (+cx || cx == 0) ? cx : rcx; cy = (+cy || cy == 0) ? cy : rcy; - var dirx = ~~(x / abs(x)), - diry = ~~(y / abs(y)), - dkx = kx * dirx, - dky = ky * diry, + var dirx = ~~(x / math.abs(x)), + diry = ~~(y / math.abs(y)), s = this.node.style, - ncx = cx - abs(rcx - cx) * dkx, - ncy = cy - abs(rcy - cy) * dky; + ncx = cx + (rcx - cx) * kx, + ncy = cy + (rcy - cy) * ky; switch (this.type) { case "rect": case "image": - var neww = a.width * kx, - newh = a.height * ky; + var neww = a.width * dirx * kx, + hewh = a.height * diry * ky; this.attr({ height: newh, - r: a.r * mmin(kx, ky), + r: a.r * mmin(dirx * kx, diry * ky), width: neww, x: ncx - neww / 2, y: ncy - newh / 2 @@ -2579,9 +2540,9 @@ window.Raphael = (function () { case "circle": case "ellipse": this.attr({ - rx: a.rx * kx, - ry: a.ry * ky, - r: a.r * mmin(kx, ky), + rx: a.rx * dirx * kx, + ry: a.ry * diry * ky, + r: a.r * mmin(dirx * kx, diry * ky), cx: ncx, cy: ncy }); @@ -2599,22 +2560,22 @@ window.Raphael = (function () { skip = false; } if (P0 == "A") { - p[path[i][length] - 2] = abs(p[path[i][length] - 2]) * dkx; - p[path[i][length] - 1] = abs(p[path[i][length] - 1]) * dky; - p[1] *= kx; - p[2] *= ky; - p[5] = +(dirx + diry ? !+p[4] : !!+p[4]); + p[path[i][length] - 2] *= kx; + p[path[i][length] - 1] *= ky; + p[1] *= dirx * kx; + p[2] *= diry * ky; + p[5] = +(dirx + diry ? !!+p[5] : !+p[5]); } else if (P0 == "H") { for (j = 1, jj = p[length]; j < jj; j++) { - p[j] = abs(p[j]) * dkx; + p[j] *= kx; } } else if (P0 == "V") { for (j = 1, jj = p[length]; j < jj; j++) { - p[j] = abs(p[j]) * dky; + p[j] *= ky; } } else { for (j = 1, jj = p[length]; j < jj; j++) { - p[j] = abs(p[j]) * ( (j % 2) ? dkx : dky ); + p[j] *= (j % 2) ? kx : ky; } } } @@ -2664,6 +2625,43 @@ window.Raphael = (function () { delete attr.translation; return this.paper[this.type]().attr(attr); }; + var getLengthFactory = function (istotal) { + return function (length) { + if (this.type != "path") { + return -1; + } + var path = path2curve(this.attrs.path), x, y, p, l, + len = 0; + for (var i = 0, ii = path.length; i < ii; i++) { + p = path[i]; + if (p[0] == "M") { + x = +p[1]; + y = +p[2]; + } else { + l = segmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]); + if (!istotal && len + l > length) { + return R.findDotsAtSegment(x, y, p[1], p[2], p[3], p[4], p[5], p[6], (length - len) / l); + } + len += l; + x = +p[5]; + y = +p[6]; + } + } + return istotal ? len : R.findDotsAtSegment(x, y, p[1], p[2], p[3], p[4], p[5], p[6], 1); + }; + }, + segmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) { + var old = {x: 0, y: 0}, + len = 0; + for (var i = 0; i < 1.01; i+=.01) { + var dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, i); + i && (len += math.sqrt(pow(old.x - dot.x, 2) + pow(old.y - dot.y, 2))); + old = dot; + } + return len; + }; + Element[proto].getTotalLength = getLengthFactory(1); + Element[proto].getPointAtLength = getLengthFactory(); // animation easing formulas R.easing_formulas = { @@ -2724,7 +2722,7 @@ window.Raphael = (function () { return l; } }; - + var animationElements = {length : 0}, animation = function () { var Now = +new Date; @@ -2947,7 +2945,7 @@ window.Raphael = (function () { return "Rapha\xebl\u2019s object"; }; R.ae = animationElements; - + // Set var Set = function (items) { this.items = []; @@ -3043,7 +3041,7 @@ window.Raphael = (function () { height: mmax[apply](0, h) - y }; }; - + R.registerFont = function (font) { if (!font.face) { return font; @@ -3131,7 +3129,7 @@ window.Raphael = (function () { } return out; }; - + R.format = function (token) { var args = R.is(arguments[1], "array") ? [0][concat](arguments[1]) : arguments, rg = /\{(\d+)\}/g;