Index: anches/feature-module-update/html/admin/total/class/SC_GraphLine.php
===================================================================
--- /branches/feature-module-update/html/admin/total/class/SC_GraphLine.php	(revision 15532)
+++ 	(revision )
@@ -1,288 +1,0 @@
-<?php
-/*
- * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- */
-$SC_GRAPHLINE_DIR = realpath(dirname( __FILE__));
-require_once($SC_GRAPHLINE_DIR . "/SC_GraphBase.php");	
-
-// 折れ線グラフ生成クラス
-class SC_GraphLine extends SC_GraphBase{
-	var $area_width;
-	var $area_height;
-	var $ygrid_on;
-	var $graph_max;		// グラフのエリア最大値(Y軸頂点の値)
-	var $arrXLabel;	
-	var $XLabelAngle;	// X軸ラベル角度	
-	var $XTitle;		// X軸タイトル
-	var $YTitle;		// Y軸タイトル
-	var $arrDataList;	// グラフデータを格納
-	var $arrPointList;	// 折れ線座標を格納
-	var $line_max;		// 複数の描画の場合に加算していく
-	
-	var $x_margin;
-	var $y_margin;
-			
-    // コンストラクタ
-	function SC_GraphLine(
-		$bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
-		$area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
-		parent::SC_GraphBase($bgw, $bgh, $left, $top);	
-		$this->area_width = $area_width;
-		$this->area_height = $area_height;
-		$this->ygrid_on = true;
-		$this->line_max = 0;
-		$this->graph_max = 0;
-		$this->XLabelAngle = 0;
-		$this->x_margin = 0;
-		$this->y_margin = 0;
-	}
-	
-	// X軸ラベルの角度セット
-	function setXLabelAngle($Angle) {
-		$this->XLabelAngle = $Angle;
-	}
-	
-	// Y軸タイトル
-	function drawYTitle() {
-		// Y軸にタイトルを入れる
-		if($this->YTitle != "") {
-			$text_width = $this->getTextWidth($this->YTitle, FONT_SIZE);
-			$x_pos = $this->left - ($text_width / 2);
-			$y_pos = $this->top - FONT_SIZE - LINE_YTITLE_PAD;		
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, $this->YTitle);
-		}
-	}
-	
-	// X軸タイトル
-	function drawXTitle() {
-		// Y軸にタイトルを入れる
-		if($this->XTitle != "") {
-			$text_width = $this->getTextWidth($this->XTitle, FONT_SIZE);
-			$x_pos = $this->left + $this->area_width - ($text_width / 2) + 30;
-			$y_pos = $this->top + $this->area_height + LINE_XTITLE_PAD;
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, $this->XTitle);
-		}
-	}
-	
-	// Y軸の描画
-	function drawYLine() {
-		imageline($this->image, $this->left, $this->top, $this->left, $this->top + $this->area_height, $this->flame_color);
-		// 目盛り幅を求める(中間点は自動)
-		$size = $this->area_height / (LINE_Y_SCALE * 2);
-		// 上から目盛りを入れていく
-		$pos = 0;
-		for($i = 0; $i < (LINE_Y_SCALE * 2); $i++) {
-			// 目盛り幅
-			if(($i % 2) == 0) {
-				$sw = LINE_SCALE_SIZE;
-				if($this->ygrid_on) {
-					imageline($this->image, $this->left, $this->top + $pos, $this->left + $this->area_width, $this->top + $pos, $this->grid_color);
-				}
-			} else {
-				$sw = LINE_SCALE_SIZE / 2;
-			}
-			imageline($this->image, $this->left, $this->top + $pos, $this->left + $sw, $this->top + $pos, $this->flame_color);
-			$pos += $size;
-		}
-		// Y軸に目盛り値を入れる
-		$this->setYScale();
-		$this->drawYTitle();	
-	}
-	
-	// X軸の描画
-	function drawXLine($bar = false) {
-		imageline($this->image, $this->left, $this->top + $this->area_height, $this->left + $this->area_width, $this->top + $this->area_height, $this->flame_color);
-		$arrPointList = $this->arrPointList[0];
-		$count = count($arrPointList);
-		
-		// 棒グラフの場合は半目盛りずらす
-		if($bar) {
-			$half_scale = intval($this->area_width / ($count + 1) / 2);
-		} else {
-			$half_scale = 0;
-		}
-		
-		// ラベルの表示インターバルを算出
-		$interval = ceil($count / LINE_XLABEL_MAX);	// 切り上げ				
-		for($i = 0; $i < $count; $i++) {
-			// X軸に目盛りを入れる
-			$x = $arrPointList[$i][0];
-			$pos = $this->top + $this->area_height;
-			imageline($this->image, $x - $half_scale, $pos, $x - $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);			
-			// ラベルを入れる
-			if(($i % $interval) == 0) {
-				$text_width = $this->getTextWidth($this->arrXLabel[$i], FONT_SIZE);
-				$x_pos = $x;
-				
-				if ($bar) $bar_margin = -15;
-
-				$this->setText(FONT_SIZE, $x_pos + $this->x_margin + $bar_margin, $pos + FONT_SIZE + $this->y_margin, $this->arrXLabel[$i], NULL, $this->XLabelAngle);
-			}
-		}
-		
-		// 棒グラフの場合は最後の目盛りを一つ追加する
-		if($bar) {
-			imageline($this->image, $x + $half_scale, $pos, $x + $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);	
-		}
-		
-		$this->drawXTitle();
-	}
-		
-	// グリッド表示
-	function setYGridOn($ygrid_on) {
-		$this->ygrid_on = $ygrid_on;
-	}
-	
-	// ポイントの描画
-	function setMark($line_no, $left, $top, $size = LINE_MARK_SIZE) {
-		// 偶数に変換しておく
-		$size += $size % 2;
-		$array = array(
-			$left, $top - ($size / 2),
-			$left + ($size / 2), $top,
-			$left, $top + ($size / 2),
-			$left - ($size / 2), $top,
-		);		
-		imagefilledpolygon($this->image, $array, 4, $this->arrColor[$line_no]);
-		imagepolygon($this->image, $array, 4, $this->flame_color);
- 		imagesetpixel ($this->image, $left, $top + ($size / 2), $this->flame_color);
-	}	
-	
-	// Y軸目盛りに値を入れる
-	function setYScale() {
-		// 1目盛りの値
-		$number = intval($this->graph_max / LINE_Y_SCALE);				
-		// 目盛り幅を求める
-		$size = $this->area_height / LINE_Y_SCALE;
-		$pos = 0;
-		for($i = 0; $i <= LINE_Y_SCALE; $i++) {
-			$snumber = $number * (LINE_Y_SCALE - $i);
-			$disp_number = number_format($snumber);
-			$num_width = $this->getTextWidth($disp_number, FONT_SIZE);
-			$this->setText(FONT_SIZE, $this->left - $num_width - 2, $this->top + $pos - (FONT_SIZE / 2), $disp_number);
-			$pos += $size;
-		}
-	}
-	
-	// 
-	function setMax($arrData) {
-		// データの最大値を取得する。
-		$data_max = max($arrData);
-		// 10の何倍かを取得
-		$figure = strlen($data_max) - 1;
-		// 次の桁を計算する
-		$tenval = pow(10, $figure);
-		// グラフ上での最大値を求める
-		$this->graph_max = $tenval * (intval($data_max / $tenval) + 1);
-		// 最大値が10未満の場合の対応
-		if($this->graph_max < 10) {
-			$this->graph_max = 10;
-		}	
-	}
-	
-	// グラフの描画
-	function drawGraph() {
-		// グラフ背景を描画
-		$this->drawYLine();
-		$this->drawXLine();
-		
-		// 折れ線グラフ描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawLine($i);
-		}
-		
-		// マークを描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawMark($i);
-		}
-		
-		// ラベルを描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawLabel($i);		
-		}
-
-		// 凡例の描画
-		$this->drawLegend();	
-	}
-	
-	// ラインを描画する
-	function drawLine($line_no) {
-		$arrPointList = $this->arrPointList[$line_no];
-		
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];
-			if(isset($arrPointList[$i + 1])) {
-				$next_x = $arrPointList[$i + 1][0];
-				$next_y = $arrPointList[$i + 1][1];
-				imageline($this->image, $x, $y, $next_x, $next_y, $this->arrColor[$line_no]);
-			}
-		}
-	}
-	
-	// マークを描画する
-	function drawMark($line_no) {
-		$arrPointList = $this->arrPointList[$line_no];
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];			
-			$this->setMark($line_no, $x, $y);
-		}
-	}
-	
-	// ラベルを描画する
-	function drawLabel($line_no) {
-		$arrData = $this->arrDataList[$line_no];
-		$arrPointList = $this->arrPointList[$line_no];
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];
-			$text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
-			$y_pos = $y - FONT_SIZE - 5;
-			$x_pos = $x - $text_width / 2;
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
-		}
-	}
-	
-	// データをセットする
-	function setData($arrData) {
-		$this->arrDataList[$this->line_max] = array_values((array)$arrData);
-		$this->setMax($this->arrDataList[$this->line_max]);
-		// 値の描画変換率
-		$rate = $this->area_height / $this->graph_max;
-		// 描画率を計算
-		$count = count($this->arrDataList[$this->line_max]);
-		$scale_width = $this->area_width / ($count + 1);		
-		$this->arrPointList[$this->line_max] = array();
-		for($i = 0; $i < $count; $i++) {
-			// X座標を求める
-			$x = intval($this->left + ($scale_width * ($i + 1)));
-			// Y座標を求める
-			$y = intval($this->top + $this->area_height - ($this->arrDataList[$this->line_max][$i] * $rate));
-			// XY座標を保存する
-			$this->arrPointList[$this->line_max][] = array($x, $y);
-		}
-		$this->line_max++;
-	}
-	
-	// X軸ラベルをセットする
-	function setXLabel($arrXLabel) {
-		$this->arrXLabel = array_values((array)$arrXLabel);
-	}
-	
-	// X軸タイトルをセットする
-	function setXTitle($title) {
-		$this->XTitle = $title;
-	}
-	
-	// Y軸タイトルをセットする
-	function setYTitle($title) {
-		$this->YTitle = $title;
-	}	
-}
-?>
Index: anches/feature-module-update/html/admin/total/class/SC_GraphBase.php
===================================================================
--- /branches/feature-module-update/html/admin/total/class/SC_GraphBase.php	(revision 15532)
+++ 	(revision )
@@ -1,237 +1,0 @@
-<?php
-/*
- * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- */
-/*
-$SC_GRAPHPIE_DIR = realpath(dirname( __FILE__));
-require_once($SC_GRAPHPIE_DIR . "/config.php");
-require_once($SC_GRAPHPIE_DIR . "/lib.php");	
-*/
-require_once(realpath(dirname( __FILE__)) . "/config.php");
-require_once(realpath(dirname( __FILE__)) . "/lib.php");	
-
-// SC_Graph共通クラス
-class SC_GraphBase {
-	var $arrRGB;
-	var $arrColor;
-	var $arrDarkColor;
-	var $image;
-	var $left;
-	var $top;
-	var $shade_color;
-	var $flame_color;
-	var $shade_on;
-	var $text_color;
-	var $labelbg_color;
-	var $bgw;
-	var $bgh;
-	var $clabelbg_color;
-	var $title_color;
-	var $text_top;
-	var $mark_color;
-	var $arrLegend;
-	
-	// コンストラクタ
-	function SC_GraphBase($bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left, $top) {
-		global $ARR_GRAPH_RGB;
-		global $ARR_BG_COLOR;
-		global $ARR_SHADE_COLOR;
-		global $ARR_FLAME_COLOR;
-		global $ARR_TEXT_COLOR;
-		global $ARR_LABELBG_COLOR;
-		global $ARR_LEGENDBG_COLOR;
-		global $ARR_TITLE_COLOR;
-		global $ARR_GRID_COLOR;
-		
-		// 画像作成
-		$this->bgw = $bgw;
-		$this->bgh = $bgh;	
-		$this->image = imagecreatetruecolor($bgw, $bgh);
-		// アンチエイリアス有効
-		if (function_exists("imageantialias")) imageantialias($this->image, true);
-		// 背景色をセット
-		imagefill($this->image, 0, 0, lfGetImageColor($this->image, $ARR_BG_COLOR));
-		
-		// 使用色の生成
-		$this->setColorList($ARR_GRAPH_RGB);
-		// グラフ描画位置の設定
-		$this->left = $left;
-		$this->top = $top;
-		$this->shade_color = lfGetImageColor($this->image, $ARR_SHADE_COLOR);
-		$this->flame_color = lfGetImageColor($this->image, $ARR_FLAME_COLOR);
-		$this->text_color = lfGetImageColor($this->image, $ARR_TEXT_COLOR);
-		$this->labelbg_color = lfGetImageColor($this->image, $ARR_LABELBG_COLOR);
-		$this->clabelbg_color = lfGetImageColor($this->image, $ARR_LEGENDBG_COLOR);
-		$this->title_color = lfGetImageColor($this->image, $ARR_TITLE_COLOR);
-		$this->grid_color = lfGetImageColor($this->image, $ARR_GRID_COLOR);
-			
-		// 影あり
-		$this->shade_on = true;
-    }
-	
-	// リサンプル(画像を滑らかに縮小する)
-	function resampled() {
-		$new_width = $this->bgw * 0.8;
-		$new_height = $this->bgh * 0.8;		
-		$tmp_image = imagecreatetruecolor($new_width, $new_height);
-		if(imagecopyresampled($tmp_image, $this->image, 0, 0, 0, 0, $new_width, $new_height, $this->bgw, $this->bgh)) {
-			$this->image = $tmp_image;
-		}
-	}
-	
-	
-	// オブジェクトカラーの設定
-	function setColorList($arrRGB) {
-		$this->arrRGB = $arrRGB;
-		$count = count($this->arrRGB);
-		// 通常色の設定
-		for($i = 0; $i < $count; $i++) {
-			$this->arrColor[$i] = lfGetImageColor($this->image, $this->arrRGB[$i]);
-		}
-		// 暗色の設定
-		for($i = 0; $i < $count; $i++) {
-			$this->arrDarkColor[$i] = lfGetImageDarkColor($this->image, $this->arrRGB[$i]);
-		}		
-	}
-	
-	// 影のありなし
-	function setShadeOn($shade_on) {
-		$this->shade_on = $shade_on;
-	}
-	
-	// 画像を出力する
-	function outputGraph($header = true, $filename = "") {
-		if($header) {
-			header('Content-type: image/png');
-		}
-		
-		if ($filename != "") {
-			imagepng($this->image, $filename);
-		}else{
-			imagepng($this->image);
-		}
-
-		imagedestroy($this->image);
-	}
-
-	// 描画時のテキスト幅を求める
-	function getTextWidth($text, $font_size) {
-		$text_len = strlen($text);
-		$ret = $font_size * $text_len * TEXT_RATE;	
-		/*
-			※正確な値が取得できなかったので廃止
-			// テキスト幅の取得
-			$arrPos = imagettfbbox($font_size, 0, FONT_PATH, $text);
-			$ret = $arrPos[2] - $arrPos[0];
-		*/
-		return $ret;
-	}
-	
-	// テキストを出力する
-	function setText($font_size, $left, $top, $text, $color = NULL, $angle = 0, $labelbg = false) {
-		// 時計回りに角度を変更
-		$angle = -$angle;		
-		// ラベル背景
-		if($labelbg) {
-			$text_width = $this->getTextWidth($text, $font_size);
-			imagefilledrectangle($this->image, $left - 2, $top - 2, $left + $text_width + 2, $top + $font_size + 2, $this->labelbg_color);
-		}
-		//$text = mb_convert_encoding($text, "UTF-8", CHAR_CODE);
-		$text = mb_convert_encoding($text, CHAR_CODE);
-		if($color != NULL) {
-			ImageTTFText($this->image, $font_size, $angle, $left, $top + $font_size, $color, FONT_PATH, $text);
-		} else {
-			ImageTTFText($this->image, $font_size, $angle, $left, $top + $font_size, $this->text_color, FONT_PATH, $text);			
-		}
-	}
-	
-	// タイトルを出力する
-	function drawTitle($text, $font_size = TITLE_FONT_SIZE) {
-		// 出力位置の算出
-		$text_width = $this->getTextWidth($text, $font_size);
-		$left = ($this->bgw - $text_width) / 2;
-		$top = TITLE_TOP;
-		$this->setText($font_size, $left, $top, $text, $this->title_color);		
-	}
-	
-	// ログを出力する
-	function debugPrint($text) {
-		$text = mb_convert_encoding($text, "UTF-8", CHAR_CODE);
-		if(!isset($this->text_top)) {
-			$this->text_top = FONT_SIZE + LINE_PAD;
-		}		
-		// テキスト描画
-		ImageTTFText($this->image, FONT_SIZE, 0, LINE_PAD, $this->text_top, $this->text_color, FONT_PATH, $text);
-		$this->text_top += FONT_SIZE + LINE_PAD;
-	}
-		
-	// カラーラベルを描画
-	function drawLegend($legend_max = "", $clabelbg = true) {
-		// 凡例が登録されていなければ中止
-		if(count($this->arrLegend) <= 0) {
-			return;
-		}		
-		
-		if($legend_max != "") {
-			$label_max = $legend_max;
-		} else {
-			$label_max = count($this->arrLegend);
-		}
-
-		$height_max = 0;
-		$text_max = 0;
-		$width_max = 0;
-		
-		// 一番文字数が多いものを取得
-		for($i = 0; $i < $label_max; $i++) {
-			$text_len = strlen($this->arrLegend[$i]);
-			if($text_max < $text_len) {
-				$text_max = $text_len;
-			}
-			$height_max += FONT_SIZE + LINE_PAD;
-		}
-		$width_max = FONT_SIZE * $text_max * TEXT_RATE;		
-
-		// 	カラーアイコンと文字間を含めた幅
-		$width_max += FONT_SIZE + (LINE_PAD * 2);	
-		$left = $this->bgw - $width_max - LEGEND_RIGHT;
-		$top = LEGEND_TOP;
-		// カラーラベル背景の描画
-		if($clabelbg) {
-			$this->drawClabelBG($left - LINE_PAD, $top, $left + $width_max, $top + $height_max + LINE_PAD);
-		}
-		$top += LINE_PAD;
-				
-		// 色数の取得
-		$c_max = count($this->arrColor);
-		for($i = 0; $i < $label_max; $i++) {			
-			// カラーアイコンの表示
-			imagerectangle($this->image, $left, $top, $left + FONT_SIZE, $top + FONT_SIZE, $this->flame_color);
-			imagefilledrectangle($this->image, $left + 1, $top + 1, $left + FONT_SIZE - 1, $top + FONT_SIZE - 1, $this->arrColor[($i % $c_max)]);
-			// ラベルの表示
-			$this->setText(FONT_SIZE, $left + FONT_SIZE + LINE_PAD, $top, $this->arrLegend[$i]);
-			$top += FONT_SIZE + LINE_PAD;
-		}
-	}
-	
-	// カラーラベル背景の描画
-	function drawClabelBG($left, $top, $right, $bottom) {
-		// 影の描画
-		if($this->shade_on) {
-			imagefilledrectangle($this->image, $left + 2, $top + 2, $right + 2, $bottom + 2, $this->shade_color);
-		}
-		// カラーラベル背景の描画
-		imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->clabelbg_color);
-		imagerectangle($this->image, $left, $top, $right, $bottom, $this->flame_color);
-	}
-	
-	// 凡例をセットする
-	function setLegend($arrLegend) {
-		$this->arrLegend = array_values((array)$arrLegend);
-	}
-
-}
-
-?>
Index: anches/feature-module-update/html/admin/total/class/SC_GraphPie.php
===================================================================
--- /branches/feature-module-update/html/admin/total/class/SC_GraphPie.php	(revision 15532)
+++ 	(revision )
@@ -1,200 +1,0 @@
-<?php
-/*
- * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- */
-$SC_GRAPHPIE_DIR = realpath(dirname( __FILE__));
-require_once($SC_GRAPHPIE_DIR . "/SC_GraphBase.php");	
-
-// 円グラフ生成クラス
-class SC_GraphPie extends SC_GraphBase{
-	var $cw;
-	var $ch;
-	var $cz;
-	var $cx;
-	var $cy;
-	var $arrLabel;
-	var $arrData;
-	
-    // コンストラクタ
-	function SC_GraphPie($bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = PIE_LEFT, $top = PIE_TOP) {
-		parent::SC_GraphBase($bgw, $bgh, $left, $top);
-		// サイズ設定
-		$this->setSize(PIE_WIDTH, PIE_HEIGHT, PIE_THICK);
-		// 位置設定
-		$this->setPosition($this->left + ($this->cw / 2), $this->top + ($this->ch / 2));
-    }
-	
-	// データを360°値に変換する
-	function getCircleData($array) {
-		if(!is_array($array)) {
-			return;
-		}
-		$arrRet = array();
-		foreach($array as $val) {
-			$total += $val;			
-		}
-		if($total <= 0) {
-			return;
-		}		
-		$rate = 360 / $total;
-		// ラベル表示用
-		$p_rate = 100 / $total;
-		$cnt = 0;
-		foreach($array as $val) {
-			$ret = round($val * $rate);
-			$new_total+= $ret;
-			$arrRet[] = $ret;
-			// パーセント表示用
-			$this->arrLabel[] = round($val * $p_rate) . " %";
-			$cnt++;
-		}
-		// 合計が360になるように補正しておく
-		$arrRet[0] -= $new_total - 360;
-		return $arrRet;
-	}	
-		
-	// 円の位置設定を行う
-	function setPosition($cx, $cy) {
-		$this->cx = $cx;
-		$this->cy = $cy;
-	}
-		
-	// 円のサイズ設定を行う
-	function setSize($cw, $ch, $cz = 0) {
-		$this->cw = $cw;
-		$this->ch = $ch;
-		$this->cz = $cz;
-	}
-	
-	// 影の描画
-	function drawShade() {
-		$move = 1;
-		for($i = ($this->cy + $this->cz); $i <= ($this->cy + $this->cz + ($this->cz * PIE_SHADE_IMPACT)); $i++) {
-			imagefilledarc($this->image, $this->cx + $move, $i, $this->cw, $this->ch, 0, 360, $this->shade_color, IMG_ARC_PIE);
-			$move += 0.5;
-		}
-	}
-	
-	// データをセットする
-	function setData($arrData) {
-		$this->arrData = array_values($arrData);
-	}
-	
-	// 円グラフを描画する
-	function drawGraph() {
-		$x = $this->cx;
-		$y = $this->cy;
-		$z = $this->cz;
-		$h = $this->ch;
-		$w = $this->cw;
-		
-		// データの角度を取得する
-		$arrRad = $this->getCircleData($this->arrData);
-		$rd_max = count($arrRad);
-		
-		// データが存在しない場合
-		if($rd_max <= 0) {
-			return;
-		}
-		
-		// 影の描画
-		if($this->shade_on) {
-			$this->drawShade();
-		}
-			
-		// 色数の取得
-		$c_max = count($this->arrColor);
-		$dc_max = count($this->arrDarkColor);
-		
-		// 側面の描画		
-		for ($i = ($y + $z - 1); $i >= $y; $i--) {
-			$start = 0;
-			for($j = 0; $j < $rd_max; $j++) {
-				// 角度が0度以上の場合のみ側面を描画する。
-				if($arrRad[$j] > 0) {
-					$end = $start + $arrRad[$j];
-					if($start == 0 && $end == 360) {
-						// -90~270で指定すると円が描画できないので0~360に指定
-						imagearc($this->image, $x, $i, $w, $h, 0, 360, $this->arrDarkColor[($j % $dc_max)]);
-					} else {
-						// -90°は12時の位置から開始するように補正している
-						imagearc($this->image, $x, $i, $w, $h, $start - 90, $end - 90, $this->arrDarkColor[($j % $dc_max)]);	
-					}			
-					$start = $end;
-				}
-			}
-		}
-		// 底面の描画
-		imagearc($this->image, $x, $y + $z, $w, $h, 0, 180 , $this->flame_color);
-
-		// 上面の描画
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$end = $start + $arrRad[$i];
-			if($start == 0 && $end == 360) {
-				// -90~270で指定すると円が描画できないので0~360に指定
-				imagefilledarc($this->image, $x, $y, $w, $h, 0, 360, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);			
-			} else {
-				// -90°は12時の位置から開始するように補正している。		
-				imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);
-			}
-			$start = $end;
-		}
-
-		// 上面の縁取り
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$end = $start + $arrRad[$i];
-			if($start == 0 && $end == 360) {
-				// -90~270で指定すると円が描画できないので0~360に指定
-				imagearc($this->image, $x, $y, $w, $h, 0, 360 , $this->flame_color);
-			}
-			// -90°は12時の位置から開始するように補正している。
-			imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->flame_color, IMG_ARC_EDGED|IMG_ARC_NOFILL);
-			$start = $end;
-		}
-
-		// 側面の縁取り
-		imageline($this->image, $x + ($w / 2), $y, $x + ($w / 2), $y + $z, $this->flame_color);
-		imageline($this->image, $x - ($w / 2), $y, $x - ($w / 2), $y + $z, $this->flame_color);
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$end = $start + $arrRad[$i];
-			// 前面のみ
-			if($end > 90 && $end < 270) {
-				list($ax, $ay) = lfGetArcPos($x, $y, $w, $h, $end);
-				// ラインのずれを補正する
-				if($end > 180) {
-					$ax = $ax + 1;
-				}
-				imageline($this->image, $ax, $ay, $ax, $ay + $z, $this->flame_color);
-			}
-			$start = $end;	
-		}
-				
-		// ラベルの描画
-		$this->drawLabel($arrRad);
-		// 凡例の描画
-		$this->drawLegend(count($this->arrData));			
-	}
-	
-	// 円グラフのラベルを描画する
-	function drawLabel($arrRad) {
-		$rd_max = count($arrRad);
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$center = $start + ($arrRad[$i] / 2);
-			$end = $start + $arrRad[$i];
-			list($sx, $sy) = lfGetArcPos($this->cx, $this->cy, ($this->cw / 1.5), ($this->ch / 1.5), $center);
-			list($ex, $ey) = lfGetArcPos($this->cx, $this->cy, ($this->cw * 1.5), ($this->ch * 1.5), $center);
-			// 指示線の描画
-			imageline($this->image, $sx, $sy, $ex + 2, $ey - PIE_LABEL_UP, $this->flame_color);
-			$this->setText(FONT_SIZE, $ex - 10, $ey - PIE_LABEL_UP - FONT_SIZE, $this->arrLabel[$i], NULL, 0, true);
-			$start = $end;
-		}
-	}	
-}
-
-?>
Index: anches/feature-module-update/html/admin/total/class/config.php
===================================================================
--- /branches/feature-module-update/html/admin/total/class/config.php	(revision 15532)
+++ 	(revision )
@@ -1,96 +1,0 @@
-<?php
-/*
- * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- *
- *	共通 
-*/
-// TTFフォントファイル
-define("FONT_PATH", DATA_PATH . "fonts/wlmaru20044.ttf");
-define("FONT_SIZE", 8);			// フォントサイズ
-define("TITLE_FONT_SIZE", 11);	// タイトルフォントサイズ
-define("BG_WIDTH", 720);		// 背景幅
-define("BG_HEIGHT", 400);		// 背景高さ
-define("LINE_PAD", 5);			// 行間
-define("TEXT_RATE", 0.75);		// フォント補正値(実際の描画幅/フォントサイズ)
-
-/*
-	円グラフ
-*/
-define("PIE_LEFT", 200);			// 円グラフ位置
-define("PIE_TOP", 150);				// 円グラフ位置
-define("PIE_WIDTH", 230);			// 円グラフ幅
-define("PIE_HEIGHT", 100);			// 円グラフ高さ
-define("PIE_THICK", 30);			// 円グラフ太さ
-define("PIE_LABEL_UP", 20);			// 円グラフのラベル位置を上にあげる
-define("PIE_SHADE_IMPACT", 0.1);	// 値が大きいほど影が長くなる
-
-/*
-	折れ線グラフ
-*/
-define("LINE_Y_SCALE", 10);			// Y軸の目盛り数
-define("LINE_X_SCALE", 10);			// X軸の目盛り数
-define("LINE_LEFT", 60);			// 線グラフ位置
-define("LINE_TOP", 50);				// 線グラフ位置
-define("LINE_AREA_WIDTH", 600);		// 線グラフ背景のサイズ
-define("LINE_AREA_HEIGHT", 300);	// 線グラフ背景のサイズ
-define("LINE_MARK_SIZE", 6);		// 線グラフマークのサイズ
-define("LINE_SCALE_SIZE", 6);		// 目盛り幅
-define("LINE_XLABEL_MAX", 30);		// X軸のラベルの表示制限数
-define("LINE_XTITLE_PAD", -5);		// X軸のタイトルと軸の間隔
-define("LINE_YTITLE_PAD", 15);		// Y軸のタイトルと軸の間隔
-
-/* 
-	棒グラフ
-*/
-define("BAR_PAD", 6);				// グラフと目盛りの間隔
-
-/*
-	タイトルラベル
-*/
-define("TITLE_TOP", 10);	// 背景枠との上幅
-
-/*
-	凡例
-*/
-define("LEGEND_TOP", 10); 	// 背景枠との上幅
-define("LEGEND_RIGHT", 10); // 背景枠との右幅
-
-
-/*
-	表示色
-*/
-// 凡例背景
-$ARR_LEGENDBG_COLOR = array(245,245,245);
-// ラベル背景
-$ARR_LABELBG_COLOR = array(255,255,255);
-// グラフカラー
-$ARR_GRAPH_RGB = array(
-	array(200,50,50),
-	array(50,50,200),
-	array(50,200,50),
-	array(255,255,255),
-	array(244,200,200),
-	array(200,200,255),
-	array(50,200,50),
-	array(255,255,255),
-	array(244,244,244),
-);
-// 影の色
-$ARR_SHADE_COLOR = array(100,100,100);
-// 縁の色
-$ARR_FLAME_COLOR = array(0, 0, 0);
-// 文字色
-$ARR_TEXT_COLOR = array(0, 0, 0);
-// 背景カラー
-$ARR_BG_COLOR = array(255,255,255);	
-// タイトル文字色
-$ARR_TITLE_COLOR = array(0, 0, 0);
-// グリッド線色
-$ARR_GRID_COLOR = array(200, 200, 200);
-// マークの色
-$ARR_MARK_COLOR = array(130, 130, 255);
-
-
-?>
Index: anches/feature-module-update/html/admin/total/class/lib.php
===================================================================
--- /branches/feature-module-update/html/admin/total/class/lib.php	(revision 15532)
+++ 	(revision )
@@ -1,59 +1,0 @@
-<?php
-/*
- * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- */
-// 円の中心点と直径から弧の終端座標を算出する。
-/*
-	$cx	: 中心点X座標
-	$cy	: 中心点Y座標
-	$r	: 半径
-	$e	: 角度
-*/
-function lfGetArcPos($cx, $cy, $cw, $ch, $e) {
-	// 三角関数用の角度を求める
-	$s = 90 - $e;
-	$r = $cw / 2;
-	// 位置を求める
-	$x = $cx + ($r * cos(deg2rad($s)));
-	$y = $cy - (($r * sin(deg2rad($s))) * ($ch / $cw));		
-	return array(round($x), round($y));
-}
-
-/* 画像にテキストを描画する */
-function lfImageText($dst_image, $text, $font_size, $left, $top, $font, $arrRGB) {
-	$color = ImageColorAllocate($dst_image, $arrRGB[0], $arrRGB[1], $arrRGB[2]);
-	$text = mb_convert_encoding($text, "UTF-8", CHAR_CODE);
-	// 表示角度	
-	$angle = 0;
-	// テキスト描画
-	ImageTTFText($dst_image, $font_size, $angle, $left, $top, $color, $font, $text);
-}
-
-// 表示色の取得
-function lfGetImageColor($image, $array) {
-	if(count($array) != 3) {
-		return NULL;
-	}
-	$ret = imagecolorallocate($image, $array[0], $array[1], $array[2]);
-	return $ret;
-}
-
-// 影用表示色の取得
-function lfGetImageDarkColor($image, $array) {
-	if(count($array) != 3) {
-		return NULL;
-	}
-	$i = 0;
-	foreach($array as $val) {
-		$dark[$i] = $val - 45;
-		if($dark[$i] < 0) {
-			$dark[$i] = 0;
-		}
-		$i++;
-	}
-	$ret = imagecolorallocate($image, $dark[0], $dark[1], $dark[2]);
-	return $ret;
-}
-?>
Index: anches/feature-module-update/html/admin/total/class/SC_GraphBar.php
===================================================================
--- /branches/feature-module-update/html/admin/total/class/SC_GraphBar.php	(revision 15532)
+++ 	(revision )
@@ -1,83 +1,0 @@
-<?php
-/*
- * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- */
-$SC_GRAPHBAR_DIR = realpath(dirname( __FILE__));
-require_once($SC_GRAPHBAR_DIR . "/SC_GraphLine.php");	
-
-// 棒グラフ生成クラス
-class SC_GraphBar extends SC_GraphLine{
-    // コンストラクタ
-	function SC_GraphLine(
-		$bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
-		$area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
-		parent::SC_GraphLine($bgw, $bgh, $left, $top, $area_width, $area_height);	
-	}
-	
-	// グラフの描画
-	function drawGraph() {
-		$this->drawYLine();
-		$this->drawXLine(true);
-		
-		// 棒グラフの描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawBar($i);
-		}
-		
-		// ラベルの描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawLabel($i);
-		}
-		
-		// 凡例の描画
-		$this->drawLegend();	
-	}
-	
-	// 棒グラフの描画
-	function drawBar($line_no) {
-		$arrPointList = $this->arrPointList[$line_no];
-		// データ数を数える
-		$count = count($arrPointList);
-		// 半目盛りの幅を求める
-		$half_scale = intval($this->area_width / ($count + 1) / 2);
-		// 目盛りの幅を求める
-		$scale_width = intval($this->area_width / ($count + 1));
-		// 棒グラフのサイズを求める
-		$bar_width = intval(($scale_width - (BAR_PAD * 2)) / $this->line_max);
-		// 色数の取得
-		$c_max = count($this->arrColor);
-		for($i = 0; $i < $count; $i++) {
-			$left = $arrPointList[$i][0] - $half_scale + BAR_PAD + ($bar_width * $line_no);
-			$top = $arrPointList[$i][1];
-			$right = $left + $bar_width;
-			$bottom = $this->top + $this->area_height;
-			
-			// 影の描画
-			if($this->shade_on) {
-				imagefilledrectangle($this->image, $left + 2, $top + 2, $right + 2, $bottom, $this->shade_color);
-			}
-			//imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[($i % $c_max)]);
-			imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[$line_no]);			
-			imagerectangle($this->image, $left, $top, $right, $bottom, $this->flame_color);					
-		}
-	}
-	
-	// ラベルを描画する
-	function drawLabel($line_no) {
-		$arrData = $this->arrDataList[$line_no];
-		$arrPointList = $this->arrPointList[$line_no];
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];
-			$text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
-			$y_pos = $y - FONT_SIZE - 5;
-			$x_pos = $x - $text_width / 2;
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
-		}
-	}
-	
-}
-?>
Index: /branches/feature-module-update/data/class/graph/SC_GraphLine.php
===================================================================
--- /branches/feature-module-update/data/class/graph/SC_GraphLine.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/SC_GraphLine.php	(revision 15597)
@@ -0,0 +1,288 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ */
+$SC_GRAPHLINE_DIR = realpath(dirname( __FILE__));
+require_once($SC_GRAPHLINE_DIR . "/SC_GraphBase.php");	
+
+// 折れ線グラフ生成クラス
+class SC_GraphLine extends SC_GraphBase{
+	var $area_width;
+	var $area_height;
+	var $ygrid_on;
+	var $graph_max;		// グラフのエリア最大値(Y軸頂点の値)
+	var $arrXLabel;	
+	var $XLabelAngle;	// X軸ラベル角度	
+	var $XTitle;		// X軸タイトル
+	var $YTitle;		// Y軸タイトル
+	var $arrDataList;	// グラフデータを格納
+	var $arrPointList;	// 折れ線座標を格納
+	var $line_max;		// 複数の描画の場合に加算していく
+	
+	var $x_margin;
+	var $y_margin;
+			
+    // コンストラクタ
+	function SC_GraphLine(
+		$bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
+		$area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
+		parent::SC_GraphBase($bgw, $bgh, $left, $top);	
+		$this->area_width = $area_width;
+		$this->area_height = $area_height;
+		$this->ygrid_on = true;
+		$this->line_max = 0;
+		$this->graph_max = 0;
+		$this->XLabelAngle = 0;
+		$this->x_margin = 0;
+		$this->y_margin = 0;
+	}
+	
+	// X軸ラベルの角度セット
+	function setXLabelAngle($Angle) {
+		$this->XLabelAngle = $Angle;
+	}
+	
+	// Y軸タイトル
+	function drawYTitle() {
+		// Y軸にタイトルを入れる
+		if($this->YTitle != "") {
+			$text_width = $this->getTextWidth($this->YTitle, FONT_SIZE);
+			$x_pos = $this->left - ($text_width / 2);
+			$y_pos = $this->top - FONT_SIZE - LINE_YTITLE_PAD;		
+			$this->setText(FONT_SIZE, $x_pos, $y_pos, $this->YTitle);
+		}
+	}
+	
+	// X軸タイトル
+	function drawXTitle() {
+		// Y軸にタイトルを入れる
+		if($this->XTitle != "") {
+			$text_width = $this->getTextWidth($this->XTitle, FONT_SIZE);
+			$x_pos = $this->left + $this->area_width - ($text_width / 2) + 30;
+			$y_pos = $this->top + $this->area_height + LINE_XTITLE_PAD;
+			$this->setText(FONT_SIZE, $x_pos, $y_pos, $this->XTitle);
+		}
+	}
+	
+	// Y軸の描画
+	function drawYLine() {
+		imageline($this->image, $this->left, $this->top, $this->left, $this->top + $this->area_height, $this->flame_color);
+		// 目盛り幅を求める(中間点は自動)
+		$size = $this->area_height / (LINE_Y_SCALE * 2);
+		// 上から目盛りを入れていく
+		$pos = 0;
+		for($i = 0; $i < (LINE_Y_SCALE * 2); $i++) {
+			// 目盛り幅
+			if(($i % 2) == 0) {
+				$sw = LINE_SCALE_SIZE;
+				if($this->ygrid_on) {
+					imageline($this->image, $this->left, $this->top + $pos, $this->left + $this->area_width, $this->top + $pos, $this->grid_color);
+				}
+			} else {
+				$sw = LINE_SCALE_SIZE / 2;
+			}
+			imageline($this->image, $this->left, $this->top + $pos, $this->left + $sw, $this->top + $pos, $this->flame_color);
+			$pos += $size;
+		}
+		// Y軸に目盛り値を入れる
+		$this->setYScale();
+		$this->drawYTitle();	
+	}
+	
+	// X軸の描画
+	function drawXLine($bar = false) {
+		imageline($this->image, $this->left, $this->top + $this->area_height, $this->left + $this->area_width, $this->top + $this->area_height, $this->flame_color);
+		$arrPointList = $this->arrPointList[0];
+		$count = count($arrPointList);
+		
+		// 棒グラフの場合は半目盛りずらす
+		if($bar) {
+			$half_scale = intval($this->area_width / ($count + 1) / 2);
+		} else {
+			$half_scale = 0;
+		}
+		
+		// ラベルの表示インターバルを算出
+		$interval = ceil($count / LINE_XLABEL_MAX);	// 切り上げ				
+		for($i = 0; $i < $count; $i++) {
+			// X軸に目盛りを入れる
+			$x = $arrPointList[$i][0];
+			$pos = $this->top + $this->area_height;
+			imageline($this->image, $x - $half_scale, $pos, $x - $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);			
+			// ラベルを入れる
+			if(($i % $interval) == 0) {
+				$text_width = $this->getTextWidth($this->arrXLabel[$i], FONT_SIZE);
+				$x_pos = $x;
+				
+				if ($bar) $bar_margin = -15;
+
+				$this->setText(FONT_SIZE, $x_pos + $this->x_margin + $bar_margin, $pos + FONT_SIZE + $this->y_margin, $this->arrXLabel[$i], NULL, $this->XLabelAngle);
+			}
+		}
+		
+		// 棒グラフの場合は最後の目盛りを一つ追加する
+		if($bar) {
+			imageline($this->image, $x + $half_scale, $pos, $x + $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);	
+		}
+		
+		$this->drawXTitle();
+	}
+		
+	// グリッド表示
+	function setYGridOn($ygrid_on) {
+		$this->ygrid_on = $ygrid_on;
+	}
+	
+	// ポイントの描画
+	function setMark($line_no, $left, $top, $size = LINE_MARK_SIZE) {
+		// 偶数に変換しておく
+		$size += $size % 2;
+		$array = array(
+			$left, $top - ($size / 2),
+			$left + ($size / 2), $top,
+			$left, $top + ($size / 2),
+			$left - ($size / 2), $top,
+		);		
+		imagefilledpolygon($this->image, $array, 4, $this->arrColor[$line_no]);
+		imagepolygon($this->image, $array, 4, $this->flame_color);
+ 		imagesetpixel ($this->image, $left, $top + ($size / 2), $this->flame_color);
+	}	
+	
+	// Y軸目盛りに値を入れる
+	function setYScale() {
+		// 1目盛りの値
+		$number = intval($this->graph_max / LINE_Y_SCALE);				
+		// 目盛り幅を求める
+		$size = $this->area_height / LINE_Y_SCALE;
+		$pos = 0;
+		for($i = 0; $i <= LINE_Y_SCALE; $i++) {
+			$snumber = $number * (LINE_Y_SCALE - $i);
+			$disp_number = number_format($snumber);
+			$num_width = $this->getTextWidth($disp_number, FONT_SIZE);
+			$this->setText(FONT_SIZE, $this->left - $num_width - 2, $this->top + $pos - (FONT_SIZE / 2), $disp_number);
+			$pos += $size;
+		}
+	}
+	
+	// 
+	function setMax($arrData) {
+		// データの最大値を取得する。
+		$data_max = max($arrData);
+		// 10の何倍かを取得
+		$figure = strlen($data_max) - 1;
+		// 次の桁を計算する
+		$tenval = pow(10, $figure);
+		// グラフ上での最大値を求める
+		$this->graph_max = $tenval * (intval($data_max / $tenval) + 1);
+		// 最大値が10未満の場合の対応
+		if($this->graph_max < 10) {
+			$this->graph_max = 10;
+		}	
+	}
+	
+	// グラフの描画
+	function drawGraph() {
+		// グラフ背景を描画
+		$this->drawYLine();
+		$this->drawXLine();
+		
+		// 折れ線グラフ描画
+		for($i = 0; $i < $this->line_max; $i++) {
+			$this->drawLine($i);
+		}
+		
+		// マークを描画
+		for($i = 0; $i < $this->line_max; $i++) {
+			$this->drawMark($i);
+		}
+		
+		// ラベルを描画
+		for($i = 0; $i < $this->line_max; $i++) {
+			$this->drawLabel($i);		
+		}
+
+		// 凡例の描画
+		$this->drawLegend();	
+	}
+	
+	// ラインを描画する
+	function drawLine($line_no) {
+		$arrPointList = $this->arrPointList[$line_no];
+		
+		$count = count($arrPointList);
+		for($i = 0; $i < $count; $i++) {
+			$x = $arrPointList[$i][0];
+			$y = $arrPointList[$i][1];
+			if(isset($arrPointList[$i + 1])) {
+				$next_x = $arrPointList[$i + 1][0];
+				$next_y = $arrPointList[$i + 1][1];
+				imageline($this->image, $x, $y, $next_x, $next_y, $this->arrColor[$line_no]);
+			}
+		}
+	}
+	
+	// マークを描画する
+	function drawMark($line_no) {
+		$arrPointList = $this->arrPointList[$line_no];
+		$count = count($arrPointList);
+		for($i = 0; $i < $count; $i++) {
+			$x = $arrPointList[$i][0];
+			$y = $arrPointList[$i][1];			
+			$this->setMark($line_no, $x, $y);
+		}
+	}
+	
+	// ラベルを描画する
+	function drawLabel($line_no) {
+		$arrData = $this->arrDataList[$line_no];
+		$arrPointList = $this->arrPointList[$line_no];
+		$count = count($arrPointList);
+		for($i = 0; $i < $count; $i++) {
+			$x = $arrPointList[$i][0];
+			$y = $arrPointList[$i][1];
+			$text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
+			$y_pos = $y - FONT_SIZE - 5;
+			$x_pos = $x - $text_width / 2;
+			$this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
+		}
+	}
+	
+	// データをセットする
+	function setData($arrData) {
+		$this->arrDataList[$this->line_max] = array_values((array)$arrData);
+		$this->setMax($this->arrDataList[$this->line_max]);
+		// 値の描画変換率
+		$rate = $this->area_height / $this->graph_max;
+		// 描画率を計算
+		$count = count($this->arrDataList[$this->line_max]);
+		$scale_width = $this->area_width / ($count + 1);		
+		$this->arrPointList[$this->line_max] = array();
+		for($i = 0; $i < $count; $i++) {
+			// X座標を求める
+			$x = intval($this->left + ($scale_width * ($i + 1)));
+			// Y座標を求める
+			$y = intval($this->top + $this->area_height - ($this->arrDataList[$this->line_max][$i] * $rate));
+			// XY座標を保存する
+			$this->arrPointList[$this->line_max][] = array($x, $y);
+		}
+		$this->line_max++;
+	}
+	
+	// X軸ラベルをセットする
+	function setXLabel($arrXLabel) {
+		$this->arrXLabel = array_values((array)$arrXLabel);
+	}
+	
+	// X軸タイトルをセットする
+	function setXTitle($title) {
+		$this->XTitle = $title;
+	}
+	
+	// Y軸タイトルをセットする
+	function setYTitle($title) {
+		$this->YTitle = $title;
+	}	
+}
+?>
Index: /branches/feature-module-update/data/class/graph/SC_GraphBase.php
===================================================================
--- /branches/feature-module-update/data/class/graph/SC_GraphBase.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/SC_GraphBase.php	(revision 15597)
@@ -0,0 +1,237 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ */
+/*
+$SC_GRAPHPIE_DIR = realpath(dirname( __FILE__));
+require_once($SC_GRAPHPIE_DIR . "/config.php");
+require_once($SC_GRAPHPIE_DIR . "/lib.php");	
+*/
+require_once(realpath(dirname( __FILE__)) . "/config.php");
+require_once(realpath(dirname( __FILE__)) . "/lib.php");	
+
+// SC_Graph共通クラス
+class SC_GraphBase {
+	var $arrRGB;
+	var $arrColor;
+	var $arrDarkColor;
+	var $image;
+	var $left;
+	var $top;
+	var $shade_color;
+	var $flame_color;
+	var $shade_on;
+	var $text_color;
+	var $labelbg_color;
+	var $bgw;
+	var $bgh;
+	var $clabelbg_color;
+	var $title_color;
+	var $text_top;
+	var $mark_color;
+	var $arrLegend;
+	
+	// コンストラクタ
+	function SC_GraphBase($bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left, $top) {
+		global $ARR_GRAPH_RGB;
+		global $ARR_BG_COLOR;
+		global $ARR_SHADE_COLOR;
+		global $ARR_FLAME_COLOR;
+		global $ARR_TEXT_COLOR;
+		global $ARR_LABELBG_COLOR;
+		global $ARR_LEGENDBG_COLOR;
+		global $ARR_TITLE_COLOR;
+		global $ARR_GRID_COLOR;
+		
+		// 画像作成
+		$this->bgw = $bgw;
+		$this->bgh = $bgh;	
+		$this->image = imagecreatetruecolor($bgw, $bgh);
+		// アンチエイリアス有効
+		if (function_exists("imageantialias")) imageantialias($this->image, true);
+		// 背景色をセット
+		imagefill($this->image, 0, 0, lfGetImageColor($this->image, $ARR_BG_COLOR));
+		
+		// 使用色の生成
+		$this->setColorList($ARR_GRAPH_RGB);
+		// グラフ描画位置の設定
+		$this->left = $left;
+		$this->top = $top;
+		$this->shade_color = lfGetImageColor($this->image, $ARR_SHADE_COLOR);
+		$this->flame_color = lfGetImageColor($this->image, $ARR_FLAME_COLOR);
+		$this->text_color = lfGetImageColor($this->image, $ARR_TEXT_COLOR);
+		$this->labelbg_color = lfGetImageColor($this->image, $ARR_LABELBG_COLOR);
+		$this->clabelbg_color = lfGetImageColor($this->image, $ARR_LEGENDBG_COLOR);
+		$this->title_color = lfGetImageColor($this->image, $ARR_TITLE_COLOR);
+		$this->grid_color = lfGetImageColor($this->image, $ARR_GRID_COLOR);
+			
+		// 影あり
+		$this->shade_on = true;
+    }
+	
+	// リサンプル(画像を滑らかに縮小する)
+	function resampled() {
+		$new_width = $this->bgw * 0.8;
+		$new_height = $this->bgh * 0.8;		
+		$tmp_image = imagecreatetruecolor($new_width, $new_height);
+		if(imagecopyresampled($tmp_image, $this->image, 0, 0, 0, 0, $new_width, $new_height, $this->bgw, $this->bgh)) {
+			$this->image = $tmp_image;
+		}
+	}
+	
+	
+	// オブジェクトカラーの設定
+	function setColorList($arrRGB) {
+		$this->arrRGB = $arrRGB;
+		$count = count($this->arrRGB);
+		// 通常色の設定
+		for($i = 0; $i < $count; $i++) {
+			$this->arrColor[$i] = lfGetImageColor($this->image, $this->arrRGB[$i]);
+		}
+		// 暗色の設定
+		for($i = 0; $i < $count; $i++) {
+			$this->arrDarkColor[$i] = lfGetImageDarkColor($this->image, $this->arrRGB[$i]);
+		}		
+	}
+	
+	// 影のありなし
+	function setShadeOn($shade_on) {
+		$this->shade_on = $shade_on;
+	}
+	
+	// 画像を出力する
+	function outputGraph($header = true, $filename = "") {
+		if($header) {
+			header('Content-type: image/png');
+		}
+		
+		if ($filename != "") {
+			imagepng($this->image, $filename);
+		}else{
+			imagepng($this->image);
+		}
+
+		imagedestroy($this->image);
+	}
+
+	// 描画時のテキスト幅を求める
+	function getTextWidth($text, $font_size) {
+		$text_len = strlen($text);
+		$ret = $font_size * $text_len * TEXT_RATE;	
+		/*
+			※正確な値が取得できなかったので廃止
+			// テキスト幅の取得
+			$arrPos = imagettfbbox($font_size, 0, FONT_PATH, $text);
+			$ret = $arrPos[2] - $arrPos[0];
+		*/
+		return $ret;
+	}
+	
+	// テキストを出力する
+	function setText($font_size, $left, $top, $text, $color = NULL, $angle = 0, $labelbg = false) {
+		// 時計回りに角度を変更
+		$angle = -$angle;		
+		// ラベル背景
+		if($labelbg) {
+			$text_width = $this->getTextWidth($text, $font_size);
+			imagefilledrectangle($this->image, $left - 2, $top - 2, $left + $text_width + 2, $top + $font_size + 2, $this->labelbg_color);
+		}
+		//$text = mb_convert_encoding($text, "UTF-8", CHAR_CODE);
+		$text = mb_convert_encoding($text, CHAR_CODE);
+		if($color != NULL) {
+			ImageTTFText($this->image, $font_size, $angle, $left, $top + $font_size, $color, FONT_PATH, $text);
+		} else {
+			ImageTTFText($this->image, $font_size, $angle, $left, $top + $font_size, $this->text_color, FONT_PATH, $text);			
+		}
+	}
+	
+	// タイトルを出力する
+	function drawTitle($text, $font_size = TITLE_FONT_SIZE) {
+		// 出力位置の算出
+		$text_width = $this->getTextWidth($text, $font_size);
+		$left = ($this->bgw - $text_width) / 2;
+		$top = TITLE_TOP;
+		$this->setText($font_size, $left, $top, $text, $this->title_color);		
+	}
+	
+	// ログを出力する
+	function debugPrint($text) {
+		$text = mb_convert_encoding($text, "UTF-8", CHAR_CODE);
+		if(!isset($this->text_top)) {
+			$this->text_top = FONT_SIZE + LINE_PAD;
+		}		
+		// テキスト描画
+		ImageTTFText($this->image, FONT_SIZE, 0, LINE_PAD, $this->text_top, $this->text_color, FONT_PATH, $text);
+		$this->text_top += FONT_SIZE + LINE_PAD;
+	}
+		
+	// カラーラベルを描画
+	function drawLegend($legend_max = "", $clabelbg = true) {
+		// 凡例が登録されていなければ中止
+		if(count($this->arrLegend) <= 0) {
+			return;
+		}		
+		
+		if($legend_max != "") {
+			$label_max = $legend_max;
+		} else {
+			$label_max = count($this->arrLegend);
+		}
+
+		$height_max = 0;
+		$text_max = 0;
+		$width_max = 0;
+		
+		// 一番文字数が多いものを取得
+		for($i = 0; $i < $label_max; $i++) {
+			$text_len = strlen($this->arrLegend[$i]);
+			if($text_max < $text_len) {
+				$text_max = $text_len;
+			}
+			$height_max += FONT_SIZE + LINE_PAD;
+		}
+		$width_max = FONT_SIZE * $text_max * TEXT_RATE;		
+
+		// 	カラーアイコンと文字間を含めた幅
+		$width_max += FONT_SIZE + (LINE_PAD * 2);	
+		$left = $this->bgw - $width_max - LEGEND_RIGHT;
+		$top = LEGEND_TOP;
+		// カラーラベル背景の描画
+		if($clabelbg) {
+			$this->drawClabelBG($left - LINE_PAD, $top, $left + $width_max, $top + $height_max + LINE_PAD);
+		}
+		$top += LINE_PAD;
+				
+		// 色数の取得
+		$c_max = count($this->arrColor);
+		for($i = 0; $i < $label_max; $i++) {			
+			// カラーアイコンの表示
+			imagerectangle($this->image, $left, $top, $left + FONT_SIZE, $top + FONT_SIZE, $this->flame_color);
+			imagefilledrectangle($this->image, $left + 1, $top + 1, $left + FONT_SIZE - 1, $top + FONT_SIZE - 1, $this->arrColor[($i % $c_max)]);
+			// ラベルの表示
+			$this->setText(FONT_SIZE, $left + FONT_SIZE + LINE_PAD, $top, $this->arrLegend[$i]);
+			$top += FONT_SIZE + LINE_PAD;
+		}
+	}
+	
+	// カラーラベル背景の描画
+	function drawClabelBG($left, $top, $right, $bottom) {
+		// 影の描画
+		if($this->shade_on) {
+			imagefilledrectangle($this->image, $left + 2, $top + 2, $right + 2, $bottom + 2, $this->shade_color);
+		}
+		// カラーラベル背景の描画
+		imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->clabelbg_color);
+		imagerectangle($this->image, $left, $top, $right, $bottom, $this->flame_color);
+	}
+	
+	// 凡例をセットする
+	function setLegend($arrLegend) {
+		$this->arrLegend = array_values((array)$arrLegend);
+	}
+
+}
+
+?>
Index: /branches/feature-module-update/data/class/graph/SC_GraphPie.php
===================================================================
--- /branches/feature-module-update/data/class/graph/SC_GraphPie.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/SC_GraphPie.php	(revision 15597)
@@ -0,0 +1,200 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ */
+$SC_GRAPHPIE_DIR = realpath(dirname( __FILE__));
+require_once($SC_GRAPHPIE_DIR . "/SC_GraphBase.php");	
+
+// 円グラフ生成クラス
+class SC_GraphPie extends SC_GraphBase{
+	var $cw;
+	var $ch;
+	var $cz;
+	var $cx;
+	var $cy;
+	var $arrLabel;
+	var $arrData;
+	
+    // コンストラクタ
+	function SC_GraphPie($bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = PIE_LEFT, $top = PIE_TOP) {
+		parent::SC_GraphBase($bgw, $bgh, $left, $top);
+		// サイズ設定
+		$this->setSize(PIE_WIDTH, PIE_HEIGHT, PIE_THICK);
+		// 位置設定
+		$this->setPosition($this->left + ($this->cw / 2), $this->top + ($this->ch / 2));
+    }
+	
+	// データを360°値に変換する
+	function getCircleData($array) {
+		if(!is_array($array)) {
+			return;
+		}
+		$arrRet = array();
+		foreach($array as $val) {
+			$total += $val;			
+		}
+		if($total <= 0) {
+			return;
+		}		
+		$rate = 360 / $total;
+		// ラベル表示用
+		$p_rate = 100 / $total;
+		$cnt = 0;
+		foreach($array as $val) {
+			$ret = round($val * $rate);
+			$new_total+= $ret;
+			$arrRet[] = $ret;
+			// パーセント表示用
+			$this->arrLabel[] = round($val * $p_rate) . " %";
+			$cnt++;
+		}
+		// 合計が360になるように補正しておく
+		$arrRet[0] -= $new_total - 360;
+		return $arrRet;
+	}	
+		
+	// 円の位置設定を行う
+	function setPosition($cx, $cy) {
+		$this->cx = $cx;
+		$this->cy = $cy;
+	}
+		
+	// 円のサイズ設定を行う
+	function setSize($cw, $ch, $cz = 0) {
+		$this->cw = $cw;
+		$this->ch = $ch;
+		$this->cz = $cz;
+	}
+	
+	// 影の描画
+	function drawShade() {
+		$move = 1;
+		for($i = ($this->cy + $this->cz); $i <= ($this->cy + $this->cz + ($this->cz * PIE_SHADE_IMPACT)); $i++) {
+			imagefilledarc($this->image, $this->cx + $move, $i, $this->cw, $this->ch, 0, 360, $this->shade_color, IMG_ARC_PIE);
+			$move += 0.5;
+		}
+	}
+	
+	// データをセットする
+	function setData($arrData) {
+		$this->arrData = array_values($arrData);
+	}
+	
+	// 円グラフを描画する
+	function drawGraph() {
+		$x = $this->cx;
+		$y = $this->cy;
+		$z = $this->cz;
+		$h = $this->ch;
+		$w = $this->cw;
+		
+		// データの角度を取得する
+		$arrRad = $this->getCircleData($this->arrData);
+		$rd_max = count($arrRad);
+		
+		// データが存在しない場合
+		if($rd_max <= 0) {
+			return;
+		}
+		
+		// 影の描画
+		if($this->shade_on) {
+			$this->drawShade();
+		}
+			
+		// 色数の取得
+		$c_max = count($this->arrColor);
+		$dc_max = count($this->arrDarkColor);
+		
+		// 側面の描画		
+		for ($i = ($y + $z - 1); $i >= $y; $i--) {
+			$start = 0;
+			for($j = 0; $j < $rd_max; $j++) {
+				// 角度が0度以上の場合のみ側面を描画する。
+				if($arrRad[$j] > 0) {
+					$end = $start + $arrRad[$j];
+					if($start == 0 && $end == 360) {
+						// -90~270で指定すると円が描画できないので0~360に指定
+						imagearc($this->image, $x, $i, $w, $h, 0, 360, $this->arrDarkColor[($j % $dc_max)]);
+					} else {
+						// -90°は12時の位置から開始するように補正している
+						imagearc($this->image, $x, $i, $w, $h, $start - 90, $end - 90, $this->arrDarkColor[($j % $dc_max)]);	
+					}			
+					$start = $end;
+				}
+			}
+		}
+		// 底面の描画
+		imagearc($this->image, $x, $y + $z, $w, $h, 0, 180 , $this->flame_color);
+
+		// 上面の描画
+		$start = 0;
+		for($i = 0; $i < $rd_max; $i++) {
+			$end = $start + $arrRad[$i];
+			if($start == 0 && $end == 360) {
+				// -90~270で指定すると円が描画できないので0~360に指定
+				imagefilledarc($this->image, $x, $y, $w, $h, 0, 360, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);			
+			} else {
+				// -90°は12時の位置から開始するように補正している。		
+				imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);
+			}
+			$start = $end;
+		}
+
+		// 上面の縁取り
+		$start = 0;
+		for($i = 0; $i < $rd_max; $i++) {
+			$end = $start + $arrRad[$i];
+			if($start == 0 && $end == 360) {
+				// -90~270で指定すると円が描画できないので0~360に指定
+				imagearc($this->image, $x, $y, $w, $h, 0, 360 , $this->flame_color);
+			}
+			// -90°は12時の位置から開始するように補正している。
+			imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->flame_color, IMG_ARC_EDGED|IMG_ARC_NOFILL);
+			$start = $end;
+		}
+
+		// 側面の縁取り
+		imageline($this->image, $x + ($w / 2), $y, $x + ($w / 2), $y + $z, $this->flame_color);
+		imageline($this->image, $x - ($w / 2), $y, $x - ($w / 2), $y + $z, $this->flame_color);
+		$start = 0;
+		for($i = 0; $i < $rd_max; $i++) {
+			$end = $start + $arrRad[$i];
+			// 前面のみ
+			if($end > 90 && $end < 270) {
+				list($ax, $ay) = lfGetArcPos($x, $y, $w, $h, $end);
+				// ラインのずれを補正する
+				if($end > 180) {
+					$ax = $ax + 1;
+				}
+				imageline($this->image, $ax, $ay, $ax, $ay + $z, $this->flame_color);
+			}
+			$start = $end;	
+		}
+				
+		// ラベルの描画
+		$this->drawLabel($arrRad);
+		// 凡例の描画
+		$this->drawLegend(count($this->arrData));			
+	}
+	
+	// 円グラフのラベルを描画する
+	function drawLabel($arrRad) {
+		$rd_max = count($arrRad);
+		$start = 0;
+		for($i = 0; $i < $rd_max; $i++) {
+			$center = $start + ($arrRad[$i] / 2);
+			$end = $start + $arrRad[$i];
+			list($sx, $sy) = lfGetArcPos($this->cx, $this->cy, ($this->cw / 1.5), ($this->ch / 1.5), $center);
+			list($ex, $ey) = lfGetArcPos($this->cx, $this->cy, ($this->cw * 1.5), ($this->ch * 1.5), $center);
+			// 指示線の描画
+			imageline($this->image, $sx, $sy, $ex + 2, $ey - PIE_LABEL_UP, $this->flame_color);
+			$this->setText(FONT_SIZE, $ex - 10, $ey - PIE_LABEL_UP - FONT_SIZE, $this->arrLabel[$i], NULL, 0, true);
+			$start = $end;
+		}
+	}	
+}
+
+?>
Index: /branches/feature-module-update/data/class/graph/config.php
===================================================================
--- /branches/feature-module-update/data/class/graph/config.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/config.php	(revision 15597)
@@ -0,0 +1,96 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ *	共通 
+*/
+// TTFフォントファイル
+define("FONT_PATH", DATA_PATH . "fonts/wlmaru20044.ttf");
+define("FONT_SIZE", 8);			// フォントサイズ
+define("TITLE_FONT_SIZE", 11);	// タイトルフォントサイズ
+define("BG_WIDTH", 720);		// 背景幅
+define("BG_HEIGHT", 400);		// 背景高さ
+define("LINE_PAD", 5);			// 行間
+define("TEXT_RATE", 0.75);		// フォント補正値(実際の描画幅/フォントサイズ)
+
+/*
+	円グラフ
+*/
+define("PIE_LEFT", 200);			// 円グラフ位置
+define("PIE_TOP", 150);				// 円グラフ位置
+define("PIE_WIDTH", 230);			// 円グラフ幅
+define("PIE_HEIGHT", 100);			// 円グラフ高さ
+define("PIE_THICK", 30);			// 円グラフ太さ
+define("PIE_LABEL_UP", 20);			// 円グラフのラベル位置を上にあげる
+define("PIE_SHADE_IMPACT", 0.1);	// 値が大きいほど影が長くなる
+
+/*
+	折れ線グラフ
+*/
+define("LINE_Y_SCALE", 10);			// Y軸の目盛り数
+define("LINE_X_SCALE", 10);			// X軸の目盛り数
+define("LINE_LEFT", 60);			// 線グラフ位置
+define("LINE_TOP", 50);				// 線グラフ位置
+define("LINE_AREA_WIDTH", 600);		// 線グラフ背景のサイズ
+define("LINE_AREA_HEIGHT", 300);	// 線グラフ背景のサイズ
+define("LINE_MARK_SIZE", 6);		// 線グラフマークのサイズ
+define("LINE_SCALE_SIZE", 6);		// 目盛り幅
+define("LINE_XLABEL_MAX", 30);		// X軸のラベルの表示制限数
+define("LINE_XTITLE_PAD", -5);		// X軸のタイトルと軸の間隔
+define("LINE_YTITLE_PAD", 15);		// Y軸のタイトルと軸の間隔
+
+/* 
+	棒グラフ
+*/
+define("BAR_PAD", 6);				// グラフと目盛りの間隔
+
+/*
+	タイトルラベル
+*/
+define("TITLE_TOP", 10);	// 背景枠との上幅
+
+/*
+	凡例
+*/
+define("LEGEND_TOP", 10); 	// 背景枠との上幅
+define("LEGEND_RIGHT", 10); // 背景枠との右幅
+
+
+/*
+	表示色
+*/
+// 凡例背景
+$ARR_LEGENDBG_COLOR = array(245,245,245);
+// ラベル背景
+$ARR_LABELBG_COLOR = array(255,255,255);
+// グラフカラー
+$ARR_GRAPH_RGB = array(
+	array(200,50,50),
+	array(50,50,200),
+	array(50,200,50),
+	array(255,255,255),
+	array(244,200,200),
+	array(200,200,255),
+	array(50,200,50),
+	array(255,255,255),
+	array(244,244,244),
+);
+// 影の色
+$ARR_SHADE_COLOR = array(100,100,100);
+// 縁の色
+$ARR_FLAME_COLOR = array(0, 0, 0);
+// 文字色
+$ARR_TEXT_COLOR = array(0, 0, 0);
+// 背景カラー
+$ARR_BG_COLOR = array(255,255,255);	
+// タイトル文字色
+$ARR_TITLE_COLOR = array(0, 0, 0);
+// グリッド線色
+$ARR_GRID_COLOR = array(200, 200, 200);
+// マークの色
+$ARR_MARK_COLOR = array(130, 130, 255);
+
+
+?>
Index: /branches/feature-module-update/data/class/graph/lib.php
===================================================================
--- /branches/feature-module-update/data/class/graph/lib.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/lib.php	(revision 15597)
@@ -0,0 +1,59 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ */
+// 円の中心点と直径から弧の終端座標を算出する。
+/*
+	$cx	: 中心点X座標
+	$cy	: 中心点Y座標
+	$r	: 半径
+	$e	: 角度
+*/
+function lfGetArcPos($cx, $cy, $cw, $ch, $e) {
+	// 三角関数用の角度を求める
+	$s = 90 - $e;
+	$r = $cw / 2;
+	// 位置を求める
+	$x = $cx + ($r * cos(deg2rad($s)));
+	$y = $cy - (($r * sin(deg2rad($s))) * ($ch / $cw));		
+	return array(round($x), round($y));
+}
+
+/* 画像にテキストを描画する */
+function lfImageText($dst_image, $text, $font_size, $left, $top, $font, $arrRGB) {
+	$color = ImageColorAllocate($dst_image, $arrRGB[0], $arrRGB[1], $arrRGB[2]);
+	$text = mb_convert_encoding($text, "UTF-8", CHAR_CODE);
+	// 表示角度	
+	$angle = 0;
+	// テキスト描画
+	ImageTTFText($dst_image, $font_size, $angle, $left, $top, $color, $font, $text);
+}
+
+// 表示色の取得
+function lfGetImageColor($image, $array) {
+	if(count($array) != 3) {
+		return NULL;
+	}
+	$ret = imagecolorallocate($image, $array[0], $array[1], $array[2]);
+	return $ret;
+}
+
+// 影用表示色の取得
+function lfGetImageDarkColor($image, $array) {
+	if(count($array) != 3) {
+		return NULL;
+	}
+	$i = 0;
+	foreach($array as $val) {
+		$dark[$i] = $val - 45;
+		if($dark[$i] < 0) {
+			$dark[$i] = 0;
+		}
+		$i++;
+	}
+	$ret = imagecolorallocate($image, $dark[0], $dark[1], $dark[2]);
+	return $ret;
+}
+?>
Index: /branches/feature-module-update/data/class/graph/SC_GraphBar.php
===================================================================
--- /branches/feature-module-update/data/class/graph/SC_GraphBar.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/SC_GraphBar.php	(revision 15597)
@@ -0,0 +1,83 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ */
+$SC_GRAPHBAR_DIR = realpath(dirname( __FILE__));
+require_once($SC_GRAPHBAR_DIR . "/SC_GraphLine.php");	
+
+// 棒グラフ生成クラス
+class SC_GraphBar extends SC_GraphLine{
+    // コンストラクタ
+	function SC_GraphLine(
+		$bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
+		$area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
+		parent::SC_GraphLine($bgw, $bgh, $left, $top, $area_width, $area_height);	
+	}
+	
+	// グラフの描画
+	function drawGraph() {
+		$this->drawYLine();
+		$this->drawXLine(true);
+		
+		// 棒グラフの描画
+		for($i = 0; $i < $this->line_max; $i++) {
+			$this->drawBar($i);
+		}
+		
+		// ラベルの描画
+		for($i = 0; $i < $this->line_max; $i++) {
+			$this->drawLabel($i);
+		}
+		
+		// 凡例の描画
+		$this->drawLegend();	
+	}
+	
+	// 棒グラフの描画
+	function drawBar($line_no) {
+		$arrPointList = $this->arrPointList[$line_no];
+		// データ数を数える
+		$count = count($arrPointList);
+		// 半目盛りの幅を求める
+		$half_scale = intval($this->area_width / ($count + 1) / 2);
+		// 目盛りの幅を求める
+		$scale_width = intval($this->area_width / ($count + 1));
+		// 棒グラフのサイズを求める
+		$bar_width = intval(($scale_width - (BAR_PAD * 2)) / $this->line_max);
+		// 色数の取得
+		$c_max = count($this->arrColor);
+		for($i = 0; $i < $count; $i++) {
+			$left = $arrPointList[$i][0] - $half_scale + BAR_PAD + ($bar_width * $line_no);
+			$top = $arrPointList[$i][1];
+			$right = $left + $bar_width;
+			$bottom = $this->top + $this->area_height;
+			
+			// 影の描画
+			if($this->shade_on) {
+				imagefilledrectangle($this->image, $left + 2, $top + 2, $right + 2, $bottom, $this->shade_color);
+			}
+			//imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[($i % $c_max)]);
+			imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[$line_no]);			
+			imagerectangle($this->image, $left, $top, $right, $bottom, $this->flame_color);					
+		}
+	}
+	
+	// ラベルを描画する
+	function drawLabel($line_no) {
+		$arrData = $this->arrDataList[$line_no];
+		$arrPointList = $this->arrPointList[$line_no];
+		$count = count($arrPointList);
+		for($i = 0; $i < $count; $i++) {
+			$x = $arrPointList[$i][0];
+			$y = $arrPointList[$i][1];
+			$text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
+			$y_pos = $y - FONT_SIZE - 5;
+			$x_pos = $x - $text_width / 2;
+			$this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
+		}
+	}
+	
+}
+?>
