From: Dmitry Baranovskiy Date: Fri, 18 Sep 2009 02:53:52 +0000 (+1000) Subject: Fixed setSize method for IE, deprecate rx & ry for rect (use r instead) Added experim... X-Git-Tag: semver~26 X-Git-Url: http://git.roojs.org/?p=raphael;a=commitdiff_plain;h=9d154a3a611a4b68ce0e5802a33c479fcdd81a94 Fixed setSize method for IE, deprecate rx & ry for rect (use r instead) Added experimental method blur (doesn’t work in WebKit) --- diff --git a/raphael-min.js b/raphael-min.js index c0e2d19..8192384 100644 --- a/raphael-min.js +++ b/raphael-min.js @@ -1,7 +1,7 @@ /* - * Raphael 1.0 RC1.3 - JavaScript Vector Library + * Raphael 1.0 RC1.4 - 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=/[, ]+/,F=document,m=window,q={was:"Raphael" in window,is:window.Raphael},E=function(){return J.apply(E,arguments);},B={},O={"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},T={"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"},U=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"];E.version="1.0 RC1.3";E.type=(window.SVGAngle||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");E.svg=!(E.vml=E.type=="VML");E.idGenerator=0;E.fn={};E.isArray=function(R){return Object.prototype.toString.call(R)=="[object Array]";};E.setWindow=function(R){m=R;F=m.document;};E.hsb2rgb=x(function(AF,AD,AJ){if(typeof 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),e=AJ*(1-(AD*AG)),AL=AJ*(1-(AD*(1-AG)));AA=[AJ,e,z,z,AL,AJ,AJ][AC];AB=[AL,AJ,AJ,e,z,z,AL][AC];AK=[z,z,AL,AJ,AJ,e,z][AC];AA*=255;AB*=255;AK*=255;var AH={r:AA,g:AB,b:AK},R=Math.round(AA).toString(16),AE=Math.round(AB).toString(16),AI=Math.round(AK).toString(16);if(R.length==1){R="0"+R;}if(AE.length==1){AE="0"+AE;}if(AI.length==1){AI="0"+AI;}AH.hex="#"+R+AE+AI;return AH;},E);E.rgb2hsb=x(function(R,e,AD){if(typeof R=="object"&&"r" in R&&"g" in R&&"b" in R){AD=R.b;e=R.g;R=R.r;}if(typeof R=="string"){var AF=E.getRGB(R);R=AF.r;e=AF.g;AD=AF.b;}if(R>1||e>1||AD>1){R/=255;e/=255;AD/=255;}var AC=Math.max(R,e,AD),i=Math.min(R,e,AD),AA,z,AB=AC;if(i==AC){return{h:0,s:0,b:AC};}else{var AE=(AC-i);z=AE/AC;if(R==AC){AA=(e-AD)/AE;}else{if(e==AC){AA=2+((AD-R)/AE);}else{AA=4+((R-e)/AE);}}AA/=6;if(AA<0){AA+=1;}if(AA>1){AA-=1;}}return{h:AA,s:z,b:AB};},E);E._path2string=function(){var z="",AC;for(var e=0,AA=this.length;e1000){delete i.cache[i.count.unshift()];}i.count.push(AB);i.cache[AB]=z.apply(e,AA);return R?R(i.cache[AB]):i.cache[AB];}return i;}E.getRGB=x(function(R){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((R+"").toLowerCase() in AF){R=AF[R.toString().toLowerCase()];}if(!R){return{r:0,g:0,b:0,hex:"#000"};}if(R=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var i,z,AE,AC=(R+"").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);i=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);i=parseInt(AC[3].substring(1,2)+AC[3].substring(1,2),16);}if(AC[4]){AC=AC[4].split(/\s*,\s*/);i=parseFloat(AC[0]);z=parseFloat(AC[1]);AE=parseFloat(AC[2]);}if(AC[5]){AC=AC[5].split(/\s*,\s*/);i=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*/);i=parseFloat(AC[0]);z=parseFloat(AC[1]);AE=parseFloat(AC[2]);return E.hsb2rgb(i,z,AE);}if(AC[7]){AC=AC[7].split(/\s*,\s*/);i=parseFloat(AC[0])*2.55;z=parseFloat(AC[1])*2.55;AE=parseFloat(AC[2])*2.55;return E.hsb2rgb(i,z,AE);}var AC={r:i,g:z,b:AE},e=Math.round(i).toString(16),AA=Math.round(z).toString(16),AD=Math.round(AE).toString(16);(e.length==1)&&(e="0"+e);(AA.length==1)&&(AA="0"+AA);(AD.length==1)&&(AD="0"+AD);AC.hex="#"+e+AA+AD;AB=AC;}else{AB={r:-1,g:-1,b:-1,hex:"none"};}return AB;},E);E.getColor=function(e){var i=this.getColor.start=this.getColor.start||{h:0,s:1,b:e||0.75},R=this.hsb2rgb(i.h,i.s,i.b);i.h+=0.075;if(i.h>1){i.h=0;i.s-=0.2;if(i.s<=0){this.getColor.start={h:0,s:1,b:i.b};}}return R.hex;};E.getColor.reset=function(){delete this.start;};E.parsePathString=x(function(R){if(!R){return null;}var i={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},e=[];if(E.isArray(R)&&E.isArray(R[0])){e=S(R);}if(!e.length){(R+"").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>=i[AB]){e.push([z].concat(AC.splice(0,i[AB])));if(!i[AB]){break;}}});}e.toString=E._path2string;return e;});var b=x(function(AG){if(!AG){return{x:0,y:0,width:0,height:0};}AG=p(AG);var AD=0,AC=0,z=[],e=[];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,AS=AJ,AG=An;AD=AE+AQ*(AA&&AD>AE?1:-1);AJ=AO+AT*Math.cos(AD);An=AN+AR*Math.sin(AD);AX=P(AJ,An,AT,AR,AL,0,AA,AS,AG,[AD,AP,AO,AN]);}var AC=Math.cos(AE),Am=Math.sin(AE),AB=Math.cos(AD),Al=Math.sin(AD),AI=AD-AE,Aa=Math.tan(AI/4),Ad=4/3*AT*Aa,Ab=4/3*AR*Aa,Aj=[AK,Ao],Ai=[AK+Ad*Am,Ao-Ab*AC],Ah=[AJ+Ad*Al,An-Ab*AB],Af=[AJ,An];Ai[0]=2*Aj[0]-Ai[0];Ai[1]=2*Aj[1]-Ai[1];if(AM){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&&AC<1?AC:0),AB=Z(e,R,z,i,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*i+R)-(AF-2*AL+i);AH=2*(i-R)-2*(AL-i);AE=R-i;AC=(-AH+Math.sqrt(AH*AH-4*AK*AE))/2/AK;AA=(-AH-Math.sqrt(AH*AH-4*AK*AE))/2/AK;AD=Z(e,R,z,i,AM,AL,AI,AF,AC>0&&AC<1?AC:0);AB=Z(e,R,z,i,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)}};}),p=x(function(AL,AG){var AA=V(AL),AH=AG&&V(AG),AI={x:0,y:0,bx:0,by:0,X:0,Y:0},R={x:0,y:0,bx:0,by:0,X:0,Y:0},AC=function(AM,AN){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(P(AN.x,AN.y,AM[1],AM[2],AM[3],AM[4],AM[5],AM[6],AM[7]));break;case"S":var i=AN.x+(AN.x-(AN.bx||AN.x)),AO=AN.y+(AN.y-(AN.by||AN.y));AM=["C",i,AO,AM[1],AM[2],AM[3],AM[4]];break;case"T":var i=AN.x+(AN.x-(AN.bx||AN.x)),AO=AN.y+(AN.y-(AN.by||AN.y));AM=["C"].concat(W(AN.x,AN.y,i,AO,AM[1],AM[2]));break;case"Q":AM=["C"].concat(W(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;},e=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(R,i){var e=this;for(var z in i){if(i.hasOwnProperty(z)&&!(z in R)){switch(typeof i[z]){case"function":(function(AA){R[z]=R===e?AA:function(){return AA.apply(e,arguments);};})(i[z]);break;case"object":R[z]=R[z]||{};A.call(this,R[z],i[z]);break;default:R[z]=i[z];break;}}}};if(E.svg){var o=function(R){return +R+(Math.floor(R)==R)*0.5;};var Y=function(AB){for(var e=0,z=AB.length;eAD.height)&&(AD.height=AC.y+AC.height-AD.y);}}z&&this.hide();return AD;};K.prototype.attr=function(){if(arguments.length==1&&typeof 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&&E.isArray(arguments[0])){var R={};for(var e in arguments[0]){R[arguments[0][e]]=this.attrs[arguments[0][e]];}return R;}if(arguments.length==2){var i={};i[arguments[0]]=arguments[1];f(this,i);}else{if(arguments.length==1&&typeof arguments[0]=="object"){f(this,arguments[0]);}}return this;};K.prototype.toFront=function(){this.node.parentNode.appendChild(this.node);return this;};K.prototype.toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};K.prototype.insertAfter=function(R){if(R.node.nextSibling){R.node.parentNode.insertBefore(this.node,R.node.nextSibling);}else{R.node.parentNode.appendChild(this.node);}return this;};K.prototype.insertBefore=function(R){var e=R.node;e.parentNode.insertBefore(this.node,e);return this;};var c=function(e,R,AB,AA){R=o(R);AB=o(AB);var z=F.createElementNS(e.svgns,"circle");e.canvas&&e.canvas.appendChild(z);var i=new K(z,e);i.attrs={cx:R,cy:AB,r:AA,fill:"none",stroke:"#000"};i.type="circle";a(z,i.attrs);return i;};var j=function(i,R,AD,e,AB,AC){R=o(R);AD=o(AD);var AA=F.createElementNS(i.svgns,"rect");i.canvas&&i.canvas.appendChild(AA);var z=new K(AA,i);z.attrs={x:R,y:AD,width:e,height:AB,r:AC||0,rx:AC||0,ry:AC||0,fill:"none",stroke:"#000"};z.type="rect";a(AA,z.attrs);return z;};var G=function(e,R,AC,AB,AA){R=o(R);AC=o(AC);var z=F.createElementNS(e.svgns,"ellipse");e.canvas&&e.canvas.appendChild(z);var i=new K(z,e);i.attrs={cx:R,cy:AC,rx:AB,ry:AA,fill:"none",stroke:"#000"};i.type="ellipse";a(z,i.attrs);return i;};var N=function(i,AC,R,AD,e,AB){var AA=F.createElementNS(i.svgns,"image");a(AA,{x:R,y:AD,width:e,height:AB,preserveAspectRatio:"none"});AA.setAttributeNS(i.xlink,"href",AC);i.canvas&&i.canvas.appendChild(AA);var z=new K(AA,i);z.attrs={x:R,y:AD,width:e,height:AB,src:AC};z.type="image";return z;};var h=function(e,R,AB,AA){var z=F.createElementNS(e.svgns,"text");a(z,{x:R,y:AB,"text-anchor":"middle"});e.canvas&&e.canvas.appendChild(z);var i=new K(z,e);i.attrs={x:R,y:AB,"text-anchor":"middle",text:AA,font:O.font,stroke:"none",fill:"#000"};i.type="text";f(i,i.attrs);return i;};var d=function(e,R){this.width=e||this.width;this.height=R||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this;};var J=function(){var AA=g.apply(null,arguments),i=AA.container,AC=AA.x,AB=AA.y,z=AA.width,AD=AA.height;if(!i){throw new Error("SVG container not found.");}B.canvas=F.createElementNS(B.svgns,"svg");var R=B.canvas,AE=R.style;R.setAttribute("width",z||512);B.width=z||512;R.setAttribute("height",AD||342);B.height=AD||342;if(i==1){F.body.appendChild(R);AE.position="absolute";AE.left=AC+"px";AE.top=AB+"px";}else{if(i.firstChild){i.insertBefore(R,i.firstChild);}else{i.appendChild(R);}}i={canvas:R,clear:function(){while(this.canvas.firstChild){this.canvas.removeChild(this.canvas.firstChild);}this.desc=F.createElementNS(B.svgns,"desc");this.defs=F.createElementNS(B.svgns,"defs");this.desc.appendChild(F.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs);}};for(var e in B){if(e!="create"){i[e]=B[e];}}A.call(i,i,E.fn);i.clear();i.raphael=E;return i;};B.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);};B.svgns="http://www.w3.org/2000/svg";B.xlink="http://www.w3.org/1999/xlink";B.safari=function(){if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){var R=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){R.remove();});}};}if(E.vml){var X=function(AC){var AA=p(AC);for(var e=0,z=AA.length;e1&&(e=1);AI.opacity=e;}AJ.fill&&(AI.on=true);if(AI.on==null||AJ.fill=="none"){AI.on=false;}if(AI.on&&AJ.fill){var i=AJ.fill.match(/^url\(([^\)]+)\)$/i);if(i){AI.src=i[1];AI.type="tile";}else{AI.color=E.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=E.getRGB(AJ.stroke).hex);var e=((+AK["stroke-opacity"]+1||2)-1)*((+AK.opacity+1||2)-1);e<0&&(e=0);e>1&&(e=1);AA.opacity=e;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 M=function(e,R,AA,z){var i=Math.round(Math.atan((parseFloat(AA)-parseFloat(e))/(parseFloat(z)-parseFloat(R)))*57.29)||0;if(!i&&parseFloat(e)');};}catch(u){var v=function(R){return F.createElement("<"+R+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var J=function(){var z=g.apply(null,arguments),e=z.container,AE=z.height,AF,i=z.width,AD=z.x,AC=z.y;if(!e){throw new Error("VML container not found.");}var AB=B.canvas=F.createElement("div"),AA=AB.style;i=parseFloat(i)||"512px";AE=parseFloat(AE)||"342px";B.width=i;B.height=AE;B.coordsize=i+" "+AE;B.coordorigin="0 0";B.span=F.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=i+"px";AA.height=AE+"px";AA.position="absolute";AA.clip="rect(0 "+i+"px "+AE+"px 0)";if(e==1){F.body.appendChild(AB);AA.left=AD+"px";AA.top=AC+"px";e={style:{width:i,height:AE}};}else{e.style.width=i;e.style.height=AE;if(e.firstChild){e.insertBefore(AB,e.firstChild);}else{e.appendChild(AB);}}for(var R in B){e[R]=B[R];}A.call(e,e,E.fn);e.clear=function(){while(AB.firstChild){AB.removeChild(AB.firstChild);}};e.raphael=E;return e;};B.remove=function(){this.canvas.parentNode.removeChild(this.canvas);};B.safari=function(){};}var H=(function(){if(F.addEventListener){return function(AA,i,e,R){var z=function(AB){return e.call(R,AB);};AA.addEventListener(i,z,false);return function(){AA.removeEventListener(i,z,false);return true;};};}else{if(F.attachEvent){return function(AB,z,i,e){var AA=function(AC){return i.call(e,AC||m.event);};AB.attachEvent("on"+z,AA);var R=function(){AB.detachEvent("on"+z,AA);return true;};if(z=="mouseover"){AB.attachEvent("onmouseenter",AA);return function(){AB.detachEvent("onmouseenter",AA);return R();};}else{if(z=="mouseout"){AB.attachEvent("onmouseleave",AA);return function(){AB.detachEvent("onmouseleave",AA);return R();};}}return R;};}}})();for(var r=U.length;r--;){(function(R){K.prototype[R]=function(e){if(typeof e=="function"){this.events=this.events||{};this.events[R]=this.events[R]||{};this.events[R][e]=this.events[R][e]||[];this.events[R][e].push(H(this.shape||this.node,R,e,this));}return this;};K.prototype["un"+R]=function(e){this.events&&this.events[R]&&this.events[R][e]&&this.events[R][e].length&&this.events[R][e].shift()()&&!this.events[R][e].length&&delete this.events[R][e];};})(U[r]);}B.circle=function(R,i,e){return c(this,R,i,e);};B.rect=function(R,AA,e,i,z){return j(this,R,AA,e,i,z);};B.ellipse=function(R,z,i,e){return G(this,R,z,i,e);};B.path=function(R){if(R&&typeof R!="string"&&!E.isArray(R[0])){throw new Error("First argument for path method should be a string.");}return w(E.format.apply(E,arguments),this);};B.image=function(z,R,AA,e,i){return N(this,z,R,AA,e,i);};B.text=function(R,i,e){return h(this,R,i,e);};B.set=function(R){arguments.length>1&&(R=Array.prototype.splice.call(arguments,0,arguments.length));return new I(R);};B.setSize=d;K.prototype.stop=function(){clearTimeout(this.animation_in_progress);return this;};K.prototype.scale=function(AJ,AI,z,e){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,AZ=this.attrs;if(AJ!=0){var AH=this.getBBox(),AE=AH.x+AH.width/2,AB=AH.y+AH.height/2,AY=AJ/this._.sx,AX=AI/this._.sy;z=(+z||z==0)?z:AE;e=(+e||e==0)?e:AB;var AG=Math.round(AJ/Math.abs(AJ)),AD=Math.round(AI/Math.abs(AI)),AQ=this.node.style,Ab=z+(AE-z)*AG*AY,Aa=e+(AB-e)*AD*AX;switch(this.type){case"rect":case"image":var AF=AZ.width*AG*AY,AP=AZ.height*AD*AX,AC=Ab-AF/2,AA=Aa-AP/2;this.attr({width:AF,height:AP,x:AC,y:AA});break;case"circle":case"ellipse":this.attr({rx:AZ.rx*AY,ry:AZ.ry*AX,r:AZ.r*AY,cx:Ab,cy:Aa});break;case"path":var AS=C(AZ.path),AT=true;for(var AV=0,AO=AS.length;AV":function(R){return Math.pow(R-1,3)+1;},"<>":function(R){R=R*2;if(R<1){return Math.pow(R,3)/2;}R-=2;return(Math.pow(R,3)+2)/2;},backIn:function(e){var R=1.70158;return e*e*((R+1)*e-R);},backOut:function(e){e=e-1;var R=1.70158;return e*e*((R+1)*e+R)+1;},elastic:function(i){if(i==0||i==1){return i;}var e=0.3,R=e/4;return Math.pow(2,-10*i)*Math.sin((i-R)*(2*Math.PI)/e)+1;},bounce:function(z){var e=7.5625,i=2.75,R;if(z<(1/i)){R=e*z*z;}else{if(z<(2/i)){z-=(1.5/i);R=e*z*z+0.75;}else{if(z<(2.5/i)){z-=(2.25/i);R=e*z*z+0.9375;}else{z-=(2.625/i);R=e*z*z+0.984375;}}}return R;}};K.prototype.animate=function(AS,AJ,AI,AA){clearTimeout(this.animation_in_progress);if(typeof AI=="function"||!AI){AA=AI||null;}var AM={},e={},AG={},AF={x:0,y:0};for(var AK in AS){if(AK in T){AM[AK]=this.attr(AK);(AM[AK]==null)&&(AM[AK]=O[AK]);e[AK]=AS[AK];switch(T[AK]){case"number":AG[AK]=(e[AK]-AM[AK])/AJ;break;case"colour":AM[AK]=E.getRGB(AM[AK]);var AL=E.getRGB(e[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=p(AM[AK],e[AK]);AM[AK]=AB[0];e[AK]=AB[1];AG[AK]=[];for(var AO=0,AE=AM[AK].length;AO255?255:+i;},AC=this;(function AP(){var AU=new Date-z,Ac={},AT;if(AU1||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(av 3) { + } else if (R.is(arguments[0], "number") && arguments.length > 3) { return {container: 1, x: arguments[0], y: arguments[1], width: arguments[2], height: arguments[3]}; } }, @@ -789,6 +797,8 @@ window.Raphael = (function () { // SVG if (R.svg) { + paper.svgns = "http://www.w3.org/2000/svg"; + paper.xlink = "http://www.w3.org/1999/xlink"; var round = function (num) { return +num + (Math.floor(num) == num) * .5; }; @@ -806,15 +816,19 @@ window.Raphael = (function () { return path; }; var $ = function (el, attr) { - for (var key in attr) if (attr.hasOwnProperty(key)) { - el.setAttribute(key, attr[key]); + if (attr) { + for (var key in attr) if (attr.hasOwnProperty(key)) { + el.setAttribute(key, attr[key]); + } + } else { + return doc.createElementNS(paper.svgns, el); } }; R.toString = function () { return "Your browser supports SVG.\nYou are running Rapha\u00ebl " + this.version; }; var thePath = function (pathString, SVG) { - var el = doc.createElementNS(SVG.svgns, "path"); + var el = $("path"); SVG.canvas && SVG.canvas.appendChild(el); var p = new Element(el, SVG); p.type = "path"; @@ -823,7 +837,7 @@ window.Raphael = (function () { }; var addGradientFill = function (o, gradient, SVG) { gradient = toGradient(gradient); - var el = doc.createElementNS(SVG.svgns, (gradient.type || "linear") + "Gradient"); + var el = $((gradient.type || "linear") + "Gradient"); el.id = "r" + (R.idGenerator++).toString(36); if (gradient.vector && gradient.vector.length) { $(el, { @@ -836,7 +850,7 @@ window.Raphael = (function () { SVG.defs.appendChild(el); var isopacity = true; for (var i = 0, ii = gradient.dots.length; i < ii; i++) { - var stop = doc.createElementNS(SVG.svgns, "stop"); + var stop = $("stop"); if (gradient.dots[i].offset) { isopacity = false; } @@ -895,7 +909,7 @@ window.Raphael = (function () { } }; parseFloat(rot) && o.rotate(0, true); - for (var att in params) { + for (var att in params) if (params.hasOwnProperty(att)) { if (!(att in availableAttrs)) { continue; } @@ -908,7 +922,7 @@ window.Raphael = (function () { case "target": var pn = node.parentNode; if (pn.tagName.toLowerCase() != "a") { - var hl = doc.createElementNS(o.paper.svgns, "a"); + var hl = $("a"); pn.insertBefore(hl, node); hl.appendChild(node); pn = hl; @@ -919,8 +933,8 @@ window.Raphael = (function () { var rect = (value + "").split(separator); if (rect.length == 4) { o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode); - var el = doc.createElementNS(o.paper.svgns, "clipPath"), - rc = doc.createElementNS(o.paper.svgns, "rect"); + var el = $("clipPath"), + rc = $("rect"); el.id = "r" + (R.idGenerator++).toString(36); $(rc, { x: rect[0], @@ -958,6 +972,9 @@ window.Raphael = (function () { value = -attrs.x - (attrs.width || 0); } case "rx": + if (o.type == "rect") { + break; + } case "cx": node.setAttribute(att, value); o.pattern && updatePosition(o); @@ -975,6 +992,9 @@ window.Raphael = (function () { value = -attrs.y - (attrs.height || 0); } case "ry": + if (o.type == "rect") { + break; + } case "cy": node.setAttribute(att, value); o.pattern && updatePosition(o); @@ -1017,8 +1037,8 @@ window.Raphael = (function () { case "fill": var isURL = (value + "").match(/^url\(['"]?([^\)]+)['"]?\)$/i); if (isURL) { - var el = doc.createElementNS(o.paper.svgns, "pattern"), - ig = doc.createElementNS(o.paper.svgns, "image"); + var el = $("pattern"), + ig = $("image"); el.id = "r" + (R.idGenerator++).toString(36); $(el, {x: 0, y: 0, patternUnits: "userSpaceOnUse"}); $(ig, {x: 0, y:0}); @@ -1046,12 +1066,12 @@ window.Raphael = (function () { } delete params.gradient; delete attrs.gradient; - if (typeof attrs.opacity != "undefined" && typeof params.opacity == "undefined" ) { + 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 (typeof attrs["fill-opacity"] != "undefined" && typeof params["fill-opacity"] == "undefined" ) { + 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"]}); @@ -1104,7 +1124,7 @@ window.Raphael = (function () { } var texts = (params.text + "").split("\n"); for (var i = 0, ii = texts.length; i < ii; i++) { - var tspan = doc.createElementNS(el.paper.svgns, "tspan"); + var tspan = $("tspan"); i && $(tspan, {dy: fontSize * leading, x: a.x}); tspan.appendChild(doc.createTextNode(texts[i])); node.appendChild(tspan); @@ -1209,7 +1229,7 @@ window.Raphael = (function () { return bbox; }; Element.prototype.attr = function () { - if (arguments.length == 1 && typeof arguments[0] == "string") { + if (arguments.length == 1 && R.is(arguments[0], "string")) { if (arguments[0] == "translation") { return this.translate(); } @@ -1221,9 +1241,9 @@ window.Raphael = (function () { } return this.attrs[arguments[0]]; } - if (arguments.length == 1 && R.isArray(arguments[0])) { + if (arguments.length == 1 && R.is(arguments[0], "array")) { var values = {}; - for (var j in arguments[0]) { + for (var j in arguments[0]) if (arguments[0].hasOwnProperty(j)) { values[arguments[0][j]] = this.attrs[arguments[0][j]]; } return values; @@ -1232,7 +1252,7 @@ window.Raphael = (function () { var params = {}; params[arguments[0]] = arguments[1]; setFillAndStroke(this, params); - } else if (arguments.length == 1 && typeof arguments[0] == "object") { + } else if (arguments.length == 1 && R.is(arguments[0], "object")) { setFillAndStroke(this, arguments[0]); } return this; @@ -1260,10 +1280,30 @@ 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); y = round(y); - var el = doc.createElementNS(svg.svgns, "circle"); + var el = $("circle"); svg.canvas && svg.canvas.appendChild(el); var res = new Element(el, svg); res.attrs = {cx: x, cy: y, r: r, fill: "none", stroke: "#000"}; @@ -1274,7 +1314,7 @@ window.Raphael = (function () { var theRect = function (svg, x, y, w, h, r) { x = round(x); y = round(y); - var el = doc.createElementNS(svg.svgns, "rect"); + var el = $("rect"); svg.canvas && svg.canvas.appendChild(el); var res = new Element(el, svg); res.attrs = {x: x, y: y, width: w, height: h, r: r || 0, rx: r || 0, ry: r || 0, fill: "none", stroke: "#000"}; @@ -1285,7 +1325,7 @@ window.Raphael = (function () { var theEllipse = function (svg, x, y, rx, ry) { x = round(x); y = round(y); - var el = doc.createElementNS(svg.svgns, "ellipse"); + var el = $("ellipse"); svg.canvas && svg.canvas.appendChild(el); var res = new Element(el, svg); res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: "none", stroke: "#000"}; @@ -1294,7 +1334,7 @@ window.Raphael = (function () { return res; }; var theImage = function (svg, src, x, y, w, h) { - var el = doc.createElementNS(svg.svgns, "image"); + var el = $("image"); $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: "none"}); el.setAttributeNS(svg.xlink, "href", src); svg.canvas && svg.canvas.appendChild(el); @@ -1304,7 +1344,7 @@ window.Raphael = (function () { return res; }; var theText = function (svg, x, y, text) { - var el = doc.createElementNS(svg.svgns, "text"); + var el = $("text"); $(el, {x: x, y: y, "text-anchor": "middle"}); svg.canvas && svg.canvas.appendChild(el); var res = new Element(el, svg); @@ -1330,7 +1370,7 @@ window.Raphael = (function () { if (!container) { throw new Error("SVG container not found."); } - paper.canvas = doc.createElementNS(paper.svgns, "svg"); + paper.canvas = $("svg"); var cnvs = paper.canvas, stl = cnvs.style; cnvs.setAttribute("width", width || 512); @@ -1355,14 +1395,14 @@ window.Raphael = (function () { while (this.canvas.firstChild) { this.canvas.removeChild(this.canvas.firstChild); } - this.desc = doc.createElementNS(paper.svgns, "desc"); - this.defs = doc.createElementNS(paper.svgns, "defs"); + this.desc = $("desc"); + this.defs = $("defs"); this.desc.appendChild(doc.createTextNode("Created with Rapha\u00ebl")); this.canvas.appendChild(this.desc); this.canvas.appendChild(this.defs); } }; - for (var prop in paper) { + for (var prop in paper) if (paper.hasOwnProperty(prop)) { if (prop != "create") { container[prop] = paper[prop]; } @@ -1375,14 +1415,14 @@ window.Raphael = (function () { paper.remove = function () { this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas); }; - paper.svgns = "http://www.w3.org/2000/svg"; - paper.xlink = "http://www.w3.org/1999/xlink"; - paper.safari = function () { - if ({"Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) { + 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 @@ -1439,7 +1479,7 @@ window.Raphael = (function () { s = node.style, xy, res = o; - for (var par in params) { + for (var par in params) if (params.hasOwnProperty(par)) { a[par] = params[par]; } params.href && (node.href = params.href); @@ -1628,10 +1668,10 @@ window.Raphael = (function () { fill.on = true; fill.method = "none"; fill.type = ((gradient.type + "").toLowerCase() == "radial") ? "gradientTitle" : "gradient"; - if (typeof gradient.dots[0].color != "undefined") { + if (!R.is(gradient.dots[0].color, "undefined")) { fill.color = R.getRGB(gradient.dots[0].color).hex; } - if (typeof gradient.dots[gradient.dots.length - 1].color != "undefined") { + if (!R.is(gradient.dots[gradient.dots.length - 1].color, "undefined")) { fill.color2 = R.getRGB(gradient.dots[gradient.dots.length - 1].color).hex; } var clrs = []; @@ -1640,15 +1680,15 @@ window.Raphael = (function () { clrs.push(gradient.dots[i].offset + " " + R.getRGB(gradient.dots[i].color).hex); } }; - var fillOpacity = typeof gradient.dots[gradient.dots.length - 1].opacity == "undefined" ? (typeof attrs.opacity == "undefined" ? 1 : attrs.opacity) : gradient.dots[gradient.dots.length - 1].opacity; + 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; if (clrs.length) { fill.colors.value = clrs.join(","); - fillOpacity = typeof attrs.opacity == "undefined" ? 1 : attrs.opacity; + fillOpacity = R.is(attrs.opacity, "undefined") ? 1 : attrs.opacity; } else { fill.colors && (fill.colors.value = "0% " + fill.color); } fill.opacity = fillOpacity; - if (typeof gradient.angle != "undefined") { + if (!R.is(gradient.angle, "undefined")) { fill.angle = (-gradient.angle + 270) % 360; } else if (gradient.vector) { fill.angle = getAngle.apply(null, gradient.vector); @@ -1706,14 +1746,14 @@ window.Raphael = (function () { // var fill = (this.shape || this.node).getElementsByTagName("fill"); // fill = fill[0] || {}; // var b = ((360 - this._.rt.deg) - 270) % 360; - // typeof fill.angle != "undefined" && (fill.angle = b); + // !R.is(fill.angle, "undefined") && (fill.angle = b); return this; }; Element.prototype.setBox = function (params, cx, cy) { var gs = this.Group.style, os = (this.shape && this.shape.style) || this.node.style; params = params || {}; - for (var i in params) { + for (var i in params) if (params.hasOwnProperty(i)) { this.attrs[i] = params[i]; } cx = cx || this._.rt.cx; @@ -1835,7 +1875,7 @@ window.Raphael = (function () { this.shape && this.shape.parentNode.removeChild(this.shape); }; Element.prototype.attr = function () { - if (arguments.length == 1 && typeof arguments[0] == "string") { + if (arguments.length == 1 && R.is(arguments[0], "string")) { if (arguments[0] == "translation") { return this.translate(); } @@ -1847,7 +1887,7 @@ window.Raphael = (function () { } return this.attrs[arguments[0]]; } - if (this.attrs && arguments.length == 1 && R.isArray(arguments[0])) { + if (this.attrs && arguments.length == 1 && R.is(arguments[0], "array")) { var values = {}; for (var i = 0, ii = arguments[0].length; i < ii; i++) { values[arguments[0][i]] = this.attrs[arguments[0][i]]; @@ -1859,7 +1899,7 @@ window.Raphael = (function () { params = {}; params[arguments[0]] = arguments[1]; } - if (arguments.length == 1 && typeof arguments[0] == "object") { + if (arguments.length == 1 && R.is(arguments[0], "object")) { params = arguments[0]; } if (params) { @@ -1896,6 +1936,19 @@ 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"), gl = g.style, @@ -2035,12 +2088,12 @@ window.Raphael = (function () { }; var setSize = function (width, height) { var cs = this.canvas.style; - this.width = width || this.width; - this.height = height || this.height; + this.width = parseFloat(width || this.width); + this.height = parseFloat(height || this.height); cs.width = this.width + "px"; cs.height = this.height + "px"; cs.clip = "rect(0 " + this.width + "px " + this.height + "px 0)"; - this.canvas.coordsize = this.width + " " + this.height; + this.coordsize = this.width + " " + this.height; return this; }; doc.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)"); @@ -2106,7 +2159,7 @@ window.Raphael = (function () { container.appendChild(c); } } - for (var prop in paper) { + for (var prop in paper) if (paper.hasOwnProperty(prop)) { container[prop] = paper[prop]; } plugins.call(container, container, R.fn); @@ -2169,7 +2222,7 @@ window.Raphael = (function () { for (var i = events.length; i--;) { (function (eventName) { Element.prototype[eventName] = function (fn) { - if (typeof fn == "function") { + if (R.is(fn, "function")) { this.events = this.events || {}; this.events[eventName] = this.events[eventName] || {}; this.events[eventName][fn] = this.events[eventName][fn] || []; @@ -2199,9 +2252,7 @@ window.Raphael = (function () { return theEllipse(this, x, y, rx, ry); }; paper.path = function (pathString) { - if (pathString && typeof pathString != "string" && !R.isArray(pathString[0])) { - throw new Error("First argument for path method should be a string."); - } + pathString && !R.is(pathString, "string") && !R.is(pathString[0], "array") && (pathString += ""); return thePath(R.format.apply(R, arguments), this); }; paper.image = function (src, x, y, w, h) { @@ -2394,14 +2445,14 @@ window.Raphael = (function () { Element.prototype.animate = function (params, ms, easing, callback) { clearTimeout(this.animation_in_progress); - if (typeof easing == "function" || !easing) { + if (R.is(easing, "function") || !easing) { callback = easing || null; } var from = {}, to = {}, diff = {}, t = {x: 0, y: 0}; - for (var attr in params) { + for (var attr in params) if (params.hasOwnProperty(attr)) { if (attr in availableAnimAttrs) { from[attr] = this.attr(attr); (from[attr] == null) && (from[attr] = availableAttrs[attr]); @@ -2473,7 +2524,7 @@ window.Raphael = (function () { now; if (time < ms) { var pos = R.easing_formulas[easing] ? R.easing_formulas[easing](time / ms) : time / ms; - for (var attr in from) { + for (var attr in from) if (from.hasOwnProperty(attr)) { switch (availableAnimAttrs[attr]) { case "number": now = +from[attr] + pos * ms * diff[attr]; @@ -2532,7 +2583,7 @@ window.Raphael = (function () { that.attr(params); clearTimeout(that.animation_in_progress); R.svg && paper.safari(); - (typeof callback == "function") && callback.call(that); + (R.is(callback, "function")) && callback.call(that); } prev = time; })(); @@ -2594,7 +2645,7 @@ window.Raphael = (function () { delete this[this.length--]; return this.items.pop(); }; - for (var method in Element.prototype) { + for (var method in Element.prototype) if (Element.prototype.hasOwnProperty(method)) { Set.prototype[method] = (function (methodname) { return function () { for (var i = 0, ii = this.items.length; i < ii; i++) { @@ -2605,7 +2656,7 @@ window.Raphael = (function () { })(method); } Set.prototype.attr = function (name, value) { - if (name && R.isArray(name) && typeof name[0] == "object") { + if (name && R.is(name, "array") && R.is(name[0], "object")) { for (var j = 0, jj = name.length; j < jj; j++) { this.items[j].attr(name[j]); } @@ -2650,7 +2701,7 @@ window.Raphael = (function () { glyphs: {} }, family = font.face["font-family"]; - for (var prop in font.face) { + for (var prop in font.face) if (font.face.hasOwnProperty(prop)) { fontcopy.face[prop] = font.face[prop]; } if (this.fonts[family]) { @@ -2660,7 +2711,7 @@ window.Raphael = (function () { } if (!font.svg) { fontcopy.face["units-per-em"] = parseInt(font.face["units-per-em"], 10); - for (var glyph in font.glyphs) { + for (var glyph in font.glyphs) if (font.glyphs.hasOwnProperty(glyph)) { var path = font.glyphs[glyph]; fontcopy.glyphs[glyph] = { w: path.w, @@ -2670,7 +2721,7 @@ window.Raphael = (function () { }) + "z" }; if (path.k) { - for (var k in path.k) { + for (var k in path.k) if (path.khasOwnProperty(k)) { fontcopy.glyphs[glyph].k[k] = path.k[k]; } } @@ -2685,7 +2736,7 @@ window.Raphael = (function () { var font = R.fonts[family]; if (!font) { var name = new RegExp("(^|\\s)" + family.replace(/[^\w\d\s+!~.:_-]/g, "") + "(\\s|$)", "i"); - for (var fontName in R.fonts) { + for (var fontName in R.fonts) if (R.fonts.hasOwnProperty(fontName)) { if (name.test(fontName)) { font = R.fonts[fontName]; break; @@ -2709,7 +2760,7 @@ window.Raphael = (function () { shift = 0, path = "", scale; - typeof font == "string" && (font = this.getFont(font)); + 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++) { @@ -2724,21 +2775,21 @@ window.Raphael = (function () { }; R.format = function (token) { - var args = R.isArray(arguments[1]) ? [0].concat(arguments[1]) : arguments; - token && typeof token == "string" && args.length - 1 && (token = token.replace(/\{(\d+)\}/g, function (str, i) { + 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) { return args[++i] == null ? "" : args[i]; })); return token; }; R.ninja = function () { - var r = window.Raphael; + var r = window.Raphael, u; if (oldRaphael.was) { window.Raphael = oldRaphael.is; } else { try { delete window.Raphael; } catch (e) { - window.Raphael = void(0); + window.Raphael = u; } } return r;