/*
* Raphael 1.2.1 - 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 a = /[, ]+/, z = document, ab = window, h = { was: "Raphael" in ab, is: ab.Raphael }, Y = function() { if (Y.is(arguments[0], "array")) { var e = arguments[0], E = p[ax](Y, e.splice(0, 3 + Y.is(e[0], W))), aA = E.set(); for (var S = 0, aB = e[j]; S < aB; S++) { var R = e[S] || {}; ({ circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1}[F](R.type)) && aA[c](E[R.type]().attr(R)); } return aA; } return p[ax](Y, arguments); }, ar = {}, u = ["click", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup"], aa = "", X = " ", F = "hasOwnProperty", az = "prototype", o = "setAttribute", ao = "appendChild", ax = "apply", j = "length", ae = "join", r = "split", au = "concat", c = "push", J = parseFloat, v = parseInt, ap = Math.pow, al = Math.min, d = Math.max, C = Math.round, av = /^(?=[\da-f]$)/, W = "number", af = "toString", g = { "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 }, L = { "clip-rect": "csv", cx: W, cy: W, fill: "colour", "fill-opacity": W, "font-size": W, height: W, opacity: W, path: "path", r: W, rotation: "csv", rx: W, ry: W, scale: "csv", stroke: "colour", "stroke-opacity": W, "stroke-width": W, translation: "csv", width: W, x: W, y: W }, aq = "replace"; Y.version = "1.2.1"; Y.type = (ab.SVGAngle || z.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML"); Y.svg = !(Y.vml = Y.type == "VML"); Y._id = 0; Y._oid = 0; Y.fn = {}; Y.is = function(i, e) { e = (e + aa).toLowerCase(); return ((e == "object" || e == "undefined") && typeof i == e) || (i == null && e == "null") || Object[az][af].call(i)[aq](/^\[object\s+|\]$/gi, aa).toLowerCase() == e; }; Y.setWindow = function(e) { ab = e; z = ab.document; }; var ah = function(e) { if (Y.vml) { ah = V(function(S) { var aA; try { var i = new ActiveXObject("htmlfile"); i.write("<body>"); i.close(); aA = i.body; } catch (aC) { aA = createPopup().document.body; } var R = aA.createTextRange(); aA.style.color = S; var aB = R.queryCommandValue("ForeColor"); aB = ((aB & 255) << 16) | (aB & 65280) | ((aB & 16711680) >>> 16); return "#" + ("000000" + aB[af](16)).slice(-6); }); } else { var E = z.createElement("i"); E.className = "Rapha\u00ebl colour picker"; E.style.cssText = "display:none"; z.body[ao](E); ah = V(function(i) { E.style.color = i; return z.defaultView.getComputedStyle(E, aa).getPropertyValue("color"); }); } return ah(e); }; Y.hsb2rgb = V(function(aE, aC, aI) { if (Y.is(aE, "object") && "h" in aE && "s" in aE && "b" in aE) { aI = aE.b; aC = aE.s; aE = aE.h; } var S, aA, aJ; if (aI == 0) { return { r: 0, g: 0, b: 0, hex: "#000" }; } if (aE > 1 || aC > 1 || aI > 1) { aE /= 255; aC /= 255; aI /= 255; } var aB = ~ ~(aE * 6), aF = (aE * 6) - aB, R = aI * (1 - aC), E = aI * (1 - (aC * aF)), aK = aI * (1 - (aC * (1 - aF))); S = [aI, E, R, R, aK, aI, aI][aB]; aA = [aK, aI, aI, E, R, R, aK][aB]; aJ = [R, R, aK, aI, aI, E, R][aB]; S *= 255; aA *= 255; aJ *= 255; var aG = { r: S, g: aA, b: aJ }, e = (~ ~S)[af](16), aD = (~ ~aA)[af](16), aH = (~ ~aJ)[af](16); e = e[aq](av, "0"); aD = aD[aq](av, "0"); aH = aH[aq](av, "0"); aG.hex = "#" + e + aD + aH; return aG; }, Y); Y.rgb2hsb = V(function(e, i, aC) { if (Y.is(e, "object") && "r" in e && "g" in e && "b" in e) { aC = e.b; i = e.g; e = e.r; } if (Y.is(e, "string")) { var aE = Y.getRGB(e); e = aE.r; i = aE.g; aC = aE.b; } if (e > 1 || i > 1 || aC > 1) { e /= 255; i /= 255; aC /= 255; } var aB = d(e, i, aC), E = al(e, i, aC), S, R, aA = aB; if (E == aB) { return { h: 0, s: 0, b: aB }; } else { var aD = (aB - E); R = aD / aB; if (e == aB) { S = (i - aC) / aD; } else { if (i == aB) { S = 2 + ((aC - e) / aD); } else { S = 4 + ((e - i) / aD); } } S /= 6; S < 0 && S++; S > 1 && S--; } return { h: S, s: R, b: aA }; }, Y); Y._path2string = function() { var R = aa, aB; for (var E = 0, S = this[j]; E < S; E++) { for (var e = 0, aA = this[E][j]; e < aA; e++) { R += this[E][e]; e && e != aA - 1 && (R += ","); } E != S - 1 && (R += X); } return R[aq](/,(?=-)/g, aa); }; function V(R, i, e) { function E() { var S = Array[az].splice.call(arguments, 0, arguments[j]), aB = S[ae]("\u25ba"), aA = E.cache = E.cache || {}, aC = E.count = E.count || []; if (aA[F](aB)) { return e ? e(aA[aB]) : aA[aB]; } aC[j] >= 1000 && delete aA[aC.shift()]; aC[c](aB); aA[aB] = R[ax](i, S); return e ? e(aA[aB]) : aA[aB]; } return E; } Y.getRGB = V(function(e) { if (!e || !!((e + aa).indexOf("-") + 1)) { return { r: -1, g: -1, b: -1, hex: "none", error: 1 }; } e = e + aa; if (e == "none") { return { r: -1, g: -1, b: -1, hex: "none" }; } !(({ hs: 1, rg: 1}[F](e.substring(0, 2)))) && (e = ah(e)); var aA, E, R, aD, aB = e.match(/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgb\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|rgb\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i); if (aB) { if (aB[2]) { aD = v(aB[2].substring(5), 16); R = v(aB[2].substring(3, 5), 16); E = v(aB[2].substring(1, 3), 16); } if (aB[3]) { aD = v(aB[3].substring(3) + aB[3].substring(3), 16); R = v(aB[3].substring(2, 3) + aB[3].substring(2, 3), 16); E = v(aB[3].substring(1, 2) + aB[3].substring(1, 2), 16); } if (aB[4]) { aB = aB[4][r](/\s*,\s*/); E = J(aB[0]); R = J(aB[1]); aD = J(aB[2]); } if (aB[5]) { aB = aB[5][r](/\s*,\s*/); E = J(aB[0]) * 2.55; R = J(aB[1]) * 2.55; aD = J(aB[2]) * 2.55; } if (aB[6]) { aB = aB[6][r](/\s*,\s*/); E = J(aB[0]); R = J(aB[1]); aD = J(aB[2]); return Y.hsb2rgb(E, R, aD); } if (aB[7]) { aB = aB[7][r](/\s*,\s*/); E = J(aB[0]) * 2.55; R = J(aB[1]) * 2.55; aD = J(aB[2]) * 2.55; return Y.hsb2rgb(E, R, aD); } aB = { r: E, g: R, b: aD }; var i = (~ ~E)[af](16), S = (~ ~R)[af](16), aC = (~ ~aD)[af](16); i = i[aq](av, "0"); S = S[aq](av, "0"); aC = aC[aq](av, "0"); aB.hex = "#" + i + S + aC; return aB; } return { r: -1, g: -1, b: -1, hex: "none", error: 1 }; }, Y); Y.getColor = function(i) { var E = this.getColor.start = this.getColor.start || { h: 0, s: 1, b: i || 0.75 }, e = this.hsb2rgb(E.h, E.s, E.b); E.h += 0.075; if (E.h > 1) { E.h = 0; E.s -= 0.2; E.s <= 0 && (this.getColor.start = { h: 0, s: 1, b: E.b }); } return e.hex; }; Y.getColor.reset = function() { delete this.start; }; Y.parsePathString = V(function(e) { if (!e) { return null; } var E = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, i = []; if (Y.is(e, "array") && Y.is(e[0], "array")) { i = ac(e); } if (!i[j]) { (e + aa)[aq](/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig, function(S, R, aC) { var aB = [], aA = R.toLowerCase(); aC[aq](/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig, function(aE, aD) { aD && aB[c](+aD); }); while (aB[j] >= E[aA]) { i[c]([R][au](aB.splice(0, E[aA]))); if (!E[aA]) { break; } } }); } i[af] = Y._path2string; return i; }); var H = V(function(aF) { if (!aF) { return { x: 0, y: 0, width: 0, height: 0 }; } aF = w(aF); var aC = 0, aB = 0, R = [], E = []; for (var S = 0, aE = aF[j]; S < aE; S++) { if (aF[S][0] == "M") { aC = aF[S][1]; aB = aF[S][2]; R[c](aC); E[c](aB); } else { var aA = ag(aC, aB, aF[S][1], aF[S][2], aF[S][3], aF[S][4], aF[S][5], aF[S][6]); R = R[au](aA.min.x, aA.max.x); E = E[au](aA.min.y, aA.max.y); } } var e = al[ax](0, R), aD = al[ax](0, E); return { x: e, y: aD, width: d[ax](0, R) - e, height: d[ax](0, E) - aD }; }), ac = function(aB) { var R = []; if (!Y.is(aB, "array") || !Y.is(aB && aB[0], "array")) { aB = Y.parsePathString(aB); } for (var E = 0, S = aB[j]; E < S; E++) { R[E] = []; for (var e = 0, aA = aB[E][j]; e < aA; e++) { R[E][e] = aB[E][e]; } } R[af] = Y._path2string; return R; }, O = V(function(S) { if (!Y.is(S, "array") || !Y.is(S && S[0], "array")) { S = Y.parsePathString(S); } var aF = [], aH = 0, aG = 0, aK = 0, aJ = 0, R = 0; if (S[0][0] == "M") { aH = S[0][1]; aG = S[0][2]; aK = aH; aJ = aG; R++; aF[c](["M", aH, aG]); } for (var aC = R, aL = S[j]; aC < aL; aC++) { var e = aF[aC] = [], aI = S[aC]; if (aI[0] != aI[0].toLowerCase()) { e[0] = aI[0].toLowerCase(); switch (e[0]) { case "a": e[1] = aI[1]; e[2] = aI[2]; e[3] = aI[3]; e[4] = aI[4]; e[5] = aI[5]; e[6] = +(aI[6] - aH).toFixed(3); e[7] = +(aI[7] - aG).toFixed(3); break; case "v": e[1] = +(aI[1] - aG).toFixed(3); break; case "m": aK = aI[1]; aJ = aI[2]; default: for (var aB = 1, aD = aI[j]; aB < aD; aB++) { e[aB] = +(aI[aB] - ((aB % 2) ? aH : aG)).toFixed(3); } } } else { e = aF[aC] = []; if (aI[0] == "m") { aK = aI[1] + aH; aJ = aI[2] + aG; } for (var aA = 0, E = aI[j]; aA < E; aA++) { aF[aC][aA] = aI[aA]; } } var aE = aF[aC][j]; switch (aF[aC][0]) { case "z": aH = aK; aG = aJ; break; case "h": aH += +aF[aC][aE - 1]; break; case "v": aG += +aF[aC][aE - 1]; break; default: aH += +aF[aC][aE - 2]; aG += +aF[aC][aE - 1]; } } aF[af] = Y._path2string; return aF; }, 0, ac), n = V(function(S) { if (!Y.is(S, "array") || !Y.is(S && S[0], "array")) { S = Y.parsePathString(S); } var aE = [], aG = 0, aF = 0, aJ = 0, aI = 0, R = 0; if (S[0][0] == "M") { aG = +S[0][1]; aF = +S[0][2]; aJ = aG; aI = aF; R++; aE[0] = ["M", aG, aF]; } for (var aC = R, aK = S[j]; aC < aK; aC++) { var e = aE[aC] = [], aH = S[aC]; if (aH[0] != (aH[0] + aa).toUpperCase()) { e[0] = (aH[0] + aa).toUpperCase(); switch (e[0]) { case "A": e[1] = aH[1]; e[2] = aH[2]; e[3] = aH[3]; e[4] = aH[4]; e[5] = aH[5]; e[6] = +(aH[6] + aG); e[7] = +(aH[7] + aF); break; case "V": e[1] = +aH[1] + aF; break; case "H": e[1] = +aH[1] + aG; break; case "M": aJ = +aH[1] + aG; aI = +aH[2] + aF; default: for (var aB = 1, aD = aH[j]; aB < aD; aB++) { e[aB] = +aH[aB] + ((aB % 2) ? aG : aF); } } } else { for (var aA = 0, E = aH[j]; aA < E; aA++) { aE[aC][aA] = aH[aA]; } } switch (e[0]) { case "Z": aG = aJ; aF = aI; break; case "H": aG = e[1]; break; case "V": aF = e[1]; break; default: aG = aE[aC][aE[aC][j] - 2]; aF = aE[aC][aE[aC][j] - 1]; } } aE[af] = Y._path2string; return aE; }, null, ac), ay = function(i, R, e, E) { return [i, R, e, E, e, E]; }, an = function(i, R, aB, S, e, E) { var aA = 1 / 3, aC = 2 / 3; return [aA * i + aC * aB, aA * R + aC * S, aA * e + aC * aB, aA * E + aC * S, e, E]; }, y = function(aK, be, aT, aR, aL, aF, aA, aJ, bd, aM) { var S = Math.PI, aQ = S * 120 / 180, e = S / 180 * (+aL || 0), aX = [], aU, ba = V(function(bf, bi, i) { var bh = bf * Math.cos(i) - bi * Math.sin(i), bg = bf * Math.sin(i) + bi * Math.cos(i); return { x: bh, y: bg }; }); if (!aM) { aU = ba(aK, be, -e); aK = aU.x; be = aU.y; aU = ba(aJ, bd, -e); aJ = aU.x; bd = aU.y; var E = Math.cos(S / 180 * aL), aH = Math.sin(S / 180 * aL), aZ = (aK - aJ) / 2, aY = (be - bd) / 2; aT = d(aT, Math.abs(aZ)); aR = d(aR, Math.abs(aY)); var R = aT * aT, a2 = aR * aR, a4 = (aF == aA ? -1 : 1) * Math.sqrt(Math.abs((R * a2 - R * aY * aY - a2 * aZ * aZ) / (R * aY * aY + a2 * aZ * aZ))), aO = a4 * aT * aY / aR + (aK + aJ) / 2, aN = a4 * -aR * aZ / aT + (be + bd) / 2, aE = Math.asin((be - aN) / aR), aD = Math.asin((bd - aN) / aR); aE = aK < aO ? S - aE : aE; aD = aJ < aO ? S - aD : aD; aE < 0 && (aE = S * 2 + aE); aD < 0 && (aD = S * 2 + aD); if (aA && aE > aD) { aE = aE - S * 2; } if (!aA && aD > aE) { aD = aD - S * 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 = bd; aD = aE + aQ * (aA && aD > aE ? 1 : -1); aJ = aO + aT * Math.cos(aD); bd = aN + aR * Math.sin(aD); aX = y(aJ, bd, aT, aR, aL, 0, aA, aS, aG, [aD, aP, aO, aN]); } aI = aD - aE; var aC = Math.cos(aE), bc = Math.sin(aE), aB = Math.cos(aD), bb = Math.sin(aD), a0 = Math.tan(aI / 4), a3 = 4 / 3 * aT * a0, a1 = 4 / 3 * aR * a0, a9 = [aK, be], a8 = [aK + a3 * bc, be - a1 * aC], a7 = [aJ + a3 * bb, bd - a1 * aB], a5 = [aJ, bd]; a8[0] = 2 * a9[0] - a8[0]; a8[1] = 2 * a9[1] - a8[1]; if (aM) { return [a8, a7, a5][au](aX); } else { aX = [a8, a7, a5][au](aX)[ae](",")[r](","); var aV = []; for (var a6 = 0, aW = aX[j]; a6 < aW; a6++) { aV[a6] = a6 % 2 ? ba(aX[a6 - 1], aX[a6], e).y : ba(aX[a6], aX[a6 + 1], e).x; } return aV; } }, A = V(function(i, e, aN, aL, aA, S, aC, aB, aH) { var aF = ap(1 - aH, 3) * i + ap(1 - aH, 2) * 3 * aH * aN + (1 - aH) * 3 * aH * aH * aA + ap(aH, 3) * aC, aD = ap(1 - aH, 3) * e + ap(1 - aH, 2) * 3 * aH * aL + (1 - aH) * 3 * aH * aH * S + ap(aH, 3) * aB, aJ = i + 2 * aH * (aN - i) + aH * aH * (aA - 2 * aN + i), aI = e + 2 * aH * (aL - e) + aH * aH * (S - 2 * aL + e), aM = aN + 2 * aH * (aA - aN) + aH * aH * (aC - 2 * aA + aN), aK = aL + 2 * aH * (S - aL) + aH * aH * (aB - 2 * S + aL), aG = (1 - aH) * i + aH * aN, aE = (1 - aH) * e + aH * aL, R = (1 - aH) * aA + aH * aC, E = (1 - aH) * S + aH * aB; return { x: aF, y: aD, m: { x: aJ, y: aI }, n: { x: aM, y: aK }, start: { x: aG, y: aE }, end: { x: R, y: E} }; }), ag = V(function(i, e, R, E, aL, aK, aH, aE) { var aJ = (aL - 2 * R + i) - (aH - 2 * aL + R), aG = 2 * (R - i) - 2 * (aL - R), aD = i - R, aB = (-aG + Math.sqrt(aG * aG - 4 * aJ * aD)) / 2 / aJ, S = (-aG - Math.sqrt(aG * aG - 4 * aJ * aD)) / 2 / aJ, aF = [e, aE], aI = [i, aH], aC = A(i, e, R, E, aL, aK, aH, aE, aB > 0 && aB < 1 ? aB : 0), aA = A(i, e, R, E, aL, aK, aH, aE, S > 0 && S < 1 ? S : 0); aI = aI[au](aC.x, aA.x); aF = aF[au](aC.y, aA.y); aJ = (aK - 2 * E + e) - (aE - 2 * aK + E); aG = 2 * (E - e) - 2 * (aK - E); aD = e - E; aB = (-aG + Math.sqrt(aG * aG - 4 * aJ * aD)) / 2 / aJ; S = (-aG - Math.sqrt(aG * aG - 4 * aJ * aD)) / 2 / aJ; aC = A(i, e, R, E, aL, aK, aH, aE, aB > 0 && aB < 1 ? aB : 0); aA = A(i, e, R, E, aL, aK, aH, aE, S > 0 && S < 1 ? S : 0); aI = aI[au](aC.x, aA.x); aF = aF[au](aC.y, aA.y); return { min: { x: al[ax](0, aI), y: al[ax](0, aF) }, max: { x: d[ax](0, aI), y: d[ax](0, aF)} }; }), w = V(function(aK, aF) { var S = n(aK), aG = aF && n(aF), aH = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, e = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, aB = function(aL, aM) { var i, aN; if (!aL) { return ["C", aM.x, aM.y, aM.x, aM.y, aM.x, aM.y]; } !(aL[0] in { T: 1, Q: 1 }) && (aM.qx = aM.qy = null); switch (aL[0]) { case "M": aM.X = aL[1]; aM.Y = aL[2]; break; case "A": aL = ["C"][au](y[ax](0, [aM.x, aM.y][au](aL.slice(1)))); break; case "S": i = aM.x + (aM.x - (aM.bx || aM.x)); aN = aM.y + (aM.y - (aM.by || aM.y)); aL = ["C", i, aN][au](aL.slice(1)); break; case "T": aM.qx = aM.x + (aM.x - (aM.qx || aM.x)); aM.qy = aM.y + (aM.y - (aM.qy || aM.y)); aL = ["C"][au](an(aM.x, aM.y, aM.qx, aM.qy, aL[1], aL[2])); break; case "Q": aM.qx = aL[1]; aM.qy = aL[2]; aL = ["C"][au](an(aM.x, aM.y, aL[1], aL[2], aL[3], aL[4])); break; case "L": aL = ["C"][au](ay(aM.x, aM.y, aL[1], aL[2])); break; case "H": aL = ["C"][au](ay(aM.x, aM.y, aL[1], aM.y)); break; case "V": aL = ["C"][au](ay(aM.x, aM.y, aM.x, aL[1])); break; case "Z": aL = ["C"][au](ay(aM.x, aM.y, aM.X, aM.Y)); break; } return aL; }, E = function(aL, aM) { if (aL[aM][j] > 7) { aL[aM].shift(); var aN = aL[aM]; while (aN[j]) { aL.splice(aM++, 0, ["C"][au](aN.splice(0, 6))); } aL.splice(aM, 1); aI = d(S[j], aG && aG[j] || 0); } }, R = function(aP, aO, aM, aL, aN) { if (aP && aO && aP[aN][0] == "M" && aO[aN][0] != "M") { aO.splice(aN, 0, ["M", aL.x, aL.y]); aM.bx = 0; aM.by = 0; aM.x = aP[aN][1]; aM.y = aP[aN][2]; aI = d(S[j], aG && aG[j] || 0); } }; for (var aD = 0, aI = d(S[j], aG && aG[j] || 0); aD < aI; aD++) { S[aD] = aB(S[aD], aH); E(S, aD); aG && (aG[aD] = aB(aG[aD], e)); aG && E(aG, aD); R(S, aG, aH, e, aD); R(aG, S, e, aH, aD); var aC = S[aD], aJ = aG && aG[aD], aA = aC[j], aE = aG && aJ[j]; aH.x = aC[aA - 2]; aH.y = aC[aA - 1]; aH.bx = J(aC[aA - 4]) || aH.x; aH.by = J(aC[aA - 3]) || aH.y; e.bx = aG && (J(aJ[aE - 4]) || e.x); e.by = aG && (J(aJ[aE - 3]) || e.y); e.x = aG && aJ[aE - 2]; e.y = aG && aJ[aE - 1]; } return aG ? [S, aG] : S; }, null, ac), l = V(function(aE) { var aD = []; for (var aA = 0, aF = aE[j]; aA < aF; aA++) { var e = {}, aC = aE[aA].match(/^([^:]*):?([\d\.]*)/); e.color = Y.getRGB(aC[1]); if (e.color.error) { return null; } e.color = e.color.hex; aC[2] && (e.offset = aC[2] + "%"); aD[c](e); } for (var aA = 1, aF = aD[j] - 1; aA < aF; aA++) { if (!aD[aA].offset) { var E = J(aD[aA - 1].offset || 0), R = 0; for (var S = aA + 1; S < aF; S++) { if (aD[S].offset) { R = aD[S].offset; break; } } if (!R) { R = 100; S = aF; } R = J(R); var aB = (R - E) / (S - aA + 1); for (; aA < S; aA++) { E += aB; aD[aA].offset = E + "%"; } } } return aD; }), Z = function() { var E, i, S, R, e; if (Y.is(arguments[0], "string") || Y.is(arguments[0], "object")) { if (Y.is(arguments[0], "string")) { E = z.getElementById(arguments[0]); } else { E = arguments[0]; } if (E.tagName) { if (arguments[1] == null) { return { container: E, width: E.style.pixelWidth || E.offsetWidth, height: E.style.pixelHeight || E.offsetHeight }; } else { return { container: E, width: arguments[1], height: arguments[2] }; } } } else { if (Y.is(arguments[0], W) && arguments[j] > 3) { return { container: 1, x: arguments[0], y: arguments[1], width: arguments[2], height: arguments[3] }; } } }, aj = function(e, E) { var i = this; for (var R in E) { if (E[F](R) && !(R in e)) { switch (typeof E[R]) { case "function": (function(S) { e[R] = e === i ? S : function() { return S[ax](i, arguments); }; })(E[R]); break; case "object": e[R] = e[R] || {}; aj.call(this, e[R], E[R]); break; default: e[R] = E[R]; break; } } } }; if (Y.svg) { ar.svgns = "http://www.w3.org/2000/svg"; ar.xlink = "http://www.w3.org/1999/xlink"; var C = function(e) { return +e + (~ ~e === e) * 0.5; }; var I = function(aA) { for (var E = 0, R = aA[j]; E < R; E++) { if (aA[E][0].toLowerCase() != "a") { for (var e = 1, S = aA[E][j]; e < S; e++) { aA[E][e] = C(aA[E][e]); } } else { aA[E][6] = C(aA[E][6]); aA[E][7] = C(aA[E][7]); } } return aA; }; var am = function(E, e) { if (e) { for (var i in e) { if (e[F](i)) { E[o](i, e[i]); } } } else { return z.createElementNS(ar.svgns, E); } }; Y[af] = function() { return "Your browser supports SVG.\nYou are running Rapha\u00ebl " + this.version; }; var m = function(e, R) { var i = am("path"); R.canvas && R.canvas[ao](i); var E = new ad(i, R); E.type = "path"; M(E, { fill: "none", stroke: "#000", path: e }); return E; }; var b = function(R, aI, e) { var aF = "linear", aC = 0.5, aA = 0.5, aK = R.style; aI = (aI + aa)[aq](/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, function(aL, i, aM) { aF = "radial"; if (i && aM) { aC = J(i); aA = J(aM); if (ap(aC - 0.5, 2) + ap(aA - 0.5, 2) > 0.25) { aA = Math.sqrt(0.25 - ap(aC - 0.5, 2)) + 0.5; } } return aa; }); aI = aI[r](/\s*\-\s*/); if (aF == "linear") { var aB = aI.shift(); aB = -J(aB); if (isNaN(aB)) { return null; } var S = [0, 0, Math.cos(aB * Math.PI / 180), Math.sin(aB * Math.PI / 180)], aH = 1 / (d(Math.abs(S[2]), Math.abs(S[3])) || 1); S[2] *= aH; S[3] *= aH; if (S[2] < 0) { S[0] = -S[2]; S[2] = 0; } if (S[3] < 0) { S[1] = -S[3]; S[3] = 0; } } var aE = l(aI); if (!aE) { return null; } var E = am(aF + "Gradient"); E.id = "r" + (Y._id++)[af](36); aF == "radial" ? am(E, { fx: aC, fy: aA }) : am(E, { x1: S[0], y1: S[1], x2: S[2], y2: S[3] }); e.defs[ao](E); for (var aD = 0, aJ = aE[j]; aD < aJ; aD++) { var aG = am("stop"); am(aG, { offset: aE[aD].offset ? aE[aD].offset : !aD ? "0%" : "100%", "stop-color": aE[aD].color || "#fff" }); E[ao](aG); } am(R, { fill: "url(#" + E.id + ")", opacity: 1, "fill-opacity": 1 }); aK.fill = aa; aK.opacity = 1; aK.fillOpacity = 1; return 1; }; var B = function(i) { var e = i.getBBox(); am(i.pattern, { patternTransform: Y.format("translate({0},{1})", e.x, e.y) }); }; var M = function(aG, aP) { var aJ = { "": [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] }, aL = aG.node, aH = aG.attrs, aD = aG.rotate(), aA = function(aW, aV) { aV = aJ[(aV + aa).toLowerCase()]; if (aV) { var aT = aW.attrs["stroke-width"] || "1", aR = { round: aT, square: aT, butt: 0}[aW.attrs["stroke-linecap"] || aP["stroke-linecap"]] || 0, aU = []; var aS = aV[j]; while (aS--) { aU[aS] = aV[aS] * aT + ((aS % 2) ? 1 : -1) * aR; } am(aL, { "stroke-dasharray": aU[ae](",") }); } }; J(aD) && aG.rotate(0, true); for (var aK in aP) { if (aP[F](aK)) { if (!(aK in g)) { continue; } var aI = aP[aK]; aH[aK] = aI; switch (aK) { case "href": case "title": case "target": var aN = aL.parentNode; if (aN.tagName.toLowerCase() != "a") { var R = am("a"); aN.insertBefore(R, aL); R[ao](aL); aN = R; } aN.setAttributeNS(aG.paper.xlink, aK, aI); break; case "clip-rect": var i = (aI + aa)[r](a); if (i[j] == 4) { aG.clip && aG.clip.parentNode.parentNode.removeChild(aG.clip.parentNode); var E = am("clipPath"), aM = am("rect"); E.id = "r" + (Y._id++)[af](36); am(aM, { x: i[0], y: i[1], width: i[2], height: i[3] }); E[ao](aM); aG.paper.defs[ao](E); am(aL, { "clip-path": "url(#" + E.id + ")" }); aG.clip = aM; } if (!aI) { var aO = z.getElementById(aL.getAttribute("clip-path")[aq](/(^url\(#|\)$)/g, aa)); aO && aO.parentNode.removeChild(aO); am(aL, { "clip-path": aa }); delete aG.clip; } break; case "path": if (aI && aG.type == "path") { aH.path = I(n(aI)); am(aL, { d: aH.path }); } break; case "width": aL[o](aK, aI); if (aH.fx) { aK = "x"; aI = aH.x; } else { break; } case "x": if (aH.fx) { aI = -aH.x - (aH.width || 0); } case "rx": if (aK == "rx" && aG.type == "rect") { break; } case "cx": aL[o](aK, C(aI)); aG.pattern && B(aG); break; case "height": aL[o](aK, aI); if (aH.fy) { aK = "y"; aI = aH.y; } else { break; } case "y": if (aH.fy) { aI = -aH.y - (aH.height || 0); } case "ry": if (aK == "ry" && aG.type == "rect") { break; } case "cy": aL[o](aK, C(aI)); aG.pattern && B(aG); break; case "r": if (aG.type == "rect") { am(aL, { rx: aI, ry: aI }); } else { aL[o](aK, aI); } break; case "src": if (aG.type == "image") { aL.setAttributeNS(aG.paper.xlink, "href", aI); } break; case "stroke-width": aL.style.strokeWidth = aI; aL[o](aK, aI); if (aH["stroke-dasharray"]) { aA(aG, aH["stroke-dasharray"]); } break; case "stroke-dasharray": aA(aG, aI); break; case "rotation": aD = aI; aG.rotate(aI, true); break; case "translation": var aB = (aI + aa)[r](a); aG.translate((+aB[0] + 1 || 2) - 1, (+aB[1] + 1 || 2) - 1); break; case "scale": var aB = (aI + aa)[r](a); aG.scale(+aB[0] || 1, +aB[1] || +aB[0] || 1, +aB[2] || null, +aB[3] || null); break; case "fill": var S = (aI + aa).match(/^url\(['"]?([^\)]+)['"]?\)$/i); if (S) { var E = am("pattern"), aF = am("image"); E.id = "r" + (Y._id++)[af](36); am(E, { x: 0, y: 0, patternUnits: "userSpaceOnUse" }); am(aF, { x: 0, y: 0 }); aF.setAttributeNS(aG.paper.xlink, "href", S[1]); E[ao](aF); var aQ = z.createElement("img"); aQ.style.cssText = "position:absolute;left:-9999em;top-9999em"; aQ.onload = function() { am(E, { width: this.offsetWidth, height: this.offsetHeight }); am(aF, { width: this.offsetWidth, height: this.offsetHeight }); z.body.removeChild(this); ar.safari(); }; z.body[ao](aQ); aQ.src = S[1]; aG.paper.defs[ao](E); aL.style.fill = "url(#" + E.id + ")"; am(aL, { fill: "url(#" + E.id + ")" }); aG.pattern = E; aG.pattern && B(aG); break; } if (!Y.getRGB(aI).error) { delete aP.gradient; delete aH.gradient; if (!Y.is(aH.opacity, "undefined") && Y.is(aP.opacity, "undefined")) { aL.style.opacity = aH.opacity; am(aL, { opacity: aH.opacity }); } if (!Y.is(aH["fill-opacity"], "undefined") && Y.is(aP["fill-opacity"], "undefined")) { aL.style.fillOpacity = aH["fill-opacity"]; am(aL, { "fill-opacity": aH["fill-opacity"] }); } } else { if ((aG.type in { circle: 1, ellipse: 1} || (aI + aa).charAt(0) != "r") && b(aL, aI, aG.paper)) { aH.gradient = aI; aH.fill = "none"; break; } } case "stroke": aL.style[aK] = Y.getRGB(aI).hex; aL[o](aK, Y.getRGB(aI).hex); break; case "gradient": (aG.type in { circle: 1, ellipse: 1} || (aI + aa).charAt(0) != "r") && b(aL, aI, aG.paper); break; case "opacity": case "fill-opacity": if (aH.gradient) { var e = z.getElementById(aL.getAttribute("fill")[aq](/^url\(#|\)$/g, aa)); if (e) { var aC = e.getElementsByTagName("stop"); aC[aC[j] - 1][o]("stop-opacity", aI); } break; } default: aK == "font-size" && (aI = v(aI, 10) + "px"); var aE = aK[aq](/(\-.)/g, function(aR) { return aR.substring(1).toUpperCase(); }); aL.style[aE] = aI; aL[o](aK, aI); break; } } } t(aG, aP); J(aD) && aG.rotate(aD, true); }; var f = 1.2; var t = function(e, S) { if (e.type != "text" || !("text" in S || "font" in S || "font-size" in S || "x" in S || "y" in S)) { return; } var aE = e.attrs, E = e.node, aG = E.firstChild ? v(z.defaultView.getComputedStyle(E.firstChild, aa).getPropertyValue("font-size"), 10) : 10; if ("text" in S) { while (E.firstChild) { E.removeChild(E.firstChild); } var R = (S.text + aa)[r]("\n"); for (var aA = 0, aF = R[j]; aA < aF; aA++) { var aC = am("tspan"); aA && am(aC, { dy: aG * f, x: aE.x }); aC[ao](z.createTextNode(R[aA])); E[ao](aC); } } else { var R = E.getElementsByTagName("tspan"); for (var aA = 0, aF = R[j]; aA < aF; aA++) { aA && am(R[aA], { dy: aG * f, x: aE.x }); } } am(E, { y: aE.y }); var aB = e.getBBox(), aD = aE.y - (aB.y + aB.height / 2); aD && isFinite(aD) && am(E, { y: aE.y + aD }); }; var ad = function(i, e) { var R = 0, E = 0; this[0] = i; this.id = Y._oid++; this.node = i; i.raphael = this; this.paper = e; this.attrs = this.attrs || {}; this.transformations = []; this._ = { tx: 0, ty: 0, rt: { deg: 0, cx: 0, cy: 0 }, sx: 1, sy: 1 }; }; ad[az].rotate = function(i, e, R) { if (this.removed) { return this; } if (i == null) { if (this._.rt.cx) { return [this._.rt.deg, this._.rt.cx, this._.rt.cy][ae](X); } return this._.rt.deg; } var E = this.getBBox(); i = (i + aa)[r](a); if (i[j] - 1) { e = J(i[1]); R = J(i[2]); } i = J(i[0]); if (e != null) { this._.rt.deg = i; } else { this._.rt.deg += i; } (R == null) && (e = null); this._.rt.cx = e; this._.rt.cy = R; e = e == null ? E.x + E.width / 2 : e; R = R == null ? E.y + E.height / 2 : R; if (this._.rt.deg) { this.transformations[0] = Y.format("rotate({0} {1} {2})", this._.rt.deg, e, R); this.clip && am(this.clip, { transform: Y.format("rotate({0} {1} {2})", -this._.rt.deg, e, R) }); } else { this.transformations[0] = aa; this.clip && am(this.clip, { transform: aa }); } am(this.node, { transform: this.transformations[ae](X) }); return this; }; ad[az].hide = function() { !this.removed && (this.node.style.display = "none"); return this; }; ad[az].show = function() { !this.removed && (this.node.style.display = ""); return this; }; ad[az].remove = function() { this.node.parentNode.removeChild(this.node); for (var e in this) { delete this[e]; } this.removed = true; }; ad[az].getBBox = function() { if (this.removed) { return this; } if (this.type == "path") { return H(this.attrs.path); } if (this.node.style.display == "none") { this.show(); var R = true; } var aC = {}; try { aC = this.node.getBBox(); } catch (aA) { } finally { aC = aC || {}; } if (this.type == "text") { aC = { x: aC.x, y: Infinity, width: 0, height: 0 }; for (var E = 0, S = this.node.getNumberOfChars(); E < S; E++) { var aB = this.node.getExtentOfChar(E); (aB.y < aC.y) && (aC.y = aB.y); (aB.y + aB.height - aC.y > aC.height) && (aC.height = aB.y + aB.height - aC.y); (aB.x + aB.width - aC.x > aC.width) && (aC.width = aB.x + aB.width - aC.x); } } R && this.hide(); return aC; }; ad[az].attr = function() { if (this.removed) { return this; } if (arguments[j] == 1 && Y.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[j] == 1 && Y.is(arguments[0], "array")) { var e = {}; for (var i in arguments[0]) { if (arguments[0][F](i)) { e[arguments[0][i]] = this.attrs[arguments[0][i]]; } } return e; } if (arguments[j] == 2) { var E = {}; E[arguments[0]] = arguments[1]; M(this, E); } else { if (arguments[j] == 1 && Y.is(arguments[0], "object")) { M(this, arguments[0]); } } return this; }; ad[az].toFront = function() { !this.removed && this.node.parentNode[ao](this.node); return this; }; ad[az].toBack = function() { if (this.removed) { return this; } if (this.node.parentNode.firstChild != this.node) { this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild); } return this; }; ad[az].insertAfter = function(e) { if (this.removed) { return this; } if (e.node.nextSibling) { e.node.parentNode.insertBefore(this.node, e.node.nextSibling); } else { e.node.parentNode[ao](this.node); } return this; }; ad[az].insertBefore = function(e) { if (this.removed) { return this; } var i = e.node; i.parentNode.insertBefore(this.node, i); return this; }; var D = function(i, e, aA, S) { e = C(e); aA = C(aA); var R = am("circle"); i.canvas && i.canvas[ao](R); var E = new ad(R, i); E.attrs = { cx: e, cy: aA, r: S, fill: "none", stroke: "#000" }; E.type = "circle"; am(R, E.attrs); return E; }; var ai = function(E, e, aC, i, aA, aB) { e = C(e); aC = C(aC); var S = am("rect"); E.canvas && E.canvas[ao](S); var R = new ad(S, E); R.attrs = { x: e, y: aC, width: i, height: aA, r: aB || 0, rx: aB || 0, ry: aB || 0, fill: "none", stroke: "#000" }; R.type = "rect"; am(S, R.attrs); return R; }; var U = function(i, e, aB, aA, S) { e = C(e); aB = C(aB); var R = am("ellipse"); i.canvas && i.canvas[ao](R); var E = new ad(R, i); E.attrs = { cx: e, cy: aB, rx: aA, ry: S, fill: "none", stroke: "#000" }; E.type = "ellipse"; am(R, E.attrs); return E; }; var k = function(E, aB, e, aC, i, aA) { var S = am("image"); am(S, { x: e, y: aC, width: i, height: aA, preserveAspectRatio: "none" }); S.setAttributeNS(E.xlink, "href", aB); E.canvas && E.canvas[ao](S); var R = new ad(S, E); R.attrs = { x: e, y: aC, width: i, height: aA, src: aB }; R.type = "image"; return R; }; var K = function(i, e, aA, S) { var R = am("text"); am(R, { x: e, y: aA, "text-anchor": "middle" }); i.canvas && i.canvas[ao](R); var E = new ad(R, i); E.attrs = { x: e, y: aA, "text-anchor": "middle", text: S, font: g.font, stroke: "none", fill: "#000" }; E.type = "text"; M(E, E.attrs); return E; }; var aw = function(i, e) { this.width = i || this.width; this.height = e || this.height; this.canvas[o]("width", this.width); this.canvas[o]("height", this.height); return this; }; var p = function() { var R = Z[ax](null, arguments), E = R && R.container, i = R.x, aC = R.y, S = R.width, e = R.height; if (!E) { throw new Error("SVG container not found."); } ar.canvas = am("svg"); var aB = ar.canvas; ar.width = S || 512; ar.height = e || 342; aB[o]("width", ar.width); aB[o]("height", ar.height); if (E == 1) { aB.style.cssText = "position:absolute;left:" + i + "px;top:" + aC + "px"; z.body[ao](aB); } else { if (E.firstChild) { E.insertBefore(aB, E.firstChild); } else { E[ao](aB); } } E = { canvas: aB }; for (var aA in ar) { if (ar[F](aA)) { E[aA] = ar[aA]; } } aj.call(E, E, Y.fn); E.clear(); E.raphael = Y; return E; }; ar.clear = function() { var e = this.canvas; while (e.firstChild) { e.removeChild(e.firstChild); } (this.desc = am("desc"))[ao](z.createTextNode("Created with Rapha\u00ebl")); e[ao](this.desc); e[ao](this.defs = am("defs")); }; ar.remove = function() { this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas); for (var e in this) { delete this[e]; } }; } if (Y.vml) { var ak = function(aJ) { var aG = /[ahqtv]/ig, aB = n; (aJ + aa).match(aG) && (aB = w); aG = /[clmz]/g; if (aB == n && !(aJ + aa).match(aG)) { var E = { M: "m", L: "l", C: "c", Z: "x", m: "t", l: "r", c: "v", z: "x" }, S = /([clmz]),?([^clmz]*)/gi, aA = /-?[^,\s-]+/g; var aF = (aJ + aa)[aq](S, function(aK, aM, i) { var aL = []; i[aq](aA, function(aN) { aL[c](C(aN)); }); return E[aM] + aL; }); return aF; } var aH = aB(aJ), R, aF = [], e; for (var aD = 0, aI = aH[j]; aD < aI; aD++) { R = aH[aD]; e = (aH[aD][0] + aa).toLowerCase(); e == "z" && (e = "x"); for (var aC = 1, aE = R[j]; aC < aE; aC++) { e += C(R[aC]) + (aC != aE - 1 ? "," : aa); } aF[c](e); } return aF[ae](X); }; Y[af] = function() { return "Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\u00ebl " + this.version; }; var m = function(e, aA) { var R = T("group"); R.style.cssText = "position:absolute;left:0;top:0;width:" + aA.width + "px;height:" + aA.height + "px"; R.coordsize = aA.coordsize; R.coordorigin = aA.coordorigin; var E = T("shape"), i = E.style; i.width = aA.width + "px"; i.height = aA.height + "px"; E.coordsize = this.coordsize; E.coordorigin = this.coordorigin; R[ao](E); var S = new ad(E, R, aA); S.isAbsolute = true; S.type = "path"; S.path = []; S.Path = aa; e && M(S, { fill: "none", stroke: "#000", path: e }); aA.canvas[ao](R); return S; }; var M = function(aE, aI) { aE.attrs = aE.attrs || {}; var aG = aE.node, aJ = aE.attrs, aB = aG.style, R, aN = aE; for (var aC in aI) { if (aI[F](aC)) { aJ[aC] = aI[aC]; } } aI.href && (aG.href = aI.href); aI.title && (aG.title = aI.title); aI.target && (aG.target = aI.target); if (aI.path && aE.type == "path") { aJ.path = aI.path; aG.path = ak(aJ.path); } if (aI.rotation != null) { aE.rotate(aI.rotation, true); } if (aI.translation) { R = (aI.translation + aa)[r](a); aE.translate(R[0], R[1]); } if (aI.scale) { R = (aI.scale + aa)[r](a); aE.scale(+R[0] || 1, +R[1] || +R[0] || 1, +R[2] || null, +R[3] || null); } if ("clip-rect" in aI) { var e = (aI["clip-rect"] + aa)[r](a); if (e[j] == 4) { e[2] = +e[2] + (+e[0]); e[3] = +e[3] + (+e[1]); var aD = aG.clipRect || z.createElement("div"), aM = aD.style, aA = aG.parentNode; aM.clip = Y.format("rect({1}px {2}px {3}px {0}px)", e); if (!aG.clipRect) { aM.position = "absolute"; aM.top = 0; aM.left = 0; aM.width = aE.paper.width + "px"; aM.height = aE.paper.height + "px"; aA.parentNode.insertBefore(aD, aA); aD[ao](aA); aG.clipRect = aD; } } if (!aI["clip-rect"]) { aG.clipRect && (aG.clipRect.style.clip = aa); } } if (aE.type == "image" && aI.src) { aG.src = aI.src; } if (aE.type == "image" && aI.opacity) { aG.filterOpacity = " progid:DXImageTransform.Microsoft.Alpha(opacity=" + (aI.opacity * 100) + ")"; aB.filter = (aG.filterMatrix || aa) + (aG.filterOpacity || aa); } aI.font && (aB.font = aI.font); aI["font-family"] && (aB.fontFamily = '"' + aI["font-family"][r](",")[0][aq](/^['"]+|['"]+$/g, aa) + '"'); aI["font-size"] && (aB.fontSize = aI["font-size"]); aI["font-weight"] && (aB.fontWeight = aI["font-weight"]); aI["font-style"] && (aB.fontStyle = aI["font-style"]); if (aI.opacity != null || aI["stroke-width"] != null || aI.fill != null || aI.stroke != null || aI["stroke-width"] != null || aI["stroke-opacity"] != null || aI["fill-opacity"] != null || aI["stroke-dasharray"] != null || aI["stroke-miterlimit"] != null || aI["stroke-linejoin"] != null || aI["stroke-linecap"] != null) { aG = aE.shape || aG; var aH = (aG.getElementsByTagName("fill") && aG.getElementsByTagName("fill")[0]), aK = false; !aH && (aK = aH = T("fill")); if ("fill-opacity" in aI || "opacity" in aI) { var i = ((+aJ["fill-opacity"] + 1 || 2) - 1) * ((+aJ.opacity + 1 || 2) - 1); i < 0 && (i = 0); i > 1 && (i = 1); aH.opacity = i; } aI.fill && (aH.on = true); if (aH.on == null || aI.fill == "none") { aH.on = false; } if (aH.on && aI.fill) { var E = aI.fill.match(/^url\(([^\)]+)\)$/i); if (E) { aH.src = E[1]; aH.type = "tile"; } else { aH.color = Y.getRGB(aI.fill).hex; aH.src = aa; aH.type = "solid"; if (Y.getRGB(aI.fill).error && (aN.type in { circle: 1, ellipse: 1} || (aI.fill + aa).charAt(0) != "r") && b(aN, aI.fill)) { aJ.fill = "none"; aJ.gradient = aI.fill; } } } aK && aG[ao](aH); var S = (aG.getElementsByTagName("stroke") && aG.getElementsByTagName("stroke")[0]), aL = false; !S && (aL = S = T("stroke")); if ((aI.stroke && aI.stroke != "none") || aI["stroke-width"] || aI["stroke-opacity"] != null || aI["stroke-dasharray"] || aI["stroke-miterlimit"] || aI["stroke-linejoin"] || aI["stroke-linecap"]) { S.on = true; } (aI.stroke == "none" || S.on == null || aI.stroke == 0 || aI["stroke-width"] == 0) && (S.on = false); S.on && aI.stroke && (S.color = Y.getRGB(aI.stroke).hex); var i = ((+aJ["stroke-opacity"] + 1 || 2) - 1) * ((+aJ.opacity + 1 || 2) - 1); i < 0 && (i = 0); i > 1 && (i = 1); S.opacity = i; aI["stroke-linejoin"] && (S.joinstyle = aI["stroke-linejoin"] || "miter"); S.miterlimit = aI["stroke-miterlimit"] || 8; aI["stroke-linecap"] && (S.endcap = { butt: "flat", square: "square", round: "round"}[aI["stroke-linecap"]] || "miter"); aI["stroke-width"] && (S.weight = (J(aI["stroke-width"]) || 1) * 12 / 16); if (aI["stroke-dasharray"]) { var aF = { "-": "shortdash", ".": "shortdot", "-.": "shortdashdot", "-..": "shortdashdotdot", ". ": "dot", "- ": "dash", "--": "longdash", "- .": "dashdot", "--.": "longdashdot", "--..": "longdashdotdot" }; S.dashstyle = aF[aI["stroke-dasharray"]] || aa; } aL && aG[ao](S); } if (aN.type == "text") { var aB = aN.paper.span.style; aJ.font && (aB.font = aJ.font); aJ["font-family"] && (aB.fontFamily = aJ["font-family"]); aJ["font-size"] && (aB.fontSize = aJ["font-size"]); aJ["font-weight"] && (aB.fontWeight = aJ["font-weight"]); aJ["font-style"] && (aB.fontStyle = aJ["font-style"]); aN.node.string && (aN.paper.span.innerHTML = (aN.node.string + aa)[aq](/</g, "&#60;")[aq](/&/g, "&#38;")[aq](/\n/g, "<br>")); aN.W = aJ.w = aN.paper.span.offsetWidth; aN.H = aJ.h = aN.paper.span.offsetHeight; aN.X = aJ.x; aN.Y = aJ.y + C(aN.H / 2); switch (aJ["text-anchor"]) { case "start": aN.node.style["v-text-align"] = "left"; aN.bbx = C(aN.W / 2); break; case "end": aN.node.style["v-text-align"] = "right"; aN.bbx = -C(aN.W / 2); break; default: aN.node.style["v-text-align"] = "center"; break; } } }; var b = function(e, aC) { e.attrs = e.attrs || {}; var aD = e.attrs, aF = e.node.getElementsByTagName("fill"), aA = "linear", aB = ".5 .5"; e.attrs.gradient = aC; aC = (aC + aa)[aq](/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, function(aH, aI, i) { aA = "radial"; if (aI && i) { aI = J(aI); i = J(i); if (ap(aI - 0.5, 2) + ap(i - 0.5, 2) > 0.25) { i = Math.sqrt(0.25 - ap(aI - 0.5, 2)) + 0.5; } aB = aI + X + i; } return aa; }); aC = aC[r](/\s*\-\s*/); if (aA == "linear") { var E = aC.shift(); E = -J(E); if (isNaN(E)) { return null; } } var S = l(aC); if (!S) { return null; } e = e.shape || e.node; aF = aF[0] || T("fill"); if (S[j]) { aF.on = true; aF.method = "none"; aF.type = (aA == "radial") ? "gradientradial" : "gradient"; aF.color = S[0].color; aF.color2 = S[S[j] - 1].color; var aG = []; for (var R = 0, aE = S[j]; R < aE; R++) { S[R].offset && aG[c](S[R].offset + X + S[R].color); } aF.colors.value = aG[j] ? aG[ae](",") : "0% " + aF.color; if (aA == "radial") { aF.focus = "100%"; aF.focussize = aB; aF.focusposition = aB; } else { aF.angle = (270 - E) % 360; } } return 1; }; var ad = function(S, aB, e) { var aA = 0, E = 0, i = 0, R = 1; this[0] = S; this.id = Y._oid++; this.node = S; S.raphael = this; this.X = 0; this.Y = 0; this.attrs = {}; this.Group = aB; this.paper = e; this._ = { tx: 0, ty: 0, rt: { deg: 0 }, sx: 1, sy: 1 }; }; ad[az].rotate = function(i, e, E) { if (this.removed) { return this; } if (i == null) { if (this._.rt.cx) { return [this._.rt.deg, this._.rt.cx, this._.rt.cy][ae](X); } return this._.rt.deg; } i = (i + aa)[r](a); if (i[j] - 1) { e = J(i[1]); E = J(i[2]); } i = J(i[0]); if (e != null) { this._.rt.deg = i; } else { this._.rt.deg += i; } E == null && (e = null); this._.rt.cx = e; this._.rt.cy = E; this.setBox(this.attrs, e, E); this.Group.style.rotation = this._.rt.deg; return this; }; ad[az].setBox = function(aA, aB, S) { if (this.removed) { return this; } var E = this.Group.style, aC = (this.shape && this.shape.style) || this.node.style; aA = aA || {}; for (var aD in aA) { if (aA[F](aD)) { this.attrs[aD] = aA[aD]; } } aB = aB || this._.rt.cx; S = S || this._.rt.cy; var aG = this.attrs, aJ, aI, aK, aF; switch (this.type) { case "circle": aJ = aG.cx - aG.r; aI = aG.cy - aG.r; aK = aF = aG.r * 2; break; case "ellipse": aJ = aG.cx - aG.rx; aI = aG.cy - aG.ry; aK = aG.rx * 2; aF = aG.ry * 2; break; case "rect": case "image": aJ = +aG.x; aI = +aG.y; aK = aG.width || 0; aF = aG.height || 0; break; case "text": this.textpath.v = ["m", C(aG.x), ", ", C(aG.y - 2), "l", C(aG.x) + 1, ", ", C(aG.y - 2)][ae](aa); aJ = aG.x - C(this.W / 2); aI = aG.y - this.H / 2; aK = this.W; aF = this.H; break; case "path": if (!this.attrs.path) { aJ = 0; aI = 0; aK = this.paper.width; aF = this.paper.height; } else { var aE = H(this.attrs.path); aJ = aE.x; aI = aE.y; aK = aE.width; aF = aE.height; } break; default: aJ = 0; aI = 0; aK = this.paper.width; aF = this.paper.height; break; } aB = (aB == null) ? aJ + aK / 2 : aB; S = (S == null) ? aI + aF / 2 : S; var R = aB - this.paper.width / 2, aH = S - this.paper.height / 2; if (this.type == "path" || this.type == "text") { (E.left != R + "px") && (E.left = R + "px"); (E.top != aH + "px") && (E.top = aH + "px"); this.X = this.type == "text" ? aJ : -R; this.Y = this.type == "text" ? aI : -aH; this.W = aK; this.H = aF; (aC.left != -R + "px") && (aC.left = -R + "px"); (aC.top != -aH + "px") && (aC.top = -aH + "px"); } else { (E.left != R + "px") && (E.left = R + "px"); (E.top != aH + "px") && (E.top = aH + "px"); this.X = aJ; this.Y = aI; this.W = aK; this.H = aF; (E.width != this.paper.width + "px") && (E.width = this.paper.width + "px"); (E.height != this.paper.height + "px") && (E.height = this.paper.height + "px"); (aC.left != aJ - R + "px") && (aC.left = aJ - R + "px"); (aC.top != aI - aH + "px") && (aC.top = aI - aH + "px"); (aC.width != aK + "px") && (aC.width = aK + "px"); (aC.height != aF + "px") && (aC.height = aF + "px"); var aL = (+aA.r || 0) / (al(aK, aF)); if (this.type == "rect" && this.arcsize != aL && (aL || this.arcsize)) { var e = T(aL ? "roundrect" : "rect"); e.arcsize = aL; this.Group[ao](e); this.node.parentNode.removeChild(this.node); this.node = e; this.arcsize = aL; this.attr(this.attrs); } } }; ad[az].hide = function() { !this.removed && (this.Group.style.display = "none"); return this; }; ad[az].show = function() { !this.removed && (this.Group.style.display = "block"); return this; }; ad[az].getBBox = function() { if (this.removed) { return this; } if (this.type == "path") { return H(this.attrs.path); } return { x: this.X + (this.bbx || 0), y: this.Y, width: this.W, height: this.H }; }; ad[az].remove = function() { this.node.parentNode.removeChild(this[0]); this.Group.parentNode.removeChild(this.Group); this.shape && this.shape.parentNode.removeChild(this.shape); for (var e in this) { delete this[e]; } this.removed = true; }; ad[az].attr = function() { if (this.removed) { return this; } if (arguments[j] == 1 && Y.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 (this.attrs && arguments[j] == 1 && Y.is(arguments[0], "array")) { var e = {}; for (var E = 0, R = arguments[0][j]; E < R; E++) { e[arguments[0][E]] = this.attrs[arguments[0][E]]; } return e; } var S; if (arguments[j] == 2) { S = {}; S[arguments[0]] = arguments[1]; } arguments[j] == 1 && Y.is(arguments[0], "object") && (S = arguments[0]); if (S) { if (S.text && this.type == "text") { this.node.string = S.text; } M(this, S); if (S.gradient && ({ circle: 1, ellipse: 1}[F](this.type) || (S.gradient + aa).charAt(0) != "r")) { b(this, S.gradient); } this.setBox(this.attrs); } return this; }; ad[az].toFront = function() { !this.removed && this.Group.parentNode[ao](this.Group); return this; }; ad[az].toBack = function() { if (this.removed) { return this; } if (this.Group.parentNode.firstChild != this.Group) { this.Group.parentNode.insertBefore(this.Group, this.Group.parentNode.firstChild); } return this; }; ad[az].insertAfter = function(e) { if (this.removed) { return this; } if (e.Group.nextSibling) { e.Group.parentNode.insertBefore(this.Group, e.Group.nextSibling); } else { e.Group.parentNode[ao](this.Group); } return this; }; ad[az].insertBefore = function(e) { !this.removed && e.Group.parentNode.insertBefore(this.Group, e.Group); return this; }; var D = function(i, e, aC, aA) { var S = T("group"), aB = T("oval"), E = aB.style; S.style.cssText = "position:absolute;left:0;top:0;width:" + i.width + "px;height:" + i.height + "px"; S.coordsize = i.coordsize; S.coordorigin = i.coordorigin; S[ao](aB); var R = new ad(aB, S, i); R.type = "circle"; M(R, { stroke: "#000", fill: "none" }); R.attrs.cx = e; R.attrs.cy = aC; R.attrs.r = aA; R.setBox({ x: e - aA, y: aC - aA, width: aA * 2, height: aA * 2 }); i.canvas[ao](S); return R; }; var ai = function(i, aC, aB, aD, R, e) { var S = T("group"), E = T(e ? "roundrect" : "rect"), aE = (+e || 0) / (al(aD, R)); E.arcsize = aE; S.style.cssText = "position:absolute;left:0;top:0;width:" + i.width + "px;height:" + i.height + "px"; S.coordsize = i.coordsize; S.coordorigin = i.coordorigin; S[ao](E); var aA = new ad(E, S, i); aA.type = "rect"; M(aA, { stroke: "#000" }); aA.arcsize = aE; aA.setBox({ x: aC, y: aB, width: aD, height: R, r: +e }); i.canvas[ao](S); return aA; }; var U = function(e, aD, aC, E, i) { var S = T("group"), R = T("oval"), aB = R.style; S.style.cssText = "position:absolute;left:0;top:0;width:" + e.width + "px;height:" + e.height + "px"; S.coordsize = e.coordsize; S.coordorigin = e.coordorigin; S[ao](R); var aA = new ad(R, S, e); aA.type = "ellipse"; M(aA, { stroke: "#000" }); aA.attrs.cx = aD; aA.attrs.cy = aC; aA.attrs.rx = E; aA.attrs.ry = i; aA.setBox({ x: aD - E, y: aC - i, width: E * 2, height: i * 2 }); e.canvas[ao](S); return aA; }; var k = function(i, e, aD, aC, aE, R) { var S = T("group"), E = T("image"), aB = E.style; S.style.cssText = "position:absolute;left:0;top:0;width:" + i.width + "px;height:" + i.height + "px"; S.coordsize = i.coordsize; S.coordorigin = i.coordorigin; E.src = e; S[ao](E); var aA = new ad(E, S, i); aA.type = "image"; aA.attrs.src = e; aA.attrs.x = aD; aA.attrs.y = aC; aA.attrs.w = aE; aA.attrs.h = R; aA.setBox({ x: aD, y: aC, width: aE, height: R }); i.canvas[ao](S); return aA; }; var K = function(i, aD, aC, aE) { var S = T("group"), R = T("shape"), aB = R.style, aF = T("path"), e = aF.style, E = T("textpath"); S.style.cssText = "position:absolute;left:0;top:0;width:" + i.width + "px;height:" + i.height + "px"; S.coordsize = i.coordsize; S.coordorigin = i.coordorigin; aF.v = Y.format("m{0},{1}l{2},{1}", C(aD), C(aC), C(aD) + 1); aF.textpathok = true; aB.width = i.width; aB.height = i.height; E.string = aE + aa; E.on = true; R[ao](E); R[ao](aF); S[ao](R); var aA = new ad(E, S, i); aA.shape = R; aA.textpath = aF; aA.type = "text"; aA.attrs.text = aE; aA.attrs.x = aD; aA.attrs.y = aC; aA.attrs.w = 1; aA.attrs.h = 1; M(aA, { font: g.font, stroke: "none", fill: "#000" }); aA.setBox(); i.canvas[ao](S); return aA; }; var aw = function(E, e) { var i = this.canvas.style; this.width = J(E || this.width); this.height = J(e || this.height); i.width = this.width + "px"; i.height = this.height + "px"; i.clip = "rect(0 " + this.width + "px " + this.height + "px 0)"; this.coordsize = this.width + X + this.height; return this; }; z.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)"); try { !z.namespaces.rvml && z.namespaces.add("rvml", "urn:schemas-microsoft-com:vml"); var T = function(e) { return z.createElement("<rvml:" + e + ' class="rvml">'); }; } catch (P) { var T = function(e) { return z.createElement("<" + e + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'); }; } var p = function() { var R = Z[ax](null, arguments), i = R.container, aE = R.height, aF, E = R.width, aD = R.x, aC = R.y; if (!i) { throw new Error("VML container not found."); } var aA = {}, aB = aA.canvas = z.createElement("div"), S = aB.style; E = J(E) || 512; aE = J(aE) || 342; aA.width = E; aA.height = aE; aA.coordsize = E + X + aE; aA.coordorigin = "0 0"; aA.span = z.createElement("span"); aA.span.style.cssText = "position:absolute;left:-9999px;top:-9999px;padding:0;margin:0;line-height:1;display:inline;"; aB[ao](aA.span); S.cssText = Y.format("width:{0}px;height:{1}px;position:absolute;clip:rect(0 {0}px {1}px 0)", E, aE); if (i == 1) { z.body[ao](aB); S.left = aD + "px"; S.top = aC + "px"; i = { style: { width: E, height: aE} }; } else { i.style.width = E; i.style.height = aE; if (i.firstChild) { i.insertBefore(aB, i.firstChild); } else { i[ao](aB); } } for (var e in ar) { if (ar[F](e)) { aA[e] = ar[e]; } } aj.call(aA, aA, Y.fn); aA.clear = function() { aB.innerHTML = aa; }; aA.raphael = Y; return aA; }; ar.remove = function() { this.canvas.parentNode.removeChild(this.canvas); for (var e in this) { delete this[e]; } }; } if ({ "Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) { ar.safari = function() { var e = this.rect(-99, -99, this.width + 99, this.height + 99); setTimeout(function() { e.remove(); }); }; } else { ar.safari = function() { }; } var Q = (function() { if (z.addEventListener) { return function(S, E, i, e) { var R = function(aA) { return i.call(e, aA); }; S.addEventListener(E, R, false); return function() { S.removeEventListener(E, R, false); return true; }; }; } else { if (z.attachEvent) { return function(aA, R, E, i) { var S = function(aB) { return E.call(i, aB || ab.event); }; aA.attachEvent("on" + R, S); var e = function() { aA.detachEvent("on" + R, S); return true; }; if (R == "mouseover") { aA.attachEvent("onmouseenter", S); return function() { aA.detachEvent("onmouseenter", S); return e(); }; } else { if (R == "mouseout") { aA.attachEvent("onmouseleave", S); return function() { aA.detachEvent("onmouseleave", S); return e(); }; } } return e; }; } } })(); for (var N = u[j]; N--; ) { (function(e) { ad[az][e] = function(i) { if (Y.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][c](Q(this.shape || this.node, e, i, this)); } return this; }; ad[az]["un" + e] = function(i) { var E = this.events; E && E[e] && E[e][i] && E[e][i][j] && E[e][i].shift()() && !E[e][i][j] && delete E[e][i]; return this; }; })(u[N]); } ad[az].hover = function(i, e) { return this.mouseover(i).mouseout(e); }; ar.circle = function(e, E, i) { return D(this, e || 0, E || 0, i || 0); }; ar.rect = function(e, S, i, E, R) { return ai(this, e || 0, S || 0, i || 0, E || 0, R || 0); }; ar.ellipse = function(e, R, E, i) { return U(this, e || 0, R || 0, E || 0, i || 0); }; ar.path = function(e) { e && !Y.is(e, "string") && !Y.is(e[0], "array") && (e += aa); return m(Y.format[ax](Y, arguments), this); }; ar.image = function(R, e, S, i, E) { return k(this, R || "about:blank", e || 0, S || 0, i || 0, E || 0); }; ar.text = function(e, E, i) { return K(this, e || 0, E || 0, i || aa); }; ar.set = function(e) { arguments[j] > 1 && (e = Array[az].splice.call(arguments, 0, arguments[j])); return new G(e); }; ar.setSize = aw; ad[az].scale = function(aJ, aI, R, E) { if (aJ == null && aI == null) { return { x: this._.sx, y: this._.sy, toString: function() { return this.x + X + this.y; } }; } aI = aI || aJ; ! +aI && (aI = aJ); var aN, aL, aM, aK, aZ = this.attrs; if (aJ != 0) { var aG = this.getBBox(), aD = aG.x + aG.width / 2, aA = aG.y + aG.height / 2, aY = aJ / this._.sx, aX = aI / this._.sy; R = (+R || R == 0) ? R : aD; E = (+E || E == 0) ? E : aA; var aF = ~ ~(aJ / Math.abs(aJ)), aC = ~ ~(aI / Math.abs(aI)), aQ = this.node.style, a1 = R + (aD - R) * aF * aY, a0 = E + (aA - E) * aC * aX; switch (this.type) { case "rect": case "image": var aE = aZ.width * aF * aY, aP = aZ.height * aC * aX, aH = aZ.r * al(aY, aX), aB = a1 - aE / 2, S = a0 - aP / 2; this.attr({ width: aE, height: aP, x: aB, y: S, r: aH }); break; case "circle": case "ellipse": this.attr({ rx: aZ.rx * aY, ry: aZ.ry * aX, r: aZ.r * al(aY, aX), cx: a1, cy: a0 }); break; case "path": var aS = O(aZ.path), aT = true; for (var aV = 0, aO = aS[j]; aV < aO; aV++) { var aR = aS[aV]; if (aR[0].toUpperCase() == "M" && aT) { continue; } else { aT = false; } if (Y.svg && aR[0].toUpperCase() == "A") { aR[aS[aV][j] - 2] *= aY; aR[aS[aV][j] - 1] *= aX; aR[1] *= aY; aR[2] *= aX; aR[5] = +(aF + aC ? !! +aR[5] : ! +aR[5]); } else { for (var aU = 1, aW = aR[j]; aU < aW; aU++) { aR[aU] *= (aU % 2) ? aY : aX; } } } var e = H(aS), aN = a1 - e.x - e.width / 2, aL = a0 - e.y - e.height / 2; aS[0][1] += aN; aS[0][2] += aL; this.attr({ path: aS }); break; } if (this.type in { text: 1, image: 1} && (aF != 1 || aC != 1)) { if (this.transformations) { this.transformations[2] = "scale("[au](aF, ",", aC, ")"); this.node[o]("transform", this.transformations[ae](X)); aN = (aF == -1) ? -aZ.x - (aE || 0) : aZ.x; aL = (aC == -1) ? -aZ.y - (aP || 0) : aZ.y; this.attr({ x: aN, y: aL }); aZ.fx = aF - 1; aZ.fy = aC - 1; } else { this.node.filterMatrix = " progid:DXImageTransform.Microsoft.Matrix(M11="[au](aF, ", M12=0, M21=0, M22=", aC, ", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')"); aQ.filter = (this.node.filterMatrix || aa) + (this.node.filterOpacity || aa); } } else { if (this.transformations) { this.transformations[2] = aa; this.node[o]("transform", this.transformations[ae](X)); aZ.fx = 0; aZ.fy = 0; } else { this.node.filterMatrix = aa; aQ.filter = (this.node.filterMatrix || aa) + (this.node.filterOpacity || aa); } } aZ.scale = [aJ, aI, R, E][ae](X); this._.sx = aJ; this._.sy = aI; } return this; }; Y.easing_formulas = { linear: function(e) { return e; }, "<": function(e) { return ap(e, 3); }, ">": function(e) { return ap(e - 1, 3) + 1; }, "<>": function(e) { e = e * 2; if (e < 1) { return ap(e, 3) / 2; } e -= 2; return (ap(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(E) { if (E == 0 || E == 1) { return E; } var i = 0.3, e = i / 4; return ap(2, -10 * E) * Math.sin((E - e) * (2 * Math.PI) / i) + 1; }, bounce: function(R) { var i = 7.5625, E = 2.75, e; if (R < (1 / E)) { e = i * R * R; } else { if (R < (2 / E)) { R -= (1.5 / E); e = i * R * R + 0.75; } else { if (R < (2.5 / E)) { R -= (2.25 / E); e = i * R * R + 0.9375; } else { R -= (2.625 / E); e = i * R * R + 0.984375; } } } return e; } }; var x = { length: 0 }, at = function() { var aD = +new Date; for (var aO in x) { if (aO != "length" && x[F](aO)) { var aT = x[aO]; if (aT.stop) { delete x[aO]; x[j]--; continue; } var aB = aD - aT.start, aM = aT.ms, aL = aT.easing, aP = aT.from, aI = aT.diff, R = aT.to, aH = aT.t, aK = aT.prev || 0, aC = aT.el, S = aT.callback, aJ = {}, E; if (aB < aM) { var aA = Y.easing_formulas[aL] ? Y.easing_formulas[aL](aB / aM) : aB / aM; for (var aN in aP) { if (aP[F](aN)) { switch (L[aN]) { case "number": E = +aP[aN] + aA * aM * aI[aN]; break; case "colour": E = "rgb(" + [s(C(aP[aN].r + aA * aM * aI[aN].r)), s(C(aP[aN].g + aA * aM * aI[aN].g)), s(C(aP[aN].b + aA * aM * aI[aN].b))][ae](",") + ")"; break; case "path": E = []; for (var aR = 0, aG = aP[aN][j]; aR < aG; aR++) { E[aR] = [aP[aN][aR][0]]; for (var aQ = 1, aS = aP[aN][aR][j]; aQ < aS; aQ++) { E[aR][aQ] = +aP[aN][aR][aQ] + aA * aM * aI[aN][aR][aQ]; } E[aR] = E[aR][ae](X); } E = E[ae](X); break; case "csv": switch (aN) { case "translation": var aF = aI[aN][0] * (aB - aK), aE = aI[aN][1] * (aB - aK); aH.x += aF; aH.y += aE; E = aF + X + aE; break; case "rotation": E = +aP[aN][0] + aA * aM * aI[aN][0]; aP[aN][1] && (E += "," + aP[aN][1] + "," + aP[aN][2]); break; case "scale": E = [+aP[aN][0] + aA * aM * aI[aN][0], +aP[aN][1] + aA * aM * aI[aN][1], (2 in R[aN] ? R[aN][2] : aa), (3 in R[aN] ? R[aN][3] : aa)][ae](X); break; case "clip-rect": E = []; var aR = 4; while (aR--) { E[aR] = +aP[aN][aR] + aA * aM * aI[aN][aR]; } break; } break; } aJ[aN] = E; } } aC.attr(aJ); aC._run && aC._run.call(aC); } else { (aH.x || aH.y) && aC.translate(-aH.x, -aH.y); R.scale && (R.scale = R.scale + aa); aC.attr(R); Y.is(S, "function") && S.call(aC); delete x[aO]; x[j]--; aC.in_animation = null; } aT.prev = aB; } } Y.svg && ar.safari(); x[j] && setTimeout(at); }, s = function(e) { return e > 255 ? 255 : (e < 0 ? 0 : e); }; ad[az].animateWith = function(i, E, e, S, R) { x[i.id] && (E.start = x[i.id].start); return this.animate(E, e, S, R); }; ad[az].onAnimation = function(e) { this._run = e || null; return this; }; ad[az].animate = function(R, e, aF, aL) { if (Y.is(aF, "function") || !aF) { aL = aF || null; } var aG = {}, aH = {}, aI = {}; for (var aE in R) { if (R[F](aE)) { if (L[F](aE)) { aG[aE] = this.attr(aE); (aG[aE] == null) && (aG[aE] = g[aE]); aH[aE] = R[aE]; switch (L[aE]) { case "number": aI[aE] = (aH[aE] - aG[aE]) / e; break; case "colour": aG[aE] = Y.getRGB(aG[aE]); var aC = Y.getRGB(aH[aE]); aI[aE] = { r: (aC.r - aG[aE].r) / e, g: (aC.g - aG[aE].g) / e, b: (aC.b - aG[aE].b) / e }; break; case "path": var E = w(aG[aE], aH[aE]); aG[aE] = E[0]; aH[aE] = E[1]; aI[aE] = []; for (var aB = 0, aK = aG[aE][j]; aB < aK; aB++) { aI[aE][aB] = [0]; for (var S = 1, aD = aG[aE][aB][j]; S < aD; S++) { aI[aE][aB][S] = (aH[aE][aB][S] - aG[aE][aB][S]) / e; } } break; case "csv": var aJ = (R[aE] + aa)[r](a), aA = (aG[aE] + aa)[r](a); switch (aE) { case "translation": aG[aE] = [0, 0]; aI[aE] = [aJ[0] / e, aJ[1] / e]; break; case "rotation": aG[aE] = (aA[1] == aJ[1] && aA[2] == aJ[2]) ? aA : [0, aJ[1], aJ[2]]; aI[aE] = [(aJ[0] - aG[aE][0]) / e, 0, 0]; break; case "scale": R[aE] = aJ; aG[aE] = (aG[aE] + aa)[r](a); aI[aE] = [(aJ[0] - aG[aE][0]) / e, (aJ[1] - aG[aE][1]) / e, 0, 0]; break; case "clip-rect": aG[aE] = (aG[aE] + aa)[r](a); aI[aE] = []; var aB = 4; while (aB--) { aI[aE][aB] = (aJ[aB] - aG[aE][aB]) / e; } break; } aH[aE] = aJ; } } } } this.stop(); this.in_animation = 1; x[this.id] = { start: R.start || +new Date, ms: e, easing: aF, from: aG, diff: aI, to: aH, el: this, callback: aL, t: { x: 0, y: 0} }; ++x[j] == 1 && at(); return this; }; ad[az].stop = function() { delete x[this.id]; delete this.in_animation; return this; }; ad[az].translate = function(e, E) { if (e == null) { return { x: this._.tx, y: this._.ty }; } this._.tx += +e; this._.ty += +E; switch (this.type) { case "circle": case "ellipse": this.attr({ cx: +e + this.attrs.cx, cy: +E + this.attrs.cy }); break; case "rect": case "image": case "text": this.attr({ x: +e + this.attrs.x, y: +E + this.attrs.y }); break; case "path": var i = O(this.attrs.path); i[0][1] += +e; i[0][2] += +E; this.attr({ path: i }); break; } return this; }; ad[az][af] = function() { return "Rapha\u00ebl\u2019s object"; }; Y.ae = x; var G = function(e) { this.items = []; this[j] = 0; if (e) { for (var E = 0, R = e[j]; E < R; E++) { if (e[E] && (e[E].constructor == ad || e[E].constructor == G)) { this[this.items[j]] = this.items[this.items[j]] = e[E]; this[j]++; } } } }; G[az][c] = function() { var S, e; for (var E = 0, R = arguments[j]; E < R; E++) { S = arguments[E]; if (S && (S.constructor == ad || S.constructor == G)) { e = this.items[j]; this[e] = this.items[e] = S; this[j]++; } } return this; }; G[az].pop = function() { delete this[this[j]--]; return this.items.pop(); }; for (var q in ad[az]) { if (ad[az][F](q)) { G[az][q] = (function(e) { return function() { for (var E = 0, R = this.items[j]; E < R; E++) { this.items[E][e][ax](this.items[E], arguments); } return this; }; })(q); } } G[az].attr = function(E, aB) { if (E && Y.is(E, "array") && Y.is(E[0], "object")) { for (var e = 0, aA = E[j]; e < aA; e++) { this.items[e].attr(E[e]); } } else { for (var R = 0, S = this.items[j]; R < S; R++) { this.items[R].attr[ax](this.items[R], arguments); } } return this; }; G[az].animate = function(aA, E, aD, aC) { (Y.is(aD, "function") || !aD) && (aC = aD || null); var e = this.items[j], R = e, aB = this, S; aC && (S = function() { ! --e && aC.call(aB); }); this.items[--R].animate(aA, E, aD || S, S); while (R--) { this.items[R].animateWith(this.items[e - 1], aA, E, aD || S, S); } return this; }; G[az].insertAfter = function(E) { var e = this.items[j]; while (e--) { this.items[e].insertAfter(E); } }; G[az].getBBox = function() { var e = [], aB = [], E = [], S = []; for (var R = this.items[j]; R--; ) { var aA = this.items[R].getBBox(); e[c](aA.x); aB[c](aA.y); E[c](aA.x + aA.width); S[c](aA.y + aA.height); } e = al[ax](0, e); aB = al[ax](0, aB); return { x: e, y: aB, width: d[ax](0, E) - e, height: d[ax](0, S) - aB }; }; Y.registerFont = function(i) { if (!i.face) { return i; } this.fonts = this.fonts || {}; var R = { w: i.w, face: {}, glyphs: {} }, E = i.face["font-family"]; for (var aB in i.face) { if (i.face[F](aB)) { R.face[aB] = i.face[aB]; } } if (this.fonts[E]) { this.fonts[E][c](R); } else { this.fonts[E] = [R]; } if (!i.svg) { R.face["units-per-em"] = v(i.face["units-per-em"], 10); for (var S in i.glyphs) { if (i.glyphs[F](S)) { var aA = i.glyphs[S]; R.glyphs[S] = { w: aA.w, k: {}, d: aA.d && "M" + aA.d[aq](/[mlcxtrv]/g, function(aC) { return { l: "L", c: "C", x: "z", t: "m", r: "l", v: "c"}[aC] || "M"; }) + "z" }; if (aA.k) { for (var e in aA.k) { if (aA[F](e)) { R.glyphs[S].k[e] = aA.k[e]; } } } } } } return i; }; ar.getFont = function(aD, aE, E, S) { S = S || "normal"; E = E || "normal"; aE = +aE || { normal: 400, bold: 700, lighter: 300, bolder: 800}[aE] || 400; var aA = Y.fonts[aD]; if (!aA) { var R = new RegExp("(^|\\s)" + aD[aq](/[^\w\d\s+!~.:_-]/g, aa) + "(\\s|$)", "i"); for (var e in Y.fonts) { if (Y.fonts[F](e)) { if (R.test(e)) { aA = Y.fonts[e]; break; } } } } var aB; if (aA) { for (var aC = 0, aF = aA[j]; aC < aF; aC++) { aB = aA[aC]; if (aB.face["font-weight"] == aE && (aB.face["font-style"] == E || !aB.face["font-style"]) && aB.face["font-stretch"] == S) { break; } } } return aB; }; ar.print = function(aF, aE, aC, E, aJ) { var aA = this.set(), aD = (aC + aa)[r](aa), e = 0, aI = aa, S; Y.is(E, "string") && (E = this.getFont(E)); if (E) { S = (aJ || 16) / E.face["units-per-em"]; for (var aB = 0, aG = aD[j]; aB < aG; aB++) { var R = aB && E.glyphs[aD[aB - 1]] || {}, aH = E.glyphs[aD[aB]]; e += aB ? (R.w || E.w) + (R.k && R.k[aD[aB]] || 0) : 0; aH && aH.d && aA[c](this.path(aH.d).attr({ fill: "#000", stroke: "none", translation: [e, 0] })); } aA.scale(S, S, 0, aE).translate(aF, (aJ || 16) / 2); } return aA; }; Y.format = function(E) { var i = Y.is(arguments[1], "array") ? [0][au](arguments[1]) : arguments, e = /\{(\d+)\}/g; E && Y.is(E, "string") && i[j] - 1 && (E = E[aq](e, function(S, R) { return i[++R] == null ? aa : i[R]; })); return E || aa; }; Y.ninja = function() { var E = ab.Raphael, i; if (h.was) { ab.Raphael = h.is; } else { try { delete ab.Raphael; } catch (R) { ab.Raphael = i; } } return E; }; Y.el = ad[az]; return Y; })();