1.2.2
authorDmitry Baranovskiy <dbaranovskiy@Fresh-Air.sydney.atlassian.com>
Sun, 22 Nov 2009 23:01:23 +0000 (10:01 +1100)
committerDmitry Baranovskiy <dbaranovskiy@Fresh-Air.sydney.atlassian.com>
Sun, 22 Nov 2009 23:01:23 +0000 (10:01 +1100)
IE performance increased twice (at least)
Rotation bug fix
Lots of bug fixes

raphael-min.js
raphael.js

index b81c9f7..833a110 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * Raphael 1.2.1 - JavaScript Vector Library
+ * Raphael 1.2.2 - JavaScript Vector Library
  *
  * 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=/[, ]+/,z=document,ab=window,h={was:"Raphael" in ab,is:ab.Raphael},Y=function(){if(Y.is(arguments[0],"array")){var e=arguments[0],E=p[ax](Y,e.splice(0,3+Y.is(e[0],W))),aA=E.set();for(var S=0,aB=e[j];S<aB;S++){var R=e[S]||{};({circle:1,rect:1,path:1,ellipse:1,text:1,image:1}[F](R.type))&&aA[c](E[R.type]().attr(R));}return aA;}return p[ax](Y,arguments);},ar={},u=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"],aa="",X=" ",F="hasOwnProperty",az="prototype",o="setAttribute",ao="appendChild",ax="apply",j="length",ae="join",r="split",au="concat",c="push",J=parseFloat,v=parseInt,ap=Math.pow,al=Math.min,d=Math.max,C=Math.round,av=/^(?=[\da-f]$)/,W="number",af="toString",g={"clip-rect":"0 0 10e9 10e9",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/",opacity:1,path:"M0,0",r:0,rotation:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",translation:"0 0",width:0,x:0,y:0},L={"clip-rect":"csv",cx:W,cy:W,fill:"colour","fill-opacity":W,"font-size":W,height:W,opacity:W,path:"path",r:W,rotation:"csv",rx:W,ry:W,scale:"csv",stroke:"colour","stroke-opacity":W,"stroke-width":W,translation:"csv",width:W,x:W,y:W},aq="replace";Y.version="1.2.1";Y.type=(ab.SVGAngle||z.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");Y.svg=!(Y.vml=Y.type=="VML");Y._id=0;Y._oid=0;Y.fn={};Y.is=function(i,e){e=(e+aa).toLowerCase();return((e=="object"||e=="undefined")&&typeof i==e)||(i==null&&e=="null")||Object[az][af].call(i)[aq](/^\[object\s+|\]$/gi,aa).toLowerCase()==e;};Y.setWindow=function(e){ab=e;z=ab.document;};var ah=function(e){if(Y.vml){ah=V(function(S){var aA;try{var i=new ActiveXObject("htmlfile");i.write("<body>");i.close();aA=i.body;}catch(aC){aA=createPopup().document.body;}var R=aA.createTextRange();aA.style.color=S;var aB=R.queryCommandValue("ForeColor");aB=((aB&255)<<16)|(aB&65280)|((aB&16711680)>>>16);return"#"+("000000"+aB[af](16)).slice(-6);});}else{var E=z.createElement("i");E.className="Rapha\u00ebl colour picker";E.style.cssText="display:none";z.body[ao](E);ah=V(function(i){E.style.color=i;return z.defaultView.getComputedStyle(E,aa).getPropertyValue("color");});}return ah(e);};Y.hsb2rgb=V(function(aE,aC,aI){if(Y.is(aE,"object")&&"h" in aE&&"s" in aE&&"b" in aE){aI=aE.b;aC=aE.s;aE=aE.h;}var S,aA,aJ;if(aI==0){return{r:0,g:0,b:0,hex:"#000"};}if(aE>1||aC>1||aI>1){aE/=255;aC/=255;aI/=255;}var aB=~~(aE*6),aF=(aE*6)-aB,R=aI*(1-aC),E=aI*(1-(aC*aF)),aK=aI*(1-(aC*(1-aF)));S=[aI,E,R,R,aK,aI,aI][aB];aA=[aK,aI,aI,E,R,R,aK][aB];aJ=[R,R,aK,aI,aI,E,R][aB];S*=255;aA*=255;aJ*=255;var aG={r:S,g:aA,b:aJ},e=(~~S)[af](16),aD=(~~aA)[af](16),aH=(~~aJ)[af](16);e=e[aq](av,"0");aD=aD[aq](av,"0");aH=aH[aq](av,"0");aG.hex="#"+e+aD+aH;return aG;},Y);Y.rgb2hsb=V(function(e,i,aC){if(Y.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){aC=e.b;i=e.g;e=e.r;}if(Y.is(e,"string")){var aE=Y.getRGB(e);e=aE.r;i=aE.g;aC=aE.b;}if(e>1||i>1||aC>1){e/=255;i/=255;aC/=255;}var aB=d(e,i,aC),E=al(e,i,aC),S,R,aA=aB;if(E==aB){return{h:0,s:0,b:aB};}else{var aD=(aB-E);R=aD/aB;if(e==aB){S=(i-aC)/aD;}else{if(i==aB){S=2+((aC-e)/aD);}else{S=4+((e-i)/aD);}}S/=6;S<0&&S++;S>1&&S--;}return{h:S,s:R,b:aA};},Y);Y._path2string=function(){var R=aa,aB;for(var E=0,S=this[j];E<S;E++){for(var e=0,aA=this[E][j];e<aA;e++){R+=this[E][e];e&&e!=aA-1&&(R+=",");}E!=S-1&&(R+=X);}return R[aq](/,(?=-)/g,aa);};function V(R,i,e){function E(){var S=Array[az].splice.call(arguments,0,arguments[j]),aB=S[ae]("\u25ba"),aA=E.cache=E.cache||{},aC=E.count=E.count||[];if(aA[F](aB)){return e?e(aA[aB]):aA[aB];}aC[j]>=1000&&delete aA[aC.shift()];aC[c](aB);aA[aB]=R[ax](i,S);return e?e(aA[aB]):aA[aB];}return E;}Y.getRGB=V(function(e){if(!e||!!((e+aa).indexOf("-")+1)){return{r:-1,g:-1,b:-1,hex:"none",error:1};}e=e+aa;if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}!(({hs:1,rg:1}[F](e.substring(0,2))))&&(e=ah(e));var aA,E,R,aD,aB=e.match(/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgb\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|rgb\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i);if(aB){if(aB[2]){aD=v(aB[2].substring(5),16);R=v(aB[2].substring(3,5),16);E=v(aB[2].substring(1,3),16);}if(aB[3]){aD=v(aB[3].substring(3)+aB[3].substring(3),16);R=v(aB[3].substring(2,3)+aB[3].substring(2,3),16);E=v(aB[3].substring(1,2)+aB[3].substring(1,2),16);}if(aB[4]){aB=aB[4][r](/\s*,\s*/);E=J(aB[0]);R=J(aB[1]);aD=J(aB[2]);}if(aB[5]){aB=aB[5][r](/\s*,\s*/);E=J(aB[0])*2.55;R=J(aB[1])*2.55;aD=J(aB[2])*2.55;}if(aB[6]){aB=aB[6][r](/\s*,\s*/);E=J(aB[0]);R=J(aB[1]);aD=J(aB[2]);return Y.hsb2rgb(E,R,aD);}if(aB[7]){aB=aB[7][r](/\s*,\s*/);E=J(aB[0])*2.55;R=J(aB[1])*2.55;aD=J(aB[2])*2.55;return Y.hsb2rgb(E,R,aD);}aB={r:E,g:R,b:aD};var i=(~~E)[af](16),S=(~~R)[af](16),aC=(~~aD)[af](16);i=i[aq](av,"0");S=S[aq](av,"0");aC=aC[aq](av,"0");aB.hex="#"+i+S+aC;return aB;}return{r:-1,g:-1,b:-1,hex:"none",error:1};},Y);Y.getColor=function(i){var E=this.getColor.start=this.getColor.start||{h:0,s:1,b:i||0.75},e=this.hsb2rgb(E.h,E.s,E.b);E.h+=0.075;if(E.h>1){E.h=0;E.s-=0.2;E.s<=0&&(this.getColor.start={h:0,s:1,b:E.b});}return e.hex;};Y.getColor.reset=function(){delete this.start;};Y.parsePathString=V(function(e){if(!e){return null;}var E={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=[];if(Y.is(e,"array")&&Y.is(e[0],"array")){i=ac(e);}if(!i[j]){(e+aa)[aq](/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(S,R,aC){var aB=[],aA=R.toLowerCase();aC[aq](/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(aE,aD){aD&&aB[c](+aD);});while(aB[j]>=E[aA]){i[c]([R][au](aB.splice(0,E[aA])));if(!E[aA]){break;}}});}i[af]=Y._path2string;return i;});var H=V(function(aF){if(!aF){return{x:0,y:0,width:0,height:0};}aF=w(aF);var aC=0,aB=0,R=[],E=[];for(var S=0,aE=aF[j];S<aE;S++){if(aF[S][0]=="M"){aC=aF[S][1];aB=aF[S][2];R[c](aC);E[c](aB);}else{var aA=ag(aC,aB,aF[S][1],aF[S][2],aF[S][3],aF[S][4],aF[S][5],aF[S][6]);R=R[au](aA.min.x,aA.max.x);E=E[au](aA.min.y,aA.max.y);}}var e=al[ax](0,R),aD=al[ax](0,E);return{x:e,y:aD,width:d[ax](0,R)-e,height:d[ax](0,E)-aD};}),ac=function(aB){var R=[];if(!Y.is(aB,"array")||!Y.is(aB&&aB[0],"array")){aB=Y.parsePathString(aB);}for(var E=0,S=aB[j];E<S;E++){R[E]=[];for(var e=0,aA=aB[E][j];e<aA;e++){R[E][e]=aB[E][e];}}R[af]=Y._path2string;return R;},O=V(function(S){if(!Y.is(S,"array")||!Y.is(S&&S[0],"array")){S=Y.parsePathString(S);}var aF=[],aH=0,aG=0,aK=0,aJ=0,R=0;if(S[0][0]=="M"){aH=S[0][1];aG=S[0][2];aK=aH;aJ=aG;R++;aF[c](["M",aH,aG]);}for(var aC=R,aL=S[j];aC<aL;aC++){var e=aF[aC]=[],aI=S[aC];if(aI[0]!=aI[0].toLowerCase()){e[0]=aI[0].toLowerCase();switch(e[0]){case"a":e[1]=aI[1];e[2]=aI[2];e[3]=aI[3];e[4]=aI[4];e[5]=aI[5];e[6]=+(aI[6]-aH).toFixed(3);e[7]=+(aI[7]-aG).toFixed(3);break;case"v":e[1]=+(aI[1]-aG).toFixed(3);break;case"m":aK=aI[1];aJ=aI[2];default:for(var aB=1,aD=aI[j];aB<aD;aB++){e[aB]=+(aI[aB]-((aB%2)?aH:aG)).toFixed(3);}}}else{e=aF[aC]=[];if(aI[0]=="m"){aK=aI[1]+aH;aJ=aI[2]+aG;}for(var aA=0,E=aI[j];aA<E;aA++){aF[aC][aA]=aI[aA];}}var aE=aF[aC][j];switch(aF[aC][0]){case"z":aH=aK;aG=aJ;break;case"h":aH+=+aF[aC][aE-1];break;case"v":aG+=+aF[aC][aE-1];break;default:aH+=+aF[aC][aE-2];aG+=+aF[aC][aE-1];}}aF[af]=Y._path2string;return aF;},0,ac),n=V(function(S){if(!Y.is(S,"array")||!Y.is(S&&S[0],"array")){S=Y.parsePathString(S);}var aE=[],aG=0,aF=0,aJ=0,aI=0,R=0;if(S[0][0]=="M"){aG=+S[0][1];aF=+S[0][2];aJ=aG;aI=aF;R++;aE[0]=["M",aG,aF];}for(var aC=R,aK=S[j];aC<aK;aC++){var e=aE[aC]=[],aH=S[aC];if(aH[0]!=(aH[0]+aa).toUpperCase()){e[0]=(aH[0]+aa).toUpperCase();switch(e[0]){case"A":e[1]=aH[1];e[2]=aH[2];e[3]=aH[3];e[4]=aH[4];e[5]=aH[5];e[6]=+(aH[6]+aG);e[7]=+(aH[7]+aF);break;case"V":e[1]=+aH[1]+aF;break;case"H":e[1]=+aH[1]+aG;break;case"M":aJ=+aH[1]+aG;aI=+aH[2]+aF;default:for(var aB=1,aD=aH[j];aB<aD;aB++){e[aB]=+aH[aB]+((aB%2)?aG:aF);}}}else{for(var aA=0,E=aH[j];aA<E;aA++){aE[aC][aA]=aH[aA];}}switch(e[0]){case"Z":aG=aJ;aF=aI;break;case"H":aG=e[1];break;case"V":aF=e[1];break;default:aG=aE[aC][aE[aC][j]-2];aF=aE[aC][aE[aC][j]-1];}}aE[af]=Y._path2string;return aE;},null,ac),ay=function(i,R,e,E){return[i,R,e,E,e,E];},an=function(i,R,aB,S,e,E){var aA=1/3,aC=2/3;return[aA*i+aC*aB,aA*R+aC*S,aA*e+aC*aB,aA*E+aC*S,e,E];},y=function(aK,be,aT,aR,aL,aF,aA,aJ,bd,aM){var S=Math.PI,aQ=S*120/180,e=S/180*(+aL||0),aX=[],aU,ba=V(function(bf,bi,i){var bh=bf*Math.cos(i)-bi*Math.sin(i),bg=bf*Math.sin(i)+bi*Math.cos(i);return{x:bh,y:bg};});if(!aM){aU=ba(aK,be,-e);aK=aU.x;be=aU.y;aU=ba(aJ,bd,-e);aJ=aU.x;bd=aU.y;var E=Math.cos(S/180*aL),aH=Math.sin(S/180*aL),aZ=(aK-aJ)/2,aY=(be-bd)/2;aT=d(aT,Math.abs(aZ));aR=d(aR,Math.abs(aY));var R=aT*aT,a2=aR*aR,a4=(aF==aA?-1:1)*Math.sqrt(Math.abs((R*a2-R*aY*aY-a2*aZ*aZ)/(R*aY*aY+a2*aZ*aZ))),aO=a4*aT*aY/aR+(aK+aJ)/2,aN=a4*-aR*aZ/aT+(be+bd)/2,aE=Math.asin((be-aN)/aR),aD=Math.asin((bd-aN)/aR);aE=aK<aO?S-aE:aE;aD=aJ<aO?S-aD:aD;aE<0&&(aE=S*2+aE);aD<0&&(aD=S*2+aD);if(aA&&aE>aD){aE=aE-S*2;}if(!aA&&aD>aE){aD=aD-S*2;}}else{aE=aM[0];aD=aM[1];aO=aM[2];aN=aM[3];}var aI=aD-aE;if(Math.abs(aI)>aQ){var aP=aD,aS=aJ,aG=bd;aD=aE+aQ*(aA&&aD>aE?1:-1);aJ=aO+aT*Math.cos(aD);bd=aN+aR*Math.sin(aD);aX=y(aJ,bd,aT,aR,aL,0,aA,aS,aG,[aD,aP,aO,aN]);}aI=aD-aE;var aC=Math.cos(aE),bc=Math.sin(aE),aB=Math.cos(aD),bb=Math.sin(aD),a0=Math.tan(aI/4),a3=4/3*aT*a0,a1=4/3*aR*a0,a9=[aK,be],a8=[aK+a3*bc,be-a1*aC],a7=[aJ+a3*bb,bd-a1*aB],a5=[aJ,bd];a8[0]=2*a9[0]-a8[0];a8[1]=2*a9[1]-a8[1];if(aM){return[a8,a7,a5][au](aX);}else{aX=[a8,a7,a5][au](aX)[ae](",")[r](",");var aV=[];for(var a6=0,aW=aX[j];a6<aW;a6++){aV[a6]=a6%2?ba(aX[a6-1],aX[a6],e).y:ba(aX[a6],aX[a6+1],e).x;}return aV;}},A=V(function(i,e,aN,aL,aA,S,aC,aB,aH){var aF=ap(1-aH,3)*i+ap(1-aH,2)*3*aH*aN+(1-aH)*3*aH*aH*aA+ap(aH,3)*aC,aD=ap(1-aH,3)*e+ap(1-aH,2)*3*aH*aL+(1-aH)*3*aH*aH*S+ap(aH,3)*aB,aJ=i+2*aH*(aN-i)+aH*aH*(aA-2*aN+i),aI=e+2*aH*(aL-e)+aH*aH*(S-2*aL+e),aM=aN+2*aH*(aA-aN)+aH*aH*(aC-2*aA+aN),aK=aL+2*aH*(S-aL)+aH*aH*(aB-2*S+aL),aG=(1-aH)*i+aH*aN,aE=(1-aH)*e+aH*aL,R=(1-aH)*aA+aH*aC,E=(1-aH)*S+aH*aB;return{x:aF,y:aD,m:{x:aJ,y:aI},n:{x:aM,y:aK},start:{x:aG,y:aE},end:{x:R,y:E}};}),ag=V(function(i,e,R,E,aL,aK,aH,aE){var aJ=(aL-2*R+i)-(aH-2*aL+R),aG=2*(R-i)-2*(aL-R),aD=i-R,aB=(-aG+Math.sqrt(aG*aG-4*aJ*aD))/2/aJ,S=(-aG-Math.sqrt(aG*aG-4*aJ*aD))/2/aJ,aF=[e,aE],aI=[i,aH],aC=A(i,e,R,E,aL,aK,aH,aE,aB>0&&aB<1?aB:0),aA=A(i,e,R,E,aL,aK,aH,aE,S>0&&S<1?S:0);aI=aI[au](aC.x,aA.x);aF=aF[au](aC.y,aA.y);aJ=(aK-2*E+e)-(aE-2*aK+E);aG=2*(E-e)-2*(aK-E);aD=e-E;aB=(-aG+Math.sqrt(aG*aG-4*aJ*aD))/2/aJ;S=(-aG-Math.sqrt(aG*aG-4*aJ*aD))/2/aJ;aC=A(i,e,R,E,aL,aK,aH,aE,aB>0&&aB<1?aB:0);aA=A(i,e,R,E,aL,aK,aH,aE,S>0&&S<1?S:0);aI=aI[au](aC.x,aA.x);aF=aF[au](aC.y,aA.y);return{min:{x:al[ax](0,aI),y:al[ax](0,aF)},max:{x:d[ax](0,aI),y:d[ax](0,aF)}};}),w=V(function(aK,aF){var S=n(aK),aG=aF&&n(aF),aH={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},aB=function(aL,aM){var i,aN;if(!aL){return["C",aM.x,aM.y,aM.x,aM.y,aM.x,aM.y];}!(aL[0] in {T:1,Q:1})&&(aM.qx=aM.qy=null);switch(aL[0]){case"M":aM.X=aL[1];aM.Y=aL[2];break;case"A":aL=["C"][au](y[ax](0,[aM.x,aM.y][au](aL.slice(1))));break;case"S":i=aM.x+(aM.x-(aM.bx||aM.x));aN=aM.y+(aM.y-(aM.by||aM.y));aL=["C",i,aN][au](aL.slice(1));break;case"T":aM.qx=aM.x+(aM.x-(aM.qx||aM.x));aM.qy=aM.y+(aM.y-(aM.qy||aM.y));aL=["C"][au](an(aM.x,aM.y,aM.qx,aM.qy,aL[1],aL[2]));break;case"Q":aM.qx=aL[1];aM.qy=aL[2];aL=["C"][au](an(aM.x,aM.y,aL[1],aL[2],aL[3],aL[4]));break;case"L":aL=["C"][au](ay(aM.x,aM.y,aL[1],aL[2]));break;case"H":aL=["C"][au](ay(aM.x,aM.y,aL[1],aM.y));break;case"V":aL=["C"][au](ay(aM.x,aM.y,aM.x,aL[1]));break;case"Z":aL=["C"][au](ay(aM.x,aM.y,aM.X,aM.Y));break;}return aL;},E=function(aL,aM){if(aL[aM][j]>7){aL[aM].shift();var aN=aL[aM];while(aN[j]){aL.splice(aM++,0,["C"][au](aN.splice(0,6)));}aL.splice(aM,1);aI=d(S[j],aG&&aG[j]||0);}},R=function(aP,aO,aM,aL,aN){if(aP&&aO&&aP[aN][0]=="M"&&aO[aN][0]!="M"){aO.splice(aN,0,["M",aL.x,aL.y]);aM.bx=0;aM.by=0;aM.x=aP[aN][1];aM.y=aP[aN][2];aI=d(S[j],aG&&aG[j]||0);}};for(var aD=0,aI=d(S[j],aG&&aG[j]||0);aD<aI;aD++){S[aD]=aB(S[aD],aH);E(S,aD);aG&&(aG[aD]=aB(aG[aD],e));aG&&E(aG,aD);R(S,aG,aH,e,aD);R(aG,S,e,aH,aD);var aC=S[aD],aJ=aG&&aG[aD],aA=aC[j],aE=aG&&aJ[j];aH.x=aC[aA-2];aH.y=aC[aA-1];aH.bx=J(aC[aA-4])||aH.x;aH.by=J(aC[aA-3])||aH.y;e.bx=aG&&(J(aJ[aE-4])||e.x);e.by=aG&&(J(aJ[aE-3])||e.y);e.x=aG&&aJ[aE-2];e.y=aG&&aJ[aE-1];}return aG?[S,aG]:S;},null,ac),l=V(function(aE){var aD=[];for(var aA=0,aF=aE[j];aA<aF;aA++){var e={},aC=aE[aA].match(/^([^:]*):?([\d\.]*)/);e.color=Y.getRGB(aC[1]);if(e.color.error){return null;}e.color=e.color.hex;aC[2]&&(e.offset=aC[2]+"%");aD[c](e);}for(var aA=1,aF=aD[j]-1;aA<aF;aA++){if(!aD[aA].offset){var E=J(aD[aA-1].offset||0),R=0;for(var S=aA+1;S<aF;S++){if(aD[S].offset){R=aD[S].offset;break;}}if(!R){R=100;S=aF;}R=J(R);var aB=(R-E)/(S-aA+1);for(;aA<S;aA++){E+=aB;aD[aA].offset=E+"%";}}}return aD;}),Z=function(){var E,i,S,R,e;if(Y.is(arguments[0],"string")||Y.is(arguments[0],"object")){if(Y.is(arguments[0],"string")){E=z.getElementById(arguments[0]);}else{E=arguments[0];}if(E.tagName){if(arguments[1]==null){return{container:E,width:E.style.pixelWidth||E.offsetWidth,height:E.style.pixelHeight||E.offsetHeight};}else{return{container:E,width:arguments[1],height:arguments[2]};}}}else{if(Y.is(arguments[0],W)&&arguments[j]>3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},aj=function(e,E){var i=this;for(var R in E){if(E[F](R)&&!(R in e)){switch(typeof E[R]){case"function":(function(S){e[R]=e===i?S:function(){return S[ax](i,arguments);};})(E[R]);break;case"object":e[R]=e[R]||{};aj.call(this,e[R],E[R]);break;default:e[R]=E[R];break;}}}};if(Y.svg){ar.svgns="http://www.w3.org/2000/svg";ar.xlink="http://www.w3.org/1999/xlink";var C=function(e){return +e+(~~e===e)*0.5;};var I=function(aA){for(var E=0,R=aA[j];E<R;E++){if(aA[E][0].toLowerCase()!="a"){for(var e=1,S=aA[E][j];e<S;e++){aA[E][e]=C(aA[E][e]);}}else{aA[E][6]=C(aA[E][6]);aA[E][7]=C(aA[E][7]);}}return aA;};var am=function(E,e){if(e){for(var i in e){if(e[F](i)){E[o](i,e[i]);}}}else{return z.createElementNS(ar.svgns,E);}};Y[af]=function(){return"Your browser supports SVG.\nYou are running Rapha\u00ebl "+this.version;};var m=function(e,R){var i=am("path");R.canvas&&R.canvas[ao](i);var E=new ad(i,R);E.type="path";M(E,{fill:"none",stroke:"#000",path:e});return E;};var b=function(R,aI,e){var aF="linear",aC=0.5,aA=0.5,aK=R.style;aI=(aI+aa)[aq](/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(aL,i,aM){aF="radial";if(i&&aM){aC=J(i);aA=J(aM);if(ap(aC-0.5,2)+ap(aA-0.5,2)>0.25){aA=Math.sqrt(0.25-ap(aC-0.5,2))+0.5;}}return aa;});aI=aI[r](/\s*\-\s*/);if(aF=="linear"){var aB=aI.shift();aB=-J(aB);if(isNaN(aB)){return null;}var S=[0,0,Math.cos(aB*Math.PI/180),Math.sin(aB*Math.PI/180)],aH=1/(d(Math.abs(S[2]),Math.abs(S[3]))||1);S[2]*=aH;S[3]*=aH;if(S[2]<0){S[0]=-S[2];S[2]=0;}if(S[3]<0){S[1]=-S[3];S[3]=0;}}var aE=l(aI);if(!aE){return null;}var E=am(aF+"Gradient");E.id="r"+(Y._id++)[af](36);aF=="radial"?am(E,{fx:aC,fy:aA}):am(E,{x1:S[0],y1:S[1],x2:S[2],y2:S[3]});e.defs[ao](E);for(var aD=0,aJ=aE[j];aD<aJ;aD++){var aG=am("stop");am(aG,{offset:aE[aD].offset?aE[aD].offset:!aD?"0%":"100%","stop-color":aE[aD].color||"#fff"});E[ao](aG);}am(R,{fill:"url(#"+E.id+")",opacity:1,"fill-opacity":1});aK.fill=aa;aK.opacity=1;aK.fillOpacity=1;return 1;};var B=function(i){var e=i.getBBox();am(i.pattern,{patternTransform:Y.format("translate({0},{1})",e.x,e.y)});};var M=function(aG,aP){var aJ={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},aL=aG.node,aH=aG.attrs,aD=aG.rotate(),aA=function(aW,aV){aV=aJ[(aV+aa).toLowerCase()];if(aV){var aT=aW.attrs["stroke-width"]||"1",aR={round:aT,square:aT,butt:0}[aW.attrs["stroke-linecap"]||aP["stroke-linecap"]]||0,aU=[];var aS=aV[j];while(aS--){aU[aS]=aV[aS]*aT+((aS%2)?1:-1)*aR;}am(aL,{"stroke-dasharray":aU[ae](",")});}};J(aD)&&aG.rotate(0,true);for(var aK in aP){if(aP[F](aK)){if(!(aK in g)){continue;}var aI=aP[aK];aH[aK]=aI;switch(aK){case"href":case"title":case"target":var aN=aL.parentNode;if(aN.tagName.toLowerCase()!="a"){var R=am("a");aN.insertBefore(R,aL);R[ao](aL);aN=R;}aN.setAttributeNS(aG.paper.xlink,aK,aI);break;case"clip-rect":var i=(aI+aa)[r](a);if(i[j]==4){aG.clip&&aG.clip.parentNode.parentNode.removeChild(aG.clip.parentNode);var E=am("clipPath"),aM=am("rect");E.id="r"+(Y._id++)[af](36);am(aM,{x:i[0],y:i[1],width:i[2],height:i[3]});E[ao](aM);aG.paper.defs[ao](E);am(aL,{"clip-path":"url(#"+E.id+")"});aG.clip=aM;}if(!aI){var aO=z.getElementById(aL.getAttribute("clip-path")[aq](/(^url\(#|\)$)/g,aa));aO&&aO.parentNode.removeChild(aO);am(aL,{"clip-path":aa});delete aG.clip;}break;case"path":if(aI&&aG.type=="path"){aH.path=I(n(aI));am(aL,{d:aH.path});}break;case"width":aL[o](aK,aI);if(aH.fx){aK="x";aI=aH.x;}else{break;}case"x":if(aH.fx){aI=-aH.x-(aH.width||0);}case"rx":if(aK=="rx"&&aG.type=="rect"){break;}case"cx":aL[o](aK,C(aI));aG.pattern&&B(aG);break;case"height":aL[o](aK,aI);if(aH.fy){aK="y";aI=aH.y;}else{break;}case"y":if(aH.fy){aI=-aH.y-(aH.height||0);}case"ry":if(aK=="ry"&&aG.type=="rect"){break;}case"cy":aL[o](aK,C(aI));aG.pattern&&B(aG);break;case"r":if(aG.type=="rect"){am(aL,{rx:aI,ry:aI});}else{aL[o](aK,aI);}break;case"src":if(aG.type=="image"){aL.setAttributeNS(aG.paper.xlink,"href",aI);}break;case"stroke-width":aL.style.strokeWidth=aI;aL[o](aK,aI);if(aH["stroke-dasharray"]){aA(aG,aH["stroke-dasharray"]);}break;case"stroke-dasharray":aA(aG,aI);break;case"rotation":aD=aI;aG.rotate(aI,true);break;case"translation":var aB=(aI+aa)[r](a);aG.translate((+aB[0]+1||2)-1,(+aB[1]+1||2)-1);break;case"scale":var aB=(aI+aa)[r](a);aG.scale(+aB[0]||1,+aB[1]||+aB[0]||1,+aB[2]||null,+aB[3]||null);break;case"fill":var S=(aI+aa).match(/^url\(['"]?([^\)]+)['"]?\)$/i);if(S){var E=am("pattern"),aF=am("image");E.id="r"+(Y._id++)[af](36);am(E,{x:0,y:0,patternUnits:"userSpaceOnUse"});am(aF,{x:0,y:0});aF.setAttributeNS(aG.paper.xlink,"href",S[1]);E[ao](aF);var aQ=z.createElement("img");aQ.style.cssText="position:absolute;left:-9999em;top-9999em";aQ.onload=function(){am(E,{width:this.offsetWidth,height:this.offsetHeight});am(aF,{width:this.offsetWidth,height:this.offsetHeight});z.body.removeChild(this);ar.safari();};z.body[ao](aQ);aQ.src=S[1];aG.paper.defs[ao](E);aL.style.fill="url(#"+E.id+")";am(aL,{fill:"url(#"+E.id+")"});aG.pattern=E;aG.pattern&&B(aG);break;}if(!Y.getRGB(aI).error){delete aP.gradient;delete aH.gradient;if(!Y.is(aH.opacity,"undefined")&&Y.is(aP.opacity,"undefined")){aL.style.opacity=aH.opacity;am(aL,{opacity:aH.opacity});}if(!Y.is(aH["fill-opacity"],"undefined")&&Y.is(aP["fill-opacity"],"undefined")){aL.style.fillOpacity=aH["fill-opacity"];am(aL,{"fill-opacity":aH["fill-opacity"]});}}else{if((aG.type in {circle:1,ellipse:1}||(aI+aa).charAt(0)!="r")&&b(aL,aI,aG.paper)){aH.gradient=aI;aH.fill="none";break;}}case"stroke":aL.style[aK]=Y.getRGB(aI).hex;aL[o](aK,Y.getRGB(aI).hex);break;case"gradient":(aG.type in {circle:1,ellipse:1}||(aI+aa).charAt(0)!="r")&&b(aL,aI,aG.paper);break;case"opacity":case"fill-opacity":if(aH.gradient){var e=z.getElementById(aL.getAttribute("fill")[aq](/^url\(#|\)$/g,aa));if(e){var aC=e.getElementsByTagName("stop");aC[aC[j]-1][o]("stop-opacity",aI);}break;}default:aK=="font-size"&&(aI=v(aI,10)+"px");var aE=aK[aq](/(\-.)/g,function(aR){return aR.substring(1).toUpperCase();});aL.style[aE]=aI;aL[o](aK,aI);break;}}}t(aG,aP);J(aD)&&aG.rotate(aD,true);};var f=1.2;var t=function(e,S){if(e.type!="text"||!("text" in S||"font" in S||"font-size" in S||"x" in S||"y" in S)){return;}var aE=e.attrs,E=e.node,aG=E.firstChild?v(z.defaultView.getComputedStyle(E.firstChild,aa).getPropertyValue("font-size"),10):10;if("text" in S){while(E.firstChild){E.removeChild(E.firstChild);}var R=(S.text+aa)[r]("\n");for(var aA=0,aF=R[j];aA<aF;aA++){var aC=am("tspan");aA&&am(aC,{dy:aG*f,x:aE.x});aC[ao](z.createTextNode(R[aA]));E[ao](aC);}}else{var R=E.getElementsByTagName("tspan");for(var aA=0,aF=R[j];aA<aF;aA++){aA&&am(R[aA],{dy:aG*f,x:aE.x});}}am(E,{y:aE.y});var aB=e.getBBox(),aD=aE.y-(aB.y+aB.height/2);aD&&isFinite(aD)&&am(E,{y:aE.y+aD});};var ad=function(i,e){var R=0,E=0;this[0]=i;this.id=Y._oid++;this.node=i;i.raphael=this;this.paper=e;this.attrs=this.attrs||{};this.transformations=[];this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1};};ad[az].rotate=function(i,e,R){if(this.removed){return this;}if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy][ae](X);}return this._.rt.deg;}var E=this.getBBox();i=(i+aa)[r](a);if(i[j]-1){e=J(i[1]);R=J(i[2]);}i=J(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}(R==null)&&(e=null);this._.rt.cx=e;this._.rt.cy=R;e=e==null?E.x+E.width/2:e;R=R==null?E.y+E.height/2:R;if(this._.rt.deg){this.transformations[0]=Y.format("rotate({0} {1} {2})",this._.rt.deg,e,R);this.clip&&am(this.clip,{transform:Y.format("rotate({0} {1} {2})",-this._.rt.deg,e,R)});}else{this.transformations[0]=aa;this.clip&&am(this.clip,{transform:aa});}am(this.node,{transform:this.transformations[ae](X)});return this;};ad[az].hide=function(){!this.removed&&(this.node.style.display="none");return this;};ad[az].show=function(){!this.removed&&(this.node.style.display="");return this;};ad[az].remove=function(){this.node.parentNode.removeChild(this.node);for(var e in this){delete this[e];}this.removed=true;};ad[az].getBBox=function(){if(this.removed){return this;}if(this.type=="path"){return H(this.attrs.path);}if(this.node.style.display=="none"){this.show();var R=true;}var aC={};try{aC=this.node.getBBox();}catch(aA){}finally{aC=aC||{};}if(this.type=="text"){aC={x:aC.x,y:Infinity,width:0,height:0};for(var E=0,S=this.node.getNumberOfChars();E<S;E++){var aB=this.node.getExtentOfChar(E);(aB.y<aC.y)&&(aC.y=aB.y);(aB.y+aB.height-aC.y>aC.height)&&(aC.height=aB.y+aB.height-aC.y);(aB.x+aB.width-aC.x>aC.width)&&(aC.width=aB.x+aB.width-aC.x);}}R&&this.hide();return aC;};ad[az].attr=function(){if(this.removed){return this;}if(arguments[j]==1&&Y.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(arguments[j]==1&&Y.is(arguments[0],"array")){var e={};for(var i in arguments[0]){if(arguments[0][F](i)){e[arguments[0][i]]=this.attrs[arguments[0][i]];}}return e;}if(arguments[j]==2){var E={};E[arguments[0]]=arguments[1];M(this,E);}else{if(arguments[j]==1&&Y.is(arguments[0],"object")){M(this,arguments[0]);}}return this;};ad[az].toFront=function(){!this.removed&&this.node.parentNode[ao](this.node);return this;};ad[az].toBack=function(){if(this.removed){return this;}if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};ad[az].insertAfter=function(e){if(this.removed){return this;}if(e.node.nextSibling){e.node.parentNode.insertBefore(this.node,e.node.nextSibling);}else{e.node.parentNode[ao](this.node);}return this;};ad[az].insertBefore=function(e){if(this.removed){return this;}var i=e.node;i.parentNode.insertBefore(this.node,i);return this;};var D=function(i,e,aA,S){e=C(e);aA=C(aA);var R=am("circle");i.canvas&&i.canvas[ao](R);var E=new ad(R,i);E.attrs={cx:e,cy:aA,r:S,fill:"none",stroke:"#000"};E.type="circle";am(R,E.attrs);return E;};var ai=function(E,e,aC,i,aA,aB){e=C(e);aC=C(aC);var S=am("rect");E.canvas&&E.canvas[ao](S);var R=new ad(S,E);R.attrs={x:e,y:aC,width:i,height:aA,r:aB||0,rx:aB||0,ry:aB||0,fill:"none",stroke:"#000"};R.type="rect";am(S,R.attrs);return R;};var U=function(i,e,aB,aA,S){e=C(e);aB=C(aB);var R=am("ellipse");i.canvas&&i.canvas[ao](R);var E=new ad(R,i);E.attrs={cx:e,cy:aB,rx:aA,ry:S,fill:"none",stroke:"#000"};E.type="ellipse";am(R,E.attrs);return E;};var k=function(E,aB,e,aC,i,aA){var S=am("image");am(S,{x:e,y:aC,width:i,height:aA,preserveAspectRatio:"none"});S.setAttributeNS(E.xlink,"href",aB);E.canvas&&E.canvas[ao](S);var R=new ad(S,E);R.attrs={x:e,y:aC,width:i,height:aA,src:aB};R.type="image";return R;};var K=function(i,e,aA,S){var R=am("text");am(R,{x:e,y:aA,"text-anchor":"middle"});i.canvas&&i.canvas[ao](R);var E=new ad(R,i);E.attrs={x:e,y:aA,"text-anchor":"middle",text:S,font:g.font,stroke:"none",fill:"#000"};E.type="text";M(E,E.attrs);return E;};var aw=function(i,e){this.width=i||this.width;this.height=e||this.height;this.canvas[o]("width",this.width);this.canvas[o]("height",this.height);return this;};var p=function(){var R=Z[ax](null,arguments),E=R&&R.container,i=R.x,aC=R.y,S=R.width,e=R.height;if(!E){throw new Error("SVG container not found.");}ar.canvas=am("svg");var aB=ar.canvas;ar.width=S||512;ar.height=e||342;aB[o]("width",ar.width);aB[o]("height",ar.height);if(E==1){aB.style.cssText="position:absolute;left:"+i+"px;top:"+aC+"px";z.body[ao](aB);}else{if(E.firstChild){E.insertBefore(aB,E.firstChild);}else{E[ao](aB);}}E={canvas:aB};for(var aA in ar){if(ar[F](aA)){E[aA]=ar[aA];}}aj.call(E,E,Y.fn);E.clear();E.raphael=Y;return E;};ar.clear=function(){var e=this.canvas;while(e.firstChild){e.removeChild(e.firstChild);}(this.desc=am("desc"))[ao](z.createTextNode("Created with Rapha\u00ebl"));e[ao](this.desc);e[ao](this.defs=am("defs"));};ar.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var e in this){delete this[e];}};}if(Y.vml){var ak=function(aJ){var aG=/[ahqtv]/ig,aB=n;(aJ+aa).match(aG)&&(aB=w);aG=/[clmz]/g;if(aB==n&&!(aJ+aa).match(aG)){var E={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},S=/([clmz]),?([^clmz]*)/gi,aA=/-?[^,\s-]+/g;var aF=(aJ+aa)[aq](S,function(aK,aM,i){var aL=[];i[aq](aA,function(aN){aL[c](C(aN));});return E[aM]+aL;});return aF;}var aH=aB(aJ),R,aF=[],e;for(var aD=0,aI=aH[j];aD<aI;aD++){R=aH[aD];e=(aH[aD][0]+aa).toLowerCase();e=="z"&&(e="x");for(var aC=1,aE=R[j];aC<aE;aC++){e+=C(R[aC])+(aC!=aE-1?",":aa);}aF[c](e);}return aF[ae](X);};Y[af]=function(){return"Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\u00ebl "+this.version;};var m=function(e,aA){var R=T("group");R.style.cssText="position:absolute;left:0;top:0;width:"+aA.width+"px;height:"+aA.height+"px";R.coordsize=aA.coordsize;R.coordorigin=aA.coordorigin;var E=T("shape"),i=E.style;i.width=aA.width+"px";i.height=aA.height+"px";E.coordsize=this.coordsize;E.coordorigin=this.coordorigin;R[ao](E);var S=new ad(E,R,aA);S.isAbsolute=true;S.type="path";S.path=[];S.Path=aa;e&&M(S,{fill:"none",stroke:"#000",path:e});aA.canvas[ao](R);return S;};var M=function(aE,aI){aE.attrs=aE.attrs||{};var aG=aE.node,aJ=aE.attrs,aB=aG.style,R,aN=aE;for(var aC in aI){if(aI[F](aC)){aJ[aC]=aI[aC];}}aI.href&&(aG.href=aI.href);aI.title&&(aG.title=aI.title);aI.target&&(aG.target=aI.target);if(aI.path&&aE.type=="path"){aJ.path=aI.path;aG.path=ak(aJ.path);}if(aI.rotation!=null){aE.rotate(aI.rotation,true);}if(aI.translation){R=(aI.translation+aa)[r](a);aE.translate(R[0],R[1]);}if(aI.scale){R=(aI.scale+aa)[r](a);aE.scale(+R[0]||1,+R[1]||+R[0]||1,+R[2]||null,+R[3]||null);}if("clip-rect" in aI){var e=(aI["clip-rect"]+aa)[r](a);if(e[j]==4){e[2]=+e[2]+(+e[0]);e[3]=+e[3]+(+e[1]);var aD=aG.clipRect||z.createElement("div"),aM=aD.style,aA=aG.parentNode;aM.clip=Y.format("rect({1}px {2}px {3}px {0}px)",e);if(!aG.clipRect){aM.position="absolute";aM.top=0;aM.left=0;aM.width=aE.paper.width+"px";aM.height=aE.paper.height+"px";aA.parentNode.insertBefore(aD,aA);aD[ao](aA);aG.clipRect=aD;}}if(!aI["clip-rect"]){aG.clipRect&&(aG.clipRect.style.clip=aa);}}if(aE.type=="image"&&aI.src){aG.src=aI.src;}if(aE.type=="image"&&aI.opacity){aG.filterOpacity=" progid:DXImageTransform.Microsoft.Alpha(opacity="+(aI.opacity*100)+")";aB.filter=(aG.filterMatrix||aa)+(aG.filterOpacity||aa);}aI.font&&(aB.font=aI.font);aI["font-family"]&&(aB.fontFamily='"'+aI["font-family"][r](",")[0][aq](/^['"]+|['"]+$/g,aa)+'"');aI["font-size"]&&(aB.fontSize=aI["font-size"]);aI["font-weight"]&&(aB.fontWeight=aI["font-weight"]);aI["font-style"]&&(aB.fontStyle=aI["font-style"]);if(aI.opacity!=null||aI["stroke-width"]!=null||aI.fill!=null||aI.stroke!=null||aI["stroke-width"]!=null||aI["stroke-opacity"]!=null||aI["fill-opacity"]!=null||aI["stroke-dasharray"]!=null||aI["stroke-miterlimit"]!=null||aI["stroke-linejoin"]!=null||aI["stroke-linecap"]!=null){aG=aE.shape||aG;var aH=(aG.getElementsByTagName("fill")&&aG.getElementsByTagName("fill")[0]),aK=false;!aH&&(aK=aH=T("fill"));if("fill-opacity" in aI||"opacity" in aI){var i=((+aJ["fill-opacity"]+1||2)-1)*((+aJ.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);aH.opacity=i;}aI.fill&&(aH.on=true);if(aH.on==null||aI.fill=="none"){aH.on=false;}if(aH.on&&aI.fill){var E=aI.fill.match(/^url\(([^\)]+)\)$/i);if(E){aH.src=E[1];aH.type="tile";}else{aH.color=Y.getRGB(aI.fill).hex;aH.src=aa;aH.type="solid";if(Y.getRGB(aI.fill).error&&(aN.type in {circle:1,ellipse:1}||(aI.fill+aa).charAt(0)!="r")&&b(aN,aI.fill)){aJ.fill="none";aJ.gradient=aI.fill;}}}aK&&aG[ao](aH);var S=(aG.getElementsByTagName("stroke")&&aG.getElementsByTagName("stroke")[0]),aL=false;!S&&(aL=S=T("stroke"));if((aI.stroke&&aI.stroke!="none")||aI["stroke-width"]||aI["stroke-opacity"]!=null||aI["stroke-dasharray"]||aI["stroke-miterlimit"]||aI["stroke-linejoin"]||aI["stroke-linecap"]){S.on=true;}(aI.stroke=="none"||S.on==null||aI.stroke==0||aI["stroke-width"]==0)&&(S.on=false);S.on&&aI.stroke&&(S.color=Y.getRGB(aI.stroke).hex);var i=((+aJ["stroke-opacity"]+1||2)-1)*((+aJ.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);S.opacity=i;aI["stroke-linejoin"]&&(S.joinstyle=aI["stroke-linejoin"]||"miter");S.miterlimit=aI["stroke-miterlimit"]||8;aI["stroke-linecap"]&&(S.endcap={butt:"flat",square:"square",round:"round"}[aI["stroke-linecap"]]||"miter");aI["stroke-width"]&&(S.weight=(J(aI["stroke-width"])||1)*12/16);if(aI["stroke-dasharray"]){var aF={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};S.dashstyle=aF[aI["stroke-dasharray"]]||aa;}aL&&aG[ao](S);}if(aN.type=="text"){var aB=aN.paper.span.style;aJ.font&&(aB.font=aJ.font);aJ["font-family"]&&(aB.fontFamily=aJ["font-family"]);aJ["font-size"]&&(aB.fontSize=aJ["font-size"]);aJ["font-weight"]&&(aB.fontWeight=aJ["font-weight"]);aJ["font-style"]&&(aB.fontStyle=aJ["font-style"]);aN.node.string&&(aN.paper.span.innerHTML=(aN.node.string+aa)[aq](/</g,"&#60;")[aq](/&/g,"&#38;")[aq](/\n/g,"<br>"));aN.W=aJ.w=aN.paper.span.offsetWidth;aN.H=aJ.h=aN.paper.span.offsetHeight;aN.X=aJ.x;aN.Y=aJ.y+C(aN.H/2);switch(aJ["text-anchor"]){case"start":aN.node.style["v-text-align"]="left";aN.bbx=C(aN.W/2);break;case"end":aN.node.style["v-text-align"]="right";aN.bbx=-C(aN.W/2);break;default:aN.node.style["v-text-align"]="center";break;}}};var b=function(e,aC){e.attrs=e.attrs||{};var aD=e.attrs,aF=e.node.getElementsByTagName("fill"),aA="linear",aB=".5 .5";e.attrs.gradient=aC;aC=(aC+aa)[aq](/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(aH,aI,i){aA="radial";if(aI&&i){aI=J(aI);i=J(i);if(ap(aI-0.5,2)+ap(i-0.5,2)>0.25){i=Math.sqrt(0.25-ap(aI-0.5,2))+0.5;}aB=aI+X+i;}return aa;});aC=aC[r](/\s*\-\s*/);if(aA=="linear"){var E=aC.shift();E=-J(E);if(isNaN(E)){return null;}}var S=l(aC);if(!S){return null;}e=e.shape||e.node;aF=aF[0]||T("fill");if(S[j]){aF.on=true;aF.method="none";aF.type=(aA=="radial")?"gradientradial":"gradient";aF.color=S[0].color;aF.color2=S[S[j]-1].color;var aG=[];for(var R=0,aE=S[j];R<aE;R++){S[R].offset&&aG[c](S[R].offset+X+S[R].color);}aF.colors.value=aG[j]?aG[ae](","):"0% "+aF.color;if(aA=="radial"){aF.focus="100%";aF.focussize=aB;aF.focusposition=aB;}else{aF.angle=(270-E)%360;}}return 1;};var ad=function(S,aB,e){var aA=0,E=0,i=0,R=1;this[0]=S;this.id=Y._oid++;this.node=S;S.raphael=this;this.X=0;this.Y=0;this.attrs={};this.Group=aB;this.paper=e;this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1};};ad[az].rotate=function(i,e,E){if(this.removed){return this;}if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy][ae](X);}return this._.rt.deg;}i=(i+aa)[r](a);if(i[j]-1){e=J(i[1]);E=J(i[2]);}i=J(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}E==null&&(e=null);this._.rt.cx=e;this._.rt.cy=E;this.setBox(this.attrs,e,E);this.Group.style.rotation=this._.rt.deg;return this;};ad[az].setBox=function(aA,aB,S){if(this.removed){return this;}var E=this.Group.style,aC=(this.shape&&this.shape.style)||this.node.style;aA=aA||{};for(var aD in aA){if(aA[F](aD)){this.attrs[aD]=aA[aD];}}aB=aB||this._.rt.cx;S=S||this._.rt.cy;var aG=this.attrs,aJ,aI,aK,aF;switch(this.type){case"circle":aJ=aG.cx-aG.r;aI=aG.cy-aG.r;aK=aF=aG.r*2;break;case"ellipse":aJ=aG.cx-aG.rx;aI=aG.cy-aG.ry;aK=aG.rx*2;aF=aG.ry*2;break;case"rect":case"image":aJ=+aG.x;aI=+aG.y;aK=aG.width||0;aF=aG.height||0;break;case"text":this.textpath.v=["m",C(aG.x),", ",C(aG.y-2),"l",C(aG.x)+1,", ",C(aG.y-2)][ae](aa);aJ=aG.x-C(this.W/2);aI=aG.y-this.H/2;aK=this.W;aF=this.H;break;case"path":if(!this.attrs.path){aJ=0;aI=0;aK=this.paper.width;aF=this.paper.height;}else{var aE=H(this.attrs.path);aJ=aE.x;aI=aE.y;aK=aE.width;aF=aE.height;}break;default:aJ=0;aI=0;aK=this.paper.width;aF=this.paper.height;break;}aB=(aB==null)?aJ+aK/2:aB;S=(S==null)?aI+aF/2:S;var R=aB-this.paper.width/2,aH=S-this.paper.height/2;if(this.type=="path"||this.type=="text"){(E.left!=R+"px")&&(E.left=R+"px");(E.top!=aH+"px")&&(E.top=aH+"px");this.X=this.type=="text"?aJ:-R;this.Y=this.type=="text"?aI:-aH;this.W=aK;this.H=aF;(aC.left!=-R+"px")&&(aC.left=-R+"px");(aC.top!=-aH+"px")&&(aC.top=-aH+"px");}else{(E.left!=R+"px")&&(E.left=R+"px");(E.top!=aH+"px")&&(E.top=aH+"px");this.X=aJ;this.Y=aI;this.W=aK;this.H=aF;(E.width!=this.paper.width+"px")&&(E.width=this.paper.width+"px");(E.height!=this.paper.height+"px")&&(E.height=this.paper.height+"px");(aC.left!=aJ-R+"px")&&(aC.left=aJ-R+"px");(aC.top!=aI-aH+"px")&&(aC.top=aI-aH+"px");(aC.width!=aK+"px")&&(aC.width=aK+"px");(aC.height!=aF+"px")&&(aC.height=aF+"px");var aL=(+aA.r||0)/(al(aK,aF));if(this.type=="rect"&&this.arcsize!=aL&&(aL||this.arcsize)){var e=T(aL?"roundrect":"rect");e.arcsize=aL;this.Group[ao](e);this.node.parentNode.removeChild(this.node);this.node=e;this.arcsize=aL;this.attr(this.attrs);}}};ad[az].hide=function(){!this.removed&&(this.Group.style.display="none");return this;};ad[az].show=function(){!this.removed&&(this.Group.style.display="block");return this;};ad[az].getBBox=function(){if(this.removed){return this;}if(this.type=="path"){return H(this.attrs.path);}return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H};};ad[az].remove=function(){this.node.parentNode.removeChild(this[0]);this.Group.parentNode.removeChild(this.Group);this.shape&&this.shape.parentNode.removeChild(this.shape);for(var e in this){delete this[e];}this.removed=true;};ad[az].attr=function(){if(this.removed){return this;}if(arguments[j]==1&&Y.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(this.attrs&&arguments[j]==1&&Y.is(arguments[0],"array")){var e={};for(var E=0,R=arguments[0][j];E<R;E++){e[arguments[0][E]]=this.attrs[arguments[0][E]];}return e;}var S;if(arguments[j]==2){S={};S[arguments[0]]=arguments[1];}arguments[j]==1&&Y.is(arguments[0],"object")&&(S=arguments[0]);if(S){if(S.text&&this.type=="text"){this.node.string=S.text;}M(this,S);if(S.gradient&&({circle:1,ellipse:1}[F](this.type)||(S.gradient+aa).charAt(0)!="r")){b(this,S.gradient);}this.setBox(this.attrs);}return this;};ad[az].toFront=function(){!this.removed&&this.Group.parentNode[ao](this.Group);return this;};ad[az].toBack=function(){if(this.removed){return this;}if(this.Group.parentNode.firstChild!=this.Group){this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild);}return this;};ad[az].insertAfter=function(e){if(this.removed){return this;}if(e.Group.nextSibling){e.Group.parentNode.insertBefore(this.Group,e.Group.nextSibling);}else{e.Group.parentNode[ao](this.Group);}return this;};ad[az].insertBefore=function(e){!this.removed&&e.Group.parentNode.insertBefore(this.Group,e.Group);return this;};var D=function(i,e,aC,aA){var S=T("group"),aB=T("oval"),E=aB.style;S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;S[ao](aB);var R=new ad(aB,S,i);R.type="circle";M(R,{stroke:"#000",fill:"none"});R.attrs.cx=e;R.attrs.cy=aC;R.attrs.r=aA;R.setBox({x:e-aA,y:aC-aA,width:aA*2,height:aA*2});i.canvas[ao](S);return R;};var ai=function(i,aC,aB,aD,R,e){var S=T("group"),E=T(e?"roundrect":"rect"),aE=(+e||0)/(al(aD,R));E.arcsize=aE;S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;S[ao](E);var aA=new ad(E,S,i);aA.type="rect";M(aA,{stroke:"#000"});aA.arcsize=aE;aA.setBox({x:aC,y:aB,width:aD,height:R,r:+e});i.canvas[ao](S);return aA;};var U=function(e,aD,aC,E,i){var S=T("group"),R=T("oval"),aB=R.style;S.style.cssText="position:absolute;left:0;top:0;width:"+e.width+"px;height:"+e.height+"px";S.coordsize=e.coordsize;S.coordorigin=e.coordorigin;S[ao](R);var aA=new ad(R,S,e);aA.type="ellipse";M(aA,{stroke:"#000"});aA.attrs.cx=aD;aA.attrs.cy=aC;aA.attrs.rx=E;aA.attrs.ry=i;aA.setBox({x:aD-E,y:aC-i,width:E*2,height:i*2});e.canvas[ao](S);return aA;};var k=function(i,e,aD,aC,aE,R){var S=T("group"),E=T("image"),aB=E.style;S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;E.src=e;S[ao](E);var aA=new ad(E,S,i);aA.type="image";aA.attrs.src=e;aA.attrs.x=aD;aA.attrs.y=aC;aA.attrs.w=aE;aA.attrs.h=R;aA.setBox({x:aD,y:aC,width:aE,height:R});i.canvas[ao](S);return aA;};var K=function(i,aD,aC,aE){var S=T("group"),R=T("shape"),aB=R.style,aF=T("path"),e=aF.style,E=T("textpath");S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;aF.v=Y.format("m{0},{1}l{2},{1}",C(aD),C(aC),C(aD)+1);aF.textpathok=true;aB.width=i.width;aB.height=i.height;E.string=aE+aa;E.on=true;R[ao](E);R[ao](aF);S[ao](R);var aA=new ad(E,S,i);aA.shape=R;aA.textpath=aF;aA.type="text";aA.attrs.text=aE;aA.attrs.x=aD;aA.attrs.y=aC;aA.attrs.w=1;aA.attrs.h=1;M(aA,{font:g.font,stroke:"none",fill:"#000"});aA.setBox();i.canvas[ao](S);return aA;};var aw=function(E,e){var i=this.canvas.style;this.width=J(E||this.width);this.height=J(e||this.height);i.width=this.width+"px";i.height=this.height+"px";i.clip="rect(0 "+this.width+"px "+this.height+"px 0)";this.coordsize=this.width+X+this.height;return this;};z.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!z.namespaces.rvml&&z.namespaces.add("rvml","urn:schemas-microsoft-com:vml");var T=function(e){return z.createElement("<rvml:"+e+' class="rvml">');};}catch(P){var T=function(e){return z.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var p=function(){var R=Z[ax](null,arguments),i=R.container,aE=R.height,aF,E=R.width,aD=R.x,aC=R.y;if(!i){throw new Error("VML container not found.");}var aA={},aB=aA.canvas=z.createElement("div"),S=aB.style;E=J(E)||512;aE=J(aE)||342;aA.width=E;aA.height=aE;aA.coordsize=E+X+aE;aA.coordorigin="0 0";aA.span=z.createElement("span");aA.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";aB[ao](aA.span);S.cssText=Y.format("width:{0}px;height:{1}px;position:absolute;clip:rect(0 {0}px {1}px 0)",E,aE);if(i==1){z.body[ao](aB);S.left=aD+"px";S.top=aC+"px";i={style:{width:E,height:aE}};}else{i.style.width=E;i.style.height=aE;if(i.firstChild){i.insertBefore(aB,i.firstChild);}else{i[ao](aB);}}for(var e in ar){if(ar[F](e)){aA[e]=ar[e];}}aj.call(aA,aA,Y.fn);aA.clear=function(){aB.innerHTML=aa;};aA.raphael=Y;return aA;};ar.remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var e in this){delete this[e];}};}if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){ar.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){e.remove();});};}else{ar.safari=function(){};}var Q=(function(){if(z.addEventListener){return function(S,E,i,e){var R=function(aA){return i.call(e,aA);};S.addEventListener(E,R,false);return function(){S.removeEventListener(E,R,false);return true;};};}else{if(z.attachEvent){return function(aA,R,E,i){var S=function(aB){return E.call(i,aB||ab.event);};aA.attachEvent("on"+R,S);var e=function(){aA.detachEvent("on"+R,S);return true;};if(R=="mouseover"){aA.attachEvent("onmouseenter",S);return function(){aA.detachEvent("onmouseenter",S);return e();};}else{if(R=="mouseout"){aA.attachEvent("onmouseleave",S);return function(){aA.detachEvent("onmouseleave",S);return e();};}}return e;};}}})();for(var N=u[j];N--;){(function(e){ad[az][e]=function(i){if(Y.is(i,"function")){this.events=this.events||{};this.events[e]=this.events[e]||{};this.events[e][i]=this.events[e][i]||[];this.events[e][i][c](Q(this.shape||this.node,e,i,this));}return this;};ad[az]["un"+e]=function(i){var E=this.events;E&&E[e]&&E[e][i]&&E[e][i][j]&&E[e][i].shift()()&&!E[e][i][j]&&delete E[e][i];return this;};})(u[N]);}ad[az].hover=function(i,e){return this.mouseover(i).mouseout(e);};ar.circle=function(e,E,i){return D(this,e||0,E||0,i||0);};ar.rect=function(e,S,i,E,R){return ai(this,e||0,S||0,i||0,E||0,R||0);};ar.ellipse=function(e,R,E,i){return U(this,e||0,R||0,E||0,i||0);};ar.path=function(e){e&&!Y.is(e,"string")&&!Y.is(e[0],"array")&&(e+=aa);return m(Y.format[ax](Y,arguments),this);};ar.image=function(R,e,S,i,E){return k(this,R||"about:blank",e||0,S||0,i||0,E||0);};ar.text=function(e,E,i){return K(this,e||0,E||0,i||aa);};ar.set=function(e){arguments[j]>1&&(e=Array[az].splice.call(arguments,0,arguments[j]));return new G(e);};ar.setSize=aw;ad[az].scale=function(aJ,aI,R,E){if(aJ==null&&aI==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+X+this.y;}};}aI=aI||aJ;!+aI&&(aI=aJ);var aN,aL,aM,aK,aZ=this.attrs;if(aJ!=0){var aG=this.getBBox(),aD=aG.x+aG.width/2,aA=aG.y+aG.height/2,aY=aJ/this._.sx,aX=aI/this._.sy;R=(+R||R==0)?R:aD;E=(+E||E==0)?E:aA;var aF=~~(aJ/Math.abs(aJ)),aC=~~(aI/Math.abs(aI)),aQ=this.node.style,a1=R+(aD-R)*aF*aY,a0=E+(aA-E)*aC*aX;switch(this.type){case"rect":case"image":var aE=aZ.width*aF*aY,aP=aZ.height*aC*aX,aH=aZ.r*al(aY,aX),aB=a1-aE/2,S=a0-aP/2;this.attr({width:aE,height:aP,x:aB,y:S,r:aH});break;case"circle":case"ellipse":this.attr({rx:aZ.rx*aY,ry:aZ.ry*aX,r:aZ.r*al(aY,aX),cx:a1,cy:a0});break;case"path":var aS=O(aZ.path),aT=true;for(var aV=0,aO=aS[j];aV<aO;aV++){var aR=aS[aV];if(aR[0].toUpperCase()=="M"&&aT){continue;}else{aT=false;}if(Y.svg&&aR[0].toUpperCase()=="A"){aR[aS[aV][j]-2]*=aY;aR[aS[aV][j]-1]*=aX;aR[1]*=aY;aR[2]*=aX;aR[5]=+(aF+aC?!!+aR[5]:!+aR[5]);}else{for(var aU=1,aW=aR[j];aU<aW;aU++){aR[aU]*=(aU%2)?aY:aX;}}}var e=H(aS),aN=a1-e.x-e.width/2,aL=a0-e.y-e.height/2;aS[0][1]+=aN;aS[0][2]+=aL;this.attr({path:aS});break;}if(this.type in {text:1,image:1}&&(aF!=1||aC!=1)){if(this.transformations){this.transformations[2]="scale("[au](aF,",",aC,")");this.node[o]("transform",this.transformations[ae](X));aN=(aF==-1)?-aZ.x-(aE||0):aZ.x;aL=(aC==-1)?-aZ.y-(aP||0):aZ.y;this.attr({x:aN,y:aL});aZ.fx=aF-1;aZ.fy=aC-1;}else{this.node.filterMatrix=" progid:DXImageTransform.Microsoft.Matrix(M11="[au](aF,", M12=0, M21=0, M22=",aC,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')");aQ.filter=(this.node.filterMatrix||aa)+(this.node.filterOpacity||aa);}}else{if(this.transformations){this.transformations[2]=aa;this.node[o]("transform",this.transformations[ae](X));aZ.fx=0;aZ.fy=0;}else{this.node.filterMatrix=aa;aQ.filter=(this.node.filterMatrix||aa)+(this.node.filterOpacity||aa);}}aZ.scale=[aJ,aI,R,E][ae](X);this._.sx=aJ;this._.sy=aI;}return this;};Y.easing_formulas={linear:function(e){return e;},"<":function(e){return ap(e,3);},">":function(e){return ap(e-1,3)+1;},"<>":function(e){e=e*2;if(e<1){return ap(e,3)/2;}e-=2;return(ap(e,3)+2)/2;},backIn:function(i){var e=1.70158;return i*i*((e+1)*i-e);},backOut:function(i){i=i-1;var e=1.70158;return i*i*((e+1)*i+e)+1;},elastic:function(E){if(E==0||E==1){return E;}var i=0.3,e=i/4;return ap(2,-10*E)*Math.sin((E-e)*(2*Math.PI)/i)+1;},bounce:function(R){var i=7.5625,E=2.75,e;if(R<(1/E)){e=i*R*R;}else{if(R<(2/E)){R-=(1.5/E);e=i*R*R+0.75;}else{if(R<(2.5/E)){R-=(2.25/E);e=i*R*R+0.9375;}else{R-=(2.625/E);e=i*R*R+0.984375;}}}return e;}};var x={length:0},at=function(){var aD=+new Date;for(var aO in x){if(aO!="length"&&x[F](aO)){var aT=x[aO];if(aT.stop){delete x[aO];x[j]--;continue;}var aB=aD-aT.start,aM=aT.ms,aL=aT.easing,aP=aT.from,aI=aT.diff,R=aT.to,aH=aT.t,aK=aT.prev||0,aC=aT.el,S=aT.callback,aJ={},E;if(aB<aM){var aA=Y.easing_formulas[aL]?Y.easing_formulas[aL](aB/aM):aB/aM;for(var aN in aP){if(aP[F](aN)){switch(L[aN]){case"number":E=+aP[aN]+aA*aM*aI[aN];break;case"colour":E="rgb("+[s(C(aP[aN].r+aA*aM*aI[aN].r)),s(C(aP[aN].g+aA*aM*aI[aN].g)),s(C(aP[aN].b+aA*aM*aI[aN].b))][ae](",")+")";break;case"path":E=[];for(var aR=0,aG=aP[aN][j];aR<aG;aR++){E[aR]=[aP[aN][aR][0]];for(var aQ=1,aS=aP[aN][aR][j];aQ<aS;aQ++){E[aR][aQ]=+aP[aN][aR][aQ]+aA*aM*aI[aN][aR][aQ];}E[aR]=E[aR][ae](X);}E=E[ae](X);break;case"csv":switch(aN){case"translation":var aF=aI[aN][0]*(aB-aK),aE=aI[aN][1]*(aB-aK);aH.x+=aF;aH.y+=aE;E=aF+X+aE;break;case"rotation":E=+aP[aN][0]+aA*aM*aI[aN][0];aP[aN][1]&&(E+=","+aP[aN][1]+","+aP[aN][2]);break;case"scale":E=[+aP[aN][0]+aA*aM*aI[aN][0],+aP[aN][1]+aA*aM*aI[aN][1],(2 in R[aN]?R[aN][2]:aa),(3 in R[aN]?R[aN][3]:aa)][ae](X);break;case"clip-rect":E=[];var aR=4;while(aR--){E[aR]=+aP[aN][aR]+aA*aM*aI[aN][aR];}break;}break;}aJ[aN]=E;}}aC.attr(aJ);aC._run&&aC._run.call(aC);}else{(aH.x||aH.y)&&aC.translate(-aH.x,-aH.y);R.scale&&(R.scale=R.scale+aa);aC.attr(R);Y.is(S,"function")&&S.call(aC);delete x[aO];x[j]--;aC.in_animation=null;}aT.prev=aB;}}Y.svg&&ar.safari();x[j]&&setTimeout(at);},s=function(e){return e>255?255:(e<0?0:e);};ad[az].animateWith=function(i,E,e,S,R){x[i.id]&&(E.start=x[i.id].start);return this.animate(E,e,S,R);};ad[az].onAnimation=function(e){this._run=e||null;return this;};ad[az].animate=function(R,e,aF,aL){if(Y.is(aF,"function")||!aF){aL=aF||null;}var aG={},aH={},aI={};for(var aE in R){if(R[F](aE)){if(L[F](aE)){aG[aE]=this.attr(aE);(aG[aE]==null)&&(aG[aE]=g[aE]);aH[aE]=R[aE];switch(L[aE]){case"number":aI[aE]=(aH[aE]-aG[aE])/e;break;case"colour":aG[aE]=Y.getRGB(aG[aE]);var aC=Y.getRGB(aH[aE]);aI[aE]={r:(aC.r-aG[aE].r)/e,g:(aC.g-aG[aE].g)/e,b:(aC.b-aG[aE].b)/e};break;case"path":var E=w(aG[aE],aH[aE]);aG[aE]=E[0];aH[aE]=E[1];aI[aE]=[];for(var aB=0,aK=aG[aE][j];aB<aK;aB++){aI[aE][aB]=[0];for(var S=1,aD=aG[aE][aB][j];S<aD;S++){aI[aE][aB][S]=(aH[aE][aB][S]-aG[aE][aB][S])/e;}}break;case"csv":var aJ=(R[aE]+aa)[r](a),aA=(aG[aE]+aa)[r](a);switch(aE){case"translation":aG[aE]=[0,0];aI[aE]=[aJ[0]/e,aJ[1]/e];break;case"rotation":aG[aE]=(aA[1]==aJ[1]&&aA[2]==aJ[2])?aA:[0,aJ[1],aJ[2]];aI[aE]=[(aJ[0]-aG[aE][0])/e,0,0];break;case"scale":R[aE]=aJ;aG[aE]=(aG[aE]+aa)[r](a);aI[aE]=[(aJ[0]-aG[aE][0])/e,(aJ[1]-aG[aE][1])/e,0,0];break;case"clip-rect":aG[aE]=(aG[aE]+aa)[r](a);aI[aE]=[];var aB=4;while(aB--){aI[aE][aB]=(aJ[aB]-aG[aE][aB])/e;}break;}aH[aE]=aJ;}}}}this.stop();this.in_animation=1;x[this.id]={start:R.start||+new Date,ms:e,easing:aF,from:aG,diff:aI,to:aH,el:this,callback:aL,t:{x:0,y:0}};++x[j]==1&&at();return this;};ad[az].stop=function(){delete x[this.id];delete this.in_animation;return this;};ad[az].translate=function(e,E){if(e==null){return{x:this._.tx,y:this._.ty};}this._.tx+=+e;this._.ty+=+E;switch(this.type){case"circle":case"ellipse":this.attr({cx:+e+this.attrs.cx,cy:+E+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+e+this.attrs.x,y:+E+this.attrs.y});break;case"path":var i=O(this.attrs.path);i[0][1]+=+e;i[0][2]+=+E;this.attr({path:i});break;}return this;};ad[az][af]=function(){return"Rapha\u00ebl\u2019s object";};Y.ae=x;var G=function(e){this.items=[];this[j]=0;if(e){for(var E=0,R=e[j];E<R;E++){if(e[E]&&(e[E].constructor==ad||e[E].constructor==G)){this[this.items[j]]=this.items[this.items[j]]=e[E];this[j]++;}}}};G[az][c]=function(){var S,e;for(var E=0,R=arguments[j];E<R;E++){S=arguments[E];if(S&&(S.constructor==ad||S.constructor==G)){e=this.items[j];this[e]=this.items[e]=S;this[j]++;}}return this;};G[az].pop=function(){delete this[this[j]--];return this.items.pop();};for(var q in ad[az]){if(ad[az][F](q)){G[az][q]=(function(e){return function(){for(var E=0,R=this.items[j];E<R;E++){this.items[E][e][ax](this.items[E],arguments);}return this;};})(q);}}G[az].attr=function(E,aB){if(E&&Y.is(E,"array")&&Y.is(E[0],"object")){for(var e=0,aA=E[j];e<aA;e++){this.items[e].attr(E[e]);}}else{for(var R=0,S=this.items[j];R<S;R++){this.items[R].attr[ax](this.items[R],arguments);}}return this;};G[az].animate=function(aA,E,aD,aC){(Y.is(aD,"function")||!aD)&&(aC=aD||null);var e=this.items[j],R=e,aB=this,S;aC&&(S=function(){!--e&&aC.call(aB);});this.items[--R].animate(aA,E,aD||S,S);while(R--){this.items[R].animateWith(this.items[e-1],aA,E,aD||S,S);}return this;};G[az].insertAfter=function(E){var e=this.items[j];while(e--){this.items[e].insertAfter(E);}};G[az].getBBox=function(){var e=[],aB=[],E=[],S=[];for(var R=this.items[j];R--;){var aA=this.items[R].getBBox();e[c](aA.x);aB[c](aA.y);E[c](aA.x+aA.width);S[c](aA.y+aA.height);}e=al[ax](0,e);aB=al[ax](0,aB);return{x:e,y:aB,width:d[ax](0,E)-e,height:d[ax](0,S)-aB};};Y.registerFont=function(i){if(!i.face){return i;}this.fonts=this.fonts||{};var R={w:i.w,face:{},glyphs:{}},E=i.face["font-family"];for(var aB in i.face){if(i.face[F](aB)){R.face[aB]=i.face[aB];}}if(this.fonts[E]){this.fonts[E][c](R);}else{this.fonts[E]=[R];}if(!i.svg){R.face["units-per-em"]=v(i.face["units-per-em"],10);for(var S in i.glyphs){if(i.glyphs[F](S)){var aA=i.glyphs[S];R.glyphs[S]={w:aA.w,k:{},d:aA.d&&"M"+aA.d[aq](/[mlcxtrv]/g,function(aC){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[aC]||"M";})+"z"};if(aA.k){for(var e in aA.k){if(aA[F](e)){R.glyphs[S].k[e]=aA.k[e];}}}}}}return i;};ar.getFont=function(aD,aE,E,S){S=S||"normal";E=E||"normal";aE=+aE||{normal:400,bold:700,lighter:300,bolder:800}[aE]||400;var aA=Y.fonts[aD];if(!aA){var R=new RegExp("(^|\\s)"+aD[aq](/[^\w\d\s+!~.:_-]/g,aa)+"(\\s|$)","i");for(var e in Y.fonts){if(Y.fonts[F](e)){if(R.test(e)){aA=Y.fonts[e];break;}}}}var aB;if(aA){for(var aC=0,aF=aA[j];aC<aF;aC++){aB=aA[aC];if(aB.face["font-weight"]==aE&&(aB.face["font-style"]==E||!aB.face["font-style"])&&aB.face["font-stretch"]==S){break;}}}return aB;};ar.print=function(aF,aE,aC,E,aJ){var aA=this.set(),aD=(aC+aa)[r](aa),e=0,aI=aa,S;Y.is(E,"string")&&(E=this.getFont(E));if(E){S=(aJ||16)/E.face["units-per-em"];for(var aB=0,aG=aD[j];aB<aG;aB++){var R=aB&&E.glyphs[aD[aB-1]]||{},aH=E.glyphs[aD[aB]];e+=aB?(R.w||E.w)+(R.k&&R.k[aD[aB]]||0):0;aH&&aH.d&&aA[c](this.path(aH.d).attr({fill:"#000",stroke:"none",translation:[e,0]}));}aA.scale(S,S,0,aE).translate(aF,(aJ||16)/2);}return aA;};Y.format=function(E){var i=Y.is(arguments[1],"array")?[0][au](arguments[1]):arguments,e=/\{(\d+)\}/g;E&&Y.is(E,"string")&&i[j]-1&&(E=E[aq](e,function(S,R){return i[++R]==null?aa:i[R];}));return E||aa;};Y.ninja=function(){var E=ab.Raphael,i;if(h.was){ab.Raphael=h.is;}else{try{delete ab.Raphael;}catch(R){ab.Raphael=i;}}return E;};Y.el=ad[az];return Y;})();
\ No newline at end of file
+window.Raphael=(function(){var a=/[, ]+/,D=document,aj=window,k={was:"Raphael" in aj,is:aj.Raphael},af=function(){if(af.is(arguments[0],"array")){var e=arguments[0],E=s[aI](af,e.splice(0,3+af.is(e[0],ad))),aM=E.set();for(var S=0,aN=e[l];S<aN;S++){var R=e[S]||{};({circle:1,rect:1,path:1,ellipse:1,text:1,image:1})[J](R.type)&&aM[d](E[R.type]().attr(R));}return aM;}return s[aI](af,arguments);},az="appendChild",aI="apply",aF="concat",ai="",y=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"],J="hasOwnProperty",ab=/^\[object\s+|\]$/gi,an="join",l="length",aK="prototype",aL=String[aK].toLowerCase,f=Math.max,aw=Math.min,ad="number",ao="toString",al=Object[aK][ao],aD={},aA=Math.pow,d="push",aG=/^(?=[\da-f]$)/,c=/^url\(['"]?([^\)]+)['"]?\)$/i,H=Math.round,ae=" ",r="setAttribute",u="split",N=parseFloat,z=parseInt,aB=String[aK].toUpperCase,h={"clip-rect":"0 0 10e9 10e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/",opacity:1,path:"M0,0",r:0,rotation:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",translation:"0 0",width:0,x:0,y:0},Q={"clip-rect":"csv",cx:ad,cy:ad,fill:"colour","fill-opacity":ad,"font-size":ad,height:ad,opacity:ad,path:"path",r:ad,rotation:"csv",rx:ad,ry:ad,scale:"csv",stroke:"colour","stroke-opacity":ad,"stroke-width":ad,translation:"csv",width:ad,x:ad,y:ad},aC="replace";af.version="1.2.2";af.type=(aj.SVGAngle||D.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");af.svg=!(af.vml=af.type=="VML");af._id=0;af._oid=0;af.fn={};af.is=function(i,e){e=aL.call(e);return((e=="object"||e=="undefined")&&typeof i==e)||(i==null&&e=="null")||aL.call(al.call(i)[aC](ab,ai))==e;};af.setWindow=function(e){aj=e;D=aj.document;};var aq=function(E){if(af.vml){var e=/^\s+|\s+$/g;aq=aa(function(aM){var aN;aM=(aM+ai).replace(e,ai);try{var i=new ActiveXObject("htmlfile");i.write("<body>");i.close();aN=i.body;}catch(aP){aN=createPopup().document.body;}var S=aN.createTextRange();try{aN.style.color=aM;var aO=S.queryCommandValue("ForeColor");aO=((aO&255)<<16)|(aO&65280)|((aO&16711680)>>>16);return"#"+("000000"+aO[ao](16)).slice(-6);}catch(aP){return"none";}});}else{var R=D.createElement("i");R.className="Rapha\xebl Colour Picker";R.style.cssText="display:none";D.body[az](R);aq=aa(function(i){R.style.color=i;return D.defaultView.getComputedStyle(R,ai).getPropertyValue("color");});}return aq(E);};af.hsb2rgb=aa(function(aQ,aO,aU){if(af.is(aQ,"object")&&"h" in aQ&&"s" in aQ&&"b" in aQ){aU=aQ.b;aO=aQ.s;aQ=aQ.h;}var S,aM,aV;if(aU==0){return{r:0,g:0,b:0,hex:"#000"};}if(aQ>1||aO>1||aU>1){aQ/=255;aO/=255;aU/=255;}var aN=~~(aQ*6),aR=(aQ*6)-aN,R=aU*(1-aO),E=aU*(1-(aO*aR)),aW=aU*(1-(aO*(1-aR)));S=[aU,E,R,R,aW,aU,aU][aN];aM=[aW,aU,aU,E,R,R,aW][aN];aV=[R,R,aW,aU,aU,E,R][aN];S*=255;aM*=255;aV*=255;var aS={r:S,g:aM,b:aV},e=(~~S)[ao](16),aP=(~~aM)[ao](16),aT=(~~aV)[ao](16);e=e[aC](aG,"0");aP=aP[aC](aG,"0");aT=aT[aC](aG,"0");aS.hex="#"+e+aP+aT;return aS;},af);af.rgb2hsb=aa(function(e,i,aO){if(af.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){aO=e.b;i=e.g;e=e.r;}if(af.is(e,"string")){var aQ=af.getRGB(e);e=aQ.r;i=aQ.g;aO=aQ.b;}if(e>1||i>1||aO>1){e/=255;i/=255;aO/=255;}var aN=f(e,i,aO),E=aw(e,i,aO),S,R,aM=aN;if(E==aN){return{h:0,s:0,b:aN};}else{var aP=(aN-E);R=aP/aN;if(e==aN){S=(i-aO)/aP;}else{if(i==aN){S=2+((aO-e)/aP);}else{S=4+((e-i)/aP);}}S/=6;S<0&&S++;S>1&&S--;}return{h:S,s:R,b:aM};},af);var ar=/,?([achlmqrstvxz]),?/gi;af._path2string=function(){return this.join(",")[aC](ar,"$1");};function aa(R,i,e){function E(){var S=Array[aK].slice.call(arguments,0),aN=S[an]("\u25ba"),aM=E.cache=E.cache||{},aO=E.count=E.count||[];if(aM[J](aN)){return e?e(aM[aN]):aM[aN];}aO[l]>=1000&&delete aM[aO.shift()];aO[d](aN);aM[aN]=R[aI](i,S);return e?e(aM[aN]):aM[aN];}return E;}af.getRGB=aa(function(e){if(!e||!!((e+ai).indexOf("-")+1)){return{r:-1,g:-1,b:-1,hex:"none",error:1};}e=e+ai;if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}!({hs:1,rg:1})[J](e.substring(0,2))&&(e=aq(e));var aM,E,R,aP,aN=e.match(/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgb\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|rgb\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i);if(aN){if(aN[2]){aP=z(aN[2].substring(5),16);R=z(aN[2].substring(3,5),16);E=z(aN[2].substring(1,3),16);}if(aN[3]){aP=z(aN[3].substring(3)+aN[3].substring(3),16);R=z(aN[3].substring(2,3)+aN[3].substring(2,3),16);E=z(aN[3].substring(1,2)+aN[3].substring(1,2),16);}if(aN[4]){aN=aN[4][u](/\s*,\s*/);E=N(aN[0]);R=N(aN[1]);aP=N(aN[2]);}if(aN[5]){aN=aN[5][u](/\s*,\s*/);E=N(aN[0])*2.55;R=N(aN[1])*2.55;aP=N(aN[2])*2.55;}if(aN[6]){aN=aN[6][u](/\s*,\s*/);E=N(aN[0]);R=N(aN[1]);aP=N(aN[2]);return af.hsb2rgb(E,R,aP);}if(aN[7]){aN=aN[7][u](/\s*,\s*/);E=N(aN[0])*2.55;R=N(aN[1])*2.55;aP=N(aN[2])*2.55;return af.hsb2rgb(E,R,aP);}aN={r:E,g:R,b:aP};var i=(~~E)[ao](16),S=(~~R)[ao](16),aO=(~~aP)[ao](16);i=i[aC](aG,"0");S=S[aC](aG,"0");aO=aO[aC](aG,"0");aN.hex="#"+i+S+aO;return aN;}return{r:-1,g:-1,b:-1,hex:"none",error:1};},af);af.getColor=function(i){var E=this.getColor.start=this.getColor.start||{h:0,s:1,b:i||0.75},e=this.hsb2rgb(E.h,E.s,E.b);E.h+=0.075;if(E.h>1){E.h=0;E.s-=0.2;E.s<=0&&(this.getColor.start={h:0,s:1,b:E.b});}return e.hex;};af.getColor.reset=function(){delete this.start;};af.parsePathString=aa(function(e){if(!e){return null;}var E={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=[];if(af.is(e,"array")&&af.is(e[0],"array")){i=ak(e);}if(!i[l]){(e+ai)[aC](/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(S,R,aO){var aN=[],aM=aL.call(R);aO[aC](/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(aQ,aP){aP&&aN[d](+aP);});while(aN[l]>=E[aM]){i[d]([R][aF](aN.splice(0,E[aM])));if(!E[aM]){break;}}});}i[ao]=af._path2string;return i;});var L=aa(function(aR){if(!aR){return{x:0,y:0,width:0,height:0};}aR=A(aR);var aO=0,aN=0,R=[],E=[];for(var S=0,aQ=aR[l];S<aQ;S++){if(aR[S][0]=="M"){aO=aR[S][1];aN=aR[S][2];R[d](aO);E[d](aN);}else{var aM=ap(aO,aN,aR[S][1],aR[S][2],aR[S][3],aR[S][4],aR[S][5],aR[S][6]);R=R[aF](aM.min.x,aM.max.x);E=E[aF](aM.min.y,aM.max.y);}}var e=aw[aI](0,R),aP=aw[aI](0,E);return{x:e,y:aP,width:f[aI](0,R)-e,height:f[aI](0,E)-aP};}),ak=function(aN){var R=[];if(!af.is(aN,"array")||!af.is(aN&&aN[0],"array")){aN=af.parsePathString(aN);}for(var E=0,S=aN[l];E<S;E++){R[E]=[];for(var e=0,aM=aN[E][l];e<aM;e++){R[E][e]=aN[E][e];}}R[ao]=af._path2string;return R;},V=aa(function(S){if(!af.is(S,"array")||!af.is(S&&S[0],"array")){S=af.parsePathString(S);}var aR=[],aT=0,aS=0,aW=0,aV=0,R=0;if(S[0][0]=="M"){aT=S[0][1];aS=S[0][2];aW=aT;aV=aS;R++;aR[d](["M",aT,aS]);}for(var aO=R,aX=S[l];aO<aX;aO++){var e=aR[aO]=[],aU=S[aO];if(aU[0]!=aL.call(aU[0])){e[0]=aL.call(aU[0]);switch(e[0]){case"a":e[1]=aU[1];e[2]=aU[2];e[3]=aU[3];e[4]=aU[4];e[5]=aU[5];e[6]=+(aU[6]-aT).toFixed(3);e[7]=+(aU[7]-aS).toFixed(3);break;case"v":e[1]=+(aU[1]-aS).toFixed(3);break;case"m":aW=aU[1];aV=aU[2];default:for(var aN=1,aP=aU[l];aN<aP;aN++){e[aN]=+(aU[aN]-((aN%2)?aT:aS)).toFixed(3);}}}else{e=aR[aO]=[];if(aU[0]=="m"){aW=aU[1]+aT;aV=aU[2]+aS;}for(var aM=0,E=aU[l];aM<E;aM++){aR[aO][aM]=aU[aM];}}var aQ=aR[aO][l];switch(aR[aO][0]){case"z":aT=aW;aS=aV;break;case"h":aT+=+aR[aO][aQ-1];break;case"v":aS+=+aR[aO][aQ-1];break;default:aT+=+aR[aO][aQ-2];aS+=+aR[aO][aQ-1];}}aR[ao]=af._path2string;return aR;},0,ak),p=aa(function(S){if(!af.is(S,"array")||!af.is(S&&S[0],"array")){S=af.parsePathString(S);}var aQ=[],aS=0,aR=0,aV=0,aU=0,R=0;if(S[0][0]=="M"){aS=+S[0][1];aR=+S[0][2];aV=aS;aU=aR;R++;aQ[0]=["M",aS,aR];}for(var aO=R,aW=S[l];aO<aW;aO++){var e=aQ[aO]=[],aT=S[aO];if(aT[0]!=aB.call(aT[0])){e[0]=aB.call(aT[0]);switch(e[0]){case"A":e[1]=aT[1];e[2]=aT[2];e[3]=aT[3];e[4]=aT[4];e[5]=aT[5];e[6]=+(aT[6]+aS);e[7]=+(aT[7]+aR);break;case"V":e[1]=+aT[1]+aR;break;case"H":e[1]=+aT[1]+aS;break;case"M":aV=+aT[1]+aS;aU=+aT[2]+aR;default:for(var aN=1,aP=aT[l];aN<aP;aN++){e[aN]=+aT[aN]+((aN%2)?aS:aR);}}}else{for(var aM=0,E=aT[l];aM<E;aM++){aQ[aO][aM]=aT[aM];}}switch(e[0]){case"Z":aS=aV;aR=aU;break;case"H":aS=e[1];break;case"V":aR=e[1];break;default:aS=aQ[aO][aQ[aO][l]-2];aR=aQ[aO][aQ[aO][l]-1];}}aQ[ao]=af._path2string;return aQ;},null,ak),aJ=function(i,R,e,E){return[i,R,e,E,e,E];},ay=function(i,R,aN,S,e,E){var aM=1/3,aO=2/3;return[aM*i+aO*aN,aM*R+aO*S,aM*e+aO*aN,aM*E+aO*S,e,E];},C=function(aW,bq,a5,a3,aX,aR,aM,aV,bp,aY){var S=Math.PI,a2=S*120/180,e=S/180*(+aX||0),a9=[],a6,bm=aa(function(br,bu,i){var bt=br*Math.cos(i)-bu*Math.sin(i),bs=br*Math.sin(i)+bu*Math.cos(i);return{x:bt,y:bs};});if(!aY){a6=bm(aW,bq,-e);aW=a6.x;bq=a6.y;a6=bm(aV,bp,-e);aV=a6.x;bp=a6.y;var E=Math.cos(S/180*aX),aT=Math.sin(S/180*aX),bb=(aW-aV)/2,ba=(bq-bp)/2;a5=f(a5,Math.abs(bb));a3=f(a3,Math.abs(ba));var R=a5*a5,be=a3*a3,bg=(aR==aM?-1:1)*Math.sqrt(Math.abs((R*be-R*ba*ba-be*bb*bb)/(R*ba*ba+be*bb*bb))),a0=bg*a5*ba/a3+(aW+aV)/2,aZ=bg*-a3*bb/a5+(bq+bp)/2,aQ=Math.asin((bq-aZ)/a3),aP=Math.asin((bp-aZ)/a3);aQ=aW<a0?S-aQ:aQ;aP=aV<a0?S-aP:aP;aQ<0&&(aQ=S*2+aQ);aP<0&&(aP=S*2+aP);if(aM&&aQ>aP){aQ=aQ-S*2;}if(!aM&&aP>aQ){aP=aP-S*2;}}else{aQ=aY[0];aP=aY[1];a0=aY[2];aZ=aY[3];}var aU=aP-aQ;if(Math.abs(aU)>a2){var a1=aP,a4=aV,aS=bp;aP=aQ+a2*(aM&&aP>aQ?1:-1);aV=a0+a5*Math.cos(aP);bp=aZ+a3*Math.sin(aP);a9=C(aV,bp,a5,a3,aX,0,aM,a4,aS,[aP,a1,a0,aZ]);}aU=aP-aQ;var aO=Math.cos(aQ),bo=Math.sin(aQ),aN=Math.cos(aP),bn=Math.sin(aP),bc=Math.tan(aU/4),bf=4/3*a5*bc,bd=4/3*a3*bc,bl=[aW,bq],bk=[aW+bf*bo,bq-bd*aO],bj=[aV+bf*bn,bp-bd*aN],bh=[aV,bp];bk[0]=2*bl[0]-bk[0];bk[1]=2*bl[1]-bk[1];if(aY){return[bk,bj,bh][aF](a9);}else{a9=[bk,bj,bh][aF](a9)[an](",")[u](",");var a7=[];for(var bi=0,a8=a9[l];bi<a8;bi++){a7[bi]=bi%2?bm(a9[bi-1],a9[bi],e).y:bm(a9[bi],a9[bi+1],e).x;}return a7;}},F=aa(function(i,e,aZ,aX,aM,S,aO,aN,aT){var aR=aA(1-aT,3)*i+aA(1-aT,2)*3*aT*aZ+(1-aT)*3*aT*aT*aM+aA(aT,3)*aO,aP=aA(1-aT,3)*e+aA(1-aT,2)*3*aT*aX+(1-aT)*3*aT*aT*S+aA(aT,3)*aN,aV=i+2*aT*(aZ-i)+aT*aT*(aM-2*aZ+i),aU=e+2*aT*(aX-e)+aT*aT*(S-2*aX+e),aY=aZ+2*aT*(aM-aZ)+aT*aT*(aO-2*aM+aZ),aW=aX+2*aT*(S-aX)+aT*aT*(aN-2*S+aX),aS=(1-aT)*i+aT*aZ,aQ=(1-aT)*e+aT*aX,R=(1-aT)*aM+aT*aO,E=(1-aT)*S+aT*aN;return{x:aR,y:aP,m:{x:aV,y:aU},n:{x:aY,y:aW},start:{x:aS,y:aQ},end:{x:R,y:E}};}),ap=aa(function(i,e,R,E,aX,aW,aT,aQ){var aV=(aX-2*R+i)-(aT-2*aX+R),aS=2*(R-i)-2*(aX-R),aP=i-R,aN=(-aS+Math.sqrt(aS*aS-4*aV*aP))/2/aV,S=(-aS-Math.sqrt(aS*aS-4*aV*aP))/2/aV,aR=[e,aQ],aU=[i,aT],aO=F(i,e,R,E,aX,aW,aT,aQ,aN>0&&aN<1?aN:0),aM=F(i,e,R,E,aX,aW,aT,aQ,S>0&&S<1?S:0);aU=aU[aF](aO.x,aM.x);aR=aR[aF](aO.y,aM.y);aV=(aW-2*E+e)-(aQ-2*aW+E);aS=2*(E-e)-2*(aW-E);aP=e-E;aN=(-aS+Math.sqrt(aS*aS-4*aV*aP))/2/aV;S=(-aS-Math.sqrt(aS*aS-4*aV*aP))/2/aV;aO=F(i,e,R,E,aX,aW,aT,aQ,aN>0&&aN<1?aN:0);aM=F(i,e,R,E,aX,aW,aT,aQ,S>0&&S<1?S:0);aU=aU[aF](aO.x,aM.x);aR=aR[aF](aO.y,aM.y);return{min:{x:aw[aI](0,aU),y:aw[aI](0,aR)},max:{x:f[aI](0,aU),y:f[aI](0,aR)}};}),A=aa(function(aW,aR){var S=p(aW),aS=aR&&p(aR),aT={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},aN=function(aX,aY){var i,aZ;if(!aX){return["C",aY.x,aY.y,aY.x,aY.y,aY.x,aY.y];}!(aX[0] in {T:1,Q:1})&&(aY.qx=aY.qy=null);switch(aX[0]){case"M":aY.X=aX[1];aY.Y=aX[2];break;case"A":aX=["C"][aF](C[aI](0,[aY.x,aY.y][aF](aX.slice(1))));break;case"S":i=aY.x+(aY.x-(aY.bx||aY.x));aZ=aY.y+(aY.y-(aY.by||aY.y));aX=["C",i,aZ][aF](aX.slice(1));break;case"T":aY.qx=aY.x+(aY.x-(aY.qx||aY.x));aY.qy=aY.y+(aY.y-(aY.qy||aY.y));aX=["C"][aF](ay(aY.x,aY.y,aY.qx,aY.qy,aX[1],aX[2]));break;case"Q":aY.qx=aX[1];aY.qy=aX[2];aX=["C"][aF](ay(aY.x,aY.y,aX[1],aX[2],aX[3],aX[4]));break;case"L":aX=["C"][aF](aJ(aY.x,aY.y,aX[1],aX[2]));break;case"H":aX=["C"][aF](aJ(aY.x,aY.y,aX[1],aY.y));break;case"V":aX=["C"][aF](aJ(aY.x,aY.y,aY.x,aX[1]));break;case"Z":aX=["C"][aF](aJ(aY.x,aY.y,aY.X,aY.Y));break;}return aX;},E=function(aX,aY){if(aX[aY][l]>7){aX[aY].shift();var aZ=aX[aY];while(aZ[l]){aX.splice(aY++,0,["C"][aF](aZ.splice(0,6)));}aX.splice(aY,1);aU=f(S[l],aS&&aS[l]||0);}},R=function(a3,a0,aY,aX,aZ){if(a3&&a0&&a3[aZ][0]=="M"&&a0[aZ][0]!="M"){a0.splice(aZ,0,["M",aX.x,aX.y]);aY.bx=0;aY.by=0;aY.x=a3[aZ][1];aY.y=a3[aZ][2];aU=f(S[l],aS&&aS[l]||0);}};for(var aP=0,aU=f(S[l],aS&&aS[l]||0);aP<aU;aP++){S[aP]=aN(S[aP],aT);E(S,aP);aS&&(aS[aP]=aN(aS[aP],e));aS&&E(aS,aP);R(S,aS,aT,e,aP);R(aS,S,e,aT,aP);var aO=S[aP],aV=aS&&aS[aP],aM=aO[l],aQ=aS&&aV[l];aT.x=aO[aM-2];aT.y=aO[aM-1];aT.bx=N(aO[aM-4])||aT.x;aT.by=N(aO[aM-3])||aT.y;e.bx=aS&&(N(aV[aQ-4])||e.x);e.by=aS&&(N(aV[aQ-3])||e.y);e.x=aS&&aV[aQ-2];e.y=aS&&aV[aQ-1];}return aS?[S,aS]:S;},null,ak),n=aa(function(aQ){var aP=[];for(var aM=0,aR=aQ[l];aM<aR;aM++){var e={},aO=aQ[aM].match(/^([^:]*):?([\d\.]*)/);e.color=af.getRGB(aO[1]);if(e.color.error){return null;}e.color=e.color.hex;aO[2]&&(e.offset=aO[2]+"%");aP[d](e);}for(var aM=1,aR=aP[l]-1;aM<aR;aM++){if(!aP[aM].offset){var E=N(aP[aM-1].offset||0),R=0;for(var S=aM+1;S<aR;S++){if(aP[S].offset){R=aP[S].offset;break;}}if(!R){R=100;S=aR;}R=N(R);var aN=(R-E)/(S-aM+1);for(;aM<S;aM++){E+=aN;aP[aM].offset=E+"%";}}}return aP;}),ag=function(){var E,i,S,R,e;if(af.is(arguments[0],"string")||af.is(arguments[0],"object")){if(af.is(arguments[0],"string")){E=D.getElementById(arguments[0]);}else{E=arguments[0];}if(E.tagName){if(arguments[1]==null){return{container:E,width:E.style.pixelWidth||E.offsetWidth,height:E.style.pixelHeight||E.offsetHeight};}else{return{container:E,width:arguments[1],height:arguments[2]};}}}else{if(af.is(arguments[0],ad)&&arguments[l]>3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},au=function(e,E){var i=this;for(var R in E){if(E[J](R)&&!(R in e)){switch(typeof E[R]){case"function":(function(S){e[R]=e===i?S:function(){return S[aI](i,arguments);};})(E[R]);break;case"object":e[R]=e[R]||{};au.call(this,e[R],E[R]);break;default:e[R]=E[R];break;}}}},ac=function(e,i){e==i.top&&(i.top=e.prev);e==i.bottom&&(i.bottom=e.next);e.next&&(e.next.prev=e.prev);e.prev&&(e.prev.next=e.next);},P=function(e,i){ac(e,i);e.next=null;e.prev=i.top;i.top.next=e;i.top=e;},j=function(e,i){ac(e,i);e.next=i.bottom;e.prev=null;i.bottom.prev=e;i.bottom=e;},v=function(i,e,E){ac(i,E);e==E.top&&(E.top=i);e.next&&(e.next.prev=i);i.next=e.next;i.prev=e;e.next=i;},ah=function(i,e,E){ac(i,E);e==E.bottom&&(E.bottom=i);e.prev&&(e.prev.next=i);i.prev=e.prev;e.prev=i;i.next=e;};if(af.svg){aD.svgns="http://www.w3.org/2000/svg";aD.xlink="http://www.w3.org/1999/xlink";var H=function(e){return +e+(~~e===e)*0.5;},M=function(aM){for(var E=0,R=aM[l];E<R;E++){if(aL.call(aM[E][0])!="a"){for(var e=1,S=aM[E][l];e<S;e++){aM[E][e]=H(aM[E][e]);}}else{aM[E][6]=H(aM[E][6]);aM[E][7]=H(aM[E][7]);}}return aM;},ax=function(E,e){if(e){for(var i in e){if(e[J](i)){E[r](i,e[i]);}}}else{return D.createElementNS(aD.svgns,E);}};af[ao]=function(){return"Your browser supports SVG.\nYou are running Rapha\xebl "+this.version;};var o=function(e,R){var i=ax("path");R.canvas&&R.canvas[az](i);var E=new am(i,R);E.type="path";T(E,{fill:"none",stroke:"#000",path:e});return E;};var b=function(R,aU,e){var aR="linear",aO=0.5,aM=0.5,aW=R.style;aU=(aU+ai)[aC](/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(aX,i,aY){aR="radial";if(i&&aY){aO=N(i);aM=N(aY);if(aA(aO-0.5,2)+aA(aM-0.5,2)>0.25){aM=Math.sqrt(0.25-aA(aO-0.5,2))+0.5;}}return ai;});aU=aU[u](/\s*\-\s*/);if(aR=="linear"){var aN=aU.shift();aN=-N(aN);if(isNaN(aN)){return null;}var S=[0,0,Math.cos(aN*Math.PI/180),Math.sin(aN*Math.PI/180)],aT=1/(f(Math.abs(S[2]),Math.abs(S[3]))||1);S[2]*=aT;S[3]*=aT;if(S[2]<0){S[0]=-S[2];S[2]=0;}if(S[3]<0){S[1]=-S[3];S[3]=0;}}var aQ=n(aU);if(!aQ){return null;}var E=ax(aR+"Gradient");E.id="r"+(af._id++)[ao](36);aR=="radial"?ax(E,{fx:aO,fy:aM}):ax(E,{x1:S[0],y1:S[1],x2:S[2],y2:S[3]});e.defs[az](E);for(var aP=0,aV=aQ[l];aP<aV;aP++){var aS=ax("stop");ax(aS,{offset:aQ[aP].offset?aQ[aP].offset:!aP?"0%":"100%","stop-color":aQ[aP].color||"#fff"});E[az](aS);}ax(R,{fill:"url(#"+E.id+")",opacity:1,"fill-opacity":1});aW.fill=ai;aW.opacity=1;aW.fillOpacity=1;return 1;};var G=function(i){var e=i.getBBox();ax(i.pattern,{patternTransform:af.format("translate({0},{1})",e.x,e.y)});};var T=function(aT,a2){var aW={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},aY=aT.node,aU=aT.attrs,aQ=aT.rotate(),aM=function(a9,a8){a8=aW[aL.call(a8)];if(a8){var a6=a9.attrs["stroke-width"]||"1",a4={round:a6,square:a6,butt:0}[a9.attrs["stroke-linecap"]||a2["stroke-linecap"]]||0,a7=[];var a5=a8[l];while(a5--){a7[a5]=a8[a5]*a6+((a5%2)?1:-1)*a4;}ax(aY,{"stroke-dasharray":a7[an](",")});}};a2[J]("rotation")&&(aQ=a2.rotation);var aP=(aQ+ai)[u](a);if(!(aP.length-1)){aP=null;}else{aP[1]=+aP[1];aP[2]=+aP[2];}N(aQ)&&aT.rotate(0,true);for(var aX in a2){if(a2[J](aX)){if(!h[J](aX)){continue;}var aV=a2[aX];aU[aX]=aV;switch(aX){case"rotation":aT.rotate(aV,true);break;case"href":case"title":case"target":var a0=aY.parentNode;if(aL.call(a0.tagName)!="a"){var R=ax("a");a0.insertBefore(R,aY);R[az](aY);a0=R;}a0.setAttributeNS(aT.paper.xlink,aX,aV);break;case"cursor":aY.style.cursor=aV;break;case"clip-rect":var i=(aV+ai)[u](a);if(i[l]==4){aT.clip&&aT.clip.parentNode.parentNode.removeChild(aT.clip.parentNode);var E=ax("clipPath"),aZ=ax("rect");E.id="r"+(af._id++)[ao](36);ax(aZ,{x:i[0],y:i[1],width:i[2],height:i[3]});E[az](aZ);aT.paper.defs[az](E);ax(aY,{"clip-path":"url(#"+E.id+")"});aT.clip=aZ;}if(!aV){var a1=D.getElementById(aY.getAttribute("clip-path")[aC](/(^url\(#|\)$)/g,ai));a1&&a1.parentNode.removeChild(a1);ax(aY,{"clip-path":ai});delete aT.clip;}break;case"path":if(aV&&aT.type=="path"){aU.path=M(p(aV));ax(aY,{d:aU.path});}break;case"width":aY[r](aX,aV);if(aU.fx){aX="x";aV=aU.x;}else{break;}case"x":if(aU.fx){aV=-aU.x-(aU.width||0);}case"rx":if(aX=="rx"&&aT.type=="rect"){break;}case"cx":aP&&(aX=="x"||aX=="cx")&&(aP[1]+=aV-aU[aX]);aY[r](aX,H(aV));aT.pattern&&G(aT);break;case"height":aY[r](aX,aV);if(aU.fy){aX="y";aV=aU.y;}else{break;}case"y":if(aU.fy){aV=-aU.y-(aU.height||0);}case"ry":if(aX=="ry"&&aT.type=="rect"){break;}case"cy":aP&&(aX=="y"||aX=="cy")&&(aP[2]+=aV-aU[aX]);aY[r](aX,H(aV));aT.pattern&&G(aT);break;case"r":if(aT.type=="rect"){ax(aY,{rx:aV,ry:aV});}else{aY[r](aX,aV);}break;case"src":if(aT.type=="image"){aY.setAttributeNS(aT.paper.xlink,"href",aV);}break;case"stroke-width":aY.style.strokeWidth=aV;aY[r](aX,aV);if(aU["stroke-dasharray"]){aM(aT,aU["stroke-dasharray"]);}break;case"stroke-dasharray":aM(aT,aV);break;case"translation":var aN=(aV+ai)[u](a);if(aP){aP[1]+=+aN[0];aP[2]+=+aN[1];}q.call(aT,(+aN[0]+1||2)-1,(+aN[1]+1||2)-1);break;case"scale":var aN=(aV+ai)[u](a);aT.scale(+aN[0]||1,+aN[1]||+aN[0]||1,+aN[2]||null,+aN[3]||null);break;case"fill":var S=(aV+ai).match(c);if(S){var E=ax("pattern"),aS=ax("image");E.id="r"+(af._id++)[ao](36);ax(E,{x:0,y:0,patternUnits:"userSpaceOnUse"});ax(aS,{x:0,y:0});aS.setAttributeNS(aT.paper.xlink,"href",S[1]);E[az](aS);var a3=D.createElement("img");a3.style.cssText="position:absolute;left:-9999em;top-9999em";a3.onload=function(){ax(E,{width:this.offsetWidth,height:this.offsetHeight});ax(aS,{width:this.offsetWidth,height:this.offsetHeight});D.body.removeChild(this);aD.safari();};D.body[az](a3);a3.src=S[1];aT.paper.defs[az](E);aY.style.fill="url(#"+E.id+")";ax(aY,{fill:"url(#"+E.id+")"});aT.pattern=E;aT.pattern&&G(aT);break;}if(!af.getRGB(aV).error){delete a2.gradient;delete aU.gradient;!af.is(aU.opacity,"undefined")&&af.is(a2.opacity,"undefined")&&ax(aY,{opacity:aU.opacity});!af.is(aU["fill-opacity"],"undefined")&&af.is(a2["fill-opacity"],"undefined")&&ax(aY,{"fill-opacity":aU["fill-opacity"]});}else{if((({circle:1,ellipse:1})[J](aT.type)||(aV+ai).charAt()!="r")&&b(aY,aV,aT.paper)){aU.gradient=aV;aU.fill="none";break;}}case"stroke":aY[r](aX,af.getRGB(aV).hex);break;case"gradient":(({circle:1,ellipse:1})[J](aT.type)||(aV+ai).charAt()!="r")&&b(aY,aV,aT.paper);break;case"opacity":case"fill-opacity":if(aU.gradient){var e=D.getElementById(aY.getAttribute("fill")[aC](/^url\(#|\)$/g,ai));if(e){var aO=e.getElementsByTagName("stop");aO[aO[l]-1][r]("stop-opacity",aV);}break;}default:aX=="font-size"&&(aV=z(aV,10)+"px");var aR=aX[aC](/(\-.)/g,function(a4){return aB.call(a4.substring(1));});aY.style[aR]=aV;aY[r](aX,aV);break;}}}x(aT,a2);if(aP){aT.rotate(aP.join(ae));}else{N(aQ)&&aT.rotate(aQ,true);}};var g=1.2;var x=function(e,S){if(e.type!="text"||!(S[J]("text")||S[J]("font")||S[J]("font-size")||S[J]("x")||S[J]("y"))){return;}var aQ=e.attrs,E=e.node,aS=E.firstChild?z(D.defaultView.getComputedStyle(E.firstChild,ai).getPropertyValue("font-size"),10):10;if(S[J]("text")){aQ.text=S.text;while(E.firstChild){E.removeChild(E.firstChild);}var R=(S.text+ai)[u]("\n");for(var aM=0,aR=R[l];aM<aR;aM++){if(R[aM]){var aO=ax("tspan");aM&&ax(aO,{dy:aS*g,x:aQ.x});aO[az](D.createTextNode(R[aM]));E[az](aO);}}}else{var R=E.getElementsByTagName("tspan");for(var aM=0,aR=R[l];aM<aR;aM++){aM&&ax(R[aM],{dy:aS*g,x:aQ.x});}}ax(E,{y:aQ.y});var aN=e.getBBox(),aP=aQ.y-(aN.y+aN.height/2);aP&&isFinite(aP)&&ax(E,{y:aQ.y+aP});};var am=function(i,e){var R=0,E=0;this[0]=i;this.id=af._oid++;this.node=i;i.raphael=this;this.paper=e;this.attrs=this.attrs||{};this.transformations=[];this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1};!e.bottom&&(e.bottom=this);this.prev=e.top;e.top&&(e.top.next=this);e.top=this;this.next=null;};am[aK].rotate=function(i,e,R){if(this.removed){return this;}if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy][an](ae);}return this._.rt.deg;}var E=this.getBBox();i=(i+ai)[u](a);if(i[l]-1){e=N(i[1]);R=N(i[2]);}i=N(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}(R==null)&&(e=null);this._.rt.cx=e;this._.rt.cy=R;e=e==null?E.x+E.width/2:e;R=R==null?E.y+E.height/2:R;if(this._.rt.deg){this.transformations[0]=af.format("rotate({0} {1} {2})",this._.rt.deg,e,R);this.clip&&ax(this.clip,{transform:af.format("rotate({0} {1} {2})",-this._.rt.deg,e,R)});}else{this.transformations[0]=ai;this.clip&&ax(this.clip,{transform:ai});}ax(this.node,{transform:this.transformations[an](ae)});return this;};am[aK].hide=function(){!this.removed&&(this.node.style.display="none");return this;};am[aK].show=function(){!this.removed&&(this.node.style.display="");return this;};am[aK].remove=function(){if(this.removed){return;}ac(this,this.paper);this.node.parentNode.removeChild(this.node);for(var e in this){delete this[e];}this.removed=true;};am[aK].getBBox=function(){if(this.removed){return this;}if(this.type=="path"){return L(this.attrs.path);}if(this.node.style.display=="none"){this.show();var R=true;}var aO={};try{aO=this.node.getBBox();}catch(aM){}finally{aO=aO||{};}if(this.type=="text"){aO={x:aO.x,y:Infinity,width:0,height:0};for(var E=0,S=this.node.getNumberOfChars();E<S;E++){var aN=this.node.getExtentOfChar(E);(aN.y<aO.y)&&(aO.y=aN.y);(aN.y+aN.height-aO.y>aO.height)&&(aO.height=aN.y+aN.height-aO.y);(aN.x+aN.width-aO.x>aO.width)&&(aO.width=aN.x+aN.width-aO.x);}}R&&this.hide();return aO;};am[aK].attr=function(){if(this.removed){return this;}if(arguments[l]==1&&af.is(arguments[0],"string")){if(arguments[0]=="translation"){return q.call(this);}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(arguments[l]==1&&af.is(arguments[0],"array")){var e={};for(var i in arguments[0]){if(arguments[0][J](i)){e[arguments[0][i]]=this.attrs[arguments[0][i]];}}return e;}if(arguments[l]==2){var E={};E[arguments[0]]=arguments[1];T(this,E);}else{if(arguments[l]==1&&af.is(arguments[0],"object")){T(this,arguments[0]);}}return this;};am[aK].toFront=function(){if(this.removed){return this;}this.node.parentNode[az](this.node);var e=this.paper;e.top!=this&&P(this,e);return this;};am[aK].toBack=function(){if(this.removed){return this;}if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);j(this,this.paper);var e=this.paper;}return this;};am[aK].insertAfter=function(i){if(this.removed){return this;}var e=this.paper,E=i.node;if(E.nextSibling){E.parentNode.insertBefore(this.node,E.nextSibling);}else{E.parentNode[az](this.node);}v(this,i,this.paper);return this;};am[aK].insertBefore=function(e){if(this.removed){return this;}var i=e.node;i.parentNode.insertBefore(this.node,i);ah(this,e,this.paper);return this;};var I=function(i,e,aM,S){e=H(e);aM=H(aM);var R=ax("circle");i.canvas&&i.canvas[az](R);var E=new am(R,i);E.attrs={cx:e,cy:aM,r:S,fill:"none",stroke:"#000"};E.type="circle";ax(R,E.attrs);return E;};var at=function(E,e,aO,i,aM,aN){e=H(e);aO=H(aO);var S=ax("rect");E.canvas&&E.canvas[az](S);var R=new am(S,E);R.attrs={x:e,y:aO,width:i,height:aM,r:aN||0,rx:aN||0,ry:aN||0,fill:"none",stroke:"#000"};R.type="rect";ax(S,R.attrs);return R;};var Z=function(i,e,aN,aM,S){e=H(e);aN=H(aN);var R=ax("ellipse");i.canvas&&i.canvas[az](R);var E=new am(R,i);E.attrs={cx:e,cy:aN,rx:aM,ry:S,fill:"none",stroke:"#000"};E.type="ellipse";ax(R,E.attrs);return E;};var m=function(E,aN,e,aO,i,aM){var S=ax("image");ax(S,{x:e,y:aO,width:i,height:aM,preserveAspectRatio:"none"});S.setAttributeNS(E.xlink,"href",aN);E.canvas&&E.canvas[az](S);var R=new am(S,E);R.attrs={x:e,y:aO,width:i,height:aM,src:aN};R.type="image";return R;};var O=function(i,e,aM,S){var R=ax("text");ax(R,{x:e,y:aM,"text-anchor":"middle"});i.canvas&&i.canvas[az](R);var E=new am(R,i);E.attrs={x:e,y:aM,"text-anchor":"middle",text:S,font:h.font,stroke:"none",fill:"#000"};E.type="text";T(E,E.attrs);return E;};var aH=function(i,e){this.width=i||this.width;this.height=e||this.height;this.canvas[r]("width",this.width);this.canvas[r]("height",this.height);return this;};var s=function(){var R=ag[aI](null,arguments),E=R&&R.container,i=R.x,aO=R.y,S=R.width,e=R.height;if(!E){throw new Error("SVG container not found.");}aD.canvas=ax("svg");var aN=aD.canvas;aD.width=S||512;aD.height=e||342;aN[r]("width",aD.width);aN[r]("height",aD.height);if(E==1){aN.style.cssText="position:absolute;left:"+i+"px;top:"+aO+"px";D.body[az](aN);}else{if(E.firstChild){E.insertBefore(aN,E.firstChild);}else{E[az](aN);}}E={canvas:aN};for(var aM in aD){if(aD[J](aM)){E[aM]=aD[aM];}}E.bottom=E.top=null;au.call(E,E,af.fn);E.clear();E.raphael=af;return E;};aD.clear=function(){var e=this.canvas;while(e.firstChild){e.removeChild(e.firstChild);}this.bottom=this.top=null;(this.desc=ax("desc"))[az](D.createTextNode("Created with Rapha\xebl"));e[az](this.desc);e[az](this.defs=ax("defs"));};aD.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var e in this){delete this[e];}};}if(af.vml){var av=function(aV){var aS=/[ahqtv]/ig,aN=p;(aV+ai).match(aS)&&(aN=A);aS=/[clmz]/g;if(aN==p&&!(aV+ai).match(aS)){var E={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},S=/([clmz]),?([^clmz]*)/gi,aM=/-?[^,\s-]+/g;var aR=(aV+ai)[aC](S,function(aW,aY,i){var aX=[];i[aC](aM,function(aZ){aX[d](H(aZ));});return E[aY]+aX;});return aR;}var aT=aN(aV),R,aR=[],e;for(var aP=0,aU=aT[l];aP<aU;aP++){R=aT[aP];e=aL.call(aT[aP][0]);e=="z"&&(e="x");for(var aO=1,aQ=R[l];aO<aQ;aO++){e+=H(R[aO])+(aO!=aQ-1?",":ai);}aR[d](e);}return aR[an](ae);};af[ao]=function(){return"Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\xebl "+this.version;};var o=function(e,aM){var R=Y("group");R.style.cssText="position:absolute;left:0;top:0;width:"+aM.width+"px;height:"+aM.height+"px";R.coordsize=aM.coordsize;R.coordorigin=aM.coordorigin;var E=Y("shape"),i=E.style;i.width=aM.width+"px";i.height=aM.height+"px";E.coordsize=this.coordsize;E.coordorigin=this.coordorigin;R[az](E);var S=new am(E,R,aM);S.isAbsolute=true;S.type="path";S.path=[];S.Path=ai;e&&T(S,{fill:"none",stroke:"#000",path:e});aM.canvas[az](R);return S;};var T=function(aQ,aV){aQ.attrs=aQ.attrs||{};var aT=aQ.node,aW=aQ.attrs,aN=aT.style,R,a0=aQ;for(var aO in aV){if(aV[J](aO)){aW[aO]=aV[aO];}}aV.href&&(aT.href=aV.href);aV.title&&(aT.title=aV.title);aV.target&&(aT.target=aV.target);aV.cursor&&(aN.cursor=aV.cursor);if(aV.path&&aQ.type=="path"){aW.path=aV.path;aT.path=av(aW.path);}if(aV.rotation!=null){aQ.rotate(aV.rotation,true);}if(aV.translation){R=(aV.translation+ai)[u](a);q.call(aQ,R[0],R[1]);if(aQ._.rt.cx!=null){aQ._.rt.cx+=+R[0];aQ._.rt.cy+=+R[1];aQ.setBox(aQ.attrs,R[0],R[1]);}}if(aV.scale){R=(aV.scale+ai)[u](a);aQ.scale(+R[0]||1,+R[1]||+R[0]||1,+R[2]||null,+R[3]||null);}if("clip-rect" in aV){var e=(aV["clip-rect"]+ai)[u](a);if(e[l]==4){e[2]=+e[2]+(+e[0]);e[3]=+e[3]+(+e[1]);var aP=aT.clipRect||D.createElement("div"),aZ=aP.style,aM=aT.parentNode;aZ.clip=af.format("rect({1}px {2}px {3}px {0}px)",e);if(!aT.clipRect){aZ.position="absolute";aZ.top=0;aZ.left=0;aZ.width=aQ.paper.width+"px";aZ.height=aQ.paper.height+"px";aM.parentNode.insertBefore(aP,aM);aP[az](aM);aT.clipRect=aP;}}if(!aV["clip-rect"]){aT.clipRect&&(aT.clipRect.style.clip=ai);}}if(aQ.type=="image"&&aV.src){aT.src=aV.src;}if(aQ.type=="image"&&aV.opacity){aT.filterOpacity=" progid:DXImageTransform.Microsoft.Alpha(opacity="+(aV.opacity*100)+")";aN.filter=(aT.filterMatrix||ai)+(aT.filterOpacity||ai);}aV.font&&(aN.font=aV.font);aV["font-family"]&&(aN.fontFamily='"'+aV["font-family"][u](",")[0][aC](/^['"]+|['"]+$/g,ai)+'"');aV["font-size"]&&(aN.fontSize=aV["font-size"]);aV["font-weight"]&&(aN.fontWeight=aV["font-weight"]);aV["font-style"]&&(aN.fontStyle=aV["font-style"]);if(aV.opacity!=null||aV["stroke-width"]!=null||aV.fill!=null||aV.stroke!=null||aV["stroke-width"]!=null||aV["stroke-opacity"]!=null||aV["fill-opacity"]!=null||aV["stroke-dasharray"]!=null||aV["stroke-miterlimit"]!=null||aV["stroke-linejoin"]!=null||aV["stroke-linecap"]!=null){aT=aQ.shape||aT;var aU=(aT.getElementsByTagName("fill")&&aT.getElementsByTagName("fill")[0]),aX=false;!aU&&(aX=aU=Y("fill"));if("fill-opacity" in aV||"opacity" in aV){var i=((+aW["fill-opacity"]+1||2)-1)*((+aW.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);aU.opacity=i;}aV.fill&&(aU.on=true);if(aU.on==null||aV.fill=="none"){aU.on=false;}if(aU.on&&aV.fill){var E=aV.fill.match(c);if(E){aU.src=E[1];aU.type="tile";}else{aU.color=af.getRGB(aV.fill).hex;aU.src=ai;aU.type="solid";if(af.getRGB(aV.fill).error&&(a0.type in {circle:1,ellipse:1}||(aV.fill+ai).charAt()!="r")&&b(a0,aV.fill)){aW.fill="none";aW.gradient=aV.fill;}}}aX&&aT[az](aU);var S=(aT.getElementsByTagName("stroke")&&aT.getElementsByTagName("stroke")[0]),aY=false;!S&&(aY=S=Y("stroke"));if((aV.stroke&&aV.stroke!="none")||aV["stroke-width"]||aV["stroke-opacity"]!=null||aV["stroke-dasharray"]||aV["stroke-miterlimit"]||aV["stroke-linejoin"]||aV["stroke-linecap"]){S.on=true;}(aV.stroke=="none"||S.on==null||aV.stroke==0||aV["stroke-width"]==0)&&(S.on=false);S.on&&aV.stroke&&(S.color=af.getRGB(aV.stroke).hex);var i=((+aW["stroke-opacity"]+1||2)-1)*((+aW.opacity+1||2)-1),aR=(N(aV["stroke-width"])||1)*0.75;i<0&&(i=0);i>1&&(i=1);aV["stroke-width"]==null&&(aR=aW["stroke-width"]);aV["stroke-width"]&&(S.weight=aR);aR&&aR<1&&(i*=aR)&&(S.weight=1);S.opacity=i;aV["stroke-linejoin"]&&(S.joinstyle=aV["stroke-linejoin"]||"miter");S.miterlimit=aV["stroke-miterlimit"]||8;aV["stroke-linecap"]&&(S.endcap=aV["stroke-linecap"]=="butt"?"flat":aV["stroke-linecap"]=="square"?"square":"round");if(aV["stroke-dasharray"]){var aS={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};S.dashstyle=aS[J](aV["stroke-dasharray"])?aS[aV["stroke-dasharray"]]:ai;}aY&&aT[az](S);}if(a0.type=="text"){var aN=a0.paper.span.style;aW.font&&(aN.font=aW.font);aW["font-family"]&&(aN.fontFamily=aW["font-family"]);aW["font-size"]&&(aN.fontSize=aW["font-size"]);aW["font-weight"]&&(aN.fontWeight=aW["font-weight"]);aW["font-style"]&&(aN.fontStyle=aW["font-style"]);a0.node.string&&(a0.paper.span.innerHTML=(a0.node.string+ai)[aC](/</g,"&#60;")[aC](/&/g,"&#38;")[aC](/\n/g,"<br>"));a0.W=aW.w=a0.paper.span.offsetWidth;a0.H=aW.h=a0.paper.span.offsetHeight;a0.X=aW.x;a0.Y=aW.y+H(a0.H/2);switch(aW["text-anchor"]){case"start":a0.node.style["v-text-align"]="left";a0.bbx=H(a0.W/2);break;case"end":a0.node.style["v-text-align"]="right";a0.bbx=-H(a0.W/2);break;default:a0.node.style["v-text-align"]="center";break;}}};var b=function(e,aO){e.attrs=e.attrs||{};var aP=e.attrs,aR=e.node.getElementsByTagName("fill"),aM="linear",aN=".5 .5";e.attrs.gradient=aO;aO=(aO+ai)[aC](/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(aT,aU,i){aM="radial";if(aU&&i){aU=N(aU);i=N(i);if(aA(aU-0.5,2)+aA(i-0.5,2)>0.25){i=Math.sqrt(0.25-aA(aU-0.5,2))+0.5;}aN=aU+ae+i;}return ai;});aO=aO[u](/\s*\-\s*/);if(aM=="linear"){var E=aO.shift();E=-N(E);if(isNaN(E)){return null;}}var S=n(aO);if(!S){return null;}e=e.shape||e.node;aR=aR[0]||Y("fill");if(S[l]){aR.on=true;aR.method="none";aR.type=(aM=="radial")?"gradientradial":"gradient";aR.color=S[0].color;aR.color2=S[S[l]-1].color;var aS=[];for(var R=0,aQ=S[l];R<aQ;R++){S[R].offset&&aS[d](S[R].offset+ae+S[R].color);}aR.colors.value=aS[l]?aS[an](","):"0% "+aR.color;if(aM=="radial"){aR.focus="100%";aR.focussize=aN;aR.focusposition=aN;}else{aR.angle=(270-E)%360;}}return 1;};var am=function(S,aN,e){var aM=0,E=0,i=0,R=1;this[0]=S;this.id=af._oid++;this.node=S;S.raphael=this;this.X=0;this.Y=0;this.attrs={};this.Group=aN;this.paper=e;this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1};!e.bottom&&(e.bottom=this);this.prev=e.top;e.top&&(e.top.next=this);e.top=this;this.next=null;};am[aK].rotate=function(i,e,E){if(this.removed){return this;}if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy][an](ae);}return this._.rt.deg;}i=(i+ai)[u](a);if(i[l]-1){e=N(i[1]);E=N(i[2]);}i=N(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}E==null&&(e=null);this._.rt.cx=e;this._.rt.cy=E;this.setBox(this.attrs,e,E);this.Group.style.rotation=this._.rt.deg;return this;};am[aK].setBox=function(aM,aN,S){if(this.removed){return this;}var E=this.Group.style,aO=(this.shape&&this.shape.style)||this.node.style;aM=aM||{};for(var aP in aM){if(aM[J](aP)){this.attrs[aP]=aM[aP];}}aN=aN||this._.rt.cx;S=S||this._.rt.cy;var aS=this.attrs,aV,aU,aW,aR;switch(this.type){case"circle":aV=aS.cx-aS.r;aU=aS.cy-aS.r;aW=aR=aS.r*2;break;case"ellipse":aV=aS.cx-aS.rx;aU=aS.cy-aS.ry;aW=aS.rx*2;aR=aS.ry*2;break;case"rect":case"image":aV=+aS.x;aU=+aS.y;aW=aS.width||0;aR=aS.height||0;break;case"text":this.textpath.v=["m",H(aS.x),", ",H(aS.y-2),"l",H(aS.x)+1,", ",H(aS.y-2)][an](ai);aV=aS.x-H(this.W/2);aU=aS.y-this.H/2;aW=this.W;aR=this.H;break;case"path":if(!this.attrs.path){aV=0;aU=0;aW=this.paper.width;aR=this.paper.height;}else{var aQ=L(this.attrs.path);aV=aQ.x;aU=aQ.y;aW=aQ.width;aR=aQ.height;}break;default:aV=0;aU=0;aW=this.paper.width;aR=this.paper.height;break;}aN=(aN==null)?aV+aW/2:aN;S=(S==null)?aU+aR/2:S;var R=aN-this.paper.width/2,aT=S-this.paper.height/2;if(this.type=="path"||this.type=="text"){(E.left!=R+"px")&&(E.left=R+"px");(E.top!=aT+"px")&&(E.top=aT+"px");this.X=this.type=="text"?aV:-R;this.Y=this.type=="text"?aU:-aT;this.W=aW;this.H=aR;(aO.left!=-R+"px")&&(aO.left=-R+"px");(aO.top!=-aT+"px")&&(aO.top=-aT+"px");}else{(E.left!=R+"px")&&(E.left=R+"px");(E.top!=aT+"px")&&(E.top=aT+"px");this.X=aV;this.Y=aU;this.W=aW;this.H=aR;(E.width!=this.paper.width+"px")&&(E.width=this.paper.width+"px");(E.height!=this.paper.height+"px")&&(E.height=this.paper.height+"px");(aO.left!=aV-R+"px")&&(aO.left=aV-R+"px");(aO.top!=aU-aT+"px")&&(aO.top=aU-aT+"px");(aO.width!=aW+"px")&&(aO.width=aW+"px");(aO.height!=aR+"px")&&(aO.height=aR+"px");var aX=(+aM.r||0)/(aw(aW,aR));if(this.type=="rect"&&this.arcsize!=aX&&(aX||this.arcsize)){var e=Y(aX?"roundrect":"rect");e.arcsize=aX;this.Group[az](e);this.node.parentNode.removeChild(this.node);this.node=e;this.arcsize=aX;this.attr(this.attrs);}}};am[aK].hide=function(){!this.removed&&(this.Group.style.display="none");return this;};am[aK].show=function(){!this.removed&&(this.Group.style.display="block");return this;};am[aK].getBBox=function(){if(this.removed){return this;}if(this.type=="path"){return L(this.attrs.path);}return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H};};am[aK].remove=function(){if(this.removed){return;}ac(this,this.paper);this.node.parentNode.removeChild(this[0]);this.Group.parentNode.removeChild(this.Group);this.shape&&this.shape.parentNode.removeChild(this.shape);for(var e in this){delete this[e];}this.removed=true;};am[aK].attr=function(){if(this.removed){return this;}if(arguments[l]==1&&af.is(arguments[0],"string")){if(arguments[0]=="translation"){return q.call(this);}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(this.attrs&&arguments[l]==1&&af.is(arguments[0],"array")){var e={};for(var E=0,R=arguments[0][l];E<R;E++){e[arguments[0][E]]=this.attrs[arguments[0][E]];}return e;}var S;if(arguments[l]==2){S={};S[arguments[0]]=arguments[1];}arguments[l]==1&&af.is(arguments[0],"object")&&(S=arguments[0]);if(S){if(S.text&&this.type=="text"){this.node.string=S.text;}T(this,S);if(S.gradient&&(({circle:1,ellipse:1})[J](this.type)||(S.gradient+ai).charAt()!="r")){b(this,S.gradient);}(this.type!="path"||this._.rt.deg)&&this.setBox(this.attrs);}return this;};am[aK].toFront=function(){!this.removed&&this.Group.parentNode[az](this.Group);this.paper.top!=this&&P(this,this.paper);return this;};am[aK].toBack=function(){if(this.removed){return this;}if(this.Group.parentNode.firstChild!=this.Group){this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild);j(this,this.paper);}return this;};am[aK].insertAfter=function(e){if(this.removed){return this;}if(e.Group.nextSibling){e.Group.parentNode.insertBefore(this.Group,e.Group.nextSibling);}else{e.Group.parentNode[az](this.Group);}v(this,e,this.paper);return this;};am[aK].insertBefore=function(e){if(this.removed){return this;}e.Group.parentNode.insertBefore(this.Group,e.Group);ah(this,e,this.paper);return this;};var I=function(i,e,aO,aM){var S=Y("group"),aN=Y("oval"),E=aN.style;S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;S[az](aN);var R=new am(aN,S,i);R.type="circle";T(R,{stroke:"#000",fill:"none"});R.attrs.cx=e;R.attrs.cy=aO;R.attrs.r=aM;R.setBox({x:e-aM,y:aO-aM,width:aM*2,height:aM*2});i.canvas[az](S);return R;};var at=function(i,aO,aN,aP,R,e){var S=Y("group"),E=Y(e?"roundrect":"rect"),aQ=(+e||0)/(aw(aP,R));E.arcsize=aQ;S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;S[az](E);var aM=new am(E,S,i);aM.type="rect";T(aM,{stroke:"#000"});aM.arcsize=aQ;aM.setBox({x:aO,y:aN,width:aP,height:R,r:+e});i.canvas[az](S);return aM;};var Z=function(e,aP,aO,E,i){var S=Y("group"),R=Y("oval"),aN=R.style;S.style.cssText="position:absolute;left:0;top:0;width:"+e.width+"px;height:"+e.height+"px";S.coordsize=e.coordsize;S.coordorigin=e.coordorigin;S[az](R);var aM=new am(R,S,e);aM.type="ellipse";T(aM,{stroke:"#000"});aM.attrs.cx=aP;aM.attrs.cy=aO;aM.attrs.rx=E;aM.attrs.ry=i;aM.setBox({x:aP-E,y:aO-i,width:E*2,height:i*2});e.canvas[az](S);return aM;};var m=function(i,e,aP,aO,aQ,R){var S=Y("group"),E=Y("image"),aN=E.style;S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;E.src=e;S[az](E);var aM=new am(E,S,i);aM.type="image";aM.attrs.src=e;aM.attrs.x=aP;aM.attrs.y=aO;aM.attrs.w=aQ;aM.attrs.h=R;aM.setBox({x:aP,y:aO,width:aQ,height:R});i.canvas[az](S);return aM;};var O=function(i,aP,aO,aQ){var S=Y("group"),R=Y("shape"),aN=R.style,aR=Y("path"),e=aR.style,E=Y("textpath");S.style.cssText="position:absolute;left:0;top:0;width:"+i.width+"px;height:"+i.height+"px";S.coordsize=i.coordsize;S.coordorigin=i.coordorigin;aR.v=af.format("m{0},{1}l{2},{1}",H(aP),H(aO),H(aP)+1);aR.textpathok=true;aN.width=i.width;aN.height=i.height;E.string=aQ+ai;E.on=true;R[az](E);R[az](aR);S[az](R);var aM=new am(E,S,i);aM.shape=R;aM.textpath=aR;aM.type="text";aM.attrs.text=aQ;aM.attrs.x=aP;aM.attrs.y=aO;aM.attrs.w=1;aM.attrs.h=1;T(aM,{font:h.font,stroke:"none",fill:"#000"});aM.setBox();i.canvas[az](S);return aM;};var aH=function(E,e){var i=this.canvas.style;this.width=N(E||this.width);this.height=N(e||this.height);i.width=this.width+"px";i.height=this.height+"px";i.clip="rect(0 "+this.width+"px "+this.height+"px 0)";this.coordsize=this.width+ae+this.height;var R=this.bottom;while(R){R.Group.coordsize=this.coordsize;R.attr(R.attrs);R=R.next;}return this;};D.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!D.namespaces.rvml&&D.namespaces.add("rvml","urn:schemas-microsoft-com:vml");var Y=function(e){return D.createElement("<rvml:"+e+' class="rvml">');};}catch(X){var Y=function(e){return D.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var s=function(){var R=ag[aI](null,arguments),i=R.container,aQ=R.height,aR,E=R.width,aP=R.x,aO=R.y;if(!i){throw new Error("VML container not found.");}var aM={},aN=aM.canvas=D.createElement("div"),S=aN.style;E=N(E)||512;aQ=N(aQ)||342;aM.width=E;aM.height=aQ;aM.coordsize=E+ae+aQ;aM.coordorigin="0 0";aM.span=D.createElement("span");aM.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";aN[az](aM.span);S.cssText=af.format("width:{0}px;height:{1}px;position:absolute;clip:rect(0 {0}px {1}px 0)",E,aQ);if(i==1){D.body[az](aN);S.left=aP+"px";S.top=aO+"px";i={style:{width:E,height:aQ}};}else{i.style.width=E;i.style.height=aQ;if(i.firstChild){i.insertBefore(aN,i.firstChild);}else{i[az](aN);}}for(var e in aD){if(aD[J](e)){aM[e]=aD[e];}}au.call(aM,aM,af.fn);aM.top=aM.bottom=null;aM.raphael=af;return aM;};aD.clear=function(){this.canvas.innerHTML=ai;this.bottom=this.top=null;};aD.remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var e in this){delete this[e];}};}if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){aD.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){e.remove();});};}else{aD.safari=function(){};}var W=(function(){if(D.addEventListener){return function(S,E,i,e){var R=function(aM){return i.call(e,aM);};S.addEventListener(E,R,false);return function(){S.removeEventListener(E,R,false);return true;};};}else{if(D.attachEvent){return function(aM,R,E,i){var S=function(aN){return E.call(i,aN||aj.event);};aM.attachEvent("on"+R,S);var e=function(){aM.detachEvent("on"+R,S);return true;};if(R=="mouseover"){aM.attachEvent("onmouseenter",S);return function(){aM.detachEvent("onmouseenter",S);return e();};}else{if(R=="mouseout"){aM.attachEvent("onmouseleave",S);return function(){aM.detachEvent("onmouseleave",S);return e();};}}return e;};}}})();for(var U=y[l];U--;){(function(e){am[aK][e]=function(i){if(af.is(i,"function")){this.events=this.events||{};this.events[e]=this.events[e]||{};this.events[e][i]=this.events[e][i]||[];this.events[e][i][d](W(this.shape||this.node,e,i,this));}return this;};am[aK]["un"+e]=function(i){var E=this.events;E&&E[e]&&E[e][i]&&E[e][i][l]&&E[e][i].shift()()&&!E[e][i][l]&&delete E[e][i];return this;};})(y[U]);}am[aK].hover=function(i,e){return this.mouseover(i).mouseout(e);};aD.circle=function(e,E,i){return I(this,e||0,E||0,i||0);};aD.rect=function(e,S,i,E,R){return at(this,e||0,S||0,i||0,E||0,R||0);};aD.ellipse=function(e,R,E,i){return Z(this,e||0,R||0,E||0,i||0);};aD.path=function(e){e&&!af.is(e,"string")&&!af.is(e[0],"array")&&(e+=ai);return o(af.format[aI](af,arguments),this);};aD.image=function(R,e,S,i,E){return m(this,R||"about:blank",e||0,S||0,i||0,E||0);};aD.text=function(e,E,i){return O(this,e||0,E||0,i||ai);};aD.set=function(e){arguments[l]>1&&(e=Array[aK].splice.call(arguments,0,arguments[l]));return new K(e);};aD.setSize=aH;am[aK].scale=function(aW,aV,R,E){if(aW==null&&aV==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+ae+this.y;}};}aV=aV||aW;!+aV&&(aV=aW);var a0,aY,aZ,aX,bd=this.attrs;if(aW!=0){var aT=this.getBBox(),aQ=aT.x+aT.width/2,aM=aT.y+aT.height/2,bc=aW/this._.sx,ba=aV/this._.sy;R=(+R||R==0)?R:aQ;E=(+E||E==0)?E:aM;var aS=~~(aW/Math.abs(aW)),aP=~~(aV/Math.abs(aV)),a3=this.node.style,bf=R+(aQ-R)*aS*bc,be=E+(aM-E)*aP*ba;switch(this.type){case"rect":case"image":var aR=bd.width*aS*bc,a2=bd.height*aP*ba,aU=bd.r*aw(bc,ba),aO=bf-aR/2,S=be-a2/2;this.attr({width:aR,height:a2,x:aO,y:S,r:aU});break;case"circle":case"ellipse":this.attr({rx:bd.rx*bc,ry:bd.ry*ba,r:bd.r*aw(bc,ba),cx:bf,cy:be});break;case"path":var a5=V(bd.path),a6=true;for(var a8=0,a1=a5[l];a8<a1;a8++){var a4=a5[a8],aN=aB.call(a4[0]);if(aN=="M"&&a6){continue;}else{a6=false;}if(af.svg&&aN=="A"){a4[a5[a8][l]-2]*=bc;a4[a5[a8][l]-1]*=ba;a4[1]*=bc;a4[2]*=ba;a4[5]=+(aS+aP?!!+a4[5]:!+a4[5]);}else{for(var a7=1,a9=a4[l];a7<a9;a7++){a4[a7]*=(a7%2&&aN!="V")?bc:ba;}}}var e=L(a5),a0=bf-e.x-e.width/2,aY=be-e.y-e.height/2;a5[0][1]+=a0;a5[0][2]+=aY;this.attr({path:a5});break;}if(this.type in {text:1,image:1}&&(aS!=1||aP!=1)){if(this.transformations){this.transformations[2]="scale("[aF](aS,",",aP,")");this.node[r]("transform",this.transformations[an](ae));a0=(aS==-1)?-bd.x-(aR||0):bd.x;aY=(aP==-1)?-bd.y-(a2||0):bd.y;this.attr({x:a0,y:aY});bd.fx=aS-1;bd.fy=aP-1;}else{this.node.filterMatrix=" progid:DXImageTransform.Microsoft.Matrix(M11="[aF](aS,", M12=0, M21=0, M22=",aP,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')");a3.filter=(this.node.filterMatrix||ai)+(this.node.filterOpacity||ai);}}else{if(this.transformations){this.transformations[2]=ai;this.node[r]("transform",this.transformations[an](ae));bd.fx=0;bd.fy=0;}else{this.node.filterMatrix=ai;a3.filter=(this.node.filterMatrix||ai)+(this.node.filterOpacity||ai);}}bd.scale=[aW,aV,R,E][an](ae);this._.sx=aW;this._.sy=aV;}return this;};af.easing_formulas={linear:function(e){return e;},"<":function(e){return aA(e,3);},">":function(e){return aA(e-1,3)+1;},"<>":function(e){e=e*2;if(e<1){return aA(e,3)/2;}e-=2;return(aA(e,3)+2)/2;},backIn:function(i){var e=1.70158;return i*i*((e+1)*i-e);},backOut:function(i){i=i-1;var e=1.70158;return i*i*((e+1)*i+e)+1;},elastic:function(E){if(E==0||E==1){return E;}var i=0.3,e=i/4;return aA(2,-10*E)*Math.sin((E-e)*(2*Math.PI)/i)+1;},bounce:function(R){var i=7.5625,E=2.75,e;if(R<(1/E)){e=i*R*R;}else{if(R<(2/E)){R-=(1.5/E);e=i*R*R+0.75;}else{if(R<(2.5/E)){R-=(2.25/E);e=i*R*R+0.9375;}else{R-=(2.625/E);e=i*R*R+0.984375;}}}return e;}};var B={length:0},aE=function(){var aP=+new Date;for(var a0 in B){if(a0!="length"&&B[J](a0)){var a5=B[a0];if(a5.stop){delete B[a0];B[l]--;continue;}var aN=aP-a5.start,aY=a5.ms,aX=a5.easing,a1=a5.from,aU=a5.diff,R=a5.to,aT=a5.t,aW=a5.prev||0,aO=a5.el,S=a5.callback,aV={},E;if(aN<aY){var aM=af.easing_formulas[aX]?af.easing_formulas[aX](aN/aY):aN/aY;for(var aZ in a1){if(a1[J](aZ)){switch(Q[aZ]){case"number":E=+a1[aZ]+aM*aY*aU[aZ];break;case"colour":E="rgb("+[w(H(a1[aZ].r+aM*aY*aU[aZ].r)),w(H(a1[aZ].g+aM*aY*aU[aZ].g)),w(H(a1[aZ].b+aM*aY*aU[aZ].b))][an](",")+")";break;case"path":E=[];for(var a3=0,aS=a1[aZ][l];a3<aS;a3++){E[a3]=[a1[aZ][a3][0]];for(var a2=1,a4=a1[aZ][a3][l];a2<a4;a2++){E[a3][a2]=+a1[aZ][a3][a2]+aM*aY*aU[aZ][a3][a2];}E[a3]=E[a3][an](ae);}E=E[an](ae);break;case"csv":switch(aZ){case"translation":var aR=aU[aZ][0]*(aN-aW),aQ=aU[aZ][1]*(aN-aW);aT.x+=aR;aT.y+=aQ;E=aR+ae+aQ;break;case"rotation":E=+a1[aZ][0]+aM*aY*aU[aZ][0];a1[aZ][1]&&(E+=","+a1[aZ][1]+","+a1[aZ][2]);break;case"scale":E=[+a1[aZ][0]+aM*aY*aU[aZ][0],+a1[aZ][1]+aM*aY*aU[aZ][1],(2 in R[aZ]?R[aZ][2]:ai),(3 in R[aZ]?R[aZ][3]:ai)][an](ae);break;case"clip-rect":E=[];var a3=4;while(a3--){E[a3]=+a1[aZ][a3]+aM*aY*aU[aZ][a3];}break;}break;}aV[aZ]=E;}}aO.attr(aV);aO._run&&aO._run.call(aO);}else{(aT.x||aT.y)&&aO.translate(-aT.x,-aT.y);R.scale&&(R.scale=R.scale+ai);aO.attr(R);delete B[a0];B[l]--;aO.in_animation=null;af.is(S,"function")&&S.call(aO);}a5.prev=aN;}}af.svg&&aD.safari();B[l]&&setTimeout(aE);},w=function(e){return e>255?255:(e<0?0:e);},q=function(e,E){if(e==null){return{x:this._.tx,y:this._.ty};}this._.tx+=+e;this._.ty+=+E;switch(this.type){case"circle":case"ellipse":this.attr({cx:+e+this.attrs.cx,cy:+E+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+e+this.attrs.x,y:+E+this.attrs.y});break;case"path":var i=V(this.attrs.path);i[0][1]+=+e;i[0][2]+=+E;this.attr({path:i});break;}return this;};am[aK].animateWith=function(i,E,e,S,R){B[i.id]&&(E.start=B[i.id].start);return this.animate(E,e,S,R);};am[aK].onAnimation=function(e){this._run=e||null;return this;};am[aK].animate=function(R,e,aR,aX){if(af.is(aR,"function")||!aR){aX=aR||null;}var aS={},aT={},aU={};for(var aQ in R){if(R[J](aQ)){if(Q[J](aQ)){aS[aQ]=this.attr(aQ);(aS[aQ]==null)&&(aS[aQ]=h[aQ]);aT[aQ]=R[aQ];switch(Q[aQ]){case"number":aU[aQ]=(aT[aQ]-aS[aQ])/e;break;case"colour":aS[aQ]=af.getRGB(aS[aQ]);var aO=af.getRGB(aT[aQ]);aU[aQ]={r:(aO.r-aS[aQ].r)/e,g:(aO.g-aS[aQ].g)/e,b:(aO.b-aS[aQ].b)/e};break;case"path":var E=A(aS[aQ],aT[aQ]);aS[aQ]=E[0];aT[aQ]=E[1];aU[aQ]=[];for(var aN=0,aW=aS[aQ][l];aN<aW;aN++){aU[aQ][aN]=[0];for(var S=1,aP=aS[aQ][aN][l];S<aP;S++){aU[aQ][aN][S]=(aT[aQ][aN][S]-aS[aQ][aN][S])/e;}}break;case"csv":var aV=(R[aQ]+ai)[u](a),aM=(aS[aQ]+ai)[u](a);switch(aQ){case"translation":aS[aQ]=[0,0];aU[aQ]=[aV[0]/e,aV[1]/e];break;case"rotation":aS[aQ]=(aM[1]==aV[1]&&aM[2]==aV[2])?aM:[0,aV[1],aV[2]];aU[aQ]=[(aV[0]-aS[aQ][0])/e,0,0];break;case"scale":R[aQ]=aV;aS[aQ]=(aS[aQ]+ai)[u](a);aU[aQ]=[(aV[0]-aS[aQ][0])/e,(aV[1]-aS[aQ][1])/e,0,0];break;case"clip-rect":aS[aQ]=(aS[aQ]+ai)[u](a);aU[aQ]=[];var aN=4;while(aN--){aU[aQ][aN]=(aV[aN]-aS[aQ][aN])/e;}break;}aT[aQ]=aV;}}}}this.stop();this.in_animation=1;B[this.id]={start:R.start||+new Date,ms:e,easing:aR,from:aS,diff:aU,to:aT,el:this,callback:aX,t:{x:0,y:0}};++B[l]==1&&aE();return this;};am[aK].stop=function(){B[this.id]&&B[l]--;delete B[this.id];return this;};am[aK].translate=function(e,i){return this.attr({translation:e+" "+i});};am[aK][ao]=function(){return"Rapha\xebl\u2019s object";};af.ae=B;var K=function(e){this.items=[];this[l]=0;if(e){for(var E=0,R=e[l];E<R;E++){if(e[E]&&(e[E].constructor==am||e[E].constructor==K)){this[this.items[l]]=this.items[this.items[l]]=e[E];this[l]++;}}}};K[aK][d]=function(){var S,e;for(var E=0,R=arguments[l];E<R;E++){S=arguments[E];if(S&&(S.constructor==am||S.constructor==K)){e=this.items[l];this[e]=this.items[e]=S;this[l]++;}}return this;};K[aK].pop=function(){delete this[this[l]--];return this.items.pop();};for(var t in am[aK]){if(am[aK][J](t)){K[aK][t]=(function(e){return function(){for(var E=0,R=this.items[l];E<R;E++){this.items[E][e][aI](this.items[E],arguments);}return this;};})(t);}}K[aK].attr=function(E,aN){if(E&&af.is(E,"array")&&af.is(E[0],"object")){for(var e=0,aM=E[l];e<aM;e++){this.items[e].attr(E[e]);}}else{for(var R=0,S=this.items[l];R<S;R++){this.items[R].attr[aI](this.items[R],arguments);}}return this;};K[aK].animate=function(aM,E,aP,aO){(af.is(aP,"function")||!aP)&&(aO=aP||null);var e=this.items[l],R=e,aN=this,S;aO&&(S=function(){!--e&&aO.call(aN);});this.items[--R].animate(aM,E,aP||S,S);while(R--){this.items[R].animateWith(this.items[e-1],aM,E,aP||S,S);}return this;};K[aK].insertAfter=function(E){var e=this.items[l];while(e--){this.items[e].insertAfter(E);}};K[aK].getBBox=function(){var e=[],aN=[],E=[],S=[];for(var R=this.items[l];R--;){var aM=this.items[R].getBBox();e[d](aM.x);aN[d](aM.y);E[d](aM.x+aM.width);S[d](aM.y+aM.height);}e=aw[aI](0,e);aN=aw[aI](0,aN);return{x:e,y:aN,width:f[aI](0,E)-e,height:f[aI](0,S)-aN};};af.registerFont=function(i){if(!i.face){return i;}this.fonts=this.fonts||{};var R={w:i.w,face:{},glyphs:{}},E=i.face["font-family"];for(var aN in i.face){if(i.face[J](aN)){R.face[aN]=i.face[aN];}}if(this.fonts[E]){this.fonts[E][d](R);}else{this.fonts[E]=[R];}if(!i.svg){R.face["units-per-em"]=z(i.face["units-per-em"],10);for(var S in i.glyphs){if(i.glyphs[J](S)){var aM=i.glyphs[S];R.glyphs[S]={w:aM.w,k:{},d:aM.d&&"M"+aM.d[aC](/[mlcxtrv]/g,function(aO){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[aO]||"M";})+"z"};if(aM.k){for(var e in aM.k){if(aM[J](e)){R.glyphs[S].k[e]=aM.k[e];}}}}}}return i;};aD.getFont=function(aP,aQ,E,S){S=S||"normal";E=E||"normal";aQ=+aQ||{normal:400,bold:700,lighter:300,bolder:800}[aQ]||400;var aM=af.fonts[aP];if(!aM){var R=new RegExp("(^|\\s)"+aP[aC](/[^\w\d\s+!~.:_-]/g,ai)+"(\\s|$)","i");for(var e in af.fonts){if(af.fonts[J](e)){if(R.test(e)){aM=af.fonts[e];break;}}}}var aN;if(aM){for(var aO=0,aR=aM[l];aO<aR;aO++){aN=aM[aO];if(aN.face["font-weight"]==aQ&&(aN.face["font-style"]==E||!aN.face["font-style"])&&aN.face["font-stretch"]==S){break;}}}return aN;};aD.print=function(aR,aQ,aO,E,aV){var aM=this.set(),aP=(aO+ai)[u](ai),e=0,aU=ai,S;af.is(E,"string")&&(E=this.getFont(E));if(E){S=(aV||16)/E.face["units-per-em"];for(var aN=0,aS=aP[l];aN<aS;aN++){var R=aN&&E.glyphs[aP[aN-1]]||{},aT=E.glyphs[aP[aN]];e+=aN?(R.w||E.w)+(R.k&&R.k[aP[aN]]||0):0;aT&&aT.d&&aM[d](this.path(aT.d).attr({fill:"#000",stroke:"none",translation:[e,0]}));}aM.scale(S,S,0,aQ).translate(aR,(aV||16)/2);}return aM;};af.format=function(E){var i=af.is(arguments[1],"array")?[0][aF](arguments[1]):arguments,e=/\{(\d+)\}/g;E&&af.is(E,"string")&&i[l]-1&&(E=E[aC](e,function(S,R){return i[++R]==null?ai:i[R];}));return E||ai;};af.ninja=function(){var E=aj.Raphael,i;if(k.was){aj.Raphael=k.is;}else{try{delete aj.Raphael;}catch(R){aj.Raphael=i;}}return E;};af.el=am[aK];return af;})();
\ No newline at end of file
index e9a633c..c807910 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * Raphael 1.2.1 - JavaScript Vector Library
+ * Raphael 1.2.2 - JavaScript Vector Library
  *
  * Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com)
  * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
@@ -21,47 +21,52 @@ window.Raphael = (function () {
                     res = cnv.set();
                 for (var i = 0, ii = a[length]; i < ii; i++) {
                     var j = a[i] || {};
-                    ({circle:1, rect:1, path:1, ellipse:1, text:1, image:1}[has](j.type)) && res[push](cnv[j.type]().attr(j));
+                    ({circle:1, rect:1, path:1, ellipse:1, text:1, image:1})[has](j.type) && res[push](cnv[j.type]().attr(j));
                 }
                 return res;
             }
             return create[apply](R, arguments);
         },
-        paper = {},
-        events = ["click", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup"],
+        appendChild = "appendChild",
+        apply = "apply",
+        concat = "concat",
         E = "",
-        S = " ",
+        events = ["click", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup"],
         has = "hasOwnProperty",
+        isit = /^\[object\s+|\]$/gi,
+        join = "join",
+        length = "length",
         proto = "prototype",
+        lowerCase = String[proto].toLowerCase,
+        mmax = Math.max,
+        mmin = Math.min,
+        nu = "number",
+        toString = "toString",
+        objectToString = Object[proto][toString],
+        paper = {},
+        pow = Math.pow,
+        push = "push",
+        rg = /^(?=[\da-f]$)/,
+        ISURL = /^url\(['"]?([^\)]+)['"]?\)$/i,
+        round = Math.round,
+        S = " ",
         setAttribute = "setAttribute",
-        appendChild = "appendChild",
-        apply = "apply",
-        length = "length",
-        join = "join",
         split = "split",
-        concat = "concat",
-        push = "push",
         toFloat = parseFloat,
         toInt = parseInt,
-        pow = Math.pow,
-        mmin = Math.min,
-        mmax = Math.max,
-        round = Math.round,
-        rg = /^(?=[\da-f]$)/,
-        nu = "number",
-        toString = "toString",
-        availableAttrs = {"clip-rect": "0 0 10e9 10e9", cx: 0, cy: 0, fill: "#fff", "fill-opacity": 1, font: '10px "Arial"', "font-family": '"Arial"', "font-size": "10", "font-style": "normal", "font-weight": 400, gradient: 0, height: 0, href: "http://raphaeljs.com/", opacity: 1, path: "M0,0", r: 0, rotation: 0, rx: 0, ry: 0, scale: "1 1", src: "", stroke: "#000", "stroke-dasharray": "", "stroke-linecap": "butt", "stroke-linejoin": "butt", "stroke-miterlimit": 0, "stroke-opacity": 1, "stroke-width": 1, target: "_blank", "text-anchor": "middle", title: "Raphael", translation: "0 0", width: 0, x: 0, y: 0},
+        upperCase = String[proto].toUpperCase,
+        availableAttrs = {"clip-rect": "0 0 10e9 10e9", cursor: "default", cx: 0, cy: 0, fill: "#fff", "fill-opacity": 1, font: '10px "Arial"', "font-family": '"Arial"', "font-size": "10", "font-style": "normal", "font-weight": 400, gradient: 0, height: 0, href: "http://raphaeljs.com/", opacity: 1, path: "M0,0", r: 0, rotation: 0, rx: 0, ry: 0, scale: "1 1", src: "", stroke: "#000", "stroke-dasharray": "", "stroke-linecap": "butt", "stroke-linejoin": "butt", "stroke-miterlimit": 0, "stroke-opacity": 1, "stroke-width": 1, target: "_blank", "text-anchor": "middle", title: "Raphael", translation: "0 0", width: 0, x: 0, y: 0},
         availableAnimAttrs = {"clip-rect": "csv", cx: nu, cy: nu, fill: "colour", "fill-opacity": nu, "font-size": nu, height: nu, opacity: nu, path: "path", r: nu, rotation: "csv", rx: nu, ry: nu, scale: "csv", stroke: "colour", "stroke-opacity": nu, "stroke-width": nu, translation: "csv", width: nu, x: nu, y: nu},
         rp = "replace";
-    R.version = "1.2.1";
+    R.version = "1.2.2";
     R.type = (win.SVGAngle || doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML");
     R.svg = !(R.vml = R.type == "VML");
     R._id = 0;
     R._oid = 0;
     R.fn = {};
     R.is = function (o, type) {
-        type = (type + E).toLowerCase();
-        return ((type == "object" || type == "undefined") && typeof o == type) || (o == null && type == "null") || Object[proto][toString].call(o)[rp](/^\[object\s+|\]$/gi, E).toLowerCase() == type;
+        type = lowerCase.call(type);
+        return ((type == "object" || type == "undefined") && typeof o == type) || (o == null && type == "null") || lowerCase.call(objectToString.call(o)[rp](isit, E)) == type;
     };
     R.setWindow = function (newwin) {
         win = newwin;
@@ -71,8 +76,10 @@ window.Raphael = (function () {
     var toHex = function (color) {
         if (R.vml) {
             // http://dean.edwards.name/weblog/2009/10/convert-any-colour-value-to-hex-in-msie/
+            var trim = /^\s+|\s+$/g;
             toHex = cacher(function (color) {
                 var bod;
+                color = (color + E).replace(trim, E);
                 try {
                     var document = new ActiveXObject("htmlfile");
                     document.write("<body>");
@@ -82,14 +89,18 @@ window.Raphael = (function () {
                     bod = createPopup().document.body;
                 }
                 var range = bod.createTextRange();
-                bod.style.color = color;
-                var value = range.queryCommandValue("ForeColor");
-                value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);
-                return "#" + ("000000" + value[toString](16)).slice(-6);
+                try {
+                    bod.style.color = color;
+                    var value = range.queryCommandValue("ForeColor");
+                    value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);
+                    return "#" + ("000000" + value[toString](16)).slice(-6);
+                } catch(e) {
+                    return "none";
+                }
             });
         } else {
             var i = doc.createElement("i");
-            i.className = "Rapha\u00ebl colour picker";
+            i.className = "Rapha\xebl Colour Picker";
             i.style.cssText = "display:none";
             doc.body[appendChild](i);
             toHex = cacher(function (color) {
@@ -177,21 +188,13 @@ window.Raphael = (function () {
         }
         return {h: hue, s: saturation, b: brightness};
     }, R);
+    var p2s = /,?([achlmqrstvxz]),?/gi;
     R._path2string = function () {
-        var res = E,
-            item;
-        for (var i = 0, ii = this[length]; i < ii; i++) {
-            for (var j = 0, jj = this[i][length]; j < jj; j++) {
-                res += this[i][j];
-                j && j != jj - 1 && (res += ",");
-            }
-            i != ii - 1 && (res += S);
-        }
-        return res[rp](/,(?=-)/g, E);
+        return this.join(",")[rp](p2s, "$1");
     };
     function cacher(f, scope, postprocessor) {
         function newf() {
-            var arg = Array[proto].splice.call(arguments, 0, arguments[length]),
+            var arg = Array[proto].slice.call(arguments, 0),
                 args = arg[join]("\u25ba"),
                 cache = newf.cache = newf.cache || {},
                 count = newf.count = newf.count || [];
@@ -214,7 +217,7 @@ window.Raphael = (function () {
         if (colour == "none") {
             return {r: -1, g: -1, b: -1, hex: "none"};
         }
-        !(({hs: 1, rg: 1}[has](colour.substring(0, 2)))) && (colour = toHex(colour));
+        !({hs: 1, rg: 1})[has](colour.substring(0, 2)) && (colour = toHex(colour));
         var res,
             red,
             green,
@@ -296,7 +299,7 @@ window.Raphael = (function () {
         if (!data[length]) {
             (pathString + E)[rp](/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig, function (a, b, c) {
                 var params = [],
-                    name = b.toLowerCase();
+                    name = lowerCase.call(b);
                 c[rp](/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig, function (a, b) {
                     b && params[push](+b);
                 });
@@ -376,8 +379,8 @@ window.Raphael = (function () {
             for (var i = start, ii = pathArray[length]; i < ii; i++) {
                 var r = res[i] = [],
                     pa = pathArray[i];
-                if (pa[0] != pa[0].toLowerCase()) {
-                    r[0] = pa[0].toLowerCase();
+                if (pa[0] != lowerCase.call(pa[0])) {
+                    r[0] = lowerCase.call(pa[0]);
                     switch (r[0]) {
                         case "a":
                             r[1] = pa[1];
@@ -450,8 +453,8 @@ window.Raphael = (function () {
             for (var i = start, ii = pathArray[length]; i < ii; i++) {
                 var r = res[i] = [],
                     pa = pathArray[i];
-                if (pa[0] != (pa[0] + E).toUpperCase()) {
-                    r[0] = (pa[0] + E).toUpperCase();
+                if (pa[0] != upperCase.call(pa[0])) {
+                    r[0] = upperCase.call(pa[0]);
                     switch (r[0]) {
                         case "A":
                             r[1] = pa[1];
@@ -814,6 +817,42 @@ window.Raphael = (function () {
                     break;
                 }
             }
+        },
+        tear = function (el, paper) {
+            el == paper.top && (paper.top = el.prev);
+            el == paper.bottom && (paper.bottom = el.next);
+            el.next && (el.next.prev = el.prev);
+            el.prev && (el.prev.next = el.next);
+        },
+        tofront = function (el, paper) {
+            tear(el, paper);
+            el.next = null;
+            el.prev = paper.top;
+            paper.top.next = el;
+            paper.top = el;
+        },
+        toback = function (el, paper) {
+            tear(el, paper);
+            el.next = paper.bottom;
+            el.prev = null;
+            paper.bottom.prev = el;
+            paper.bottom = el;
+        },
+        insertafter = function (el, el2, paper) {
+            tear(el, paper);
+            el2 == paper.top && (paper.top = el);
+            el2.next && (el2.next.prev = el);
+            el.next = el2.next;
+            el.prev = el2;
+            el2.next = el;
+        },
+        insertbefore = function (el, el2, paper) {
+            tear(el, paper);
+            el2 == paper.bottom && (paper.bottom = el);
+            el2.prev && (el2.prev.next = el);
+            el.prev = el2.prev;
+            el2.prev = el;
+            el.next = el2;
         };
 
     // SVG
@@ -822,10 +861,10 @@ window.Raphael = (function () {
         paper.xlink = "http://www.w3.org/1999/xlink";
         var round = function (num) {
             return +num + (~~num === num) * .5;
-        };
-        var roundPath = function (path) {
+        },
+            roundPath = function (path) {
             for (var i = 0, ii = path[length]; i < ii; i++) {
-                if (path[i][0].toLowerCase() != "a") {
+                if (lowerCase.call(path[i][0]) != "a") {
                     for (var j = 1, jj = path[i][length]; j < jj; j++) {
                         path[i][j] = round(path[i][j]);
                     }
@@ -835,8 +874,8 @@ window.Raphael = (function () {
                 }
             }
             return path;
-        };
-        var $ = function (el, attr) {
+        },
+            $ = function (el, attr) {
             if (attr) {
                 for (var key in attr) if (attr[has](key)) {
                     el[setAttribute](key, attr[key]);
@@ -846,7 +885,7 @@ window.Raphael = (function () {
             }
         };
         R[toString] = function () {
-            return  "Your browser supports SVG.\nYou are running Rapha\u00ebl " + this.version;
+            return  "Your browser supports SVG.\nYou are running Rapha\xebl " + this.version;
         };
         var thePath = function (pathString, SVG) {
             var el = $("path");
@@ -940,7 +979,7 @@ window.Raphael = (function () {
                 attrs = o.attrs,
                 rot = o.rotate(),
                 addDashes = function (o, value) {
-                    value = dasharray[(value + E).toLowerCase()];
+                    value = dasharray[lowerCase.call(value)];
                     if (value) {
                         var width = o.attrs["stroke-width"] || "1",
                             butt = {round: width, square: width, butt: 0}[o.attrs["stroke-linecap"] || params["stroke-linecap"]] || 0,
@@ -952,27 +991,41 @@ window.Raphael = (function () {
                         $(node, {"stroke-dasharray": dashes[join](",")});
                     }
                 };
+            params[has]("rotation") && (rot = params.rotation);
+            var rotxy = (rot + E)[split](separator);
+            if (!(rotxy.length - 1)) {
+                rotxy = null;
+            } else {
+                rotxy[1] = +rotxy[1];
+                rotxy[2] = +rotxy[2];
+            }
             toFloat(rot) && o.rotate(0, true);
             for (var att in params) if (params[has](att)) {
-                if (!(att in availableAttrs)) {
+                if (!availableAttrs[has](att)) {
                     continue;
                 }
                 var value = params[att];
                 attrs[att] = value;
                 switch (att) {
+                    case "rotation":
+                        o.rotate(value, true);
+                        break;
                     // Hyperlink
                     case "href":
                     case "title":
                     case "target":
                         var pn = node.parentNode;
-                        if (pn.tagName.toLowerCase() != "a") {
+                        if (lowerCase.call(pn.tagName) != "a") {
                             var hl = $("a");
                             pn.insertBefore(hl, node);
                             hl[appendChild](node);
                             pn = hl;
                         }
                         pn.setAttributeNS(o.paper.xlink, att, value);
-                      break;
+                        break;
+                    case "cursor":
+                        node.style.cursor = value;
+                        break;
                     case "clip-rect":
                         var rect = (value + E)[split](separator);
                         if (rect[length] == 4) {
@@ -1021,6 +1074,7 @@ window.Raphael = (function () {
                             break;
                         }
                     case "cx":
+                        rotxy && (att == "x" || att == "cx") && (rotxy[1] += value - attrs[att]);
                         node[setAttribute](att, round(value));
                         o.pattern && updatePosition(o);
                         break;
@@ -1041,6 +1095,7 @@ window.Raphael = (function () {
                             break;
                         }
                     case "cy":
+                        rotxy && (att == "y" || att == "cy") && (rotxy[2] += value - attrs[att]);
                         node[setAttribute](att, round(value));
                         o.pattern && updatePosition(o);
                         break;
@@ -1067,26 +1122,26 @@ window.Raphael = (function () {
                     case "stroke-dasharray":
                         addDashes(o, value);
                         break;
-                    case "rotation":
-                        rot = value;
-                        o.rotate(value, true);
-                        break;
                     case "translation":
                         var xy = (value + E)[split](separator);
-                        o.translate((+xy[0] + 1 || 2) - 1, (+xy[1] + 1 || 2) - 1);
+                        if (rotxy) {
+                            rotxy[1] +=+ xy[0];
+                            rotxy[2] +=+ xy[1];
+                        }
+                        translate.call(o, (+xy[0] + 1 || 2) - 1, (+xy[1] + 1 || 2) - 1);
                         break;
                     case "scale":
                         var xy = (value + E)[split](separator);
                         o.scale(+xy[0] || 1, +xy[1] || +xy[0] || 1, +xy[2] || null, +xy[3] || null);
                         break;
                     case "fill":
-                        var isURL = (value + E).match(/^url\(['"]?([^\)]+)['"]?\)$/i);
+                        var isURL = (value + E).match(ISURL);
                         if (isURL) {
                             var el = $("pattern"),
                                 ig = $("image");
                             el.id = "r" + (R._id++)[toString](36);
                             $(el, {x: 0, y: 0, patternUnits: "userSpaceOnUse"});
-                            $(ig, {x: 0, y:0});
+                            $(ig, {x: 0, y: 0});
                             ig.setAttributeNS(o.paper.xlink, "href", isURL[1]);
                             el[appendChild](ig);
 
@@ -1110,28 +1165,22 @@ window.Raphael = (function () {
                         if (!R.getRGB(value).error) {
                             delete params.gradient;
                             delete attrs.gradient;
-                            if (!R.is(attrs.opacity, "undefined") && R.is(params.opacity, "undefined") ) {
-                                node.style.opacity = attrs.opacity;
-                                // Need following line for Firefox
+                            !R.is(attrs.opacity, "undefined") &&
+                                R.is(params.opacity, "undefined") &&
                                 $(node, {opacity: attrs.opacity});
-                            }
-                            if (!R.is(attrs["fill-opacity"], "undefined") && R.is(params["fill-opacity"], "undefined") ) {
-                                node.style.fillOpacity = attrs["fill-opacity"];
-                                // Need following line for Firefox
+                            !R.is(attrs["fill-opacity"], "undefined") &&
+                                R.is(params["fill-opacity"], "undefined") &&
                                 $(node, {"fill-opacity": attrs["fill-opacity"]});
-                            }
-                        } else if ((o.type in {circle: 1, ellipse: 1} || (value + E).charAt(0) != "r") && addGradientFill(node, value, o.paper)) {
+                        } else if ((({circle: 1, ellipse: 1})[has](o.type) || (value + E).charAt() != "r") && addGradientFill(node, value, o.paper)) {
                             attrs.gradient = value;
                             attrs.fill = "none";
                             break;
                         }
                     case "stroke":
-                        node.style[att] = R.getRGB(value).hex;
-                        // Need following line for Firefox
                         node[setAttribute](att, R.getRGB(value).hex);
                         break;
                     case "gradient":
-                        (o.type in {circle: 1, ellipse: 1} || (value + E).charAt(0) != "r") && addGradientFill(node, value, o.paper);
+                        (({circle: 1, ellipse: 1})[has](o.type) || (value + E).charAt() != "r") && addGradientFill(node, value, o.paper);
                         break;
                     case "opacity":
                     case "fill-opacity":
@@ -1146,7 +1195,7 @@ window.Raphael = (function () {
                     default:
                         att == "font-size" && (value = toInt(value, 10) + "px");
                         var cssrule = att[rp](/(\-.)/g, function (w) {
-                            return w.substring(1).toUpperCase();
+                            return upperCase.call(w.substring(1));
                         });
                         node.style[cssrule] = value;
                         // Need following line for Firefox
@@ -1156,23 +1205,28 @@ window.Raphael = (function () {
             }
             
             tuneText(o, params);
-            toFloat(rot) && o.rotate(rot, true);
+            if (rotxy) {
+                o.rotate(rotxy.join(S));
+            } else {
+                toFloat(rot) && o.rotate(rot, true);
+            }
         };
         var leading = 1.2;
         var tuneText = function (el, params) {
-            if (el.type != "text" || !("text" in params || "font" in params || "font-size" in params || "x" in params || "y" in params)) {
+            if (el.type != "text" || !(params[has]("text") || params[has]("font") || params[has]("font-size") || params[has]("x") || params[has]("y"))) {
                 return;
             }
             var a = el.attrs,
                 node = el.node,
                 fontSize = node.firstChild ? toInt(doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue("font-size"), 10) : 10;
 
-            if ("text" in params) {
+            if (params[has]("text")) {
+                a.text = params.text;
                 while (node.firstChild) {
                     node.removeChild(node.firstChild);
                 }
                 var texts = (params.text + E)[split]("\n");
-                for (var i = 0, ii = texts[length]; i < ii; i++) {
+                for (var i = 0, ii = texts[length]; i < ii; i++) if (texts[i]) {
                     var tspan = $("tspan");
                     i && $(tspan, {dy: fontSize * leading, x: a.x});
                     tspan[appendChild](doc.createTextNode(texts[i]));
@@ -1206,6 +1260,11 @@ window.Raphael = (function () {
                 sx: 1,
                 sy: 1
             };
+            !svg.bottom && (svg.bottom = this);
+            this.prev = svg.top;
+            svg.top && (svg.top.next = this);
+            svg.top = this;
+            this.next = null;
         };
         Element[proto].rotate = function (deg, cx, cy) {
             if (this.removed) {
@@ -1253,6 +1312,10 @@ window.Raphael = (function () {
             return this;
         };
         Element[proto].remove = function () {
+            if (this.removed) {
+                return;
+            }
+            tear(this, this.paper);
             this.node.parentNode.removeChild(this.node);
             for (var i in this) {
                 delete this[i];
@@ -1296,7 +1359,7 @@ window.Raphael = (function () {
             }
             if (arguments[length] == 1 && R.is(arguments[0], "string")) {
                 if (arguments[0] == "translation") {
-                    return this.translate();
+                    return translate.call(this);
                 }
                 if (arguments[0] == "rotation") {
                     return this.rotate();
@@ -1323,7 +1386,12 @@ window.Raphael = (function () {
             return this;
         };
         Element[proto].toFront = function () {
-            !this.removed && this.node.parentNode[appendChild](this.node);
+            if (this.removed) {
+                return this;
+            }
+            this.node.parentNode[appendChild](this.node);
+            var svg = this.paper;
+            svg.top != this && tofront(this, svg);
             return this;
         };
         Element[proto].toBack = function () {
@@ -1332,6 +1400,8 @@ window.Raphael = (function () {
             }
             if (this.node.parentNode.firstChild != this.node) {
                 this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);
+                toback(this, this.paper);
+                var svg = this.paper;
             }
             return this;
         };
@@ -1339,11 +1409,14 @@ window.Raphael = (function () {
             if (this.removed) {
                 return this;
             }
-            if (element.node.nextSibling) {
-                element.node.parentNode.insertBefore(this.node, element.node.nextSibling);
+            var svg = this.paper,
+                node = element.node;
+            if (node.nextSibling) {
+                node.parentNode.insertBefore(this.node, node.nextSibling);
             } else {
-                element.node.parentNode[appendChild](this.node);
+                node.parentNode[appendChild](this.node);
             }
+            insertafter(this, element, this.paper);
             return this;
         };
         Element[proto].insertBefore = function (element) {
@@ -1352,6 +1425,7 @@ window.Raphael = (function () {
             }
             var node = element.node;
             node.parentNode.insertBefore(this.node, node);
+            insertbefore(this, element, this.paper);
             return this;
         };
         
@@ -1445,6 +1519,7 @@ window.Raphael = (function () {
             for (var prop in paper) if (paper[has](prop)) {
                 container[prop] = paper[prop];
             }
+            container.bottom = container.top = null;
             plugins.call(container, container, R.fn);
             container.clear();
             container.raphael = R;
@@ -1455,7 +1530,8 @@ window.Raphael = (function () {
             while (c.firstChild) {
                 c.removeChild(c.firstChild);
             }
-            (this.desc = $("desc"))[appendChild](doc.createTextNode("Created with Rapha\u00ebl"));
+            this.bottom = this.top = null;
+            (this.desc = $("desc"))[appendChild](doc.createTextNode("Created with Rapha\xebl"));
             c[appendChild](this.desc);
             c[appendChild](this.defs = $("defs"));
         };
@@ -1490,7 +1566,7 @@ window.Raphael = (function () {
             var pa = command(path), p, res = [], r;
             for (var i = 0, ii = pa[length]; i < ii; i++) {
                 p = pa[i];
-                r = (pa[i][0] + E).toLowerCase();
+                r = lowerCase.call(pa[i][0]);
                 r == "z" && (r = "x");
                 for (var j = 1, jj = p[length]; j < jj; j++) {
                     r += round(p[j]) + (j != jj - 1 ? "," : E);
@@ -1501,7 +1577,7 @@ window.Raphael = (function () {
         };
         
         R[toString] = function () {
-            return  "Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\u00ebl " + this.version;
+            return  "Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\xebl " + this.version;
         };
         var thePath = function (pathString, VML) {
             var g = createNode("group");
@@ -1536,6 +1612,7 @@ window.Raphael = (function () {
             params.href && (node.href = params.href);
             params.title && (node.title = params.title);
             params.target && (node.target = params.target);
+            params.cursor && (s.cursor = params.cursor);
             if (params.path && o.type == "path") {
                 a.path = params.path;
                 node.path = path2vml(a.path);
@@ -1545,7 +1622,12 @@ window.Raphael = (function () {
             }
             if (params.translation) {
                 xy = (params.translation + E)[split](separator);
-                o.translate(xy[0], xy[1]);
+                translate.call(o, xy[0], xy[1]);
+                if (o._.rt.cx != null) {
+                    o._.rt.cx +=+ xy[0];
+                    o._.rt.cy +=+ xy[1];
+                    o.setBox(o.attrs, xy[0], xy[1]);
+                }
             }
             if (params.scale) {
                 xy = (params.scale + E)[split](separator);
@@ -1613,7 +1695,7 @@ window.Raphael = (function () {
                     fill.on = false;
                 }
                 if (fill.on && params.fill) {
-                    var isURL = params.fill.match(/^url\(([^\)]+)\)$/i);
+                    var isURL = params.fill.match(ISURL);
                     if (isURL) {
                         fill.src = isURL[1];
                         fill.type = "tile";
@@ -1621,7 +1703,7 @@ window.Raphael = (function () {
                         fill.color = R.getRGB(params.fill).hex;
                         fill.src = E;
                         fill.type = "solid";
-                        if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || (params.fill + E).charAt(0) != "r") && addGradientFill(res, params.fill)) {
+                        if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || (params.fill + E).charAt() != "r") && addGradientFill(res, params.fill)) {
                             a.fill = "none";
                             a.gradient = params.fill;
                         }
@@ -1642,14 +1724,18 @@ window.Raphael = (function () {
                 }
                 (params.stroke == "none" || stroke.on == null || params.stroke == 0 || params["stroke-width"] == 0) && (stroke.on = false);
                 stroke.on && params.stroke && (stroke.color = R.getRGB(params.stroke).hex);
-                var opacity = ((+a["stroke-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1);
+                var opacity = ((+a["stroke-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1),
+                    width = (toFloat(params["stroke-width"]) || 1) * .75;
                 opacity < 0 && (opacity = 0);
                 opacity > 1 && (opacity = 1);
+                params["stroke-width"] == null && (width = a["stroke-width"]);
+                params["stroke-width"] && (stroke.weight = width);
+                width && width < 1 && (opacity *= width) && (stroke.weight = 1);
                 stroke.opacity = opacity;
+                
                 params["stroke-linejoin"] && (stroke.joinstyle = params["stroke-linejoin"] || "miter");
                 stroke.miterlimit = params["stroke-miterlimit"] || 8;
-                params["stroke-linecap"] && (stroke.endcap = {butt: "flat", square: "square", round: "round"}[params["stroke-linecap"]] || "miter");
-                params["stroke-width"] && (stroke.weight = (toFloat(params["stroke-width"]) || 1) * 12 / 16);
+                params["stroke-linecap"] && (stroke.endcap = params["stroke-linecap"] == "butt" ? "flat" : params["stroke-linecap"] == "square" ? "square" : "round");
                 if (params["stroke-dasharray"]) {
                     var dasharray = {
                         "-": "shortdash",
@@ -1663,7 +1749,7 @@ window.Raphael = (function () {
                         "--.": "longdashdot",
                         "--..": "longdashdotdot"
                     };
-                    stroke.dashstyle = dasharray[params["stroke-dasharray"]] || E;
+                    stroke.dashstyle = dasharray[has](params["stroke-dasharray"]) ? dasharray[params["stroke-dasharray"]] : E;
                 }
                 newstroke && node[appendChild](stroke);
             }
@@ -1771,6 +1857,11 @@ window.Raphael = (function () {
                 sx: 1,
                 sy: 1
             };
+            !vml.bottom && (vml.bottom = this);
+            this.prev = vml.top;
+            vml.top && (vml.top.next = this);
+            vml.top = this;
+            this.next = null;
         };
         Element[proto].rotate = function (deg, cx, cy) {
             if (this.removed) {
@@ -1931,6 +2022,10 @@ window.Raphael = (function () {
             };
         };
         Element[proto].remove = function () {
+            if (this.removed) {
+                return;
+            }
+            tear(this, this.paper);
             this.node.parentNode.removeChild(this[0]);
             this.Group.parentNode.removeChild(this.Group);
             this.shape && this.shape.parentNode.removeChild(this.shape);
@@ -1945,7 +2040,7 @@ window.Raphael = (function () {
             }
             if (arguments[length] == 1 && R.is(arguments[0], "string")) {
                 if (arguments[0] == "translation") {
-                    return this.translate();
+                    return translate.call(this);
                 }
                 if (arguments[0] == "rotation") {
                     return this.rotate();
@@ -1973,15 +2068,16 @@ window.Raphael = (function () {
                     this.node.string = params.text;
                 }
                 setFillAndStroke(this, params);
-                if (params.gradient && ({circle: 1, ellipse: 1}[has](this.type) || (params.gradient + E).charAt(0) != "r")) {
+                if (params.gradient && (({circle: 1, ellipse: 1})[has](this.type) || (params.gradient + E).charAt() != "r")) {
                     addGradientFill(this, params.gradient);
                 }
-                this.setBox(this.attrs);
+                (this.type != "path" || this._.rt.deg) && this.setBox(this.attrs);
             }
             return this;
         };
         Element[proto].toFront = function () {
             !this.removed && this.Group.parentNode[appendChild](this.Group);
+            this.paper.top != this && tofront(this, this.paper);
             return this;
         };
         Element[proto].toBack = function () {
@@ -1990,6 +2086,7 @@ window.Raphael = (function () {
             }
             if (this.Group.parentNode.firstChild != this.Group) {
                 this.Group.parentNode.insertBefore(this.Group, this.Group.parentNode.firstChild);
+                toback(this, this.paper);
             }
             return this;
         };
@@ -2002,10 +2099,15 @@ window.Raphael = (function () {
             } else {
                 element.Group.parentNode[appendChild](this.Group);
             }
+            insertafter(this, element, this.paper);
             return this;
         };
         Element[proto].insertBefore = function (element) {
-            !this.removed && element.Group.parentNode.insertBefore(this.Group, element.Group);
+            if (this.removed) {
+                return this;
+            }
+            element.Group.parentNode.insertBefore(this.Group, element.Group);
+            insertbefore(this, element, this.paper);
             return this;
         };
 
@@ -2124,6 +2226,12 @@ window.Raphael = (function () {
             cs.height = this.height + "px";
             cs.clip = "rect(0 " + this.width + "px " + this.height + "px 0)";
             this.coordsize = this.width + S + this.height;
+            var bot = this.bottom;
+            while (bot) {
+                bot.Group.coordsize = this.coordsize;
+                bot.attr(bot.attrs);
+                bot = bot.next;
+            }
             return this;
         };
         doc.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
@@ -2184,12 +2292,14 @@ window.Raphael = (function () {
                 res[prop] = paper[prop];
             }
             plugins.call(res, res, R.fn);
-            res.clear = function () {
-                c.innerHTML = E;
-            };
+            res.top = res.bottom = null;
             res.raphael = R;
             return res;
         };
+        paper.clear = function () {
+            this.canvas.innerHTML = E;
+            this.bottom = this.top = null;
+        };
         paper.remove = function () {
             this.canvas.parentNode.removeChild(this.canvas);
             for (var i in this) {
@@ -2355,13 +2465,14 @@ window.Raphael = (function () {
                     var path = pathToRelative(a.path),
                         skip = true;
                     for (var i = 0, ii = path[length]; i < ii; i++) {
-                        var p = path[i];
-                        if (p[0].toUpperCase() == "M" && skip) {
+                        var p = path[i],
+                            P0 = upperCase.call(p[0]);
+                        if (P0 == "M" && skip) {
                             continue;
                         } else {
                             skip = false;
                         }
-                        if (R.svg && p[0].toUpperCase() == "A") {
+                        if (R.svg && P0 == "A") {
                             p[path[i][length] - 2] *= kx;
                             p[path[i][length] - 1] *= ky;
                             p[1] *= kx;
@@ -2369,7 +2480,7 @@ window.Raphael = (function () {
                             p[5] = +(dirx + diry ? !!+p[5] : !+p[5]);
                         } else {
                             for (var j = 1, jj = p[length]; j < jj; j++) {
-                                p[j] *= (j % 2) ? kx : ky;
+                                p[j] *= (j % 2 && P0 != "V") ? kx : ky;
                             }
                         }
                     }
@@ -2556,10 +2667,10 @@ window.Raphael = (function () {
                     (t.x || t.y) && that.translate(-t.x, -t.y);
                     to.scale && (to.scale = to.scale + E);
                     that.attr(to);
-                    R.is(callback, "function") && callback.call(that);
                     delete animationElements[l];
                     animationElements[length]--;
                     that.in_animation = null;
+                    R.is(callback, "function") && callback.call(that);
                 }
                 e.prev = time;
             }
@@ -2568,8 +2679,32 @@ window.Raphael = (function () {
         },
         upto255 = function (color) {
             return color > 255 ? 255 : (color < 0 ? 0 : color);
+        },
+        translate = function (x, y) {
+            if (x == null) {
+                return {x: this._.tx, y: this._.ty};
+            }
+            this._.tx += +x;
+            this._.ty += +y;
+            switch (this.type) {
+                case "circle":
+                case "ellipse":
+                    this.attr({cx: +x + this.attrs.cx, cy: +y + this.attrs.cy});
+                    break;
+                case "rect":
+                case "image":
+                case "text":
+                    this.attr({x: +x + this.attrs.x, y: +y + this.attrs.y});
+                    break;
+                case "path":
+                    var path = pathToRelative(this.attrs.path);
+                    path[0][1] += +x;
+                    path[0][2] += +y;
+                    this.attr({path: path});
+                break;
+            }
+            return this;
         };
-
     Element[proto].animateWith = function (element, params, ms, easing, callback) {
         animationElements[element.id] && (params.start = animationElements[element.id].start);
         return this.animate(params, ms, easing, callback);
@@ -2662,37 +2797,15 @@ window.Raphael = (function () {
         return this;
     };
     Element[proto].stop = function () {
+        animationElements[this.id] && animationElements[length]--;
         delete animationElements[this.id];
-        delete this.in_animation;
         return this;
     };
     Element[proto].translate = function (x, y) {
-        if (x == null) {
-            return {x: this._.tx, y: this._.ty};
-        }
-        this._.tx += +x;
-        this._.ty += +y;
-        switch (this.type) {
-            case "circle":
-            case "ellipse":
-                this.attr({cx: +x + this.attrs.cx, cy: +y + this.attrs.cy});
-                break;
-            case "rect":
-            case "image":
-            case "text":
-                this.attr({x: +x + this.attrs.x, y: +y + this.attrs.y});
-                break;
-            case "path":
-                var path = pathToRelative(this.attrs.path);
-                path[0][1] += +x;
-                path[0][2] += +y;
-                this.attr({path: path});
-            break;
-        }
-        return this;
+        return this.attr({translation: x + " " + y});
     };
     Element[proto][toString] = function () {
-        return "Rapha\u00ebl\u2019s object";
+        return "Rapha\xebl\u2019s object";
     };
     R.ae = animationElements;