//
/*
情報エリア用データ更新モジュール

*/
//
//親ウィンドウを設定

var targetObj=new Object;

function getProp(msg,prp){
	msg=(msg)?msg:prp+" : こちらの値を編集してください";
	var org_dat=targetObj.XPS[prp];
	var new_dat=prompt(msg , org_dat);
	
	if (new_dat && new_dat!=org_dat)
	{
		targetObj.XPS[prp]=new_dat;
		targetObj.sync(prp);
	}
};
//各種設定表示更新
function chgDuration(targetProp,prevalue,newvalue)
{
/*
if(false){
	switch(targetProp){
case	"time":
	msg="カットの時間を入力してください。";
	prevalue = nas.Frm2FCT(targetObj.XPS.time(),3,0);
		break;
case	"trin":
	msg="トランシット情報を入力してください。\n時間は括弧で括って、キャプションとの間には空白を置いてください。\n書式:caption (timecode) /例: c10-c11 wipe. (1+12.)";
	prevalue = targetObj.XPS.trin[1]+"\ \("+nas.Frm2FCT(targetObj.XPS.trin[0],3,0)+"\)";
		break;
case	"trout":
	msg="トランシット情報を入力してください。\n時間は括弧で括って、キャプションとの間には空白を置いてください。\n書式:caption (timecode) /例: c10-c11 wipe. (1+12.)";
	prevalue = targetObj.XPS.trout[1]+"\ \("+nas.Frm2FCT(targetObj.XPS.trout[0],3,0)+"\)";
		break;
default	:return;
	}
};//保留
//nas.alert("test")
	
//	newvalue=prompt(msg , prevalue);
//	prevalue=;
//	newvalue=;
// */
//入力インターフェースをnas.editTableCellに変更したので、こちら側では確認のみにする
	if( newvalue!=prevalue){
	var newTime= targetObj.XPS.time();
	var newTrin=new Array();
		newTrin[0]=targetObj.XPS["trin"][0];
		newTrin[1]=targetObj.XPS["trin"][1];
	var newTrout=new Array();
		newTrout[0]=targetObj.XPS["trout"][0];
		newTrout[1]=targetObj.XPS["trout"][1];
	switch(targetProp){
case	"time":
	newTime = nas.FCT2Frm(newvalue);
		break;
case	"trin":
	if (newvalue.match(/(.+)\s\((.+)\)/))
		{
	newTrin[1]=RegExp.$1;
	newTrin[0]=nas.FCT2Frm(RegExp.$2);
		}else{
	alert("処理できませんでした。");return;
		};
		break;
case	"trout":
	if (newvalue.match(/([^\(]+)\s\((.+)\)/))
		{
	newTrout[1]=RegExp.$1;
	newTrout[0]=nas.FCT2Frm(RegExp.$2);
		}else{
	alert("処理できませんでした。");return;
		};
		break;
default	:return;
	}
	}else{	return;	}
//alert(newTime+"\n"+newTrin.join("/")+"\n"+newTrout.join("/"));
//	return;
//	現在の値からカット継続時間を一時的に生成
	var duration=newTime+(newTrin[0]+newTrout[0])/2;
	var oldduration=targetObj.XPS.duration();
	var durationUp=(duration>oldduration)? true : false ;

//	カット尺更新確認
		if(duration!=oldduration){
		var msg="";
		msg+="カットの継続時間が変更されます。\nUNDOバッファはクリアされます\n";
		if (!durationUp)
			msg +="\tまた、消去されるフレームの内容は破棄されます。\n";
//
		msg +="\n実行してよろしいですか。?";
//確認
	if(confirm(msg)){
//	設定尺が現在の編集位置よりも短い場合は編集位置を調整
		if(oldduration>duration){
//			alert("1_"+(duration-1).toString());
			targetObj.xUI.selectCell ("1_"+(duration-1).toString());
//			targetObj.xUI.selectCell ("1_0");
		};
	for (i=0;i<targetObj.XPS.xpsBody.length;i++)
	{
		targetObj.XPS.xpsBody[i].length=duration;
		if(durationUp)
			for(f=oldduration;f<duration;f++)
			targetObj.XPS.xpsBody[i][f]='';
	}

		targetObj.XPS["trin"]=newTrin;
		targetObj.XPS["trout"]=newTrout;

//undo関連
	targetObj.xUI.inputFlag="nomal";//入力フラグ["nomal","undo","redo"]
	targetObj.xUI.undoStack=new Array();//アンドウスタック
		targetObj.xUI.undoStack.push([[0,1],[0,0],'']);
//		データは [セレクト座標,セレクション,ボディ]
//	座標と選択範囲は配列で、ボディはcomma、改行区切りで2次元のstream
	targetObj.xUI.undoPt=0;	//アンドウポインタ
	targetObj.xUI.Backupdata=new Array();//編集バックアップトレーラ
	targetObj.xUI.activeInput=null;//アクティブ入力ポインタ
//	尺変更でシートを初期化
		targetObj.nas_Rmp_Init();
		targetObj.xUI.setStored("force");
	}
		targetObj.sync("info_");
		}else{
	//
	targetObj.xUI.setStored("force");
	if(targetObj.XPS["trin"][1] != newTrin[1]){targetObj.XPS.trin[1] =newTrin[1] ; targetObj.sync("trin");};
	if(targetObj.XPS["trout"][1]!=newTrout[1]){targetObj.XPS.trout[1]=newTrout[1]; targetObj.sync("trout");};

		}
//更新操作終了
}

function chkPostat(){
	var blmtd=document.getElementById("blmtd");
	var blpos=document.getElementById("blpos");
	switch(blmtd.value)
	{
	case "file"	:	var status=false;break;
	case "opacity"	:	;
	case "wipe"	:	;
		var status=true;
		blpos.value="end";break;
	case "expression1"	:
		var status=true;
		blpos.value="first";break;
	case "expression2"	:
		var status=true;
		blpos.value="end";break;
	defaule	:
		var status=true;
		blpos.value="build";break;
	}
	if (blpos.disabled!=status)
		blpos.disabled=status;
}
function chgValue(id)
{
	var myTarget=document.getElelemntById(id);
	switch (id)
	{
case	"memo"	:
		targetObj.XPS["memo"]=
		myTarget.value;
		break;
		
case	"blmtd"	:
		targetObj.XPS["layers"][targetObj.xUI.Select[0]-1][id]=
		myTarget.value;
		chkPostat();
		break;

case	"blpos"	:
		targetObj.XPS["layers"][targetObj.xUI.Select[0]-1][id]=
		myTarget.value;
		break;

case	"aeVersion"	:
case	"keyMethod"	:
		targetObj.xUI[id]=myTarget.value;
		break;

case	"fct0"	:
case	"fct1"	:
	targetObj.xUI.selectCell(targetObj.xUI.Select[0]+'_'+
		targetObj.nas.FCT2Frm(myTarget.value));
	;break;
case	"selall"	:
		targetObj.xUI.selectCell(targetObj.xUI.Select[0]+"_0");
		targetObj.xUI.selection(
			targetObj.xUI.Select[0]+"_"+targetObj.XPS.duration()
		);break;
case	"copy"	:	targetObj.xUI.copy();break;
case	"cut"	:	targetObj.xUI.cut();break;
case	"paste"	:	targetObj.xUI.paste();break;
case	"keyArea"	:
	var Lvl=targetObj.xUI.Select[0];
	if(Lvl>0&&Lvl<=(targetObj.XPS.layers.length+1))
	{	targetObj.writeAEKey(Lvl) }
	;break;
case	"areaXPS"	:
	document.getElementById("rEsult").value=targetObj.XPS.toString();
	document.getElementById("rEsult").focus();
	;break;
case	"iNputbOx"	:	hello();break;
case	"ok"	:	hello();break;
case	"ng"	:	hello();break;
case	"undo"	:	targetObj.xUI.undo();break;
case	"redo"	:	targetObj.xUI.redo();break;
case	"up"	:	;//スピン
case	"down"	:	;
case	"right"	:	;
case	"left"	:	;
case	"fwd"	:	;
case	"back"	:	;
	targetObj.xUI.spin(id);break;
case	"home"	:	;targetObj.xUI.selectCell(targetObj.xUI.Select[0]+"_0");break;
case	"end"	:	;targetObj.xUI.selectCell(targetObj.xUI.Select[0]+"_"+targetObj.XPS.duration());break;
//
case	"spin_V"	:
	targetObj.xUI.spin(myTarget.value);break;
case	"v_up"	:	;//スピン関連
case	"v_dn"	:	;//IDとキーワードを合わせてそのまま送る
case	"pgdn"	:	;
case	"pgup"	:
	targetObj.xUI.spin(id);break;
case	"clearFS"	:	;//フットスタンプクリア
	targetObj.xUI.footstampClear();break;
case	"layer"	:	;//レイヤ変更
	if (document.getElementById("single")){}

	targetObj.xUI.selectCell(
		(myTarget.selectedIndex).toString()+
		"_"+targetObj.xUI.Select[1]
	);
	reWriteCS();//cセレクタの書き直し
	break;
case	"cell"	:	;//セルの入力
	targetObj.xUI.put((myTarget.selectedIndex+1));
	targetObj.xUI.spin("fwd");

	break;
case	"fav"	:	;//文字の入力
	targetObj.xUI.put(targetObj.xUI.favoriteWords[myTarget.selectedIndex]);
	targetObj.xUI.spin("fwd");

	break;
case	"TSXall"	:	return false;//捨てる
	break;
default:	alert(id);return false;
	}
//	alert(id);
return false;
}
//チェックボックストグル操作
function chg(id)
{
	var myCkBox=document.getElementById(id);
	myCkBox.checked=
	(myCkBox.checked) ?
	false	:	true	;
		chgValue(id);
	return false;
}
//単独書き換え

rewriteValueByEvt=function(e){
//ターゲットがクリックされた時、イベントから引数を組み立てて関数を呼ぶ
//alert(e);

	var TargeT=e.target;var Bt=e.which;//ターゲットオブジェクト取得
	var myPrp=TargeT.id;
	var msg="";
	var currentValue=null;
	switch(myPrp){
	case "time":
		msg="カットの時間を入力してください。\n";
	break;
	case "trin":
		msg="トランシット情報。時間は括弧で括って、キャプションとの間は空白。\n書式:caption (timecode) /例: c10-c11 wipe. (1+12.)";
		currentValue=targetObj.XPS.trin[1]+"\ \("+nas.Frm2FCT(targetObj.XPS.trin[0],3,0)+"\)";
	break;
	case "trout":
		msg="トランシット情報。時間は括弧で括って、キャプションとの間は空白。\n書式:caption (timecode) /例: c10-c11 wipe. (1+12.)";
		currentValue=targetObj.XPS.trout[1]+"\ \("+nas.Frm2FCT(targetObj.XPS.trout[0],3,0)+"\)";
	break;
	case "scene_cut":
 		msg="シーン・カットナンバーを変更します。データは 空白区切。\nひとつだとカット番号";
	break;
		case "update_user":
 		msg="作業ユーザ名を変更します。\n";
	break;
		case "opus":
 		msg="制作ナンバーを変更します。\n";
	break;
		case "title":
 		msg="タイトルを変更します。\n";
	break;
		case "subtitle":
 		msg="サブタイトルを変更します。\n";
	break;
	}
	xUI.printStatus(msg);

	var myFunction=function(){
		var prp=this.target.id
		var org_dat=targetObj.XPS[prp];
		var new_dat=this.newContent;
		switch (prp){
		case "scene_cut":
		 var prevalue=this.orgContent
		 var newvalue=this.newContent;
		 if(newvalue != prevalue){
		 var newvalues=newvalue.split(" ");
		 targetObj.XPS.scene=(newvalues.length>1)?newvalues[0]:"";
		 targetObj.XPS.cut  =(newvalues.length>1)?newvalues[1]:newvalues[0];
//		 targetObj.sync("scene");
		 targetObj.xUI.setStored("force");
		 }
		 targetObj.sync("cut");
			break;
		case "time":
		case "trin":
		case "trout":
		 var prevalue=this.orgContent
		 var newvalue=this.newContent;
		 if(newvalue != prevalue){chgDuration(prp,prevalue,newvalue);}else{sync("info_");}
			break;
		case "update_user":
		case "opus":
		case "title":
		case "subtitle":
		 default:
dbgPut("new_dat :"+new_dat)
//		 if (new_dat && new_dat!=org_dat)
		 if (new_dat!=org_dat)
		 {
			targetObj.XPS[prp]=new_dat;
			targetObj.xUI.setStored("force");
		 }
			targetObj.sync(prp);
		}
		xUI.printStatus();//クリア
	}
	if((TargeT.id)&&(TargeT instanceof HTMLTableCellElement)){
		nas.editTableCell(TargeT,"input",currentValue,myFunction);
//		document.getElementById(TargeT+"_ipt").style.padding="0";
	}
}

function rewriteValue(id){
var msg="";
var prp="";
	switch (id){
case	"opus":
	msg="制作ナンバーを変更します。\n";
	prp=id;
	getProp(msg,prp);
	break;
case	"title":
	msg="タイトルを変更します。\n";
	prp=id;
	getProp(msg,prp);
	break;
case	"subtitle":
	msg="サブタイトルを変更します。\n";
	prp=id;
	getProp(msg,prp);
	break;
case	"scene_cut":
	msg="シーン・カットナンバーを変更します。\nデータは 空白で区切ってふたつ書き込んでください。\n一つだけ書くとカット番号です";
	var prevalue=(targetObj.XPS.scene)?targetObj.XPS.scene+" "+targetObj.XPS.cut:targetObj.XPS.cut;

	var newvalue=prompt(msg,prevalue);
	if(newvalue != prevalue){
		var newvalues=newvalue.split(" ");
	targetObj.XPS.scene	=(newvalues.length > 1)?newvalues[0]:"";
	targetObj.XPS.cut	=(newvalues.length > 1)?newvalues[1]:newvalues[0];
//		targetObj.sync("scene");
		targetObj.sync("cut");
	}
	;break;
case	"time":
case	"trin":
case	"trout":
	chgDuration(id);
	break;

case	"update_user":
	msg="作業ユーザを変更します。\n";
	prp=id;
	getProp(msg,prp);
	break;
	}
//
targetObj.xUI.setStored("force");sync();
}
/*	暫定版データエコーCGI 呼び出し	*/
function callEcho()
{
	xUI.setStored("current");
	sync();
		//ファイル保存を行うのであらかじめリセットする;
	document.saveXps.action=targetObj.ServiceUrl+'COMMAND=save&';
	document.saveXps.COMMAND.value ='save';
	document.saveXps.encode.value  ='utf8';
	document.saveXps.XPSBody.value=encodeURI(targetObj.XPS.toString());
	document.saveXps.XPSFilename.value=targetObj.XPS.scene.toString()+targetObj.XPS.cut.toString()+'\.xps';
	document.saveXps.submit();
}
/*拡張子を引数にしてコールする*/
function callEchoExport(myExt)
{
   var myEncoding="utf8";//デフォルトutf-8
   var sendData=xUI.data_well.value;
		//ファイル保存ではなくエクスポートなので環境リセットは省略;
   if(! myExt){myExt="txt";}
   switch (myExt){
	case "tsh":
		sendData=sendData.replace(/\r?\n/g,"\r")+"\n";
	case "eps":
	case "ard":
		myEncoding="sjis";
	break;
	default:
		myEncoding="utf8";
   }
//alert(sendData);
	document.saveXps.action=targetObj.ServiceUrl+'COMMAND=save&';
	document.saveXps.COMMAND.value ='save';
	document.saveXps.encode.value  =myEncoding;
	switch (myEncoding){
	case "sjis" : document.saveXps.XPSBody.value =EscapeSJIS(sendData);break;
	case "eucjp": document.saveXps.XPSBody.value =EscapeEUCJP(sendData);break;
	default     : document.saveXps.XPSBody.value =encodeURI(sendData);
	}
	document.saveXps.XPSFilename.value=targetObj.XPS.scene.toString()+targetObj.XPS.cut.toString()+'\.'+myExt;
	document.saveXps.submit();
}

function callEchoEps(myContent,myNumber)
{
   var myEncoding="sjis";//デフォルトsjis
   var sendData=myContent;
   var myExt="eps";

	sendData=sendData.replace(/\r?\n/g,"\r\n");

	document.saveXps.action=targetObj.ServiceUrl+'COMMAND=save&';
	document.saveXps.target="window"+myNumber;
	document.saveXps.COMMAND.value ='save';
	document.saveXps.encode.value  =myEncoding;
	document.saveXps.XPSBody.value =EscapeSJIS(sendData);
	document.saveXps.XPSFilename.value=targetObj.XPS.scene.toString()+targetObj.XPS.cut.toString()+"_"+myNumber+'\.'+myExt;
//send前にターゲットのiframeを確認して、無ければappendするコードをここへ挿入
	document.saveXps.submit();

}

function initInfo()
{
	targetObj=window;

}
//
