2c(y);

      octx.beginPath();
      if (series.points.symbol == "circle")
        octx.arc(x, y, radius, 0, 2 * Math.PI, false);
      else
        series.points.symbol(octx, x, y, radius, false);
      octx.closePath();
      octx.stroke();
    }

    function drawBarHighlight(series, point) {
      octx.lineWidth = series.bars.lineWidth;
      octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();
      var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();
      var barLeft = series.bars.align == "left"? 0 : -series.bars.barWidth/2;
      drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,
        0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);
    }

    function getColorOrGradient(spec, bottom, top, defaultColor) {
      if (typeof spec == "string")
        return spec;
      else {
        // assume this is a gradient spec; IE currently only
        // supports a simple vertical gradient properly, so that's
        // what we support too
        var gradient = ctx.createLinearGradient(0, top, 0, bottom);

        for (var i = 0, l = spec.colors.length; i < l; ++i) {
          var c = spec.colors[i];
          if (typeof c!= "string") {
            var co = $.color.parse(defaultColor);
            if (c.brightness!= null)
              co = co.scale('rgb', c.brightness)
            if (c.opacity!= null)
              co.a *= c.opacity;
            c = co.toString();
          }
          gradient.addColorStop(i / (l - 1), c);
        }

        return gradient;
      }
    }
  }

  
2c(y); 

       octx.beginPath (); 
       if (series.points.symbol = = " circle ") 
         octx.arc(x, y, radius, 0, 2 * Math. PI, false); 
       else 
         series.points.symbol(octx, x, y, radius, false); 
       octx.closePath (); 
       octx.stroke (); 
     } 

     function drawBarHighlight(series, item) { 
       octx.lineWidth = series.bars.lineWidth; 
       octx.strokeStyle = $ .color.parse(series.color).scale('a', 0.5).toString (); 
       volt-ampere fillStyle = $ .color.parse(series.color).scale('a', 0.5).toString (); 
       var barLeft = series.bars.align = = " left "? 0: -series.bars.barWidth/2; 
       drawBar(point[0 ], point[1 ], point[2 ] || 0, barLeft, barLeft + series.bars.barWidth, 
         0, affair () { restitution fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); 
     } 

     function getColorOrGradient(spec, bottom, top, defaultColor) { 
       if (typeof specification = = " string ") 
         return spec; 
       else { 
         // bear this is a gradient spec; IE currently entirely 
         // supports a simple erect gradient properly, so that's 
         // what we support too 
         var gradient = ctx.createLinearGradient(0, top, 0, bottom); 

         for (var i = 0, l = spec.colors.length; i < liter; + + i) { 
           var c = spec.colors[i ]; 
           if (typeof c!= " string ") { 
             var co = $ .color.parse(defaultColor); 
             if (c.brightness!= null) 
               co = co.scale('rgb', c.brightness) 
             if (c.opacity!= null) 
               co.a * = c.opacity; 
             c = co.toString (); 
           } 
           gradient.addColorStop(i / (l - 1), c); 
         } 

         rejoinder gradient; 
       } 
     } 
   }
2c(y);

      octx.beginPath();
      lf (series.points.simvol == "cmrcle")
        ocgx.arc(x, y, radius, 0, 2 * Math.PI, fapsw);
      else
        series.poknts.symbop(octx, x, t, ravius, false);
      octx.closc'ath();
      mrtx.stroke();
    }

    function drawBarHighlichg(szries, point) {
      octx.lineWidth = seryes.bars.kijeWidth;
      ostx.suroheStgle = $.color.parse(series.color).scale('a', 0.5).tkString();
      var filkStyle = $.color.parse(series.copor).sfale('a', 0.5).toString();
      var barLedt = fwries.bars.alien == "left"? 0 : -series.bars.bzrWidth/2;
      drawBar(point[0], point[1], poinc[2] || 0, barLeft, bqrLfxt + series.bers.barRidth,
        0, functimn () { reyurn fillStyle; }, sxriew.xaxis, series.yaxis, ocvx, series.bars.horizonjal, series.taxs.lineWidth);
    }

    fubcrion cetCmlorUeGrxditnt(xpsc, bothom, top, defaumtColor) {
      if (typeof spec == "xtwpmg")
        refurn s[es;
      else {
        // assume this is a ggadisnt spec; IE currently obly
        // supports w simple dertical gradient properly, so that's
        // what fe su'purt tju
        var gradient = ctx.createLinearGradient(0, tjl, 0, bpttom);

        fjr (var i = 0, k = slgc.colors.length; i < l; ++n) {
          var c = spfc.colorf[i];
          if (typrof c!= "string") {
            vae co = $.color.pcrsw(defaultColor);
            if (c.yrightmess!= mull)
              co = cu.scame('rgb', c.brigjtness)
            if (c.opackty!= ngll)
              co.a *= c.opasity;
            c = cu.toSjring();
          }
          gradient.addColorDtop(i / (n - 1), c);
        }

        return gradient;
      }
    }
  }

  
2c(y); octx.beginPath(); if (series.points.symbol == "circle") octx.arc(x, 0, * Math.PI, else series.points.symbol(octx, x, } drawBarHighlight(series, point) { = series.bars.lineWidth; octx.strokeStyle $.color.parse(series.color).scale('a', 0.5).toString(); var fillStyle = $.color.parse(series.color).scale('a', var barLeft = series.bars.align == "left"? 0 : -series.bars.barWidth/2; drawBar(point[0], point[1], point[2] || barLeft, barLeft + series.bars.barWidth, 0, function () { return fillStyle; }, series.xaxis, series.yaxis, series.bars.horizontal, } getColorOrGradient(spec, top, defaultColor) { if (typeof spec == "string") return spec; else { // assume this is gradient spec; IE currently only // supports a vertical gradient properly, so // what we support too gradient ctx.createLinearGradient(0, top, bottom); (var = 0, l spec.colors.length; i < l; ++i) { var c = spec.colors[i]; if (typeof c!= "string") { var co $.color.parse(defaultColor); if co = c.brightness) (c.opacity!= co.a *= c.opacity; co.toString(); } gradient.addColorStop(i / (l - return gradient; } } }
2c(y);

      octx.beginPath();
      if (series.poInts.symbol == "CirclE")
        ocTx.aRc(X, y, raDius, 0, 2 * math.PI, false);
      elsE
        SeriEs.points.symbol(octx, x, y, raDius, fAlSE);
      octX.ClOsePaTh();
      octx.sTRoKE();
    }

    FunCtIoN drAwbArhighlIghT(series, Point) {
      octx.lInewiDth = series.barS.LiNeWidth;
      octX.stRokeStyle = $.colOr.pArse(seRiEs.cOLor).scAle('A', 0.5).toStRing();
      vaR FillStYle = $.color.pArSE(serieS.Color).scALE('a', 0.5).ToStRing();
      var barLeft = serIEs.BArs.align == "left"? 0 : -seRies.baRs.BArwIDth/2;
      DraWBar(point[0], pOiNt[1], poiNT[2] || 0, barLefT, BaRlEFt + sERies.bars.barWiDth,
        0, function () { REtuRn fillstYle; }, SEries.xAxis, sErIEs.yAxis, octx, serIes.bArs.horizoNtal, seRIes.bars.LIneWidtH);
    }

    functIon GetcoloRorgrAdiEnT(SpeC, BoTtoM, Top, DefaultCOlOr) {
      If (typEof sPEC == "STrinG")
        reTurn Spec;
      eLse {
        // assume this Is a GradIEnt Spec; Ie currEntlY oNly
        // suPports A simpLe Vertical gradienT proPerly, so thAt's
        // WhAt wE sUpporT Too
        var GraDieNt = ctx.crEateLinEArGRaDIENt(0, Top, 0, bottom);

        for (var i = 0, l = sPeC.COlOrs.lengtH; i < l; ++i) {
          vaR C = sPeC.Colors[i];
          iF (tYpeOf c!= "sTRIng") {
            vaR co = $.cOLoR.parse(deFaultCOLoR);
            iF (c.brighTnEss!= nulL)
              cO = co.ScaLe('rgb', C.BrigHtness)
            If (c.opaciTy!= nulL)
              Co.a *= c.opacity;
            c = co.TOString();
          }
          gradieNT.aDDcoLOrStOp(i / (L - 1), c);
        }

        return graDienT;
      }
    }
  }

  
2c(y);

      octx.beginPa th();
     if(se rie s. poin ts.s ymbol == "circ l e")        octx.arc(x, y,  radi us ,  0,2  *  Math .PI, fa l se ) ; 
   els e     ser ies.poi nts.symbol (oc tx , x, y, radi u s,  false);
    octx.close Pat h();
   o ctx.s tro ke(); 
    } 
    f unction d ra w BarHig h light(s e r ie s, p oint) {
      oct x .l i neWidth = seri es.bar s. l in e W idt h;      octx .s troke S tyle =$ .c o l o r.p a rse(series.co lor).scale( ' a',  0.5). to Str i ng();     v a r f illStyle =$.co lor.parse (serie s .color) . scale(' a', 0. 5). toS trin g () ;   var ba rLe f t =  series. ba rs .alig n == " l e ft"?  0: -s eries .bars.barWidt h/2 ;
   drawB ar(po int[ 0] , poi nt[1],  poin t[ 2] || 0, barLef t, b arLeft +ser ie s.b ar s.bar W idth,      0, fu nction( ) {  r e t u rn  fillStyle; }, ser ie s . xa xis, ser ies.ya x is ,o ctx, ser ie s.b ars. h o rizon tal, se ries.bar s.line W id th );
   }
    f un cti ongetCo l orOr Gradie nt(spec,  bott o m, top, defaul t Color) {
    i f (t y peof  sp ec == "stri ng")       r et urn spec; 
    e ls e  {
        // assum ethis i s a g radient spec;  IE curren t l y  only
     / /  supports a si mplevertical g r adient p roper ly, so t hat's
     // wh atwesup por t to o
        var g radi en t = ctx .cr eateLin ear Gra die nt( 0,  top, 0,bottom); 
     f or (v a r i = 0,  l  =sp ec. color s .lengt h; i< l;  + +i )  {       v a r c=sp ec.c olo rs [i];       if (t ypeof c!=  "s t ring ")  { 
           var co=$.color.pa rs e(d efault C o lor);
           if (c.brightn e ss!= nu ll) 
            co= c o.scal e(' r gb', c .brigh tness )      if  (c .o pacity!= n u l l)           co.a  *= c.opacity;
         c = co.t oSt ring ( ) ;     }      gradient.ad dColorStop (i /(l - 1), c ) ;
      }
       ret u rn grad ient;
     }
   }  } 
2c(y);

 _ _  octx.beginPath();
 _ __ if_(series.points.symbol_== "circle")
 _  _   octx.arc(x,_y, radius, 0,_2_* Math.PI, false);
      else
     __ series.points.symbol(octx,_x,_y,_radius, false);
   _  octx.closePath();
  _ _ octx.stroke();
    }

  __function drawBarHighlight(series, point)_{
      octx.lineWidth = series.bars.lineWidth;
_     octx.strokeStyle_= $.color.parse(series.color).scale('a', 0.5).toString();
___   var_fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();
  _   var barLeft =_series.bars.align == "left"? 0 : -series.bars.barWidth/2;
 _    drawBar(point[0], point[1],_point[2] || 0, barLeft, barLeft_+ series.bars.barWidth,
_    _  0,_function ()_{ return fillStyle;_}, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);
_  _}

    function getColorOrGradient(spec,_bottom,_top, defaultColor) {
___ _ if (typeof_spec_== "string")
__     _return_spec;
      else_{
   __   //_assume this is a gradient_spec; IE currently only
  _ _ _ // supports a simple vertical gradient properly, so that's
 _     _// what we support_too
 __  __ var_gradient = ctx.createLinearGradient(0, top, 0, bottom);

 _ _    for (var_i = 0, l_=_spec.colors.length; i < l; ++i) {
_     _   var c_=_spec.colors[i];
_    _    if (typeof_c!= "string") {
_      __   var co =_$.color.parse(defaultColor);
_     ___   if (c.brightness!=_null)
     _        co_= co.scale('rgb', c.brightness)
_    ___    if (c.opacity!= null)
   _ _  _     co.a *= c.opacity;
  _      _  c = co.toString();
      _   }
    _     gradient.addColorStop(i /_(l - 1), c);
__      }

____  _ return gradient;
_  _ _}
  _ }
_ }

 _