﻿//VML作成(　種類・情報・日付・サイズ　）
//種類：内容１,内容２・・・	名称羅列カンマ区切り
//情報：1_1_5,1_2_7・・・	意味＝時間１に種類１が５　羅列カンマ
//日付：2004/1/1,2005/1/1	開始・終了　それ以上は、等分割で表示 1/2/3/4 と
//サイズ：500,300		横・縦　PX

//グラフ種類：累積折線
function CreateGRAPH( inLIST, inVALUE, inDATE, inSIZE ){
	var mLIST	= inLIST.split(",");
	var mVALUE	= inVALUE.split(",");
	var mDATE	= inDATE.split(",");
	var mSIZE	= inSIZE.split(",");

	var mWPX	= (mSIZE[0]-0)/(mVALUE[mVALUE.length-1].split("_")[0]-1);	// 1日付分の横間隔
	var mHPX;
	var CLR = 'Red,Lime,Aqua,Blue,Fuchsia,Maroon,Olive,Green,Teal,Navy,Purple,Gray,Black,Silver'.split(",");

	var i,t,s=0,tmp,mx=0,sum=0,step=0;

	mSIZE[0] -= 0;
	mSIZE[1] -= 0;


	//集計先初期化
	var vLIST	= new Array(mLIST.length);		// 小計
	var pLIST	= new Array(mLIST.length);		// 座標
	for(i=0;i<mLIST.length;i++){
		vLIST[i]	= 0;
		pLIST[i]	= "";
	}

	//集計
	for(i=0;i<mVALUE.length;i++){
		t=mVALUE[i].split("_");
		if(t[1]==1){
			mx+=t[2]-0;
		}
	}

	mHPX	= (mSIZE[1])/mx;	// １に対する高さ


	//集計
	for(i=0;i<mVALUE.length;i++){
		t=mVALUE[i].split("_");
		vLIST[t[1]-1] += t[2]-0;
		pLIST[t[1]-1] += " " + ((t[0]-1) * mWPX) + "," + ( mSIZE[1] - (vLIST[t[1]-1] * mHPX) );
	}
	//集計：補助。最後まで線無い物は最後に点付ける
	for(i=0;i<mLIST.length;i++){
		pLIST[i] += " " + mSIZE[0] + "," + ( mSIZE[1] - (vLIST[i] * mHPX) );
	}


	//作成
	tmp="";

	//作成：補助線-縦
	for(i=0;i<mVALUE.length;i++){
		t=mVALUE[i].split("_");
		if(t[0]>s){
			s=t[0]-0;
		}
	}
	t=s-1;//t=10;
	for(i=1;i<t;i++){
	tmp += '<v:line style="position:absolute;" from="' + mSIZE[0]*i/t + ',' + mSIZE[1] + '" to="' + mSIZE[0]*i/t + ',0" strokecolor="#DDDDDD" strokeweight="1">'
	+ '</v:line>' ;
	}

	//作成：軸線-枠
	tmp += '<v:line style="position:absolute;" from="0,' + mSIZE[1] + '" to="0,0" strokecolor="#000000" strokeweight="1" />';
	tmp += '<v:line style="position:absolute;" from="0,' + mSIZE[1] + '" to="'+mSIZE[0]+','+mSIZE[1]+'" strokecolor="#000000" strokeweight="1" />';
	tmp += '<v:line style="position:absolute;" from="'+mSIZE[0]+',0" to="'+mSIZE[0]+','+mSIZE[1]+'" strokecolor="#000000" strokeweight="1" />';

	//作成：曲線
	for(i=mLIST.length-1;i>=0;i--){
		tmp += '<v:polyline ID=VZL'+i+' fill=false style="position:absolute" onmouseout="LineOut('+i+');" onmouseover="LineIn('+i+')" points="'
		+ pLIST[i]
		+ '" strokecolor="'
		+ CLR[ i % CLR.length]
		+ '" strokeweight="1" title="'+mLIST[ i ]+'"><v:fill on=false /><v:stroke startarrow="doublechevron" endarrow="classic" /></v:polyline>' ;
	}

	//作成：日付
	for(i=0;i<mDATE.length;i++){
		tmp += '<div style="writing-mode:tb-rl;position:absolute;left:' + ((mSIZE[0]/(mDATE.length-0.5)*i)-2) + 'px;top:' + (mSIZE[1]-0+2) + 'px;font-size:8pt;color:gray"><nobr>' + mDATE[ i ] + '</nobr></div>';
	}

	//作成：合計値取得
	for(i=0;i<mLIST.length;i++){
		sum += vLIST[i];
	}

	//作成：補助線-横
	if(mx<=0){
		step = 0;
	}else if(mx<=10){
		step = 1;
	}else if(mx<=20){
		step = 2;
	}else if(mx<=50){
		step = 5;
	}else if(mx<=100){
		step = 10;
	}else if(mx<=200){
		step = 20;
	}else if(mx<=500){
		step = 50;
	}else if(mx<=1000){
		step = 100;
	}else if(mx<=5000){
		step = 500;
	}else if(mx<=10000){
		step = 1000;
	}else if(mx<=100000){
		step = 10000;
	}else{
		step = 100000;
	}
	if(mx>0)
	for(i=step;i<=mx;i+=step){
		//線
		tmp += '<v:line style="position:absolute;" from="0,' + (mSIZE[1]-(i*mSIZE[1]/mx)) + '" to="' + mSIZE[0] + ',' + (mSIZE[1]-(i*mSIZE[1]/mx)) + '" strokecolor="#DDDDDD" strokeweight="1">'
		+ '</v:line>' ;
		//メモリ
		tmp += '<div style="position:absolute;left:' + (mSIZE[0]+5) + 'px;top:' + (mSIZE[1]-(i*mSIZE[1]/mx)) + 'px;font-size:8pt;color:#CCCCCC"><nobr>' + i + '</nobr></div>';
	}

	//作成：項目名・最終数値（数・割合）
	tmp += '<table id=LST style="position:relative;margin:1px;padding:1px;border-spacing:1px;border-collapse:collapse">';
	for(i=0;i<mLIST.length;i++){
		tmp += '<tr ID=VZT'+i+' style="color:' + CLR[ i % CLR.length] + ';margin:1px;padding:1px;font-size:9pt;background-color:#FFFFFF" onmouseout="LineOut('+i+');" onmouseover="LineIn('+i+')"><td>' 
		+ mLIST[ i ]
		+ '</td><td>' ;
		if(vLIST[i]==0){
			tmp += '0';
		}else{
			tmp += Math.round((vLIST[i] / sum)*100)/1 ;
		}
		tmp += '%</td><td>(' + vLIST[i] + ')'
		+ '</td></tr>';
	}
	tmp += '</table>';

	//作成：最終数値（数・割合）
	for(i=0;i<mLIST.length;i++){
		tmp += '<div ID=VZF'+i+' onmouseout="LineOut('+i+');" onmouseover="LineIn('+i+')" style="text-align:right;position:absolute;color:' + CLR[ i % CLR.length] + ';font-size:9pt;width:100px;left:'+(mSIZE[0]-100)+'px;top:'+(mSIZE[1]-10-(mHPX*vLIST[i]))+'px">' ;
		if(vLIST[i]==0){
			tmp += '0';
		}else{
			tmp += Math.round((vLIST[i] / sum)*100)/1 + '% (' + vLIST[i] + ')'
		}
		tmp += '</div>';
	}

	return( tmp );

}

function LineIn(inID){
	document.all("VZL"+inID).strokeweight=3;
	document.all("VZT"+inID).style.backgroundColor="#FFFFAA";
	document.all("VZF"+inID).style.backgroundColor="#FFFFFF";
	document.all("VZF"+inID).style.fontWeight="bold";
	VZTime = setInterval("LineAction("+inID+")", 700);
	document.all("VZF"+inID).style.zIndex=1001;
	document.all("VZT"+inID).style.zIndex=1002;
	document.all("VZL"+inID).style.zIndex=1003;
}

function LineOut(inID){
	document.all("VZL"+inID).strokeweight=1;
	document.all("VZT"+inID).style.backgroundColor="#FFFFFF";
	document.all("VZT"+inID).style.fontWeight="";
	document.all("VZF"+inID).style.fontWeight="";
	document.all("VZF"+inID).style.backgroundColor="";
	clearInterval(VZTime);
	document.all("VZL"+inID).stroke.dashstyle="";
	document.all("VZF"+inID).style.zIndex=1;
	document.all("VZT"+inID).style.zIndex=2;
	document.all("VZL"+inID).style.zIndex=3;
}

var VZTime="";
var VZTm=0;
function LineAction(inID){
	VZTm = (VZTm+1)%4;
	document.all("VZL"+inID).stroke.dashstyle= "dash,dashdot,longdashdot,longdashdotdot".split(",")[VZTm] ;
}
function IDHidden(me){
	if(me.style.visibility){
		me.style.visibility='';
	}else{
		me.style.visibility='hidden';
	}
}
