From f644228b31d73bb6ba95d37e12fb2deaf084bb57 Mon Sep 17 00:00:00 2001 From: Dmitry Baranovskiy Date: Wed, 7 Oct 2009 10:33:03 +1100 Subject: [PATCH] 1.0 --- raphael-min.js | 4 +- raphael.js | 476 +++++++++++++++++++++++++------------------------ 2 files changed, 243 insertions(+), 237 deletions(-) diff --git a/raphael-min.js b/raphael-min.js index 462a3da..b4895df 100644 --- a/raphael-min.js +++ b/raphael-min.js @@ -1,7 +1,7 @@ /* - * Raphael 1.0 RC2 - JavaScript Vector Library + * Raphael 1.0 - 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 X=/[, ]+/,g=document,K=window,O={was:"Raphael" in window,is:window.Raphael},f=function(){if(f.is(arguments[0],"array")){var aa=[],e=arguments[0],R=l.apply(f,e.splice(0,3+f.is(e[0],"number")));for(var Z=0,ab=e.length;Z1||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=an.paper.span.style;aj.font&&(ab.font=aj.font);aj["font-family"]&&(ab.fontFamily=aj["font-family"]);aj["font-size"]&&(ab.fontSize=aj["font-size"]);aj["font-weight"]&&(ab.fontWeight=aj["font-weight"]);aj["font-style"]&&(ab.fontStyle=aj["font-style"]);an.node.string&&(an.paper.span.innerHTML=an.node.string.replace(/"));an.W=aj.w=an.paper.span.offsetWidth;an.H=aj.h=an.paper.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,ae=Y.height,af,R=Y.width,ad=Y.x,ac=Y.y;if(!i){throw new Error("VML container not found.");}var aa={},ab=aa.canvas=g.createElement("div"),Z=ab.style;R=parseFloat(R)||512;ae=parseFloat(ae)||342;aa.width=R;aa.height=ae;aa.coordsize=R+" "+ae;aa.coordorigin="0 0";aa.span=g.createElement("span");aa.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";ab.appendChild(aa.span);Z.cssText=f.format("width:{0}px;height:{1}px;position:absolute;clip:rect(0 {0}px {1}px 0)",R,ae);if(i==1){g.body.appendChild(ab);Z.left=ad+"px";Z.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)){aa[e]=b[e];}}a.call(aa,aa,f.fn);aa.clear=function(){while(ab.firstChild){ab.removeChild(ab.firstChild);}};aa.raphael=f;return aa;};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||0,R||0,i||0);};b.rect=function(e,Z,i,R,Y){return H(this,e||0,Z||0,i||0,R||0,Y||0);};b.ellipse=function(e,Y,R,i){return h(this,e||0,Y||0,R||0,i||0);};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||"about:blank",e||0,Z||0,i||0,R||0);};b.text=function(e,R,i){return G(this,e||0,R||0,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(au1||ah>1||an>1){aj/=255;ah/=255;an/=255;}var ag=Math.floor(aj*6),ak=(aj*6)-ag,ad=an*(1-ah),R=an*(1-(ah*ak)),ap=an*(1-(ah*(1-ak)));ae=[an,R,ad,ad,ap,an,an][ag];af=[ap,an,an,R,ad,ad,ap][ag];ao=[ad,ad,ap,an,an,R,ad][ag];ae*=255;af*=255;ao*=255;var al={r:ae,g:af,b:ao},e=(~~ae).toString(16),ai=(~~af).toString(16),am=(~~ao).toString(16);if(e[C]==1){e="0"+e;}if(ai[C]==1){ai="0"+ai;}if(am[C]==1){am="0"+am;}al.hex="#"+e+ai+am;return al;},f);f.rgb2hsb=ab(function(e,i,ah){if(f.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){ah=e.b;i=e.g;e=e.r;}if(f.is(e,"string")){var aj=f.getRGB(e);e=aj.r;i=aj.g;ah=aj.b;}if(e>1||i>1||ah>1){e/=255;i/=255;ah/=255;}var ag=Math.max(e,i,ah),R=Math.min(e,i,ah),ae,ad,af=ag;if(R==ag){return{h:0,s:0,b:ag};}else{var ai=(ag-R);ad=ai/ag;if(e==ag){ae=(i-ah)/ai;}else{if(i==ag){ae=2+((ah-e)/ai);}else{ae=4+((e-i)/ai);}}ae/=6;if(ae<0){ae+=1;}if(ae>1){ae-=1;}}return{h:ae,s:ad,b:af};},f);f._path2string=function(){var ad="",ag;for(var R=0,ae=this[C];R1000){delete R.cache[R.count.unshift()];}R.count.push(af);R.cache[af]=ad[h](i,ae);return e?e(R.cache[af]):R.cache[af];}return R;}f.getRGB=ab(function(e){var al={none:"none",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"},ag;e=al[(e+"").toLowerCase()]||e;if(!e){return{r:-1,g:-1,b:-1,hex:"none",error:1};}if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var R,ad,aj,ah=(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(ah){if(ah[2]){aj=P[r](ah[2].substring(5),16);ad=P[r](ah[2].substring(3,5),16);R=P[r](ah[2].substring(1,3),16);}if(ah[3]){aj=P[r](ah[3].substring(3)+ah[3].substring(3),16);ad=P[r](ah[3].substring(2,3)+ah[3].substring(2,3),16);R=P[r](ah[3].substring(1,2)+ah[3].substring(1,2),16);}if(ah[4]){ah=ah[4].split(/\s*,\s*/);R=P[s](ah[0]);ad=P[s](ah[1]);aj=P[s](ah[2]);}if(ah[5]){ah=ah[5].split(/\s*,\s*/);R=P[s](ah[0])*2.55;ad=P[s](ah[1])*2.55;aj=P[s](ah[2])*2.55;}if(ah[6]){ah=ah[6].split(/\s*,\s*/);R=P[s](ah[0]);ad=P[s](ah[1]);aj=P[s](ah[2]);return f.hsb2rgb(R,ad,aj);}if(ah[7]){ah=ah[7].split(/\s*,\s*/);R=P[s](ah[0])*2.55;ad=P[s](ah[1])*2.55;aj=P[s](ah[2])*2.55;return f.hsb2rgb(R,ad,aj);}ah={r:R,g:ad,b:aj};var i=(~~R).toString(16),af=(~~ad).toString(16),ai=(~~aj).toString(16),ak=/^(?=\d$)/,ae="replace";i=i[ae](ak,"0");af=af[ae](ak,"0");ai=ai[ae](ak,"0");ah.hex="#"+i+af+ai;ag=ah;}else{ag={r:-1,g:-1,b:-1,hex:"none",error:1};}return ag;},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=ab(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=w(e);}if(!i[C]){(e+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(ae,ad,ah){var ag=[],af=ad.toLowerCase();ah.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(aj,ai){ai&&ag.push(+ai);});while(ag[C]>=R[af]){i.push([ad].concat(ag.splice(0,R[af])));if(!R[af]){break;}}});}i.toString=f._path2string;return i;});var H=ab(function(ak){if(!ak){return{x:0,y:0,width:0,height:0};}ak=T(ak);var ah=0,ag=0,ad=[],R=[];for(var ae=0,aj=ak[C];aeai){aj=aj-ae*2;}if(!af&&ai>aj){ai=ai-ae*2;}}else{aj=ar[0];ai=ar[1];au=ar[2];at=ar[3];}var an=ai-aj;if(Math.abs(an)>aw){var av=ai,ay=ao,al=aT;ai=aj+aw*(af&&ai>aj?1:-1);ao=au+az*Math.cos(ai);aT=at+ax*Math.sin(ai);aD=u(ao,aT,az,ax,aq,0,af,ay,al,[ai,av,au,at]);}an=ai-aj;var ah=Math.cos(aj),aS=Math.sin(aj),ag=Math.cos(ai),aR=Math.sin(ai),aG=Math.tan(an/4),aJ=4/3*az*aG,aH=4/3*ax*aG,aP=[ap,aU],aO=[ap+aJ*aS,aU-aH*ah],aN=[ao+aJ*aR,aT-aH*ag],aL=[ao,aT];aO[0]=2*aP[0]-aO[0];aO[1]=2*aP[1]-aO[1];if(ar){return[aO,aN,aL].concat(aD);}else{aD=[aO,aN,aL].concat(aD).join(",").split(",");var aB=[];for(var aM=0,aC=aD[C];aM0&&ag<1?ag:0),af=E(i,e,ad,R,aq,ap,am,aj,ae>0&&ae<1?ae:0);an=an.concat(ah.x,af.x);ak=ak.concat(ah.y,af.y);ao=(ap-2*R+e)-(aj-2*ap+R);al=2*(R-e)-2*(ap-R);ai=e-R;ag=(-al+Math.sqrt(al*al-4*ao*ai))/2/ao;ae=(-al-Math.sqrt(al*al-4*ao*ai))/2/ao;ah=E(i,e,ad,R,aq,ap,am,aj,ag>0&&ag<1?ag:0);af=E(i,e,ad,R,aq,ap,am,aj,ae>0&&ae<1?ae:0);an=an.concat(ah.x,af.x);ak=ak.concat(ah.y,af.y);return{min:{x:Math.min[h](Math,an),y:Math.min[h](Math,ak)},max:{x:Math.max[h](Math,an),y:Math.max[h](Math,ak)}};}),T=ab(function(ap,ak){var ae=z(ap),al=ak&&z(ak),am={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},ag=function(aq,ar){var i,at;if(!aq){return["C",ar.x,ar.y,ar.x,ar.y,ar.x,ar.y];}!(aq[0] in {T:1,Q:1})&&(ar.qx=ar.qy=null);switch(aq[0]){case"M":ar.X=aq[1];ar.Y=aq[2];break;case"A":aq=["C"].concat(u[h](0,[ar.x,ar.y].concat(aq.slice(1))));break;case"S":i=ar.x+(ar.x-(ar.bx||ar.x));at=ar.y+(ar.y-(ar.by||ar.y));aq=["C",i,at].concat(aq.slice(1));break;case"T":ar.qx=ar.x+(ar.x-(ar.qx||ar.x));ar.qy=ar.y+(ar.y-(ar.qy||ar.y));aq=["C"].concat(A(ar.x,ar.y,ar.qx,ar.qy,aq[1],aq[2]));break;case"Q":ar.qx=aq[1];ar.qy=aq[2];aq=["C"].concat(A(ar.x,ar.y,aq[1],aq[2],aq[3],aq[4]));break;case"L":aq=["C"].concat(d(ar.x,ar.y,aq[1],aq[2]));break;case"H":aq=["C"].concat(d(ar.x,ar.y,aq[1],ar.y));break;case"V":aq=["C"].concat(d(ar.x,ar.y,ar.x,aq[1]));break;case"Z":aq=["C"].concat(d(ar.x,ar.y,ar.X,ar.Y));break;}return aq;},R=function(aq,ar){if(aq[ar][C]>7){aq[ar].shift();var at=aq[ar];while(at[C]){aq.splice(ar++,0,["C"].concat(at.splice(0,6)));}aq.splice(ar,1);an=Math.max(ae[C],al&&al[C]||0);}},ad=function(av,au,ar,aq,at){if(av&&au&&av[at][0]=="M"&&au[at][0]!="M"){au.splice(at,0,["M",aq.x,aq.y]);ar.bx=0;ar.by=0;ar.x=av[at][1];ar.y=av[at][2];an=Math.max(ae[C],al&&al[C]||0);}};for(var ai=0,an=Math.max(ae[C],al&&al[C]||0);ai3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},a=function(e,R){var i=this;for(var ad in R){if(R.hasOwnProperty(ad)&&!(ad in e)){switch(typeof R[ad]){case"function":(function(ae){e[ad]=e===i?ae:function(){return ae[h](i,arguments);};})(R[ad]);break;case"object":e[ad]=e[ad]||{};a.call(this,e[ad],R[ad]);break;default:e[ad]=R[ad];break;}}}};if(f.svg){b.svgns="http://www.w3.org/2000/svg";b.xlink="http://www.w3.org/1999/xlink";var S=function(e){return +e+(Math.floor(e)==e)*0.5;};var D=function(af){for(var R=0,ad=af[C];R0.25){af=Math.sqrt(0.25-Math.pow(ah-0.5,2))+0.5;}}return"";});an=an.split(/\s*\-\s*/);if(ak=="linear"){var ag=an.shift();ag=-P[s](ag);if(isNaN(ag)){return null;}var ae=[0,0,Math.cos(ag*Math.PI/180),Math.sin(ag*Math.PI/180)],am=1/(Math.max(Math.abs(ae[2]),Math.abs(ae[3]))||1);ae[2]*=am;ae[3]*=am;if(ae[2]<0){ae[0]=-ae[2];ae[2]=0;}if(ae[3]<0){ae[1]=-ae[3];ae[3]=0;}}var aj=p(an);if(!aj){return null;}var R=F(ak+"Gradient");R.id="r"+(f.idGenerator++).toString(36);ak=="radial"?F(R,{fx:ah,fy:af}):F(R,{x1:ae[0],y1:ae[1],x2:ae[2],y2:ae[3]});e.defs.appendChild(R);for(var ai=0,ao=aj[C];aiah.height)&&(ah.height=ag.y+ag.height-ah.y);}}ad&&this.hide();return ah;};n[o].attr=function(){if(arguments[C]==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[C]==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[C]==2){var R={};R[arguments[0]]=arguments[1];J(this,R);}else{if(arguments[C]==1&&f.is(arguments[0],"object")){J(this,arguments[0]);}}return this;};n[o].toFront=function(){this.node.parentNode.appendChild(this.node);return this;};n[o].toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};n[o].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;};n[o].insertBefore=function(e){var i=e.node;i.parentNode.insertBefore(this.node,i);return this;};var G=function(i,e,af,ae){e=S(e);af=S(af);var ad=F("circle");i.canvas&&i.canvas.appendChild(ad);var R=new n(ad,i);R.attrs={cx:e,cy:af,r:ae,fill:"none",stroke:"#000"};R.type="circle";F(ad,R.attrs);return R;};var M=function(R,e,ah,i,af,ag){e=S(e);ah=S(ah);var ae=F("rect");R.canvas&&R.canvas.appendChild(ae);var ad=new n(ae,R);ad.attrs={x:e,y:ah,width:i,height:af,r:ag||0,rx:ag||0,ry:ag||0,fill:"none",stroke:"#000"};ad.type="rect";F(ae,ad.attrs);return ad;};var j=function(i,e,ag,af,ae){e=S(e);ag=S(ag);var ad=F("ellipse");i.canvas&&i.canvas.appendChild(ad);var R=new n(ad,i);R.attrs={cx:e,cy:ag,rx:af,ry:ae,fill:"none",stroke:"#000"};R.type="ellipse";F(ad,R.attrs);return R;};var q=function(R,ag,e,ah,i,af){var ae=F("image");F(ae,{x:e,y:ah,width:i,height:af,preserveAspectRatio:"none"});ae.setAttributeNS(R.xlink,"href",ag);R.canvas&&R.canvas.appendChild(ae);var ad=new n(ae,R);ad.attrs={x:e,y:ah,width:i,height:af,src:ag};ad.type="image";return ad;};var L=function(i,e,af,ae){var ad=F("text");F(ad,{x:e,y:af,"text-anchor":"middle"});i.canvas&&i.canvas.appendChild(ad);var R=new n(ad,i);R.attrs={x:e,y:af,"text-anchor":"middle",text:ae,font:t.font,stroke:"none",fill:"#000"};R.type="text";J(R,R.attrs);return R;};var I=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 m=function(){var ae=K[h](null,arguments),R=ae&&ae.container,ag=ae.x,af=ae.y,ad=ae.width,ah=ae.height;if(!R){throw new Error("SVG container not found.");}b.canvas=F("svg");var e=b.canvas,ai=e.style;e.setAttribute("width",ad||512);b.width=ad||512;e.setAttribute("height",ah||342);b.height=ah||342;if(R==1){g.body.appendChild(e);ai.position="absolute";ai.left=ag+"px";ai.top=af+"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=F("desc");this.defs=F("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 B=function(ag){var ae=T(ag);for(var R=0,ad=ae[C];R1&&(i=1);am.opacity=i;}an.fill&&(am.on=true);if(am.on==null||an.fill=="none"){am.on=false;}if(am.on&&an.fill){var R=an.fill.match(/^url\(([^\)]+)\)$/i);if(R){am.src=R[1];am.type="tile";}else{am.color=f.getRGB(an.fill).hex;am.src="";am.type="solid";if(f.getRGB(an.fill).error&&(at.type in {circle:1,ellipse:1}||(an.fill+"").charAt(0)!="r")&&Q(at,an.fill)){ao.fill="none";ao.gradient=an.fill;}}}ap&&al.appendChild(am);var ae=(al.getElementsByTagName("stroke")&&al.getElementsByTagName("stroke")[0]),aq=false;!ae&&(aq=ae=Z("stroke"));if((an.stroke&&an.stroke!="none")||an["stroke-width"]||an["stroke-opacity"]!=null||an["stroke-dasharray"]||an["stroke-miterlimit"]||an["stroke-linejoin"]||an["stroke-linecap"]){ae.on=true;}(an.stroke=="none"||ae.on==null||an.stroke==0||an["stroke-width"]==0)&&(ae.on=false);ae.on&&an.stroke&&(ae.color=f.getRGB(an.stroke).hex);var i=((+ao["stroke-opacity"]+1||2)-1)*((+ao.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);ae.opacity=i;an["stroke-linejoin"]&&(ae.joinstyle=an["stroke-linejoin"]||"miter");ae.miterlimit=an["stroke-miterlimit"]||8;an["stroke-linecap"]&&(ae.endcap={butt:"flat",square:"square",round:"round"}[an["stroke-linecap"]]||"miter");an["stroke-width"]&&(ae.weight=(P[s](an["stroke-width"])||1)*12/16);if(an["stroke-dasharray"]){var ak={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};ae.dashstyle=ak[an["stroke-dasharray"]]||"";}aq&&al.appendChild(ae);}if(at.type=="text"){var ag=at.paper.span.style;ao.font&&(ag.font=ao.font);ao["font-family"]&&(ag.fontFamily=ao["font-family"]);ao["font-size"]&&(ag.fontSize=ao["font-size"]);ao["font-weight"]&&(ag.fontWeight=ao["font-weight"]);ao["font-style"]&&(ag.fontStyle=ao["font-style"]);at.node.string&&(at.paper.span.innerHTML=at.node.string.replace(/"));at.W=ao.w=at.paper.span.offsetWidth;at.H=ao.h=at.paper.span.offsetHeight;at.X=ao.x;at.Y=ao.y+~~(at.H/2+0.5);switch(ao["text-anchor"]){case"start":at.node.style["v-text-align"]="left";at.bbx=~~(at.W/2+0.5);break;case"end":at.node.style["v-text-align"]="right";at.bbx=-~~(at.W/2+0.5);break;default:at.node.style["v-text-align"]="center";break;}}};var Q=function(e,ah){e.attrs=e.attrs||{};var ai=e.attrs,ak=e.node.getElementsByTagName("fill"),af="linear",ag=".5 .5";e.attrs.gradient=ah;ah=(ah+"").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(am,an,i){af="radial";if(an&&i){an=P[s](an);i=P[s](i);if(Math.pow(an-0.5,2)+Math.pow(i-0.5,2)>0.25){i=Math.sqrt(0.25-Math.pow(an-0.5,2))+0.5;}ag=an+" "+i;}return"";});ah=ah.split(/\s*\-\s*/);if(af=="linear"){var R=ah.shift();R=-P[s](R);if(isNaN(R)){return null;}}var ae=p(ah);if(!ae){return null;}e=e.shape||e.node;ak=ak[0]||Z("fill");if(ae[C]){ak.on=true;ak.method="none";ak.type=(af=="radial")?"gradientradial":"gradient";ak.color=ae[0].color;ak.color2=ae[ae[C]-1].color;var al=[];for(var ad=0,aj=ae[C];ad');};}catch(Y){var Z=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var m=function(){var ad=K[h](null,arguments),i=ad.container,aj=ad.height,ak,R=ad.width,ai=ad.x,ah=ad.y;if(!i){throw new Error("VML container not found.");}var af={},ag=af.canvas=g.createElement("div"),ae=ag.style;R=P[s](R)||512;aj=P[s](aj)||342;af.width=R;af.height=aj;af.coordsize=R+" "+aj;af.coordorigin="0 0";af.span=g.createElement("span");af.span.style.cssText="position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";ag.appendChild(af.span);ae.cssText=f.format("width:{0}px;height:{1}px;position:absolute;clip:rect(0 {0}px {1}px 0)",R,aj);if(i==1){g.body.appendChild(ag);ae.left=ai+"px";ae.top=ah+"px";i={style:{width:R,height:aj}};}else{i.style.width=R;i.style.height=aj;if(i.firstChild){i.insertBefore(ag,i.firstChild);}else{i.appendChild(ag);}}for(var e in b){if(b.hasOwnProperty(e)){af[e]=b[e];}}a.call(af,af,f.fn);af.clear=function(){while(ag.firstChild){ag.removeChild(ag.firstChild);}};af.raphael=f;return af;};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 k=(function(){if(g.addEventListener){return function(ae,R,i,e){var ad=function(af){return i.call(e,af);};ae.addEventListener(R,ad,false);return function(){ae.removeEventListener(R,ad,false);return true;};};}else{if(g.attachEvent){return function(af,ad,R,i){var ae=function(ag){return R.call(i,ag||P.event);};af.attachEvent("on"+ad,ae);var e=function(){af.detachEvent("on"+ad,ae);return true;};if(ad=="mouseover"){af.attachEvent("onmouseenter",ae);return function(){af.detachEvent("onmouseenter",ae);return e();};}else{if(ad=="mouseout"){af.attachEvent("onmouseleave",ae);return function(){af.detachEvent("onmouseleave",ae);return e();};}}return e;};}}})();for(var V=y[C];V--;){(function(e){n[o][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(k(this.shape||this.node,e,i,this));}return this;};n[o]["un"+e]=function(i){this.events&&this.events[e]&&this.events[e][i]&&this.events[e][i][C]&&this.events[e][i].shift()()&&!this.events[e][i][C]&&delete this.events[e][i];};})(y[V]);}b.circle=function(e,R,i){return G(this,e||0,R||0,i||0);};b.rect=function(e,ae,i,R,ad){return M(this,e||0,ae||0,i||0,R||0,ad||0);};b.ellipse=function(e,ad,R,i){return j(this,e||0,ad||0,R||0,i||0);};b.path=function(e){e&&!f.is(e,"string")&&!f.is(e[0],"array")&&(e+="");return aa(f.format[h](f,arguments),this);};b.image=function(ad,e,ae,i,R){return q(this,ad||"about:blank",e||0,ae||0,i||0,R||0);};b.text=function(e,R,i){return L(this,e||0,R||0,i||"");};b.set=function(e){arguments[C]>1&&(e=Array[o].splice.call(arguments,0,arguments[C]));return new l(e);};b.setSize=I;n[o].stop=function(){clearTimeout(this.animation_in_progress);return this;};n[o].scale=function(ao,an,ad,R){if(ao==null&&an==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+" "+this.y;}};}an=an||ao;!+an&&(an=ao);var at,aq,ar,ap,aF=this.attrs;if(ao!=0){var al=this.getBBox(),ai=al.x+al.width/2,af=al.y+al.height/2,aE=ao/this._.sx,aD=an/this._.sy;ad=(+ad||ad==0)?ad:ai;R=(+R||R==0)?R:af;var ak=~~(ao/Math.abs(ao)),ah=~~(an/Math.abs(an)),aw=this.node.style,aH=ad+(ai-ad)*ak*aE,aG=R+(af-R)*ah*aD;switch(this.type){case"rect":case"image":var aj=aF.width*ak*aE,av=aF.height*ah*aD,am=aF.r*Math.min(aE,aD),ag=aH-aj/2,ae=aG-av/2;this.attr({width:aj,height:av,x:ag,y:ae,r:am});break;case"circle":case"ellipse":this.attr({rx:aF.rx*aE,ry:aF.ry*aD,r:aF.r*Math.min(aE,aD),cx:aH,cy:aG});break;case"path":var ay=c(aF.path),az=true;for(var aB=0,au=ay[C];aB":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(ad){var i=7.5625,R=2.75,e;if(ad<(1/R)){e=i*ad*ad;}else{if(ad<(2/R)){ad-=(1.5/R);e=i*ad*ad+0.75;}else{if(ad<(2.5/R)){ad-=(2.25/R);e=i*ad*ad+0.9375;}else{ad-=(2.625/R);e=i*ad*ad+0.984375;}}}return e;}};n[o].animate=function(ax,an,am,ae){clearTimeout(this.animation_in_progress);if(f.is(am,"function")||!am){ae=am||null;}var aq={},R={},ak={},aj={x:0,y:0};for(var ao in ax){if(ax.hasOwnProperty(ao)){if(ao in x){aq[ao]=this.attr(ao);(aq[ao]==null)&&(aq[ao]=t[ao]);R[ao]=ax[ao];switch(x[ao]){case"number":ak[ao]=(R[ao]-aq[ao])/an;break;case"colour":aq[ao]=f.getRGB(aq[ao]);var ap=f.getRGB(R[ao]);ak[ao]={r:(ap.r-aq[ao].r)/an,g:(ap.g-aq[ao].g)/an,b:(ap.b-aq[ao].b)/an};break;case"path":var af=T(aq[ao],R[ao]);aq[ao]=af[0];R[ao]=af[1];ak[ao]=[];for(var at=0,ai=aq[ao][C];at255?255:i;},ag=this;(function au(){var az=new Date-ad,aH={},ay;if(az 1000) { + if (newf.count[ln] > 1000) { delete newf.cache[newf.count.unshift()]; } newf.count.push(args); - newf.cache[args] = f.apply(scope, arg); + newf.cache[args] = f[ap](scope, arg); return postprocessor ? postprocessor(newf.cache[args]) : newf.cache[args]; } return newf; } R.getRGB = cacher(function (colour) { - var htmlcolors = {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"}, - res; - if ((colour + "").toLowerCase() in htmlcolors) { - colour = htmlcolors[(colour + "").toLowerCase()]; - } + var htmlcolors = {none: "none", 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"}, + res; + colour = htmlcolors[(colour + "").toLowerCase()] || colour; if (!colour) { - return {r: 0, g: 0, b: 0, hex: "#000"}; + return {r: -1, g: -1, b: -1, hex: "none", error: 1}; } if (colour == "none") { return {r: -1, g: -1, b: -1, hex: "none"}; @@ -188,48 +191,50 @@ window.Raphael = (function () { rgb = (colour + "").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 (rgb) { if (rgb[2]) { - blue = parseInt(rgb[2].substring(5), 16); - green = parseInt(rgb[2].substring(3, 5), 16); - red = parseInt(rgb[2].substring(1, 3), 16); + blue = win[pi](rgb[2].substring(5), 16); + green = win[pi](rgb[2].substring(3, 5), 16); + red = win[pi](rgb[2].substring(1, 3), 16); } if (rgb[3]) { - blue = parseInt(rgb[3].substring(3) + rgb[3].substring(3), 16); - green = parseInt(rgb[3].substring(2, 3) + rgb[3].substring(2, 3), 16); - red = parseInt(rgb[3].substring(1, 2) + rgb[3].substring(1, 2), 16); + blue = win[pi](rgb[3].substring(3) + rgb[3].substring(3), 16); + green = win[pi](rgb[3].substring(2, 3) + rgb[3].substring(2, 3), 16); + red = win[pi](rgb[3].substring(1, 2) + rgb[3].substring(1, 2), 16); } if (rgb[4]) { rgb = rgb[4].split(/\s*,\s*/); - red = parseFloat(rgb[0]); - green = parseFloat(rgb[1]); - blue = parseFloat(rgb[2]); + red = win[pf](rgb[0]); + green = win[pf](rgb[1]); + blue = win[pf](rgb[2]); } if (rgb[5]) { rgb = rgb[5].split(/\s*,\s*/); - red = parseFloat(rgb[0]) * 2.55; - green = parseFloat(rgb[1]) * 2.55; - blue = parseFloat(rgb[2]) * 2.55; + red = win[pf](rgb[0]) * 2.55; + green = win[pf](rgb[1]) * 2.55; + blue = win[pf](rgb[2]) * 2.55; } if (rgb[6]) { rgb = rgb[6].split(/\s*,\s*/); - red = parseFloat(rgb[0]); - green = parseFloat(rgb[1]); - blue = parseFloat(rgb[2]); + red = win[pf](rgb[0]); + green = win[pf](rgb[1]); + blue = win[pf](rgb[2]); return R.hsb2rgb(red, green, blue); } if (rgb[7]) { rgb = rgb[7].split(/\s*,\s*/); - red = parseFloat(rgb[0]) * 2.55; - green = parseFloat(rgb[1]) * 2.55; - blue = parseFloat(rgb[2]) * 2.55; + red = win[pf](rgb[0]) * 2.55; + green = win[pf](rgb[1]) * 2.55; + blue = win[pf](rgb[2]) * 2.55; return R.hsb2rgb(red, green, blue); } rgb = {r: red, g: green, b: blue}; - var r = Math.round(red).toString(16), - g = Math.round(green).toString(16), - b = Math.round(blue).toString(16); - (r.length == 1) && (r = "0" + r); - (g.length == 1) && (g = "0" + g); - (b.length == 1) && (b = "0" + b); + var r = (~~red).toString(16), + g = (~~green).toString(16), + b = (~~blue).toString(16), + rg = /^(?=\d$)/, + rp = "replace"; + r = r[rp](rg, "0"); + g = g[rp](rg, "0"); + b = b[rp](rg, "0"); rgb.hex = "#" + r + g + b; res = rgb; } else { @@ -263,14 +268,14 @@ window.Raphael = (function () { if (R.is(pathString, "array") && R.is(pathString[0], "array")) { // rough assumption data = pathClone(pathString); } - if (!data.length) { + if (!data[ln]) { (pathString + "").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig, function (a, b, c) { var params = [], name = b.toLowerCase(); c.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig, function (a, b) { b && params.push(+b); }); - while (params.length >= paramCounts[name]) { + while (params[ln] >= paramCounts[name]) { data.push([b].concat(params.splice(0, paramCounts[name]))); if (!paramCounts[name]) { break; @@ -290,7 +295,7 @@ window.Raphael = (function () { y = 0, X = [], Y = []; - for (var i = 0, ii = path.length; i < ii; i++) { + for (var i = 0, ii = path[ln]; i < ii; i++) { if (path[i][0] == "M") { x = path[i][1]; y = path[i][2]; @@ -302,13 +307,13 @@ window.Raphael = (function () { Y = Y.concat(dim.min.y, dim.max.y); } } - var xmin = Math.min.apply(0, X), - ymin = Math.min.apply(0, Y); + var xmin = Math.min[ap](0, X), + ymin = Math.min[ap](0, Y); return { x: xmin, y: ymin, - width: Math.max.apply(0, X) - xmin, - height: Math.max.apply(0, Y) - ymin + width: Math.max[ap](0, X) - xmin, + height: Math.max[ap](0, Y) - ymin }; }), pathClone = function (pathArray) { @@ -316,9 +321,9 @@ window.Raphael = (function () { if (!R.is(pathArray, "array") || !R.is(pathArray && pathArray[0], "array")) { // rough assumption pathArray = R.parsePathString(pathArray); } - for (var i = 0, ii = pathArray.length; i < ii; i++) { + for (var i = 0, ii = pathArray[ln]; i < ii; i++) { res[i] = []; - for (var j = 0, jj = pathArray[i].length; j < jj; j++) { + for (var j = 0, jj = pathArray[i][ln]; j < jj; j++) { res[i][j] = pathArray[i][j]; } } @@ -343,7 +348,7 @@ window.Raphael = (function () { start++; res.push(["M", x, y]); } - for (var i = start, ii = pathArray.length; i < ii; i++) { + for (var i = start, ii = pathArray[ln]; i < ii; i++) { var r = res[i] = [], pa = pathArray[i]; if (pa[0] != pa[0].toLowerCase()) { @@ -365,7 +370,7 @@ window.Raphael = (function () { mx = pa[1]; my = pa[2]; default: - for (var j = 1, jj = pa.length; j < jj; j++) { + for (var j = 1, jj = pa[ln]; j < jj; j++) { r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3); } } @@ -375,11 +380,11 @@ window.Raphael = (function () { mx = pa[1] + x; my = pa[2] + y; } - for (var k = 0, kk = pa.length; k < kk; k++) { + for (var k = 0, kk = pa[ln]; k < kk; k++) { res[i][k] = pa[k]; } } - var len = res[i].length; + var len = res[i][ln]; switch (res[i][0]) { case "z": x = mx; @@ -417,7 +422,7 @@ window.Raphael = (function () { start++; res[0] = ["M", x, y]; } - for (var i = start, ii = pathArray.length; i < ii; i++) { + for (var i = start, ii = pathArray[ln]; i < ii; i++) { var r = res[i] = [], pa = pathArray[i]; if (pa[0] != (pa[0] + "").toUpperCase()) { @@ -442,12 +447,12 @@ window.Raphael = (function () { mx = +pa[1] + x; my = +pa[2] + y; default: - for (var j = 1, jj = pa.length; j < jj; j++) { + for (var j = 1, jj = pa[ln]; j < jj; j++) { r[j] = +pa[j] + ((j % 2) ? x : y); } } } else { - for (var k = 0, kk = pa.length; k < kk; k++) { + for (var k = 0, kk = pa[ln]; k < kk; k++) { res[i][k] = pa[k]; } } @@ -463,8 +468,8 @@ window.Raphael = (function () { y = r[1]; break; default: - x = res[i][res[i].length - 2]; - y = res[i][res[i].length - 1]; + x = res[i][res[i][ln] - 2]; + y = res[i][res[i][ln] - 1]; } } res.toString = R._path2string; @@ -488,8 +493,9 @@ window.Raphael = (function () { a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) { // for more information of where this math came from visit: // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes - var _120 = Math.PI * 120 / 180, - rad = Math.PI / 180 * (+angle || 0), + var PI = Math.PI, + _120 = PI * 120 / 180, + rad = PI / 180 * (+angle || 0), res = [], xy, rotate = cacher(function (x, y, rad) { @@ -504,8 +510,8 @@ window.Raphael = (function () { xy = rotate(x2, y2, -rad); x2 = xy.x; y2 = xy.y; - var cos = Math.cos(Math.PI / 180 * angle), - sin = Math.sin(Math.PI / 180 * angle), + var cos = Math.cos(PI / 180 * angle), + sin = Math.sin(PI / 180 * angle), x = (x1 - x2) / 2, y = (y1 - y2) / 2; rx = Math.max(rx, Math.abs(x)); @@ -519,15 +525,15 @@ window.Raphael = (function () { f1 = Math.asin((y1 - cy) / ry), f2 = Math.asin((y2 - cy) / ry); - f1 = x1 < cx ? Math.PI - f1 : f1; - f2 = x2 < cx ? Math.PI - f2 : f2; - f1 < 0 && (f1 = Math.PI * 2 + f1); - f2 < 0 && (f2 = Math.PI * 2 + f2); + f1 = x1 < cx ? PI - f1 : f1; + f2 = x2 < cx ? PI - f2 : f2; + f1 < 0 && (f1 = PI * 2 + f1); + f2 < 0 && (f2 = PI * 2 + f2); if (sweep_flag && f1 > f2) { - f1 = f1 - Math.PI * 2; + f1 = f1 - PI * 2; } if (!sweep_flag && f2 > f1) { - f2 = f2 - Math.PI * 2; + f2 = f2 - PI * 2; } } else { f1 = recursive[0]; @@ -564,7 +570,7 @@ window.Raphael = (function () { } else { res = [m2, m3, m4].concat(res).join(",").split(","); var newres = []; - for (var i = 0, ii = res.length; i < ii; i++) { + for (var i = 0, ii = res[ln]; i < ii; i++) { newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x; } return newres; @@ -605,8 +611,8 @@ window.Raphael = (function () { x = x.concat(dot1.x, dot2.x); y = y.concat(dot1.y, dot2.y); return { - min: {x: Math.min.apply(Math, x), y: Math.min.apply(Math, y)}, - max: {x: Math.max.apply(Math, x), y: Math.max.apply(Math, y)} + min: {x: Math.min[ap](Math, x), y: Math.min[ap](Math, y)}, + max: {x: Math.max[ap](Math, x), y: Math.max[ap](Math, y)} }; }), path2curve = cacher(function (path, path2) { @@ -626,7 +632,7 @@ window.Raphael = (function () { d.Y = path[2]; break; case "A": - path = ["C"].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1)))); + path = ["C"].concat(a2c[ap](0, [d.x, d.y].concat(path.slice(1)))); break; case "S": nx = d.x + (d.x - (d.bx || d.x)); @@ -659,14 +665,14 @@ window.Raphael = (function () { return path; }, fixArc = function (pp, i) { - if (pp[i].length > 7) { + if (pp[i][ln] > 7) { pp[i].shift(); var pi = pp[i]; - while (pi.length) { + while (pi[ln]) { pp.splice(i++, 0, ["C"].concat(pi.splice(0, 6))); } pp.splice(i, 1); - ii = Math.max(p.length, p2 && p2.length || 0); + ii = Math.max(p[ln], p2 && p2[ln] || 0); } }, fixM = function (path1, path2, a1, a2, i) { @@ -676,10 +682,10 @@ window.Raphael = (function () { a1.by = 0; a1.x = path1[i][1]; a1.y = path1[i][2]; - ii = Math.max(p.length, p2 && p2.length || 0); + ii = Math.max(p[ln], p2 && p2[ln] || 0); } }; - for (var i = 0, ii = Math.max(p.length, p2 && p2.length || 0); i < ii; i++) { + for (var i = 0, ii = Math.max(p[ln], p2 && p2[ln] || 0); i < ii; i++) { p[i] = processPath(p[i], attrs); fixArc(p, i); p2 && (p2[i] = processPath(p2[i], attrs2)); @@ -688,14 +694,14 @@ window.Raphael = (function () { fixM(p2, p, attrs2, attrs, i); var seg = p[i], seg2 = p2 && p2[i], - seglen = seg.length, - seg2len = p2 && seg2.length; + seglen = seg[ln], + seg2len = p2 && seg2[ln]; attrs.x = seg[seglen - 2]; attrs.y = seg[seglen - 1]; - attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x; - attrs.by = parseFloat(seg[seglen - 3]) || attrs.y; - attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x); - attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y); + attrs.bx = win[pf](seg[seglen - 4]) || attrs.x; + attrs.by = win[pf](seg[seglen - 3]) || attrs.y; + attrs2.bx = p2 && (win[pf](seg2[seg2len - 4]) || attrs2.x); + attrs2.by = p2 && (win[pf](seg2[seg2len - 3]) || attrs2.y); attrs2.x = p2 && seg2[seg2len - 2]; attrs2.y = p2 && seg2[seg2len - 1]; } @@ -703,7 +709,7 @@ window.Raphael = (function () { }, null, pathClone), parseDots = cacher(function (gradient) { var dots = []; - for (var i = 0, ii = gradient.length; i < ii; i++) { + for (var i = 0, ii = gradient[ln]; i < ii; i++) { var dot = {}, par = gradient[i].match(/^([^:]*):?([\d\.]*)/); dot.color = R.getRGB(par[1]); @@ -714,10 +720,10 @@ window.Raphael = (function () { par[2] && (dot.offset = par[2] + "%"); dots.push(dot); } - for (var i = 1, ii = dots.length - 1; i < ii; i++) { + for (var i = 1, ii = dots[ln] - 1; i < ii; i++) { if (!dots[i].offset) { - var start = parseFloat(dots[i - 1].offset || 0), - end = false; + var start = win[pf](dots[i - 1].offset || 0), + end = 0; for (var j = i + 1; j < ii; j++) { if (dots[j].offset) { end = dots[j].offset; @@ -728,7 +734,7 @@ window.Raphael = (function () { end = 100; j = ii; } - end = parseFloat(end); + end = win[pf](end); var d = (end - start) / (j - i + 1); for (; i < j; i++) { start += d; @@ -761,7 +767,7 @@ window.Raphael = (function () { return {container: container, width: arguments[1], height: arguments[2]}; } } - } else if (R.is(arguments[0], "number") && arguments.length > 3) { + } else if (R.is(arguments[0], "number") && arguments[ln] > 3) { return {container: 1, x: arguments[0], y: arguments[1], width: arguments[2], height: arguments[3]}; } }, @@ -771,7 +777,7 @@ window.Raphael = (function () { switch (typeof add[prop]) { case "function": (function (f) { - con[prop] = con === that ? f : function () { return f.apply(that, arguments); }; + con[prop] = con === that ? f : function () { return f[ap](that, arguments); }; })(add[prop]); break; case "object": @@ -793,9 +799,9 @@ window.Raphael = (function () { return +num + (Math.floor(num) == num) * .5; }; var roundPath = function (path) { - for (var i = 0, ii = path.length; i < ii; i++) { + for (var i = 0, ii = path[ln]; i < ii; i++) { if (path[i][0].toLowerCase() != "a") { - for (var j = 1, jj = path[i].length; j < jj; j++) { + for (var j = 1, jj = path[i][ln]; j < jj; j++) { path[i][j] = round(path[i][j]); } } else { @@ -832,8 +838,8 @@ window.Raphael = (function () { gradient = (gradient + "").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, function (all, _fx, _fy) { type = "radial"; if (_fx && _fy) { - fx = parseFloat(_fx); - fy = parseFloat(_fy); + fx = win[pf](_fx); + fy = win[pf](_fy); if (Math.pow(fx - .5, 2) + Math.pow(fy - .5, 2) > .25) { fy = Math.sqrt(.25 - Math.pow(fx - .5, 2)) + .5; } @@ -843,7 +849,7 @@ window.Raphael = (function () { gradient = gradient.split(/\s*\-\s*/); if (type == "linear") { var angle = gradient.shift(); - angle = -parseFloat(angle); + angle = -win[pf](angle); if (isNaN(angle)) { return null; } @@ -868,7 +874,7 @@ window.Raphael = (function () { 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); - for (var i = 0, ii = dots.length; i < ii; i++) { + for (var i = 0, ii = dots[ln]; i < ii; i++) { var stop = $("stop"); $(stop, { offset: dots[i].offset ? dots[i].offset : !i ? "0%" : "100%", @@ -914,14 +920,14 @@ window.Raphael = (function () { var width = o.attrs["stroke-width"] || "1", butt = {round: width, square: width, butt: 0}[o.attrs["stroke-linecap"] || params["stroke-linecap"]] || 0, dashes = []; - var i = value.length; + var i = value[ln]; while (i--) { dashes[i] = value[i] * width + ((i % 2) ? 1 : -1) * butt; } $(node, {"stroke-dasharray": dashes.join(",")}); } }; - parseFloat(rot) && o.rotate(0, true); + win[pf](rot) && o.rotate(0, true); for (var att in params) if (params.hasOwnProperty(att)) { if (!(att in availableAttrs)) { continue; @@ -944,7 +950,7 @@ window.Raphael = (function () { break; case "clip-rect": var rect = (value + "").split(separator); - if (rect.length == 4) { + if (rect[ln] == 4) { o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode); var el = $("clipPath"), rc = $("rect"); @@ -1108,12 +1114,12 @@ window.Raphael = (function () { var gradient = doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g, "")); if (gradient) { var stops = gradient.getElementsByTagName("stop"); - stops[stops.length - 1].setAttribute("stop-opacity", value); + stops[stops[ln] - 1].setAttribute("stop-opacity", value); } break; } default: - att == "font-size" && (value = parseInt(value, 10) + "px"); + att == "font-size" && (value = win[pi](value, 10) + "px"); var cssrule = att.replace(/(\-.)/g, function (w) { return w.substring(1).toUpperCase(); }); @@ -1125,7 +1131,7 @@ window.Raphael = (function () { } tuneText(o, params); - parseInt(rot, 10) && o.rotate(rot, true); + win[pi](rot, 10) && o.rotate(rot, true); }; var leading = 1.2; var tuneText = function (el, params) { @@ -1134,14 +1140,14 @@ window.Raphael = (function () { } var a = el.attrs, node = el.node, - fontSize = node.firstChild ? parseInt(doc.defaultView.getComputedStyle(node.firstChild, "").getPropertyValue("font-size"), 10) : 10; + fontSize = node.firstChild ? win[pi](doc.defaultView.getComputedStyle(node.firstChild, "").getPropertyValue("font-size"), 10) : 10; if ("text" in params) { while (node.firstChild) { node.removeChild(node.firstChild); } var texts = (params.text + "").split("\n"); - for (var i = 0, ii = texts.length; i < ii; i++) { + for (var i = 0, ii = texts[ln]; i < ii; i++) { var tspan = $("tspan"); i && $(tspan, {dy: fontSize * leading, x: a.x}); tspan.appendChild(doc.createTextNode(texts[i])); @@ -1149,7 +1155,7 @@ window.Raphael = (function () { } } else { var texts = node.getElementsByTagName("tspan"); - for (var i = 0, ii = texts.length; i < ii; i++) { + for (var i = 0, ii = texts[ln]; i < ii; i++) { i && $(texts[i], {dy: fontSize * leading, x: a.x}); } } @@ -1175,7 +1181,7 @@ window.Raphael = (function () { sy: 1 }; }; - Element.prototype.rotate = function (deg, cx, cy) { + Element[proto].rotate = function (deg, cx, cy) { if (deg == null) { if (this._.rt.cx) { return [this._.rt.deg, this._.rt.cx, this._.rt.cy].join(" "); @@ -1184,11 +1190,11 @@ window.Raphael = (function () { } var bbox = this.getBBox(); deg = (deg + "").split(separator); - if (deg.length - 1) { - cx = parseFloat(deg[1]); - cy = parseFloat(deg[2]); + if (deg[ln] - 1) { + cx = win[pf](deg[1]); + cy = win[pf](deg[2]); } - deg = parseFloat(deg[0]); + deg = win[pf](deg[0]); if (cx != null) { this._.rt.deg = deg; } else { @@ -1209,18 +1215,18 @@ window.Raphael = (function () { $(this.node, {transform: this.transformations.join(" ")}); return this; }; - Element.prototype.hide = function () { + Element[proto].hide = function () { this.node.style.display = "none"; return this; }; - Element.prototype.show = function () { + Element[proto].show = function () { this.node.style.display = "block"; return this; }; - Element.prototype.remove = function () { + Element[proto].remove = function () { this.node.parentNode.removeChild(this.node); }; - Element.prototype.getBBox = function () { + Element[proto].getBBox = function () { if (this.type == "path") { return pathDimensions(this.attrs.path); } @@ -1247,8 +1253,8 @@ window.Raphael = (function () { hide && this.hide(); return bbox; }; - Element.prototype.attr = function () { - if (arguments.length == 1 && R.is(arguments[0], "string")) { + Element[proto].attr = function () { + if (arguments[ln] == 1 && R.is(arguments[0], "string")) { if (arguments[0] == "translation") { return this.translate(); } @@ -1260,33 +1266,33 @@ window.Raphael = (function () { } return this.attrs[arguments[0]]; } - if (arguments.length == 1 && R.is(arguments[0], "array")) { + if (arguments[ln] == 1 && R.is(arguments[0], "array")) { var values = {}; for (var j in arguments[0]) if (arguments[0].hasOwnProperty(j)) { values[arguments[0][j]] = this.attrs[arguments[0][j]]; } return values; } - if (arguments.length == 2) { + if (arguments[ln] == 2) { var params = {}; params[arguments[0]] = arguments[1]; setFillAndStroke(this, params); - } else if (arguments.length == 1 && R.is(arguments[0], "object")) { + } else if (arguments[ln] == 1 && R.is(arguments[0], "object")) { setFillAndStroke(this, arguments[0]); } return this; }; - Element.prototype.toFront = function () { + Element[proto].toFront = function () { this.node.parentNode.appendChild(this.node); return this; }; - Element.prototype.toBack = function () { + Element[proto].toBack = function () { if (this.node.parentNode.firstChild != this.node) { this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild); } return this; }; - Element.prototype.insertAfter = function (element) { + Element[proto].insertAfter = function (element) { if (element.node.nextSibling) { element.node.parentNode.insertBefore(this.node, element.node.nextSibling); } else { @@ -1294,7 +1300,7 @@ window.Raphael = (function () { } return this; }; - Element.prototype.insertBefore = function (element) { + Element[proto].insertBefore = function (element) { var node = element.node; node.parentNode.insertBefore(this.node, node); return this; @@ -1361,7 +1367,7 @@ window.Raphael = (function () { return this; }; var create = function () { - var con = getContainer.apply(null, arguments), + var con = getContainer[ap](null, arguments), container = con && con.container, x = con.x, y = con.y, @@ -1421,11 +1427,11 @@ window.Raphael = (function () { if (R.vml) { var path2vml = function (path) { var pa = path2curve(path); - for (var i = 0, ii = pa.length; i < ii; i++) { + for (var i = 0, ii = pa[ln]; i < ii; i++) { pa[i][0] = (pa[i][0] + "").toLowerCase(); pa[i][0] == "z" && (pa[i][0] = "x"); - for (var j = 1, jj = pa[i].length; j < jj; j++) { - pa[i][j] = Math.round(pa[i][j]); + for (var j = 1, jj = pa[i][ln]; j < jj; j++) { + pa[i][j] = ~~(pa[i][j] + .5); } } return (pa + ""); @@ -1493,7 +1499,7 @@ window.Raphael = (function () { } if ("clip-rect" in params) { var rect = (params["clip-rect"] + "").split(separator); - if (rect.length == 4) { + if (rect[ln] == 4) { rect[2] = +rect[2] + (+rect[0]); rect[3] = +rect[3] + (+rect[1]); var div = node.clipRect || doc.createElement("div"), @@ -1589,7 +1595,7 @@ window.Raphael = (function () { params["stroke-linejoin"] && (stroke.joinstyle = params["stroke-linejoin"] || "miter"); stroke.miterlimit = params["stroke-miterlimit"] || 8; params["stroke-linecap"] && (stroke.endcap = {butt: "flat", square: "square", round: "round"}[params["stroke-linecap"]] || "miter"); - params["stroke-width"] && (stroke.weight = (parseFloat(params["stroke-width"]) || 1) * 12 / 16); + params["stroke-width"] && (stroke.weight = (win[pf](params["stroke-width"]) || 1) * 12 / 16); if (params["stroke-dasharray"]) { var dasharray = { "-": "shortdash", @@ -1618,17 +1624,17 @@ window.Raphael = (function () { res.W = a.w = res.paper.span.offsetWidth; res.H = a.h = res.paper.span.offsetHeight; res.X = a.x; - res.Y = a.y + Math.round(res.H / 2); + res.Y = a.y + ~~(res.H / 2 + .5); // text-anchor emulation switch (a["text-anchor"]) { case "start": res.node.style["v-text-align"] = "left"; - res.bbx = Math.round(res.W / 2); + res.bbx = ~~(res.W / 2 + .5); break; case "end": res.node.style["v-text-align"] = "right"; - res.bbx = -Math.round(res.W / 2); + res.bbx = -~~(res.W / 2 + .5); break; default: res.node.style["v-text-align"] = "center"; @@ -1646,8 +1652,8 @@ window.Raphael = (function () { gradient = (gradient + "").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, function (all, fx, fy) { type = "radial"; if (fx && fy) { - fx = parseFloat(fx); - fy = parseFloat(fy); + fx = win[pf](fx); + fy = win[pf](fy); if (Math.pow(fx - .5, 2) + Math.pow(fy - .5, 2) > .25) { fy = Math.sqrt(.25 - Math.pow(fx - .5, 2)) + .5; } @@ -1658,7 +1664,7 @@ window.Raphael = (function () { gradient = gradient.split(/\s*\-\s*/); if (type == "linear") { var angle = gradient.shift(); - angle = -parseFloat(angle); + angle = -win[pf](angle); if (isNaN(angle)) { return null; } @@ -1669,20 +1675,20 @@ window.Raphael = (function () { } o = o.shape || o.node; fill = fill[0] || createNode("fill"); - if (dots.length) { + if (dots[ln]) { fill.on = true; fill.method = "none"; fill.type = (type == "radial") ? "gradientradial" : "gradient"; fill.color = dots[0].color; - fill.color2 = dots[dots.length - 1].color; + fill.color2 = dots[dots[ln] - 1].color; var clrs = []; - for (var i = 0, ii = dots.length; i < ii; i++) { + for (var i = 0, ii = dots[ln]; i < ii; i++) { dots[i].offset && clrs.push(dots[i].offset + " " + dots[i].color); } - if (clrs.length) { + if (clrs[ln] && fill.colors) { fill.colors.value = clrs.join(","); } else { - fill.colors && (fill.colors.value = "0% " + fill.color); + fill.colors.value = "0% " + fill.color; } if (type == "radial") { fill.focus = "100%"; @@ -1715,7 +1721,7 @@ window.Raphael = (function () { sy: 1 }; }; - Element.prototype.rotate = function (deg, cx, cy) { + Element[proto].rotate = function (deg, cx, cy) { if (deg == null) { if (this._.rt.cx) { return [this._.rt.deg, this._.rt.cx, this._.rt.cy].join(" "); @@ -1723,11 +1729,11 @@ window.Raphael = (function () { return this._.rt.deg; } deg = (deg + "").split(separator); - if (deg.length - 1) { - cx = parseFloat(deg[1]); - cy = parseFloat(deg[2]); + if (deg[ln] - 1) { + cx = win[pf](deg[1]); + cy = win[pf](deg[2]); } - deg = parseFloat(deg[0]); + deg = win[pf](deg[0]); if (cx != null) { this._.rt.deg = deg; } else { @@ -1745,7 +1751,7 @@ window.Raphael = (function () { // !R.is(fill.angle, "undefined") && (fill.angle = b); return this; }; - Element.prototype.setBox = function (params, cx, cy) { + Element[proto].setBox = function (params, cx, cy) { var gs = this.Group.style, os = (this.shape && this.shape.style) || this.node.style; params = params || {}; @@ -1779,8 +1785,8 @@ window.Raphael = (function () { h = attr.height || 0; break; case "text": - this.textpath.v = ["m", Math.round(attr.x), ", ", Math.round(attr.y - 2), "l", Math.round(attr.x) + 1, ", ", Math.round(attr.y - 2)].join(""); - x = attr.x - Math.round(this.W / 2); + this.textpath.v = ["m", ~~(attr.x + .5), ", ", ~~(attr.y - 2 + .5), "l", ~~(attr.x + .5) + 1, ", ", ~~(attr.y - 2 + .5)].join(""); + x = attr.x - ~~(this.W / 2 + .5); y = attr.y - this.H / 2; w = this.W; h = this.H; @@ -1846,15 +1852,15 @@ window.Raphael = (function () { } } }; - Element.prototype.hide = function () { + Element[proto].hide = function () { this.Group.style.display = "none"; return this; }; - Element.prototype.show = function () { + Element[proto].show = function () { this.Group.style.display = "block"; return this; }; - Element.prototype.getBBox = function () { + Element[proto].getBBox = function () { if (this.type == "path") { return pathDimensions(this.attrs.path); } @@ -1865,13 +1871,13 @@ window.Raphael = (function () { height: this.H }; }; - Element.prototype.remove = function () { + Element[proto].remove = function () { this[0].parentNode.removeChild(this[0]); this.Group.parentNode.removeChild(this.Group); this.shape && this.shape.parentNode.removeChild(this.shape); }; - Element.prototype.attr = function () { - if (arguments.length == 1 && R.is(arguments[0], "string")) { + Element[proto].attr = function () { + if (arguments[ln] == 1 && R.is(arguments[0], "string")) { if (arguments[0] == "translation") { return this.translate(); } @@ -1883,19 +1889,19 @@ window.Raphael = (function () { } return this.attrs[arguments[0]]; } - if (this.attrs && arguments.length == 1 && R.is(arguments[0], "array")) { + if (this.attrs && arguments[ln] == 1 && R.is(arguments[0], "array")) { var values = {}; - for (var i = 0, ii = arguments[0].length; i < ii; i++) { + for (var i = 0, ii = arguments[0][ln]; i < ii; i++) { values[arguments[0][i]] = this.attrs[arguments[0][i]]; }; return values; } var params; - if (arguments.length == 2) { + if (arguments[ln] == 2) { params = {}; params[arguments[0]] = arguments[1]; } - if (arguments.length == 1 && R.is(arguments[0], "object")) { + if (arguments[ln] == 1 && R.is(arguments[0], "object")) { params = arguments[0]; } if (params) { @@ -1910,17 +1916,17 @@ window.Raphael = (function () { } return this; }; - Element.prototype.toFront = function () { + Element[proto].toFront = function () { this.Group.parentNode.appendChild(this.Group); return this; }; - Element.prototype.toBack = function () { + Element[proto].toBack = function () { if (this.Group.parentNode.firstChild != this.Group) { this.Group.parentNode.insertBefore(this.Group, this.Group.parentNode.firstChild); } return this; }; - Element.prototype.insertAfter = function (element) { + Element[proto].insertAfter = function (element) { if (element.Group.nextSibling) { element.Group.parentNode.insertBefore(this.Group, element.Group.nextSibling); } else { @@ -1928,7 +1934,7 @@ window.Raphael = (function () { } return this; }; - Element.prototype.insertBefore = function (element) { + Element[proto].insertBefore = function (element) { element.Group.parentNode.insertBefore(this.Group, element.Group); return this; }; @@ -2017,7 +2023,7 @@ window.Raphael = (function () { g.style.cssText = "position:absolute;left:0;top:0;width:" + vml.width + "px;height:" + vml.height + "px"; g.coordsize = vml.coordsize; g.coordorigin = vml.coordorigin; - path.v = R.format("m{0},{1}l{2},{1}", Math.round(x), Math.round(y), Math.round(x) + 1); + path.v = R.format("m{0},{1}l{2},{1}", ~~(x + .5), ~~(y + .5), ~~(x + .5) + 1); path.textpathok = true; ol.width = vml.width; ol.height = vml.height; @@ -2042,8 +2048,8 @@ window.Raphael = (function () { }; var setSize = function (width, height) { var cs = this.canvas.style; - this.width = parseFloat(width || this.width); - this.height = parseFloat(height || this.height); + this.width = win[pf](width || this.width); + this.height = win[pf](height || this.height); cs.width = this.width + "px"; cs.height = this.height + "px"; cs.clip = "rect(0 " + this.width + "px " + this.height + "px 0)"; @@ -2062,7 +2068,7 @@ window.Raphael = (function () { }; } var create = function () { - var con = getContainer.apply(null, arguments), + var con = getContainer[ap](null, arguments), container = con.container, height = con.height, s, @@ -2075,8 +2081,8 @@ window.Raphael = (function () { var res = {}, c = res.canvas = doc.createElement("div"), cs = c.style; - width = parseFloat(width) || 512; - height = parseFloat(height) || 342; + width = win[pf](width) || 512; + height = win[pf](height) || 342; res.width = width; res.height = height; res.coordsize = width + " " + height; @@ -2172,9 +2178,9 @@ window.Raphael = (function () { }; } })(); - for (var i = events.length; i--;) { + for (var i = events[ln]; i--;) { (function (eventName) { - Element.prototype[eventName] = function (fn) { + Element[proto][eventName] = function (fn) { if (R.is(fn, "function")) { this.events = this.events || {}; this.events[eventName] = this.events[eventName] || {}; @@ -2183,13 +2189,13 @@ window.Raphael = (function () { } return this; }; - Element.prototype["un" + eventName] = function (fn) { + Element[proto]["un" + eventName] = function (fn) { this.events && this.events[eventName] && this.events[eventName][fn] && - this.events[eventName][fn].length && + this.events[eventName][fn][ln] && this.events[eventName][fn].shift()() && - !this.events[eventName][fn].length && + !this.events[eventName][fn][ln] && delete this.events[eventName][fn]; }; @@ -2206,7 +2212,7 @@ window.Raphael = (function () { }; paper.path = function (pathString) { pathString && !R.is(pathString, "string") && !R.is(pathString[0], "array") && (pathString += ""); - return thePath(R.format.apply(R, arguments), this); + return thePath(R.format[ap](R, arguments), this); }; paper.image = function (src, x, y, w, h) { return theImage(this, src || "about:blank", x || 0, y || 0, w || 0, h || 0); @@ -2215,15 +2221,15 @@ window.Raphael = (function () { return theText(this, x || 0, y || 0, text || ""); }; paper.set = function (itemsArray) { - arguments.length > 1 && (itemsArray = Array.prototype.splice.call(arguments, 0, arguments.length)); + arguments[ln] > 1 && (itemsArray = Array[proto].splice.call(arguments, 0, arguments[ln])); return new Set(itemsArray); }; paper.setSize = setSize; - Element.prototype.stop = function () { + Element[proto].stop = function () { clearTimeout(this.animation_in_progress); return this; }; - Element.prototype.scale = function (x, y, cx, cy) { + Element[proto].scale = function (x, y, cx, cy) { if (x == null && y == null) { return {x: this._.sx, y: this._.sy, toString: function () { return this.x + " " + this.y; }}; } @@ -2242,8 +2248,8 @@ window.Raphael = (function () { ky = y / this._.sy; cx = (+cx || cx == 0) ? cx : rcx; cy = (+cy || cy == 0) ? cy : rcy; - var dirx = Math.round(x / Math.abs(x)), - diry = Math.round(y / Math.abs(y)), + var dirx = ~~(x / Math.abs(x)), + diry = ~~(y / Math.abs(y)), s = this.node.style, ncx = cx + (rcx - cx) * dirx * kx, ncy = cy + (rcy - cy) * diry * ky; @@ -2276,7 +2282,7 @@ window.Raphael = (function () { case "path": var path = pathToRelative(a.path), skip = true; - for (var i = 0, ii = path.length; i < ii; i++) { + for (var i = 0, ii = path[ln]; i < ii; i++) { var p = path[i]; if (p[0].toUpperCase() == "M" && skip) { continue; @@ -2284,13 +2290,13 @@ window.Raphael = (function () { skip = false; } if (R.svg && p[0].toUpperCase() == "A") { - p[path[i].length - 2] *= kx; - p[path[i].length - 1] *= ky; + p[path[i][ln] - 2] *= kx; + p[path[i][ln] - 1] *= ky; p[1] *= kx; p[2] *= ky; p[5] = +(dirx + diry ? !!+p[5] : !+p[5]); } else { - for (var j = 1, jj = p.length; j < jj; j++) { + for (var j = 1, jj = p[ln]; j < jj; j++) { p[j] *= (j % 2) ? kx : ky; } } @@ -2397,7 +2403,7 @@ window.Raphael = (function () { } }; - Element.prototype.animate = function (params, ms, easing, callback) { + Element[proto].animate = function (params, ms, easing, callback) { clearTimeout(this.animation_in_progress); if (R.is(easing, "function") || !easing) { callback = easing || null; @@ -2429,9 +2435,9 @@ window.Raphael = (function () { from[attr] = pathes[0]; to[attr] = pathes[1]; diff[attr] = []; - for (var i = 0, ii = from[attr].length; i < ii; i++) { + for (var i = 0, ii = from[attr][ln]; i < ii; i++) { diff[attr][i] = [0]; - for (var j = 1, jj = from[attr][i].length; j < jj; j++) { + for (var j = 1, jj = from[attr][i][ln]; j < jj; j++) { diff[attr][i][j] = (to[attr][i][j] - from[attr][i][j]) / ms; } } @@ -2469,7 +2475,7 @@ window.Raphael = (function () { var start = +new Date, prev = 0, upto255 = function (color) { - return +color > 255 ? 255 : +color; + return color > 255 ? 255 : color; }, that = this; (function tick() { @@ -2485,16 +2491,16 @@ window.Raphael = (function () { break; case "colour": now = "rgb(" + [ - upto255(Math.round(from[attr].r + pos * ms * diff[attr].r)), - upto255(Math.round(from[attr].g + pos * ms * diff[attr].g)), - upto255(Math.round(from[attr].b + pos * ms * diff[attr].b)) + upto255(~~(from[attr].r + pos * ms * diff[attr].r + .5)), + upto255(~~(from[attr].g + pos * ms * diff[attr].g + .5)), + upto255(~~(from[attr].b + pos * ms * diff[attr].b + .5)) ].join(",") + ")"; break; case "path": now = []; - for (var i = 0, ii = from[attr].length; i < ii; i++) { + for (var i = 0, ii = from[attr][ln]; i < ii; i++) { now[i] = [from[attr][i][0]]; - for (var j = 1, jj = from[attr][i].length; j < jj; j++) { + for (var j = 1, jj = from[attr][i][ln]; j < jj; j++) { now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j]; } now[i] = now[i].join(" "); @@ -2543,7 +2549,7 @@ window.Raphael = (function () { })(); return this; }; - Element.prototype.translate = function (x, y) { + Element[proto].translate = function (x, y) { if (x == null) { return {x: this._.tx, y: this._.ty}; } @@ -2568,7 +2574,7 @@ window.Raphael = (function () { } return this; }; - Element.prototype.toString = function () { + Element[proto].toString = function () { return "Rapha\u00ebl\u2019s object"; }; @@ -2576,60 +2582,60 @@ window.Raphael = (function () { // Set var Set = function (items) { this.items = []; - this.length = 0; + this[ln] = 0; if (items) { - for (var i = 0, ii = items.length; i < ii; i++) { + for (var i = 0, ii = items[ln]; i < ii; i++) { if (items[i] && (items[i].constructor == Element || items[i].constructor == Set)) { - this[this.items.length] = this.items[this.items.length] = items[i]; - this.length++; + this[this.items[ln]] = this.items[this.items[ln]] = items[i]; + this[ln]++; } } } }; - Set.prototype.push = function () { + Set[proto].push = function () { var item, len; - for (var i = 0, ii = arguments.length; i < ii; i++) { + for (var i = 0, ii = arguments[ln]; i < ii; i++) { item = arguments[i]; if (item && (item.constructor == Element || item.constructor == Set)) { - len = this.items.length; + len = this.items[ln]; this[len] = this.items[len] = item; - this.length++; + this[ln]++; } } return this; }; - Set.prototype.pop = function () { - delete this[this.length--]; + Set[proto].pop = function () { + delete this[this[ln]--]; return this.items.pop(); }; - for (var method in Element.prototype) if (Element.prototype.hasOwnProperty(method)) { - Set.prototype[method] = (function (methodname) { + for (var method in Element[proto]) if (Element[proto].hasOwnProperty(method)) { + Set[proto][method] = (function (methodname) { return function () { - for (var i = 0, ii = this.items.length; i < ii; i++) { - this.items[i][methodname].apply(this.items[i], arguments); + for (var i = 0, ii = this.items[ln]; i < ii; i++) { + this.items[i][methodname][ap](this.items[i], arguments); } return this; }; })(method); } - Set.prototype.attr = function (name, value) { + Set[proto].attr = function (name, value) { if (name && R.is(name, "array") && R.is(name[0], "object")) { - for (var j = 0, jj = name.length; j < jj; j++) { + for (var j = 0, jj = name[ln]; j < jj; j++) { this.items[j].attr(name[j]); } } else { - for (var i = 0, ii = this.items.length; i < ii; i++) { - this.items[i].attr.apply(this.items[i], arguments); + for (var i = 0, ii = this.items[ln]; i < ii; i++) { + this.items[i].attr[ap](this.items[i], arguments); } } return this; }; - Set.prototype.animate = function (params, ms, easing, callback) { + Set[proto].animate = function (params, ms, easing, callback) { if (R.is(easing, "function") || !easing) { callback = easing || null; } - var len = this.items.length, + var len = this.items[ln], i = len, set = this; if (callback) { @@ -2647,25 +2653,25 @@ window.Raphael = (function () { return this; }; - Set.prototype.getBBox = function () { + Set[proto].getBBox = function () { var x = [], y = [], w = [], h = []; - for (var i = this.items.length; i--;) { + for (var i = this.items[ln]; i--;) { var box = this.items[i].getBBox(); x.push(box.x); y.push(box.y); w.push(box.x + box.width); h.push(box.y + box.height); } - x = Math.min.apply(Math, x); - y = Math.min.apply(Math, y); + x = Math.min[ap](Math, x); + y = Math.min[ap](Math, y); return { x: x, y: y, - width: Math.max.apply(Math, w) - x, - height: Math.max.apply(Math, h) - y + width: Math.max[ap](Math, w) - x, + height: Math.max[ap](Math, h) - y }; }; @@ -2689,7 +2695,7 @@ window.Raphael = (function () { this.fonts[family] = [fontcopy]; } if (!font.svg) { - fontcopy.face["units-per-em"] = parseInt(font.face["units-per-em"], 10); + fontcopy.face["units-per-em"] = win[pi](font.face["units-per-em"], 10); for (var glyph in font.glyphs) if (font.glyphs.hasOwnProperty(glyph)) { var path = font.glyphs[glyph]; fontcopy.glyphs[glyph] = { @@ -2724,7 +2730,7 @@ window.Raphael = (function () { } var thefont; if (font) { - for (var i = 0, ii = font.length; i < ii; i++) { + for (var i = 0, ii = font[ln]; i < ii; i++) { thefont = font[i]; if (thefont.face["font-weight"] == weight && (thefont.face["font-style"] == style || !thefont.face["font-style"]) && thefont.face["font-stretch"] == stretch) { break; @@ -2742,7 +2748,7 @@ window.Raphael = (function () { R.is(font, "string") && (font = this.getFont(font)); if (font) { scale = (size || 16) / font.face["units-per-em"]; - for (var i = 0, ii = letters.length; i < ii; i++) { + for (var i = 0, ii = letters[ln]; i < ii; i++) { var prev = i && font.glyphs[letters[i - 1]] || {}, curr = font.glyphs[letters[i]]; shift += i ? (prev.w || font.w) + (prev.k && prev.k[letters[i]] || 0) : 0; @@ -2755,7 +2761,7 @@ window.Raphael = (function () { R.format = function (token) { var args = R.is(arguments[1], "array") ? [0].concat(arguments[1]) : arguments; - token && R.is(token, "string") && args.length - 1 && (token = token.replace(/\{(\d+)\}/g, function (str, i) { + token && R.is(token, "string") && args[ln] - 1 && (token = token.replace(/\{(\d+)\}/g, function (str, i) { return args[++i] == null ? "" : args[i]; })); return token || ""; @@ -2773,6 +2779,6 @@ window.Raphael = (function () { } return r; }; - R.el = Element.prototype; + R.el = Element[proto]; return R; })(); \ No newline at end of file -- 2.39.2