<?

class Graph_bars extends Graph {

	public $type = 'bars';

	function __construct($name, $keys, $select_bar_name='', $options='') {
		GLOBAL $log;

		parent::__construct($name, $keys, $select_bar_name, $options);
		$this->_create_cols();
	}


	protected function _calc_value_factor() {
		GLOBAL $log;

		$this->value_factor = $this->col_max_height / $this->col_max_value;
		//print "calc-" . $this->value_factor;/
	}

	private function _create_cols() {
		GLOBAL $log;

		$this->cols = array();
		$x = $this->xZero;

		$color = $this->col_color;
		if($colors = $this->col_colors) {
			$color = reset($colors);
			each($colors);
			list($next_name, $next_color) = each($colors);
			//reset($colors);
		}
		
		foreach($this->keys as $nomer=>$name) {

			if($colors) {
				$t1 = round_nobug((float)$name, 3);
				$t2 = round_nobug((float)$next_name, 3);
				if($next_color and round_nobug((float)$name, 3) >= round_nobug((float)$next_name, 3)) { // and $next = each($colors)
					//$next = each($colors);
					$color = $next_color;
					if($next = each($colors))
						list($next_name, $next_color) = $next;
					else $next_color = false;

					//$color = str_to_color($color);
					//$log->line("$t1 >= $t2; новый цвет " . $color);
				}
			}

			$this->cols[(string)$name] = new Gr_bars_col($this, $x, $nomer, $name, $color, 0);
			$x += $this->col_width;
		}

		// проверяем что все цвета использованы, можем пропустить
		if(current($colors)) {
			// если сделаем здесь исключение, это парадит много ошибок потому что
			throw new Error_def("Пропустили один из цветов в графике");
		}
	}
}

?>