text: (function() {
      var PI_OVER_180 = Math.PI / 180;
  
      /**
       * Arc constructor
       * @constructor
       * @augments Kinetic.Shape
       * @param {Object} config
       * @param {Number} config.angle in degrees
       * @param {Number} config.innerRadius
       * @param {Number} config.outerRadius
       * @param {Boolean} [config.clockwise]
       * @@shapeParams
       * @@nodeParams
       * @example
       * // draw a Arc that's pointing downwards<br>
       * var arc = new Kinetic.Arc({<br>
       *   innerRadius: 40,<br>
       *   outerRadius: 80,<br>
       *   fill: 'red',<br>
       *   stroke: 'black'<br>
       *   strokeWidth: 5,<br>
       *   angle: 60,<br>
       *   rotationDeg: -120<br>
       * });
       */
      Kinetic.Arc = function(config) {
          this.___init(config);
      };
  
      Kinetic.Arc.prototype = {
          ___init: function(config) {
              // call super constructor
              Kinetic.Shape.call(this, config);
              this.className = 'Arc';
              this.sceneFunc(this._sceneFunc);
          },
          _sceneFunc: function(context) {
              var angle = Kinetic.getAngle(this.angle()),
                  clockwise = this.clockwise();
  
              context.beginPath();
              context.arc(0, 0, this.getOuterRadius(), 0, angle, clockwise);
              context.arc(0, 0, this.getInnerRadius(), angle, 0, !clockwise);
              context.closePath();
              context.fillStrokeShape(this);
          }
      };
      Kinetic.Util.extend(Kinetic.Arc, Kinetic.Shape);
  
      // add getters setters
      Kinetic.Factory.addGetterSetter(Kinetic.Arc, 'innerRadius', 0);
  
      /**
       * get/set innerRadius
       * @name innerRadius
       * @method
       * @memberof Kinetic.Arc.prototype
       * @param {Number} innerRadius
       * @returns {Number}
       * @example
       * // get inner radius
       * var innerRadius = arc.innerRadius();
       *
       * // set inner radius
       * arc.innerRadius(20);
       */
       
      Kinetic.Factory.addGetterSetter(Kinetic.Arc, 'outerRadius', 0);
  
      /**
       * get/set outerRadius
       * @name outerRadius
       * @method
       * @memberof Kinetic.Arc.prototype
       * @param {Number} outerRadius
       * @returns {Number}
       * @example
       * // get outer radius<br>
       * var outerRadius = arc.outerRadius();<br><br>
       *
       * // set outer radius<br>
       * arc.outerRadius(20);
       */
  
      Kinetic.Factory.addGetterSetter(Kinetic.Arc, 'angle', 0);
  
      /**
       * get/set angle in degrees
       * @name angle
       * @method
       * @memberof Kinetic.Arc.prototype
       * @param {Number} angle
       * @returns {Number}
       * @example
       * // get angle<br>
       * var angle = arc.angle();<br><br>
       *
       * // set angle<br>
       * arc.angle(20);
       */
  
      Kinetic.Factory.addGetterSetter(Kinetic.Arc, 'clockwise', false);
  
      /**
       * get/set clockwise flag
       * @name clockwise
       * @method
       * @memberof Kinetic.Arc.prototype
       * @param {Boolean} clockwise
       * @returns {Boolean}
       * @example
       * // get clockwise flag<br>
       * var clockwise = arc.clockwise();<br><br>
       *
       * // draw arc counter-clockwise<br>
       * arc.clockwise(false);<br><br>
       *
       * // draw arc clockwise<br>
       * arc.clockwise(true);
       */
  
      Kinetic.Collection.mapMethods(Kinetic.Arc);
  })();
  