From 6c71b8047c50d70e691664690dd0bfd97de94fe4 Mon Sep 17 00:00:00 2001 From: Dmitry Baranovskiy Date: Thu, 24 Sep 2009 10:42:49 +1000 Subject: [PATCH] =?utf8?q?1.0=20RC=201.5=20Add=20limited=20support=20for?= =?utf8?q?=20radial=20gradients=20(only=20for=20circles=20and=20ellipses).?= =?utf8?q?=20New=20syntax=20=E2=80=9Cr#fff-#000=E2=80=9D=20or=20=E2=80=9Cr?= =?utf8?q?(0.25,=200.75)#fff-#00=E2=80=9D=20for=20focal=20point.=20Fixed?= =?utf8?q?=20bugs=20with=20quadratic=20curves=20and=20first=20parameter=20?= =?utf8?q?for=20Raphael=20being=20DOM=20Element.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- raphael-min.js | 4 +- raphael.js | 397 ++++++++++++++++++++++++------------------------- 2 files changed, 195 insertions(+), 206 deletions(-) diff --git a/raphael-min.js b/raphael-min.js index b2e2e21..1e77a06 100644 --- a/raphael-min.js +++ b/raphael-min.js @@ -1,7 +1,7 @@ /* - * Raphael 1.0 RC1.4 - JavaScript Vector Library + * Raphael 1.0 RC1.5 - 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 Y=/[, ]+/,g=document,L=window,P={was:"Raphael" in window,is:window.Raphael},f=function(){return l.apply(f,arguments);},b={},q={"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},u={"clip-rect":"csv",cx:"number",cy:"number",fill:"colour","fill-opacity":"number","font-size":"number",height:"number",opacity:"number",path:"path",r:"number",rotation:"csv",rx:"number",ry:"number",scale:"csv",stroke:"colour","stroke-opacity":"number","stroke-width":"number",translation:"csv",width:"number",x:"number",y:"number"},v=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"];f.version="1.0 RC1.4";f.type=(window.SVGAngle||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");f.svg=!(f.vml=f.type=="VML");f.idGenerator=0;f.fn={};f.is=function(i,e){e=(e+"").toLowerCase();if(e=="undefined"&&typeof i=="undefined"){return true;}if(i==null&&e=="null"){return true;}return Object.prototype.toString.call(i).replace(/^\[object\s+|\]$/gi,"").toLowerCase()==e;};f.setWindow=function(e){L=e;g=L.document;};f.hsb2rgb=X(function(af,ad,aj){if(f.is(af,"object")&&"h" in af&&"s" in af&&"b" in af){aj=af.b;ad=af.s;af=af.h;}var aa,ab,ak;if(aj==0){return{r:0,g:0,b:0,hex:"#000"};}if(af>1||ad>1||aj>1){af/=255;ad/=255;aj/=255;}var ac=Math.floor(af*6),ag=(af*6)-ac,Z=aj*(1-ad),R=aj*(1-(ad*ag)),al=aj*(1-(ad*(1-ag)));aa=[aj,R,Z,Z,al,aj,aj][ac];ab=[al,aj,aj,R,Z,Z,al][ac];ak=[Z,Z,al,aj,aj,R,Z][ac];aa*=255;ab*=255;ak*=255;var ah={r:aa,g:ab,b:ak},e=Math.round(aa).toString(16),ae=Math.round(ab).toString(16),ai=Math.round(ak).toString(16);if(e.length==1){e="0"+e;}if(ae.length==1){ae="0"+ae;}if(ai.length==1){ai="0"+ai;}ah.hex="#"+e+ae+ai;return ah;},f);f.rgb2hsb=X(function(e,i,ad){if(f.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){ad=e.b;i=e.g;e=e.r;}if(f.is(e,"string")){var af=f.getRGB(e);e=af.r;i=af.g;ad=af.b;}if(e>1||i>1||ad>1){e/=255;i/=255;ad/=255;}var ac=Math.max(e,i,ad),R=Math.min(e,i,ad),aa,Z,ab=ac;if(R==ac){return{h:0,s:0,b:ac};}else{var ae=(ac-R);Z=ae/ac;if(e==ac){aa=(i-ad)/ae;}else{if(i==ac){aa=2+((ad-e)/ae);}else{aa=4+((e-i)/ae);}}aa/=6;if(aa<0){aa+=1;}if(aa>1){aa-=1;}}return{h:aa,s:Z,b:ab};},f);f._path2string=function(){var Z="",ac;for(var R=0,aa=this.length;R1000){delete R.cache[R.count.unshift()];}R.count.push(ab);R.cache[ab]=Z.apply(i,aa);return e?e(R.cache[ab]):R.cache[ab];}return R;}f.getRGB=X(function(e){var af={aliceblue:"#f0f8ff",amethyst:"#96c",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#789",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#f0f",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#f00",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},ab;if((e+"").toLowerCase() in af){e=af[e.toString().toLowerCase()];}if(!e){return{r:0,g:0,b:0,hex:"#000"};}if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var R,Z,ae,ac=(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(ac){if(ac[2]){ae=parseInt(ac[2].substring(5),16);Z=parseInt(ac[2].substring(3,5),16);R=parseInt(ac[2].substring(1,3),16);}if(ac[3]){ae=parseInt(ac[3].substring(3)+ac[3].substring(3),16);Z=parseInt(ac[3].substring(2,3)+ac[3].substring(2,3),16);R=parseInt(ac[3].substring(1,2)+ac[3].substring(1,2),16);}if(ac[4]){ac=ac[4].split(/\s*,\s*/);R=parseFloat(ac[0]);Z=parseFloat(ac[1]);ae=parseFloat(ac[2]);}if(ac[5]){ac=ac[5].split(/\s*,\s*/);R=parseFloat(ac[0])*2.55;Z=parseFloat(ac[1])*2.55;ae=parseFloat(ac[2])*2.55;}if(ac[6]){ac=ac[6].split(/\s*,\s*/);R=parseFloat(ac[0]);Z=parseFloat(ac[1]);ae=parseFloat(ac[2]);return f.hsb2rgb(R,Z,ae);}if(ac[7]){ac=ac[7].split(/\s*,\s*/);R=parseFloat(ac[0])*2.55;Z=parseFloat(ac[1])*2.55;ae=parseFloat(ac[2])*2.55;return f.hsb2rgb(R,Z,ae);}ac={r:R,g:Z,b:ae};var i=Math.round(R).toString(16),aa=Math.round(Z).toString(16),ad=Math.round(ae).toString(16);(i.length==1)&&(i="0"+i);(aa.length==1)&&(aa="0"+aa);(ad.length==1)&&(ad="0"+ad);ac.hex="#"+i+aa+ad;ab=ac;}else{ab={r:-1,g:-1,b:-1,hex:"none"};}return ab;},f);f.getColor=function(i){var R=this.getColor.start=this.getColor.start||{h:0,s:1,b:i||0.75},e=this.hsb2rgb(R.h,R.s,R.b);R.h+=0.075;if(R.h>1){R.h=0;R.s-=0.2;if(R.s<=0){this.getColor.start={h:0,s:1,b:R.b};}}return e.hex;};f.getColor.reset=function(){delete this.start;};f.parsePathString=X(function(e){if(!e){return null;}var R={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=[];if(f.is(e,"array")&&f.is(e[0],"array")){i=t(e);}if(!i.length){(e+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(aa,Z,ad){var ac=[],ab=Z.toLowerCase();ad.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(af,ae){ae&&ac.push(+ae);});while(ac.length>=R[ab]){i.push([Z].concat(ac.splice(0,R[ab])));if(!R[ab]){break;}}});}i.toString=f._path2string;return i;});var C=X(function(ag){if(!ag){return{x:0,y:0,width:0,height:0};}ag=O(ag);var ad=0,ac=0,Z=[],R=[];for(var aa=0,af=ag.length;aaad){ae=ae-Math.PI*2;}if(!aa&&ad>ae){ad=ad-Math.PI*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,at=aj,ag=aO;ad=ae+aq*(aa&&ad>ae?1:-1);aj=ao+au*Math.cos(ad);aO=an+ar*Math.sin(ad);ay=r(aj,aO,au,ar,al,0,aa,at,ag,[ad,ap,ao,an]);}ai=ad-ae;var ac=Math.cos(ae),aN=Math.sin(ae),ab=Math.cos(ad),aM=Math.sin(ad),aB=Math.tan(ai/4),aE=4/3*au*aB,aC=4/3*ar*aB,aK=[ak,aP],aJ=[ak+aE*aN,aP-aC*ac],aI=[aj+aE*aM,aO-aC*ab],aG=[aj,aO];aJ[0]=2*aK[0]-aJ[0];aJ[1]=2*aK[1]-aJ[1];if(am){return[aJ,aI,aG].concat(ay);}else{ay=[aJ,aI,aG].concat(ay).join(",").split(",");var aw=[];for(var aH=0,ax=ay.length;aH0&&ac<1?ac:0),ab=A(i,e,Z,R,am,al,ai,af,aa>0&&aa<1?aa:0);aj=aj.concat(ad.x,ab.x);ag=ag.concat(ad.y,ab.y);ak=(al-2*R+e)-(af-2*al+R);ah=2*(R-e)-2*(al-R);ae=e-R;ac=(-ah+Math.sqrt(ah*ah-4*ak*ae))/2/ak;aa=(-ah-Math.sqrt(ah*ah-4*ak*ae))/2/ak;ad=A(i,e,Z,R,am,al,ai,af,ac>0&&ac<1?ac:0);ab=A(i,e,Z,R,am,al,ai,af,aa>0&&aa<1?aa:0);aj=aj.concat(ad.x,ab.x);ag=ag.concat(ad.y,ab.y);return{min:{x:Math.min.apply(Math,aj),y:Math.min.apply(Math,ag)},max:{x:Math.max.apply(Math,aj),y:Math.max.apply(Math,ag)}};}),O=X(function(al,ag){var aa=w(al),ah=ag&&w(ag),ai={x:0,y:0,bx:0,by:0,X:0,Y:0},e={x:0,y:0,bx:0,by:0,X:0,Y:0},ac=function(am,an){var i,ao;if(!am){return["C",an.x,an.y,an.x,an.y,an.x,an.y];}switch(am[0]){case"M":an.X=am[1];an.Y=am[2];break;case"A":am=["C"].concat(r.apply(0,[an.x,an.y].concat(am.slice(1))));break;case"S":i=an.x+(an.x-(an.bx||an.x));ao=an.y+(an.y-(an.by||an.y));am=["C",i,ao].concat(am.slice(1));break;case"T":i=an.x+(an.x-(an.bx||an.x));ao=an.y+(an.y-(an.by||an.y));am=["C"].concat(x(an.x,an.y,i,ao,am[1],am[2]));break;case"Q":am=["C"].concat(x(an.x,an.y,am[1],am[2],am[3],am[4]));break;case"L":am=["C"].concat(d(an.x,an.y,am[1],am[2]));break;case"H":am=["C"].concat(d(an.x,an.y,am[1],an.y));break;case"V":am=["C"].concat(d(an.x,an.y,an.x,am[1]));break;case"Z":am=["C"].concat(d(an.x,an.y,an.X,an.Y));break;}return am;},R=function(am,an){if(am[an].length>7){am[an].shift();var ao=am[an];while(ao.length){am.splice(an++,0,["C"].concat(ao.splice(0,6)));}am.splice(an,1);aj=Math.max(aa.length,ah&&ah.length||0);}},Z=function(aq,ap,an,am,ao){if(aq&&ap&&aq[ao][0]=="M"&&ap[ao][0]!="M"){ap.splice(ao,0,["M",am.x,am.y]);an.bx=0;an.by=0;an.x=aq[ao][1];an.y=aq[ao][2];aj=Math.max(aa.length,ah&&ah.length||0);}};for(var ae=0,aj=Math.max(aa.length,ah&&ah.length||0);ae3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},a=function(e,R){var i=this;for(var Z in R){if(R.hasOwnProperty(Z)&&!(Z in e)){switch(typeof R[Z]){case"function":(function(aa){e[Z]=e===i?aa:function(){return aa.apply(i,arguments);};})(R[Z]);break;case"object":e[Z]=e[Z]||{};a.call(this,e[Z],R[Z]);break;default:e[Z]=R[Z];break;}}}};if(f.svg){b.svgns="http://www.w3.org/2000/svg";b.xlink="http://www.w3.org/1999/xlink";var N=function(e){return +e+(Math.floor(e)==e)*0.5;};var z=function(ab){for(var R=0,Z=ab.length;Rad.height)&&(ad.height=ac.y+ac.height-ad.y);}}Z&&this.hide();return ad;};m.prototype.attr=function(){if(arguments.length==1&&f.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.length==1&&f.is(arguments[0],"array")){var e={};for(var i in arguments[0]){if(arguments[0].hasOwnProperty(i)){e[arguments[0][i]]=this.attrs[arguments[0][i]];}}return e;}if(arguments.length==2){var R={};R[arguments[0]]=arguments[1];F(this,R);}else{if(arguments.length==1&&f.is(arguments[0],"object")){F(this,arguments[0]);}}return this;};m.prototype.toFront=function(){this.node.parentNode.appendChild(this.node);return this;};m.prototype.toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.node.nextSibling){e.node.parentNode.insertBefore(this.node,e.node.nextSibling);}else{e.node.parentNode.appendChild(this.node);}return this;};m.prototype.insertBefore=function(e){var i=e.node;i.parentNode.insertBefore(this.node,i);return this;};m.prototype.blur=function(e){if(e!="none"){var i=B("filter"),R=B("feGaussianBlur");i.id="r"+(f.idGenerator++).toString(36);B(R,{stdDeviation:+e||1.5});i.appendChild(R);this.paper.defs.appendChild(i);this._blur=i;B(this.node,{filter:"url(#"+i.id+")"});}else{if(this._blur){this._blur.parentNode.removeChild(this._blur);delete this._blur;}this.node.removeAttribute("filter");}};var D=function(i,e,ab,aa){e=N(e);ab=N(ab);var Z=B("circle");i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={cx:e,cy:ab,r:aa,fill:"none",stroke:"#000"};R.type="circle";B(Z,R.attrs);return R;};var I=function(R,e,ad,i,ab,ac){e=N(e);ad=N(ad);var aa=B("rect");R.canvas&&R.canvas.appendChild(aa);var Z=new m(aa,R);Z.attrs={x:e,y:ad,width:i,height:ab,r:ac||0,rx:ac||0,ry:ac||0,fill:"none",stroke:"#000"};Z.type="rect";B(aa,Z.attrs);return Z;};var h=function(i,e,ac,ab,aa){e=N(e);ac=N(ac);var Z=B("ellipse");i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={cx:e,cy:ac,rx:ab,ry:aa,fill:"none",stroke:"#000"};R.type="ellipse";B(Z,R.attrs);return R;};var p=function(R,ac,e,ad,i,ab){var aa=B("image");B(aa,{x:e,y:ad,width:i,height:ab,preserveAspectRatio:"none"});aa.setAttributeNS(R.xlink,"href",ac);R.canvas&&R.canvas.appendChild(aa);var Z=new m(aa,R);Z.attrs={x:e,y:ad,width:i,height:ab,src:ac};Z.type="image";return Z;};var H=function(i,e,ab,aa){var Z=B("text");B(Z,{x:e,y:ab,"text-anchor":"middle"});i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={x:e,y:ab,"text-anchor":"middle",text:aa,font:q.font,stroke:"none",fill:"#000"};R.type="text";F(R,R.attrs);return R;};var E=function(i,e){this.width=i||this.width;this.height=e||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this;};var l=function(){var aa=G.apply(null,arguments),R=aa.container,ac=aa.x,ab=aa.y,Z=aa.width,ad=aa.height;if(!R){throw new Error("SVG container not found.");}b.canvas=B("svg");var e=b.canvas,ae=e.style;e.setAttribute("width",Z||512);b.width=Z||512;e.setAttribute("height",ad||342);b.height=ad||342;if(R==1){g.body.appendChild(e);ae.position="absolute";ae.left=ac+"px";ae.top=ab+"px";}else{if(R.firstChild){R.insertBefore(e,R.firstChild);}else{R.appendChild(e);}}R={canvas:e,clear:function(){while(this.canvas.firstChild){this.canvas.removeChild(this.canvas.firstChild);}this.desc=B("desc");this.defs=B("defs");this.desc.appendChild(g.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs);}};for(var i in b){if(b.hasOwnProperty(i)){if(i!="create"){R[i]=b[i];}}}a.call(R,R,f.fn);R.clear();R.raphael=f;return R;};b.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);};if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){b.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){e.remove();});};}else{b.safari=function(){};}}if(f.vml){var y=function(ac){var aa=O(ac);for(var R=0,Z=aa.length;R1&&(i=1);ai.opacity=i;}aj.fill&&(ai.on=true);if(ai.on==null||aj.fill=="none"){ai.on=false;}if(ai.on&&aj.fill){var R=aj.fill.match(/^url\(([^\)]+)\)$/i);if(R){ai.src=R[1];ai.type="tile";}else{ai.color=f.getRGB(aj.fill).hex;ai.src="";ai.type="solid";}}al&&ah.appendChild(ai);var aa=(ah.getElementsByTagName("stroke")&&ah.getElementsByTagName("stroke")[0]),am=false;!aa&&(am=aa=V("stroke"));if((aj.stroke&&aj.stroke!="none")||aj["stroke-width"]||aj["stroke-opacity"]!=null||aj["stroke-dasharray"]||aj["stroke-miterlimit"]||aj["stroke-linejoin"]||aj["stroke-linecap"]){aa.on=true;}(aj.stroke=="none"||aa.on==null||aj.stroke==0||aj["stroke-width"]==0)&&(aa.on=false);aa.on&&aj.stroke&&(aa.color=f.getRGB(aj.stroke).hex);var i=((+ak["stroke-opacity"]+1||2)-1)*((+ak.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);aa.opacity=i;aj["stroke-linejoin"]&&(aa.joinstyle=aj["stroke-linejoin"]||"miter");aa.miterlimit=aj["stroke-miterlimit"]||8;aj["stroke-linecap"]&&(aa.endcap={butt:"flat",square:"square",round:"round"}[aj["stroke-linecap"]]||"miter");aj["stroke-width"]&&(aa.weight=(parseFloat(aj["stroke-width"])||1)*12/16);if(aj["stroke-dasharray"]){var ag={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};aa.dashstyle=ag[aj["stroke-dasharray"]]||"";}am&&ah.appendChild(aa);}if(ao.type=="text"){var ac=b.span.style;ak.font&&(ac.font=ak.font);ak["font-family"]&&(ac.fontFamily=ak["font-family"]);ak["font-size"]&&(ac.fontSize=ak["font-size"]);ak["font-weight"]&&(ac.fontWeight=ak["font-weight"]);ak["font-style"]&&(ac.fontStyle=ak["font-style"]);b.span.innerHTML=ao.node.string.replace(/");ao.W=ak.w=b.span.offsetWidth;ao.H=ak.h=b.span.offsetHeight;ao.X=ak.x;ao.Y=ak.y+Math.round(ao.H/2);switch(ak["text-anchor"]){case"start":ao.node.style["v-text-align"]="left";ao.bbx=Math.round(ao.W/2);break;case"end":ao.node.style["v-text-align"]="right";ao.bbx=-Math.round(ao.W/2);break;default:ao.node.style["v-text-align"]="center";break;}}};var o=function(i,e,aa,Z){var R=Math.round(Math.atan((parseFloat(aa)-parseFloat(i))/(parseFloat(Z)-parseFloat(e)))*57.29)||0;if(!R&&parseFloat(i)');};}catch(U){var V=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var l=function(){var Z=G.apply(null,arguments),i=Z.container,ae=Z.height,af,R=Z.width,ad=Z.x,ac=Z.y;if(!i){throw new Error("VML container not found.");}var ab=b.canvas=g.createElement("div"),aa=ab.style;R=parseFloat(R)||"512px";ae=parseFloat(ae)||"342px";b.width=R;b.height=ae;b.coordsize=R+" "+ae;b.coordorigin="0 0";b.span=g.createElement("span");af=b.span.style;ab.appendChild(b.span);af.position="absolute";af.left="-99999px";af.top="-99999px";af.padding=0;af.margin=0;af.lineHeight=1;af.display="inline";aa.width=R+"px";aa.height=ae+"px";aa.position="absolute";aa.clip="rect(0 "+R+"px "+ae+"px 0)";if(i==1){g.body.appendChild(ab);aa.left=ad+"px";aa.top=ac+"px";i={style:{width:R,height:ae}};}else{i.style.width=R;i.style.height=ae;if(i.firstChild){i.insertBefore(ab,i.firstChild);}else{i.appendChild(ab);}}for(var e in b){if(b.hasOwnProperty(e)){i[e]=b[e];}}a.call(i,i,f.fn);i.clear=function(){while(ab.firstChild){ab.removeChild(ab.firstChild);}};i.raphael=f;return i;};b.remove=function(){this.canvas.parentNode.removeChild(this.canvas);};b.safari=function(){};}var j=(function(){if(g.addEventListener){return function(aa,R,i,e){var Z=function(ab){return i.call(e,ab);};aa.addEventListener(R,Z,false);return function(){aa.removeEventListener(R,Z,false);return true;};};}else{if(g.attachEvent){return function(ab,Z,R,i){var aa=function(ac){return R.call(i,ac||L.event);};ab.attachEvent("on"+Z,aa);var e=function(){ab.detachEvent("on"+Z,aa);return true;};if(Z=="mouseover"){ab.attachEvent("onmouseenter",aa);return function(){ab.detachEvent("onmouseenter",aa);return e();};}else{if(Z=="mouseout"){ab.attachEvent("onmouseleave",aa);return function(){ab.detachEvent("onmouseleave",aa);return e();};}}return e;};}}})();for(var Q=v.length;Q--;){(function(e){m.prototype[e]=function(i){if(f.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].push(j(this.shape||this.node,e,i,this));}return this;};m.prototype["un"+e]=function(i){this.events&&this.events[e]&&this.events[e][i]&&this.events[e][i].length&&this.events[e][i].shift()()&&!this.events[e][i].length&&delete this.events[e][i];};})(v[Q]);}b.circle=function(e,R,i){return D(this,e,R,i);};b.rect=function(e,aa,i,R,Z){return I(this,e,aa,i,R,Z);};b.ellipse=function(e,Z,R,i){return h(this,e,Z,R,i);};b.path=function(e){e&&!f.is(e,"string")&&!f.is(e[0],"array")&&(e+="");return W(f.format.apply(f,arguments),this);};b.image=function(Z,e,aa,i,R){return p(this,Z,e,aa,i,R);};b.text=function(e,R,i){return H(this,e,R,i);};b.set=function(e){arguments.length>1&&(e=Array.prototype.splice.call(arguments,0,arguments.length));return new k(e);};b.setSize=E;m.prototype.stop=function(){clearTimeout(this.animation_in_progress);return this;};m.prototype.scale=function(aj,ai,Z,R){if(aj==null&&ai==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+" "+this.y;}};}ai=ai||aj;!+ai&&(ai=aj);var an,al,am,ak,aA=this.attrs;if(aj!=0){var ah=this.getBBox(),ae=ah.x+ah.width/2,ab=ah.y+ah.height/2,az=aj/this._.sx,ay=ai/this._.sy;Z=(+Z||Z==0)?Z:ae;R=(+R||R==0)?R:ab;var ag=Math.round(aj/Math.abs(aj)),ad=Math.round(ai/Math.abs(ai)),aq=this.node.style,aC=Z+(ae-Z)*ag*az,aB=R+(ab-R)*ad*ay;switch(this.type){case"rect":case"image":var af=aA.width*ag*az,ap=aA.height*ad*ay,ac=aC-af/2,aa=aB-ap/2;this.attr({width:af,height:ap,x:ac,y:aa});break;case"circle":case"ellipse":this.attr({rx:aA.rx*az,ry:aA.ry*ay,r:aA.r*az,cx:aC,cy:aB});break;case"path":var at=c(aA.path),au=true;for(var aw=0,ao=at.length;aw":function(e){return Math.pow(e-1,3)+1;},"<>":function(e){e=e*2;if(e<1){return Math.pow(e,3)/2;}e-=2;return(Math.pow(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(R){if(R==0||R==1){return R;}var i=0.3,e=i/4;return Math.pow(2,-10*R)*Math.sin((R-e)*(2*Math.PI)/i)+1;},bounce:function(Z){var i=7.5625,R=2.75,e;if(Z<(1/R)){e=i*Z*Z;}else{if(Z<(2/R)){Z-=(1.5/R);e=i*Z*Z+0.75;}else{if(Z<(2.5/R)){Z-=(2.25/R);e=i*Z*Z+0.9375;}else{Z-=(2.625/R);e=i*Z*Z+0.984375;}}}return e;}};m.prototype.animate=function(at,aj,ai,aa){clearTimeout(this.animation_in_progress);if(f.is(ai,"function")||!ai){aa=ai||null;}var am={},R={},ag={},af={x:0,y:0};for(var ak in at){if(at.hasOwnProperty(ak)){if(ak in u){am[ak]=this.attr(ak);(am[ak]==null)&&(am[ak]=q[ak]);R[ak]=at[ak];switch(u[ak]){case"number":ag[ak]=(R[ak]-am[ak])/aj;break;case"colour":am[ak]=f.getRGB(am[ak]);var al=f.getRGB(R[ak]);ag[ak]={r:(al.r-am[ak].r)/aj,g:(al.g-am[ak].g)/aj,b:(al.b-am[ak].b)/aj};break;case"path":var ab=O(am[ak],R[ak]);am[ak]=ab[0];R[ak]=ab[1];ag[ak]=[];for(var ao=0,ae=am[ak].length;ao255?255:+i;},ac=this;(function ap(){var av=new Date-Z,aD={},au;if(av1||ac>1||ai>1){ae/=255;ac/=255;ai/=255;}var ab=Math.floor(ae*6),af=(ae*6)-ab,Y=ai*(1-ac),R=ai*(1-(ac*af)),ak=ai*(1-(ac*(1-af)));Z=[ai,R,Y,Y,ak,ai,ai][ab];aa=[ak,ai,ai,R,Y,Y,ak][ab];aj=[Y,Y,ak,ai,ai,R,Y][ab];Z*=255;aa*=255;aj*=255;var ag={r:Z,g:aa,b:aj},e=Math.round(Z).toString(16),ad=Math.round(aa).toString(16),ah=Math.round(aj).toString(16);if(e.length==1){e="0"+e;}if(ad.length==1){ad="0"+ad;}if(ah.length==1){ah="0"+ah;}ag.hex="#"+e+ad+ah;return ag;},f);f.rgb2hsb=W(function(e,i,ac){if(f.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){ac=e.b;i=e.g;e=e.r;}if(f.is(e,"string")){var ae=f.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=Math.max(e,i,ac),R=Math.min(e,i,ac),Z,Y,aa=ab;if(R==ab){return{h:0,s:0,b:ab};}else{var ad=(ab-R);Y=ad/ab;if(e==ab){Z=(i-ac)/ad;}else{if(i==ab){Z=2+((ac-e)/ad);}else{Z=4+((e-i)/ad);}}Z/=6;if(Z<0){Z+=1;}if(Z>1){Z-=1;}}return{h:Z,s:Y,b:aa};},f);f._path2string=function(){var Y="",ab;for(var R=0,Z=this.length;R1000){delete R.cache[R.count.unshift()];}R.count.push(aa);R.cache[aa]=Y.apply(i,Z);return e?e(R.cache[aa]):R.cache[aa];}return R;}f.getRGB=W(function(e){var ae={aliceblue:"#f0f8ff",amethyst:"#96c",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#789",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#f0f",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#f00",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},aa;if((e+"").toLowerCase() in ae){e=ae[(e+"").toLowerCase()];}if(!e){return{r:0,g:0,b:0,hex:"#000"};}if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var R,Y,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=parseInt(ab[2].substring(5),16);Y=parseInt(ab[2].substring(3,5),16);R=parseInt(ab[2].substring(1,3),16);}if(ab[3]){ad=parseInt(ab[3].substring(3)+ab[3].substring(3),16);Y=parseInt(ab[3].substring(2,3)+ab[3].substring(2,3),16);R=parseInt(ab[3].substring(1,2)+ab[3].substring(1,2),16);}if(ab[4]){ab=ab[4].split(/\s*,\s*/);R=parseFloat(ab[0]);Y=parseFloat(ab[1]);ad=parseFloat(ab[2]);}if(ab[5]){ab=ab[5].split(/\s*,\s*/);R=parseFloat(ab[0])*2.55;Y=parseFloat(ab[1])*2.55;ad=parseFloat(ab[2])*2.55;}if(ab[6]){ab=ab[6].split(/\s*,\s*/);R=parseFloat(ab[0]);Y=parseFloat(ab[1]);ad=parseFloat(ab[2]);return f.hsb2rgb(R,Y,ad);}if(ab[7]){ab=ab[7].split(/\s*,\s*/);R=parseFloat(ab[0])*2.55;Y=parseFloat(ab[1])*2.55;ad=parseFloat(ab[2])*2.55;return f.hsb2rgb(R,Y,ad);}ab={r:R,g:Y,b:ad};var i=Math.round(R).toString(16),Z=Math.round(Y).toString(16),ac=Math.round(ad).toString(16);(i.length==1)&&(i="0"+i);(Z.length==1)&&(Z="0"+Z);(ac.length==1)&&(ac="0"+ac);ab.hex="#"+i+Z+ac;aa=ab;}else{aa={r:-1,g:-1,b:-1,hex:"none",error:1};}return aa;},f);f.getColor=function(i){var R=this.getColor.start=this.getColor.start||{h:0,s:1,b:i||0.75},e=this.hsb2rgb(R.h,R.s,R.b);R.h+=0.075;if(R.h>1){R.h=0;R.s-=0.2;if(R.s<=0){this.getColor.start={h:0,s:1,b:R.b};}}return e.hex;};f.getColor.reset=function(){delete this.start;};f.parsePathString=W(function(e){if(!e){return null;}var R={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=[];if(f.is(e,"array")&&f.is(e[0],"array")){i=s(e);}if(!i.length){(e+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(Z,Y,ac){var ab=[],aa=Y.toLowerCase();ac.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(ae,ad){ad&&ab.push(+ad);});while(ab.length>=R[aa]){i.push([Y].concat(ab.splice(0,R[aa])));if(!R[aa]){break;}}});}i.toString=f._path2string;return i;});var B=W(function(ag){if(!ag){return{x:0,y:0,width:0,height:0};}ag=N(ag);var ad=0,ac=0,Z=[],R=[];for(var aa=0,af=ag.length;aaac){ad=ad-Math.PI*2;}if(!Z&&ac>ad){ac=ac-Math.PI*2;}}else{ad=al[0];ac=al[1];an=al[2];am=al[3];}var ah=ac-ad;if(Math.abs(ah)>ap){var ao=ac,ar=ai,af=aN;ac=ad+ap*(Z&&ac>ad?1:-1);ai=an+at*Math.cos(ac);aN=am+aq*Math.sin(ac);ax=q(ai,aN,at,aq,ak,0,Z,ar,af,[ac,ao,an,am]);}ah=ac-ad;var ab=Math.cos(ad),aM=Math.sin(ad),aa=Math.cos(ac),aL=Math.sin(ac),aA=Math.tan(ah/4),aD=4/3*at*aA,aB=4/3*aq*aA,aJ=[aj,aO],aI=[aj+aD*aM,aO-aB*ab],aH=[ai+aD*aL,aN-aB*aa],aF=[ai,aN];aI[0]=2*aJ[0]-aI[0];aI[1]=2*aJ[1]-aI[1];if(al){return[aI,aH,aF].concat(ax);}else{ax=[aI,aH,aF].concat(ax).join(",").split(",");var av=[];for(var aG=0,aw=ax.length;aG0&&ab<1?ab:0),aa=z(i,e,Y,R,al,ak,ah,ae,Z>0&&Z<1?Z:0);ai=ai.concat(ac.x,aa.x);af=af.concat(ac.y,aa.y);aj=(ak-2*R+e)-(ae-2*ak+R);ag=2*(R-e)-2*(ak-R);ad=e-R;ab=(-ag+Math.sqrt(ag*ag-4*aj*ad))/2/aj;Z=(-ag-Math.sqrt(ag*ag-4*aj*ad))/2/aj;ac=z(i,e,Y,R,al,ak,ah,ae,ab>0&&ab<1?ab:0);aa=z(i,e,Y,R,al,ak,ah,ae,Z>0&&Z<1?Z:0);ai=ai.concat(ac.x,aa.x);af=af.concat(ac.y,aa.y);return{min:{x:Math.min.apply(Math,ai),y:Math.min.apply(Math,af)},max:{x:Math.max.apply(Math,ai),y:Math.max.apply(Math,af)}};}),N=W(function(ak,af){var Z=v(ak),ag=af&&v(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"].concat(q.apply(0,[am.x,am.y].concat(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].concat(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"].concat(w(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"].concat(w(am.x,am.y,al[1],al[2],al[3],al[4]));break;case"L":al=["C"].concat(d(am.x,am.y,al[1],al[2]));break;case"H":al=["C"].concat(d(am.x,am.y,al[1],am.y));break;case"V":al=["C"].concat(d(am.x,am.y,am.x,al[1]));break;case"Z":al=["C"].concat(d(am.x,am.y,am.X,am.Y));break;}return al;},R=function(al,am){if(al[am].length>7){al[am].shift();var an=al[am];while(an.length){al.splice(am++,0,["C"].concat(an.splice(0,6)));}al.splice(am,1);ai=Math.max(Z.length,ag&&ag.length||0);}},Y=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=Math.max(Z.length,ag&&ag.length||0);}};for(var ad=0,ai=Math.max(Z.length,ag&&ag.length||0);ad3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},a=function(e,R){var i=this;for(var Y in R){if(R.hasOwnProperty(Y)&&!(Y in e)){switch(typeof R[Y]){case"function":(function(Z){e[Y]=e===i?Z:function(){return Z.apply(i,arguments);};})(R[Y]);break;case"object":e[Y]=e[Y]||{};a.call(this,e[Y],R[Y]);break;default:e[Y]=R[Y];break;}}}};if(f.svg){b.svgns="http://www.w3.org/2000/svg";b.xlink="http://www.w3.org/1999/xlink";var M=function(e){return +e+(Math.floor(e)==e)*0.5;};var y=function(aa){for(var R=0,Y=aa.length;R0.25){aa=Math.sqrt(0.25-Math.pow(ac-0.5,2))+0.5;}}return"";});ai=ai.split(/\s*\-\s*/);if(af=="linear"){var ab=ai.shift();ab=-parseFloat(ab);if(isNaN(ab)){return null;}var Z=[0,0,Math.cos(ab*Math.PI/180),Math.sin(ab*Math.PI/180)],ah=1/(Math.max(Math.abs(Z[2]),Math.abs(Z[3]))||1);Z[2]*=ah;Z[3]*=ah;if(Z[2]<0){Z[0]=-Z[2];Z[2]=0;}if(Z[3]<0){Z[1]=-Z[3];Z[3]=0;}}var ae=n(ai);if(!ae){return null;}var R=A(af+"Gradient");R.id="r"+(f.idGenerator++).toString(36);af=="radial"?A(R,{fx:ac,fy:aa}):A(R,{x1:Z[0],y1:Z[1],x2:Z[2],y2:Z[3]});e.defs.appendChild(R);for(var ad=0,aj=ae.length;adac.height)&&(ac.height=ab.y+ab.height-ac.y);}}Y&&this.hide();return ac;};m.prototype.attr=function(){if(arguments.length==1&&f.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.length==1&&f.is(arguments[0],"array")){var e={};for(var i in arguments[0]){if(arguments[0].hasOwnProperty(i)){e[arguments[0][i]]=this.attrs[arguments[0][i]];}}return e;}if(arguments.length==2){var R={};R[arguments[0]]=arguments[1];E(this,R);}else{if(arguments.length==1&&f.is(arguments[0],"object")){E(this,arguments[0]);}}return this;};m.prototype.toFront=function(){this.node.parentNode.appendChild(this.node);return this;};m.prototype.toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.node.nextSibling){e.node.parentNode.insertBefore(this.node,e.node.nextSibling);}else{e.node.parentNode.appendChild(this.node);}return this;};m.prototype.insertBefore=function(e){var i=e.node;i.parentNode.insertBefore(this.node,i);return this;};var C=function(i,e,aa,Z){e=M(e);aa=M(aa);var Y=A("circle");i.canvas&&i.canvas.appendChild(Y);var R=new m(Y,i);R.attrs={cx:e,cy:aa,r:Z,fill:"none",stroke:"#000"};R.type="circle";A(Y,R.attrs);return R;};var H=function(R,e,ac,i,aa,ab){e=M(e);ac=M(ac);var Z=A("rect");R.canvas&&R.canvas.appendChild(Z);var Y=new m(Z,R);Y.attrs={x:e,y:ac,width:i,height:aa,r:ab||0,rx:ab||0,ry:ab||0,fill:"none",stroke:"#000"};Y.type="rect";A(Z,Y.attrs);return Y;};var h=function(i,e,ab,aa,Z){e=M(e);ab=M(ab);var Y=A("ellipse");i.canvas&&i.canvas.appendChild(Y);var R=new m(Y,i);R.attrs={cx:e,cy:ab,rx:aa,ry:Z,fill:"none",stroke:"#000"};R.type="ellipse";A(Y,R.attrs);return R;};var o=function(R,ab,e,ac,i,aa){var Z=A("image");A(Z,{x:e,y:ac,width:i,height:aa,preserveAspectRatio:"none"});Z.setAttributeNS(R.xlink,"href",ab);R.canvas&&R.canvas.appendChild(Z);var Y=new m(Z,R);Y.attrs={x:e,y:ac,width:i,height:aa,src:ab};Y.type="image";return Y;};var G=function(i,e,aa,Z){var Y=A("text");A(Y,{x:e,y:aa,"text-anchor":"middle"});i.canvas&&i.canvas.appendChild(Y);var R=new m(Y,i);R.attrs={x:e,y:aa,"text-anchor":"middle",text:Z,font:p.font,stroke:"none",fill:"#000"};R.type="text";E(R,R.attrs);return R;};var D=function(i,e){this.width=i||this.width;this.height=e||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this;};var l=function(){var Z=F.apply(null,arguments),R=Z&&Z.container,ab=Z.x,aa=Z.y,Y=Z.width,ac=Z.height;if(!R){throw new Error("SVG container not found.");}b.canvas=A("svg");var e=b.canvas,ad=e.style;e.setAttribute("width",Y||512);b.width=Y||512;e.setAttribute("height",ac||342);b.height=ac||342;if(R==1){g.body.appendChild(e);ad.position="absolute";ad.left=ab+"px";ad.top=aa+"px";}else{if(R.firstChild){R.insertBefore(e,R.firstChild);}else{R.appendChild(e);}}R={canvas:e,clear:function(){while(this.canvas.firstChild){this.canvas.removeChild(this.canvas.firstChild);}this.desc=A("desc");this.defs=A("defs");this.desc.appendChild(g.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs);}};for(var i in b){if(b.hasOwnProperty(i)){if(i!="create"){R[i]=b[i];}}}a.call(R,R,f.fn);R.clear();R.raphael=f;return R;};b.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);};}if(f.vml){var x=function(ab){var Z=N(ab);for(var R=0,Y=Z.length;R1&&(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 R=ai.fill.match(/^url\(([^\)]+)\)$/i);if(R){ah.src=R[1];ah.type="tile";}else{ah.color=f.getRGB(ai.fill).hex;ah.src="";ah.type="solid";if(f.getRGB(ai.fill).error&&(an.type in {circle:1,ellipse:1}||(ai.fill+"").charAt(0)!="r")&&L(an,ai.fill)){aj.fill="none";aj.gradient=ai.fill;}}}ak&&ag.appendChild(ah);var Z=(ag.getElementsByTagName("stroke")&&ag.getElementsByTagName("stroke")[0]),al=false;!Z&&(al=Z=U("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"]){Z.on=true;}(ai.stroke=="none"||Z.on==null||ai.stroke==0||ai["stroke-width"]==0)&&(Z.on=false);Z.on&&ai.stroke&&(Z.color=f.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);Z.opacity=i;ai["stroke-linejoin"]&&(Z.joinstyle=ai["stroke-linejoin"]||"miter");Z.miterlimit=ai["stroke-miterlimit"]||8;ai["stroke-linecap"]&&(Z.endcap={butt:"flat",square:"square",round:"round"}[ai["stroke-linecap"]]||"miter");ai["stroke-width"]&&(Z.weight=(parseFloat(ai["stroke-width"])||1)*12/16);if(ai["stroke-dasharray"]){var af={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};Z.dashstyle=af[ai["stroke-dasharray"]]||"";}al&&ag.appendChild(Z);}if(an.type=="text"){var ab=b.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&&(b.span.innerHTML=an.node.string.replace(/"));an.W=aj.w=b.span.offsetWidth;an.H=aj.h=b.span.offsetHeight;an.X=aj.x;an.Y=aj.y+Math.round(an.H/2);switch(aj["text-anchor"]){case"start":an.node.style["v-text-align"]="left";an.bbx=Math.round(an.W/2);break;case"end":an.node.style["v-text-align"]="right";an.bbx=-Math.round(an.W/2);break;default:an.node.style["v-text-align"]="center";break;}}};var L=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+"").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(ah,ai,i){aa="radial";if(ai&&i){ai=parseFloat(ai);i=parseFloat(i);if(Math.pow(ai-0.5,2)+Math.pow(i-0.5,2)>0.25){i=Math.sqrt(0.25-Math.pow(ai-0.5,2))+0.5;}ab=ai+" "+i;}return"";});ac=ac.split(/\s*\-\s*/);if(aa=="linear"){var R=ac.shift();R=-parseFloat(R);if(isNaN(R)){return null;}}var Z=n(ac);if(!Z){return null;}e=e.shape||e.node;af=af[0]||U("fill");if(Z.length){af.on=true;af.method="none";af.type=(aa=="radial")?"gradientradial":"gradient";af.color=Z[0].color;af.color2=Z[Z.length-1].color;var ag=[];for(var Y=0,ae=Z.length;Y');};}catch(T){var U=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var l=function(){var Y=F.apply(null,arguments),i=Y.container,ad=Y.height,ae,R=Y.width,ac=Y.x,ab=Y.y;if(!i){throw new Error("VML container not found.");}var aa=b.canvas=g.createElement("div"),Z=aa.style;R=parseFloat(R)||512;ad=parseFloat(ad)||342;b.width=R;b.height=ad;b.coordsize=R+" "+ad;b.coordorigin="0 0";b.span=g.createElement("span");ae=b.span.style;aa.appendChild(b.span);ae.position="absolute";ae.left="-99999px";ae.top="-99999px";ae.padding=0;ae.margin=0;ae.lineHeight=1;ae.display="inline";Z.width=R+"px";Z.height=ad+"px";Z.position="absolute";Z.clip="rect(0 "+R+"px "+ad+"px 0)";if(i==1){g.body.appendChild(aa);Z.left=ac+"px";Z.top=ab+"px";i={style:{width:R,height:ad}};}else{i.style.width=R;i.style.height=ad;if(i.firstChild){i.insertBefore(aa,i.firstChild);}else{i.appendChild(aa);}}for(var e in b){if(b.hasOwnProperty(e)){i[e]=b[e];}}a.call(i,i,f.fn);i.clear=function(){while(aa.firstChild){aa.removeChild(aa.firstChild);}};i.raphael=f;return i;};b.remove=function(){this.canvas.parentNode.removeChild(this.canvas);};}if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){b.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){e.remove();});};}else{b.safari=function(){};}var j=(function(){if(g.addEventListener){return function(Z,R,i,e){var Y=function(aa){return i.call(e,aa);};Z.addEventListener(R,Y,false);return function(){Z.removeEventListener(R,Y,false);return true;};};}else{if(g.attachEvent){return function(aa,Y,R,i){var Z=function(ab){return R.call(i,ab||K.event);};aa.attachEvent("on"+Y,Z);var e=function(){aa.detachEvent("on"+Y,Z);return true;};if(Y=="mouseover"){aa.attachEvent("onmouseenter",Z);return function(){aa.detachEvent("onmouseenter",Z);return e();};}else{if(Y=="mouseout"){aa.attachEvent("onmouseleave",Z);return function(){aa.detachEvent("onmouseleave",Z);return e();};}}return e;};}}})();for(var P=u.length;P--;){(function(e){m.prototype[e]=function(i){if(f.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].push(j(this.shape||this.node,e,i,this));}return this;};m.prototype["un"+e]=function(i){this.events&&this.events[e]&&this.events[e][i]&&this.events[e][i].length&&this.events[e][i].shift()()&&!this.events[e][i].length&&delete this.events[e][i];};})(u[P]);}b.circle=function(e,R,i){return C(this,e,R,i);};b.rect=function(e,Z,i,R,Y){return H(this,e,Z,i,R,Y);};b.ellipse=function(e,Y,R,i){return h(this,e,Y,R,i);};b.path=function(e){e&&!f.is(e,"string")&&!f.is(e[0],"array")&&(e+="");return V(f.format.apply(f,arguments),this);};b.image=function(Y,e,Z,i,R){return o(this,Y,e,Z,i,R);};b.text=function(e,R,i){return G(this,e,R,i);};b.set=function(e){arguments.length>1&&(e=Array.prototype.splice.call(arguments,0,arguments.length));return new k(e);};b.setSize=D;m.prototype.stop=function(){clearTimeout(this.animation_in_progress);return this;};m.prototype.scale=function(aj,ai,Y,R){if(aj==null&&ai==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+" "+this.y;}};}ai=ai||aj;!+ai&&(ai=aj);var an,al,am,ak,aA=this.attrs;if(aj!=0){var ag=this.getBBox(),ad=ag.x+ag.width/2,aa=ag.y+ag.height/2,az=aj/this._.sx,ay=ai/this._.sy;Y=(+Y||Y==0)?Y:ad;R=(+R||R==0)?R:aa;var af=Math.round(aj/Math.abs(aj)),ac=Math.round(ai/Math.abs(ai)),aq=this.node.style,aC=Y+(ad-Y)*af*az,aB=R+(aa-R)*ac*ay;switch(this.type){case"rect":case"image":var ae=aA.width*af*az,ap=aA.height*ac*ay,ah=aA.r*Math.min(az,ay),ab=aC-ae/2,Z=aB-ap/2;this.attr({width:ae,height:ap,x:ab,y:Z,r:ah});break;case"circle":case"ellipse":this.attr({rx:aA.rx*az,ry:aA.ry*ay,r:aA.r*Math.min(az,ay),cx:aC,cy:aB});break;case"path":var at=c(aA.path),au=true;for(var aw=0,ao=at.length;aw":function(e){return Math.pow(e-1,3)+1;},"<>":function(e){e=e*2;if(e<1){return Math.pow(e,3)/2;}e-=2;return(Math.pow(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(R){if(R==0||R==1){return R;}var i=0.3,e=i/4;return Math.pow(2,-10*R)*Math.sin((R-e)*(2*Math.PI)/i)+1;},bounce:function(Y){var i=7.5625,R=2.75,e;if(Y<(1/R)){e=i*Y*Y;}else{if(Y<(2/R)){Y-=(1.5/R);e=i*Y*Y+0.75;}else{if(Y<(2.5/R)){Y-=(2.25/R);e=i*Y*Y+0.9375;}else{Y-=(2.625/R);e=i*Y*Y+0.984375;}}}return e;}};m.prototype.animate=function(ar,ai,ah,Z){clearTimeout(this.animation_in_progress);if(f.is(ah,"function")||!ah){Z=ah||null;}var al={},R={},af={},ae={x:0,y:0};for(var aj in ar){if(ar.hasOwnProperty(aj)){if(aj in t){al[aj]=this.attr(aj);(al[aj]==null)&&(al[aj]=p[aj]);R[aj]=ar[aj];switch(t[aj]){case"number":af[aj]=(R[aj]-al[aj])/ai;break;case"colour":al[aj]=f.getRGB(al[aj]);var ak=f.getRGB(R[aj]);af[aj]={r:(ak.r-al[aj].r)/ai,g:(ak.g-al[aj].g)/ai,b:(ak.b-al[aj].b)/ai};break;case"path":var aa=N(al[aj],R[aj]);al[aj]=aa[0];R[aj]=aa[1];af[aj]=[];for(var an=0,ad=al[aj].length;an255?255:+i;},ab=this;(function ao(){var au=new Date-Y,aC={},at;if(au .25) { + fy = Math.sqrt(.25 - Math.pow(fx - .5, 2)) + .5; + } + } + return ""; + }); + gradient = gradient.split(/\s*\-\s*/); + if (type == "linear") { + var angle = gradient.shift(); + angle = -parseFloat(angle); + if (isNaN(angle)) { + return null; + } + var vector = [0, 0, Math.cos(angle * Math.PI / 180), Math.sin(angle * Math.PI / 180)], + max = 1 / (Math.max(Math.abs(vector[2]), Math.abs(vector[3])) || 1); + vector[2] *= max; + vector[3] *= max; + if (vector[2] < 0) { + vector[0] = -vector[2]; + vector[2] = 0; + } + if (vector[3] < 0) { + vector[1] = -vector[3]; + vector[3] = 0; + } + } + var dots = parseDots(gradient); + if (!dots) { + return null; } + var el = $(type + "Gradient"); + el.id = "r" + (R.idGenerator++).toString(36); + type == "radial" ? $(el, {fx: fx, fy: fy}) : $(el, {x1: vector[0], y1: vector[1], x2: vector[2], y2: vector[3]}); SVG.defs.appendChild(el); - var isopacity = true; - for (var i = 0, ii = gradient.dots.length; i < ii; i++) { + for (var i = 0, ii = dots.length; i < ii; i++) { var stop = $("stop"); - if (gradient.dots[i].offset) { - isopacity = false; - } $(stop, { - offset: gradient.dots[i].offset ? gradient.dots[i].offset : (i == 0) ? "0%" : "100%", - "stop-color": R.getRGB(gradient.dots[i].color).hex || "#fff" + offset: dots[i].offset ? dots[i].offset : !i ? "0%" : "100%", + "stop-color": dots[i].color || "#fff" }); - // ignoring opacity for internal points, because VML doesn't support it el.appendChild(stop); }; - if (isopacity && gradient.dots[ii - 1].opacity != null) { - $(stop, {"stop-opacity": gradient.dots[ii - 1].opacity}); - } $(o, { fill: "url(#" + el.id + ")", opacity: 1, "fill-opacity": 1 }); - o.style.fill = ""; - o.style.opacity = 1; - o.style.fillOpacity = 1; + s.fill = ""; + s.opacity = 1; + s.fillOpacity = 1; + return 1; }; var updatePosition = function (o) { var bbox = o.getBBox(); @@ -959,6 +962,7 @@ window.Raphael = (function () { attrs.path = roundPath(pathToAbsolute(value)); $(node, {d: attrs.path}); } + break; case "width": node.setAttribute(att, value); if (attrs.fx) { @@ -1064,17 +1068,23 @@ window.Raphael = (function () { o.pattern && updatePosition(o); break; } - 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 - $(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 - $(node, {"fill-opacity": attrs["fill-opacity"]}); + 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 + $(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 + $(node, {"fill-opacity": attrs["fill-opacity"]}); + } + } else if ((o.type in {circle: 1, ellipse: 1} || (value + "").charAt(0) != "r") && addGradientFill(node, value, o.paper)) { + attrs.gradient = value; + attrs.fill = "none"; + break; } case "stroke": node.style[att] = R.getRGB(value).hex; @@ -1082,7 +1092,7 @@ window.Raphael = (function () { node.setAttribute(att, R.getRGB(value).hex); break; case "gradient": - addGradientFill(node, value, o.paper); + (o.type in {circle: 1, ellipse: 1} || (value + "").charAt(0) != "r") && addGradientFill(node, value, o.paper); break; case "opacity": case "fill-opacity": @@ -1145,6 +1155,7 @@ window.Raphael = (function () { Y = 0; this[0] = node; this.node = node; + node.raphael = this; this.paper = svg; this.attrs = this.attrs || {}; this.transformations = []; // rotate, translate, scale @@ -1280,25 +1291,6 @@ window.Raphael = (function () { node.parentNode.insertBefore(this.node, node); return this; }; - Element.prototype.blur = function (size) { - // Experimental. No WebKit support. - if (size != "none") { - var fltr = $("filter"), - blur = $("feGaussianBlur"); - fltr.id = "r" + (R.idGenerator++).toString(36); - $(blur, {stdDeviation: +size || 1.5}); - fltr.appendChild(blur); - this.paper.defs.appendChild(fltr); - this._blur = fltr; - $(this.node, {filter: "url(#" + fltr.id + ")"}); - } else { - if (this._blur) { - this._blur.parentNode.removeChild(this._blur); - delete this._blur; - } - this.node.removeAttribute("filter"); - } - }; var theCircle = function (svg, x, y, r) { x = round(x); @@ -1362,7 +1354,7 @@ window.Raphael = (function () { }; var create = function () { var con = getContainer.apply(null, arguments), - container = con.container, + container = con && con.container, x = con.x, y = con.y, width = con.width, @@ -1415,14 +1407,6 @@ window.Raphael = (function () { paper.remove = function () { this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas); }; - if ({"Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) { // Safari or Chrome (WebKit) - paper.safari = function () { - var rect = this.rect(-99, -99, this.width + 99, this.height + 99); - setTimeout(function () {rect.remove();}); - }; - } else { - paper.safari = function () {}; - } } // VML @@ -1461,7 +1445,6 @@ window.Raphael = (function () { p.isAbsolute = true; p.type = "path"; p.path = []; - // p.last = {x: 0, y: 0, bx: 0, by: 0, isAbsolute: true}; p.Path = ""; if (pathString) { p.attrs.path = R.parsePathString(pathString); @@ -1508,7 +1491,7 @@ window.Raphael = (function () { var div = node.clipRect || doc.createElement("div"), dstyle = div.style, group = node.parentNode; - dstyle.clip = R.format("rect({0}px {2}px {3}px {1}px)", rect); + dstyle.clip = R.format("rect({1}px {2}px {3}px {0}px)", rect); if (!node.clipRect) { dstyle.position = "absolute"; dstyle.top = 0; @@ -1570,6 +1553,10 @@ window.Raphael = (function () { fill.color = R.getRGB(params.fill).hex; fill.src = ""; fill.type = "solid"; + if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || (params.fill + "").charAt(0) != "r") && addGradientFill(res, params.fill)) { + a.fill = "none"; + a.gradient = params.fill; + } } } newfill && node.appendChild(fill); @@ -1619,7 +1606,7 @@ window.Raphael = (function () { a["font-size"] && (s.fontSize = a["font-size"]); a["font-weight"] && (s.fontWeight = a["font-weight"]); a["font-style"] && (s.fontStyle = a["font-style"]); - paper.span.innerHTML = res.node.string.replace(/"); + res.node.string && (paper.span.innerHTML = res.node.string.replace(/")); res.W = a.w = paper.span.offsetWidth; res.H = a.h = paper.span.offsetHeight; res.X = a.x; @@ -1641,63 +1628,63 @@ window.Raphael = (function () { } } }; - var getAngle = function (a, b, c, d) { - var angle = Math.round(Math.atan((parseFloat(c) - parseFloat(a)) / (parseFloat(d) - parseFloat(b))) * 57.29) || 0; - if (!angle && parseFloat(a) < parseFloat(b)) { - angle = 180; - } - angle -= 180; - if (angle < 0) { - angle += 360; - } - return angle; - }; var addGradientFill = function (o, gradient) { - gradient = toGradient(gradient); o.attrs = o.attrs || {}; var attrs = o.attrs, - fill = o.node.getElementsByTagName("fill"); + fill = o.node.getElementsByTagName("fill"), + type = "linear", + fxfy = ".5 .5"; o.attrs.gradient = gradient; - o = o.shape || o.node; - if (fill.length) { - fill = fill[0]; - } else { - fill = createNode("fill"); + gradient = (gradient + "").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, function (all, fx, fy) { + type = "radial"; + if (fx && fy) { + fx = parseFloat(fx); + fy = parseFloat(fy); + if (Math.pow(fx - .5, 2) + Math.pow(fy - .5, 2) > .25) { + fy = Math.sqrt(.25 - Math.pow(fx - .5, 2)) + .5; + } + fxfy = fx + " " + fy; + } + return ""; + }); + gradient = gradient.split(/\s*\-\s*/); + if (type == "linear") { + var angle = gradient.shift(); + angle = -parseFloat(angle); + if (isNaN(angle)) { + return null; + } } - if (gradient.dots.length) { + var dots = parseDots(gradient); + if (!dots) { + return null; + } + o = o.shape || o.node; + fill = fill[0] || createNode("fill"); + if (dots.length) { fill.on = true; fill.method = "none"; - fill.type = ((gradient.type + "").toLowerCase() == "radial") ? "gradientTitle" : "gradient"; - if (!R.is(gradient.dots[0].color, "undefined")) { - fill.color = R.getRGB(gradient.dots[0].color).hex; - } - if (!R.is(gradient.dots[gradient.dots.length - 1].color, "undefined")) { - fill.color2 = R.getRGB(gradient.dots[gradient.dots.length - 1].color).hex; - } + fill.type = (type == "radial") ? "gradientradial" : "gradient"; + fill.color = dots[0].color; + fill.color2 = dots[dots.length - 1].color; var clrs = []; - for (var i = 0, ii = gradient.dots.length; i < ii; i++) { - if (gradient.dots[i].offset) { - clrs.push(gradient.dots[i].offset + " " + R.getRGB(gradient.dots[i].color).hex); - } - }; - var fillOpacity = R.is(gradient.dots[gradient.dots.length - 1].opacity, "undefined") ? (R.is(attrs.opacity, "undefined") ? 1 : attrs.opacity) : gradient.dots[gradient.dots.length - 1].opacity; + for (var i = 0, ii = dots.length; i < ii; i++) { + dots[i].offset && clrs.push(dots[i].offset + " " + dots[i].color); + } if (clrs.length) { fill.colors.value = clrs.join(","); - fillOpacity = R.is(attrs.opacity, "undefined") ? 1 : attrs.opacity; } else { fill.colors && (fill.colors.value = "0% " + fill.color); } - fill.opacity = fillOpacity; - if (!R.is(gradient.angle, "undefined")) { - fill.angle = (-gradient.angle + 270) % 360; - } else if (gradient.vector) { - fill.angle = getAngle.apply(null, gradient.vector); - } - if ((gradient.type + "").toLowerCase() == "radial") { + if (type == "radial") { fill.focus = "100%"; - fill.focusposition = "0.5 0.5"; + fill.focussize = fxfy; + fill.focusposition = fxfy; + } else { + fill.angle = (270 - angle) % 360; } } + return 1; }; var Element = function (node, group, vml) { var Rotation = 0, @@ -1706,6 +1693,7 @@ window.Raphael = (function () { Scale = 1; this[0] = node; this.node = node; + node.raphael = this; this.X = 0; this.Y = 0; this.attrs = {}; @@ -1737,7 +1725,7 @@ window.Raphael = (function () { } else { this._.rt.deg += deg; } - (cy == null) && (cx = null); + cy == null && (cx = null); this._.rt.cx = cx; this._.rt.cy = cy; this.setBox(this.attrs, cx, cy); @@ -1903,7 +1891,7 @@ window.Raphael = (function () { params = arguments[0]; } if (params) { - if (params.gradient) { + if (params.gradient && (this.type in {circle: 1, ellipse: 1} || (params.gradient + "").charAt(0) != "r")) { addGradientFill(this, params.gradient); } if (params.text && this.type == "text") { @@ -1936,18 +1924,6 @@ window.Raphael = (function () { element.Group.parentNode.insertBefore(this.Group, element.Group); return this; }; - Element.prototype.blur = function (size) { - var s = this.node.style, - f = s.filter; - f = f.replace(/progid:DXImageTransform\.Microsoft\.Blur\(pixelradius\=[^\)]+\)/g, ""); - if (size != "none") { - s.filter = f + " progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (+size || 1.5) + ")"; - s.margin = R.format("-{0}px 0 0 -{0}px", Math.round(+size || 1.5)); - } else { - s.filter = f; - s.margin = 0; - } - }; var theCircle = function (vml, x, y, r) { var g = createNode("group"), @@ -2120,8 +2096,8 @@ window.Raphael = (function () { } var c = paper.canvas = doc.createElement("div"), cs = c.style; - width = parseFloat(width) || "512px"; - height = parseFloat(height) || "342px"; + width = parseFloat(width) || 512; + height = parseFloat(height) || 342; paper.width = width; paper.height = height; paper.coordsize = width + " " + height; @@ -2174,10 +2150,18 @@ window.Raphael = (function () { paper.remove = function () { this.canvas.parentNode.removeChild(this.canvas); }; - paper.safari = function () {}; } // rest + // Safari or Chrome (WebKit) + if ({"Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) { + paper.safari = function () { + var rect = this.rect(-99, -99, this.width + 99, this.height + 99); + setTimeout(function () {rect.remove();}); + }; + } else { + paper.safari = function () {}; + } // Events var addEvent = (function () { @@ -2299,13 +2283,15 @@ window.Raphael = (function () { case "image": var neww = a.width * dirx * kx, newh = a.height * diry * ky, + newr = a.r * Math.min(kx, ky), newx = ncx - neww / 2, newy = ncy - newh / 2; this.attr({ width: neww, height: newh, x: newx, - y: newy + y: newy, + r: newr }); break; case "circle": @@ -2313,7 +2299,7 @@ window.Raphael = (function () { this.attr({ rx: a.rx * kx, ry: a.ry * ky, - r: a.r * kx, + r: a.r * Math.min(kx, ky), cx: ncx, cy: ncy }); @@ -2343,11 +2329,10 @@ window.Raphael = (function () { var dim2 = pathDimensions(path), dx = ncx - dim2.x - dim2.width / 2, dy = ncy - dim2.y - dim2.height / 2; - path = pathToRelative(path); path[0][1] += dx; path[0][2] += dy; - this.attr({path: path.join(" ")}); + this.attr({path: path}); break; } if (this.type in {text: 1, image:1} && (dirx != 1 || diry != 1)) { @@ -2614,6 +2599,10 @@ window.Raphael = (function () { } return this; }; + Element.prototype.toString = function () { + return "Rapha\u00ebl\u2019s object"; + }; + // Set var Set = function (items) { -- 2.39.2