var a;function Util(){}Util.updateStatus=function(f){if($("status_update")==undefined){var j=$(document.createElement("div"));j.setAttribute("id","status_update");$("content").appendChild(j)}$("status_update").update(f);new Effect.Highlight("status_update")};Util.distanceBetweenTwoPoints=function(f,j){return Math.sqrt(Math.pow(j.y-f.y,2)+Math.pow(j.x-f.x,2)).toFixed(2)};Util.computeSlope=function(f,j){return(j.y-f.y)/(j.x-f.x)};Util.round=function(f){return new Number((new Number(f)).toFixed(2))};
Util.lerp=function(f,j,l){return l*(j-f)+f};Util.toHex=function(f){f=(new Number(f)).toString(16);if(f.length==1)f="0"+f;return f};Array.prototype.sum=function(){for(var f=0,j=0;f<this.length;f++){var l=Number(this[f]);isNaN(l)||(j+=l)}return j};Array.prototype.toNumbers=function(){for(var f=0;f<this.length;f++){var j=Number(this[f]);this[f]=isNaN(j)?0:j}return this};Array.prototype.average=function(){var f=this.sum(),j=this.length;return f/j};
Array.prototype.max=function(){for(var f=0,j=0;j<this.length;j++){var l=Number(this[j]);isNaN(l)||(f=Math.max(f,l))}return f};function Color(f){if(f!=undefined){this.hex=f;this.hexToRGB()}else{this.hex="";this.b=this.g=this.r=0}}a=Color.prototype;a.toHex=function(){return this.hex="#"+Util.toHex(this.r)+Util.toHex(this.g)+Util.toHex(this.b)};a.hexToRGB=function(){if(this.hex.charAt(0)=="#")this.hex=this.hex.substring(1,7);this.r=parseInt(this.hex.substring(0,2),16);this.g=parseInt(this.hex.substring(2,4),16);this.b=parseInt(this.hex.substring(4,6),16);return this};
a.darker=function(f){var j=ColorUtil.RGBToHSB(this.hex);j.b-=f;if(j.b<0)j.b=0;return ColorUtil.HSBToRGB(j.h,j.s,j.b)};a.lighter=function(f){var j=ColorUtil.RGBToHSB(this.hex);j.b+=f;if(j.b>1)j.b=1;return ColorUtil.HSBToRGB(j.h,j.s,j.b)};a.lighten=function(f){var j=ColorUtil.RGBToHSB(this.hex);j.b=f;return ColorUtil.HSBToRGB(j.h,j.s,j.b)};a.saturate=function(){var f=ColorUtil.RGBToHSB(this.hex);f.s=0;f.b=0.85;return ColorUtil.HSBToRGB(f.h,f.s,f.b)};
ColorRange=function(f,j,l){this.start=new Color(f);this.end=new Color(j);this.index=0;this.inbetween=l-2;this.colors=[];l!=undefined&&this.computeColors(l)};ColorRange.prototype.computeColors=function(f){this.inbetween=f-2;this.colors.push(this.start.toHex());f=1/(this.inbetween+1);for(var j=1;j<=this.inbetween;j++){var l=j*f;this.colors.push(ColorUtil.lerpColor(this.start,this.end,l).toHex())}this.colors.push(this.end.toHex())};ColorRange.prototype.reset=function(){this.index=0};
ColorRange.prototype.next=function(){if(this.index>=this.colors.length)this.index=0;return this.colors[this.index++]};ColorRange.prototype.first=function(){return this.colors[0]};ColorUtil=function(){};ColorUtil.lerpColor=function(f,j,l){var q=new Color;q.r=Math.ceil(Util.lerp(f.r,j.r,l));q.g=Math.ceil(Util.lerp(f.g,j.g,l));q.b=Math.ceil(Util.lerp(f.b,j.b,l));return q};
ColorUtil.RGBToHSB=function(f){f=new Color(f);var j=f.r,l=f.g;f=f.b;j/=255;l/=255;f/=255;var q=Math.max(j,l,f),m=Math.min(j,l,f),t,u=(q+m)/2;if(q==m)t=m=0;else{var G=q-m;m=u>0.5?G/(2-q-m):G/(q+m);switch(q){case j:t=(l-f)/G+(l<f?6:0);break;case l:t=(f-j)/G+2;break;case f:t=(j-l)/G+4;break}t/=6}return{h:t,s:m,b:u}};
ColorUtil.HSBToRGB=function(f,j,l){if(j==0)l=j=f=l;else{function q(u,G,H){if(H<0)H+=1;if(H>1)H-=1;if(H<1/6)return u+(G-u)*6*H;if(H<0.5)return G;if(H<2/3)return u+(G-u)*(2/3-H)*6;return u}var m=l<0.5?l*(1+j):l+j-l*j,t=2*l-m;l=q(t,m,f+1/3);j=q(t,m,f);f=q(t,m,f-1/3)}return f="#"+Util.toHex(parseInt(l*255))+Util.toHex(parseInt(j*255))+Util.toHex(parseInt(f*255))};function UI(f){this.mbta=f}a=UI.prototype;
a.makeCanvas=function(f,j){if($(this.mbta.id)==undefined){var l=$(document.createElement("div"));l.setAttribute("id",this.mbta.id);l.style.position=this.mbta.position;if(this.mbta.position=="absolute"){l.style.top=this.mbta.y;l.style.left=this.mbta.x}cm.respondToControls!=true&&l.setStyle({"float":"left",display:"block"});l.style.height=this.mbta.dimensions.height+200+"px";l.style.width=this.mbta.dimensions.width+"px";$("canvases").appendChild(l)}return f=Raphael(this.mbta.id,f,j+200)};
a.buildLinesDropdown=function(f){var j=this,l=$("lineSelectorContainer"),q=$(document.createElement("select"));q.setAttribute("id","lineSelector");q.setAttribute("name","lineSelector");var m=$(document.createElement("option"));m.setAttribute("value","All...");m.update("All..");q.appendChild(m);for(var t=0;t<f.length;t++){m=$(document.createElement("option"));m.setAttribute("value",f[t]);m.update(f[t].substring(1,f[t].length-1));q.appendChild(m)}f=$(document.createElement("span"));f.addClassName("formLabel");
f.update("Line: ");m=document.createElement("br");l.appendChild(f);l.appendChild(m);l.appendChild(q);Event.observe(q,"change",function(u){u=u.element().value;j.prevStationSelector!=undefined&&$(j.prevStationSelector).hide();j.mbta.currentLine=u;if(u!=="All..."){j.prevStationSelector="stationSelectorContainer_"+u;$("stationSelectorContainer_"+u).show()}j.mbta.currentStation="All...";j.reactToSelection()})};
a.buildStationDropdowns=function(f){for(var j=$("stationSelectorContainer"),l=$H(f).keys(),q=this,m=0;m<l.length;m++){var t=l[m],u=f[t],G=$(document.createElement("div"));G.setAttribute("id","stationSelectorContainer_"+t);G.style.display="none";var H=$(document.createElement("select"));H.setAttribute("id","stationSelector_"+t);H.setAttribute("name","stationSelector_"+t);H.addClassName("stationSelector");t=$(document.createElement("option"));t.setAttribute("value","All...");t.update("All..");H.appendChild(t);
for(var x=0;x<u.length;x++){t=$(document.createElement("option"));t.setAttribute("value",u[x]);t.update(u[x].substring(1,u[x].length-1));H.appendChild(t)}u=$(document.createElement("span"));u.addClassName("formLabel");u.update("Station: ");t=document.createElement("br");G.appendChild(u);G.appendChild(t);G.appendChild(H);Event.observe(H,"change",function(I){I=I.element().value;q.mbta.currentStation=I;q.reactToSelection()});j.appendChild(G)}};
a.buildDrawGoButton=function(){var f=$("goButtonContainer"),j=this,l=$(document.createElement("div"));l.setAttribute("id","goButton");l.update("Start");l.addClassName("formButton");f.appendChild(l);Event.observe(l,"click",function(){j.reactToSelection()});$("status_update")&&$("status_update").remove()};a.reactToSelection=function(){$("goButton")&&$("goButton").remove();if(this.mbta.painting==undefined||this.mbta.painting==false){this.startPainting();this.mbta.aggregateStats()}};
a.drawMiddleCircle=function(f){path=this.mbta.pathstack[0];var j=this.mbta.canvas.path(path.svg_curve).attr({fill:"white",stroke:"white"});path.raph_path=j;j=40;var l=35;this.centerLabels=[];this.centerLabels.push(this.mbta.canvas.text(f.x,f.y-j,"12am"));this.centerLabels.push(this.mbta.canvas.text(f.x+l,f.y,"6am"));this.centerLabels.push(this.mbta.canvas.text(f.x,f.y+j,"12pm"));this.centerLabels.push(this.mbta.canvas.text(f.x-l,f.y,"6pm"))};
a.drawDeathRays=function(f,j){j=j.coords;for(var l=0;l<j.length;l++)this.centerLabels.push(this.mbta.canvas.path("M "+f.coords[l].x+" "+f.coords[l].y+" L "+j[l].x+" "+j[l].y).attr({stroke:"white","stroke-width":"1px"}))};a.getClockBounds=function(){return this.mbta.pathstack[this.mbta.pathstack.length-1].raph_path.getBBox()};
a.translateEverything=function(){var f=this.getClockBounds();f=-f.y+30;for(var j=0;j<this.mbta.pathstack.length;j++){var l=this.mbta.pathstack[j];l.raph_path!=undefined&&l.raph_path.translate(0,f)}for(j=0;j<this.centerLabels.length;j++)this.centerLabels[j].translate(0,f)};
a.startPainting=function(){this.mbta.painting=true;for(var f=$H(MBTA.consts.COLORS).keys(),j=0;j<f.length;j++)MBTA.consts.COLORS[f[j]].reset();$("instructions")&&$("instructions").remove();if(this.mbta.currentLine==undefined)this.mbta.currentLine="All...";this.mbta.canvas!=undefined&&this.mbta.canvas!=null&&this.mbta.canvas.clear();this.mbta.pathstack=[];this.mbta.barchart=null};
a.donePainting=function(){this.mbta.painting=false;if(cm.respondToControls==true){var f=$("lineSelector").value;$("lineSelector").enable();this.mbta.currentLine!="All..."&&$("stationSelector_"+f).enable()}};function CurveManager(f){this.curves=[];this.respondToControls=f}CurveManager.prototype.add=function(f){this.curves.push(f)};
CurveManager.prototype.paintAll=function(){if(this.respondToControls)for(var f=0;f<this.curves.length;f++)this.curves[f].paint(mbtadata);else{var j={id:"c1",x:0,y:0,width:300,height:300},l=11,q=1;f=2;for(var m=mbtadata.getNextStation();m.line!=null;){var t=new MBTA(j);t.paint(mbtadata,m.line,m.station);j.x+=j.width;j.id="c"+f;f++;m=mbtadata.getNextStation();if(q%l==0){j.y+=j.height;j.x=0;q=1}else q++}}};function Path(f,j,l,q){this.coords=f;this.prevPath=j;this.center=l;this.line=q;this.svg_curve="";this.maxDistance=0;this.start=this.coords[0];if(j==null||j==undefined){this.first=true;f=this.center.radius*0.5522847498;j=this.center.radius;l=this.start.x;q=this.start.y;this.svg_curve="M "+l+" "+q+" C "+(l-f)+" "+q+" "+(l-j)+" "+(q+f)+" "+(l-j)+" "+(q+j)+" C "+(l-j)+" "+(q+j+f)+" "+(l-f)+" "+(q+j+j)+" "+l+" "+(q+j+j)+" C "+(l+f)+" "+(q+j+j)+" "+(l+j)+" "+(q+j+f)+" "+(l+j)+" "+(q+j)+" C "+(l+j)+" "+
(q+f)+" "+(l+f)+" "+q+" "+l+" "+q+" z"}else{this.first=false;this.svg_curve="M"+f[0].x+" "+f[0].y}for(f=0;f<=this.coords.length;f++){j=f;if(f>0&&f<this.coords.length-1){this.coords[f].prevPoint=this.coords[f-1];this.coords[f].nextPoint=this.coords[f+1]}else if(f==0){this.coords[f].prevPoint=this.coords[this.coords.length-1];this.coords[f].nextPoint=this.coords[1]}else if(f==this.coords.length-1){this.coords[f].prevPoint=this.coords[this.coords.length-2];this.coords[f].nextPoint=this.coords[0]}else if(f==
this.coords.length){j=0;this.coords[0].prevPoint=this.coords[this.coords.length-1];this.coords[0].nextPoint=this.coords[1]}this.coords[j].distNextPoint=new Number(Util.distanceBetweenTwoPoints(this.coords[j],this.coords[j].nextPoint));this.coords[j].distPrevPoint=new Number(Util.distanceBetweenTwoPoints(this.coords[j].prevPoint,this.coords[j]));this.coords[j].prevSlope=Util.computeSlope(this.coords[j],this.coords[j].prevPoint);this.coords[j].nextSlope=Util.computeSlope(this.coords[j],this.coords[j].nextPoint)}}
a=Path.prototype;a.updateMaxDistance=function(f){this.maxDistance=Math.max(this.maxDistance,f)};a.getMaxDistance=function(){return this.maxDistance};a.getPointAt=function(f){return f<this.coords.length?this.coords[f]:this.coords[0]};a.getNextPoint=function(f){return f+1<this.coords.length?this.coords[f+1]:this.coords[0]};a.getPrevPoint=function(f){return f-1<0?this.coords[this.coords.length-1]:this.coords[f-1]};
a.computeCurve=function(){for(var f=null,j=0;j<=this.coords.length;j++)this.computeControlPoints(j);for(j=0;j<=this.coords.length;j++){var l=this.getPointAt(j);this.getPrevPoint(j);this.getNextPoint(j);if(j<=this.coords.length/4+1||j>=this.coords.length/4*3){if(f!=undefined){this.svg_curve+=" C "+f.x+" "+f.y+" "+l.controlPoints.second.x+" "+l.controlPoints.second.y+" "+l.x+" "+l.y;l.handles=f.x+" "+f.y+" : "+l.controlPoints.second.x+" "+l.controlPoints.second.y+" "}f=l.controlPoints.first}else{if(f!=
undefined){this.svg_curve+=" C "+f.x+" "+f.y+" "+l.controlPoints.first.x+" "+l.controlPoints.first.y+" "+l.x+" "+l.y;l.handles=f.x+" "+f.y+" : "+l.controlPoints.first.x+" "+l.controlPoints.first.y+" "}f=l.controlPoints.second}l.lastControlPoint=f}this.svg_curve+=" z ";return this.svg_curve+this.prevPath.svg_curve};a.pointAtPrevPath=function(f){return this.prevPath.coords[f]};
a.computeControlPoints=function(f){var j=this.getPrevPoint(f),l=this.getPointAt(f),q=this.getNextPoint(f);l.controlPoints={first:{},second:{}};var m=Math.atan(l.newSlope),t=m+Math.PI;if(t>2*Math.PI)t-=2*Math.PI;j=j.distNextPoint;t=l.distNextPoint;q=q.distNextPoint;q=Math.min(j,t,q)/4;l.controlPoints.first.x=Util.round(l.x+q*Math.cos(m));l.controlPoints.first.y=Util.round(l.y+q*Math.sin(m));l.controlPoints.second.x=Util.round(l.x-q*Math.cos(m));l.controlPoints.second.y=Util.round(l.y-q*Math.sin(m));
if((f==this.coords.length/4+1||f==this.coords.length/4*3-1)&&m<0){f=l.controlPoints.first;l.controlPoints.first=l.controlPoints.second;l.controlPoints.second=f}};
a.computeCircleFromThreePoints=function(f){var j=this.getPointAt(f),l=this.getNextPoint(f);f=this.getPrevPoint(f);var q={};q.x=(j.prevSlope*j.nextSlope*(f.y-l.y)+j.nextSlope*(f.x+j.x)-j.prevSlope*(j.x+l.x))/(2*(j.nextSlope-j.prevSlope));q.y=-1/j.prevSlope*(q.x-(f.x+j.x)/2)+(f.y+j.y)/2;q.r=Math.sqrt(Math.pow(q.y-j.y,2)+Math.pow(q.x-j.x,2));return q};a.drawCircles=function(){for(var f=0;f<this.coords.length;f++){var j=this.getPointAt(f);mbta.canvas.circle(j.centerCircle.x,j.centerCircle.y,j.centerCircle.r).attr({stroke:"#aaaaaa"})}};
a.isFirst=function(){return this.first};a.curve=function(){return this.svg_curve};function BarChart(f,j,l,q,m){this.mbta=f;this.line=j;this.station=l;this.values=q;this.color=m;this.painted_elements=[];this.init()}
BarChart.prototype.init=function(){var f=3,j=20,l=70,q=120,m=this.mbta.ui.getClockBounds();this.start={x:j,y:m.y+m.height+l,width:this.mbta.dimensions.width-j*2,height:q};this.barWidth=this.start.width/MBTA.consts.ENTRIES-f;j=this.values.max();l=[];for(q=0;q<this.values.length;q++){m=this.values[q]/j*this.start.height;var t=this.start.x+this.barWidth*q+f*q,u=this.start.y+(this.start.height-m);m={colStart:{x:t,y:u,height:0,width:this.barWidth,value:this.values[q]},colEnd:{x:t,y:u,height:m,width:this.barWidth,
value:this.values[q]}};l.push(m)}this.drawGrid();this.growColumns(l)};
BarChart.prototype.drawGrid=function(){var f={stroke:"#cccccc","font-family":"Verdana"},j=this.mbta.canvas.text(this.start.x,this.start.y-30,this.line.gsub('"',"")).attr({fill:this.color,"font-family":"Verdana","font-size":12,"font-weight":"bold","text-anchor":"start"});this.painted_elements.push(j);if(this.station!="All..."&&this.station!=null){j=this.mbta.canvas.text(this.start.x+j.getBBox().width+6,this.start.y-30," :: "+this.station.gsub('"',"")).attr({fill:this.color,"font-family":"Verdana",
"font-size":12,"font-weight":"bold","text-anchor":"start"});this.painted_elements.push(j)}f=this.mbta.canvas.path("M "+(this.start.x-4)+" "+(this.start.y+this.start.height+2)+" L "+(this.start.x+this.start.width)+" "+(this.start.y+this.start.height+2)).attr(f);this.painted_elements.push(f);f=this.mbta.canvas.text(this.start.x+this.start.width-20,this.start.y+this.start.height+10,"Time >").attr({fill:"#cccccc","font-family":"Verdana"});this.painted_elements.push(f)};
BarChart.prototype.growColumns=function(f){for(var j=0;j<f.length;j++){var l=f[j],q=this.mbta.canvas.rect(l.colEnd.x,l.colEnd.y,l.colEnd.width,l.colEnd.height).attr({fill:this.color,stroke:"white"});this.painted_elements.push(q);q.node.setAttribute("title",l.colEnd.value);new Tooltip(q.node,{backgroundColor:"#333",borderColor:"#333",textColor:"#FFF",textShadowColor:"#000"});q=this.mbta.canvas.text(l.colEnd.x+10,this.start.y+this.start.height-20,j+":00").rotate(270).attr({"font-family":"Verdana","font-size":"10px"});
this.painted_elements.push(q);q.node.setAttribute("title",l.colEnd.value);new Tooltip(q.node,{backgroundColor:"#333",borderColor:"#333",textColor:"#FFF",textShadowColor:"#000"});q.getBBox().width+5>l.colEnd.height?q.attr({fill:"#cccccc"}):q.attr({fill:"white"})}l=this.values.max();j=this.values.indexOf(l);l=f[j];f={x:l.colEnd.x+this.barWidth/2,y:l.colEnd.y,r:5};l=this.mbta.canvas.path("M "+f.x+" "+f.y+" L "+(f.x+(j<20?10:-10))+" "+(f.y-15)+" L "+(f.x+(j<20?30:-30))+" "+(f.y-15)).attr({stroke:"#aaaaaa"});
this.painted_elements.push(l);l=this.mbta.canvas.circle(f.x,f.y,f.r).attr({fill:"#dddddd",stroke:"#aaaaaa"});this.painted_elements.push(l);f=this.mbta.canvas.text(f.x+(j<20?33:-33),f.y-12,this.values[j]+" riders").attr({fill:this.color,"font-family":"Verdana","font-size":12,"font-weight":"bold","text-anchor":j<20?"start":"end"});this.painted_elements.push(f)};BarChart.prototype.destroy=function(){for(var f=0;f<this.painted_elements.length;f++)this.painted_elements[f].remove()};function MBTA(f){this.id=f.id?f.id:"canvas";this.pathstack=[];this.canvas=null;if(f.x!==undefined&&f.y!==undefined){this.x=f.x;this.y=f.y;this.position="absolute"}else{this.y=this.x=null;this.position="relative"}if(f.width!==undefined&&f.height!==undefined){this.center={x:f.width/2,y:f.height/2};this.dimensions={width:f.width,height:f.height};this.radius=f.width/2-MBTA.consts.INNER_CIRCLE_RADIUS}else{this.center={x:MBTA.consts.CANVAS.width/2,y:MBTA.consts.CANVAS.height/2};this.dimensions={width:MBTA.consts.CANVAS.width,
height:MBTA.consts.CANVAS.height};this.radius=MBTA.consts.RADIUS}this.currentStation=this.currentLine="All...";this.ui=new UI(this)}
MBTA.consts={MAX_RINGS:300,RADIUS:250,ENTRIES:24,SLICE:15,CANVAS:{width:600,height:600},INNER_CIRCLE_RADIUS:50,COLORS:{'"Silver Line"':new ColorRange("#bbc3c9","#848a91"),'"Subway Blue Line"':new ColorRange("#0090c5","#0a5e8c"),'"Subway Green Line"':new ColorRange("#00a445","#096b30"),'"Subway Orange Line"':new ColorRange("#ffb11f","#b97e11"),'"Subway Red Line"':new ColorRange("#e95c47","#ac1f22")},DEBUGGING:false};
MBTA.prototype.paint=function(f,j,l){if(cm.respondToControls){this.ui.buildLinesDropdown(f.lines);this.ui.buildStationDropdowns(f.stations);this.ui.buildDrawGoButton()}else this.aggregateStats({line:j,station:l})};
MBTA.prototype.aggregateStats=function(f){var j=this.currentLine,l=this.currentStation;if(f!==undefined){j=f.line;l=f.station;this.currentLine=j;this.currentStation=l}f=[];if(j=="All..."){f=mbtadata.lines;for(l=0;l<f.length;l++){j=f[l];this.buildPath(j,"All...",mbtadata.counts.lines[j],MBTA.consts.COLORS[j].first())}}else if(l=="All..."||l==null){l=$H(mbtadata.stats[j]).keys();for(var q=0;q<l.length;q++){f=mbtadata.stats[j][l[q]].toNumbers();this.buildPath(j,l[q],f,MBTA.consts.COLORS[j].next())}}else{f=
mbtadata.stats[j][l].toNumbers();this.buildPath(j,l,f,MBTA.consts.COLORS[j].first())}for(q=this.pathstack.length-1;q>0;q--)this.drawVis(this.pathstack[q]);this.ui.drawMiddleCircle(this.center);this.ui.drawDeathRays(this.pathstack[0],this.pathstack[this.pathstack.length-1]);if(cm.respondToControls!=true){j=this.pathstack[this.pathstack.length-1].raph_path;j=j.getBBox().x;this.canvas.text(j,10,this.currentStation.gsub('"',"")).attr({fill:this.pathstack[this.pathstack.length-1].color.toHex(),"font-family":"Verdana",
"font-size":12,"font-weight":"bold","text-anchor":"start"})}this.ui.translateEverything()};
MBTA.prototype.buildPath=function(f,j,l,q){var m=[];if(this.currentLine=="All..."&&this.currentStation=="All...")for(var t=mbtadata.counts.all.max(),u=0;u<MBTA.consts.ENTRIES;u++)m[u]=mbtadata.counts.all[u]/t*this.radius;else if(this.currentLine!="All..."&&this.currentStation=="All..."){t=mbtadata.counts.lines[f].max();for(u=0;u<MBTA.consts.ENTRIES;u++)m[u]=mbtadata.counts.lines[f][u]/t*this.radius}else{t=l.max();for(u=0;u<MBTA.consts.ENTRIES;u++)m[u]=l[u]/t*this.radius}t=false;var G=[],H=null;if(this.pathstack.length==
0)t=true;else H=this.pathstack[this.pathstack.length-1];var x=[],I=[],s=[];l.sum();for(u=0;u<MBTA.consts.ENTRIES;u++){var A=0;if(this.currentLine=="All..."&&this.currentStation=="All..."){if(mbtadata.counts.all[u]>0)A=l[u]/mbtadata.counts.all[u]*m[u]}else if(this.currentLine!="All..."&&this.currentStation=="All..."){if(mbtadata.counts.lines[f][u])A=l[u]/mbtadata.counts.lines[f][u]*m[u]}else A=m[u];x.push(A);var M=90-u*MBTA.consts.SLICE;M>=0||(M=360-(u-6)*MBTA.consts.SLICE);I.push(M);M=360-M;var D=
{};M*=Math.PI/180;D.x=A*Math.cos(M);D.y=A*Math.sin(M);if(t==true){D.startx=this.center.x+MBTA.consts.INNER_CIRCLE_RADIUS*Math.cos(M);D.starty=this.center.y+MBTA.consts.INNER_CIRCLE_RADIUS*Math.sin(M);G.push({x:D.startx,y:D.starty})}else{D.startx=H.coords[u].x;D.starty=H.coords[u].y}D.x=Util.round(D.x+D.startx);D.y=Util.round(D.y+D.starty);D.radius=Math.sqrt(Math.pow(D.x-D.startx,2)+Math.pow(D.y-D.starty,2));s.push(D)}m=null;if(t){this.center.radius=MBTA.consts.INNER_CIRCLE_RADIUS;H=new Path(G,null,
this.center,f,j);m=new Path(s,H,this.center,f,j);m.first=true;this.pathstack.push(H)}else m=new Path(s,H,this.center,f,j);m.line_stats=l;m.line=f;m.station=j;m.color=new Color(q);this.pathstack.push(m)};
MBTA.prototype.drawVis=function(f){if(this.canvas==null||this.canvas==undefined)this.canvas=this.ui.makeCanvas(this.dimensions.height,this.dimensions.width);var j=false;j=null;if(f.isFirst())j=true;else j=this.pathstack[this.pathstack.length-1];for(j=0;j<=f.coords.length;j++){var l=f.getPointAt(j);f.updateMaxDistance(l.distNextPoint);var q=f.computeCircleFromThreePoints(j);l.centerCircle=q;l.newSlope=-1/Util.computeSlope(q,l)}var m=this.canvas.path(f.computeCurve()).attr({fill:f.color.toHex(),stroke:"white",
"stroke-width":"1px"});f.raph_path=m;f.station!="All..."?$(m.node).setAttribute("title",f.line.gsub('"',"")+" :: "+f.station.gsub('"',"")):$(m.node).setAttribute("title",f.line.gsub('"',""));new Tooltip(m.node,{backgroundColor:"#333",borderColor:"#333",textColor:"#FFF",textShadowColor:"#000",extraText:"Click for more info"});m.mbta_path=f;m.node.onmouseover=function(){m.attr("fill",f.color.lighten(0.75))};m.node.onmouseout=function(){m.attr("fill",f.color.toHex())};m.node.onclick=function(t){return function(){var u=
m.mbta_path.line,G=m.mbta_path.station;t.barchart!=null&&t.barchart!=undefined&&t.barchart.destroy();t.barchart=G!="All..."?new BarChart(t,u,G,mbtadata.stats[u][G],m.mbta_path.color.toHex()):new BarChart(t,u,G,mbtadata.counts.lines[u],m.mbta_path.color.toHex())}}(this);this.ui.donePainting()};function MBTAData(f){this.curveManager=f;this.stats=this.lines=null;this.stations={};this.maxRiders=0;this.urls={lines_url:$("lines_url").getAttribute("value"),stats_url:$("stats_url").getAttribute("value"),stations_url:$("station_url").getAttribute("value")};this.getLines();this.iterators={line:null,station:null,line_idx:0,station_idx:0}}
MBTAData.prototype.getNextStation=function(){if(this.stations[this.iterators.line][this.iterators.station_idx]==undefined){this.iterators.line_idx++;if(this.lines[this.iterators.line_idx]!==undefined){this.iterators.station_idx=0;this.iterators.line=this.lines[this.iterators.line_idx];this.iterators.station=this.stations[this.iterators.line][this.iterators.station_idx];this.iterators.station_idx++}else{this.iterators.line=null;this.iterators.station=null}}else{this.iterators.station=this.stations[this.iterators.line][this.iterators.station_idx];
this.iterators.station_idx++}return{line:this.iterators.line,station:this.iterators.station}};MBTAData.prototype.getLines=function(){Util.updateStatus("Getting lines");var f=this;new Ajax.Request(this.urls.lines_url,{asynchronous:true,evalScripts:true,method:"get",onSuccess:function(j){Util.updateStatus("Got lines!");f.lines=j.responseText.evalJSON();f.getStations()}})};
MBTAData.prototype.getStations=function(){Util.updateStatus("Getting Stations");for(var f=this,j=0;j<f.lines.length;j++){var l=f.lines[j];Util.updateStatus("Getting Stations: "+l);new Ajax.Request(this.urls.stations_url,{asynchronous:false,evalScripts:true,method:"get",parameters:{line:l},onSuccess:function(q){f.stations[l]=q.responseText.evalJSON();MBTA.consts.COLORS[l].computeColors(f.stations[l].length+1)}})}Util.updateStatus("Done Getting Stations!");this.getStats()};
MBTAData.prototype.getStats=function(){Util.updateStatus("Getting Stats");var f=this;new Ajax.Request(this.urls.stats_url,{asynchronous:true,evalScripts:true,method:"get",onSuccess:function(j){Util.updateStatus("Got Stats!");f.stats=j.responseText.evalJSON();f.counts={};f.counts.all=[];f.counts.lines={};j=$H(f.stats).keys();for(var l=0;l<j.length;l++)for(var q=$H(f.stats[j[l]]).keys(),m=0;m<q.length;m++){var t=f.stats[j[l]][q[m]].toNumbers();f.maxRiders=Math.max(t.max(),f.maxRiders);for(var u=0;u<
t.length;u++){if(f.counts.all[u]==undefined)f.counts.all[u]=t[u];else f.counts.all[u]+=t[u];if(f.counts.lines[j[l]]==undefined)f.counts.lines[j[l]]=[];if(f.counts.lines[j[l]][u]==undefined)f.counts.lines[j[l]][u]=t[u];else f.counts.lines[j[l]][u]+=t[u]}}f.iterators.line=f.lines[0];f.iterators.station=f.stations[f.iterators.line][0];f.curveManager.paintAll()}})};window.Raphael=function(){var f=/[, ]+/,j=document,l=window,q={was:"Raphael"in window,is:window.Raphael};function m(){if(m.is(arguments[0],"array")){for(var b=arguments[0],c=aa[I](m,b.splice(0,3+m.is(b[0],"number"))),d=c.set(),e=0,g=b[s];e<g;e++){var i=b[e]||{};i.type in{circle:1,rect:1,path:1,ellipse:1,text:1,image:1}&&d.push(c[i.type]().attr(i))}return d}return aa[I](m,arguments)}var t={},u={"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},G={"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"},H=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"],x="prototype",I="apply",s="length",A="parseFloat",M="parseInt";m.version="1.0";m.type=window.SVGAngle||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?
"SVG":"VML";m.svg=!(m.vml=m.type=="VML");m.idGenerator=0;m.fn={};m.is=function(b,c){c=(c+"").toLowerCase();if((c=="object"||c=="undefined")&&typeof b==c)return true;if(b==null&&c=="null")return true;return Object[x].toString.call(b).replace(/^\[object\s+|\]$/gi,"").toLowerCase()==c};m.setWindow=function(b){l=b;j=l.document};m.hsb2rgb=D(function(b,c,d){if(m.is(b,"object")&&"h"in b&&"s"in b&&"b"in b){d=b.b;c=b.s;b=b.h}var e;if(d==0)return{r:0,g:0,b:0,hex:"#000"};if(b>1||c>1||d>1){b/=255;c/=255;d/=255}e=
Math.floor(b*6);b=b*6-e;var g=d*(1-c),i=d*(1-c*b),k=d*(1-c*(1-b));b=[d,i,g,g,k,d,d][e];c=[k,d,d,i,g,g,k][e];e=[g,g,k,d,d,i,g][e];b*=255;c*=255;e*=255;d={r:b,g:c,b:e};b=(~~b).toString(16);c=(~~c).toString(16);e=(~~e).toString(16);if(b[s]==1)b="0"+b;if(c[s]==1)c="0"+c;if(e[s]==1)e="0"+e;d.hex="#"+b+c+e;return d},m);m.rgb2hsb=D(function(b,c,d){if(m.is(b,"object")&&"r"in b&&"g"in b&&"b"in b){d=b.b;c=b.g;b=b.r}if(m.is(b,"string")){var e=m.getRGB(b);b=e.r;c=e.g;d=e.b}if(b>1||c>1||d>1){b/=255;c/=255;d/=
255}var g=Math.max(b,c,d),i=Math.min(b,c,d);e=g;if(i==g)return{h:0,s:0,b:g};else{var k=g-i;i=k/g;b=b==g?(c-d)/k:c==g?2+(d-b)/k:4+(b-c)/k;b/=6;if(b<0)b+=1;if(b>1)b-=1}return{h:b,s:i,b:e}},m);m._path2string=function(){for(var b="",c=0,d=this[s];c<d;c++){for(var e=0,g=this[c][s];e<g;e++){b+=this[c][e];e&&e!=g-1&&(b+=",")}c!=d-1&&(b+="\n")}return b.replace(/,(?=-)/g,"")};function D(b,c,d){function e(){var g=Array[x].splice.call(arguments,0,arguments[s]),i=g.join("\u25ba");e.cache=e.cache||{};e.count=
e.count||[];if(i in e.cache)return d?d(e.cache[i]):e.cache[i];e.count[s]>1000&&delete e.cache[e.count.unshift()];e.count.push(i);e.cache[i]=b[I](c,g);return d?d(e.cache[i]):e.cache[i]}return e}m.getRGB=D(function(b){var c={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"};
b=c[(b+"").toLowerCase()]||b;if(!b)return{r:-1,g:-1,b:-1,hex:"none",error:1};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none"};var d,e,g;if(b=(b+"").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(b[2]){g=l[M](b[2].substring(5),16);e=l[M](b[2].substring(3,5),16);d=l[M](b[2].substring(1,
3),16)}if(b[3]){g=l[M](b[3].substring(3)+b[3].substring(3),16);e=l[M](b[3].substring(2,3)+b[3].substring(2,3),16);d=l[M](b[3].substring(1,2)+b[3].substring(1,2),16)}if(b[4]){b=b[4].split(/\s*,\s*/);d=l[A](b[0]);e=l[A](b[1]);g=l[A](b[2])}if(b[5]){b=b[5].split(/\s*,\s*/);d=l[A](b[0])*2.55;e=l[A](b[1])*2.55;g=l[A](b[2])*2.55}if(b[6]){b=b[6].split(/\s*,\s*/);d=l[A](b[0]);e=l[A](b[1]);g=l[A](b[2]);return m.hsb2rgb(d,e,g)}if(b[7]){b=b[7].split(/\s*,\s*/);d=l[A](b[0])*2.55;e=l[A](b[1])*2.55;g=l[A](b[2])*
2.55;return m.hsb2rgb(d,e,g)}b={r:d,g:e,b:g};d=(~~d).toString(16);e=(~~e).toString(16);g=(~~g).toString(16);c=/^(?=\d$)/;var i="replace";d=d[i](c,"0");e=e[i](c,"0");g=g[i](c,"0");b.hex="#"+d+e+g;b=b}else b={r:-1,g:-1,b:-1,hex:"none",error:1};return b},m);m.getColor=function(b){b=this.getColor.start=this.getColor.start||{h:0,s:1,b:b||0.75};var c=this.hsb2rgb(b.h,b.s,b.b);b.h+=0.075;if(b.h>1){b.h=0;b.s-=0.2;if(b.s<=0)this.getColor.start={h:0,s:1,b:b.b}}return c.hex};m.getColor.reset=function(){delete this.start};
m.parsePathString=D(function(b){if(!b)return null;var c={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},d=[];if(m.is(b,"array")&&m.is(b[0],"array"))d=W(b);d[s]||(b+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(e,g,i){var k=[];e=g.toLowerCase();for(i.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(n,h){h&&k.push(+h)});k[s]>=c[e];){d.push([g].concat(k.splice(0,c[e])));if(!c[e])break}});d.toString=m._path2string;return d});var X=D(function(b){if(!b)return{x:0,
y:0,width:0,height:0};b=ba(b);for(var c=0,d=0,e=[],g=[],i=0,k=b[s];i<k;i++)if(b[i][0]=="M"){c=b[i][1];d=b[i][2];e.push(c);g.push(d)}else{var n=va(c,d,b[i][1],b[i][2],b[i][3],b[i][4],b[i][5],b[i][6]);e=e.concat(n.min.x,n.max.x);g=g.concat(n.min.y,n.max.y)}b=Math.min[I](0,e);c=Math.min[I](0,g);return{x:b,y:c,width:Math.max[I](0,e)-b,height:Math.max[I](0,g)-c}});function W(b){var c=[];if(!m.is(b,"array")||!m.is(b&&b[0],"array"))b=m.parsePathString(b);for(var d=0,e=b[s];d<e;d++){c[d]=[];for(var g=0,i=
b[d][s];g<i;g++)c[d][g]=b[d][g]}c.toString=m._path2string;return c}var ga=D(function(b){if(!m.is(b,"array")||!m.is(b&&b[0],"array"))b=m.parsePathString(b);var c=[],d=0,e=0,g=0,i=0,k=0;if(b[0][0]=="M"){d=b[0][1];e=b[0][2];g=d;i=e;k++;c.push(["M",d,e])}k=k;for(var n=b[s];k<n;k++){var h=c[k]=[],o=b[k];if(o[0]!=o[0].toLowerCase()){h[0]=o[0].toLowerCase();switch(h[0]){case "a":h[1]=o[1];h[2]=o[2];h[3]=o[3];h[4]=o[4];h[5]=o[5];h[6]=+(o[6]-d).toFixed(3);h[7]=+(o[7]-e).toFixed(3);break;case "v":h[1]=+(o[1]-
e).toFixed(3);break;case "m":g=o[1];i=o[2];default:for(var r=1,w=o[s];r<w;r++)h[r]=+(o[r]-(r%2?d:e)).toFixed(3)}}else{c[k]=[];if(o[0]=="m"){g=o[1]+d;i=o[2]+e}h=0;for(r=o[s];h<r;h++)c[k][h]=o[h]}o=c[k][s];switch(c[k][0]){case "z":d=g;e=i;break;case "h":d+=+c[k][o-1];break;case "v":e+=+c[k][o-1];break;default:d+=+c[k][o-2];e+=+c[k][o-1]}}c.toString=m._path2string;return c},0,W),ca=D(function(b){if(!m.is(b,"array")||!m.is(b&&b[0],"array"))b=m.parsePathString(b);var c=[],d=0,e=0,g=0,i=0,k=0;if(b[0][0]==
"M"){d=+b[0][1];e=+b[0][2];g=d;i=e;k++;c[0]=["M",d,e]}k=k;for(var n=b[s];k<n;k++){var h=c[k]=[],o=b[k];if(o[0]!=(o[0]+"").toUpperCase()){h[0]=(o[0]+"").toUpperCase();switch(h[0]){case "A":h[1]=o[1];h[2]=o[2];h[3]=o[3];h[4]=o[4];h[5]=o[5];h[6]=+(o[6]+d);h[7]=+(o[7]+e);break;case "V":h[1]=+o[1]+e;break;case "H":h[1]=+o[1]+d;break;case "M":g=+o[1]+d;i=+o[2]+e;default:for(var r=1,w=o[s];r<w;r++)h[r]=+o[r]+(r%2?d:e)}}else{r=0;for(w=o[s];r<w;r++)c[k][r]=o[r]}switch(h[0]){case "Z":d=g;e=i;break;case "H":d=
h[1];break;case "V":e=h[1];break;default:d=c[k][c[k][s]-2];e=c[k][c[k][s]-1]}}c.toString=m._path2string;return c},null,W);function Y(b,c,d,e){return[b,c,d,e,d,e]}function ha(b,c,d,e,g,i){var k=1/3,n=2/3;return[k*b+n*d,k*c+n*e,k*g+n*d,k*i+n*e,g,i]}function ia(b,c,d,e,g,i,k,n,h,o){var r=Math.PI,w=r*120/180,E=r/180*(+g||0),v=[],p,J=D(function(Q,K,P){var C=Q*Math.cos(P)-K*Math.sin(P);Q=Q*Math.sin(P)+K*Math.cos(P);return{x:C,y:Q}});if(o){B=o[0];p=o[1];i=o[2];F=o[3]}else{p=J(b,c,-E);b=p.x;c=p.y;p=J(n,h,
-E);n=p.x;h=p.y;Math.cos(r/180*g);Math.sin(r/180*g);p=(b-n)/2;B=(c-h)/2;d=Math.max(d,Math.abs(p));e=Math.max(e,Math.abs(B));F=d*d;var L=e*e;F=(i==k?-1:1)*Math.sqrt(Math.abs((F*L-F*B*B-L*p*p)/(F*B*B+L*p*p)));i=F*d*B/e+(b+n)/2;var F=F*-e*p/d+(c+h)/2,B=Math.asin((c-F)/e);p=Math.asin((h-F)/e);B=b<i?r-B:B;p=n<i?r-p:p;B<0&&(B=r*2+B);p<0&&(p=r*2+p);if(k&&B>p)B-=r*2;if(!k&&p>B)p-=r*2}r=p-B;if(Math.abs(r)>w){v=p;r=n;L=h;p=B+w*(k&&p>B?1:-1);n=i+d*Math.cos(p);h=F+e*Math.sin(p);v=ia(n,h,d,e,g,0,k,r,L,[p,v,i,
F])}r=p-B;g=Math.cos(B);i=Math.sin(B);k=Math.cos(p);p=Math.sin(p);r=Math.tan(r/4);d=4/3*d*r;r=4/3*e*r;e=[b,c];b=[b+d*i,c-r*g];c=[n+d*p,h-r*k];n=[n,h];b[0]=2*e[0]-b[0];b[1]=2*e[1]-b[1];if(o)return[b,c,n].concat(v);else{v=[b,c,n].concat(v).join(",").split(",");o=[];n=0;for(h=v[s];n<h;n++)o[n]=n%2?J(v[n-1],v[n],E).y:J(v[n],v[n+1],E).x;return o}}var Z=D(function(b,c,d,e,g,i,k,n,h){var o=Math.pow(1-h,3)*b+Math.pow(1-h,2)*3*h*d+(1-h)*3*h*h*g+Math.pow(h,3)*k,r=Math.pow(1-h,3)*c+Math.pow(1-h,2)*3*h*e+(1-
h)*3*h*h*i+Math.pow(h,3)*n,w=b+2*h*(d-b)+h*h*(g-2*d+b),E=c+2*h*(e-c)+h*h*(i-2*e+c),v=d+2*h*(g-d)+h*h*(k-2*g+d),p=e+2*h*(i-e)+h*h*(n-2*i+e);b=(1-h)*b+h*d;c=(1-h)*c+h*e;g=(1-h)*g+h*k;i=(1-h)*i+h*n;return{x:o,y:r,m:{x:w,y:E},n:{x:v,y:p},start:{x:b,y:c},end:{x:g,y:i}}}),va=D(function(b,c,d,e,g,i,k,n){var h=g-2*d+b-(k-2*g+d),o=2*(d-b)-2*(g-d),r=b-d,w=(-o+Math.sqrt(o*o-4*h*r))/2/h;h=(-o-Math.sqrt(o*o-4*h*r))/2/h;var E=[c,n],v=[b,k];w=Z(b,c,d,e,g,i,k,n,w>0&&w<1?w:0);h=Z(b,c,d,e,g,i,k,n,h>0&&h<1?h:0);v=v.concat(w.x,
h.x);E=E.concat(w.y,h.y);h=i-2*e+c-(n-2*i+e);o=2*(e-c)-2*(i-e);r=c-e;w=(-o+Math.sqrt(o*o-4*h*r))/2/h;h=(-o-Math.sqrt(o*o-4*h*r))/2/h;w=Z(b,c,d,e,g,i,k,n,w>0&&w<1?w:0);h=Z(b,c,d,e,g,i,k,n,h>0&&h<1?h:0);v=v.concat(w.x,h.x);E=E.concat(w.y,h.y);return{min:{x:Math.min[I](Math,v),y:Math.min[I](Math,E)},max:{x:Math.max[I](Math,v),y:Math.max[I](Math,E)}}}),ba=D(function(b,c){var d=ca(b),e=c&&ca(c);b={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null};c={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null};function g(v,p){var J;
if(!v)return["C",p.x,p.y,p.x,p.y,p.x,p.y];!(v[0]in{T:1,Q:1})&&(p.qx=p.qy=null);switch(v[0]){case "M":p.X=v[1];p.Y=v[2];break;case "A":v=["C"].concat(ia[I](0,[p.x,p.y].concat(v.slice(1))));break;case "S":J=p.x+(p.x-(p.bx||p.x));p=p.y+(p.y-(p.by||p.y));v=["C",J,p].concat(v.slice(1));break;case "T":p.qx=p.x+(p.x-(p.qx||p.x));p.qy=p.y+(p.y-(p.qy||p.y));v=["C"].concat(ha(p.x,p.y,p.qx,p.qy,v[1],v[2]));break;case "Q":p.qx=v[1];p.qy=v[2];v=["C"].concat(ha(p.x,p.y,v[1],v[2],v[3],v[4]));break;case "L":v=["C"].concat(Y(p.x,
p.y,v[1],v[2]));break;case "H":v=["C"].concat(Y(p.x,p.y,v[1],p.y));break;case "V":v=["C"].concat(Y(p.x,p.y,p.x,v[1]));break;case "Z":v=["C"].concat(Y(p.x,p.y,p.X,p.Y));break}return v}function i(v,p){if(v[p][s]>7){v[p].shift();for(var J=v[p];J[s];)v.splice(p++,0,["C"].concat(J.splice(0,6)));v.splice(p,1);h=Math.max(d[s],e&&e[s]||0)}}function k(v,p,J,L,F){if(v&&p&&v[F][0]=="M"&&p[F][0]!="M"){p.splice(F,0,["M",L.x,L.y]);J.bx=0;J.by=0;J.x=v[F][1];J.y=v[F][2];h=Math.max(d[s],e&&e[s]||0)}}for(var n=0,h=
Math.max(d[s],e&&e[s]||0);n<h;n++){d[n]=g(d[n],b);i(d,n);e&&(e[n]=g(e[n],c));e&&i(e,n);k(d,e,b,c,n);k(e,d,c,b,n);var o=d[n],r=e&&e[n],w=o[s],E=e&&r[s];b.x=o[w-2];b.y=o[w-1];b.bx=l[A](o[w-4])||b.x;b.by=l[A](o[w-3])||b.y;c.bx=e&&(l[A](r[E-4])||c.x);c.by=e&&(l[A](r[E-3])||c.y);c.x=e&&r[E-2];c.y=e&&r[E-1]}return e?[d,e]:d},null,W),ja=D(function(b){for(var c=[],d=0,e=b[s];d<e;d++){var g={},i=b[d].match(/^([^:]*):?([\d\.]*)/);g.color=m.getRGB(i[1]);if(g.color.error)return null;g.color=g.color.hex;i[2]&&
(g.offset=i[2]+"%");c.push(g)}d=1;for(e=c[s]-1;d<e;d++)if(!c[d].offset){b=l[A](c[d-1].offset||0);i=0;for(g=d+1;g<e;g++)if(c[g].offset){i=c[g].offset;break}if(!i){i=100;g=e}i=l[A](i);for(i=(i-b)/(g-d+1);d<g;d++){b+=i;c[d].offset=b+"%"}}return c});function ka(b,c,d,e){var g;if(m.is(b,"string")||m.is(b,"object")){g=m.is(b,"string")?j.getElementById(b):b;if(g.tagName)return c==null?{container:g,width:g.style.pixelWidth||g.offsetWidth,height:g.style.pixelHeight||g.offsetHeight}:{container:g,width:c,height:d}}else if(m.is(b,
"number")&&arguments[s]>3)return{container:1,x:b,y:c,width:d,height:e}}function da(b,c){var d=this;for(var e in c)if(c.hasOwnProperty(e)&&!(e in b))switch(typeof c[e]){case "function":(function(g){b[e]=b===d?g:function(){return g[I](d,arguments)}})(c[e]);break;case "object":b[e]=b[e]||{};da.call(this,b[e],c[e]);break;default:b[e]=c[e];break}}if(m.svg){t.svgns="http://www.w3.org/2000/svg";t.xlink="http://www.w3.org/1999/xlink";var S=function(b){return+b+(Math.floor(b)==b)*0.5},wa=function(b){for(var c=
0,d=b[s];c<d;c++)if(b[c][0].toLowerCase()!="a")for(var e=1,g=b[c][s];e<g;e++)b[c][e]=S(b[c][e]);else{b[c][6]=S(b[c][6]);b[c][7]=S(b[c][7])}return b},y=function(b,c){if(c)for(var d in c)c.hasOwnProperty(d)&&b.setAttribute(d,c[d]);else return j.createElementNS(t.svgns,b)};m.toString=function(){return"Your browser supports SVG.\nYou are running Rapha\u00ebl "+this.version};var la=function(b,c){var d=y("path");c.canvas&&c.canvas.appendChild(d);c=new z(d,c);c.type="path";R(c,{fill:"none",stroke:"#000",
path:b});return c},U=function(b,c,d){var e="linear",g=0.5,i=0.5,k=b.style;c=(c+"").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(r,w,E){e="radial";if(w&&E){g=l[A](w);i=l[A](E);if(Math.pow(g-0.5,2)+Math.pow(i-0.5,2)>0.25)i=Math.sqrt(0.25-Math.pow(g-0.5,2))+0.5}return""});c=c.split(/\s*\-\s*/);if(e=="linear"){var n=c.shift();n=-l[A](n);if(isNaN(n))return null;var h=[0,0,Math.cos(n*Math.PI/180),Math.sin(n*Math.PI/180)];n=1/(Math.max(Math.abs(h[2]),Math.abs(h[3]))||1);h[2]*=n;h[3]*=n;if(h[2]<
0){h[0]=-h[2];h[2]=0}if(h[3]<0){h[1]=-h[3];h[3]=0}}c=ja(c);if(!c)return null;n=y(e+"Gradient");n.id="r"+(m.idGenerator++).toString(36);e=="radial"?y(n,{fx:g,fy:i}):y(n,{x1:h[0],y1:h[1],x2:h[2],y2:h[3]});d.defs.appendChild(n);d=0;for(h=c[s];d<h;d++){var o=y("stop");y(o,{offset:c[d].offset?c[d].offset:!d?"0%":"100%","stop-color":c[d].color||"#fff"});n.appendChild(o)}y(b,{fill:"url(#"+n.id+")",opacity:1,"fill-opacity":1});k.fill="";k.opacity=1;return k.fillOpacity=1},ea=function(b){var c=b.getBBox();
y(b.pattern,{patternTransform:m.format("translate({0},{1})",c.x,c.y)})},R=function(b,c){var d={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},e=b.node,g=b.attrs,i=b.attr("rotation");function k(v,p){if(p=d[(p+"").toLowerCase()]){var J=v.attrs["stroke-width"]||"1";v={round:J,square:J,butt:0}[v.attrs["stroke-linecap"]||c["stroke-linecap"]]||0;for(var L=[],F=p[s];F--;)L[F]=p[F]*J+(F%2?1:-1)*
v;y(e,{"stroke-dasharray":L.join(",")})}}l[A](i)&&b.rotate(0,true);for(var n in c)if(c.hasOwnProperty(n))if(n in u){var h=c[n];g[n]=h;switch(n){case "href":case "title":case "target":var o=e.parentNode;if(o.tagName.toLowerCase()!="a"){var r=y("a");o.insertBefore(r,e);r.appendChild(e);o=r}o.setAttributeNS(b.paper.xlink,n,h);break;case "clip-rect":o=(h+"").split(f);if(o[s]==4){b.clip&&b.clip.parentNode.parentNode.removeChild(b.clip.parentNode);var w=y("clipPath");r=y("rect");w.id="r"+(m.idGenerator++).toString(36);
y(r,{x:o[0],y:o[1],width:o[2],height:o[3]});w.appendChild(r);b.paper.defs.appendChild(w);y(e,{"clip-path":"url(#"+w.id+")"});b.clip=r}if(!h){(h=j.getElementById(e.getAttribute("clip-path").replace(/(^url\(#|\)$)/g,"")))&&h.parentNode.removeChild(h);y(e,{"clip-path":""});delete b.clip}break;case "path":if(h&&b.type=="path"){g.path=wa(ca(h));y(e,{d:g.path})}break;case "width":e.setAttribute(n,h);if(g.fx){n="x";h=g.x}else break;case "x":if(g.fx)h=-g.x-(g.width||0);case "rx":if(n=="rx"&&b.type=="rect")break;
case "cx":e.setAttribute(n,h);b.pattern&&ea(b);break;case "height":e.setAttribute(n,h);if(g.fy){n="y";h=g.y}else break;case "y":if(g.fy)h=-g.y-(g.height||0);case "ry":if(n=="ry"&&b.type=="rect")break;case "cy":e.setAttribute(n,h);b.pattern&&ea(b);break;case "r":b.type=="rect"?y(e,{rx:h,ry:h}):e.setAttribute(n,h);break;case "src":b.type=="image"&&e.setAttributeNS(b.paper.xlink,"href",h);break;case "stroke-width":e.style.strokeWidth=h;e.setAttribute(n,h);g["stroke-dasharray"]&&k(b,g["stroke-dasharray"]);
break;case "stroke-dasharray":k(b,h);break;case "rotation":i=h;b.rotate(h,true);break;case "translation":h=(h+"").split(f);b.translate((+h[0]+1||2)-1,(+h[1]+1||2)-1);break;case "scale":h=(h+"").split(f);b.scale(+h[0]||1,+h[1]||+h[0]||1,+h[2]||null,+h[3]||null);break;case "fill":if(o=(h+"").match(/^url\(['"]?([^\)]+)['"]?\)$/i)){w=y("pattern");var E=y("image");w.id="r"+(m.idGenerator++).toString(36);y(w,{x:0,y:0,patternUnits:"userSpaceOnUse"});y(E,{x:0,y:0});E.setAttributeNS(b.paper.xlink,"href",o[1]);
w.appendChild(E);h=j.createElement("img");h.style.cssText="position:absolute;left:-9999em;top-9999em";h.onload=function(){y(w,{width:this.offsetWidth,height:this.offsetHeight});y(E,{width:this.offsetWidth,height:this.offsetHeight});j.body.removeChild(this);t.safari()};j.body.appendChild(h);h.src=o[1];b.paper.defs.appendChild(w);e.style.fill="url(#"+w.id+")";y(e,{fill:"url(#"+w.id+")"});b.pattern=w;b.pattern&&ea(b);break}if(m.getRGB(h).error){if((b.type in{circle:1,ellipse:1}||(h+"").charAt(0)!="r")&&
U(e,h,b.paper)){g.gradient=h;g.fill="none";break}}else{delete c.gradient;delete g.gradient;if(!m.is(g.opacity,"undefined")&&m.is(c.opacity,"undefined")){e.style.opacity=g.opacity;y(e,{opacity:g.opacity})}if(!m.is(g["fill-opacity"],"undefined")&&m.is(c["fill-opacity"],"undefined")){e.style.fillOpacity=g["fill-opacity"];y(e,{"fill-opacity":g["fill-opacity"]})}}case "stroke":e.style[n]=m.getRGB(h).hex;e.setAttribute(n,m.getRGB(h).hex);break;case "gradient":(b.type in{circle:1,ellipse:1}||(h+"").charAt(0)!=
"r")&&U(e,h,b.paper);break;case "opacity":case "fill-opacity":if(g.gradient){if(o=j.getElementById(e.getAttribute("fill").replace(/^url\(#|\)$/g,""))){o=o.getElementsByTagName("stop");o[o[s]-1].setAttribute("stop-opacity",h)}break}default:n=="font-size"&&(h=l[M](h,10)+"px");o=n.replace(/(\-.)/g,function(v){return v.substring(1).toUpperCase()});e.style[o]=h;e.setAttribute(n,h);break}}xa(b,c);l[M](i,10)&&b.rotate(i,true)},ma=1.2,xa=function(b,c){if(!(b.type!="text"||!("text"in c||"font"in c||"font-size"in
c||"x"in c||"y"in c))){var d=b.attrs,e=b.node,g=e.firstChild?l[M](j.defaultView.getComputedStyle(e.firstChild,"").getPropertyValue("font-size"),10):10;if("text"in c){for(;e.firstChild;)e.removeChild(e.firstChild);c=(c.text+"").split("\n");for(var i=0,k=c[s];i<k;i++){var n=y("tspan");i&&y(n,{dy:g*ma,x:d.x});n.appendChild(j.createTextNode(c[i]));e.appendChild(n)}}else{c=e.getElementsByTagName("tspan");i=0;for(k=c[s];i<k;i++)i&&y(c[i],{dy:g*ma,x:d.x})}y(e,{y:d.y});b=b.getBBox();(b=d.y-(b.y+b.height/
2))&&y(e,{y:d.y+b})}},z=function(b,c){this.node=this[0]=b;b.raphael=this;this.paper=c;this.attrs=this.attrs||{};this.transformations=[];this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1}};z[x].rotate=function(b,c,d){if(b==null){if(this._.rt.cx)return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");return this._.rt.deg}var e=this.getBBox();b=(b+"").split(f);if(b[s]-1){c=l[A](b[1]);d=l[A](b[2])}b=l[A](b[0]);if(c!=null)this._.rt.deg=b;else this._.rt.deg+=b;d==null&&(c=null);this._.rt.cx=c;this._.rt.cy=
d;c=c==null?e.x+e.width/2:c;d=d==null?e.y+e.height/2:d;if(this._.rt.deg){this.transformations[0]=m.format("rotate({0} {1} {2})",this._.rt.deg,c,d);this.clip&&y(this.clip,{transform:m.format("rotate({0} {1} {2})",-this._.rt.deg,c,d)})}else{this.transformations[0]="";this.clip&&y(this.clip,{transform:""})}y(this.node,{transform:this.transformations.join(" ")});return this};z[x].hide=function(){this.node.style.display="none";return this};z[x].show=function(){this.node.style.display="block";return this};
z[x].remove=function(){this.node.parentNode.removeChild(this.node)};z[x].getBBox=function(){if(this.type=="path")return X(this.attrs.path);if(this.node.style.display=="none"){this.show();var b=true}var c={};try{c=this.node.getBBox()}catch(d){}finally{c=c||{}}if(this.type=="text"){c={x:c.x,y:Infinity,width:c.width,height:0};for(var e=0,g=this.node.getNumberOfChars();e<g;e++){var i=this.node.getExtentOfChar(e);i.y<c.y&&(c.y=i.y);i.y+i.height-c.y>c.height&&(c.height=i.y+i.height-c.y)}}b&&this.hide();
return c};z[x].attr=function(b,c){if(arguments[s]==1&&m.is(b,"string")){if(b=="translation")return this.translate();if(b=="rotation")return this.rotate();if(b=="scale")return this.scale();return this.attrs[b]}if(arguments[s]==1&&m.is(b,"array")){var d={};for(var e in b)if(b.hasOwnProperty(e))d[b[e]]=this.attrs[b[e]];return d}if(arguments[s]==2){d={};d[b]=c;R(this,d)}else arguments[s]==1&&m.is(b,"object")&&R(this,b);return this};z[x].toFront=function(){this.node.parentNode.appendChild(this.node);return this};
z[x].toBack=function(){this.node.parentNode.firstChild!=this.node&&this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);return this};z[x].insertAfter=function(b){b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node);return this};z[x].insertBefore=function(b){b=b.node;b.parentNode.insertBefore(this.node,b);return this};var na=function(b,c,d,e){c=S(c);d=S(d);var g=y("circle");b.canvas&&b.canvas.appendChild(g);
b=new z(g,b);b.attrs={cx:c,cy:d,r:e,fill:"none",stroke:"#000"};b.type="circle";y(g,b.attrs);return b},oa=function(b,c,d,e,g,i){c=S(c);d=S(d);var k=y("rect");b.canvas&&b.canvas.appendChild(k);b=new z(k,b);b.attrs={x:c,y:d,width:e,height:g,r:i||0,rx:i||0,ry:i||0,fill:"none",stroke:"#000"};b.type="rect";y(k,b.attrs);return b},pa=function(b,c,d,e,g){c=S(c);d=S(d);var i=y("ellipse");b.canvas&&b.canvas.appendChild(i);b=new z(i,b);b.attrs={cx:c,cy:d,rx:e,ry:g,fill:"none",stroke:"#000"};b.type="ellipse";
y(i,b.attrs);return b},qa=function(b,c,d,e,g,i){var k=y("image");y(k,{x:d,y:e,width:g,height:i,preserveAspectRatio:"none"});k.setAttributeNS(b.xlink,"href",c);b.canvas&&b.canvas.appendChild(k);b=new z(k,b);b.attrs={x:d,y:e,width:g,height:i,src:c};b.type="image";return b},ra=function(b,c,d,e){var g=y("text");y(g,{x:c,y:d,"text-anchor":"middle"});b.canvas&&b.canvas.appendChild(g);b=new z(g,b);b.attrs={x:c,y:d,"text-anchor":"middle",text:e,font:u.font,stroke:"none",fill:"#000"};b.type="text";R(b,b.attrs);
return b},sa=function(b,c){this.width=b||this.width;this.height=c||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this},aa=function(){var b=ka[I](null,arguments),c=b&&b.container,d=b.x,e=b.y,g=b.width;b=b.height;if(!c)throw new Error("SVG container not found.");t.canvas=y("svg");var i=t.canvas,k=i.style;i.setAttribute("width",g||512);t.width=g||512;i.setAttribute("height",b||342);t.height=b||342;if(c==1){j.body.appendChild(i);k.position=
"absolute";k.left=d+"px";k.top=e+"px"}else c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i);c={canvas:i,clear:function(){for(;this.canvas.firstChild;)this.canvas.removeChild(this.canvas.firstChild);this.desc=y("desc");this.defs=y("defs");this.desc.appendChild(j.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs)}};for(var n in t)if(t.hasOwnProperty(n))if(n!="create")c[n]=t[n];da.call(c,c,m.fn);c.clear();c.raphael=m;return c};
t.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}}if(m.vml){var ta=function(b){b=ba(b);for(var c=0,d=b[s];c<d;c++){b[c][0]=(b[c][0]+"").toLowerCase();b[c][0]=="z"&&(b[c][0]="x");for(var e=1,g=b[c][s];e<g;e++)b[c][e]=~~(b[c][e]+0.5)}return b+""};m.toString=function(){return"Your browser doesn\u2019t support SVG. Assuming it is Internet Explorer and falling down to VML.\nYou are running Rapha\u00ebl "+this.version};la=function(b,c){var d=N("group"),e=d.style;
e.position="absolute";e.left=0;e.top=0;e.width=c.width+"px";e.height=c.height+"px";d.coordsize=c.coordsize;d.coordorigin=c.coordorigin;e=N("shape");var g=e.style;g.width=c.width+"px";g.height=c.height+"px";e.path="";e.coordsize=this.coordsize;e.coordorigin=this.coordorigin;d.appendChild(e);e=new z(e,d,c);e.isAbsolute=true;e.type="path";e.path=[];e.Path="";if(b){e.attrs.path=m.parsePathString(b);e.node.path=ta(e.attrs.path)}R(e,{fill:"none",stroke:"#000"});e.setBox();c.canvas.appendChild(d);return e};
R=function(b,c){b.attrs=b.attrs||{};var d=b.node,e=b.attrs,g=d.style,i,k=b;for(i in c)if(c.hasOwnProperty(i))e[i]=c[i];c.href&&(d.href=c.href);c.title&&(d.title=c.title);c.target&&(d.target=c.target);if(c.path&&b.type=="path"){e.path=m.parsePathString(c.path);d.path=ta(e.path)}c.rotation!=null&&b.rotate(c.rotation,true);if(c.translation){i=(c.translation+"").split(f);b.translate(i[0],i[1])}if(c.scale){i=(c.scale+"").split(f);b.scale(+i[0]||1,+i[1]||+i[0]||1,+i[2]||null,+i[3]||null)}if("clip-rect"in
c){i=(c["clip-rect"]+"").split(f);if(i[s]==4){i[2]=+i[2]+ +i[0];i[3]=+i[3]+ +i[1];var n=d.clipRect||j.createElement("div"),h=n.style,o=d.parentNode;h.clip=m.format("rect({1}px {2}px {3}px {0}px)",i);if(!d.clipRect){h.position="absolute";h.top=0;h.left=0;h.width=b.paper.width+"px";h.height=b.paper.height+"px";o.parentNode.insertBefore(n,o);n.appendChild(o);d.clipRect=n}}if(!c["clip-rect"])d.clipRect&&(d.clipRect.style.clip="")}if(b.type=="image"&&c.src)d.src=c.src;if(b.type=="image"&&c.opacity){d.filterOpacity=
" progid:DXImageTransform.Microsoft.Alpha(opacity="+c.opacity*100+")";g.filter=(d.filterMatrix||"")+(d.filterOpacity||"")}c.font&&(g.font=c.font);c["font-family"]&&(g.fontFamily='"'+c["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,"")+'"');c["font-size"]&&(g.fontSize=c["font-size"]);c["font-weight"]&&(g.fontWeight=c["font-weight"]);c["font-style"]&&(g.fontStyle=c["font-style"]);if(c.opacity!=null||c["stroke-width"]!=null||c.fill!=null||c.stroke!=null||c["stroke-width"]!=null||c["stroke-opacity"]!=
null||c["fill-opacity"]!=null||c["stroke-dasharray"]!=null||c["stroke-miterlimit"]!=null||c["stroke-linejoin"]!=null||c["stroke-linecap"]!=null){d=b.shape||d;g=d.getElementsByTagName("fill")&&d.getElementsByTagName("fill")[0];i=false;!g&&(i=g=N("fill"));if("fill-opacity"in c||"opacity"in c){b=((+e["fill-opacity"]+1||2)-1)*((+e.opacity+1||2)-1);b<0&&(b=0);b>1&&(b=1);g.opacity=b}c.fill&&(g.on=true);if(g.on==null||c.fill=="none")g.on=false;if(g.on&&c.fill)if(b=c.fill.match(/^url\(([^\)]+)\)$/i)){g.src=
b[1];g.type="tile"}else{g.color=m.getRGB(c.fill).hex;g.src="";g.type="solid";if(m.getRGB(c.fill).error&&(k.type in{circle:1,ellipse:1}||(c.fill+"").charAt(0)!="r")&&U(k,c.fill)){e.fill="none";e.gradient=c.fill}}i&&d.appendChild(g);g=d.getElementsByTagName("stroke")&&d.getElementsByTagName("stroke")[0];i=false;!g&&(i=g=N("stroke"));if(c.stroke&&c.stroke!="none"||c["stroke-width"]||c["stroke-opacity"]!=null||c["stroke-dasharray"]||c["stroke-miterlimit"]||c["stroke-linejoin"]||c["stroke-linecap"])g.on=
true;(c.stroke=="none"||g.on==null||c.stroke==0||c["stroke-width"]==0)&&(g.on=false);g.on&&c.stroke&&(g.color=m.getRGB(c.stroke).hex);b=((+e["stroke-opacity"]+1||2)-1)*((+e.opacity+1||2)-1);b<0&&(b=0);b>1&&(b=1);g.opacity=b;c["stroke-linejoin"]&&(g.joinstyle=c["stroke-linejoin"]||"miter");g.miterlimit=c["stroke-miterlimit"]||8;c["stroke-linecap"]&&(g.endcap={butt:"flat",square:"square",round:"round"}[c["stroke-linecap"]]||"miter");c["stroke-width"]&&(g.weight=(l[A](c["stroke-width"])||1)*12/16);if(c["stroke-dasharray"]){b=
{"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};g.dashstyle=b[c["stroke-dasharray"]]||""}i&&d.appendChild(g)}if(k.type=="text"){g=k.paper.span.style;e.font&&(g.font=e.font);e["font-family"]&&(g.fontFamily=e["font-family"]);e["font-size"]&&(g.fontSize=e["font-size"]);e["font-weight"]&&(g.fontWeight=e["font-weight"]);e["font-style"]&&(g.fontStyle=e["font-style"]);k.node.string&&
(k.paper.span.innerHTML=k.node.string.replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));k.W=e.w=k.paper.span.offsetWidth;k.H=e.h=k.paper.span.offsetHeight;k.X=e.x;k.Y=e.y+~~(k.H/2+0.5);switch(e["text-anchor"]){case "start":k.node.style["v-text-align"]="left";k.bbx=~~(k.W/2+0.5);break;case "end":k.node.style["v-text-align"]="right";k.bbx=-~~(k.W/2+0.5);break;default:k.node.style["v-text-align"]="center";break}}};U=function(b,c){b.attrs=b.attrs||{};var d=b.node.getElementsByTagName("fill"),
e="linear",g=".5 .5";b.attrs.gradient=c;c=(c+"").replace(/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,function(h,o,r){e="radial";if(o&&r){o=l[A](o);r=l[A](r);if(Math.pow(o-0.5,2)+Math.pow(r-0.5,2)>0.25)r=Math.sqrt(0.25-Math.pow(o-0.5,2))+0.5;g=o+" "+r}return""});c=c.split(/\s*\-\s*/);if(e=="linear"){var i=c.shift();i=-l[A](i);if(isNaN(i))return null}c=ja(c);if(!c)return null;b=b.shape||b.node;d=d[0]||N("fill");if(c[s]){d.on=true;d.method="none";d.type=e=="radial"?"gradientradial":"gradient";d.color=c[0].color;
d.color2=c[c[s]-1].color;b=[];for(var k=0,n=c[s];k<n;k++)c[k].offset&&b.push(c[k].offset+" "+c[k].color);d.colors.value=b[s]&&d.colors?b.join(","):"0% "+d.color;if(e=="radial"){d.focus="100%";d.focussize=g;d.focusposition=g}else d.angle=(270-i)%360}return 1};z=function(b,c,d){this.node=this[0]=b;b.raphael=this;this.Y=this.X=0;this.attrs={};this.Group=c;this.paper=d;this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1}};z[x].rotate=function(b,c,d){if(b==null){if(this._.rt.cx)return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");
return this._.rt.deg}b=(b+"").split(f);if(b[s]-1){c=l[A](b[1]);d=l[A](b[2])}b=l[A](b[0]);if(c!=null)this._.rt.deg=b;else this._.rt.deg+=b;d==null&&(c=null);this._.rt.cx=c;this._.rt.cy=d;this.setBox(this.attrs,c,d);this.Group.style.rotation=this._.rt.deg;return this};z[x].setBox=function(b,c,d){var e=this.Group.style,g=this.shape&&this.shape.style||this.node.style;b=b||{};for(var i in b)if(b.hasOwnProperty(i))this.attrs[i]=b[i];c=c||this._.rt.cx;d=d||this._.rt.cy;var k=this.attrs,n,h;switch(this.type){case "circle":i=
k.cx-k.r;n=k.cy-k.r;h=k=k.r*2;break;case "ellipse":i=k.cx-k.rx;n=k.cy-k.ry;h=k.rx*2;k=k.ry*2;break;case "rect":case "image":i=k.x;n=k.y;h=k.width||0;k=k.height||0;break;case "text":this.textpath.v=["m",~~(k.x+0.5),", ",~~(k.y-2+0.5),"l",~~(k.x+0.5)+1,", ",~~(k.y-2+0.5)].join("");i=k.x-~~(this.W/2+0.5);n=k.y-this.H/2;h=this.W;k=this.H;break;case "path":if(this.attrs.path){k=X(this.attrs.path);i=k.x;n=k.y;h=k.width;k=k.height}else{n=i=0;h=this.paper.width;k=this.paper.height}break;default:n=i=0;h=this.paper.width;
k=this.paper.height;break}c=c==null?i+h/2:c;d=d==null?n+k/2:d;c=c-this.paper.width/2;d=d-this.paper.height/2;if(this.type=="path"||this.type=="text"){e.left!=c+"px"&&(e.left=c+"px");e.top!=d+"px"&&(e.top=d+"px");this.X=this.type=="text"?i:-c;this.Y=this.type=="text"?n:-d;this.W=h;this.H=k;g.left!=-c+"px"&&(g.left=-c+"px");g.top!=-d+"px"&&(g.top=-d+"px")}else{e.left!=c+"px"&&(e.left=c+"px");e.top!=d+"px"&&(e.top=d+"px");this.X=i;this.Y=n;this.W=h;this.H=k;e.width!=this.paper.width+"px"&&(e.width=this.paper.width+
"px");e.height!=this.paper.height+"px"&&(e.height=this.paper.height+"px");g.left!=i-c+"px"&&(g.left=i-c+"px");g.top!=n-d+"px"&&(g.top=n-d+"px");g.width!=h+"px"&&(g.width=h+"px");g.height!=k+"px"&&(g.height=k+"px");b=(+b.r||0)/Math.min(h,k);if(this.type=="rect"&&this.arcsize!=b&&(b||this.arcsize)){e=N(b?"roundrect":"rect");e.arcsize=b;this.Group.appendChild(e);this.node.parentNode.removeChild(this.node);this.node=e;this.arcsize=b;R(this,this.attrs);this.setBox(this.attrs)}}};z[x].hide=function(){this.Group.style.display=
"none";return this};z[x].show=function(){this.Group.style.display="block";return this};z[x].getBBox=function(){if(this.type=="path")return X(this.attrs.path);return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H}};z[x].remove=function(){this[0].parentNode.removeChild(this[0]);this.Group.parentNode.removeChild(this.Group);this.shape&&this.shape.parentNode.removeChild(this.shape)};z[x].attr=function(b,c){if(arguments[s]==1&&m.is(b,"string")){if(b=="translation")return this.translate();if(b==
"rotation")return this.rotate();if(b=="scale")return this.scale();return this.attrs[b]}if(this.attrs&&arguments[s]==1&&m.is(b,"array")){for(var d={},e=0,g=b[s];e<g;e++)d[b[e]]=this.attrs[b[e]];return d}if(arguments[s]==2){d={};d[b]=c}if(arguments[s]==1&&m.is(b,"object"))d=b;if(d){if(d.gradient&&(this.type in{circle:1,ellipse:1}||(d.gradient+"").charAt(0)!="r"))U(this,d.gradient);if(d.text&&this.type=="text")this.node.string=d.text;R(this,d);this.setBox(this.attrs)}return this};z[x].toFront=function(){this.Group.parentNode.appendChild(this.Group);
return this};z[x].toBack=function(){this.Group.parentNode.firstChild!=this.Group&&this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild);return this};z[x].insertAfter=function(b){b.Group.nextSibling?b.Group.parentNode.insertBefore(this.Group,b.Group.nextSibling):b.Group.parentNode.appendChild(this.Group);return this};z[x].insertBefore=function(b){b.Group.parentNode.insertBefore(this.Group,b.Group);return this};na=function(b,c,d,e){var g=N("group"),i=N("oval");g.style.cssText=
"position:absolute;left:0;top:0;width:"+b.width+"px;height:"+b.height+"px";g.coordsize=b.coordsize;g.coordorigin=b.coordorigin;g.appendChild(i);i=new z(i,g,b);i.type="circle";R(i,{stroke:"#000",fill:"none"});i.attrs.cx=c;i.attrs.cy=d;i.attrs.r=e;i.setBox({x:c-e,y:d-e,width:e*2,height:e*2});b.canvas.appendChild(g);return i};oa=function(b,c,d,e,g,i){var k=N("group"),n=N(i?"roundrect":"rect"),h=(+i||0)/Math.min(e,g);n.arcsize=h;k.style.cssText="position:absolute;left:0;top:0;width:"+b.width+"px;height:"+
b.height+"px";k.coordsize=b.coordsize;k.coordorigin=b.coordorigin;k.appendChild(n);n=new z(n,k,b);n.type="rect";R(n,{stroke:"#000"});n.arcsize=h;n.setBox({x:c,y:d,width:e,height:g,r:+i});b.canvas.appendChild(k);return n};pa=function(b,c,d,e,g){var i=N("group"),k=N("oval");i.style.cssText="position:absolute;left:0;top:0;width:"+b.width+"px;height:"+b.height+"px";i.coordsize=b.coordsize;i.coordorigin=b.coordorigin;i.appendChild(k);k=new z(k,i,b);k.type="ellipse";R(k,{stroke:"#000"});k.attrs.cx=c;k.attrs.cy=
d;k.attrs.rx=e;k.attrs.ry=g;k.setBox({x:c-e,y:d-g,width:e*2,height:g*2});b.canvas.appendChild(i);return k};qa=function(b,c,d,e,g,i){var k=N("group"),n=N("image");k.style.cssText="position:absolute;left:0;top:0;width:"+b.width+"px;height:"+b.height+"px";k.coordsize=b.coordsize;k.coordorigin=b.coordorigin;n.src=c;k.appendChild(n);n=new z(n,k,b);n.type="image";n.attrs.src=c;n.attrs.x=d;n.attrs.y=e;n.attrs.w=g;n.attrs.h=i;n.setBox({x:d,y:e,width:g,height:i});b.canvas.appendChild(k);return n};ra=function(b,
c,d,e){var g=N("group"),i=N("shape"),k=i.style,n=N("path"),h=N("textpath");g.style.cssText="position:absolute;left:0;top:0;width:"+b.width+"px;height:"+b.height+"px";g.coordsize=b.coordsize;g.coordorigin=b.coordorigin;n.v=m.format("m{0},{1}l{2},{1}",~~(c+0.5),~~(d+0.5),~~(c+0.5)+1);n.textpathok=true;k.width=b.width;k.height=b.height;h.string=e;h.on=true;i.appendChild(h);i.appendChild(n);g.appendChild(i);k=new z(h,g,b);k.shape=i;k.textpath=n;k.type="text";k.attrs.text=e;k.attrs.x=c;k.attrs.y=d;k.attrs.w=
1;k.attrs.h=1;R(k,{font:u.font,stroke:"none",fill:"#000"});k.setBox();b.canvas.appendChild(g);return k};sa=function(b,c){var d=this.canvas.style;this.width=l[A](b||this.width);this.height=l[A](c||this.height);d.width=this.width+"px";d.height=this.height+"px";d.clip="rect(0 "+this.width+"px "+this.height+"px 0)";this.coordsize=this.width+" "+this.height;return this};j.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!j.namespaces.rvml&&j.namespaces.add("rvml","urn:schemas-microsoft-com:vml");
var N=function(b){return j.createElement("<rvml:"+b+' class="rvml">')}}catch(Ba){N=function(b){return j.createElement("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}aa=function(){var b=ka[I](null,arguments),c=b.container,d=b.height,e=b.width,g=b.x;b=b.y;if(!c)throw new Error("VML container not found.");var i={},k=i.canvas=j.createElement("div"),n=k.style;e=l[A](e)||512;d=l[A](d)||342;i.width=e;i.height=d;i.coordsize=e+" "+d;i.coordorigin="0 0";i.span=j.createElement("span");i.span.style.cssText=
"position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;";k.appendChild(i.span);n.cssText=m.format("width:{0}px;height:{1}px;position:absolute;clip:rect(0 {0}px {1}px 0)",e,d);if(c==1){j.body.appendChild(k);n.left=g+"px";n.top=b+"px";c={style:{width:e,height:d}}}else{c.style.width=e;c.style.height=d;c.firstChild?c.insertBefore(k,c.firstChild):c.appendChild(k)}for(var h in t)if(t.hasOwnProperty(h))i[h]=t[h];da.call(i,i,m.fn);i.clear=function(){for(;k.firstChild;)k.removeChild(k.firstChild)};
i.raphael=m;return i};t.remove=function(){this.canvas.parentNode.removeChild(this.canvas)}}t.safari={"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]?function(){var b=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){b.remove()})}:function(){};for(var ya=function(){if(j.addEventListener)return function(b,c,d,e){function g(i){return d.call(e,i)}b.addEventListener(c,g,false);return function(){b.removeEventListener(c,g,false);return true}};else if(j.attachEvent)return function(b,
c,d,e){function g(k){return d.call(e,k||l.event)}b.attachEvent("on"+c,g);function i(){b.detachEvent("on"+c,g);return true}if(c=="mouseover"){b.attachEvent("onmouseenter",g);return function(){b.detachEvent("onmouseenter",g);return i()}}else if(c=="mouseout"){b.attachEvent("onmouseleave",g);return function(){b.detachEvent("onmouseleave",g);return i()}}return i}}(),ua=H[s];ua--;)(function(b){z[x][b]=function(c){if(m.is(c,"function")){this.events=this.events||{};this.events[b]=this.events[b]||{};this.events[b][c]=
this.events[b][c]||[];this.events[b][c].push(ya(this.shape||this.node,b,c,this))}return this};z[x]["un"+b]=function(c){this.events&&this.events[b]&&this.events[b][c]&&this.events[b][c][s]&&this.events[b][c].shift()()&&!this.events[b][c][s]&&delete this.events[b][c]}})(H[ua]);t.circle=function(b,c,d){return na(this,b||0,c||0,d||0)};t.rect=function(b,c,d,e,g){return oa(this,b||0,c||0,d||0,e||0,g||0)};t.ellipse=function(b,c,d,e){return pa(this,b||0,c||0,d||0,e||0)};t.path=function(b){b&&!m.is(b,"string")&&
!m.is(b[0],"array")&&(b+="");return la(m.format[I](m,arguments),this)};t.image=function(b,c,d,e,g){return qa(this,b||"about:blank",c||0,d||0,e||0,g||0)};t.text=function(b,c,d){return ra(this,b||0,c||0,d||"")};t.set=function(b){arguments[s]>1&&(b=Array[x].splice.call(arguments,0,arguments[s]));return new T(b)};t.setSize=sa;z[x].stop=function(){clearTimeout(this.animation_in_progress);return this};z[x].scale=function(b,c,d,e){if(b==null&&c==null)return{x:this._.sx,y:this._.sy,toString:function(){return this.x+
" "+this.y}};c=c||b;!+c&&(c=b);var g,i,k=this.attrs;if(b!=0){var n=this.getBBox();i=n.x+n.width/2;var h=n.y+n.height/2,o=b/this._.sx,r=c/this._.sy;d=+d||d==0?d:i;e=+e||e==0?e:h;n=~~(b/Math.abs(b));var w=~~(c/Math.abs(c)),E=this.node.style;g=d+(i-d)*n*o;i=e+(h-e)*w*r;switch(this.type){case "rect":case "image":var v=k.width*n*o,p=k.height*w*r;h=k.r*Math.min(o,r);g=g-v/2;i=i-p/2;this.attr({width:v,height:p,x:g,y:i,r:h});break;case "circle":case "ellipse":this.attr({rx:k.rx*o,ry:k.ry*r,r:k.r*Math.min(o,
r),cx:g,cy:i});break;case "path":h=ga(k.path);for(var J=true,L=0,F=h[s];L<F;L++){var B=h[L];if(!(B[0].toUpperCase()=="M"&&J)){J=false;if(m.svg&&B[0].toUpperCase()=="A"){B[h[L][s]-2]*=o;B[h[L][s]-1]*=r;B[1]*=o;B[2]*=r;B[5]=+(n+w?!!+B[5]:!+B[5])}else for(var Q=1,K=B[s];Q<K;Q++)B[Q]*=Q%2?o:r}}o=X(h);g=g-o.x-o.width/2;i=i-o.y-o.height/2;h[0][1]+=g;h[0][2]+=i;this.attr({path:h});break}if(this.type in{text:1,image:1}&&(n!=1||w!=1))if(this.transformations){this.transformations[2]="scale(".concat(n,",",w,
")");this.node.setAttribute("transform",this.transformations.join(" "));g=n==-1?-k.x-(v||0):k.x;i=w==-1?-k.y-(p||0):k.y;this.attr({x:g,y:i});k.fx=n-1;k.fy=w-1}else{this.node.filterMatrix=" progid:DXImageTransform.Microsoft.Matrix(M11=".concat(n,", M12=0, M21=0, M22=",w,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')");E.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"")}else if(this.transformations){this.transformations[2]="";this.node.setAttribute("transform",this.transformations.join(" "));
k.fx=0;k.fy=0}else{this.node.filterMatrix="";E.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"")}k.scale=[b,c,d,e].join(" ");this._.sx=b;this._.sy=c}return this};m.easing_formulas={linear:function(b){return b},"<":function(b){return Math.pow(b,3)},">":function(b){return Math.pow(b-1,3)+1},"<>":function(b){b*=2;if(b<1)return Math.pow(b,3)/2;b-=2;return(Math.pow(b,3)+2)/2},backIn:function(b){var c=1.70158;return b*b*((c+1)*b-c)},backOut:function(b){b-=1;var c=1.70158;return b*b*((c+
1)*b+c)+1},elastic:function(b){if(b==0||b==1)return b;var c=0.3,d=c/4;return Math.pow(2,-10*b)*Math.sin((b-d)*2*Math.PI/c)+1},bounce:function(b){var c=7.5625,d=2.75;if(b<1/d)b=c*b*b;else if(b<2/d){b-=1.5/d;b=c*b*b+0.75}else if(b<2.5/d){b-=2.25/d;b=c*b*b+0.9375}else{b-=2.625/d;b=c*b*b+0.984375}return b}};z[x].animate=function(b,c,d,e){clearTimeout(this.animation_in_progress);if(m.is(d,"function")||!d)e=d||null;var g={},i={},k={},n={x:0,y:0};for(var h in b)if(b.hasOwnProperty(h))if(h in G){g[h]=this.attr(h);
g[h]==null&&(g[h]=u[h]);i[h]=b[h];switch(G[h]){case "number":k[h]=(i[h]-g[h])/c;break;case "colour":g[h]=m.getRGB(g[h]);var o=m.getRGB(i[h]);k[h]={r:(o.r-g[h].r)/c,g:(o.g-g[h].g)/c,b:(o.b-g[h].b)/c};break;case "path":o=ba(g[h],i[h]);g[h]=o[0];i[h]=o[1];k[h]=[];o=0;for(var r=g[h][s];o<r;o++){k[h][o]=[0];for(var w=1,E=g[h][o][s];w<E;w++)k[h][o][w]=(i[h][o][w]-g[h][o][w])/c}break;case "csv":r=(b[h]+"").split(f);o=(g[h]+"").split(f);switch(h){case "translation":g[h]=[0,0];k[h]=[r[0]/c,r[1]/c];break;case "rotation":g[h]=
o[1]==r[1]&&o[2]==r[2]?o:[0,r[1],r[2]];k[h]=[(r[0]-g[h][0])/c,0,0];break;case "scale":b[h]=r;g[h]=(g[h]+"").split(f);k[h]=[(r[0]-g[h][0])/c,(r[1]-g[h][1])/c,0,0];break;case "clip-rect":g[h]=(g[h]+"").split(f);k[h]=[];for(o=4;o--;)k[h][o]=(r[o]-g[h][o])/c;break}i[h]=r}}var v=+new Date,p=0;function J(F){return F>255?255:F}var L=this;(function F(){var B=new Date-v,Q={},K;if(B<c){var P=m.easing_formulas[d]?m.easing_formulas[d](B/c):B/c;for(var C in g)if(g.hasOwnProperty(C)){switch(G[C]){case "number":K=
+g[C]+P*c*k[C];break;case "colour":K="rgb("+[J(~~(g[C].r+P*c*k[C].r+0.5)),J(~~(g[C].g+P*c*k[C].g+0.5)),J(~~(g[C].b+P*c*k[C].b+0.5))].join(",")+")";break;case "path":K=[];for(var O=0,za=g[C][s];O<za;O++){K[O]=[g[C][O][0]];for(var V=1,Aa=g[C][O][s];V<Aa;V++)K[O][V]=+g[C][O][V]+P*c*k[C][O][V];K[O]=K[O].join(" ")}K=K.join(" ");break;case "csv":switch(C){case "translation":K=k[C][0]*(B-p);O=k[C][1]*(B-p);n.x+=K;n.y+=O;K=[K,O].join(" ");break;case "rotation":K=+g[C][0]+P*c*k[C][0];g[C][1]&&(K+=","+g[C][1]+
","+g[C][2]);break;case "scale":K=[+g[C][0]+P*c*k[C][0],+g[C][1]+P*c*k[C][1],2 in b[C]?b[C][2]:"",3 in b[C]?b[C][3]:""].join(" ");break;case "clip-rect":K=[];for(O=4;O--;)K[O]=+g[C][O]+P*c*k[C][O];break}break}Q[C]=K}L.attr(Q);L.animation_in_progress=setTimeout(F);m.svg&&t.safari()}else{(n.x||n.y)&&L.translate(-n.x,-n.y);L.attr(b);clearTimeout(L.animation_in_progress);m.svg&&t.safari();m.is(e,"function")&&e.call(L)}p=B})();return this};z[x].translate=function(b,c){if(b==null)return{x:this._.tx,y:this._.ty};
this._.tx+=+b;this._.ty+=+c;switch(this.type){case "circle":case "ellipse":this.attr({cx:+b+this.attrs.cx,cy:+c+this.attrs.cy});break;case "rect":case "image":case "text":this.attr({x:+b+this.attrs.x,y:+c+this.attrs.y});break;case "path":var d=ga(this.attrs.path);d[0][1]+=+b;d[0][2]+=+c;this.attr({path:d});break}return this};z[x].toString=function(){return"Rapha\u00ebl\u2019s object"};function T(b){this.items=[];this[s]=0;if(b)for(var c=0,d=b[s];c<d;c++)if(b[c]&&(b[c].constructor==z||b[c].constructor==
T)){this[this.items[s]]=this.items[this.items[s]]=b[c];this[s]++}}T[x].push=function(){for(var b,c,d=0,e=arguments[s];d<e;d++)if((b=arguments[d])&&(b.constructor==z||b.constructor==T)){c=this.items[s];this[c]=this.items[c]=b;this[s]++}return this};T[x].pop=function(){delete this[this[s]--];return this.items.pop()};for(var fa in z[x])if(z[x].hasOwnProperty(fa))T[x][fa]=function(b){return function(){for(var c=0,d=this.items[s];c<d;c++)this.items[c][b][I](this.items[c],arguments);return this}}(fa);T[x].attr=
function(b){if(b&&m.is(b,"array")&&m.is(b[0],"object"))for(var c=0,d=b[s];c<d;c++)this.items[c].attr(b[c]);else{c=0;for(d=this.items[s];c<d;c++)this.items[c].attr[I](this.items[c],arguments)}return this};T[x].animate=function(b,c,d,e){if(m.is(d,"function")||!d)e=d||null;var g=this.items[s],i=g,k=this;if(e)for(var n=function(){!--g&&e.call(k)};i--;)this.items[i].animate(b,c,d||n,n);else for(;i--;)this.items[i].animate(b,c,d);return this};T[x].getBBox=function(){for(var b=[],c=[],d=[],e=[],g=this.items[s];g--;){var i=
this.items[g].getBBox();b.push(i.x);c.push(i.y);d.push(i.x+i.width);e.push(i.y+i.height)}b=Math.min[I](Math,b);c=Math.min[I](Math,c);return{x:b,y:c,width:Math.max[I](Math,d)-b,height:Math.max[I](Math,e)-c}};m.registerFont=function(b){if(!b.face)return b;this.fonts=this.fonts||{};var c={w:b.w,face:{},glyphs:{}},d=b.face["font-family"];for(var e in b.face)if(b.face.hasOwnProperty(e))c.face[e]=b.face[e];if(this.fonts[d])this.fonts[d].push(c);else this.fonts[d]=[c];if(!b.svg){c.face["units-per-em"]=l[M](b.face["units-per-em"],
10);for(var g in b.glyphs)if(b.glyphs.hasOwnProperty(g)){d=b.glyphs[g];c.glyphs[g]={w:d.w,k:{},d:d.d&&"M"+d.d.replace(/[mlcxtrv]/g,function(k){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[k]||"M"})+"z"};if(d.k)for(var i in d.k)if(d.hasOwnProperty(i))c.glyphs[g].k[i]=d.k[i]}}return b};t.getFont=function(b,c,d,e){e=e||"normal";d=d||"normal";c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;var g=m.fonts[b];if(!g){b=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,"")+"(\\s|$)","i");for(var i in m.fonts)if(m.fonts.hasOwnProperty(i))if(b.test(i)){g=
m.fonts[i];break}}var k;if(g){i=0;for(b=g[s];i<b;i++){k=g[i];if(k.face["font-weight"]==c&&(k.face["font-style"]==d||!k.face["font-style"])&&k.face["font-stretch"]==e)break}}return k};t.print=function(b,c,d,e,g){var i=this.set();d=(d+"").split("");var k=0,n;m.is(e,"string")&&(e=this.getFont(e));if(e){n=(g||16)/e.face["units-per-em"];for(var h=0,o=d[s];h<o;h++){var r=h&&e.glyphs[d[h-1]]||{},w=e.glyphs[d[h]];k+=h?(r.w||e.w)+(r.k&&r.k[d[h]]||0):0;w&&w.d&&i.push(this.path(w.d).attr({fill:"#000",stroke:"none",
translation:[k,0]}))}i.scale(n,n,0,c).translate(b,(g||16)/2)}return i};m.format=function(b){var c=m.is(arguments[1],"array")?[0].concat(arguments[1]):arguments;b&&m.is(b,"string")&&c[s]-1&&(b=b.replace(/\{(\d+)\}/g,function(d,e){return c[++e]==null?"":c[e]}));return b||""};m.ninja=function(){var b=window.Raphael,c;if(q.was)window.Raphael=q.is;else try{delete window.Raphael}catch(d){window.Raphael=c}return b};m.el=z[x];return m}();var Tooltips=Class.create();Tooltips.prototype={initialize:function(f,j){f=$$(f);f.each(function(l){new Tooltip(l,j)})}};var Tooltip=Class.create();
Tooltip.prototype={initialize:function(f,j){this.el=$(f);this.initialized=false;this.setOptions(j);this.showEvent=this.show.bindAsEventListener(this);this.hideEvent=this.hide.bindAsEventListener(this);this.updateEvent=this.update.bindAsEventListener(this);Event.observe(this.el,"mouseover",this.showEvent);Event.observe(this.el,"mouseout",this.hideEvent);this.content=this.el.getAttribute("title").stripScripts().strip();if(this.options.extraText)this.content+="<br /><span style='font-size:0.7em;'>"+
this.options.extraText+"</span>";this.el.setAttribute("title","");this.el.descendant!==undefined&&this.el.descendants().each(function(l){if(Element.readAttribute(l,"alt"))l.alt=""})},setOptions:function(f){this.options={backgroundColor:"#999",borderColor:"#666",textColor:"",textShadowColor:"",maxWidth:250,align:"left",delay:250,mouseFollow:true,opacity:0.75,appearDuration:0.25,hideDuration:0.25};Object.extend(this.options,f||{})},show:function(f){this.xCord=Event.pointerX(f);this.yCord=Event.pointerY(f);
if(!this.initialized)this.timeout=window.setTimeout(this.appear.bind(this),this.options.delay)},hide:function(){if(this.initialized){this.appearingFX.cancel();this.options.mouseFollow&&Event.stopObserving(this.el,"mousemove",this.updateEvent);new Effect.Fade(this.tooltip,{duration:this.options.hideDuration,afterFinish:function(){Element.remove(this.tooltip)}.bind(this)})}this._clearTimeout(this.timeout);this.initialized=false},update:function(f){this.xCord=Event.pointerX(f);this.yCord=Event.pointerY(f);
this.setup()},appear:function(){this.tooltip=new Element("div",{className:"tooltip",style:"display: none"});var f=(new Element("div",{className:"xarrow"})).insert('<b class="a1"></b><b class="a2"></b><b class="a3"></b><b class="a4"></b><b class="a5"></b><b class="a6"></b>'),j=(new Element("div",{className:"xtop"})).insert(new Element("div",{className:"xb1",style:"background-color:"+this.options.borderColor+";"})).insert(new Element("div",{className:"xb2",style:"background-color:"+this.options.backgroundColor+
"; border-color:"+this.options.borderColor+";"})).insert(new Element("div",{className:"xb3",style:"background-color:"+this.options.backgroundColor+"; border-color:"+this.options.borderColor+";"})).insert(new Element("div",{className:"xb4",style:"background-color:"+this.options.backgroundColor+"; border-color:"+this.options.borderColor+";"})),l=(new Element("div",{className:"xbottom"})).insert(new Element("div",{className:"xb4",style:"background-color:"+this.options.backgroundColor+"; border-color:"+
this.options.borderColor+";"})).insert(new Element("div",{className:"xb3",style:"background-color:"+this.options.backgroundColor+"; border-color:"+this.options.borderColor+";"})).insert(new Element("div",{className:"xb2",style:"background-color:"+this.options.backgroundColor+"; border-color:"+this.options.borderColor+";"})).insert(new Element("div",{className:"xb1",style:"background-color:"+this.options.borderColor+";"})),q=(new Element("div",{className:"xboxcontent",style:"background-color:"+this.options.backgroundColor+
"; border-color:"+this.options.borderColor+(this.options.textColor!=""?"; color:"+this.options.textColor:"")+(this.options.textShadowColor!=""?"; text-shadow:2px 2px 0"+this.options.textShadowColor+";":"")})).update(this.content);this.tooltip.insert(f).insert(j).insert(q).insert(l);$(document.body).insert({top:this.tooltip});this.tooltip.select(".xarrow b").each(function(m){m.hasClassName("a1")?m.setStyle({backgroundColor:this.options.borderColor}):m.setStyle({backgroundColor:this.options.backgroundColor,
borderColor:this.options.borderColor})}.bind(this));Element.extend(this.tooltip);this.options.width=this.tooltip.getWidth()+1;this.tooltip.style.width=this.options.width+"px";this.setup();this.options.mouseFollow&&Event.observe(this.el,"mousemove",this.updateEvent);this.initialized=true;this.appearingFX=new Effect.Appear(this.tooltip,{duration:this.options.appearDuration,to:this.options.opacity})},setup:function(){if(this.options.width>this.options.maxWidth){this.options.width=this.options.maxWidth;
this.tooltip.style.width=this.options.width+"px"}if(this.xCord+this.options.width>=Element.getWidth(document.body)){this.options.align="right";this.xCord=this.xCord-this.options.width+20;this.tooltip.down(".xarrow").setStyle({left:this.options.width-24+"px"})}else{this.options.align="left";this.tooltip.down(".xarrow").setStyle({left:"12px"})}this.tooltip.style.left=this.xCord-7+"px";this.tooltip.style.top=this.yCord+12+"px"},_clearTimeout:function(f){clearTimeout(f);clearInterval(f);return null}};
