diff --git a/src/jvenn.min.js b/src/jvenn.min.js index 8636d4d5e1055d41c0d4993b10e147b25922e773..0c250453773943605d4c4ca64d7673f3d043ff42 100644 --- a/src/jvenn.min.js +++ b/src/jvenn.min.js @@ -24,4 +24,4 @@ * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ -(function(e){e.fn.jvenn=function(n){function o(t,n,r,i,s,o,u){var a=e("#canvasEllipse")[0];var f=a.getContext("2d");f.beginPath();f.save();f.translate(t,n);f.rotate(o*Math.PI/180);f.scale(i,s);f.arc(0,0,r,0,Math.PI*2);f.fillStyle=u;f.fill();f.restore()}function u(t,n,r,i,s,o,u){var a=e("#canvasEllipse")[0];var f=a.getContext("2d");f.beginPath();f.save();f.moveTo(t,n);f.lineTo(r,i);f.lineTo(s,o);f.fillStyle=u;f.fill();f.restore()}function a(t,n,r,i,s){var o=e("#canvasEllipse")[0];var u=o.getContext("2d");u.lineWidth=1;u.beginPath();u.moveTo(t,n);u.lineTo(r,i);u.strokeStyle=s;u.stroke()}function f(t,n,r,i,s,o,u){var a=e("#canvasEllipse")[0];var f=a.getContext("2d");f.beginPath();f.save();f.translate(t,n);f.rotate(o*Math.PI/180);f.scale(i,s);f.arc(0,0,r,0,Math.PI*2);f.lineWidth=3;f.strokeStyle=u;if(g(u)>=.6){f.fillStyle=m(u,.1);f.fill()}f.stroke();f.restore()}function l(t){var n=e("#canvasEllipse")[0];var r=n.getContext("2d");var i=false;r.strokeStyle=t;r.lineWidth=3;r.beginPath();r.arc(120,205,90,.25*Math.PI,1.75*Math.PI,i);r.stroke();r.beginPath();r.arc(370,205,90,1.25*Math.PI,.75*Math.PI,i);r.stroke();r.beginPath();r.arc(245,360,110,1.3*Math.PI,1.7*Math.PI,i);r.stroke();r.beginPath();r.arc(245,50,110,.3*Math.PI,.7*Math.PI,i);r.stroke();if(g(t)>=.6){r.save();r.beginPath();r.moveTo(0,0);r.lineTo(500,0);r.lineTo(500,415);r.lineTo(0,415);r.closePath();r.clip();r.strokeStyle="rgba(0,0,0,0)";r.lineCap="butt";r.lineJoin="miter";r.miterLimit=4;r.save();r.restore();r.save();r.restore();r.save();r.translate(-11,-633);r.save();r.strokeStyle="rgba(0,0,0,0)";r.translate(0,636);r.beginPath();r.moveTo(116.68996,288.55847);r.bezierCurveTo(114.18984,288.06339,109.64415,287.21717,106.58843999999999,286.67797);r.bezierCurveTo(91.905866,284.08711,74.873379,272.58587,62.202665,256.70632);r.bezierCurveTo(50.11906,241.56257,44.228048,226.01748,43.257799,206.71498);r.bezierCurveTo(41.560634,172.95091,57.502272,144.04252,87.68464900000001,126.1518);r.bezierCurveTo(113.85468,110.63942,151.67555000000002,111.15554999999999,176.27348,127.36075);r.bezierCurveTo(180.25579000000002,129.9843,185.18402,133.59167,187.22511,135.37712);r.bezierCurveTo(194.61144,141.83832999999998,205.94366,148.05088999999998,218.69964,152.63209999999998);r.bezierCurveTo(245.95179,162.41950999999997,276.56952,161.09978999999998,302.53531,149.01852999999997);r.bezierCurveTo(312.66749999999996,144.30425999999997,319.21466,140.23029999999997,324.17127999999997,135.55560999999997);r.bezierCurveTo(333.89739,126.38270999999997,351.79472999999996,118.14201999999997,367.20779999999996,115.73977999999997);r.bezierCurveTo(378.37728999999996,113.99892999999997,395.02293999999995,115.10837999999997,406.09866999999997,118.33190999999997);r.bezierCurveTo(427.39104999999995,124.52893999999996,447.81205,140.89770999999996,458.49307999999996,160.32946999999996);r.bezierCurveTo(466.21541999999994,174.37854999999996,468.14135,182.79986999999997,468.18706999999995,202.71742999999995);r.bezierCurveTo(468.21646999999996,215.53506999999996,467.84246999999993,219.76843999999994,466.13687999999996,225.92328999999995);r.bezierCurveTo(460.34646999999995,246.81870999999995,443.97394999999995,267.47014999999993,423.77633999999995,279.35468999999995);r.bezierCurveTo(411.54527999999993,286.55159999999995,399.98404999999997,289.09283999999997,379.83469999999994,289.01338999999996);r.bezierCurveTo(354.90229999999997,288.91508999999996,338.08241999999996,282.66270999999995,322.01485999999994,267.52031999999997);r.bezierCurveTo(312.0940299999999,258.17073,292.45028999999994,249.89035999999996,272.32759999999996,246.57576999999998);r.bezierCurveTo(254.94397999999995,243.71236999999996,234.25916999999995,245.61216,218.58554999999996,251.51169);r.bezierCurveTo(206.28085999999996,256.14317,191.57338999999996,264.45267,188.72360999999995,268.38324);r.bezierCurveTo(186.89117999999996,270.91063,172.96095999999994,280.26608,166.96462999999994,282.99643);r.bezierCurveTo(164.03704999999994,284.32946999999996,158.23248999999996,286.16623,154.06560999999994,287.07811999999996);r.bezierCurveTo(145.28290999999993,289.00015999999994,123.31454999999994,289.87026999999995,116.68995999999993,288.55846999999994);r.lineTo(116.68995999999993,288.55846999999994);r.closePath();r.fillStyle=m(t,.1);r.fill();r.stroke();r.restore();r.restore();r.restore()}}function c(t){var n=e("#canvasEllipse")[0];var r=n.getContext("2d");var i=false;r.strokeStyle=t;r.lineWidth=3;r.beginPath();r.arc(145,205,40,.35*Math.PI,1.65*Math.PI,i);r.stroke();r.beginPath();r.arc(345,205,40,1.35*Math.PI,.65*Math.PI,i);r.stroke();r.beginPath();r.arc(245,100,40,.8*Math.PI,2.2*Math.PI,i);r.stroke();r.beginPath();r.arc(245,310,40,1.82*Math.PI,1.18*Math.PI,i);r.stroke();r.beginPath();r.arc(182,140,35,1.84*Math.PI,.7*Math.PI,i);r.stroke();r.beginPath();r.arc(308,140,35,.3*Math.PI,1.18*Math.PI,i);r.stroke();r.beginPath();r.arc(182,270,35,1.3*Math.PI,.2*Math.PI,i);r.stroke();r.beginPath();r.arc(308,270,35,.8*Math.PI,1.7*Math.PI,i);r.stroke();if(g(t)>=.6){r.save();r.beginPath();r.moveTo(0,0);r.lineTo(500,0);r.lineTo(500,415);r.lineTo(0,415);r.closePath();r.clip();r.strokeStyle="rgba(0,0,0,0)";r.lineCap="butt";r.lineJoin="miter";r.miterLimit=4;r.save();r.restore();r.save();r.restore();r.save();r.translate(-140,-212);r.save();r.strokeStyle="rgba(0,0,0,0)";r.translate(139,217);r.beginPath();r.moveTo(234.95394,341.16933);r.bezierCurveTo(231.80731999999998,340.135,227.61570999999998,338.28931,225.63925999999998,337.0678);r.bezierCurveTo(221.28248999999997,334.37516999999997,214.37806999999998,326.70736999999997,211.83772,321.74032);r.bezierCurveTo(207.9414,314.12196,208.45042999999998,293.37118,212.67719,287.51943);r.bezierCurveTo(215.87649,283.09018,218.95801,274.65101,219.59244,268.58113);r.bezierCurveTo(220.45250000000001,260.35249,218.0029,251.63114999999996,212.48275,243.26837999999998);r.bezierCurveTo(206.02273000000002,233.48175999999998,198.89664000000002,229.43794999999997,185.95006,228.21201);r.bezierCurveTo(178.17816000000002,227.47606,172.06373000000002,228.9391,162.89332000000002,233.72894);r.bezierCurveTo(156.28128,237.18251999999998,155.23208000000002,237.42228,146.73088,237.42244);r.bezierCurveTo(135.51808000000003,237.42266,128.41302000000002,234.90269,121.10778000000002,228.33465999999999);r.bezierCurveTo(114.30638000000002,222.21962,111.33466000000001,216.76216,109.78745000000002,207.54525999999998);r.bezierCurveTo(108.21951000000003,198.20489999999998,109.69855000000003,187.35654,113.42449000000002,180.86914);r.bezierCurveTo(116.70310000000002,175.16054,123.50535000000002,169.17129,130.61112000000003,165.73660999999998);r.bezierCurveTo(135.84135000000003,163.2085,137.81975000000003,162.82216,145.72073000000003,162.78605);r.bezierCurveTo(154.43018000000004,162.74624999999997,155.21524000000002,162.9348,164.40855000000002,167.27446999999998);r.bezierCurveTo(173.55745000000002,171.59319999999997,174.43144,171.80518999999998,183.14876,171.82016);r.bezierCurveTo(191.71748000000002,171.83496,192.78155,171.59418,200.06856000000002,167.99274);r.bezierCurveTo(206.71571000000003,164.70754,208.40559000000002,163.31437,211.70876,158.39629);r.bezierCurveTo(216.86766,150.71523,219.00004,144.97677,219.64970000000002,137.02646);r.bezierCurveTo(220.25703000000001,129.59413999999998,217.81806000000003,120.60798999999999,213.36866000000003,113.88449999999999);r.bezierCurveTo(208.31047000000004,106.24103999999998,207.60430000000002,86.789031,212.06743000000003,78.04059099999999);r.bezierCurveTo(215.36468000000002,71.57742099999999,222.48250000000002,64.79066099999999,229.83172000000002,61.10251999999999);r.bezierCurveTo(236.05208000000002,57.98088699999999,237.41276000000002,57.68862899999999,245.72583000000003,57.68862899999999);r.bezierCurveTo(253.41441000000003,57.68862899999999,255.67446000000004,58.09343499999999,260.37304,60.31215099999999);r.bezierCurveTo(277.08479,68.203604,286.51407,86.23497699999999,282.57463,102.76767);r.bezierCurveTo(281.86319000000003,105.75339,279.29147,112.06009,276.85971,116.78255);r.bezierCurveTo(273.65874,122.99881,272.27383000000003,127.0461,271.84239,131.44528);r.bezierCurveTo(270.33639000000005,146.80139,279.61874,162.9296,293.20300000000003,168.5596);r.bezierCurveTo(306.55802000000006,174.09458999999998,314.0903,173.65240999999997,329.06341000000003,166.45448);r.bezierCurveTo(336.00568000000004,163.11717,337.40021,162.8096,345.73093000000006,162.77846);r.bezierCurveTo(353.96010000000007,162.74776,355.45355000000006,163.05339,361.47832000000005,166.00153);r.bezierCurveTo(369.53210000000007,169.94254,376.64791,177.20452,380.3403400000001,185.25103000000001);r.bezierCurveTo(382.5644300000001,190.09773,382.9971500000001,192.49377,383.0256800000001,200.12014000000002);r.bezierCurveTo(383.0562800000001,208.31117000000003,382.74275000000006,209.86176000000003,379.8593200000001,215.77750000000003);r.bezierCurveTo(376.0651900000001,223.56169000000003,370.1637800000001,229.56756000000004,362.0334900000001,233.91890000000004);r.bezierCurveTo(351.4550500000001,239.58048000000002,339.7398500000001,239.17006000000003,326.6582200000001,232.67959000000005);r.bezierCurveTo(310.6073100000001,224.71590000000003,294.4869300000001,227.24494000000004,281.98739000000006,239.68774000000005);r.bezierCurveTo(270.03863000000007,251.58229000000006,268.4080000000001,270.18789000000004,277.92910000000006,285.99336000000005);r.bezierCurveTo(284.3299400000001,296.61906000000005,285.13914000000005,307.05507000000006,280.51249000000007,319.31069);r.bezierCurveTo(277.5959900000001,327.03626,268.9701400000001,335.93369,260.6715500000001,339.77631);r.bezierCurveTo(253.04107000000008,343.30956000000003,243.1026400000001,343.84789,234.95394000000007,341.16933);r.lineTo(234.95394000000007,341.16933);r.closePath();r.fillStyle=m(t,.1);r.fill();r.stroke();r.restore();r.restore();r.restore()}}function h(t){var n=e("#canvasEllipse")[0];var r=n.getContext("2d");var i=false;r.strokeStyle=t;r.lineWidth=3;r.beginPath();r.arc(151,205,18,.4*Math.PI,1.6*Math.PI,i);r.stroke();r.beginPath();r.arc(167,238,18,1.35*Math.PI,2.42*Math.PI,i);r.stroke();r.beginPath();r.arc(180,272,18,.18*Math.PI,1.33*Math.PI,i);r.stroke();r.beginPath();r.arc(212,289,18,1.15*Math.PI,2.1*Math.PI,i);r.stroke();r.beginPath();r.arc(245,302,18,1.85*Math.PI,1.15*Math.PI,i);r.stroke();r.beginPath();r.arc(279,289,18,.87*Math.PI,1.85*Math.PI,i);r.stroke();r.beginPath();r.arc(311,272,18,1.65*Math.PI,.85*Math.PI,i);r.stroke();r.beginPath();r.arc(325,238,18,.54*Math.PI,1.68*Math.PI,i);r.stroke();r.beginPath();r.arc(340,205,18,1.37*Math.PI,.59*Math.PI,i);r.stroke();r.beginPath();r.arc(325,172,18,.35*Math.PI,1.4*Math.PI,i);r.stroke();r.beginPath();r.arc(311,138,18,1.15*Math.PI,2.35*Math.PI,i);r.stroke();r.beginPath();r.arc(279,122,18,.17*Math.PI,1.1*Math.PI,i);r.stroke();r.beginPath();r.arc(245,108,18,.8*Math.PI,2.15*Math.PI,i);r.stroke();r.beginPath();r.arc(212,122,18,1.9*Math.PI,.85*Math.PI,i);r.stroke();r.beginPath();r.arc(180,138,18,.65*Math.PI,1.85*Math.PI,i);r.stroke();r.beginPath();r.arc(167,172,18,1.6*Math.PI,.7*Math.PI,i);r.stroke();if(g(t)>=.6){r.save();r.beginPath();r.moveTo(0,0);r.lineTo(500,0);r.lineTo(500,415);r.lineTo(0,415);r.closePath();r.clip();r.strokeStyle="rgba(0,0,0,0)";r.lineCap="butt";r.lineJoin="miter";r.miterLimit=4;r.save();r.restore();r.save();r.restore();r.save();r.translate(-4,-637);r.save();r.strokeStyle="rgba(0,0,0,0)";r.translate(0,637);r.beginPath();r.moveTo(242.80929,316.76895);r.bezierCurveTo(239.2558,315.3947,234.83257,308.84895,234.18254000000002,304.00262000000004);r.bezierCurveTo(233.85998,301.59777,234.27994,298.62012000000004,235.27891000000002,296.22928);r.bezierCurveTo(237.39948,291.15406,237.29592000000002,285.99823000000004,234.97058,280.87787000000003);r.bezierCurveTo(231.58546,273.42388000000005,224.01393000000002,268.42150000000004,216.05280000000002,268.37923);r.bezierCurveTo(210.33377000000002,268.34883,202.51030000000003,272.78013,198.27794000000003,278.44704);r.bezierCurveTo(196.41545000000002,280.94083,193.36619000000002,284.00917000000004,191.50181000000003,285.26557);r.bezierCurveTo(180.81154000000004,292.46974,165.85368000000003,281.37461,168.71196000000003,268.36097);r.bezierCurveTo(169.66342000000003,264.02899,174.42957000000004,258.84685,179.89636000000004,256.20042);r.bezierCurveTo(188.48844000000005,252.04107000000002,193.00795000000005,242.34352,190.58184000000006,233.27254000000002);r.bezierCurveTo(189.87870000000007,230.64358000000001,188.21908000000005,227.07100000000003,186.89381000000006,225.33348);r.bezierCurveTo(182.51221000000007,219.58889000000002,172.48125000000005,216.46373,166.00572000000005,218.82574);r.bezierCurveTo(160.88401000000005,220.69395,153.47334000000006,221.17446999999999,149.58323000000004,219.89061);r.bezierCurveTo(147.65941000000004,219.25570000000002,144.69894000000005,217.15717,143.00442000000004,215.22721);r.bezierCurveTo(140.25313000000003,212.09367,139.92347000000004,211.02317000000002,139.92347000000004,205.22251);r.bezierCurveTo(139.92347000000004,199.42185,140.25313000000003,198.35135,143.00442000000004,195.21781);r.bezierCurveTo(148.08184000000003,189.43495,155.59116000000003,188.31217999999998,166.73325000000003,191.66995999999997);r.bezierCurveTo(171.89873000000003,193.22662999999997,176.76581000000002,192.32402999999996,182.19737000000003,188.80213999999998);r.bezierCurveTo(186.99980000000002,185.68819,191.44125000000003,178.0236,191.44125000000003,172.85002999999998);r.bezierCurveTo(191.44125000000003,165.91124999999997,187.02605000000003,157.91411999999997,181.72540000000004,155.25199999999998);r.bezierCurveTo(168.68097000000003,148.70074999999997,164.62205000000003,137.69753999999998,171.78539000000004,128.30592);r.bezierCurveTo(178.71368000000004,119.22245999999998,190.67567000000003,120.01398999999998,197.23888000000002,129.99017999999998);r.bezierCurveTo(204.51058000000003,141.04331,214.32951000000003,144.72351999999998,224.37555000000003,140.16123);r.bezierCurveTo(235.23365000000004,135.23013999999998,238.86734000000004,125.44275999999999,234.78543000000002,112.12207);r.bezierCurveTo(233.16446000000002,106.83225999999999,234.54797000000002,101.56208,238.76789000000002,96.95178);r.bezierCurveTo(248.33151000000004,86.503446,267.39820000000003,96.55735,264.708,110.63005);r.bezierCurveTo(262.24834000000004,123.49681,263.43732,130.24138,269.17704000000003,135.9811);r.bezierCurveTo(273.84920000000005,140.65326,279.80664,142.46487,287.54524000000004,141.56671);r.bezierCurveTo(290.80029,141.18892,293.25246000000004,140.53831,292.99449000000004,140.12091);r.bezierCurveTo(292.73652000000004,139.70352,293.68403000000006,138.74196,295.10007,137.98412000000002);r.bezierCurveTo(296.51611,137.22628000000003,298.81193,134.66566000000003,300.2019,132.29385000000002);r.bezierCurveTo(303.47878000000003,126.70229000000002,307.77937000000003,123.14413000000002,312.28166000000004,122.29950000000002);r.bezierCurveTo(323.19238000000007,120.25263000000002,332.5219000000001,130.29284,330.36964000000006,141.76535);r.bezierCurveTo(329.6006300000001,145.86456,323.8285400000001,152.29884,317.5065000000001,156.10419000000002);r.bezierCurveTo(312.2969800000001,159.23989,308.17124000000007,167.72107000000003,308.8642700000001,173.86973);r.bezierCurveTo(309.6787300000001,181.09556,313.7704700000001,186.95133,320.2047800000001,190.09934);r.bezierCurveTo(326.1904100000001,193.02784000000003,330.20042000000007,193.13284000000002,338.9627100000001,190.59052000000003);r.bezierCurveTo(344.9917000000001,188.84125000000003,350.1988400000001,189.89377000000002,354.59001000000006,193.74927000000002);r.bezierCurveTo(368.2933100000001,205.78092000000004,353.68808000000007,226.52374000000003,336.55395000000004,219.36465);r.bezierCurveTo(323.93852000000004,214.09358,308.93266000000006,224.16784,308.71798000000007,238.05247);r.bezierCurveTo(308.6646800000001,241.50290999999999,311.2253800000001,248.07176,313.86683000000005,251.26035);r.bezierCurveTo(314.59179000000006,252.13548,316.54865000000007,253.7222,318.21540000000005,254.7864);r.bezierCurveTo(324.03371000000004,258.50135,328.85284000000007,263.67991,329.97401,267.42204);r.bezierCurveTo(332.95992,277.3881,325.11943,287.55831,314.45977000000005,287.54616999999996);r.bezierCurveTo(309.88386,287.54116999999997,305.3854400000001,284.53792999999996,300.84666000000004,278.45842999999996);r.bezierCurveTo(295.84636000000006,271.76072,288.36647000000005,267.87215,281.88796,268.60236999999995);r.bezierCurveTo(274.64614,269.41862999999995,268.80722000000003,273.50679999999994,265.64137,279.97756999999996);r.bezierCurveTo(263.21128,284.94451999999995,262.99769,286.21504999999996,263.64589,291.84819999999996);r.bezierCurveTo(265.39685000000003,307.06499999999994,264.64547,310.09781999999996,257.87161000000003,315.15523999999994);r.bezierCurveTo(254.81776000000002,317.43526999999995,246.76347000000004,318.2981699999999,242.80929000000003,316.76894999999996);r.lineTo(242.80929000000003,316.76894999999996);r.closePath();r.fillStyle=m(t,.1);r.fill();r.stroke();r.restore();r.restore();r.restore()}}function p(t,n,r,i,s){var o=e("#canvasEllipse")[0];var u=o.getContext("2d");var a=10;u.beginPath();u.moveTo(t+a,n);u.lineTo(t+r-a,n);u.quadraticCurveTo(t+r,n,t+r,n+a);u.lineTo(t+r,n+i-a);u.quadraticCurveTo(t+r,n+i,t+r-a,n+i);u.lineTo(t+a,n+i);u.quadraticCurveTo(t,n+i,t,n+i-a);u.lineTo(t,n+a);u.quadraticCurveTo(t,n,t+a,n);u.closePath();u.lineWidth=3;u.strokeStyle=s;if(g(s)>=.6){u.fillStyle=m(s,.1);u.fill()}u.stroke()}function d(e,t,n,r,i){e.beginPath();e.moveTo(t,n);e.lineTo(r,i);e.closePath();e.stroke()}function v(e,t,n,r,i,s,o){e.beginPath();e.rect(t,n,r,i);e.closePath();e.save();e.lineWidth=.75;e.shadowColor="rgba(0,0,0, 0.4)";e.shadowBlur=7;e.shadowOffsetX=2;e.shadowOffsetY=-2;e.strokeStyle=o;e.stroke();e.fillStyle=s;e.fill();e.restore()}function m(e,t){var n=e.slice(e.indexOf("(")+1,e.indexOf(")"));var r=n.split(",");return"rgba("+r[0]+","+r[1]+","+r[2]+","+t+")"}function g(e){var t=e.slice(e.indexOf("(")+1,e.indexOf(")"));var n=t.split(",");return n[3]}function y(){var t=e("#canvasEllipse")[0];var n=t.getContext("2d");n.clearRect(0,0,t.width,t.height)}function b(t){var n="rgba(0,0,0, 0.7)";var r=e("#canvasEllipse")[0];var i=r.getContext("2d");var o=120,a=70,f=415,l=20,c=(370-t*l)/t,h=265;var p=k(),g=new Array;var y=0;for(var b=0;b2){h=f+o+25}else{h=f+o+15}i.fillStyle="#000";i.textAlign="center";i.fillText(e("#label"+(b+1)).html(),a+b*c+b*l+c/2,h,200);i.strokeStyle=n;i.lineWidth=.4;d(i,a+b*c+b*l+c/2,f+o,a+b*c+b*l+c/2,f+o+5)}i.lineWidth=1;i.strokeStyle=n;d(i,50,f+o,50,f+35);d(i,50,f+o,450,f+o);i.lineWidth=.4;d(i,47,f+(o+48)/2,53,f+(o+48)/2);d(i,47,f+50,53,f+50);u(50,f+25,46,f+35,54,f+35,n);u(460,f+o,450,f+o-4,450,f+o+4,n);var w=C(),E=new Array;l=2,a=60;f+=o+50;var S=390+l,x=0;for(var b=0;b=0;b--){if(E[b]==0){continue}v(i,a+T,f+15,E[b]-l,20,m("rgb(156,106,156)",1/(b+1.5)),"rgba(0,0,0,0.5)");i.textAlign="center";i.fillStyle="white";if(E[b]-l<25){i.fillStyle="#000";i.fillText(b+1,(E[b]-l)/2+a+T,f+57+N);i.textAlign="left";i.fillText("("+w[b]+")",(E[b]-l)/2+a+T+6,f+57+N);if(N!=48){N+=12}else{N=0}}else{if(N>=24){N=0}i.fillText(w[b],(E[b]-l)/2+a+T,f+29);i.fillStyle="#000";i.fillText(b+1,(E[b]-l)/2+a+T,f+57+N);N=0}i.strokeStyle=n;i.lineWidth=.4;d(i,(E[b]-l)/2+a+T,f+40,(E[b]-l)/2+a+T,f+45);T+=E[b]}i.lineWidth=1;i.strokeStyle=n;d(i,50,f+40,460,f+40)}function w(e,t,n,r){if(s.shortNumber&&e.text().length>r){e.html("?")}var i=t-(e.text().length-1)/2*8;e.css("left",i).css("top",n)}function E(e){var t=e.length?e.length:0,n=e[0]instanceof Array?e[0].length:0;if(n===0||t===0){return[]}var r,i,s=[];for(r=0;r';o+='off';r+=1;if(r>n){i=";display:none"}});o+="";$t.append(o);e("*[id^=item]").hover(function(){e(this).css("opacity",.75);e(this).css("box-shadow","0px 0px 8px 1px lightgrey")},function(){if(e(this).children("span").text()==="off"){e(this).css("opacity",.5)}e(this).css("box-shadow","none")});e("*[id^=item]").click(function(){var t=null;if(e(this).children("span").text()==="off"){t=D(e(this).attr("name"))}else{t=_(e(this).attr("name"))}if(s.searchInput!=null){s.searchInput.val("");if(s.searchStatus!=null){s.searchStatus.text("")}}y();if(s.displayMode=="edwards"){x(n)}else{S(n)}if(s.displayStat){b(n)}if(t!="resultC000000"){e("#"+t).show()}})}function N(){var n=new Array;var r=new Array;r[0]=new Array;r[1]=new Array;r[2]=new Array;r[3]=new Array;r[4]=new Array;r[5]=new Array;for(u=0;u0){if(r[u][i[t]]){r[u][i[t]]++}else{r[u][i[t]]=1}n[i[t]]="C"}}}for(t=0;t<6;t++){for(tt in r[t]){if(n[tt]){n[tt]=n[tt]+"1"}}for(cl in n){if(n[cl].length0){e(this).removeClass("number-empty")}})}function O(){if(s.series.length>1){return new Array("list",s.series.length)}else{if(s.series[0]!=undefined&&s.series[0].name.A){var e=0;for(i in s.series[0].name){e++}return new Array("count",e)}else{return new Array("list",s.series.length)}}}function M(t,n,r){$t=t;var s='
';s+='';s+='';s+='";s+="
";$t.append(s);var o=e("#canvasExport")[0];var u=o.getContext("2d");for(i=0;i<3;i++){u.lineWidth=3;u.beginPath();u.lineCap="round";u.moveTo(5,5+i*5.2);u.lineTo(20,5+i*5.2);u.strokeStyle="#666";u.stroke()}var a=e("#menu");var f=e("#canvasExport").css("background");e("#format-png").click(function(t){e("#canvasExport").css("background",f);e("#canvasExport").css("border-color","white");e("#canvasExport").hover(function(){e(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");e(this).css("border","1px solid #6688AA");e(this).css("border-radius","3px")},function(){e(this).css("background",f);e(this).css("border-color","white")});a.hide();html2canvas(e("#frame"),{onrendered:function(t){var n=t.toDataURL("image/png");e("#data-export").attr("href",n);e("#data-export").attr("download","jVenn_chart.png");e("#data-export")[0].click()}})});e("#format-csv").click(function(t){e("#canvasExport").css("background",f);e("#canvasExport").css("border-color","white");e("#canvasExport").hover(function(){e(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");e(this).css("border","1px solid #6688AA");e(this).css("border-radius","3px")},function(){e(this).css("background",f);e(this).css("border-color","white")});a.hide();var n=new Array,r=false;e("*[id^=resultC]").each(function(){if(!this.empty){var e=new Array,t=this.listnames.join("|");if(t.indexOf(",")>=0){r=true;t=t.replace(/,/g,"_")}e.push(t);for(var i in this.list){t=this.list[i];if(this.list[i].indexOf(",")>=0){r=true;t=this.list[i].replace(/,/g,"_")}e.push(t)}n.push(e)}});var i="data:text/csv;charset=utf-8,";if(r){i+="##\n## Warning: comma(s) have been replaced by underscore(s)\n##\n"}E(n).forEach(function(e,t){dataString=e.join(",");i+=t<=e.length?dataString+"\n":dataString});var s=encodeURI(i);e("#data-export").attr("href",s);e("#data-export").attr("download","jVenn.csv");e("#data-export")[0].click()});e("#canvasExport").click(function(t){e(this).css("background","linear-gradient(to bottom, #AECEFF, white) repeat scroll 0 0 transparent");e(this).css("border","1px solid #6688AA");e("#canvasExport").unbind("mouseenter mouseleave");a.show();if(a.is(":visible")){e(document).mouseup(function(t){if(a.has(t.target).length===0){e("#canvasExport").css("background",f);e("#canvasExport").css("border-color","white");e("#canvasExport").hover(function(){e(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");e(this).css("border","1px solid #6688AA");e(this).css("border-radius","3px")},function(){e(this).css("background",f);e(this).css("border-color","white")});a.hide()}})}var n=e("div[id^=format-]").css("background");e("div[id^=format-]").hover(function(){e(this).css("background","rgba(69,114,165,0.75)");e(this).css("color","white")},function(){e(this).css("background",n);e(this).css("color","")})});e("#canvasExport").hover(function(){e(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");e(this).css("border","1px solid #6688AA");e(this).css("border-radius","3px")},function(){e(this).css("background",f);e(this).css("border-color","white")})}function _(t,n){var n=n==null?true:n;var r=null;e("*[id^=label]").each(function(){if(e(this).html()==t){e(this).css("opacity",.1);e(this).removeClass("is-selected");var n=e(this).attr("id");r=n.charAt(n.length-1)}});legend_button=e("#item-"+r);legend_button.children("span").css("margin-left","0px");legend_button.css("opacity",.5);legend_button.children("span").text("off");var i="resultC000000";e(".is-selected").each(function(){var t=e(this).attr("id");var n=6+parseInt(t.charAt(t.length-1));i=i.substr(0,n)+1+i.substr(n+1)});if(i=="resultC000000"&&n){e(".number-black").each(function(){e(this).css("opacity",1)});e("*[id^=label]").each(function(){e(this).css("opacity",.6)})}else{e(".number-black").each(function(){if(e(this).attr("id")==i){e(this).css("opacity",1)}else{e(this).css("opacity",.1)}})}return i}function D(t){var n=null;e("*[id^=label]").each(function(){if(e(this).html()==t){e(this).css("opacity",.6);e(this).addClass("is-selected");var r=e(this).attr("id");n=r.charAt(r.length-1)}else if(!e(this).hasClass("is-selected")){e(this).css("opacity",.1)}});legend_button=e("#item-"+n);legend_button.children("span").css("margin-left","13px");legend_button.css("opacity",.75);legend_button.css("color","black");legend_button.children("span").text("on");var r="resultC000000";e(".is-selected").each(function(){var t=e(this).attr("id");var n=6+parseInt(t.charAt(t.length-1));r=r.substr(0,n)+1+r.substr(n+1)});e(".number-black").each(function(){if(e(this).attr("id")==r){e(this).css("opacity",1)}else{e(this).css("opacity",.1)}});return r}function P(t,n){var n=n==null?1:n;var r=new Array;var i="resultC000000";var o=0;e("*[id^=label]").each(function(){if(e(this).html()!=""){r[e(this).html()]="unselected"}});if(t==""||n>t.length){for(var u in r){i=_(u)}}else{var a=null;var f=false;e(".number-black:not(.number-empty)").each(function(){for(var e=0;et.length){s.searchStatus.text("")}else if(o==0){s.searchStatus.text("not found")}else if(o==1){s.searchStatus.text("found")}else if(o>1){s.searchStatus.text("ambiguous")}}y();if(s.displayMode=="edwards"){x(O()[1])}else{S(O()[1])}if(s.displayStat){b(O()[1])}if(i!="resultC000000"){e("#"+i).show()}}var r={series:[{name:"Actors",data:["Marilyn Monroe","Arnold Schwarzenegger","Jack Nicholson","Barbra Streisand","Robert de Niro","Dean Martin","Harrison Ford"]},{name:"Singers",data:["Freddy Mercury","Barbra Streisand","Dean Martin","Ricky Martin","Celine Dion","Marilyn Monroe"]}],fnClickCallback:function(){var e="";if(this.listnames.length==1){e+="Elements only in "}else{e+="Common elements in "}for(name in this.listnames){e+=this.listnames[name]+" "}e+=":\n";for(val in this.list){e+=this.list[val]+"\n"}alert(e)},disableClick:false,useValues:false,exporting:true,displayMode:"classic",displayStat:false,shortNumber:true,searchInput:null,searchStatus:null,searchMinSize:1,colors:["rgb(0,102,0)","rgb(90,155,212)","rgb(241,90,96)","rgb(250,220,91)","rgb(255,117,0)","rgb(192,152,83)"]};var s=e.extend(r,n);this.each(function(){var t=e(this);var n=0;if(s.displayStat){n=280}t.css({width:"500px",height:""+(450+n)+"px"});e("").appendTo("body");var r=434,i=130;if(s.displayMode=="edwards"){r=10;i=425}e("").appendTo("body");e("").appendTo("body");var o='
';o+='';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+='
';o+="
";t.html(o);e("*[id^=resultC]").each(function(){e(this).html(0);e(this).addClass("number-empty")});var u=O();if(u[0]=="list"){N()}else if(u[0]=="count"){A()}if(s.searchInput!=null){s.searchInput.keyup(function(){P(s.searchInput.val(),s.searchMinSize)})}if(s.displayMode=="edwards"){x(u[1])}else{S(u[1])}if(s.displayStat){b(u[1])}if(s.exporting===true){M(t,n,u[0])}if(u[1]>=4){T(t,u[1])}e(".number-black").hover(function(){var t=false;e("*[id^=item]").each(function(){if(e(this).children("span").text()==="on"){t=true}});var n=false;if(s.searchInput.val()!=""){n=true}if(!t&&!n&&e(this).text()!==""){var r=this.listnames;var i=this;e("*[id^=label]").each(function(){if(r.indexOf(e(this).text())<0){e(this).css("opacity",.1)}else{e(this).css("opacity",.6)}});e(".number-black").each(function(){if(this!=i){e(this).css("opacity",.1)}});y();if(s.displayMode=="edwards"){x(u[1])}else{S(u[1])}if(s.displayStat){b(u[1])}}},function(){var t=false;e("*[id^=item]").each(function(){if(e(this).children("span").text()==="on"){t=true}});var n=false;if(s.searchInput.val()!=""){n=true}if(!t&&!n&&e(this).text()!==""){var r=this.listnames;e("*[id^=label]").each(function(){e(this).css("opacity",.5)});e(".number-black").each(function(){e(this).css("opacity",1)});y();if(s.displayMode=="edwards"){x(u[1])}else{S(u[1])}if(s.displayStat){b(u[1])}}})});return this}})(jQuery);(function(e,t,n){"use strict";function u(t){if(r.logging&&e.console&&e.console.log){e.console.log(t)}}function a(e,t,n,i,s,o){var u=r.Util.getCSS(t,e,s),a,f,l,c;if(u.length===1){c=u[0];u=[];u[0]=c;u[1]=c}if(u[0].toString().indexOf("%")!==-1){l=parseFloat(u[0])/100;f=n.width*l;if(e!=="backgroundSize"){f-=(o||i).width*l}}else{if(e==="backgroundSize"){if(u[0]==="auto"){f=i.width}else{if(u[0].match(/contain|cover/)){var h=r.Util.resizeBounds(i.width,i.height,n.width,n.height,u[0]);f=h.width;a=h.height}else{f=parseInt(u[0],10)}}}else{f=parseInt(u[0],10)}}if(u[1]==="auto"){a=f/i.width*i.height}else if(u[1].toString().indexOf("%")!==-1){l=parseFloat(u[1])/100;a=n.height*l;if(e!=="backgroundSize"){a-=(o||i).height*l}}else{a=parseInt(u[1],10)}return[f,a]}function f(e,t){var n=[];return{storage:n,width:e,height:t,clip:function(){n.push({type:"function",name:"clip",arguments:arguments})},translate:function(){n.push({type:"function",name:"translate",arguments:arguments})},fill:function(){n.push({type:"function",name:"fill",arguments:arguments})},save:function(){n.push({type:"function",name:"save",arguments:arguments})},restore:function(){n.push({type:"function",name:"restore",arguments:arguments})},fillRect:function(){n.push({type:"function",name:"fillRect",arguments:arguments})},createPattern:function(){n.push({type:"function",name:"createPattern",arguments:arguments})},drawShape:function(){var e=[];n.push({type:"function",name:"drawShape",arguments:e});return{moveTo:function(){e.push({name:"moveTo",arguments:arguments})},lineTo:function(){e.push({name:"lineTo",arguments:arguments})},arcTo:function(){e.push({name:"arcTo",arguments:arguments})},bezierCurveTo:function(){e.push({name:"bezierCurveTo",arguments:arguments})},quadraticCurveTo:function(){e.push({name:"quadraticCurveTo",arguments:arguments})}}},drawImage:function(){n.push({type:"function",name:"drawImage",arguments:arguments})},fillText:function(){n.push({type:"function",name:"fillText",arguments:arguments})},setVariable:function(e,t){n.push({type:"variable",name:e,arguments:t})}}}function l(e){return{zindex:e,children:[]}}var r={},i,s,o;r.Util={};r.Util.trimText=function(e){return function(t){if(e){return e.apply(t)}else{return((t||"")+"").replace(/^\s+|\s+$/g,"")}}}(String.prototype.trim);r.Util.parseBackgroundImage=function(e){var t=" \r\n ",n,r,i,s,o,u=[],a,f=0,l=0,c,h;var p=function(){if(n){if(r.substr(0,1)==='"'){r=r.substr(1,r.length-2)}if(r){h.push(r)}if(n.substr(0,1)==="-"&&(s=n.indexOf("-",1)+1)>0){i=n.substr(0,s);n=n.substr(s)}u.push({prefix:i,method:n.toLowerCase(),value:o,args:h})}h=[];n=i=r=o=""};p();for(var d=0,v=e.length;d-1){continue}switch(a){case'"':if(!c){c=a}else if(c===a){c=null}break;case"(":if(c){break}else if(f===0){f=1;o+=a;continue}else{l++}break;case")":if(c){break}else if(f===1){if(l===0){f=0;o+=a;p();continue}else{l--}}break;case",":if(c){break}else if(f===0){p();continue}else if(f===1){if(l===0&&!n.match(/^url$/i)){h.push(r);r="";o+=a;continue}}break}o+=a;if(f===0){n+=a}else{r+=a}}p();return u};r.Util.Bounds=function(t){var n,r={};if(t.getBoundingClientRect){n=t.getBoundingClientRect();r.top=n.top;r.bottom=n.bottom||n.top+n.height;r.left=n.left;r.width=n.width||n.right-n.left;r.height=n.height||n.bottom-n.top;return r}};r.Util.getCSS=function(e,o,u){function l(t,n){var r=e.runtimeStyle&&e.runtimeStyle[t],i,s=e.style;if(!/^-?[0-9]+\.?[0-9]*(?:px)?$/i.test(n)&&/^-?\d/.test(n)){i=s.left;if(r){e.runtimeStyle.left=e.currentStyle.left}s.left=t==="fontSize"?"1em":n||0;n=s.pixelLeft+"px";s.left=i;if(r){e.runtimeStyle.left=r}}if(!/^(thin|medium|thick)$/i.test(n)){return Math.round(parseFloat(n))+"px"}return n}var a,f=o.match(/^background(Size|Position)$/);if(i!==e){s=t.defaultView.getComputedStyle(e,null)}a=s[o];if(f){a=(a||"").split(",");a=a[u||0]||a[0]||"auto";a=r.Util.trimText(a).split(" ");if(o==="backgroundSize"&&(!a[0]||a[0].match(/cover|contain|auto/))){}else{a[0]=a[0].indexOf("%")===-1?l(o+"X",a[0]):a[0];if(a[1]===n){if(o==="backgroundSize"){a[1]="auto";return a}else{a[1]=a[0]}}a[1]=a[1].indexOf("%")===-1?l(o+"Y",a[1]):a[1]}}else if(/border(Top|Bottom)(Left|Right)Radius/.test(o)){var c=a.split(" ");if(c.length<=1){c[1]=c[0]}c[0]=parseInt(c[0],10);c[1]=parseInt(c[1],10);a=c}return a};r.Util.resizeBounds=function(e,t,n,r,i){var s=n/r,o=e/t,u,a;if(!i||i==="auto"){u=n;a=r}else{if(s26);return t};r.Generate.ListRoman=function(e){var t=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"],n=[1e3,900,500,400,100,90,50,40,10,9,5,4,1],r="",i,s=t.length;if(e<=0||e>=4e3){return e}for(i=0;i=n[i]){e-=n[i];r+=t[i]}}return r}})();r.Parse=function(i,s){function y(){return Math.max(Math.max(c.body.scrollWidth,c.documentElement.scrollWidth),Math.max(c.body.offsetWidth,c.documentElement.offsetWidth),Math.max(c.body.clientWidth,c.documentElement.clientWidth))}function b(){return Math.max(Math.max(c.body.scrollHeight,c.documentElement.scrollHeight),Math.max(c.body.offsetHeight,c.documentElement.offsetHeight),Math.max(c.body.clientHeight,c.documentElement.clientHeight))}function w(e,t){var n=parseInt(v(e,t),10);return isNaN(n)?0:n}function E(e,t,n,r,i,s){if(s!=="transparent"){e.setVariable("fillStyle",s);e.fillRect(t,n,r,i);a+=1}}function S(e,t){switch(t){case"lowercase":return e.toLowerCase();case"capitalize":return e.replace(/(^|\s|:|-|\(|\))([a-z])/g,function(e,t,n){if(e.length>0){return t+n.toUpperCase()}});case"uppercase":return e.toUpperCase();default:return e}}function x(e){return/^(normal|none|0px)$/.test(e)}function T(e,t,n,i){if(e!==null&&r.Util.trimText(e).length>0){i.fillText(e,t,n);a+=1}}function N(e,t,n,i){var s=false,o=v(t,"fontWeight"),u=v(t,"fontFamily"),a=v(t,"fontSize");switch(parseInt(o,10)){case 401:o="bold";break;case 400:o="normal";break}e.setVariable("fillStyle",i);e.setVariable("font",[v(t,"fontStyle"),v(t,"fontVariant"),o,a,u].join(" "));e.setVariable("textAlign",s?"right":"left");if(n!=="none"){return r.Util.Font(u,a,c)}}function C(e,t,n,r,i){switch(t){case"underline":E(e,n.left,Math.round(n.top+r.baseline+r.lineWidth),n.width,1,i);break;case"overline":E(e,n.left,Math.round(n.top),n.width,1,i);break;case"line-through":E(e,n.left,Math.ceil(n.top+r.middle+r.lineWidth),n.width,1,i);break}}function k(e,t,n,i){var s;if(h.rangeBounds){if(n!=="none"||r.Util.trimText(t).length!==0){s=L(t,e.node,e.textOffset)}e.textOffset+=t.length}else if(e.node&&typeof e.node.nodeValue==="string"){var o=i?e.node.splitText(t.length):null;s=A(e.node);e.node=o}return s}function L(e,t,n){var r=c.createRange();r.setStart(t,n);r.setEnd(t,n+e.length);return r.getBoundingClientRect()}function A(e){var t=e.parentNode,n=c.createElement("wrapper"),i=e.cloneNode(true);n.appendChild(e.cloneNode(true));t.replaceChild(n,e);var s=r.Util.Bounds(n);t.replaceChild(i,n);return s}function O(e,t,n){var i=n.ctx,o=v(e,"color"),u=v(e,"textDecoration"),a=v(e,"textAlign"),f,l,c={node:t,textOffset:0};if(r.Util.trimText(t.nodeValue).length>0){t.nodeValue=S(t.nodeValue,v(e,"textTransform"));a=a.replace(["-webkit-auto"],["auto"]);l=!s.letterRendering&&/^(left|right|justify|auto)$/.test(a)&&x(v(e,"letterSpacing"))?t.nodeValue.split(/(\b| )/):t.nodeValue.split("");f=N(i,e,u,o);if(s.chinese){l.forEach(function(e,t){if(/.*[\u4E00-\u9FA5].*$/.test(e)){e=e.split("");e.unshift(t,1);l.splice.apply(l,e)}})}l.forEach(function(e,t){var n=k(c,e,u,t0||t[1]>0){e.push(["line",r[0].start.x,r[0].start.y]);r[0].curveTo(e);r[1].curveTo(e)}else{e.push(["line",s,o])}if(n[0]>0||n[1]>0){e.push(["line",i[0].start.x,i[0].start.y])}}function W(e,t,n,r,i,s,o){var u=[];if(t[0]>0||t[1]>0){u.push(["line",r[1].start.x,r[1].start.y]);r[1].curveTo(u)}else{u.push(["line",e.c1[0],e.c1[1]])}if(n[0]>0||n[1]>0){u.push(["line",s[0].start.x,s[0].start.y]);s[0].curveTo(u);u.push(["line",o[0].end.x,o[0].end.y]);o[0].curveToReversed(u)}else{u.push(["line",e.c2[0],e.c2[1]]);u.push(["line",e.c3[0],e.c3[1]])}if(t[0]>0||t[1]>0){u.push(["line",i[1].end.x,i[1].end.y]);i[1].curveToReversed(u)}else{u.push(["line",e.c4[0],e.c4[1]])}return u}function X(e,t,n){var r=e.left,i=e.top,s=e.width,o=e.height,u=t[0][0],a=t[0][1],f=t[1][0],l=t[1][1],c=t[2][0],h=t[2][1],p=t[3][0],d=t[3][1],v=s-f,m=o-c,g=s-h,y=o-d;return{topLeftOuter:R(r,i,u,a).topLeft.subdivide(.5),topLeftInner:R(r+n[3].width,i+n[0].width,Math.max(0,u-n[3].width),Math.max(0,a-n[0].width)).topLeft.subdivide(.5),topRightOuter:R(r+v,i,f,l).topRight.subdivide(.5),topRightInner:R(r+Math.min(v,s+n[3].width),i+n[0].width,v>s+n[3].width?0:f-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:R(r+g,i+m,h,c).bottomRight.subdivide(.5),bottomRightInner:R(r+Math.min(g,s+n[3].width),i+Math.min(m,o+n[0].width),Math.max(0,h-n[1].width),Math.max(0,c-n[2].width)).bottomRight.subdivide(.5),bottomLeftOuter:R(r,i+y,p,d).bottomLeft.subdivide(.5),bottomLeftInner:R(r+n[3].width,i+y,Math.max(0,p-n[3].width),Math.max(0,d-n[2].width)).bottomLeft.subdivide(.5)}}function V(e,t,n,r,i){var s=v(e,"backgroundClip"),o=[];switch(s){case"content-box":case"padding-box":z(o,r[0],r[1],t.topLeftInner,t.topRightInner,i.left+n[3].width,i.top+n[0].width);z(o,r[1],r[2],t.topRightInner,t.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width);z(o,r[2],r[3],t.bottomRightInner,t.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width);z(o,r[3],r[0],t.bottomLeftInner,t.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:z(o,r[0],r[1],t.topLeftOuter,t.topRightOuter,i.left,i.top);z(o,r[1],r[2],t.topRightOuter,t.bottomRightOuter,i.left+i.width,i.top);z(o,r[2],r[3],t.bottomRightOuter,t.bottomLeftOuter,i.left+i.width,i.top+i.height);z(o,r[3],r[0],t.bottomLeftOuter,t.topLeftOuter,i.left,i.top+i.height);break}return o}function $(e,t,n){var r=t.left,i=t.top,s=t.width,o=t.height,u,a,f,l,c,h,p=q(e),d=X(t,p,n),v={clip:V(e,d,n,p,t),borders:[]};for(u=0;u<4;u++){if(n[u].width>0){a=r;f=i;l=s;c=o-n[2].width;switch(u){case 0:c=n[0].width;h=W({c1:[a,f],c2:[a+l,f],c3:[a+l-n[1].width,f+c],c4:[a+n[3].width,f+c]},p[0],p[1],d.topLeftOuter,d.topLeftInner,d.topRightOuter,d.topRightInner);break;case 1:a=r+s-n[1].width;l=n[1].width;h=W({c1:[a+l,f],c2:[a+l,f+c+n[2].width],c3:[a,f+c],c4:[a,f+n[0].width]},p[1],p[2],d.topRightOuter,d.topRightInner,d.bottomRightOuter,d.bottomRightInner);break;case 2:f=f+o-n[2].width;c=n[2].width;h=W({c1:[a+l,f+c],c2:[a,f+c],c3:[a+n[3].width,f],c4:[a+l-n[2].width,f]},p[2],p[3],d.bottomRightOuter,d.bottomRightInner,d.bottomLeftOuter,d.bottomLeftInner);break;case 3:l=n[3].width;h=W({c1:[a,f+c+n[2].width],c2:[a,f],c3:[a+l,f+n[0].width],c4:[a+l,f+c]},p[3],p[0],d.bottomLeftOuter,d.bottomLeftInner,d.topLeftOuter,d.topLeftInner);break}v.borders.push({args:h,color:n[u].color})}}return v}function J(e,t){var n=e.drawShape();t.forEach(function(e,t){n[t===0?"moveTo":e[0]+"To"].apply(null,e.slice(1))});return n}function K(e,t,n){if(n!=="transparent"){e.setVariable("fillStyle",n);J(e,t);e.fill();a+=1}}function Q(e,t,n){var r=c.createElement("valuewrap"),i=["lineHeight","textAlign","fontFamily","color","fontSize","paddingLeft","paddingTop","width","height","border","borderLeftWidth","borderTopWidth"],s,o;i.forEach(function(t){try{r.style[t]=v(e,t)}catch(n){u("html2canvas: Parse: Exception caught in renderFormValue: "+n.message)}});r.style.borderColor="black";r.style.borderStyle="solid";r.style.display="block";r.style.position="absolute";if(/^(submit|reset|button|text|password)$/.test(e.type)||e.nodeName==="SELECT"){r.style.lineHeight=v(e,"height")}r.style.top=t.top+"px";r.style.left=t.left+"px";s=e.nodeName==="SELECT"?(e.options[e.selectedIndex]||0).text:e.value;if(!s){s=e.placeholder}o=c.createTextNode(s);r.appendChild(o);d.appendChild(r);O(e,o,n);d.removeChild(r)}function G(e){e.drawImage.apply(e,Array.prototype.slice.call(arguments,1));a+=1}function Y(n,i){var s=e.getComputedStyle(n,i);if(!s||!s.content||s.content==="none"||s.content==="-moz-alt-content"){return}var o=s.content+"",a=o.substr(0,1);if(a===o.substr(o.length-1)&&a.match(/'|"/)){o=o.substr(1,o.length-2)}var f=o.substr(0,3)==="url",l=t.createElement(f?"img":"span");l.className=m+"-before "+m+"-after";Object.keys(s).filter(Z).forEach(function(e){try{l.style[e]=s[e]}catch(t){u(["Tried to assign readonly property ",e,"Error:",t])}});if(f){l.src=r.Util.parseBackgroundImage(o)[0].args[0]}else{l.innerHTML=o}return l}function Z(t){return isNaN(e.parseInt(t,10))}function et(e,t){var n=Y(e,":before"),r=Y(e,":after");if(!n&&!r){return}if(n){e.className+=" "+m+"-before";e.parentNode.insertBefore(n,e);ht(n,t,true);e.parentNode.removeChild(n);e.className=e.className.replace(m+"-before","").trim()}if(r){e.className+=" "+m+"-after";e.appendChild(r);ht(r,t,true);e.removeChild(r);e.className=e.className.replace(m+"-after","").trim()}}function tt(e,t,n,r){var i=Math.round(r.left+n.left),s=Math.round(r.top+n.top);e.createPattern(t);e.translate(i,s);e.fill();e.translate(-i,-s)}function nt(e,t,n,r,i,s,o,u){var a=[];a.push(["line",Math.round(i),Math.round(s)]);a.push(["line",Math.round(i+o),Math.round(s)]);a.push(["line",Math.round(i+o),Math.round(u+s)]);a.push(["line",Math.round(i),Math.round(u+s)]);J(e,a);e.save();e.clip();tt(e,t,n,r);e.restore()}function rt(e,t,n){E(e,t.left,t.top,t.width,t.height,n)}function it(e,t,n,i,s){var o=r.Util.BackgroundSize(e,t,i,s),u=r.Util.BackgroundPosition(e,t,i,s,o),a=v(e,"backgroundRepeat").split(",").map(function(e){return e.trim()});i=ot(i,o);a=a[s]||a[0];switch(a){case"repeat-x":nt(n,i,u,t,t.left,t.top+u.top,99999,i.height);break;case"repeat-y":nt(n,i,u,t,t.left+u.left,t.top,i.width,99999);break;case"no-repeat":nt(n,i,u,t,t.left+u.left,t.top+u.top,i.width,i.height);break;default:tt(n,i,u,{top:t.top,left:t.left,width:i.width,height:i.height});break}}function st(e,t,n){var i=v(e,"backgroundImage"),s=r.Util.parseBackgroundImage(i),o,a=s.length;while(a--){i=s[a];if(!i.args||i.args.length===0){continue}var f=i.method==="url"?i.args[0]:i.value;o=H(f);if(o){it(e,t,n,o,a)}else{u("html2canvas: Error loading background:",i)}}}function ot(e,t){if(e.width===t.width&&e.height===t.height){return e}var n,r=c.createElement("canvas");r.width=t.width;r.height=t.height;n=r.getContext("2d");G(n,e,0,0,e.width,e.height,0,0,t.width,t.height);return r}function ut(e,t,n){var r=v(t,"opacity")*(n?n.opacity:1);e.setVariable("globalAlpha",r);return r}function at(e,t,n){var i=f(!t?y():n.width,!t?b():n.height),o={ctx:i,zIndex:j(v(e,"zIndex"),t?t.zIndex:null),opacity:ut(i,e,t),cssPosition:v(e,"position"),borders:I(e),clip:t&&t.clip?r.Util.Extend({},t.clip):null};if(s.useOverflow===true&&/(hidden|scroll|auto)/.test(v(e,"overflow"))===true&&/(BODY)/i.test(e.nodeName)===false){o.clip=o.clip?B(o.clip,n):n}o.zIndex.children.push(o);return o}function ft(e,t,n){var r={left:t.left+e[3].width,top:t.top+e[0].width,width:t.width-(e[1].width+e[3].width),height:t.height-(e[0].width+e[2].width)};if(n){r=B(r,n)}return r}function lt(e,t,n){var i=r.Util.Bounds(e),s,o=p.test(e.nodeName)?"#efefef":v(e,"backgroundColor"),a=at(e,t,i),f=a.borders,l=a.ctx,c=ft(f,i,a.clip),h=$(e,i,f);J(l,h.clip);l.save();l.clip();if(c.height>0&&c.width>0){rt(l,i,o);st(e,c,l)}l.restore();h.borders.forEach(function(e){K(l,e.args,e.color)});if(!n){et(e,a)}switch(e.nodeName){case"IMG":if(s=H(e.getAttribute("src"))){F(l,e,s,i,f)}else{u("html2canvas: Error loading :"+e.getAttribute("src"))}break;case"INPUT":if(/^(text|url|email|submit|button|reset)$/.test(e.type)&&(e.value||e.placeholder).length>0){Q(e,i,a)}break;case"TEXTAREA":if((e.value||e.placeholder||"").length>0){Q(e,i,a)}break;case"SELECT":if((e.options||e.placeholder||"").length>0){Q(e,i,a)}break;case"LI":P(e,a,c);break;case"CANVAS":F(l,e,e,i,f);break}return a}function ct(e){return v(e,"display")!=="none"&&v(e,"visibility")!=="hidden"&&!e.hasAttribute("data-html2canvas-ignore")}function ht(e,t,n){if(ct(e)){t=lt(e,t,n)||t;if(!p.test(e.nodeName)){r.Util.Children(e).forEach(function(r){if(r.nodeType===1){ht(r,t,n)}else if(r.nodeType===3){O(e,r,t)}})}}}function pt(e,t){function u(e){var t=r.Util.Children(e),n=t.length,i,s,a,f,l;for(l=0;l/g,">")}else if(f.nodeType===1){if(!/^(script|meta|title)$/.test(f.nodeName.toLowerCase())){o+="<"+f.nodeName.toLowerCase();if(f.hasAttributes()){i=f.attributes;a=i.length;for(s=0;s"}}}}var n=new Image,i=y(),s=b(),o="";u(e);n.src=["data:image/svg+xml,","","","",o.replace(/\#/g,"%23"),"","",""].join("");n.onload=function(){t.svgRender=n}}function dt(){var e=lt(o,null);if(h.svgRendering){pt(t.documentElement,e)}Array.prototype.slice.call(o.children,0).forEach(function(t){ht(t,e)});e.backgroundColor=v(t.documentElement,"backgroundColor");d.removeChild(g);return e}e.scroll(0,0);var o=s.elements===n?t.body:s.elements[0],a=0,c=o.ownerDocument,h=r.Util.Support(s,c),p=new RegExp("("+s.ignoreElements+")"),d=c.body,v=r.Util.getCSS,m="___html2canvas___pseudoelement",g=c.createElement("style");g.innerHTML="."+m+'-before:before { content: "" !important; display: none !important; }'+"."+m+'-after:after { content: "" !important; display: none !important; }';d.appendChild(g);i=i||{};var R=function(e){return function(t,n,r,i){var s=r*e,o=i*e,u=t+r,a=n+i;return{topLeft:U({x:t,y:a},{x:t,y:a-o},{x:u-s,y:n},{x:u,y:n}),topRight:U({x:t,y:n},{x:t+s,y:n},{x:u,y:a-o},{x:u,y:a}),bottomRight:U({x:u,y:n},{x:u,y:n+o},{x:t+s,y:a},{x:t,y:a}),bottomLeft:U({x:u,y:a},{x:u-s,y:a},{x:t,y:n+o},{x:t,y:n})}}}(4*((Math.sqrt(2)-1)/3));return dt()};r.Preload=function(i){function y(e){v.href=e;v.href=v.href;var t=v.protocol+v.host;return t===o}function b(){u("html2canvas: start: images: "+s.numLoaded+" / "+s.numTotal+" (failed: "+s.numFailed+")");if(!s.firstRun&&s.numLoaded>=s.numTotal){u("Finished loading images: # "+s.numTotal+" (failed: "+s.numFailed+")");if(typeof i.complete==="function"){i.complete(s)}}}function w(t,r,o){var u,a=i.proxy,f;v.href=t;t=v.href;u="html2canvas_"+l++;o.callbackname=u;if(a.indexOf("?")>-1){a+="&"}else{a+="?"}a+="url="+encodeURIComponent(t)+"&callback="+u;f=h.createElement("script");e[u]=function(t){if(t.substring(0,6)==="error:"){o.succeeded=false;s.numLoaded++;s.numFailed++;b()}else{k(r,o);r.src=t}e[u]=n;try{delete e[u]}catch(i){}f.parentNode.removeChild(f);f=null;delete o.script;delete o.callbackname};f.setAttribute("type","text/javascript");f.setAttribute("src",a);o.script=f;e.document.body.appendChild(f)}function E(t,n){var i=e.getComputedStyle(t,n),s=i.content;if(s.substr(0,3)==="url"){a.loadImage(r.Util.parseBackgroundImage(s)[0].args[0])}N(i.backgroundImage,t)}function S(e){E(e,":before");E(e,":after")}function x(e,t){var i=r.Generate.Gradient(e,t);if(i!==n){s[e]={img:i,succeeded:true};s.numTotal++;s.numLoaded++;b()}}function T(e){return e&&e.method&&e.args&&e.args.length>0}function N(e,t){var i;r.Util.parseBackgroundImage(e).filter(T).forEach(function(e){if(e.method==="url"){a.loadImage(e.args[0])}else if(e.method.match(/\-?gradient$/)){if(i===n){i=r.Util.Bounds(t)}x(e.value,i)}})}function C(e){var t=false;try{r.Util.Children(e).forEach(function(e){C(e)})}catch(i){}try{t=e.nodeType}catch(s){t=false;u("html2canvas: failed to access some element's nodeType - Exception: "+s.message)}if(t===1||t===n){S(e);try{N(r.Util.getCSS(e,"backgroundImage"),e)}catch(i){u("html2canvas: failed to get background-image - Exception: "+i.message)}N(e)}}function k(t,r){t.onload=function(){if(r.timer!==n){e.clearTimeout(r.timer)}s.numLoaded++;r.succeeded=true;t.onerror=t.onload=null;b()};t.onerror=function(){if(t.crossOrigin==="anonymous"){e.clearTimeout(r.timer);if(i.proxy){var n=t.src;t=new Image;r.img=t;t.src=n;w(t.src,t,r);return}}s.numLoaded++;s.numFailed++;r.succeeded=false;t.onerror=t.onload=null;b()}}var s={numLoaded:0,numFailed:0,numTotal:0,cleanupDone:false},o,a,f,l=0,c=i.elements[0]||t.body,h=c.ownerDocument,p=h.images,d=p.length,v=h.createElement("a"),m=function(e){return e.crossOrigin!==n}(new Image),g;v.href=e.location.href;o=v.protocol+v.host;a={loadImage:function(t){var r,o;if(t&&s[t]===n){r=new Image;if(t.match(/data:image\/.*;base64,/i)){r.src=t.replace(/url\(['"]{0,}|['"]{0,}\)$/ig,"");o=s[t]={img:r};s.numTotal++;k(r,o)}else if(y(t)||i.allowTaint===true){o=s[t]={img:r};s.numTotal++;k(r,o);r.src=t}else if(m&&!i.allowTaint&&i.useCORS){r.crossOrigin="anonymous";o=s[t]={img:r};s.numTotal++;k(r,o);r.src=t;r.customComplete=function(){if(!this.img.complete){this.timer=e.setTimeout(this.img.customComplete,100)}else{this.img.onerror()}}.bind(o);r.customComplete()}else if(i.proxy){o=s[t]={img:r};s.numTotal++;w(t,r,o)}}},cleanupDOM:function(r){var o,a;if(!s.cleanupDone){if(r&&typeof r==="string"){u("html2canvas: Cleanup because: "+r)}else{u("html2canvas: Cleanup after timeout: "+i.timeout+" ms.")}for(a in s){if(s.hasOwnProperty(a)){o=s[a];if(typeof o==="object"&&o.callbackname&&o.succeeded===n){e[o.callbackname]=n;try{delete e[o.callbackname]}catch(f){}if(o.script&&o.script.parentNode){o.script.setAttribute("src","about:blank");o.script.parentNode.removeChild(o.script)}s.numLoaded++;s.numFailed++;u("html2canvas: Cleaned up failed img: '"+a+"' Steps: "+s.numLoaded+" / "+s.numTotal)}}}if(e.stop!==n){e.stop()}else if(t.execCommand!==n){t.execCommand("Stop",false)}if(t.close!==n){t.close()}s.cleanupDone=true;if(!(r&&typeof r==="string")){b()}}},renderingDone:function(){if(g){e.clearTimeout(g)}}};if(i.timeout>0){g=e.setTimeout(a.cleanupDOM,i.timeout)}u("html2canvas: Preload starts: finding background-images");s.firstRun=true;C(c);u("html2canvas: Preload: Finding images");for(f=0;f0){r.push(e);i.push(e.zindex)}else{t.push(e)}});i.sort(function(e,t){return e-t});i.forEach(function(e){var t;r.some(function(n,r){t=r;return n.zindex===e});n(r.splice(t,1)[0])})};n(e.zIndex);return t}function o(e){var t;if(typeof i.renderer==="string"&&r.Renderer[e]!==n){t=r.Renderer[e](i)}else if(typeof e==="function"){t=e(i)}else{throw new Error("Unknown renderer")}if(typeof t!=="function"){throw new Error("Invalid renderer defined")}return t}return o(i.renderer)(e,i,t,s(e),r)};r.Util.Support=function(e,t){function r(){var e=new Image,r=t.createElement("canvas"),i=r.getContext===n?false:r.getContext("2d");if(i===false){return false}r.width=r.height=10;e.src=["data:image/svg+xml,","","","
","sup","
","
","
"].join("");try{i.drawImage(e,0,0);r.toDataURL()}catch(s){return false}u("html2canvas: Parse: SVG powered rendering available");return true}function i(){var e,n,r,i,s=false;if(t.createRange){e=t.createRange();if(e.getBoundingClientRect){n=t.createElement("boundtest");n.style.height="123px";n.style.display="block";t.body.appendChild(n);e.selectNode(n);r=e.getBoundingClientRect();i=r.height;if(i===123){s=true}t.body.removeChild(n)}}return s}return{rangeBounds:i(),svgRendering:e.svgRendering&&r()}};e.html2canvas=function(t,n){t=t.length?t:[t];var i,s,o={logging:false,elements:t,background:"#fff",proxy:null,timeout:0,useCORS:false,allowTaint:false,svgRendering:false,ignoreElements:"IFRAME|OBJECT|PARAM",useOverflow:true,letterRendering:false,chinese:false,width:null,height:null,taintTest:true,renderer:"Canvas"};o=r.Util.Extend(n,o);r.logging=o.logging;o.complete=function(e){if(typeof o.onpreloaded==="function"){if(o.onpreloaded(e)===false){return}}i=r.Parse(e,o);if(typeof o.onparsed==="function"){if(o.onparsed(i)===false){return}}s=r.Renderer(i,o);if(typeof o.onrendered==="function"){o.onrendered(s)}};e.setTimeout(function(){r.Preload(o)},0);return{render:function(e,t){return r.Renderer(e,r.Util.Extend(t,o))},parse:function(e,t){return r.Parse(e,r.Util.Extend(t,o))},preload:function(e){return r.Preload(r.Util.Extend(e,o))},log:u}};e.html2canvas.log=u;e.html2canvas.Renderer={Canvas:n};r.Renderer.Canvas=function(e){function f(e,t){e.beginPath();t.forEach(function(t){e[t.name].apply(e,t["arguments"])});e.closePath()}function l(e){if(i.indexOf(e["arguments"][0].src)===-1){o.drawImage(e["arguments"][0],0,0);try{o.getImageData(0,0,1,1)}catch(t){s=r.createElement("canvas");o=s.getContext("2d");return false}i.push(e["arguments"][0].src)}return true}function c(e){return e==="transparent"||e==="rgba(0, 0, 0, 0)"}function h(t,n){switch(n.type){case"variable":t[n.name]=n["arguments"];break;case"function":if(n.name==="createPattern"){if(n["arguments"][0].width>0&&n["arguments"][0].height>0){try{t.fillStyle=t.createPattern(n["arguments"][0],"repeat")}catch(r){u("html2canvas: Renderer: Error creating pattern",r.message)}}}else if(n.name==="drawShape"){f(t,n["arguments"])}else if(n.name==="drawImage"){if(n["arguments"][8]>0&&n["arguments"][7]>0){if(!e.taintTest||e.taintTest&&l(n)){t.drawImage.apply(t,n["arguments"])}}}else{t[n.name].apply(t,n["arguments"])}break}}e=e||{};var r=t,i=[],s=t.createElement("canvas"),o=s.getContext("2d"),a=e.canvas||r.createElement("canvas");return function(e,t,r,i,s){var o=a.getContext("2d"),f,l,p,d,v,m;a.width=a.style.width=t.width||e.ctx.width;a.height=a.style.height=t.height||e.ctx.height;m=o.fillStyle;o.fillStyle=c(e.backgroundColor)&&t.background!==n?t.background:e.backgroundColor;o.fillRect(0,0,a.width,a.height);o.fillStyle=m;if(t.svgRendering&&e.svgRender!==n){o.drawImage(e.svgRender,0,0)}else{for(l=0,p=i.length;l=0.6){context.fillStyle=changeOpacity(strokecolor,0.1);context.fill()}context.stroke();context.restore()}function drawDoubleCircle(strokecolor){var canvas=$("#canvasEllipse")[0];var context=canvas.getContext("2d");var counterClockwise=false;context.strokeStyle=strokecolor;context.lineWidth=3;context.beginPath();context.arc(120,205,90,0.25*Math.PI,1.75*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(370,205,90,1.25*Math.PI,0.75*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(245,360,110,1.3*Math.PI,1.7*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(245,50,110,0.3*Math.PI,0.7*Math.PI,counterClockwise);context.stroke();if(getOpacity(strokecolor)>=0.6){context.save();context.beginPath();context.moveTo(0,0);context.lineTo(500,0);context.lineTo(500,415);context.lineTo(0,415);context.closePath();context.clip();context.strokeStyle="rgba(0,0,0,0)";context.lineCap="butt";context.lineJoin="miter";context.miterLimit=4;context.save();context.restore();context.save();context.restore();context.save();context.translate(-11,-633);context.save();context.strokeStyle="rgba(0,0,0,0)";context.translate(0,636);context.beginPath();context.moveTo(116.68996,288.55847);context.bezierCurveTo(114.18984,288.06339,109.64415,287.21717,106.58844,286.67797);context.bezierCurveTo(91.905866,284.08711,74.873379,272.58587,62.202665,256.70632);context.bezierCurveTo(50.11906,241.56257,44.228048,226.01748,43.257799,206.71498);context.bezierCurveTo(41.560634,172.95091,57.502272,144.04252,87.684649,126.1518);context.bezierCurveTo(113.85468,110.63942,151.67555,111.15555,176.27348,127.36075);context.bezierCurveTo(180.25579,129.9843,185.18402,133.59167,187.22511,135.37712);context.bezierCurveTo(194.61144,141.83833,205.94366,148.05089,218.69964,152.6321);context.bezierCurveTo(245.95179,162.41951,276.56952,161.09979,302.53531,149.01853);context.bezierCurveTo(312.6675,144.30426,319.21466,140.2303,324.17128,135.55561);context.bezierCurveTo(333.89739,126.38271,351.79473,118.14202,367.2078,115.73978);context.bezierCurveTo(378.37729,113.99893,395.02294,115.10838,406.09867,118.33191);context.bezierCurveTo(427.39105,124.52894,447.81205,140.89771,458.49308,160.32947);context.bezierCurveTo(466.21542,174.37855,468.14135,182.79987,468.18707,202.71743);context.bezierCurveTo(468.21647,215.53507,467.84247,219.76844,466.13688,225.92329);context.bezierCurveTo(460.34647,246.81871,443.97395,267.47015,423.77634,279.35469);context.bezierCurveTo(411.54528,286.5516,399.98405,289.09284,379.8347,289.01339);context.bezierCurveTo(354.9023,288.91509,338.08242,282.66271,322.01486,267.52032);context.bezierCurveTo(312.09403,258.17073,292.45029,249.89036,272.3276,246.57577);context.bezierCurveTo(254.94398,243.71237,234.25917,245.61216,218.58555,251.51169);context.bezierCurveTo(206.28086,256.14317,191.57339,264.45267,188.72361,268.38324);context.bezierCurveTo(186.89118,270.91063,172.96096,280.26608,166.96463,282.99643);context.bezierCurveTo(164.03705,284.32947,158.23249,286.16623,154.06561,287.07812);context.bezierCurveTo(145.28291,289.00016,123.31455,289.87027,116.68996,288.55847);context.lineTo(116.68996,288.55847);context.closePath();context.fillStyle=changeOpacity(strokecolor,0.1);context.fill();context.stroke();context.restore();context.restore();context.restore()}}function drawCross(strokecolor){var canvas=$("#canvasEllipse")[0];var context=canvas.getContext("2d");var counterClockwise=false;context.strokeStyle=strokecolor;context.lineWidth=3;context.beginPath();context.arc(145,205,40,0.35*Math.PI,1.65*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(345,205,40,1.35*Math.PI,0.65*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(245,100,40,0.8*Math.PI,2.2*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(245,310,40,1.82*Math.PI,1.18*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(182,140,35,1.84*Math.PI,0.7*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(308,140,35,0.3*Math.PI,1.18*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(182,270,35,1.3*Math.PI,0.2*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(308,270,35,0.8*Math.PI,1.7*Math.PI,counterClockwise);context.stroke();if(getOpacity(strokecolor)>=0.6){context.save();context.beginPath();context.moveTo(0,0);context.lineTo(500,0);context.lineTo(500,415);context.lineTo(0,415);context.closePath();context.clip();context.strokeStyle="rgba(0,0,0,0)";context.lineCap="butt";context.lineJoin="miter";context.miterLimit=4;context.save();context.restore();context.save();context.restore();context.save();context.translate(-140,-212);context.save();context.strokeStyle="rgba(0,0,0,0)";context.translate(139,217);context.beginPath();context.moveTo(234.95394,341.16933);context.bezierCurveTo(231.80732,340.135,227.61571,338.28931,225.63926,337.0678);context.bezierCurveTo(221.28249,334.37517,214.37807,326.70737,211.83772,321.74032);context.bezierCurveTo(207.9414,314.12196,208.45043,293.37118,212.67719,287.51943);context.bezierCurveTo(215.87649,283.09018,218.95801,274.65101,219.59244,268.58113);context.bezierCurveTo(220.4525,260.35249,218.0029,251.63115,212.48275,243.26838);context.bezierCurveTo(206.02273,233.48176,198.89664,229.43795,185.95006,228.21201);context.bezierCurveTo(178.17816,227.47606,172.06373,228.9391,162.89332,233.72894);context.bezierCurveTo(156.28128,237.18252,155.23208,237.42228,146.73088,237.42244);context.bezierCurveTo(135.51808,237.42266,128.41302,234.90269,121.10778,228.33466);context.bezierCurveTo(114.30638,222.21962,111.33466,216.76216,109.78745,207.54526);context.bezierCurveTo(108.21951,198.2049,109.69855,187.35654,113.42449,180.86914);context.bezierCurveTo(116.7031,175.16054,123.50535,169.17129,130.61112,165.73661);context.bezierCurveTo(135.84135,163.2085,137.81975,162.82216,145.72073,162.78605);context.bezierCurveTo(154.43018,162.74625,155.21524,162.9348,164.40855,167.27447);context.bezierCurveTo(173.55745,171.5932,174.43144,171.80519,183.14876,171.82016);context.bezierCurveTo(191.71748,171.83496,192.78155,171.59418,200.06856,167.99274);context.bezierCurveTo(206.71571,164.70754,208.40559,163.31437,211.70876,158.39629);context.bezierCurveTo(216.86766,150.71523,219.00004,144.97677,219.6497,137.02646);context.bezierCurveTo(220.25703,129.59414,217.81806,120.60799,213.36866,113.8845);context.bezierCurveTo(208.31047,106.24104,207.6043,86.789031,212.06743,78.040591);context.bezierCurveTo(215.36468,71.577421,222.4825,64.790661,229.83172,61.10252);context.bezierCurveTo(236.05208,57.980887,237.41276,57.688629,245.72583,57.688629);context.bezierCurveTo(253.41441,57.688629,255.67446,58.093435,260.37304,60.312151);context.bezierCurveTo(277.08479,68.203604,286.51407,86.234977,282.57463,102.76767);context.bezierCurveTo(281.86319,105.75339,279.29147,112.06009,276.85971,116.78255);context.bezierCurveTo(273.65874,122.99881,272.27383,127.0461,271.84239,131.44528);context.bezierCurveTo(270.33639,146.80139,279.61874,162.9296,293.203,168.5596);context.bezierCurveTo(306.55802,174.09459,314.0903,173.65241,329.06341,166.45448);context.bezierCurveTo(336.00568,163.11717,337.40021,162.8096,345.73093,162.77846);context.bezierCurveTo(353.9601,162.74776,355.45355,163.05339,361.47832,166.00153);context.bezierCurveTo(369.5321,169.94254,376.64791,177.20452,380.34034,185.25103);context.bezierCurveTo(382.56443,190.09773,382.99715,192.49377,383.02568,200.12014);context.bezierCurveTo(383.05628,208.31117,382.74275,209.86176,379.85932,215.7775);context.bezierCurveTo(376.06519,223.56169,370.16378,229.56756,362.03349,233.9189);context.bezierCurveTo(351.45505,239.58048,339.73985,239.17006,326.65822,232.67959);context.bezierCurveTo(310.60731,224.7159,294.48693,227.24494,281.98739,239.68774);context.bezierCurveTo(270.03863,251.58229,268.408,270.18789,277.9291,285.99336);context.bezierCurveTo(284.32994,296.61906,285.13914,307.05507,280.51249,319.31069);context.bezierCurveTo(277.59599,327.03626,268.97014,335.93369,260.67155,339.77631);context.bezierCurveTo(253.04107,343.30956,243.10264,343.84789,234.95394,341.16933);context.lineTo(234.95394,341.16933);context.closePath();context.fillStyle=changeOpacity(strokecolor,0.1);context.fill();context.stroke();context.restore();context.restore();context.restore()}}function drawCross2(strokecolor){var canvas=$("#canvasEllipse")[0];var context=canvas.getContext("2d");var counterClockwise=false;context.strokeStyle=strokecolor;context.lineWidth=3;context.beginPath();context.arc(151,205,18,0.4*Math.PI,1.6*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(167,238,18,1.35*Math.PI,2.42*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(180,272,18,0.18*Math.PI,1.33*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(212,289,18,1.15*Math.PI,2.1*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(245,302,18,1.85*Math.PI,1.15*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(279,289,18,0.87*Math.PI,1.85*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(311,272,18,1.65*Math.PI,0.85*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(325,238,18,0.54*Math.PI,1.68*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(340,205,18,1.37*Math.PI,0.59*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(325,172,18,0.35*Math.PI,1.4*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(311,138,18,1.15*Math.PI,2.35*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(279,122,18,0.17*Math.PI,1.1*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(245,108,18,0.8*Math.PI,2.15*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(212,122,18,1.9*Math.PI,0.85*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(180,138,18,0.65*Math.PI,1.85*Math.PI,counterClockwise);context.stroke();context.beginPath();context.arc(167,172,18,1.6*Math.PI,0.7*Math.PI,counterClockwise);context.stroke();if(getOpacity(strokecolor)>=0.6){context.save();context.beginPath();context.moveTo(0,0);context.lineTo(500,0);context.lineTo(500,415);context.lineTo(0,415);context.closePath();context.clip();context.strokeStyle="rgba(0,0,0,0)";context.lineCap="butt";context.lineJoin="miter";context.miterLimit=4;context.save();context.restore();context.save();context.restore();context.save();context.translate(-4,-637);context.save();context.strokeStyle="rgba(0,0,0,0)";context.translate(0,637);context.beginPath();context.moveTo(242.80929,316.76895);context.bezierCurveTo(239.2558,315.3947,234.83257,308.84895,234.18254,304.00262);context.bezierCurveTo(233.85998,301.59777,234.27994,298.62012,235.27891,296.22928);context.bezierCurveTo(237.39948,291.15406,237.29592,285.99823,234.97058,280.87787);context.bezierCurveTo(231.58546,273.42388,224.01393,268.4215,216.0528,268.37923);context.bezierCurveTo(210.33377,268.34883,202.5103,272.78013,198.27794,278.44704);context.bezierCurveTo(196.41545,280.94083,193.36619,284.00917,191.50181,285.26557);context.bezierCurveTo(180.81154,292.46974,165.85368,281.37461,168.71196,268.36097);context.bezierCurveTo(169.66342,264.02899,174.42957,258.84685,179.89636,256.20042);context.bezierCurveTo(188.48844,252.04107,193.00795,242.34352,190.58184,233.27254);context.bezierCurveTo(189.8787,230.64358,188.21908,227.071,186.89381,225.33348);context.bezierCurveTo(182.51221,219.58889,172.48125,216.46373,166.00572,218.82574);context.bezierCurveTo(160.88401,220.69395,153.47334,221.17447,149.58323,219.89061);context.bezierCurveTo(147.65941,219.2557,144.69894,217.15717,143.00442,215.22721);context.bezierCurveTo(140.25313,212.09367,139.92347,211.02317,139.92347,205.22251);context.bezierCurveTo(139.92347,199.42185,140.25313,198.35135,143.00442,195.21781);context.bezierCurveTo(148.08184,189.43495,155.59116,188.31218,166.73325,191.66996);context.bezierCurveTo(171.89873,193.22663,176.76581,192.32403,182.19737,188.80214);context.bezierCurveTo(186.9998,185.68819,191.44125,178.0236,191.44125,172.85003);context.bezierCurveTo(191.44125,165.91125,187.02605,157.91412,181.7254,155.252);context.bezierCurveTo(168.68097,148.70075,164.62205,137.69754,171.78539,128.30592);context.bezierCurveTo(178.71368,119.22246,190.67567,120.01399,197.23888,129.99018);context.bezierCurveTo(204.51058,141.04331,214.32951,144.72352,224.37555,140.16123);context.bezierCurveTo(235.23365,135.23014,238.86734,125.44276,234.78543,112.12207);context.bezierCurveTo(233.16446,106.83226,234.54797,101.56208,238.76789,96.95178);context.bezierCurveTo(248.33151,86.503446,267.3982,96.55735,264.708,110.63005);context.bezierCurveTo(262.24834,123.49681,263.43732,130.24138,269.17704,135.9811);context.bezierCurveTo(273.8492,140.65326,279.80664,142.46487,287.54524,141.56671);context.bezierCurveTo(290.80029,141.18892,293.25246,140.53831,292.99449,140.12091);context.bezierCurveTo(292.73652,139.70352,293.68403,138.74196,295.10007,137.98412);context.bezierCurveTo(296.51611,137.22628,298.81193,134.66566,300.2019,132.29385);context.bezierCurveTo(303.47878,126.70229,307.77937,123.14413,312.28166,122.2995);context.bezierCurveTo(323.19238,120.25263,332.5219,130.29284,330.36964,141.76535);context.bezierCurveTo(329.60063,145.86456,323.82854,152.29884,317.5065,156.10419);context.bezierCurveTo(312.29698,159.23989,308.17124,167.72107,308.86427,173.86973);context.bezierCurveTo(309.67873,181.09556,313.77047,186.95133,320.20478,190.09934);context.bezierCurveTo(326.19041,193.02784,330.20042,193.13284,338.96271,190.59052);context.bezierCurveTo(344.9917,188.84125,350.19884,189.89377,354.59001,193.74927);context.bezierCurveTo(368.29331,205.78092,353.68808,226.52374,336.55395,219.36465);context.bezierCurveTo(323.93852,214.09358,308.93266,224.16784,308.71798,238.05247);context.bezierCurveTo(308.66468,241.50291,311.22538,248.07176,313.86683,251.26035);context.bezierCurveTo(314.59179,252.13548,316.54865,253.7222,318.2154,254.7864);context.bezierCurveTo(324.03371,258.50135,328.85284,263.67991,329.97401,267.42204);context.bezierCurveTo(332.95992,277.3881,325.11943,287.55831,314.45977,287.54617);context.bezierCurveTo(309.88386,287.54117,305.38544,284.53793,300.84666,278.45843);context.bezierCurveTo(295.84636,271.76072,288.36647,267.87215,281.88796,268.60237);context.bezierCurveTo(274.64614,269.41863,268.80722,273.5068,265.64137,279.97757);context.bezierCurveTo(263.21128,284.94452,262.99769,286.21505,263.64589,291.8482);context.bezierCurveTo(265.39685,307.065,264.64547,310.09782,257.87161,315.15524);context.bezierCurveTo(254.81776,317.43527,246.76347,318.29817,242.80929,316.76895);context.lineTo(242.80929,316.76895);context.closePath();context.fillStyle=changeOpacity(strokecolor,0.1);context.fill();context.stroke();context.restore();context.restore();context.restore()}}function drawRoundRect(x,y,width,height,strokecolor){var canvas=$("#canvasEllipse")[0];var context=canvas.getContext("2d");var radius=10;context.beginPath();context.moveTo(x+radius,y);context.lineTo(x+width-radius,y);context.quadraticCurveTo(x+width,y,x+width,y+radius);context.lineTo(x+width,y+height-radius);context.quadraticCurveTo(x+width,y+height,x+width-radius,y+height);context.lineTo(x+radius,y+height);context.quadraticCurveTo(x,y+height,x,y+height-radius);context.lineTo(x,y+radius);context.quadraticCurveTo(x,y,x+radius,y);context.closePath();context.lineWidth=3;context.strokeStyle=strokecolor;if(getOpacity(strokecolor)>=0.6){context.fillStyle=changeOpacity(strokecolor,0.1);context.fill()}context.stroke()}function drawAxis(context,startx,starty,endx,endy){context.beginPath();context.moveTo(startx,starty);context.lineTo(endx,endy);context.closePath();context.stroke()}function drawRectangle(context,x,y,w,h,fillcolor,strokecolor){context.beginPath();context.rect(x,y,w,h);context.closePath();context.save();context.lineWidth=0.75;context.shadowColor="rgba(0,0,0, 0.4)";context.shadowBlur=7;context.shadowOffsetX=2;context.shadowOffsetY=-2;context.strokeStyle=strokecolor;context.stroke();context.fillStyle=fillcolor;context.fill();context.restore()}function changeOpacity(rgba,opacity){var colorStr=rgba.slice(rgba.indexOf("(")+1,rgba.indexOf(")"));var colorArr=colorStr.split(",");return"rgba("+colorArr[0]+","+colorArr[1]+","+colorArr[2]+","+opacity+")"}function getOpacity(rgba){var colorStr=rgba.slice(rgba.indexOf("(")+1,rgba.indexOf(")"));var colorArr=colorStr.split(",");return colorArr[3]}function clearCanvas(){var canvas=$("#canvasEllipse")[0];var context=canvas.getContext("2d");context.clearRect(0,0,canvas.width,canvas.height)}function placeStat(vennSize){var axiscolor="rgba(0,0,0, 0.7)";var canvas=$("#canvasEllipse")[0];var context=canvas.getContext("2d");var h=120,xmargin=70,ymargin=415,xspacer=20,barwidth=(370-(vennSize*xspacer))/vennSize,ytext=265;var data=sizeOfClass(),dataplot=new Array();var max=0;for(var i=0;i2){ytext=ymargin+h+25}else{ytext=ymargin+h+15}context.fillStyle="#000";context.textAlign="center";context.fillText($("#label"+(i+1)).html(),(xmargin+i*barwidth+i*xspacer)+barwidth/2,ytext,200);context.strokeStyle=axiscolor;context.lineWidth=0.4;drawAxis(context,(xmargin+i*barwidth+i*xspacer)+barwidth/2,ymargin+h,(xmargin+i*barwidth+i*xspacer)+barwidth/2,ymargin+h+5)}context.lineWidth=1;context.strokeStyle=axiscolor;drawAxis(context,50,ymargin+h,50,ymargin+35);drawAxis(context,50,ymargin+h,450,ymargin+h);context.lineWidth=0.4;drawAxis(context,47,ymargin+(h+48)/2,53,ymargin+(h+48)/2);drawAxis(context,47,ymargin+50,53,ymargin+50);drawTriangle(50,ymargin+25,46,ymargin+35,54,ymargin+35,axiscolor);drawTriangle(460,ymargin+h,450,ymargin+h-4,450,ymargin+h+4,axiscolor);var data2=countByNbClass(),data2plot=new Array();xspacer=2,xmargin=60;ymargin+=h+50;var maxwidth=390+xspacer,sum=0;for(var i=0;i=0;i--){if(data2plot[i]==0){continue}drawRectangle(context,xmargin+xprev,ymargin+15,data2plot[i]-xspacer,20,changeOpacity("rgb(156,106,156)",(1/(i+1.5))),"rgba(0,0,0,0.5)");context.textAlign="center";context.fillStyle="white";if((data2plot[i]-xspacer)<25){context.fillStyle="#000";context.fillText(i+1,(data2plot[i]-xspacer)/2+xmargin+xprev,ymargin+57+ylegend);context.textAlign="left";context.fillText("("+data2[i]+")",(data2plot[i]-xspacer)/2+xmargin+xprev+6,ymargin+57+ylegend);if(ylegend!=48){ylegend+=12}else{ylegend=0}}else{if(ylegend>=24){ylegend=0}context.fillText(data2[i],(data2plot[i]-xspacer)/2+xmargin+xprev,ymargin+29);context.fillStyle="#000";context.fillText(i+1,(data2plot[i]-xspacer)/2+xmargin+xprev,ymargin+57+ylegend);ylegend=0}context.strokeStyle=axiscolor;context.lineWidth=0.4;drawAxis(context,(data2plot[i]-xspacer)/2+xmargin+xprev,ymargin+40,(data2plot[i]-xspacer)/2+xmargin+xprev,ymargin+45);xprev+=data2plot[i]}context.lineWidth=1;context.strokeStyle=axiscolor;drawAxis(context,50,ymargin+40,460,ymargin+40)}function placeNumber(div,left,top,space){if(opts.shortNumber&&div.text().length>space){div.html("?")}var l=left-((div.text().length-1)/2*8);div.css("left",l).css("top",top)}function transpose(a){var w=a.length?a.length:0,h=a[0] instanceof Array?a[0].length:0;for(i=0;ih){h=a[i].length}}if(h===0||w===0){return[]}var i,j,t=[];for(i=0;i';div_legend+='off';i+=1;if(i>vennSize){hide=";display:none"}});div_legend+="";$t.append(div_legend);$("*[id^=item]").hover(function(){$(this).css("opacity",0.75);$(this).css("box-shadow","0px 0px 8px 1px lightgrey")},function(){if($(this).children("span").text()==="off"){$(this).css("opacity",0.5)}$(this).css("box-shadow","none")});$("*[id^=item]").click(function(){var visible_id=null;if($(this).children("span").text()==="off"){visible_id=select($(this).attr("name"))}else{visible_id=unselect($(this).attr("name"))}if(opts.searchInput!=null){opts.searchInput.val("");if(opts.searchStatus!=null){opts.searchStatus.text("")}}clearCanvas();if(opts.displayMode=="edwards"){placeEdwardsVenn(vennSize)}else{placeClassicVenn(vennSize)}if(opts.displayStat){placeStat(vennSize)}if(visible_id!="resultC000000"){$("#"+visible_id).show()}})}function fillListVenn(){var classified=new Array();var actualList=new Array();actualList[0]=new Array();actualList[1]=new Array();actualList[2]=new Array();actualList[3]=new Array();actualList[4]=new Array();actualList[5]=new Array();for(m=0;m0){if(actualList[m][list[t]]){actualList[m][list[t]]++}else{actualList[m][list[t]]=1}classified[list[t]]="C"}}}for(t=0;t<6;t++){for(tt in actualList[t]){if(classified[tt]){classified[tt]=classified[tt]+"1"}}for(cl in classified){if(classified[cl].length0){$(this).removeClass("number-empty")}})}function getVennType(){if(opts.series.length>1){return(new Array("list",opts.series.length))}else{if(opts.series[0]!=undefined&&opts.series[0].name.A){var count=0;for(i in opts.series[0].name){count++}return(new Array("count",count))}else{return(new Array("list",opts.series.length))}}}function addExportModule(div,extraheight,type){$t=div;var div_export='
';div_export+='';div_export+='';div_export+='";div_export+="
";$t.append(div_export);var canvas=$("#canvasExport")[0];var context=canvas.getContext("2d");for(i=0;i<3;i++){context.lineWidth=3;context.beginPath();context.lineCap="round";context.moveTo(5,5+i*5.2);context.lineTo(20,5+i*5.2);context.strokeStyle="#666";context.stroke()}var select_form=$("#menu");var ceColorOri=$("#canvasExport").css("background");$("#format-png").click(function(event){$("#canvasExport").css("background",ceColorOri);$("#canvasExport").css("border-color","white");$("#canvasExport").hover(function(){$(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");$(this).css("border","1px solid #6688AA");$(this).css("border-radius","3px")},function(){$(this).css("background",ceColorOri);$(this).css("border-color","white")});select_form.hide();html2canvas($("#frame"),{onrendered:function(canvas){var img=canvas.toDataURL("image/png");$("#data-export").attr("href",img);$("#data-export").attr("download","jVenn_chart.png");$("#data-export")[0].click()}})});$("#format-csv").click(function(event){$("#canvasExport").css("background",ceColorOri);$("#canvasExport").css("border-color","white");$("#canvasExport").hover(function(){$(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");$(this).css("border","1px solid #6688AA");$(this).css("border-radius","3px")},function(){$(this).css("background",ceColorOri);$(this).css("border-color","white")});select_form.hide();var rawData=new Array(),comma=false;$("*[id^=resultC]").each(function(){if(!this.empty){var currentRow=new Array(),tmpline=this.listnames.join("|");if(tmpline.indexOf(",")>=0){comma=true;tmpline=tmpline.replace(/,/g,"_")}currentRow.push(tmpline);for(var i in this.list){tmpline=this.list[i];if(this.list[i].indexOf(",")>=0){comma=true;tmpline=this.list[i].replace(/,/g,"_")}currentRow.push(tmpline)}rawData.push(currentRow)}});var csvContent="data:text/csv;charset=utf-8,";if(comma){csvContent+="##\n## Warning: comma(s) have been replaced by underscore(s)\n##\n"}transpose(rawData).forEach(function(infoArray,index){csvContent+=infoArray.join(",")+"\n"});var encodedUri=encodeURI(csvContent);$("#data-export").attr("href",encodedUri);$("#data-export").attr("download","jVenn.csv");$("#data-export")[0].click()});$("#canvasExport").click(function(event){$(this).css("background","linear-gradient(to bottom, #AECEFF, white) repeat scroll 0 0 transparent");$(this).css("border","1px solid #6688AA");$("#canvasExport").unbind("mouseenter mouseleave");select_form.show();if(select_form.is(":visible")){$(document).mouseup(function(event){if(select_form.has(event.target).length===0){$("#canvasExport").css("background",ceColorOri);$("#canvasExport").css("border-color","white");$("#canvasExport").hover(function(){$(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");$(this).css("border","1px solid #6688AA");$(this).css("border-radius","3px")},function(){$(this).css("background",ceColorOri);$(this).css("border-color","white")});select_form.hide()}})}var colorOrig=$("div[id^=format-]").css("background");$("div[id^=format-]").hover(function(){$(this).css("background","rgba(69,114,165,0.75)");$(this).css("color","white")},function(){$(this).css("background",colorOrig);$(this).css("color","")})});$("#canvasExport").hover(function(){$(this).css("background","linear-gradient(to bottom, white, #AECEFF) repeat scroll 0 0 transparent");$(this).css("border","1px solid #6688AA");$(this).css("border-radius","3px")},function(){$(this).css("background",ceColorOri);$(this).css("border-color","white")})}function unselect(unselected_name,init){var init=(init==null?true:init);var unselected_idx=null;$("*[id^=label]").each(function(){if($(this).html()==unselected_name){$(this).css("opacity",0.1);$(this).removeClass("is-selected");var id=$(this).attr("id");unselected_idx=id.charAt(id.length-1)}});legend_button=$("#item-"+unselected_idx);legend_button.children("span").css("margin-left","0px");legend_button.css("opacity",0.5);legend_button.children("span").text("off");var visible_id="resultC000000";$(".is-selected").each(function(){var id=$(this).attr("id");var replace_pos=6+parseInt(id.charAt(id.length-1));visible_id=visible_id.substr(0,replace_pos)+1+visible_id.substr(replace_pos+1)});if(visible_id=="resultC000000"&&init){$(".number-black").each(function(){$(this).css("opacity",1)});$("*[id^=label]").each(function(){$(this).css("opacity",0.6)})}else{$(".number-black").each(function(){if($(this).attr("id")==visible_id){$(this).css("opacity",1)}else{$(this).css("opacity",0.1)}})}return(visible_id)}function select(selected_name){var selected_idx=null;$("*[id^=label]").each(function(){if($(this).html()==selected_name){$(this).css("opacity",0.6);$(this).addClass("is-selected");var id=$(this).attr("id");selected_idx=id.charAt(id.length-1)}else{if(!$(this).hasClass("is-selected")){$(this).css("opacity",0.1)}}});legend_button=$("#item-"+selected_idx);legend_button.children("span").css("margin-left","13px");legend_button.css("opacity",0.75);legend_button.css("color","black");legend_button.children("span").text("on");var visible_idx="resultC000000";$(".is-selected").each(function(){var id=$(this).attr("id");var replace_pos=6+parseInt(id.charAt(id.length-1));visible_idx=visible_idx.substr(0,replace_pos)+1+visible_idx.substr(replace_pos+1)});$(".number-black").each(function(){if($(this).attr("id")==visible_idx){$(this).css("opacity",1)}else{$(this).css("opacity",0.1)}});return(visible_idx)}function search(val,min_size){var min_size=(min_size==null?1:min_size);var groups_status=new Array();var visible_id="resultC000000";var nb_find=0;$("*[id^=label]").each(function(){if($(this).html()!=""){groups_status[$(this).html()]="unselected"}});if(val==""||min_size>val.length){for(var group_name in groups_status){visible_id=unselect(group_name)}}else{var listnames=null;var perfect_match=false;$(".number-black:not(.number-empty)").each(function(){for(var idx=0;idxval.length){opts.searchStatus.text("")}else{if(nb_find==0){opts.searchStatus.text("not found")}else{if(nb_find==1){opts.searchStatus.text("found")}else{if(nb_find>1){opts.searchStatus.text("ambiguous")}}}}}clearCanvas();if(opts.displayMode=="edwards"){placeEdwardsVenn(getVennType()[1])}else{placeClassicVenn(getVennType()[1])}if(opts.displayStat){placeStat(getVennType()[1])}if(visible_id!="resultC000000"){$("#"+visible_id).show()}}this.each(function(){var $t=$(this);var extraheight=0;if(opts.displayStat){extraheight=280}$t.css({width:"500px",height:""+(450+extraheight)+"px"});$("").appendTo("body");var legleft=434,legtop=130;if(opts.displayMode=="edwards"){legleft=10;legtop=425}$("").appendTo("body");$("").appendTo("body");var div_content='
';div_content+='';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+='
';div_content+="
";$t.html(div_content);$("*[id^=resultC]").each(function(){$(this).html(0);$(this).addClass("number-empty")});var type=getVennType();if(type[0]=="list"){fillListVenn()}else{if(type[0]=="count"){fillCountVenn()}}if(opts.searchInput!=null){opts.searchInput.keyup(function(){search(opts.searchInput.val(),opts.searchMinSize)})}if(opts.displayMode=="edwards"){placeEdwardsVenn(type[1])}else{placeClassicVenn(type[1])}if(opts.displayStat){placeStat(type[1])}if(opts.exporting===true){addExportModule($t,extraheight,type[0])}if(type[1]>=4){addLegend($t,type[1])}$(".number-black").hover(function(){var activeleg=false;$("*[id^=item]").each(function(){if($(this).children("span").text()==="on"){activeleg=true}});var activesearch=false;if(opts.searchInput.val()!=""){activesearch=true}if(!activeleg&&!activesearch&&$(this).text()!==""){var labels=this.listnames;var current=this;$("*[id^=label]").each(function(){if(labels.indexOf($(this).text())<0){$(this).css("opacity",0.1)}else{$(this).css("opacity",0.6)}});$(".number-black").each(function(){if(this!=current){$(this).css("opacity",0.1)}});clearCanvas();if(opts.displayMode=="edwards"){placeEdwardsVenn(type[1])}else{placeClassicVenn(type[1])}if(opts.displayStat){placeStat(type[1])}}},function(){var activeleg=false;$("*[id^=item]").each(function(){if($(this).children("span").text()==="on"){activeleg=true}});var activesearch=false;if(opts.searchInput.val()!=""){activesearch=true}if(!activeleg&&!activesearch&&$(this).text()!==""){var labels=this.listnames;$("*[id^=label]").each(function(){$(this).css("opacity",0.5)});$(".number-black").each(function(){$(this).css("opacity",1)});clearCanvas();if(opts.displayMode=="edwards"){placeEdwardsVenn(type[1])}else{placeClassicVenn(type[1])}if(opts.displayStat){placeStat(type[1])}}})});return this}})(jQuery);(function(window,document,undefined){var _html2canvas={},previousElement,computedCSS,html2canvas;function h2clog(a){if(_html2canvas.logging&&window.console&&window.console.log){window.console.log(a)}}_html2canvas.Util={};_html2canvas.Util.trimText=(function(isNative){return function(input){if(isNative){return isNative.apply(input)}else{return((input||"")+"").replace(/^\s+|\s+$/g,"")}}})(String.prototype.trim);_html2canvas.Util.parseBackgroundImage=function(value){var whitespace=" \r\n\t",method,definition,prefix,prefix_i,block,results=[],c,mode=0,numParen=0,quote,args;var appendResult=function(){if(method){if(definition.substr(0,1)==='"'){definition=definition.substr(1,definition.length-2)}if(definition){args.push(definition)}if(method.substr(0,1)==="-"&&(prefix_i=method.indexOf("-",1)+1)>0){prefix=method.substr(0,prefix_i);method=method.substr(prefix_i)}results.push({prefix:prefix,method:method.toLowerCase(),value:block,args:args})}args=[];method=prefix=definition=block=""};appendResult();for(var i=0,ii=value.length;i-1){continue}switch(c){case'"':if(!quote){quote=c}else{if(quote===c){quote=null}}break;case"(":if(quote){break}else{if(mode===0){mode=1;block+=c;continue}else{numParen++}}break;case")":if(quote){break}else{if(mode===1){if(numParen===0){mode=0;block+=c;appendResult();continue}else{numParen--}}}break;case",":if(quote){break}else{if(mode===0){appendResult();continue}else{if(mode===1){if(numParen===0&&!method.match(/^url$/i)){args.push(definition);definition="";block+=c;continue}}}}break}block+=c;if(mode===0){method+=c}else{definition+=c}}appendResult();return results};_html2canvas.Util.Bounds=function getBounds(el){var clientRect,bounds={};if(el.getBoundingClientRect){clientRect=el.getBoundingClientRect();bounds.top=clientRect.top;bounds.bottom=clientRect.bottom||(clientRect.top+clientRect.height);bounds.left=clientRect.left;bounds.width=clientRect.width||(clientRect.right-clientRect.left);bounds.height=clientRect.height||(clientRect.bottom-clientRect.top);return bounds}};_html2canvas.Util.getCSS=function(el,attribute,index){var val,isBackgroundSizePosition=attribute.match(/^background(Size|Position)$/);function toPX(attribute,val){var rsLeft=el.runtimeStyle&&el.runtimeStyle[attribute],left,style=el.style;if(!/^-?[0-9]+\.?[0-9]*(?:px)?$/i.test(val)&&/^-?\d/.test(val)){left=style.left;if(rsLeft){el.runtimeStyle.left=el.currentStyle.left}style.left=attribute==="fontSize"?"1em":(val||0);val=style.pixelLeft+"px";style.left=left;if(rsLeft){el.runtimeStyle.left=rsLeft}}if(!/^(thin|medium|thick)$/i.test(val)){return Math.round(parseFloat(val))+"px"}return val}if(previousElement!==el){computedCSS=document.defaultView.getComputedStyle(el,null)}val=computedCSS[attribute];if(isBackgroundSizePosition){val=(val||"").split(",");val=val[index||0]||val[0]||"auto";val=_html2canvas.Util.trimText(val).split(" ");if(attribute==="backgroundSize"&&(!val[0]||val[0].match(/cover|contain|auto/))){}else{val[0]=(val[0].indexOf("%")===-1)?toPX(attribute+"X",val[0]):val[0];if(val[1]===undefined){if(attribute==="backgroundSize"){val[1]="auto";return val}else{val[1]=val[0]}}val[1]=(val[1].indexOf("%")===-1)?toPX(attribute+"Y",val[1]):val[1]}}else{if(/border(Top|Bottom)(Left|Right)Radius/.test(attribute)){var arr=val.split(" ");if(arr.length<=1){arr[1]=arr[0]}arr[0]=parseInt(arr[0],10);arr[1]=parseInt(arr[1],10);val=arr}}return val};_html2canvas.Util.resizeBounds=function(current_width,current_height,target_width,target_height,stretch_mode){var target_ratio=target_width/target_height,current_ratio=current_width/current_height,output_width,output_height;if(!stretch_mode||stretch_mode==="auto"){output_width=target_width;output_height=target_height}else{if(target_ratio26);return tmp};_html2canvas.Generate.ListRoman=function(number){var romanArray=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"],decimal=[1000,900,500,400,100,90,50,40,10,9,5,4,1],roman="",v,len=romanArray.length;if(number<=0||number>=4000){return number}for(v=0;v=decimal[v]){number-=decimal[v];roman+=romanArray[v]}}return roman}})();function h2cRenderContext(width,height){var storage=[];return{storage:storage,width:width,height:height,clip:function(){storage.push({type:"function",name:"clip","arguments":arguments})},translate:function(){storage.push({type:"function",name:"translate","arguments":arguments})},fill:function(){storage.push({type:"function",name:"fill","arguments":arguments})},save:function(){storage.push({type:"function",name:"save","arguments":arguments})},restore:function(){storage.push({type:"function",name:"restore","arguments":arguments})},fillRect:function(){storage.push({type:"function",name:"fillRect","arguments":arguments})},createPattern:function(){storage.push({type:"function",name:"createPattern","arguments":arguments})},drawShape:function(){var shape=[];storage.push({type:"function",name:"drawShape","arguments":shape});return{moveTo:function(){shape.push({name:"moveTo","arguments":arguments})},lineTo:function(){shape.push({name:"lineTo","arguments":arguments})},arcTo:function(){shape.push({name:"arcTo","arguments":arguments})},bezierCurveTo:function(){shape.push({name:"bezierCurveTo","arguments":arguments})},quadraticCurveTo:function(){shape.push({name:"quadraticCurveTo","arguments":arguments})}}},drawImage:function(){storage.push({type:"function",name:"drawImage","arguments":arguments})},fillText:function(){storage.push({type:"function",name:"fillText","arguments":arguments})},setVariable:function(variable,value){storage.push({type:"variable",name:variable,"arguments":value})}}}_html2canvas.Parse=function(images,options){window.scroll(0,0);var element=((options.elements===undefined)?document.body:options.elements[0]),numDraws=0,doc=element.ownerDocument,support=_html2canvas.Util.Support(options,doc),ignoreElementsRegExp=new RegExp("("+options.ignoreElements+")"),body=doc.body,getCSS=_html2canvas.Util.getCSS,pseudoHide="___html2canvas___pseudoelement",hidePseudoElements=doc.createElement("style");hidePseudoElements.innerHTML="."+pseudoHide+'-before:before { content: "" !important; display: none !important; }.'+pseudoHide+'-after:after { content: "" !important; display: none !important; }';body.appendChild(hidePseudoElements);images=images||{};function documentWidth(){return Math.max(Math.max(doc.body.scrollWidth,doc.documentElement.scrollWidth),Math.max(doc.body.offsetWidth,doc.documentElement.offsetWidth),Math.max(doc.body.clientWidth,doc.documentElement.clientWidth))}function documentHeight(){return Math.max(Math.max(doc.body.scrollHeight,doc.documentElement.scrollHeight),Math.max(doc.body.offsetHeight,doc.documentElement.offsetHeight),Math.max(doc.body.clientHeight,doc.documentElement.clientHeight))}function getCSSInt(element,attribute){var val=parseInt(getCSS(element,attribute),10);return(isNaN(val))?0:val}function renderRect(ctx,x,y,w,h,bgcolor){if(bgcolor!=="transparent"){ctx.setVariable("fillStyle",bgcolor);ctx.fillRect(x,y,w,h);numDraws+=1}}function textTransform(text,transform){switch(transform){case"lowercase":return text.toLowerCase();case"capitalize":return text.replace(/(^|\s|:|-|\(|\))([a-z])/g,function(m,p1,p2){if(m.length>0){return p1+p2.toUpperCase()}});case"uppercase":return text.toUpperCase();default:return text}}function noLetterSpacing(letter_spacing){return(/^(normal|none|0px)$/.test(letter_spacing))}function drawText(currentText,x,y,ctx){if(currentText!==null&&_html2canvas.Util.trimText(currentText).length>0){ctx.fillText(currentText,x,y);numDraws+=1}}function setTextVariables(ctx,el,text_decoration,color){var align=false,bold=getCSS(el,"fontWeight"),family=getCSS(el,"fontFamily"),size=getCSS(el,"fontSize");switch(parseInt(bold,10)){case 401:bold="bold";break;case 400:bold="normal";break}ctx.setVariable("fillStyle",color);ctx.setVariable("font",[getCSS(el,"fontStyle"),getCSS(el,"fontVariant"),bold,size,family].join(" "));ctx.setVariable("textAlign",(align)?"right":"left");if(text_decoration!=="none"){return _html2canvas.Util.Font(family,size,doc)}}function renderTextDecoration(ctx,text_decoration,bounds,metrics,color){switch(text_decoration){case"underline":renderRect(ctx,bounds.left,Math.round(bounds.top+metrics.baseline+metrics.lineWidth),bounds.width,1,color);break;case"overline":renderRect(ctx,bounds.left,Math.round(bounds.top),bounds.width,1,color);break;case"line-through":renderRect(ctx,bounds.left,Math.ceil(bounds.top+metrics.middle+metrics.lineWidth),bounds.width,1,color);break}}function getTextBounds(state,text,textDecoration,isLast){var bounds;if(support.rangeBounds){if(textDecoration!=="none"||_html2canvas.Util.trimText(text).length!==0){bounds=textRangeBounds(text,state.node,state.textOffset)}state.textOffset+=text.length}else{if(state.node&&typeof state.node.nodeValue==="string"){var newTextNode=(isLast)?state.node.splitText(text.length):null;bounds=textWrapperBounds(state.node);state.node=newTextNode}}return bounds}function textRangeBounds(text,textNode,textOffset){var range=doc.createRange();range.setStart(textNode,textOffset);range.setEnd(textNode,textOffset+text.length);return range.getBoundingClientRect()}function textWrapperBounds(oldTextNode){var parent=oldTextNode.parentNode,wrapElement=doc.createElement("wrapper"),backupText=oldTextNode.cloneNode(true);wrapElement.appendChild(oldTextNode.cloneNode(true));parent.replaceChild(wrapElement,oldTextNode);var bounds=_html2canvas.Util.Bounds(wrapElement);parent.replaceChild(backupText,wrapElement);return bounds}function renderText(el,textNode,stack){var ctx=stack.ctx,color=getCSS(el,"color"),textDecoration=getCSS(el,"textDecoration"),textAlign=getCSS(el,"textAlign"),metrics,textList,state={node:textNode,textOffset:0};if(_html2canvas.Util.trimText(textNode.nodeValue).length>0){textNode.nodeValue=textTransform(textNode.nodeValue,getCSS(el,"textTransform"));textAlign=textAlign.replace(["-webkit-auto"],["auto"]);textList=(!options.letterRendering&&/^(left|right|justify|auto)$/.test(textAlign)&&noLetterSpacing(getCSS(el,"letterSpacing")))?textNode.nodeValue.split(/(\b| )/):textNode.nodeValue.split("");metrics=setTextVariables(ctx,el,textDecoration,color);if(options.chinese){textList.forEach(function(word,index){if(/.*[\u4E00-\u9FA5].*$/.test(word)){word=word.split("");word.unshift(index,1);textList.splice.apply(textList,word)}})}textList.forEach(function(text,index){var bounds=getTextBounds(state,text,textDecoration,(index0||radius1[1]>0){borderArgs.push(["line",corner1[0].start.x,corner1[0].start.y]);corner1[0].curveTo(borderArgs);corner1[1].curveTo(borderArgs)}else{borderArgs.push(["line",x,y])}if(radius2[0]>0||radius2[1]>0){borderArgs.push(["line",corner2[0].start.x,corner2[0].start.y])}}function drawSide(borderData,radius1,radius2,outer1,inner1,outer2,inner2){var borderArgs=[];if(radius1[0]>0||radius1[1]>0){borderArgs.push(["line",outer1[1].start.x,outer1[1].start.y]);outer1[1].curveTo(borderArgs)}else{borderArgs.push(["line",borderData.c1[0],borderData.c1[1]])}if(radius2[0]>0||radius2[1]>0){borderArgs.push(["line",outer2[0].start.x,outer2[0].start.y]);outer2[0].curveTo(borderArgs);borderArgs.push(["line",inner2[0].end.x,inner2[0].end.y]);inner2[0].curveToReversed(borderArgs)}else{borderArgs.push(["line",borderData.c2[0],borderData.c2[1]]);borderArgs.push(["line",borderData.c3[0],borderData.c3[1]])}if(radius1[0]>0||radius1[1]>0){borderArgs.push(["line",inner1[1].end.x,inner1[1].end.y]);inner1[1].curveToReversed(borderArgs)}else{borderArgs.push(["line",borderData.c4[0],borderData.c4[1]])}return borderArgs}function calculateCurvePoints(bounds,borderRadius,borders){var x=bounds.left,y=bounds.top,width=bounds.width,height=bounds.height,tlh=borderRadius[0][0],tlv=borderRadius[0][1],trh=borderRadius[1][0],trv=borderRadius[1][1],brv=borderRadius[2][0],brh=borderRadius[2][1],blh=borderRadius[3][0],blv=borderRadius[3][1],topWidth=width-trh,rightHeight=height-brv,bottomWidth=width-brh,leftHeight=height-blv;return{topLeftOuter:getCurvePoints(x,y,tlh,tlv).topLeft.subdivide(0.5),topLeftInner:getCurvePoints(x+borders[3].width,y+borders[0].width,Math.max(0,tlh-borders[3].width),Math.max(0,tlv-borders[0].width)).topLeft.subdivide(0.5),topRightOuter:getCurvePoints(x+topWidth,y,trh,trv).topRight.subdivide(0.5),topRightInner:getCurvePoints(x+Math.min(topWidth,width+borders[3].width),y+borders[0].width,(topWidth>width+borders[3].width)?0:trh-borders[3].width,trv-borders[0].width).topRight.subdivide(0.5),bottomRightOuter:getCurvePoints(x+bottomWidth,y+rightHeight,brh,brv).bottomRight.subdivide(0.5),bottomRightInner:getCurvePoints(x+Math.min(bottomWidth,width+borders[3].width),y+Math.min(rightHeight,height+borders[0].width),Math.max(0,brh-borders[1].width),Math.max(0,brv-borders[2].width)).bottomRight.subdivide(0.5),bottomLeftOuter:getCurvePoints(x,y+leftHeight,blh,blv).bottomLeft.subdivide(0.5),bottomLeftInner:getCurvePoints(x+borders[3].width,y+leftHeight,Math.max(0,blh-borders[3].width),Math.max(0,blv-borders[2].width)).bottomLeft.subdivide(0.5)}}function getBorderClip(element,borderPoints,borders,radius,bounds){var backgroundClip=getCSS(element,"backgroundClip"),borderArgs=[];switch(backgroundClip){case"content-box":case"padding-box":parseCorner(borderArgs,radius[0],radius[1],borderPoints.topLeftInner,borderPoints.topRightInner,bounds.left+borders[3].width,bounds.top+borders[0].width);parseCorner(borderArgs,radius[1],radius[2],borderPoints.topRightInner,borderPoints.bottomRightInner,bounds.left+bounds.width-borders[1].width,bounds.top+borders[0].width);parseCorner(borderArgs,radius[2],radius[3],borderPoints.bottomRightInner,borderPoints.bottomLeftInner,bounds.left+bounds.width-borders[1].width,bounds.top+bounds.height-borders[2].width);parseCorner(borderArgs,radius[3],radius[0],borderPoints.bottomLeftInner,borderPoints.topLeftInner,bounds.left+borders[3].width,bounds.top+bounds.height-borders[2].width);break;default:parseCorner(borderArgs,radius[0],radius[1],borderPoints.topLeftOuter,borderPoints.topRightOuter,bounds.left,bounds.top);parseCorner(borderArgs,radius[1],radius[2],borderPoints.topRightOuter,borderPoints.bottomRightOuter,bounds.left+bounds.width,bounds.top);parseCorner(borderArgs,radius[2],radius[3],borderPoints.bottomRightOuter,borderPoints.bottomLeftOuter,bounds.left+bounds.width,bounds.top+bounds.height);parseCorner(borderArgs,radius[3],radius[0],borderPoints.bottomLeftOuter,borderPoints.topLeftOuter,bounds.left,bounds.top+bounds.height);break}return borderArgs}function parseBorders(element,bounds,borders){var x=bounds.left,y=bounds.top,width=bounds.width,height=bounds.height,borderSide,bx,by,bw,bh,borderArgs,borderRadius=getBorderRadiusData(element),borderPoints=calculateCurvePoints(bounds,borderRadius,borders),borderData={clip:getBorderClip(element,borderPoints,borders,borderRadius,bounds),borders:[]};for(borderSide=0;borderSide<4;borderSide++){if(borders[borderSide].width>0){bx=x;by=y;bw=width;bh=height-(borders[2].width);switch(borderSide){case 0:bh=borders[0].width;borderArgs=drawSide({c1:[bx,by],c2:[bx+bw,by],c3:[bx+bw-borders[1].width,by+bh],c4:[bx+borders[3].width,by+bh]},borderRadius[0],borderRadius[1],borderPoints.topLeftOuter,borderPoints.topLeftInner,borderPoints.topRightOuter,borderPoints.topRightInner);break;case 1:bx=x+width-(borders[1].width);bw=borders[1].width;borderArgs=drawSide({c1:[bx+bw,by],c2:[bx+bw,by+bh+borders[2].width],c3:[bx,by+bh],c4:[bx,by+borders[0].width]},borderRadius[1],borderRadius[2],borderPoints.topRightOuter,borderPoints.topRightInner,borderPoints.bottomRightOuter,borderPoints.bottomRightInner);break;case 2:by=(by+height)-(borders[2].width);bh=borders[2].width;borderArgs=drawSide({c1:[bx+bw,by+bh],c2:[bx,by+bh],c3:[bx+borders[3].width,by],c4:[bx+bw-borders[2].width,by]},borderRadius[2],borderRadius[3],borderPoints.bottomRightOuter,borderPoints.bottomRightInner,borderPoints.bottomLeftOuter,borderPoints.bottomLeftInner);break;case 3:bw=borders[3].width;borderArgs=drawSide({c1:[bx,by+bh+borders[2].width],c2:[bx,by],c3:[bx+bw,by+borders[0].width],c4:[bx+bw,by+bh]},borderRadius[3],borderRadius[0],borderPoints.bottomLeftOuter,borderPoints.bottomLeftInner,borderPoints.topLeftOuter,borderPoints.topLeftInner);break}borderData.borders.push({args:borderArgs,color:borders[borderSide].color})}}return borderData}function createShape(ctx,args){var shape=ctx.drawShape();args.forEach(function(border,index){shape[(index===0)?"moveTo":border[0]+"To"].apply(null,border.slice(1))});return shape}function renderBorders(ctx,borderArgs,color){if(color!=="transparent"){ctx.setVariable("fillStyle",color);createShape(ctx,borderArgs);ctx.fill();numDraws+=1}}function renderFormValue(el,bounds,stack){var valueWrap=doc.createElement("valuewrap"),cssPropertyArray=["lineHeight","textAlign","fontFamily","color","fontSize","paddingLeft","paddingTop","width","height","border","borderLeftWidth","borderTopWidth"],textValue,textNode;cssPropertyArray.forEach(function(property){try{valueWrap.style[property]=getCSS(el,property)}catch(e){h2clog("html2canvas: Parse: Exception caught in renderFormValue: "+e.message)}});valueWrap.style.borderColor="black";valueWrap.style.borderStyle="solid";valueWrap.style.display="block";valueWrap.style.position="absolute";if(/^(submit|reset|button|text|password)$/.test(el.type)||el.nodeName==="SELECT"){valueWrap.style.lineHeight=getCSS(el,"height")}valueWrap.style.top=bounds.top+"px";valueWrap.style.left=bounds.left+"px";textValue=(el.nodeName==="SELECT")?(el.options[el.selectedIndex]||0).text:el.value;if(!textValue){textValue=el.placeholder}textNode=doc.createTextNode(textValue);valueWrap.appendChild(textNode);body.appendChild(valueWrap);renderText(el,textNode,stack);body.removeChild(valueWrap)}function drawImage(ctx){ctx.drawImage.apply(ctx,Array.prototype.slice.call(arguments,1));numDraws+=1}function getPseudoElement(el,which){var elStyle=window.getComputedStyle(el,which);if(!elStyle||!elStyle.content||elStyle.content==="none"||elStyle.content==="-moz-alt-content"){return}var content=elStyle.content+"",first=content.substr(0,1);if(first===content.substr(content.length-1)&&first.match(/'|"/)){content=content.substr(1,content.length-2)}var isImage=content.substr(0,3)==="url",elps=document.createElement(isImage?"img":"span");elps.className=pseudoHide+"-before "+pseudoHide+"-after";Object.keys(elStyle).filter(indexedProperty).forEach(function(prop){try{elps.style[prop]=elStyle[prop]}catch(e){h2clog(["Tried to assign readonly property ",prop,"Error:",e])}});if(isImage){elps.src=_html2canvas.Util.parseBackgroundImage(content)[0].args[0]}else{elps.innerHTML=content}return elps}function indexedProperty(property){return(isNaN(window.parseInt(property,10)))}function injectPseudoElements(el,stack){var before=getPseudoElement(el,":before"),after=getPseudoElement(el,":after");if(!before&&!after){return}if(before){el.className+=" "+pseudoHide+"-before";el.parentNode.insertBefore(before,el);parseElement(before,stack,true);el.parentNode.removeChild(before);el.className=el.className.replace(pseudoHide+"-before","").trim()}if(after){el.className+=" "+pseudoHide+"-after";el.appendChild(after);parseElement(after,stack,true);el.removeChild(after);el.className=el.className.replace(pseudoHide+"-after","").trim()}}function renderBackgroundRepeat(ctx,image,backgroundPosition,bounds){var offsetX=Math.round(bounds.left+backgroundPosition.left),offsetY=Math.round(bounds.top+backgroundPosition.top);ctx.createPattern(image);ctx.translate(offsetX,offsetY);ctx.fill();ctx.translate(-offsetX,-offsetY)}function backgroundRepeatShape(ctx,image,backgroundPosition,bounds,left,top,width,height){var args=[];args.push(["line",Math.round(left),Math.round(top)]);args.push(["line",Math.round(left+width),Math.round(top)]);args.push(["line",Math.round(left+width),Math.round(height+top)]);args.push(["line",Math.round(left),Math.round(height+top)]);createShape(ctx,args);ctx.save();ctx.clip();renderBackgroundRepeat(ctx,image,backgroundPosition,bounds);ctx.restore()}function renderBackgroundColor(ctx,backgroundBounds,bgcolor){renderRect(ctx,backgroundBounds.left,backgroundBounds.top,backgroundBounds.width,backgroundBounds.height,bgcolor)}function renderBackgroundRepeating(el,bounds,ctx,image,imageIndex){var backgroundSize=_html2canvas.Util.BackgroundSize(el,bounds,image,imageIndex),backgroundPosition=_html2canvas.Util.BackgroundPosition(el,bounds,image,imageIndex,backgroundSize),backgroundRepeat=getCSS(el,"backgroundRepeat").split(",").map(function(value){return value.trim()});image=resizeImage(image,backgroundSize);backgroundRepeat=backgroundRepeat[imageIndex]||backgroundRepeat[0];switch(backgroundRepeat){case"repeat-x":backgroundRepeatShape(ctx,image,backgroundPosition,bounds,bounds.left,bounds.top+backgroundPosition.top,99999,image.height);break;case"repeat-y":backgroundRepeatShape(ctx,image,backgroundPosition,bounds,bounds.left+backgroundPosition.left,bounds.top,image.width,99999);break;case"no-repeat":backgroundRepeatShape(ctx,image,backgroundPosition,bounds,bounds.left+backgroundPosition.left,bounds.top+backgroundPosition.top,image.width,image.height);break;default:renderBackgroundRepeat(ctx,image,backgroundPosition,{top:bounds.top,left:bounds.left,width:image.width,height:image.height});break}}function renderBackgroundImage(element,bounds,ctx){var backgroundImage=getCSS(element,"backgroundImage"),backgroundImages=_html2canvas.Util.parseBackgroundImage(backgroundImage),image,imageIndex=backgroundImages.length;while(imageIndex--){backgroundImage=backgroundImages[imageIndex];if(!backgroundImage.args||backgroundImage.args.length===0){continue}var key=backgroundImage.method==="url"?backgroundImage.args[0]:backgroundImage.value;image=loadImage(key);if(image){renderBackgroundRepeating(element,bounds,ctx,image,imageIndex)}else{h2clog("html2canvas: Error loading background:",backgroundImage)}}}function resizeImage(image,bounds){if(image.width===bounds.width&&image.height===bounds.height){return image}var ctx,canvas=doc.createElement("canvas");canvas.width=bounds.width;canvas.height=bounds.height;ctx=canvas.getContext("2d");drawImage(ctx,image,0,0,image.width,image.height,0,0,bounds.width,bounds.height);return canvas}function setOpacity(ctx,element,parentStack){var opacity=getCSS(element,"opacity")*((parentStack)?parentStack.opacity:1);ctx.setVariable("globalAlpha",opacity);return opacity}function createStack(element,parentStack,bounds){var ctx=h2cRenderContext((!parentStack)?documentWidth():bounds.width,(!parentStack)?documentHeight():bounds.height),stack={ctx:ctx,zIndex:setZ(getCSS(element,"zIndex"),(parentStack)?parentStack.zIndex:null),opacity:setOpacity(ctx,element,parentStack),cssPosition:getCSS(element,"position"),borders:getBorderData(element),clip:(parentStack&&parentStack.clip)?_html2canvas.Util.Extend({},parentStack.clip):null};if(options.useOverflow===true&&/(hidden|scroll|auto)/.test(getCSS(element,"overflow"))===true&&/(BODY)/i.test(element.nodeName)===false){stack.clip=(stack.clip)?clipBounds(stack.clip,bounds):bounds}stack.zIndex.children.push(stack);return stack}function getBackgroundBounds(borders,bounds,clip){var backgroundBounds={left:bounds.left+borders[3].width,top:bounds.top+borders[0].width,width:bounds.width-(borders[1].width+borders[3].width),height:bounds.height-(borders[0].width+borders[2].width)};if(clip){backgroundBounds=clipBounds(backgroundBounds,clip)}return backgroundBounds}function renderElement(element,parentStack,pseudoElement){var bounds=_html2canvas.Util.Bounds(element),image,bgcolor=(ignoreElementsRegExp.test(element.nodeName))?"#efefef":getCSS(element,"backgroundColor"),stack=createStack(element,parentStack,bounds),borders=stack.borders,ctx=stack.ctx,backgroundBounds=getBackgroundBounds(borders,bounds,stack.clip),borderData=parseBorders(element,bounds,borders);createShape(ctx,borderData.clip);ctx.save();ctx.clip();if(backgroundBounds.height>0&&backgroundBounds.width>0){renderBackgroundColor(ctx,bounds,bgcolor);renderBackgroundImage(element,backgroundBounds,ctx)}ctx.restore();borderData.borders.forEach(function(border){renderBorders(ctx,border.args,border.color)});if(!pseudoElement){injectPseudoElements(element,stack)}switch(element.nodeName){case"IMG":if((image=loadImage(element.getAttribute("src")))){renderImage(ctx,element,image,bounds,borders)}else{h2clog("html2canvas: Error loading :"+element.getAttribute("src"))}break;case"INPUT":if(/^(text|url|email|submit|button|reset)$/.test(element.type)&&(element.value||element.placeholder).length>0){renderFormValue(element,bounds,stack)}break;case"TEXTAREA":if((element.value||element.placeholder||"").length>0){renderFormValue(element,bounds,stack)}break;case"SELECT":if((element.options||element.placeholder||"").length>0){renderFormValue(element,bounds,stack)}break;case"LI":renderListItem(element,stack,backgroundBounds);break;case"CANVAS":renderImage(ctx,element,element,bounds,borders);break}return stack}function isElementVisible(element){return(getCSS(element,"display")!=="none"&&getCSS(element,"visibility")!=="hidden"&&!element.hasAttribute("data-html2canvas-ignore"))}function parseElement(el,stack,pseudoElement){if(isElementVisible(el)){stack=renderElement(el,stack,pseudoElement)||stack;if(!ignoreElementsRegExp.test(el.nodeName)){_html2canvas.Util.Children(el).forEach(function(node){if(node.nodeType===1){parseElement(node,stack,pseudoElement)}else{if(node.nodeType===3){renderText(el,node,stack)}}})}}}function svgDOMRender(body,stack){var img=new Image(),docWidth=documentWidth(),docHeight=documentHeight(),html="";function parseDOM(el){var children=_html2canvas.Util.Children(el),len=children.length,attr,a,alen,elm,i;for(i=0;i/g,">")}else{if(elm.nodeType===1){if(!/^(script|meta|title)$/.test(elm.nodeName.toLowerCase())){html+="<"+elm.nodeName.toLowerCase();if(elm.hasAttributes()){attr=elm.attributes;alen=attr.length;for(a=0;a"}}}}}parseDOM(body);img.src=["data:image/svg+xml,","","","",html.replace(/\#/g,"%23"),"","",""].join("");img.onload=function(){stack.svgRender=img}}function init(){var stack=renderElement(element,null);if(support.svgRendering){svgDOMRender(document.documentElement,stack)}Array.prototype.slice.call(element.children,0).forEach(function(childElement){parseElement(childElement,stack)});stack.backgroundColor=getCSS(document.documentElement,"backgroundColor");body.removeChild(hidePseudoElements);return stack}return init()};function h2czContext(zindex){return{zindex:zindex,children:[]}}_html2canvas.Preload=function(options){var images={numLoaded:0,numFailed:0,numTotal:0,cleanupDone:false},pageOrigin,methods,i,count=0,element=options.elements[0]||document.body,doc=element.ownerDocument,domImages=doc.images,imgLen=domImages.length,link=doc.createElement("a"),supportCORS=(function(img){return(img.crossOrigin!==undefined)})(new Image()),timeoutTimer;link.href=window.location.href;pageOrigin=link.protocol+link.host;function isSameOrigin(url){link.href=url;link.href=link.href;var origin=link.protocol+link.host;return(origin===pageOrigin)}function start(){h2clog("html2canvas: start: images: "+images.numLoaded+" / "+images.numTotal+" (failed: "+images.numFailed+")");if(!images.firstRun&&images.numLoaded>=images.numTotal){h2clog("Finished loading images: # "+images.numTotal+" (failed: "+images.numFailed+")");if(typeof options.complete==="function"){options.complete(images)}}}function proxyGetImage(url,img,imageObj){var callback_name,scriptUrl=options.proxy,script;link.href=url;url=link.href;callback_name="html2canvas_"+(count++);imageObj.callbackname=callback_name;if(scriptUrl.indexOf("?")>-1){scriptUrl+="&"}else{scriptUrl+="?"}scriptUrl+="url="+encodeURIComponent(url)+"&callback="+callback_name;script=doc.createElement("script");window[callback_name]=function(a){if(a.substring(0,6)==="error:"){imageObj.succeeded=false;images.numLoaded++;images.numFailed++;start()}else{setImageLoadHandlers(img,imageObj);img.src=a}window[callback_name]=undefined;try{delete window[callback_name]}catch(ex){}script.parentNode.removeChild(script);script=null;delete imageObj.script;delete imageObj.callbackname};script.setAttribute("type","text/javascript");script.setAttribute("src",scriptUrl);imageObj.script=script;window.document.body.appendChild(script)}function loadPseudoElement(element,type){var style=window.getComputedStyle(element,type),content=style.content;if(content.substr(0,3)==="url"){methods.loadImage(_html2canvas.Util.parseBackgroundImage(content)[0].args[0])}loadBackgroundImages(style.backgroundImage,element)}function loadPseudoElementImages(element){loadPseudoElement(element,":before");loadPseudoElement(element,":after")}function loadGradientImage(backgroundImage,bounds){var img=_html2canvas.Generate.Gradient(backgroundImage,bounds);if(img!==undefined){images[backgroundImage]={img:img,succeeded:true};images.numTotal++;images.numLoaded++;start()}}function invalidBackgrounds(background_image){return(background_image&&background_image.method&&background_image.args&&background_image.args.length>0)}function loadBackgroundImages(background_image,el){var bounds;_html2canvas.Util.parseBackgroundImage(background_image).filter(invalidBackgrounds).forEach(function(background_image){if(background_image.method==="url"){methods.loadImage(background_image.args[0])}else{if(background_image.method.match(/\-?gradient$/)){if(bounds===undefined){bounds=_html2canvas.Util.Bounds(el)}loadGradientImage(background_image.value,bounds)}}})}function getImages(el){var elNodeType=false;try{_html2canvas.Util.Children(el).forEach(function(img){getImages(img)})}catch(e){}try{elNodeType=el.nodeType}catch(ex){elNodeType=false;h2clog("html2canvas: failed to access some element's nodeType - Exception: "+ex.message)}if(elNodeType===1||elNodeType===undefined){loadPseudoElementImages(el);try{loadBackgroundImages(_html2canvas.Util.getCSS(el,"backgroundImage"),el)}catch(e){h2clog("html2canvas: failed to get background-image - Exception: "+e.message)}loadBackgroundImages(el)}}function setImageLoadHandlers(img,imageObj){img.onload=function(){if(imageObj.timer!==undefined){window.clearTimeout(imageObj.timer)}images.numLoaded++;imageObj.succeeded=true;img.onerror=img.onload=null;start()};img.onerror=function(){if(img.crossOrigin==="anonymous"){window.clearTimeout(imageObj.timer);if(options.proxy){var src=img.src;img=new Image();imageObj.img=img;img.src=src;proxyGetImage(img.src,img,imageObj);return}}images.numLoaded++;images.numFailed++;imageObj.succeeded=false;img.onerror=img.onload=null;start()}}methods={loadImage:function(src){var img,imageObj;if(src&&images[src]===undefined){img=new Image();if(src.match(/data:image\/.*;base64,/i)){img.src=src.replace(/url\(['"]{0,}|['"]{0,}\)$/ig,"");imageObj=images[src]={img:img};images.numTotal++;setImageLoadHandlers(img,imageObj)}else{if(isSameOrigin(src)||options.allowTaint===true){imageObj=images[src]={img:img};images.numTotal++;setImageLoadHandlers(img,imageObj);img.src=src}else{if(supportCORS&&!options.allowTaint&&options.useCORS){img.crossOrigin="anonymous";imageObj=images[src]={img:img};images.numTotal++;setImageLoadHandlers(img,imageObj);img.src=src;img.customComplete=function(){if(!this.img.complete){this.timer=window.setTimeout(this.img.customComplete,100)}else{this.img.onerror()}}.bind(imageObj);img.customComplete()}else{if(options.proxy){imageObj=images[src]={img:img};images.numTotal++;proxyGetImage(src,img,imageObj)}}}}}},cleanupDOM:function(cause){var img,src;if(!images.cleanupDone){if(cause&&typeof cause==="string"){h2clog("html2canvas: Cleanup because: "+cause)}else{h2clog("html2canvas: Cleanup after timeout: "+options.timeout+" ms.")}for(src in images){if(images.hasOwnProperty(src)){img=images[src];if(typeof img==="object"&&img.callbackname&&img.succeeded===undefined){window[img.callbackname]=undefined;try{delete window[img.callbackname]}catch(ex){}if(img.script&&img.script.parentNode){img.script.setAttribute("src","about:blank");img.script.parentNode.removeChild(img.script)}images.numLoaded++;images.numFailed++;h2clog("html2canvas: Cleaned up failed img: '"+src+"' Steps: "+images.numLoaded+" / "+images.numTotal)}}}if(window.stop!==undefined){window.stop()}else{if(document.execCommand!==undefined){document.execCommand("Stop",false)}}if(document.close!==undefined){document.close()}images.cleanupDone=true;if(!(cause&&typeof cause==="string")){start()}}},renderingDone:function(){if(timeoutTimer){window.clearTimeout(timeoutTimer)}}};if(options.timeout>0){timeoutTimer=window.setTimeout(methods.cleanupDOM,options.timeout)}h2clog("html2canvas: Preload starts: finding background-images");images.firstRun=true;getImages(element);h2clog("html2canvas: Preload: Finding images");for(i=0;i0){subStacks.push(stackChild);stackValues.push(stackChild.zindex)}else{queue.push(stackChild)}});stackValues.sort(function(a,b){return a-b});stackValues.forEach(function(zValue){var index;subStacks.some(function(stack,i){index=i;return(stack.zindex===zValue)});sortZ(subStacks.splice(index,1)[0])})};sortZ(parseQueue.zIndex);return queue}function getRenderer(rendererName){var renderer;if(typeof options.renderer==="string"&&_html2canvas.Renderer[rendererName]!==undefined){renderer=_html2canvas.Renderer[rendererName](options)}else{if(typeof rendererName==="function"){renderer=rendererName(options)}else{throw new Error("Unknown renderer")}}if(typeof renderer!=="function"){throw new Error("Invalid renderer defined")}return renderer}return getRenderer(options.renderer)(parseQueue,options,document,createRenderQueue(parseQueue),_html2canvas)};_html2canvas.Util.Support=function(options,doc){function supportSVGRendering(){var img=new Image(),canvas=doc.createElement("canvas"),ctx=(canvas.getContext===undefined)?false:canvas.getContext("2d");if(ctx===false){return false}canvas.width=canvas.height=10;img.src=["data:image/svg+xml,","","","
","sup","
","
","
"].join("");try{ctx.drawImage(img,0,0);canvas.toDataURL()}catch(e){return false}h2clog("html2canvas: Parse: SVG powered rendering available");return true}function supportRangeBounds(){var r,testElement,rangeBounds,rangeHeight,support=false;if(doc.createRange){r=doc.createRange();if(r.getBoundingClientRect){testElement=doc.createElement("boundtest");testElement.style.height="123px";testElement.style.display="block";doc.body.appendChild(testElement);r.selectNode(testElement);rangeBounds=r.getBoundingClientRect();rangeHeight=rangeBounds.height;if(rangeHeight===123){support=true}doc.body.removeChild(testElement)}}return support}return{rangeBounds:supportRangeBounds(),svgRendering:options.svgRendering&&supportSVGRendering()}};window.html2canvas=function(elements,opts){elements=(elements.length)?elements:[elements];var queue,canvas,options={logging:false,elements:elements,background:"#fff",proxy:null,timeout:0,useCORS:false,allowTaint:false,svgRendering:false,ignoreElements:"IFRAME|OBJECT|PARAM",useOverflow:true,letterRendering:false,chinese:false,width:null,height:null,taintTest:true,renderer:"Canvas"};options=_html2canvas.Util.Extend(opts,options);_html2canvas.logging=options.logging;options.complete=function(images){if(typeof options.onpreloaded==="function"){if(options.onpreloaded(images)===false){return}}queue=_html2canvas.Parse(images,options);if(typeof options.onparsed==="function"){if(options.onparsed(queue)===false){return}}canvas=_html2canvas.Renderer(queue,options);if(typeof options.onrendered==="function"){options.onrendered(canvas)}};window.setTimeout(function(){_html2canvas.Preload(options)},0);return{render:function(queue,opts){return _html2canvas.Renderer(queue,_html2canvas.Util.Extend(opts,options))},parse:function(images,opts){return _html2canvas.Parse(images,_html2canvas.Util.Extend(opts,options))},preload:function(opts){return _html2canvas.Preload(_html2canvas.Util.Extend(opts,options))},log:h2clog}};window.html2canvas.log=h2clog;window.html2canvas.Renderer={Canvas:undefined};_html2canvas.Renderer.Canvas=function(options){options=options||{};var doc=document,safeImages=[],testCanvas=document.createElement("canvas"),testctx=testCanvas.getContext("2d"),canvas=options.canvas||doc.createElement("canvas");function createShape(ctx,args){ctx.beginPath();args.forEach(function(arg){ctx[arg.name].apply(ctx,arg["arguments"])});ctx.closePath()}function safeImage(item){if(safeImages.indexOf(item["arguments"][0].src)===-1){testctx.drawImage(item["arguments"][0],0,0);try{testctx.getImageData(0,0,1,1)}catch(e){testCanvas=doc.createElement("canvas");testctx=testCanvas.getContext("2d");return false}safeImages.push(item["arguments"][0].src)}return true}function isTransparent(backgroundColor){return(backgroundColor==="transparent"||backgroundColor==="rgba(0, 0, 0, 0)")}function renderItem(ctx,item){switch(item.type){case"variable":ctx[item.name]=item["arguments"];break;case"function":if(item.name==="createPattern"){if(item["arguments"][0].width>0&&item["arguments"][0].height>0){try{ctx.fillStyle=ctx.createPattern(item["arguments"][0],"repeat")}catch(e){h2clog("html2canvas: Renderer: Error creating pattern",e.message)}}}else{if(item.name==="drawShape"){createShape(ctx,item["arguments"])}else{if(item.name==="drawImage"){if(item["arguments"][8]>0&&item["arguments"][7]>0){if(!options.taintTest||(options.taintTest&&safeImage(item))){ctx.drawImage.apply(ctx,item["arguments"])}}}else{ctx[item.name].apply(ctx,item["arguments"])}}}break}}return function(zStack,options,doc,queue,_html2canvas){var ctx=canvas.getContext("2d"),storageContext,i,queueLen,newCanvas,bounds,fstyle;canvas.width=canvas.style.width=options.width||zStack.ctx.width;canvas.height=canvas.style.height=options.height||zStack.ctx.height;fstyle=ctx.fillStyle;ctx.fillStyle=(isTransparent(zStack.backgroundColor)&&options.background!==undefined)?options.background:zStack.backgroundColor;ctx.fillRect(0,0,canvas.width,canvas.height);ctx.fillStyle=fstyle;if(options.svgRendering&&zStack.svgRender!==undefined){ctx.drawImage(zStack.svgRender,0,0)}else{for(i=0,queueLen=queue.length;i