jui.define("chart.brush.rangearea", [], function() {

    /**
     * @class chart.brush.rangearea
     * @extends chart.brush.core
     */
	var RangeAreaBrush = function() {

		this.draw = function() {
			var g = this.svg.group(),
				targets = this.brush.target,
				datas = this.axis.data,
				isRangeY = (this.axis.y.type == "range");

			for(var i = 0; i < targets.length; i++) {
				var p = this.svg.polygon({
					fill: this.color(i),
					"fill-opacity": this.chart.theme("areaBackgroundOpacity"),
					"stroke-width": 0
				});

				for(var j = 0; j < datas.length; j++) {
					var value = datas[j][targets[i]];

					if(isRangeY) {
						p.point(this.axis.x(j), this.axis.y(value[0]));
					} else {
						p.point(this.axis.x(value[0]), this.axis.y(j));
					}
				}

				for(var j = datas.length - 1; j >= 0; j--) {
					var value = datas[j][targets[i]];

					if(isRangeY) {
						p.point(this.axis.x(j), this.axis.y(value[1]));
					} else {
						p.point(this.axis.x(value[1]), this.axis.y(j));
					}
				}

				g.append(p);
			}

            return g;
		}
	}

	return RangeAreaBrush;
}, "chart.brush.core");