From 88a59f8b0a35ccb55f868aec11500f19fa369abe Mon Sep 17 00:00:00 2001 From: Dmitry Baranovskiy Date: Thu, 31 Mar 2011 16:47:11 +1100 Subject: [PATCH] Fix for text position Fix DOMLoad Added callback to Raphael function --- raphael-min.js | 2 +- raphael.js | 148 +++++++++++++++++++++++++++++++++---------------- 2 files changed, 101 insertions(+), 49 deletions(-) diff --git a/raphael-min.js b/raphael-min.js index b2a9353..a2c66e0 100644 --- a/raphael-min.js +++ b/raphael-min.js @@ -5,4 +5,4 @@ * Copyright (c) 2011 Sencha Labs (http://sencha.com) * Licensed under the MIT (http://raphaeljs.com/license.html) license. */ -(function(){function c$(c,d,e,g,h){e=P(e);var i,j,k,l=[],m,n,o,p=c.ms,r={},s={},t={};if(g)for(v=0,w=cU.length;vg*c.top){e=c.percents[v],n=c.percents[v-1]||0,p=p/c.top*(e-n),m=c.percents[v+1],i=c.anim[e];break}g&&d.attr(c.anim[c.percents[v]])}if(!!i){if(!j){for(attr in i)if(i[f](attr))if(U[f](attr)||d.paper.customAttributes[f](attr)){r[attr]=d.attr(attr),r[attr]==null&&(r[attr]=T[attr]),s[attr]=i[attr];switch(U[attr]){case B:t[attr]=(s[attr]-r[attr])/p;break;case"colour":r[attr]=a.getRGB(r[attr]);var x=a.getRGB(s[attr]);t[attr]={r:(x.r-r[attr].r)/p,g:(x.g-r[attr].g)/p,b:(x.b-r[attr].b)/p};break;case"path":var y=bC(r[attr],s[attr]),z=y[1];r[attr]=y[0],t[attr]=[];for(v=0,w=r[attr].length;vd)return d;while(cf?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cM(){return this.x+p+this.y+p+this.width+"×"+this.height}function cL(){return this.x+p+this.y}function bP(a,b,c,d,e,f){a!=null?this.m=[[a,c,e],[b,d,f],[0,0,1]]:this.m=[[1,0,0],[0,1,0],[0,0,1]]}function bs(a,b){var c=g.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top-9999em",c.onload=function(){b.call(this),this.onload=null,g.doc.body.removeChild(this)},c.onerror=function(){g.doc.body.removeChild(this)},g.doc.body.appendChild(c),c.src=a}function br(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),g=e.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[f](g))return c?c(h[g]):h[g];i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[l](b,e);return c?c(h[g]):h[g]}return d}function a(b){if(a.is(b,"function"))return dc.on("DOMload",b);if(a.is(b,D)){var d=b,e=cl[l](a,d.splice(0,3+a.is(d[0],B))),g=e.set(),h=0,i=d.length,j;for(;h',bj=bi.firstChild,bj.style.behavior="url(#default#VML)";if(!bj||typeof bj.adj!="object")return a.type=o;bi=null}a.svg=!(a.vml=a.type=="VML"),j=i.prototype=a.prototype,j.customAttributes={},a._id=0,a._oid=0,a.fn={},a.is=function(a,b){b=u.call(b);if(b=="finite")return!L[f](+a);return b=="null"&&a===null||b==typeof a||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||G.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+v.atan2(-i,-h)*180/A+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*A/180},a.deg=function(a){return a*180/A%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,D)){var e=b.length;while(e--)if(y(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(fb-d)return c-f+b}return c};var bk=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=v.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){dc("setWindow",a,g.win,b),g.win=b,g.doc=g.win.document,cz&&cz(g.win)};var bl=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write(""),e.close(),d=e.body}catch(f){d=createPopup().document.body}var h=d.createTextRange();bl=br(function(a){try{d.style.color=q(a).replace(c,o);var b=h.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=g.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",g.doc.body.appendChild(i),bl=br(function(a){i.style.color=a;return g.doc.defaultView.getComputedStyle(i,o).getPropertyValue("color")})}return bl(b)},bm=function(){return"hsb("+[this.h,this.s,this.b]+")"},bn=function(){return"hsl("+[this.h,this.s,this.l]+")"},bo=function(){return this.hex},bp=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,C)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bq=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:bo};a.is(e,"finite")&&(f.opacity=e);return f};a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-y(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bq(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-y(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bq(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bp(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=w(a,b,c),g=f-x(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=d%6*60,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bm}},a.rgb2hsl=function(a,b,c){c=bp(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=w(a,b,c),h=x(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=d%6*60,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bn}},a._path2string=function(){return this.join(",").replace(X,"$1")},a.getRGB=br(function(b){if(!b||!!((b=q(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none"};!W[f](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bl(b));var c,d,e,g,h,i,j,k=b.match(K);if(k){k[2]&&(g=Q(k[2].substring(5),16),e=Q(k[2].substring(3,5),16),d=Q(k[2].substring(1,3),16)),k[3]&&(g=Q((i=k[3].charAt(3))+i,16),e=Q((i=k[3].charAt(2))+i,16),d=Q((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4].split(V),d=P(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=P(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),g=P(j[2]),j[2].slice(-1)=="%"&&(g*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=P(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5].split(V),d=P(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=P(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),g=P(j[2]),j[2].slice(-1)=="%"&&(g*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=P(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,g,h)}if(k[6]){j=k[6].split(V),d=P(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=P(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),g=P(j[2]),j[2].slice(-1)=="%"&&(g*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=P(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,g,h)}k={r:d,g:e,b:g},k.hex="#"+(16777216|g|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1}},a),a.hsb=br(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=br(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=br(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=br(function(b){if(!b)return null;var c={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},d=[];a.is(b,D)&&a.is(b[0],D)&&(d=bu(b)),d.length||q(b).replace(Y,function(a,b,e){var f=[],g=u.call(b);e.replace($,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(d.push([b][m](f.splice(0,2))),g="l",b=b=="m"?"l":"L");while(f.length>=c[g]){d.push([b][m](f.splice(0,c[g])));if(!c[g])break}}),d.toString=a._path2string;return d}),a.parseTransformString=br(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,D)&&a.is(b[0],D)&&(d=bu(b)),d.length||q(b).replace(Z,function(a,b,c){var e=[],f=u.call(b);c.replace($,function(a,b){b&&e.push(+b)}),d.push([f][m](e))}),d.toString=a._path2string;return d}),a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=z(j,3)*a+z(j,2)*3*i*c+j*3*i*i*e+z(i,3)*g,l=z(j,3)*b+z(j,2)*3*i*d+j*3*i*i*f+z(i,3)*h,m=a+2*i*(c-a)+i*i*(e-2*c+a),n=b+2*i*(d-b)+i*i*(f-2*d+b),o=c+2*i*(e-c)+i*i*(g-2*e+c),p=d+2*i*(f-d)+i*i*(h-2*f+d),q=(1-i)*a+i*c,r=(1-i)*b+i*d,s=(1-i)*e+i*g,t=(1-i)*f+i*h,u=90-v.atan2(m-o,n-p)*180/A;(m>o||n1&&(u=v.sqrt(u),c=u*c,d=u*d);var w=c*c,x=d*d,z=(f==g?-1:1)*v.sqrt(y((w*x-w*t*t-x*s*s)/(w*t*t+x*s*s))),B=z*c*t/d+(a+h)/2,C=z*-d*s/c+(b+i)/2,D=v.asin(((b-C)/d).toFixed(9)),E=v.asin(((i-C)/d).toFixed(9));D=aE&&(D=D-A*2),!g&&E>D&&(E=E-A*2)}else D=j[0],E=j[1],B=j[2],C=j[3];var F=E-D;if(y(F)>k){var G=E,H=h,I=i;E=D+k*(g&&E>D?1:-1),h=B+c*v.cos(E),i=C+d*v.sin(E),n=bz(h,i,c,d,e,0,g,H,I,[E,G,B,C])}F=E-D;var J=v.cos(D),K=v.sin(D),L=v.cos(E),M=v.sin(E),N=v.tan(F/4),O=4/3*c*N,P=4/3*d*N,Q=[a,b],R=[a+O*K,b-P*J],S=[h+O*M,i-P*L],T=[h,i];R[0]=2*Q[0]-R[0],R[1]=2*Q[1]-R[1];if(j)return[R,S,T][m](n);n=[R,S,T][m](n).join().split(",");var U=[];for(var V=0,W=n.length;V"1e12"&&(m=.5),y(n)>"1e12"&&(n=.5),m>0&&m<1&&(q=bA(a,b,c,d,e,f,g,h,m),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bA(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,m=(-j+v.sqrt(j*j-4*i*k))/2/i,n=(-j-v.sqrt(j*j-4*i*k))/2/i,y(m)>"1e12"&&(m=.5),y(n)>"1e12"&&(n=.5),m>0&&m<1&&(q=bA(a,b,c,d,e,f,g,h,m),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bA(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:x[l](0,p),y:x[l](0,o)},max:{x:w[l](0,p),y:w[l](0,o)}}}),bC=br(function(a,b){var c=bw(a),d=b&&bw(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][m](bz[l](0,[b.x,b.y][m](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][m](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][m](by(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][m](by(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][m](bx(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][m](bx(b.x,b.y,a[1],b.y));break;case"V":a=["C"][m](bx(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][m](bx(b.x,b.y,b.X,b.Y))}return a},h=function(a,b){if(a[b].length>7){a[b].shift();var e=a[b];while(e.length)a.splice(b++,0,["C"][m](e.splice(0,6)));a.splice(b,1),k=w(c.length,d&&d.length||0)}},i=function(a,b,e,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),e.bx=0,e.by=0,e.x=a[g][1],e.y=a[g][2],k=w(c.length,d&&d.length||0))};for(var j=0,k=w(c.length,d&&d.length||0);j.5)*2-1;z(f-.5,2)+z(h-.5,2)>.25&&(h=v.sqrt(.25-z(f-.5,2))*e+.5)&&h!=.5&&(h=h.toFixed(5)-1e-5*e)}return o}),c=c.split(/\s*\-\s*/);if(d=="linear"){var m=c.shift();m=-P(m);if(isNaN(m))return null;var n=[0,0,v.cos(a.rad(m)),v.sin(a.rad(m))],p=1/(w(y(n[2]),y(n[3]))||1);n[2]*=p,n[3]*=p,n[2]<0&&(n[0]=-n[2],n[2]=0),n[3]<0&&(n[1]=-n[3],n[3]=0)}var r=bD(c);if(!r)return null;b.gradient&&(j.defs.removeChild(b.gradient),delete b.gradient),l=bU(d+"Gradient",{id:e}),b.gradient=l,bU(l,d=="radial"?{fx:f,fy:h}:{x1:n[0],y1:n[1],x2:n[2],y2:n[3],gradientTransform:b.matrix.invert()}),j.defs.appendChild(l);for(var s=0,t=r.length;s1?z.opacity/100:z.opacity});case"stroke":z=a.getRGB(l),h[O](k,z.hex),k=="stroke"&&z[f]("opacity")&&bU(h,{"stroke-opacity":z.opacity>1?z.opacity/100:z.opacity}),k=="stroke"&&c._.arrows&&("startString"in c._.arrows&&b_(c,c._.arrows.startString),"endString"in c._.arrows&&b_(c,c._.arrows.endString,1));break;case"gradient":(c.type=="circle"||c.type=="ellipse"||q(l).charAt()!="r")&&bZ(c,l);break;case"opacity":i.gradient&&!i[f]("stroke-opacity")&&bU(h,{"stroke-opacity":l>1?l/100:l});case"fill-opacity":if(i.gradient){A=g.doc.getElementById(h.getAttribute(F).replace(/^url\(#|\)$/g,o)),A&&(B=A.getElementsByTagName("stop"),bU(B[B.length-1],{"stop-opacity":l}));break};default:k=="font-size"&&(l=Q(l,10)+"px");var C=k.replace(/(\-.)/g,function(a){return S.call(a.substring(1))});h.style[C]=l,c._.dirty=1,h[O](k,l)}}cc(c,d)},cb=1.2,cc=function(b,c){if(b.type=="text"&&!!(c[f]("text")||c[f]("font")||c[f]("font-size")||c[f]("x")||c[f]("y"))){var d=b.attrs,e=b.node,h=e.firstChild?Q(g.doc.defaultView.getComputedStyle(e.firstChild,o).getPropertyValue("font-size"),10):10;if(c[f]("text")){d.text=c.text;while(e.firstChild)e.removeChild(e.firstChild);var i=q(c.text).split("\n"),j=[],k;for(var l=0,m=i.length;l"));var T=Q.getBoundingClientRect();m.W=h.w=(T.right-T.left)/R,m.H=h.h=(T.bottom-T.top)/R,m.paper.canvas.style.display="none",m.X=h.x,m.Y=h.y+m.H/2,("x"in d||"y"in d)&&(m.path.v=a.format("m{0},{1}l{2},{1}",N(h.x*cs),N(h.y*cs),N(h.x*cs)+1));var U=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var V=0,W=U.length;V.25&&(c=v.sqrt(.25-z(b-.5,2))*((c>.5)*2-1)+.5),f=b+p+c);return o}),b=b.split(/\s*\-\s*/);if(e=="linear"){var g=b.shift();g=-P(g);if(isNaN(g))return null}var h=bD(b);if(!h)return null;a=a.shape||a.node;if(h.length){a.removeChild(c),c.on=!0,c.method="none",c.color=h[0].color,c.color2=h[h.length-1].color;var i=[];for(var j=0,k=h.length;j')}}catch(c){cy=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}};cz(g.win),cl=function(){var b=bE[l](0,arguments),c=b.container,d=b.height,e,f=b.width,h=b.x,j=b.y;if(!c)throw new Error("VML container not found.");var k=new i,m=k.canvas=g.doc.createElement("div"),n=m.style;h=h||0,j=j||0,f=f||512,d=d||342,k.width=f,k.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),k.coordsize=cs*1e3+p+cs*1e3,k.coordorigin="0 0",k.span=g.doc.createElement("span"),k.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",m.appendChild(k.span),n.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(g.doc.body.appendChild(m),n.left=h+"px",n.top=j+"px",n.position="absolute"):c.firstChild?c.insertBefore(m,c.firstChild):c.appendChild(m),bF.call(k,k,a.fn),k.renderfix=bc;return k},j.clear=function(){dc("clear",this),this.canvas.innerHTML=o,this.span=g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},j.remove=function(){dc("remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]=bL(a);return!0}}var cA=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);navigator.vendor=="Apple Computer, Inc."&&(cA&&cA[1]<4||navigator.platform.slice(0,2)=="iP")||navigator.vendor=="Google Inc."&&cA&&cA[1]<8?j.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:j.safari=bc;var cB=function(){this.returnValue=!1},cC=function(){return this.originalEvent.preventDefault()},cD=function(){this.cancelBubble=!0},cE=function(){return this.originalEvent.stopPropagation()},cF=function(){if(g.doc.addEventListener)return function(a,b,c,d){var e=n&&t[b]?t[b]:b,g=function(e){if(n&&t[f](b))for(var g=0,h=e.targetTouches&&e.targetTouches.length;g1&&(a=Array.prototype.splice.call(arguments,0,arguments.length));return new c_(a)},j.setSize=ck,j.setViewBox=cm,j.top=j.bottom=null,j.raphael=a;var cK=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,h=e.clientLeft||d.clientLeft||0,i=b.top+(g.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(g.win.pageXOffset||e.scrollLeft||d.scrollLeft)-h;return{y:i,x:j}};j.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=g.doc.elementFromPoint(a,b);if(g.win.opera&&e.tagName=="svg"){var f=cK(d),h=d.createSVGRect();h.x=a-f.x,h.y=b-f.y,h.width=h.height=1;var i=d.getIntersectionList(h,null);i.length&&(e=i[i.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},j.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},j.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},ce.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bg[this.type](this),b.bboxwt=bt(this.realPath),b.bboxwt.toString=cM,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bg[this.type](this);b.bbox=bt(bh(this.realPath,this.matrix)),b.bbox.toString=cM,b.dirty=b.dirtyT=0}return b.bbox},ce.clone=function(){if(this.removed)return null;var a=this.attr();delete a.scale,delete a.translation;return this.paper[this.type]().attr(a)},ce.glow=function(a){if(this.type=="text")return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bg[this.type](this);f=this.matrix?bh(f,this.matrix):f;for(var g=1;g=j)return p;o=p}if(j==null)return k},cP=function(b,c){return function(d,e,f){d=bC(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;oe){if(c&&!l.start){m=cO(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cO(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[1],i[2],i[3],i[4],i[5],i[6],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cQ=cP(1),cR=cP(),cS=cP(0,1);a.getTotalLength=cQ,a.getPointAtLength=cR,a.getSubpath=function(a,b,c){if(y(this.getTotalLength(a)-c)<1e-6)return cS(a,b).end;var d=cS(a,c,1);return b?cS(d,b).end:d},ce.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cQ(this.attrs.path)}},ce.getPointAtLength=function(a){if(this.type=="path")return cR(this.attrs.path,a)},ce.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cT=a.easing_formulas={linear:function(a){return a},"<":function(a){return z(a,1.7)},">":function(a){return z(a,.48)},"<>":function(a){var b=.48-a/1.04,c=v.sqrt(.1734+b*b),d=c-b,e=z(y(d),1/3)*(d<0?-1:1),f=-c-b,g=z(y(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return z(2,-10*a)*v.sin((a-.075)*2*A/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cT.easeIn=cT["ease-in"]=cT["<"],cT.easeOut=cT["ease-out"]=cT[">"],cT.easeInOut=cT["ease-in-out"]=cT["<>"],cT["back-in"]=cT.backIn,cT["back-out"]=cT.backOut;var cU=[],cV=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cW=function(){var b=+(new Date),c=0;for(;ce*a.top){d=a.percents[u],n=a.percents[u-1]||0,p=p/a.top*(d-n),m=a.percents[u+1],h=a.anim[d];break}e&&c.attr(a.anim[a.percents[u]])}if(!!h){if(!i){for(attr in h)if(h[k](attr))if(Z[k](attr)||c.paper.customAttributes[k](attr)){q[attr]=c.attr(attr),q[attr]==null&&(q[attr]=Y[attr]),r[attr]=h[attr];switch(Z[attr]){case G:s[attr]=(r[attr]-q[attr])/p;break;case"colour":q[attr]=b.getRGB(q[attr]);var x=b.getRGB(r[attr]);s[attr]={r:(x.r-q[attr].r)/p,g:(x.g-q[attr].g)/p,b:(x.b-q[attr].b)/p};break;case"path":var y=bH(q[attr],r[attr]),z=y[1];q[attr]=y[0],s[attr]=[];for(u=0,w=q[attr].length;ud)return d;while(cf?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cR(){return this.x+u+this.y+u+this.width+"×"+this.height}function cQ(){return this.x+u+this.y}function bU(a,b,c,d,e,f){a!=null?(this.a=a,this.b=b,this.c=c,this.d=d,this.e=e,this.f=f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bx(a,b){var c=l.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top-9999em",c.onload=function(){b.call(this),this.onload=null,l.doc.body.removeChild(this)},c.onerror=function(){l.doc.body.removeChild(this)},l.doc.body.appendChild(c),c.src=a}function bw(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),g=e.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[k](g))return c?c(h[g]):h[g];i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[q](b,e);return c?c(h[g]):h[g]}return d}function b(a){if(b.is(a,"function"))return d?a():dh.on("DOMload",a);if(b.is(a,I)){var c=a,e=cq[q](b,c.splice(0,3+b.is(c[0],G))),f=e.set(),g=0,i=c.length,j;for(;g',bo=bn.firstChild,bo.style.behavior="url(#default#VML)";if(!bo||typeof bo.adj!="object")return b.type=t;bn=null}b.svg=!(b.vml=b.type=="VML"),o=n.prototype=b.prototype,o.customAttributes={},b._id=0,b._oid=0,b.fn={},b.is=function(a,b){b=z.call(b);if(b=="finite")return!Q[k](+a);return b=="null"&&a===null||b==typeof a||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||L.call(a).slice(8,-1).toLowerCase()==b},b.angle=function(a,c,d,e,f,g){if(f==null){var h=a-d,i=c-e;if(!h&&!i)return 0;return(180+A.atan2(-i,-h)*180/F+360)%360}return b.angle(a,c,f,g)-b.angle(d,e,f,g)},b.rad=function(a){return a%360*F/180},b.deg=function(a){return a*180/F%360},b.snapTo=function(a,c,d){d=b.is(d,"finite")?d:10;if(b.is(a,I)){var e=a.length;while(e--)if(D(a[e]-c)<=d)return a[e]}else{a=+a;var f=c%a;if(fa-d)return c-f+a}return c};var bp=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=A.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});b.setWindow=function(a){dh("setWindow",b,l.win,a),l.win=a,l.doc=l.win.document,cE&&cE(l.win)};var bq=function(a){if(b.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write(""),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bq=bw(function(a){try{d.style.color=v(a).replace(c,t);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var h=l.doc.createElement("i");h.title="Raphaël Colour Picker",h.style.display="none",l.doc.body.appendChild(h),bq=bw(function(a){h.style.color=a;return l.doc.defaultView.getComputedStyle(h,t).getPropertyValue("color")})}return bq(a)},br=function(){return"hsb("+[this.h,this.s,this.b]+")"},bs=function(){return"hsl("+[this.h,this.s,this.l]+")"},bt=function(){return this.hex},bu=function(a,c,d){c==null&&b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,c=a.g,a=a.r);if(c==null&&b.is(a,H)){var e=b.getRGB(a);a=e.r,c=e.g,d=e.b}if(a>1||c>1||d>1)a/=255,c/=255,d/=255;return[a,c,d]},bv=function(a,c,d,e){a*=255,c*=255,d*=255;var f={r:a,g:c,b:d,hex:b.rgb(a,c,d),toString:bt};b.is(e,"finite")&&(f.opacity=e);return f};b.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-D(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bv(e,f,g,d)},b.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-D(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bv(e,f,g,d)},b.rgb2hsb=function(a,b,c){c=bu(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=B(a,b,c),g=f-C(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=d%6*60,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:br}},b.rgb2hsl=function(a,b,c){c=bu(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=B(a,b,c),h=C(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=d%6*60,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bs}},b._path2string=function(){return this.join(",").replace(ba,"$1")},b.getRGB=bw(function(a){if(!a||!!((a=v(a)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1};if(a=="none")return{r:-1,g:-1,b:-1,hex:"none"};!_[k](a.toLowerCase().substring(0,2))&&a.charAt()!="#"&&(a=bq(a));var c,d,e,f,g,h,i,j=a.match(P);if(j){j[2]&&(f=V(j[2].substring(5),16),e=V(j[2].substring(3,5),16),d=V(j[2].substring(1,3),16)),j[3]&&(f=V((h=j[3].charAt(3))+h,16),e=V((h=j[3].charAt(2))+h,16),d=V((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4].split($),d=U(i[0]),i[0].slice(-1)=="%"&&(d*=2.55),e=U(i[1]),i[1].slice(-1)=="%"&&(e*=2.55),f=U(i[2]),i[2].slice(-1)=="%"&&(f*=2.55),j[1].toLowerCase().slice(0,4)=="rgba"&&(g=U(i[3])),i[3]&&i[3].slice(-1)=="%"&&(g/=100));if(j[5]){i=j[5].split($),d=U(i[0]),i[0].slice(-1)=="%"&&(d*=2.55),e=U(i[1]),i[1].slice(-1)=="%"&&(e*=2.55),f=U(i[2]),i[2].slice(-1)=="%"&&(f*=2.55),(i[0].slice(-3)=="deg"||i[0].slice(-1)=="°")&&(d/=360),j[1].toLowerCase().slice(0,4)=="hsba"&&(g=U(i[3])),i[3]&&i[3].slice(-1)=="%"&&(g/=100);return b.hsb2rgb(d,e,f,g)}if(j[6]){i=j[6].split($),d=U(i[0]),i[0].slice(-1)=="%"&&(d*=2.55),e=U(i[1]),i[1].slice(-1)=="%"&&(e*=2.55),f=U(i[2]),i[2].slice(-1)=="%"&&(f*=2.55),(i[0].slice(-3)=="deg"||i[0].slice(-1)=="°")&&(d/=360),j[1].toLowerCase().slice(0,4)=="hsla"&&(g=U(i[3])),i[3]&&i[3].slice(-1)=="%"&&(g/=100);return b.hsl2rgb(d,e,f,g)}j={r:d,g:e,b:f},j.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),b.is(g,"finite")&&(j.opacity=g);return j}return{r:-1,g:-1,b:-1,hex:"none",error:1}},b),b.hsb=bw(function(a,c,d){return b.hsb2rgb(a,c,d).hex}),b.hsl=bw(function(a,c,d){return b.hsl2rgb(a,c,d).hex}),b.rgb=bw(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),b.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},b.getColor.reset=function(){delete this.start},b.parsePathString=bw(function(a){if(!a)return null;var c={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},d=[];b.is(a,I)&&b.is(a[0],I)&&(d=bz(a)),d.length||v(a).replace(bb,function(a,b,e){var f=[],g=z.call(b);e.replace(bd,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(d.push([b][r](f.splice(0,2))),g="l",b=b=="m"?"l":"L");while(f.length>=c[g]){d.push([b][r](f.splice(0,c[g])));if(!c[g])break}}),d.toString=b._path2string;return d}),b.parseTransformString=bw(function(a){if(!a)return null;var c={r:3,s:4,t:2,m:6},d=[];b.is(a,I)&&b.is(a[0],I)&&(d=bz(a)),d.length||v(a).replace(bc,function(a,b,c){var e=[],f=z.call(b);c.replace(bd,function(a,b){b&&e.push(+b)}),d.push([f][r](e))}),d.toString=b._path2string;return d}),b.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=E(j,3)*a+E(j,2)*3*i*c+j*3*i*i*e+E(i,3)*g,l=E(j,3)*b+E(j,2)*3*i*d+j*3*i*i*f+E(i,3)*h,m=a+2*i*(c-a)+i*i*(e-2*c+a),n=b+2*i*(d-b)+i*i*(f-2*d+b),o=c+2*i*(e-c)+i*i*(g-2*e+c),p=d+2*i*(f-d)+i*i*(h-2*f+d),q=(1-i)*a+i*c,r=(1-i)*b+i*d,s=(1-i)*e+i*g,t=(1-i)*f+i*h,u=90-A.atan2(m-o,n-p)*180/F;(m>o||n1&&(u=A.sqrt(u),c=u*c,d=u*d);var v=c*c,w=d*d,x=(f==g?-1:1)*A.sqrt(D((v*w-v*t*t-w*s*s)/(v*t*t+w*s*s))),y=x*c*t/d+(a+h)/2,z=x*-d*s/c+(b+i)/2,B=A.asin(((b-z)/d).toFixed(9)),C=A.asin(((i-z)/d).toFixed(9));B=aC&&(B=B-F*2),!g&&C>B&&(C=C-F*2)}else B=j[0],C=j[1],y=j[2],z=j[3];var E=C-B;if(D(E)>k){var G=C,H=h,I=i;C=B+k*(g&&C>B?1:-1),h=y+c*A.cos(C),i=z+d*A.sin(C),m=bE(h,i,c,d,e,0,g,H,I,[C,G,y,z])}E=C-B;var J=A.cos(B),K=A.sin(B),L=A.cos(C),M=A.sin(C),N=A.tan(E/4),O=4/3*c*N,P=4/3*d*N,Q=[a,b],R=[a+O*K,b-P*J],S=[h+O*M,i-P*L],T=[h,i];R[0]=2*Q[0]-R[0],R[1]=2*Q[1]-R[1];if(j)return[R,S,T][r](m);m=[R,S,T][r](m).join().split(",");var U=[];for(var V=0,W=m.length;V"1e12"&&(l=.5),D(m)>"1e12"&&(m=.5),l>0&&l<1&&(p=bF(a,b,c,d,e,f,g,h,l),o.push(p.x),n.push(p.y)),m>0&&m<1&&(p=bF(a,b,c,d,e,f,g,h,m),o.push(p.x),n.push(p.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+A.sqrt(j*j-4*i*k))/2/i,m=(-j-A.sqrt(j*j-4*i*k))/2/i,D(l)>"1e12"&&(l=.5),D(m)>"1e12"&&(m=.5),l>0&&l<1&&(p=bF(a,b,c,d,e,f,g,h,l),o.push(p.x),n.push(p.y)),m>0&&m<1&&(p=bF(a,b,c,d,e,f,g,h,m),o.push(p.x),n.push(p.y));return{min:{x:C[q](0,o),y:C[q](0,n)},max:{x:B[q](0,o),y:B[q](0,n)}}}),bH=bw(function(a,b){var c=bB(a),d=b&&bB(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][r](bE[q](0,[b.x,b.y][r](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][r](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][r](bD(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][r](bD(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][r](bC(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][r](bC(b.x,b.y,a[1],b.y));break;case"V":a=["C"][r](bC(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][r](bC(b.x,b.y,b.X,b.Y))}return a},h=function(a,b){if(a[b].length>7){a[b].shift();var e=a[b];while(e.length)a.splice(b++,0,["C"][r](e.splice(0,6)));a.splice(b,1),k=B(c.length,d&&d.length||0)}},i=function(a,b,e,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),e.bx=0,e.by=0,e.x=a[g][1],e.y=a[g][2],k=B(c.length,d&&d.length||0))};for(var j=0,k=B(c.length,d&&d.length||0);j.5)*2-1;E(f-.5,2)+E(g-.5,2)>.25&&(g=A.sqrt(.25-E(f-.5,2))*e+.5)&&g!=.5&&(g=g.toFixed(5)-1e-5*e)}return t}),c=c.split(/\s*\-\s*/);if(d=="linear"){var m=c.shift();m=-U(m);if(isNaN(m))return null;var n=[0,0,A.cos(b.rad(m)),A.sin(b.rad(m))],o=1/(B(D(n[2]),D(n[3]))||1);n[2]*=o,n[3]*=o,n[2]<0&&(n[0]=-n[2],n[2]=0),n[3]<0&&(n[1]=-n[3],n[3]=0)}var p=bI(c);if(!p)return null;a.gradient&&(i.defs.removeChild(a.gradient),delete a.gradient),k=bZ(d+"Gradient",{id:e}),a.gradient=k,bZ(k,d=="radial"?{fx:f,fy:g}:{x1:n[0],y1:n[1],x2:n[2],y2:n[3],gradientTransform:a.matrix.invert()}),i.defs.appendChild(k);for(var q=0,r=p.length;q1?w.opacity/100:w.opacity});case"stroke":w=b.getRGB(j),e[T](i,w.hex),i=="stroke"&&w[k]("opacity")&&bZ(e,{"stroke-opacity":w.opacity>1?w.opacity/100:w.opacity}),i=="stroke"&&a._.arrows&&("startString"in a._.arrows&&ce(a,a._.arrows.startString),"endString"in a._.arrows&&ce(a,a._.arrows.endString,1));break;case"gradient":(a.type=="circle"||a.type=="ellipse"||v(j).charAt()!="r")&&cc(a,j);break;case"opacity":f.gradient&&!f[k]("stroke-opacity")&&bZ(e,{"stroke-opacity":j>1?j/100:j});case"fill-opacity":if(f.gradient){x=l.doc.getElementById(e.getAttribute(K).replace(/^url\(#|\)$/g,t)),x&&(y=x.getElementsByTagName("stop"),bZ(y[y.length-1],{"stop-opacity":j}));break};default:i=="font-size"&&(j=V(j,10)+"px");var A=i.replace(/(\-.)/g,function(a){return X.call(a.substring(1))});e.style[A]=j,a._.dirty=1,e[T](i,j)}}ch(a,c)},cg=1.2,ch=function(a,c){if(a.type=="text"&&!!(c[k]("text")||c[k]("font")||c[k]("font-size")||c[k]("x")||c[k]("y"))){var d=a.attrs,e=a.node,f=e.firstChild?V(l.doc.defaultView.getComputedStyle(e.firstChild,t).getPropertyValue("font-size"),10):10;if(c[k]("text")){d.text=c.text;while(e.firstChild)e.removeChild(e.firstChild);var g=v(c.text).split("\n"),h=[],i;for(var j=0,m=g.length;j"));var R=N.getBoundingClientRect();m.W=e.w=(R.right-R.left)/P,m.H=e.h=(R.bottom-R.top)/P,m.paper.canvas.style.display="none",m.X=e.x,m.Y=e.y+m.H/2,("x"in c||"y"in c)&&(m.path.v=b.format("m{0},{1}l{2},{1}",S(e.x*cx),S(e.y*cx),S(e.x*cx)+1));var T=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var V=0,W=T.length;V.25&&(c=A.sqrt(.25-E(b-.5,2))*((c>.5)*2-1)+.5),f=b+u+c);return t}),b=b.split(/\s*\-\s*/);if(e=="linear"){var g=b.shift();g=-U(g);if(isNaN(g))return null}var h=bI(b);if(!h)return null;a=a.shape||a.node;if(h.length){a.removeChild(c),c.on=!0,c.method="none",c.color=h[0].color,c.color2=h[h.length-1].color;var i=[];for(var j=0,k=h.length;j')}}catch(c){cD=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}};cE(l.win),cq=function(){var a=bJ[q](0,arguments),c=a.container,d=a.height,e,f=a.width,g=a.x,h=a.y;if(!c)throw new Error("VML container not found.");var i=new n,j=i.canvas=l.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=cx*1e3+u+cx*1e3,i.coordorigin="0 0",i.span=l.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=b.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(l.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),bK.call(i,i,b.fn),i.renderfix=bh;return i},o.clear=function(){dh("clear",this),this.canvas.innerHTML=t,this.span=l.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},o.remove=function(){dh("remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]=bQ(a);return!0}}var cF=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);navigator.vendor=="Apple Computer, Inc."&&(cF&&cF[1]<4||navigator.platform.slice(0,2)=="iP")||navigator.vendor=="Google Inc."&&cF&&cF[1]<8?o.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:o.safari=bh;var cG=function(){this.returnValue=!1},cH=function(){return this.originalEvent.preventDefault()},cI=function(){this.cancelBubble=!0},cJ=function(){return this.originalEvent.stopPropagation()},cK=function(){if(l.doc.addEventListener)return function(a,b,c,d){var e=s&&y[b]?y[b]:b,f=function(e){if(s&&y[k](b))for(var f=0,g=e.targetTouches&&e.targetTouches.length;f1&&(a=Array.prototype.splice.call(arguments,0,arguments.length));return new de(a)},o.setSize=cp,o.setViewBox=cr,o.top=o.bottom=null,o.raphael=b;var cP=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(l.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(l.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};o.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=l.doc.elementFromPoint(a,b);if(l.win.opera&&e.tagName=="svg"){var f=cP(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},o.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},o.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},cj.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bl[this.type](this),b.bboxwt=by(this.realPath),b.bboxwt.toString=cR,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bl[this.type](this);b.bbox=by(bm(this.realPath,this.matrix)),b.bbox.toString=cR,b.dirty=b.dirtyT=0}return b.bbox},cj.clone=function(){if(this.removed)return null;return this.paper[this.type]().attr(this.attr())},cj.glow=function(a){if(this.type=="text")return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bl[this.type](this);f=this.matrix?bm(f,this.matrix):f;for(var g=1;g=j)return p;o=p}if(j==null)return k},cU=function(a,c){return function(d,e,f){d=bH(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;oe){if(c&&!l.start){m=cT(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!c){m=cT(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=a?n:c?l:b.findDotsAtSegment(g,h,i[1],i[2],i[3],i[4],i[5],i[6],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cV=cU(1),cW=cU(),cX=cU(0,1);b.getTotalLength=cV,b.getPointAtLength=cW,b.getSubpath=function(a,b,c){if(D(this.getTotalLength(a)-c)<1e-6)return cX(a,b).end;var d=cX(a,c,1);return b?cX(d,b).end:d},cj.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cV(this.attrs.path)}},cj.getPointAtLength=function(a){if(this.type=="path")return cW(this.attrs.path,a)},cj.getSubpath=function(a,c){if(this.type=="path")return b.getSubpath(this.attrs.path,a,c)};var cY=b.easing_formulas={linear:function(a){return a},"<":function(a){return E(a,1.7)},">":function(a){return E(a,.48)},"<>":function(a){var b=.48-a/1.04,c=A.sqrt(.1734+b*b),d=c-b,e=E(D(d),1/3)*(d<0?-1:1),f=-c-b,g=E(D(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return E(2,-10*a)*A.sin((a-.075)*2*F/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cY.easeIn=cY["ease-in"]=cY["<"],cY.easeOut=cY["ease-out"]=cY[">"],cY.easeInOut=cY["ease-in-out"]=cY["<>"],cY["back-in"]=cY.backIn,cY["back-out"]=cY.backOut;var cZ=[],c$=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},c_=function(){var a=+(new Date),c=0;for(;c}) + - callback (function) #optional callback function which is going to be executed in the context of newly created paper * or - onReadyCallback (function) function that is going to be called on DOM ready event. You can also subscribe to this event via Eve’s “DOMLoad” event. In this case method returns `undefined`. = (object) @Paper @@ -55,7 +58,7 @@ \*/ function R(first) { if (R.is(first, "function")) { - return eve.on("DOMload", first); + return loaded ? first() : eve.on("DOMload", first); } else if (R.is(first, array)) { var a = first, cnv = create[apply](R, a.splice(0, 3 + R.is(a[0], nu))), @@ -68,11 +71,21 @@ elements[has](j.type) && res.push(cnv[j.type]().attr(j)); } return res; + } else { + var args = Array.prototype.slice.call(arguments, 0); + if (R.is(args[args.length - 1], "function")) { + var f = args.pop(); + return loaded ? f.call(create[apply](R, args)) : eve.on("DOMload", function () { + f.call(create[apply](R, args)); + }); + } else { + return create[apply](R, arguments); + } } - return create[apply](R, arguments); } R.version = "2.0.0"; - var separator = /[, ]+/, + var loaded, + separator = /[, ]+/, elements = {circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1}, formatrg = /\{(\d+)\}/g, proto = "prototype", @@ -1601,8 +1614,8 @@ _.sx = sx; _.sy = sy; _.deg = deg; - _.dx = dx = m.m[0][2]; - _.dy = dy = m.m[1][2]; + _.dx = dx = m.e; + _.dy = dy = m.f; if (sx == 1 && sy == 1 && !deg && _.bbox) { _.bbox.x += +dx; @@ -1682,50 +1695,75 @@ = (array) array of segments. \*/ R.path2curve = path2curve; - // Matrix - // var m = document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGMatrix(); + /*\ + * Raphael.matrix + [ method ] + ** + * Utility method + ** + * Returns matrix based on given parameters. + > Parameters + - a (number) + - b (number) + - c (number) + - d (number) + - e (number) + - f (number) + = (object) @Matrix + \*/ + R.matrix = function (a, b, c, d, e, f) { + return new Matrix(a, b, c, d, e, f); + }; function Matrix(a, b, c, d, e, f) { if (a != null) { - this.m = [[a, c, e], [b, d, f], [0, 0, 1]]; + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.e = e; + this.f = f; } else { - this.m = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; + this.a = 1; + this.b = 0; + this.c = 0; + this.d = 1; + this.e = 0; + this.f = 0; } } var matrixproto = Matrix.prototype; matrixproto.add = function (a, b, c, d, e, f) { var out = [[], [], []], + m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]], matrix = [[a, c, e], [b, d, f], [0, 0, 1]], x, y, z, res; + if (a && a instanceof Matrix) { + matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]]; + } + for (x = 0; x < 3; x++) { for (y = 0; y < 3; y++) { res = 0; for (z = 0; z < 3; z++) { - res += this.m[x][z] * matrix[z][y]; + res += m[x][z] * matrix[z][y]; } out[x][y] = res; } } - this.m = out; + this.a = out[0][0]; + this.b = out[1][0]; + this.c = out[0][1]; + this.d = out[1][1]; + this.e = out[0][2]; + this.f = out[1][2]; }; matrixproto.invert = function () { - var a = this.m[0][0], - b = this.m[1][0], - c = this.m[0][1], - d = this.m[1][1], - e = this.m[0][2], - f = this.m[1][2], - x = a * d - b * c; + var x = a * d - b * c; return new Matrix(d / x, -b / x, -c / x, a / x, (c * f - d * e) / x, (b * e - a * f) / x); }; matrixproto.clone = function () { - var a = this.m[0][0], - b = this.m[1][0], - c = this.m[0][1], - d = this.m[1][1], - e = this.m[0][2], - f = this.m[1][2]; - return new Matrix(a, b, c, d, e, f); + return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f); }; matrixproto.translate = function (x, y) { this.add(1, 0, 0, 1, x, y); @@ -1744,30 +1782,28 @@ this.add(1, 0, 0, 1, -x, -y); }; matrixproto.x = function (x, y) { - return x * this.m[0][0] + y * this.m[0][1] + this.m[0][2]; + return x * this.a + y * this.c + this.e; }; matrixproto.y = function (x, y) { - return x * this.m[1][0] + y * this.m[1][1] + this.m[1][2]; + return x * this.b + y * this.d + this.f; }; - matrixproto.get = function (i, j) { - return +this.m[i][j].toFixed(4); + matrixproto.get = function (i) { + return +this[Str.fromCharCode(97 + i)].toFixed(4); }; matrixproto.toString = function () { return R.svg ? - "matrix(" + [this.get(0, 0), this.get(1, 0), this.get(0, 1), this.get(1, 1), this.get(0, 2), this.get(1, 2)].join() + ")" : - [this.get(0, 0), this.get(0, 1), this.get(1, 0), this.get(1, 1), 0, 0].join(); + "matrix(" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + ")" : + [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join(); }; matrixproto.toFilter = function () { - return "progid:DXImageTransform.Microsoft.Matrix(M11=" + this.get(0, 0) + - ", M12=" + this.get(0, 1) + ", M21=" + this.get(1, 0) + ", M22=" + this.get(1, 1) + - ", Dx=" + this.get(0, 2) + ", Dy=" + this.get(1, 2) + ", sizingmedthod='auto expand')"; + return "progid:DXImageTransform.Microsoft.Matrix(M11=" + this.get(0) + + ", M12=" + this.get(2) + ", M21=" + this.get(1) + ", M22=" + this.get(3) + + ", Dx=" + this.get(4) + ", Dy=" + this.get(5) + ", sizingmedthod='auto expand')"; }; matrixproto.offset = function () { - return [this.m[0][2].toFixed(4), this.m[1][2].toFixed(4)]; + return [this.e.toFixed(4), this.f.toFixed(4)]; }; - R.Matrix = Matrix; - // SVG if (R.svg) { var xlink = "http://www.w3.org/1999/xlink", @@ -2320,7 +2356,7 @@ var a = el.attrs, node = el.node, fontSize = node.firstChild ? toInt(g.doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue("font-size"), 10) : 10; - + if (params[has]("text")) { a.text = params.text; while (node.firstChild) { @@ -2338,15 +2374,17 @@ } } else { tspans = node.getElementsByTagName("tspan"); - for (i = 0, ii = tspans.length; i < ii; i++) { - i && $(tspans[i], {dy: fontSize * leading, x: a.x}); + for (i = 0, ii = tspans.length; i < ii; i++) if (i) { + $(tspans[i], {dy: fontSize * leading, x: a.x}); + } else { + $(tspans[0], {dy: 0}); } } - $(node, {y: a.y}); + $(node, {x: a.x, y: a.y}); el._.dirty = 1; var bb = el._getBBox(), dif = a.y - (bb.y + bb.height / 2); - dif && R.is(dif, "finite") && $(tspans[0], {dy: a.y + dif}); + dif && R.is(dif, "finite") && $(tspans[0], {dy: dif}); }, Element = function (node, svg) { var X = 0, @@ -2893,10 +2931,18 @@ }, theText = function (svg, x, y, text) { var el = $("text"); - $(el, {x: x, y: y, "text-anchor": "middle"}); + // $(el, {x: x, y: y, "text-anchor": "middle"}); svg.canvas && svg.canvas.appendChild(el); var res = new Element(el, svg); - res.attrs = {x: x, y: y, "text-anchor": "middle", text: text, font: availableAttrs.font, stroke: "none", fill: "#000"}; + res.attrs = { + x: x, + y: y, + "text-anchor": "middle", + text: text, + font: availableAttrs.font, + stroke: "none", + fill: "#000" + }; res.type = "text"; setFillAndStroke(res, res.attrs); return res; @@ -2957,6 +3003,7 @@ container.renderfix(); return container; }, + setViewBox = function (x, y, w, h, fit) { eve("setViewBox", this, this._viewBox, [x, y, w, h, fit]); var size = mmax(w / this.width, h / this.height), @@ -4580,10 +4627,7 @@ if (this.removed) { return null; } - var attr = this.attr(); - delete attr.scale; - delete attr.translation; - return this.paper[this.type]().attr(attr); + return this.paper[this.type]().attr(this.attr()); }; /*\ * Element.glow @@ -5979,4 +6023,12 @@ }; return eve; })(); + + // Eve finished + + eve.on("DOMload", function () { + loaded = true; + }); + + })(); \ No newline at end of file -- 2.39.2