<?php
$indexURL = "./index_mv.php";
$position = isset($_POST["position"]) ? htmlspecialchars($_POST["position"]) : "";

$sepPosition = split(",", $position);
$len = count($sepPosition);

// 読み込むファイル名、戻る場所を決める
$dataFname = "/";
$returnPosition = "";
for($iCount = 0; $iCount < $len; $iCount++)
{
	if ($iCount > 0)
	{
		$dataFname .= "/";
		if ($iCount < $len - 1)
			$returnPosition .= ",";
	}
	$dataFname .= $sepPosition[$iCount];
	if ($iCount < $len - 1)
		$returnPosition .= $sepPosition[$iCount];
}

try
{
	$ard = array();
	
	// データを取得
	$index = 0;
	$fp = fopen($dataFname, "r");
	if ($fp != NULL)
	{
		while(!feof($fp))
		{
			$line = trim(fgets($fp));
			if (strcmp($line, "") != 0)
			{
				$stac = split(",", $line);
				$ard[$index]["msec"] = $stac[0];
				$ard[$index]["x"] = $stac[1];
				$ard[$index]["y"] = $stac[2];
				$ard[$index]["z"] = $stac[3];
				$ard[$index]["v"] = sqrt(($ard[$index]["x"] * $ard[$index]["x"]) + ($ard[$index]["y"] * $ard[$index]["y"]) + ($ard[$index]["z"] * $ard[$index]["z"]));
				$ard[$index]["long"] = array("index" => 0, "x" => 0, "y" => 0, "z" => 0, "v" => 0);
				$ard[$index]["middle"] = array("index" => 0, "x" => 0, "y" => 0, "z" => 0, "v" => 0);
				$ard[$index]["short"] = array("index" => 0, "x" => 0, "y" => 0, "z" => 0, "v" => 0);
				
				// 移動平均の算出
				$iid = $index;
				while(true)
				{
					$diff = $ard[$index]["msec"] - $ard[$iid]["msec"];
					if ($diff <= 1000)
					{
						$ard[$index]["long"]["index"]++;
						$ard[$index]["long"]["x"] += $ard[$iid]["x"];
						$ard[$index]["long"]["y"] += $ard[$iid]["y"];
						$ard[$index]["long"]["z"] += $ard[$iid]["z"];
						$ard[$index]["long"]["v"] += $ard[$iid]["v"];
						if ($diff <= 200)
						{
							$ard[$index]["middle"]["index"]++;
							$ard[$index]["middle"]["x"] += $ard[$iid]["x"];
							$ard[$index]["middle"]["y"] += $ard[$iid]["y"];
							$ard[$index]["middle"]["z"] += $ard[$iid]["z"];
							$ard[$index]["middle"]["v"] += $ard[$iid]["v"];
							if ($diff <= 40)
							{
								$ard[$index]["short"]["index"]++;
								$ard[$index]["short"]["x"] += $ard[$iid]["x"];
								$ard[$index]["short"]["y"] += $ard[$iid]["y"];
								$ard[$index]["short"]["z"] += $ard[$iid]["z"];
								$ard[$index]["short"]["v"] += $ard[$iid]["v"];
							}
						}
					}
					else
					{
						break;
					}
					$iid--;
					if ($iid < 0)
						break;
				}
				$ard[$index]["long"]["x"] = $ard[$index]["long"]["x"] / $ard[$index]["long"]["index"];
				$ard[$index]["long"]["y"] = $ard[$index]["long"]["y"] / $ard[$index]["long"]["index"];
				$ard[$index]["long"]["z"] = $ard[$index]["long"]["z"] / $ard[$index]["long"]["index"];
				$ard[$index]["long"]["v"] = $ard[$index]["long"]["v"] / $ard[$index]["long"]["index"];
				$ard[$index]["middle"]["x"] = $ard[$index]["middle"]["x"] / $ard[$index]["middle"]["index"];
				$ard[$index]["middle"]["y"] = $ard[$index]["middle"]["y"] / $ard[$index]["middle"]["index"];
				$ard[$index]["middle"]["z"] = $ard[$index]["middle"]["z"] / $ard[$index]["middle"]["index"];
				$ard[$index]["middle"]["v"] = $ard[$index]["middle"]["v"] / $ard[$index]["middle"]["index"];
				$ard[$index]["short"]["x"] = $ard[$index]["short"]["x"] / $ard[$index]["short"]["index"];
				$ard[$index]["short"]["y"] = $ard[$index]["short"]["y"] / $ard[$index]["short"]["index"];
				$ard[$index]["short"]["z"] = $ard[$index]["short"]["z"] / $ard[$index]["short"]["index"];
				$ard[$index]["short"]["v"] = $ard[$index]["short"]["v"] / $ard[$index]["short"]["index"];
				
				
				$index++;
			}
		}
		fclose($fp);
	}
	
	$outp = "";
	$leng = count($ard);
	
	$outp .= mb_convert_encoding("日付,瞬時値(x),瞬時値(y),瞬時値(z),短期(x),短期(y),短期(z),中期(x),中期(y),中期(z),長期(x),長期(y),長期(z)". "\n", "Shift-JIS", "UTF-8");
	for($iCount = 0; $iCount < $leng; $iCount++)
	{
		$date = sprintf("%.3f", $ard[$iCount]["msec"] / 1000.0);
		$msec = explode(".", $date);
		$strTime = date("Y-m-d H:i:s", $date). ".". $msec[1];
		
		$outp .= mb_convert_encoding($strTime. ","
			. $ard[$iCount]["x"]. ",". $ard[$iCount]["y"]. ",". $ard[$iCount]["z"]. ","
			. $ard[$iCount]["short"]["x"]. ",". $ard[$iCount]["short"]["y"]. ",". $ard[$iCount]["short"]["z"]. ","
			. $ard[$iCount]["middle"]["x"]. ",". $ard[$iCount]["middle"]["y"]. ",". $ard[$iCount]["middle"]["z"]. ","
			. $ard[$iCount]["long"]["x"]. ",". $ard[$iCount]["long"]["y"]. ",". $ard[$iCount]["long"]["z"]. "\n"
		, "Shift-JIS", "UTF-8");
	}
	$length = mb_strlen($outp);
	header("Content-Type: application/octet-stream");
	header("Content-Disposition: inline; filename=\"". mb_convert_encoding($sepPosition[$len - 1], "Shift-JIS", "UTF-8"). "\"");
	header("Content-Length: ". $length. "");
	header("Pragma:no-cache");
	header("Cache-Control:nocache");
	print $outp;
}
catch(Exception $exc)
{
	print $exc->getMessage();
}
/*
print "<!DOCTYPE html>";
print "<html>";

print "<head>";
print "<meta chaset=\"utf-8\">";
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"./css/style.css\">";
print "<title>";
print "加速度(移動平均)データ";
print "</title>";
print "</head>";

print "<body>";
*/

/*
print "<br />";
print "<form name=\"form_return\" method=\"post\" action=\"". $indexURL. "\" style=\"display:inline\">";
print "<a href=\"javascript:form_return.submit()\">戻る</a>";
print "<input type=\"hidden\" name=\"position\" value=\"". $returnPosition. "\">";
print "</form>";

print "&nbsp;&nbsp;&nbsp;";

print "<form name=\"move_graph\" method=\"post\" action=\"./graph.php\" style=\"display:inline\">";
print "<a href=\"javascript:move_graph.submit()\">瞬時値を見る</a>";
print "<input type=\"hidden\" name=\"position\" value=\"". $position. "\">";
print "</form>";

print "</body>";
print "</html>";
*/
