//フォームレイアウト定義 フォームごとに設置
if (document.nasExchg.ExchgUnit.value.match(/kac/)=="kac") {

//フォーム部品とカテゴリの対応 
ElementCategory = [
	"ExchgUnit",
	"XXX"
];
//エレメントの名称
ElementName = [
	"ExchgUnit",
	"XXX"
];
/*
画像ボタンのステータス(htmlのステータスを上書きする）
最終的にはクッキーで保存?
*/

//ボタンIDとカテゴリの対応
BtCategory = [
	"XXX1",
	"XXX2"
];
//画像ボタンの状態(初期値)
BtStatus = [
	"link","lock"
];
//フォーム入力初期値設定
BkValue = [
	document.nasExchg.ExchgUnit.value,
	XXX
];


}
//フォーム定義オワリ


//	計算モードフラグ
//
//
var mode_flag = "ST";
//
/*
入力値の判定と入力された値に対応するアクション

*/

function CHK_VALUE() {
//	入力された値を検索
for (n = 0 ; n < ElementName.length ; n++){
	if (document.nasExchg.elements[n].value != BkValue[n]) {
		var ElementID = n;
		var elName = ElementName[n] ;
msg = elName + " " + document.nasExchg.elements[elName].value + " " + BkValue[n];
		break;
	}
}
// 数値以外の入力は前値で書き戻して処理中断
if (isNaN(document.nasExchg.elements[ElementID].value)) {document.nasExchg.elements[elName].value = BkValue[ElementID];return false;}
// 特定条件の値を評価して分岐(条件に汎用性がほしいかもね)
	if (document.nasExchg.elements[elName].value == XX) {
	}
// 0より下の値は無条件で排除(これも一考)
	if (document.nasExchg.elements[elName].value < 0) {
		document.nasExchg.elements[elName].value = BkValue[ElementID];
		return false;
	} 


//現在の親変数の値をバックアップ 演算モードによって更新する親変数が異なる
//フォームから読み取った値で親変数を更新
	switch (ElementName[elName]) {
case "XXX":
		BackupValue = XXX ;
	Xxx = document.nasExchg.elements[elName].value;
	break;
default :
		BackupValue = BkValue[ElementID];
	;
	}

//ステータスを考慮して各変換を実行
//( = カテゴリで分岐)

	switch (ElementCategory[ElementID]) {
case	"XXX" :
		updateRATE();
			updateTime();updateTimeR();
			updateLength();updateLengthP();
			updateSpeed();updateSpeedP();
	break;
case "sample": break;
default :
	msg = msg + "\nDEFAULT!"

	}
//正常終了で現在の値をバックアップして終了
		updateBk();return false;
}
//デバッグ用変数表示
function VarList() {
msg = " DEBUG:\n"
	+ "\n : " + XXX + " unit";

document.nasExchg.RESULTBOX.value=msg;

}
//
function initSHEET() {
//データ配列にしたがって入力ボックスの更新 表示は有効桁数固定
with (document.nasExchg){
	XXX.value = XXX ;
// ループとか
	for (idx=0 ; idx < MAX; idx ++) {
		elements[idX].value = BkValue[idX];
	}

		RESULTBOX.value = "";
}
//現状をバックアップ
	updateBk();

//ボタン状態配列にしたがってボタンの再描画
for (n = 0;n < BtStatus.length ;n++) {ChgButtonImage(n)}
//初期化おしめい
}
//
function CKBT(n) {
// ボタンクリックされたのでステータスを調整
	switch (BtStatus[n]) {
case	 "lock":	BtStatus[n] = "unlock";break;
case	"unlock":	BtStatus[n] = "lock";break;
default	:	return false;
}

// 選択されたボタンイメージを変更
ChgButtonImage(n);

return false;
}

// ボタンステータスを文字列で返す
function ButtonStatus(btnm) {
	for (btID=0 ; btID < BtCategory.length; btID++) {
		if (btnm == BtCategory[btID]) {
			return BtStatus[btID] ;
			break;
		}
	}
return false;
}
//	ボタン状態の変更
function ChgButton(btnm,stts) {
	for (btID=0 ; btID < BtCategory.length; btID++) {
		if (btnm == BtCategory[btID]) {
			BtStatus[btID] = stts;
			ChgButtonImage(btID);
			break;
		}
	}
return 
}
//	ボタンイメージ置き換え
function ChgButtonImage(btID) {
//ボタンIDを指定する
	switch (BtStatus[btID]) {
case	 "lock":	btIMG = "lock.gif";Status = true ;break;
case	"unlock":	btIMG = "unlock.gif";Status = false ;break;
default : return false;
}
	switch (BtCategory[btID]) {
case "RATE" :
	break;
case "RESOLUTION" :
	break;

case "TimeR" :
	break;
case "Time" :
	document.nasExchg.elements[3].disabled = Status;
	document.nasExchg.elements[4].disabled = Status;
	document.nasExchg.elements[5].disabled = Status;
	break;
case "Length" :
	document.nasExchg.elements[6].disabled = Status;
	document.nasExchg.elements[7].disabled = Status;
	document.nasExchg.elements[8].disabled = Status;
	document.nasExchg.elements[9].disabled = Status;
	document.nasExchg.elements[10].disabled = Status;
	break;
case "LengthP" :
	break;
case "Speed" :
	document.nasExchg.elements[11].disabled = Status;
	document.nasExchg.elements[12].disabled = Status;
	document.nasExchg.elements[13].disabled = Status;
	document.nasExchg.elements[14].disabled = Status;
	break;
case "sample" :
	break;
default :
	}

	document.images[btID].src = btIMG ;
}
//演算・再表示ルーチン
function updateRATE () {
	document.nasExchg.fRATE.value = FRATE;
}
//
function updateRESOLUTION() {
//
	Dpi = RESOLUTION * 2.54 ;
	Dpc = RESOLUTION ;
//
with (document.nasExchg) {
	DPI.value = Math.round(Dpi * 10000)/10000;
	DPC.value = Math.round(Dpc * 10000)/10000;
}
}
//
function updateTime() {
	switch (mode_flag) {
case "ST":	ALL_FRAMES = Math.floor((TIME / 1000)* FRATE);break;
default	://	TIME = (ALL_FRAMES / FRATE ) * 1000;
	}
with (document.nasExchg) {FRMs.value = ALL_FRAMES}
}
//
function updateTimeR() {
	switch (mode_flag) {
case "ST":
	Seconds = Math.floor(TIME / 1000);
	Frames = Math.floor(((TIME / 1000)* FRATE) % FRATE);break;
default :
	Seconds = Math.floor(ALL_FRAMES / FRATE);
	Frames = ALL_FRAMES % FRATE;
//	TIME = (ALL_FRAMES / FRATE ) * 1000;
	}
with (document.nasExchg) {
		SEC.value = Seconds;
		KOMA.value = Frames;
}}
//
function updateLength() {
	Lmm = LENGTH;
	Lcm = LENGTH /10;
	Lin = LENGTH/25.40;
	Lpt = (LENGTH/25.40)*72.0;
//
with (document.nasExchg) {
	MMl.value = Math.round(Lmm * 10000) / 10000;
	CMl.value = Math.round(Lcm * 10000) / 10000;
	INl.value = Math.round(Lin * 10000) / 10000;
	PTl.value = Math.round(Lpt * 10000) / 10000;
}
}
//
function updateLengthP() {
	Lpx = LENGTH * RESOLUTION / 10;
//
with (document.nasExchg) {	PXl.value = Math.round(Lpx * 10000) / 10000;}
}
//
function updateSpeed() {
//
	Mpf = SPEED / FRATE;
	Mps = SPEED;

//
with (document.nasExchg) {
	MPF.value = Math.round(Mpf * 10000) / 10000;
	MPS.value = Math.round(Mps * 10000) / 10000;
if (PffM1 != "--") {Mm1 = Mpf * PffM1;
	MM1.value = Math.round(Mm1 * 10000) / 10000;
	PFFm1.value = Math.round(PffM1 * 10000) / 10000;}
if (PffM2 != "--") {Mm2 = Mpf * PffM2;
	MM2.value = Math.round(Mm2 * 10000) / 10000;
	PFFm2.value = Math.round(PffM2 * 10000) / 10000;}
}
}
//
//
function updateKey(ID) {
//
//
with (document.nasExchg) {
}
}
//
function updateCSV() {
//CSV data output
}
function updateTABLE() {
//TABLE data output
}
//
function updateAEKey() {
//AE- Keydata output
//


//header
AE_KeyData = "Adobe After Effects " + AE_Ver + " Keyframe Data\n\n"
+ "\tUnits Per Second	" + FRATE +"\n"
+ "\tSource Width\t" + SrcWidth + "\n"
+ "\tSource Height\t" + SrcHeight + "\n"
+ "\tSource Pixel Aspect Ratio	1\n"
+ "\tComp Pixel Aspect Ratio	1\n";
switch (KEY_TYPE) {
case "Scale":


	switch (AE_Ver) {
	case "4.0":

AE_KeyData = AE_KeyData
+ "Scale\n\tFrame\tX percent\tY persent\t\n\t0\t"
+ offsetX + "\t" + offsetY + "\t\n\t"
+ slFrames + "\t" + followX + "\t" + followY +"\t";//AE4
	break;

	default:

AE_KeyData = AE_KeyData
+ "Scale\n\tFrame\tX percent\tY percent\tZ percent\t\n\t0\t"
+ offsetX + "\t" + offsetY + "\t0\t\n\t"
+ slFrames +"\t" + followX + "\t" + followY +"\t0\t\n";//AE5~6
	}

break;
case "Position":


	switch (AE_Ver) {
	case "4.0":
AE_KeyData = "\n\nAE4 not supported Z_position\nAE4ではZ座標は使用できません。";//AE4
	break;
	default:
		AE_KeyData = AE_KeyData
+ "Position\n\tFrame\tX pixels\tY pixels\tZ pixels\t\n\t0\t"
+ offsetX + "\t" + offsetY + "\t0\t\n\t"
+ slFrames +"\t" + followX + "\t" + followY +"\t0\t\n";//AE5~6
	}
break;


}
//
AE_KeyData = AE_KeyData + "\n\nEnd of Keyframe Data\n";
document.nasExchg.RESULTBOX.value = AE_KeyData;
//
//
}
//function update() {
//
//
//}
//function update() {
//
//
//}

