// IDとしてマイクロ時間を用いる
MSec = (new Date()).getTime();

var flag_change_contents = 0;	// １回目の送信のタイミング(投稿内容)
var flag_change_files = 0;	// １回目の送信のタイミング(ファイル類)
var flag_ajax_submitting = 0;	// 内容のAJAXアップフラグ
var GlobalChange = 0;		// 編集を開始したかどうかのフラグ
var flag_new_file_added = false;	// 新しい転送ファイルが追加された場合
var destroy_number = 0;		// 破棄作業をしている個数
var obj_upload_field;
var allrowNumber = 0;	// 表の全番号
var rowNumber = 0;	// 表の番号
var rowNumberStock = 0;	// 下書きの番号
var rowMapNumber = 0;	// Map表の番号
var rowMovieNumber = 0;	// 動画表の番号
var saveCaption = new Array;	// キャプション保存用
var upOkExtension = new Array("jpe","jpeg","jpg","gif","png","doc","xls","pdf","zip");	// UP可能ファイル拡張子
var GID, MID;	// グローバルID(MSEC)/メンバーID(メールアドレス)
var nodeStockDel;	// ストックの削除のためのノード

// Cookie からのデータ取得
GID = getCookie("GID");
MID = getCookie("MID");
Cname = getCookie("Cname");
Csex  = getCookie("Csex");
Chomeroom = getCookie("Chomeroom");
Cyear_graduate = getCookie("Cyear_graduate");
Cki_graduate = getCookie("Cki_graduate");
Cemail = getCookie("Cemail");
Cemailopen = getCookie("Cemailopen");
Cdeletekey = getCookie("Cdeletekey");

// クラス名項目の調整
if (HomeroomType==1) {
	Chomeroom = Cki_graduate;
} else if (HomeroomType==2) {
	Chomeroom = Cyear_graduate;
} else {
	Chomeroom = Chomeroom;
}

// Cookie値がなければ、MsecをGIDとする
if (!GID) {
	GID=MSec;	
	setCookie("GID",GID);
}


// データの自動送信間隔
//autoSubmitContents = setInterval("requestFormContents(obj_upload_field)",20000);	// 約 20秒
//autoSubmitFiles = setInterval("requestFormFiles(obj_upload_field)",30000);	// 約 30秒
autoSubmitContents = setInterval("requestFormContents(obj_upload_field)",10000);	// 約 10秒
autoSubmitFiles = setInterval("requestFormFiles(obj_upload_field)",20000);	// 約 20秒


/******************************************/
// 投稿内容をタイマーにて送信する by Ajax
/******************************************/
function requestFormContents(obj_upload_field){

	if (flag_change_contents) {
		flag_change_contents--;

		// UP する拡張子のチェック
		if (!checkFileExtension()) {

			// ファイルの送信中で無ければ送信する。
			var temp;
			temp = $('flagSubmitting').value;

			if (temp!=1 && flag_ajax_submitting!=1) {

				sendRequestContents(0);	// AJAXで投稿内容下書き送信する

				$('stockButton').disabled = true;

				// 最終下書き時刻を表示する
				$('lastUpdateTime').style.display= "block";

				var doc_time = get_time_now();
				$('lastUpdateTime').innerHTML = "最終保存日時:"+doc_time;

			}
		}
	}

}

/******************************************/
// ファイル類をタイマーにて送信する
/******************************************/
function requestFormFiles(obj_upload_field){

	if (flag_change_files) {
		flag_change_files--;	// 変更時のみにアップする場合は、コメントをはずす

		// ファイルデータをAJAXで送る
		if (flag_ajax_submitting!=1) {
			sendRequestContents(0);
		}

		if (flag_new_file_added) {

			// UP する拡張子のチェック
			if (!checkFileExtension()) {
				document.upload_field.action="./bbs_cgi.php?mode=upload_files.php";	// ファイル自動UPの処理PRG
				document.upload_field.target="upload_iframe";
				document.upload_field.msec.value=MSec;	// ID をHIDDENに収納する
				document.upload_field.kid.value=KID;	// KID をHIDDENに収納する
				document.upload_field.gid.value=GID;	// GID をHIDDENに収納する
				document.upload_field.mid.value=MID;	// MID をHIDDENに収納する
				document.upload_field.submit();		// Form の送信

				$('flagSubmitting').value = 1;		// ファイル送信中のフラグ

			}
			flag_new_file_added = false;
		}

	}

}

/******************************************/
// 自動保存開始
/******************************************/
function startAutoStock() {

	if (!$('deletekey').value) {
		alert("パスワードを入力してください (保存データを呼び出す際のパスワードになります)");
		$('deletekey').focus();
		return;
	}

	$('stockButton').disabled = true;

	submitStock();

}
/******************************************/
// 保存ボタン ON
/******************************************/
function stockButtonON() {

	$('stockButton').disabled = false;
	$('destroyButton').disabled = false;

}
/******************************************/
// 保存データの呼出
/******************************************/
function displayStock() {

	// AJAXでストックデータを呼び出す
	var oj = new Ajax.Request("./bbs.php?mode=get_stockdata_ajax.php",{
		method :'post',
		parameters:"&msec="+MSec+"&gid="+GID+"&mid="+MID,
		onComplete:onloadedStockData
		}
	);

}

/******************************************/
// HTML onload 時に行うPRG
/******************************************/
function onloadWork() {

	displayStock();

	setCookieData();

}

/******************************************/
// Cookie に保存したデータの設定
/******************************************/
function setCookieData() {

	if (!$('name').value && Cname) {
		$('name').value=Cname;
	}

	if ($('sex_male').checked==false && $('sex_female').checked==false ) {
		if (Csex ==1) {
			$('sex_male').checked=true
		} else if  (Csex ==2) {
			$('sex_female').checked=true
		}
	}

	if (!$('homeroom').value && Chomeroom) {
		$('homeroom').value=Chomeroom;
	}

	if (!$('email').value && Cemail) {
		$('email').value=Cemail;
	}

	// Cookie に公開すると記録されている場合
	if (Cemailopen==1) {
		$('emailopen_1').checked=true
	}

	if (!$('deletekey').value && Cdeletekey) {
		$('deletekey').value=Cdeletekey;

		// 自動下書き保存ON
		$('stockButton').disabled = true;
		$('stockButton').value = "下書き保存";
		$('stockButton').onclick = "submitStock()";
	}

}

/******************************************/
// 保存データの表示処理
/******************************************/
function onloadedStockData(roj) {

	var i,j;

	// 下書きがあれば[下書きを表示する]ボタンを表示
	temp = roj.responseText.split("\n\n");

	if (temp.length>1) {
		$('stockDataDisp').style.display = "block";
		$('stockDataHr').style.display = "block";
	}


	// サーバからの返信[保存MSec \n 保存日時 \n 保存タイトル \n\n]
	for (i=0; i< (temp.length-1); i++) {

//alert(temp[i]);
//	$('stockDataList').innerHTML = temp;

		storedData = temp[i].split("\n");

		// ごみが入るので数値のみをピックアップ
		storedData[0] = get_number_only(storedData[0]);

		// storedMSec,storedTime,storedTitle
		addRowStock(storedData[0],storedData[1],storedData[2]);
	
	}

}

/******************************************/
// 保存ボタンの表示・非表示
/******************************************/
function changeBtnDispStock() {

	if ($('btnDispStockData').value=="下書き一覧を非表示") {
		$('btnDispStockData').value="下書き一覧を表示";
		$('stockDataList').style.display = "none";
	} else {
		$('btnDispStockData').value="下書き一覧を非表示";
		$('stockDataList').style.display = "block";
	}

}

/******************************************/
// ファイルの拡張子のチェック
/******************************************/
function checkFileExtension() {

	var flag_noUp=0;
	var i;

	// type が file であり、value があるものを選択する
	for (i = 1; i < document.upload_field.elements.length; i++) {

		// type = file 要素であれば、その子ノードを順に調べる
		if (document.upload_field.elements[i].type == "file") {

			if (document.upload_field.elements[i].value) {
				var tempFilename = document.upload_field.elements[i].value.split(/[\\\/]/).pop();

				// 拡張子の取得
				var fileExtension = tempFilename.split(".").pop();

				// UP 可能かどうかの判定
				if (!isUpEnabled(fileExtension)) {
					alert("ファイル "+tempFilename+" はアップできません");
					flag_noUp = 1;
					flag_change_files = 0;
					document.upload_field.elements[i].value="";
				}
			}
		}
	}

	return flag_noUp;
}
/******************************************/
// ファイルがUPできるかどうかの判定
/******************************************/
function isUpEnabled(Extension) {

	var flagUp = 0;

	// 小文字に変換
	Extension = Extension.toLowerCase();

	for(i=0;i<upOkExtension.length;i++) {
		if (Extension == upOkExtension[i]) {
			flagUp = 1;
		}
	}
	return flagUp;
}


/******************************************/
// 最終的な投稿送信
// 送信先のターゲットを変更
/******************************************/
function submitFormFinal() {

	if (!input_check()) { return; }

	var url;
	var w,h;

	w = screen.availWidth;
	h = screen.availHeight;

	// サブウィンドウのサイズを現サイズの80%とする。
	w = Math.round(w*0.8);
	h = Math.round(h*0.7);

//	subwin=window.open("<?php echo $CONFIG[url_dokikai]; ?>/blank.html","subwinConfirm","width="+w+",height="+h+",location=0,resizable=1,scrollbars=1,menubar=0,status=0");
	subwin=window.open(DokikaiURL+"/blank.html","subwinConfirm","width="+w+",height="+h+",location=0,resizable=1,scrollbars=1,menubar=0,status=0");

	flag_change_contents =0;	// AJAX での送信ストップ
	flag_change_files =0;	// AJAX での送信ストップ

	// AJAX で投稿内容を送信する
	sendRequestContents(1);

}

/******************************************/
// 最終的な投稿送信 2
// AJAX で投稿内容を送信した後の処理
/******************************************/
function submitFormFinal2() {

	// AJAXでの送信が終了
	flag_ajax_submitting=0;

	document.upload_field.msec.value=MSec;	// ID をHIDDENに収納する
	document.upload_field.kid.value=KID;	// KID をHIDDENに収納する
	document.upload_field.gid.value=GID;	// GID をHIDDENに収納する
	document.upload_field.mid.value=MID;	// MID をHIDDENに収納する
	document.upload_field.action="./bbs_cgi.php?mode=submit.php";	// 投稿処理PRG

	document.upload_field.target="subwinConfirm";
	
//	$('submitButton').disabled = true;
//	$('submitButton').value = "送信中";

	// Cookie に設定を保存する
	if ($('CookieOn').checked == true) {
		setCookie("GID",GID);
		setCookie("Cname",$('name').value);
		if ($('sex_male').checked==true) {
			setCookie("Csex",1);
		} else if($('sex_female').checked==true) {
			setCookie("Csex",2);
		} else {
			setCookie("Csex",0);
		}

		// クラス名項目の調整
		if (HomeroomType==1) {		// 期
			setCookie("Cki_graduate",$('homeroom').value);
		} else if (HomeroomType==2) {	// 卒業年
			setCookie("Cyear_graduate",$('homeroom').value);
		} else {			// クラス名
			setCookie("Chomeroom",$('homeroom').value);
		}

		setCookie("Cemail",$('email').value);
		if ($('emailopen_1').checked==true) {
			setCookie("Cemailopen",1);
		} else {
			setCookie("Cemailopen",0);
		}
		setCookie("Cdeletekey",$('deletekey').value);
	} else {
		setCookie("GID",GID);
		setCookie("Cname","");
		setCookie("Csex",0);
		setCookie("Chomeroom","");
		setCookie("Cki_graduate","");
		setCookie("Cyear_graduate","");
		setCookie("Cemail","");
		setCookie("Cemailopen",0);
		setCookie("Cdeletekey","");
	}


	document.upload_field.submit();		// Form の送信

	subwin.focus();


}


/******************************************/
// 下書き保存
// 送信先のターゲットを変更
/******************************************/
function submitStock() {

	// AJAX で投稿内容を送信する
	sendRequestContents(0);

	document.upload_field.action="./bbs_cgi.php?mode=upload_files.php";	// ファイル自動UPの処理PRG
	document.upload_field.target="upload_iframe";
	document.upload_field.msec.value=MSec;	// ID をHIDDENに収納する
	document.upload_field.kid.value=KID;	// KID をHIDDENに収納する
	document.upload_field.gid.value=GID;	// GID をHIDDENに収納する
	document.upload_field.mid.value=MID;	// MID をHIDDENに収納する
	document.upload_field.submit();		// Form の送信

	// 最終下書き時刻を表示する
	$('lastUpdateTime').style.display= "block";
			
	var doc_time = get_time_now();
	$('lastUpdateTime').innerHTML = "最終保存日時:"+doc_time;

}

/******************************************/
// 投稿内容をAJAXで送る
/******************************************/
function sendRequestContents(finalsubmit){

	var fname="";
	var tempFilename="";
	var captionNum=0;
	var sno;

	// type が file であり、value があるものを選択する
	for (i = 1; i < document.upload_field.elements.length; i++) {

		// type = file 要素であれば、その子ノードを順に調べる
		if (document.upload_field.elements[i].type == "file") {

			if (document.upload_field.elements[i].value) {
				sno= document.upload_field.elements[i+1].value;
				fname =  fname + sno+"|";
			}
		}

		// キャプションを変数に保存る
		if (document.upload_field.elements[i].name == "caption[]") {
			var ii = i;
//alert("入力"+ii+":"+document.upload_field.elements[i].value);
			saveCaption[ii] = document.upload_field.elements[i].value;
		}

	}


	document.upload_contents.msec.value=MSec;	// ID をHIDDENに収納する
	document.upload_contents.kid.value=KID;	// KID をHIDDENに収納する
	document.upload_contents.gid.value=GID;	// GID をHIDDENに収納する
	document.upload_contents.mid.value=MID;	// MID をHIDDENに収納する

	flag_ajax_submitting = 1;

	// 最終的な送信の場合
	if (finalsubmit){
		var oj = new Ajax.Request("./bbs_cgi.php?mode=upload_ajax.php",{
			postBody:Form.serialize('upload_contents'),
			onComplete:submitFormFinal2
			}
		);
	} else {
	// それ以外
		var oj = new Ajax.Request("./bbs_cgi.php?mode=upload_ajax.php",{
			postBody:Form.serialize('upload_contents'),
			onComplete:onloadedFile
			}
		);
	}


}

/******************************************/
// アップしたファイルをCheckBox/サムネイル表示
/******************************************/
function changeUploaded(sno,fileName,imgThumbnail,fileTypeUploaded,fileSizeUploaded) {

	var i;
	var ii;
	var fileValue;
	var sno_a;

	// type が file であり、value があるものを選択する
	for (i = 0; i < document.upload_field.elements.length; i++) {
//alert(document.upload_field.elements[i].name);
		// type = file 要素であれば、その子ノードを順に調べる
		if (document.upload_field.elements[i].type == "file") {

			// 次の要素のhiddenに格納している数値を取得する。
			sno_a = document.upload_field.elements[(i+1)].value;

//alert("i["+i+"] sno_a:"+sno_a+"sno"+sno);
			
			if ((eval(sno)==eval(sno_a)) && (eval(sno))){
//alert("test");
//				fileValue = document.upload_field.elements[i].value.split(/[\\\/]/).pop();

				// キャプションを格納している相対的要素番号
				ii = i + 2;

				// input file を削除し、check box + file名 の表示にする。
				replaceRow(document.upload_field.elements[i],fileName,imgThumbnail,ii,sno_a,fileTypeUploaded,fileSizeUploaded);
			}
		}

		// type = checkbox 要素であれば、その子ノードを順に調べる
		if (document.upload_field.elements[i].type == "checkbox") {

			sno_a = document.upload_field.elements[i+1].value;
			if ((eval(sno)==eval(sno_a)) && (eval(sno))){
//				fileValue = document.upload_field.elements[i].value.split(/[\\\/]/).pop();

				// input file を削除し、check box + file名 の表示にする。
				ii = i + 2;
				replaceRow(document.upload_field.elements[i],fileName,imgThumbnail,ii,sno_a,fileTypeUploaded,fileSizeUploaded);
			}
		}

	}


}

/******************************************/
// ファイルAJAX送信時の受信場
/******************************************/
function onloadedFile(roj){

	var i;
	var temp;

	// AJAXでの送信が終了
	flag_ajax_submitting=0;


	temp = roj.responseText.split("|");
//alert(roj.responseText);

	// サーバから[SNO * ファイル名 * サムネイルURL * ファイルタイプ * ファイルサイズ]
	for (i=0; i<= temp.length; i++) {

		// 送信時のエラー回避
		try {
			fileUploaded = temp[i].split("*");
		}
		catch(e) {
			return;
		}


		if (fileUploaded[1]) {
//alert("NO "+fileUploaded[0]+" : "+fileUploaded[1]);

			// ROIET サーバからの返信時にTOPにごみが入る
			fileUploaded[0] = get_number_only(fileUploaded[0]);

			changeUploaded(fileUploaded[0],fileUploaded[1],fileUploaded[2],fileUploaded[3],fileUploaded[4]);
		}



	}

}


/******************************************/
// ファイルアップロードでの変化があった場合
/******************************************/
function jsChange(upload_field) {

	obj_upload_field = upload_field;
	flag_change_files = 2;
	flag_change_contents = 3;
	flag_new_file_added = true;
	GlobalChange = 1;	// 編集フラグ

	$('destroyButton').disabled = false;
	$('stockButton').disabled = false;

	// 入力された FILE 名を表示し、file は表示しない(ファイルの変更が出来ないように)
	var rowNode = upload_field.parentNode.parentNode;

	for (i = 0; i < rowNode.childNodes.length; i++) {
		var tdNode = rowNode.childNodes[i];

		// td要素であれば、その子ノードを順に調べる
		if (tdNode.id == "afterclick") {
			tdNode.style.display="none";
		}
		if (tdNode.id == "ac_dummy") {
			tdNode.style.display="block";
		}

		if (obj_upload_field.name=="data[]") {
			if (tdNode.id == "ac_file" ) {
				tdNode.innerHTML=obj_upload_field.value;
			}
		}
	}


}

/******************************************/
// 入力内容に変化が出た場合の対応
/******************************************/
function contentsChange() {

	flag_change_contents = 3;
	GlobalChange = 1;	// 編集フラグ
	$('destroyButton').disabled = false;
	$('stockButton').disabled = false;

}

/******************************************/
// ファイルアップテーブルの書き換え
/******************************************/
function replaceRow(tbodyNodeRemove,filenameUploaded,imgThumbnail,captionI,sno,fileTypeUploaded,fileSizeUploaded) {

    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("new0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "new" + sno;

    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {
            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];

		if (chNode.nodeName == "INPUT" && chNode.type == "checkbox") {
//			chNode.value= filenameUploaded;
			chNode.value= sno;
		}
		if (chNode.name == "checkboxno[]") {
			chNode.value= sno;
		}
		if (chNode.name == "captionno[]") {
			chNode.value= sno;
		}

		if (chNode.nodeName == "SPAN") {
			chNode.innerHTML= "<a href='./bbs.php?mode=download_case1&msec="+MSec+"&sno="+sno+"'>"+filenameUploaded+" ("+fileTypeUploaded+") "+fileSizeUploaded+"</a>";
		}

		if (chNode.nodeName == "IMG") {
			chNode.src= imgThumbnail;
		}

		if (chNode.nodeName == "INPUT" && chNode.type == "text") {
//alert(captionI+"出力");
			chNode.value= saveCaption[captionI];
		}

            }
        }
    }
    
    
    // 行を可視にする
    rowNode.style.display = "";

	var rowNodeReplace = tbodyNodeRemove.parentNode.parentNode;


    // 表を入れ替える
    var tbodyNode = document.getElementById("tblrows");
    tbodyNode.replaceChild(rowNode,rowNodeReplace);

}



/******************************************/
// ファイルアップテーブルの行追加
/******************************************/
function addRow() {
    var i, j;
    // 行番号を1つ増やす
    rowNumber++;
    allrowNumber++;
    
	$('disp1').style.display= "none";
	$('disp2').style.display= "block";
	$('tableFile').style.display= "block";

    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("row0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "row" + rowNumber;
    
    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {
            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];
                
                // もし hidden だと value に allrowNumber を埋め込む
		if (chNode.nodeName == "INPUT" && chNode.type == "hidden") {
			chNode.value= allrowNumber;
		}

            }
        }
    }
    // 行を可視にする
    rowNode.style.display = "";
    // 表の最後に行を追加する
    var tbodyNode = document.getElementById("tblrows");
    tbodyNode.appendChild(rowNode);
    

//rowNodeReplace.appendChild(pNode);

}

/******************************************/
// ファイルアップテーブルの行削除
/******************************************/
function removeRow(btn) {
    // このボタンを含む行（tr要素）のノードを得る
    var rowNode = btn.parentNode.parentNode;
    // 行を削除する
    rowNode.parentNode.removeChild(rowNode);

    // 行番号を1つ減らす
    rowNumber--;

	if (!rowNumber) {
		$('disp1').style.display= "block";
		$('disp2').style.display= "none";
		$('tableFile').style.display= "none";
	}
}


/******************************************/
// 現在時刻を取得
/******************************************/
function get_time_now(){

	var now = new Date();

	var hour = now.getHours(); // 時
	var min = now.getMinutes(); // 分
	var sec = now.getSeconds(); // 秒

	// 数値が1桁の場合、頭に0を付けて2桁で表示する指定
	if(hour < 10) { hour = "0" + hour; }
	if(min < 10) { min = "0" + min; }
	if(sec < 10) { sec = "0" + sec; }

	// フォーマットを指定（不要な行を削除する）
	var watch = hour + ':' + min + ':' + sec;

	return watch;
}

/******************************************/
// 本文入力欄を広げる(高さ)
/******************************************/
function changeTextAreaHeight(px){

	var currentHeight;
	
	currentHeight = $('contents').rows;

	px = currentHeight + px;
	if (px<10) {
		px=10;
	}

	$('contents').rows=px;

}

/******************************************/
// 本文入力欄を広げる(幅)
/******************************************/
function changeTextAreaWidth(px){

	var currentWidth;
	
	currentWidth = $('contents').cols;

	px = currentWidth + px;
	if (px<10) {
		px=10;
	}

	$('contents').cols=px;

}

/******************************************/
// 本文入力欄を元に戻す(幅・高さ)
/******************************************/
function resetTextAreaSize(){


	$('contents').cols=80;
	$('contents').rows=8;

}
/******************************************/
// 本文入力欄をCLEARする
/******************************************/
function resetTextArea(){
	$('contents').value="";
}

/******************************************/
// 地図情報項目の追加
/******************************************/
function addRowMap() {

    var i, j;
    
    // 行番号を1つ増やす
    rowMapNumber++;

	$('dispMap1').style.display= "none";
	$('dispMap2').style.display= "block";
	$('tableMap').style.display= "block";

    
    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("rowmap0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "rowmap" + rowMapNumber;
    
    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {
            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];
            }
        }
    }
    // 行を可視にする
    rowNode.style.display = "";

    // 表の最後に行を追加する
    var tbodyNode = document.getElementById("tblmaprows");
    tbodyNode.appendChild(rowNode);

}

/******************************************/
// 地図情報の行削除
/******************************************/
function removeRowMap(btn) {

    // このボタンを含む行（tr要素）のノードを得る
    var rowNode = btn.parentNode.parentNode;
    // 行を削除する
    rowNode.parentNode.removeChild(rowNode);

    // 行番号を1つ減らす
    rowMapNumber--;

	if (!rowMapNumber) {
		$('dispMap1').style.display= "block";
		$('dispMap2').style.display= "none";
	}
}

/******************************************/
// 地図情報の入力画面表示
/******************************************/
function getMapLopcation(btn) {

    // このボタンを含む行（tr要素）のノードを得る
    var rowNode = btn.parentNode.parentNode;
    var rowNodeId = rowNode.id;

	var w,h;

	w = screen.availWidth;
	h = screen.availHeight;

	// サブウィンドウのサイズを現サイズの80%とする。
	w = Math.round(w*0.8);
	h = Math.round(h*0.7);

//	subwinGoogleMap = window.open("<?php echo _URL_; ?>/bbs.php?mode=get_location.php&kid=<?php echo $kid; ?>","subwinGoogleMap","width="+w+",height="+h+",location=0,resizable=1,scrollbars=1,menubar=0,status=0");

	subwinGoogleMap = window.open(MyURL+"/bbs.php?mode=get_location.php&kid="+KID,"subwinGoogleMap","width="+w+",height="+h+",location=0,resizable=1,scrollbars=1,menubar=0,status=0");
	document.cookie = "nodeid=" + rowNodeId + ";expires=";
	subwinGoogleMap.focus();

}

/******************************************/
// 動画情報項目の追加
/******************************************/
function addRowMovie() {

    var i, j;
    
    // 行番号を1つ増やす
    rowMovieNumber++;

	$('dispMovie1').style.display= "none";
	$('dispMovie2').style.display= "block";
	$('tableMovie').style.display= "block";

    
    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("rowmovie0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "rowmovie" + rowMovieNumber;
    
    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {
            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];
            }
        }
    }
    // 行を可視にする
    rowNode.style.display = "";

    // 表の最後に行を追加する
    var tbodyNode = document.getElementById("tblmovierows");
    tbodyNode.appendChild(rowNode);

}

/******************************************/
// 動画情報の行削除
/******************************************/
function removeRowMovie(btn) {

    // このボタンを含む行（tr要素）のノードを得る
    var rowNode = btn.parentNode.parentNode;
    // 行を削除する
    rowNode.parentNode.removeChild(rowNode);

    // 行番号を1つ減らす
    rowMovieNumber--;

	if (!rowMovieNumber) {
		$('dispMovie1').style.display= "block";
		$('dispMovie2').style.display= "none";
	}
}

/******************************************/
// クーキー処理関数
/******************************************/
function getCookie(key,  tmp1, tmp2, xx1, xx2, xx3) {
    tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
        xx2 = tmp1.indexOf(";", xx1);
        tmp2 = tmp1.substring(xx1 + 1, xx2);
        xx3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xx3) == key) {
            return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
        }
        xx1 = xx2 + 1;
    }
    return("");
}
/******************************************/
// クーキーのセット
/******************************************/
function setCookie(key, val, tmp) {
    tmp = key + "=" + escape(val) + "; ";
    // tmp += "path=" + location.pathname + "; ";
    tmp += "expires=Tue, 31-Dec-2030 23:59:59; ";
    document.cookie = tmp;
}
/******************************************/
// クーキーの削除
/******************************************/
function clearCookie(key) {
    document.cookie = key + "=" + "xx; expires=Tue, 1-Jan-1980 00:00:00;";
}

/******************************************/
// mail 形式のチェック
/******************************************/
function is_valid_email(email_address) {

	var regex;
	regex = '^([._/a-z0-9-]+[._/a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3}))$';
	myRE = new RegExp(regex, "gi");
	result = email_address.match(myRE);

	return result;

}

/******************************************/
// 送信時の入力内容のチェック
/******************************************/
function input_check() {

	// キャプションの文字数チェック
	// type が file であり、value があるものを選択する
	for (i = 0; i < document.upload_field.elements.length; i++) {
		// type = file 要素であれば、その子ノードを順に調べる
		if (document.upload_field.elements[i].name == "caption[]" && document.upload_field.elements[i].type == "text") {

			if (document.upload_field.elements[i].value.length > 32) {
				alert("キャプションの文字数が32文字を超えています");
				document.upload_field.elements[i].focus();
				return;
			}
		}
	}

	// 地図情報メモの文字数チェック
	for (i = 0; i < document.upload_contents.elements.length; i++) {
		if (document.upload_contents.elements[i].name == "memo[]" && document.upload_contents.elements[i].type == "text") {
			if (document.upload_contents.elements[i].value.length > 64) {
				alert("地図情報メモの文字数が64文字を超えています");
				document.upload_contents.elements[i].focus();
				return;
			}
		}
	}


	// 必須入力のチェック
	var flag_ng=0;
	if (!$('name').value) {
		$('name_none').style.display= "block";
		flag_ng=1;
	} else {
		$('name_none').style.display= "none";
	}

	if ($('name').value.length > 100) {
		$('name_length').style.display= "block";
		flag_ng=1;
	} else {
		$('name_length').style.display= "none";
	}

	if (!$('email').value) {
		$('email_none').style.display= "block";
		flag_ng=1;
	} else {
		$('email_none').style.display= "none";
	}

	if ($('email').value.length > 128) {
		$('email_length').style.display= "block";
		flag_ng=1;
	} else {
		$('email_length').style.display= "none";
	}

	if (!is_valid_email($('email').value) && $('email').value) {
		$('email_format_none').style.display= "block";
		flag_ng=1;
	} else {
		$('email_format_none').style.display= "none";
	}

	if (!$('titlePost').value) {
		$('title_none').style.display= "block";
		flag_ng=1;
	} else {
		$('title_none').style.display= "none";
	}

	if ($('titlePost').value.length > 100) {
		$('title_length').style.display= "block";
		flag_ng=1;
	} else {
		$('title_length').style.display= "none";
	}

	if (!$('contents').value) {
		$('contents_none').style.display= "block";
		flag_ng=1;
	} else {
		$('contents_none').style.display= "none";
	}

	if ($('contents').value.length > 10000) {
		$('contents_length').style.display= "block";
		flag_ng=1;
	} else {
		$('contents_length').style.display= "none";
	}

	if (!$('deletekey').value) {
		$('deletekey_none').style.display= "block";
		flag_ng=1;
	} else if  ($('deletekey').value.match(/[^0-9a-zA-Z_*@-]/) ){
		$('deletekey_format_none').style.display= "block";
		flag_ng=1;
	} else {
		$('deletekey_none').style.display= "none";
		$('deletekey_format_none').style.display= "none";
	}

	if ($('deletekey').value.length > 20) {
		$('deletekey_length').style.display= "block";
		flag_ng=1;
	} else {
		$('deletekey_length').style.display= "none";
	}

	if ($('homeroom').value.length > 20) {
		$('homeroom_length').style.display= "block";
		flag_ng=1;
	} else {
		$('homeroom_length').style.display= "none";
	}

	if (flag_ng) {
		return false; 
	}

	// IE の場合 ポップアップ
	return confirm("ポップアップによる確認画面に進みます。\n\n先に、ポップアップ ブロックの設定を無効にしてください\n\nよろしいですか？");

}

//*********************************
// ストックリスト表の表示
//*********************************
function addRowStock(storedMsec,storedTime,storedTitle) {

    var i, j;
    
    // 行番号を1つ増やす
    rowNumberStock++;
    
    $('stockDataList').style.display= "block";

    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("stockrow0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "stockrow" + rowNumberStock;

    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {


            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];
		if (chNode.nodeName == "INPUT" && chNode.type == "hidden") {
			chNode.value= storedMsec;
		}

		if (chNode.nodeName == "SPAN" && chNode.id == "stocktime") {
			chNode.innerHTML= storedTime;
		}

		if (chNode.nodeName == "SPAN" && chNode.id == "stocktitle") {
			chNode.innerHTML= storedTitle;
		}

            }
        }
    }
    // 行を可視にする
    rowNode.style.display = "";

    // 表の最後に行を追加する
    var tbodyNode = document.getElementById("stockrows");
    tbodyNode.appendChild(rowNode);

}

//*********************************
// ストックリストの削除をクリック
//*********************************
function removeStock(btn) {

	var pwd;
	var msecStock;

	// このボタンを含む行（tr要素）のノードを得る
	var rowNode = btn.parentNode.parentNode;

	// パスワードを取得する
	// 行の子ノードを順に調べる
	for (i = 0; i < rowNode.childNodes.length; i++) {
		var tdNode = rowNode.childNodes[i];
		// td要素であれば、その子ノードを順に調べる
		if (tdNode.nodeName == "TD") {
			for (j = 0; j < tdNode.childNodes.length; j++) {
				var chNode = tdNode.childNodes[j];
				if (chNode.nodeName == "INPUT" && chNode.type == "password") {
					pwd = chNode.value;
				}
				if (chNode.nodeName == "INPUT" && chNode.type == "hidden") {
					msecStock = chNode.value;
				}
			}
		}
	}

	// 削除するnode
	nodeStockDel = rowNode;

	// ごみ処理
	msecStock = get_number_only(msecStock);

	// Ajax でサーバに送信
	var oj = new Ajax.Request("./bbs_cgi.php?mode=del_stock_ajax.php",{
		method :'post',
		parameters:"&msec="+msecStock+"&pwd="+pwd,
		onComplete:onloadedDelStock
		}
	);


}
/******************************************/
// ストックの削除 戻り
/******************************************/
function onloadedDelStock(roj) {

	roj.responseText = get_number_only(roj.responseText);
	var ans = eval(roj.responseText);

	if (ans==2) {
		alert("パスワードが違います");
		return;
	}

	if (ans==3) {
		alert("データがありません");
		return;
	}

	if (ans==4) {
		alert("削除に失敗しました");
		return;
	}

	if (ans==9) {
		alert("DB エラー");
		return;
	}

	// 破棄データ個数
	destroy_number++;

	if (ans==1) {

		if (destroy_number <= 1) {
			alert("削除しました");
		}

		nodeStockDel.parentNode.removeChild(nodeStockDel);

		// 行番号を1つ減らす
		rowNumberStock--;

		if (!rowNumberStock) {
			$('stockDataList').style.display= "none";
			$('stockDataDisp').style.display= "none";
			$('stockDataHr').style.display= "none";
		}

		// 破棄実行中個数の削減
		destroy_number--;

		return;
	}


}
//*********************************
// 現在編集中の内容を破棄する
//*********************************
function submitDestroy() {

	if (!confirm("編集中の内容を破棄します。よろしいですか？")) {
		//NO
		return;
	}

	// 破棄実行中個数
	destroy_number++;

	// 自動アップローダーの停止
	flag_change_contents=0;
	flag_change_files=0;

	// ボタンの停止
	$('destroyButton').disabled = true;

	// 入力データのClear
	$('name').value="";
	$('email').value="";
	$('titlePost').value="";
	$('contents').value="";
	$('deletekey').value="";
	$('homeroom').value="";

	// エラー入力表示のクリアー
	$('name_none').style.display= "none";
	$('email_none').style.display= "none";
	$('title_none').style.display= "none";
	$('contents_none').style.display= "none";
	$('deletekey_none').style.display= "none";

	$('name_length').style.display= "none";
	$('homeroom_length').style.display= "none";
	$('title_length').style.display= "none";
	$('contents_length').style.display= "none";
	$('email_length').style.display= "none";
	$('deletekey_length').style.display= "none";

	// 地図・動画情報の初期化
	for (i = 0; i < document.upload_contents.elements.length; i++) {

		if (document.upload_contents.elements[i].name == "lat[]") {
			var trnode = document.upload_contents.elements[i].parentNode.parentNode;
			// コピー用のノードでは無い場合削除
			if (trnode.id != "rowmap0") {
				trnode.parentNode.removeChild(trnode);
				i=0;	// 再度 0 からチェックさせる必要あり
			}
		}
		if (document.upload_contents.elements[i].name == "movie[]") {
			var trnode = document.upload_contents.elements[i].parentNode.parentNode;
			// コピー用のノードでは無い場合削除
			if (trnode.id != "rowmovie0") {
				trnode.parentNode.removeChild(trnode);
				i=0;	// 再度 0 からチェックさせる必要あり
			}
		}
	}

	// ファイル情報の初期化
	for (i = 0; i < document.upload_field.elements.length; i++) {
		if (document.upload_field.elements[i].name == "data[]") {
			var trnode = document.upload_field.elements[i].parentNode.parentNode;
			// コピー用のノードでは無い場合削除
			if (trnode.id != "row0") {
				trnode.parentNode.removeChild(trnode);
				i=0;	// 再度 0 からチェックさせる必要あり
			}
		}
		if (document.upload_field.elements[i].name == "uploaded[]") {
			var trnode = document.upload_field.elements[i].parentNode.parentNode;
			// コピー用のノードでは無い場合削除
			if (trnode.id != "new0") {
				trnode.parentNode.removeChild(trnode);
				i=0;	// 再度 0 からチェックさせる必要あり
			}
		}
	}

	$('disp1').style.display= "block";
	$('disp2').style.display= "none";
	$('tableFile').style.display= "none";
	rowNumber = 0;
	allrowNumber = 0;
	
	// Ajax でサーバに送信し該当の msec の保存データを削除する。
	var oj = new Ajax.Request("./bbs_cgi.php?mode=destroy_ajax.php",{
		method :'post',
		parameters:"&msec="+MSec,
		onComplete:onloadedDestroy
		}
	);

	// 変化が全く無い状態
	GlobalChange = 0;

}

//*********************************
// 破棄実行の表示
//*********************************
function onloadedDestroy(roj) {

	roj.responseText = get_number_only(roj.responseText);

	var ans = eval(roj.responseText);

	if (ans==2 && destroy_number<=1) {
		alert("データの破棄に失敗しました。");
		return;
	}
	if (ans==1 && destroy_number<=1) {
		alert("データの破棄に成功しました。");
		return;
	}

	// 破棄実行中個数の削減
	destroy_number--;


}

//*********************************
// ストックリストの呼込みクリック
//*********************************
function readStock(btn) {

	var pwd;
	var msecStock;

	//現在編集中のデータを破棄する
	if (GlobalChange) {
		submitDestroy();
	}

	// このボタンを含む行（tr要素）のノードを得る
	var rowNode = btn.parentNode.parentNode;

	// パスワードを取得する
	// 行の子ノードを順に調べる
	for (i = 0; i < rowNode.childNodes.length; i++) {
		var tdNode = rowNode.childNodes[i];
		// td要素であれば、その子ノードを順に調べる
		if (tdNode.nodeName == "TD") {
			for (j = 0; j < tdNode.childNodes.length; j++) {
				var chNode = tdNode.childNodes[j];
				if (chNode.nodeName == "INPUT" && chNode.type == "password") {
					pwd = chNode.value;
				}
				if (chNode.nodeName == "INPUT" && chNode.type == "hidden") {
					msecStock = chNode.value;
				}
			}
		}
	}

	// 呼込み終了後に削除するnode
	nodeStockDel = rowNode;

	// ごみ処理
	msecStock = get_number_only(msecStock);

	// Ajax でサーバに送信
	var oj = new Ajax.Request("./bbs.php?mode=call_stock_ajax.php",{
		method :'post',
		parameters:"&msec="+msecStock+"&pwd="+pwd,
		onComplete:onloadedCallStock
		}
	);


}

/******************************************/
// ストックの呼出し 戻り
/******************************************/
function onloadedCallStock(roj) {

//alert(roj.responseText);
	temp = roj.responseText.split("\n\n");

	temp[0] = get_number_only(temp[0]);
	var ans = eval(temp[0]);

	if (ans==2) {
		alert("パスワードが違います");
		return;
	}

	if (ans==3) {
		alert("データがありません");
		return;
	}

	if (ans==9) {
		alert("DB エラー");
		return;
	}

	// MSec 値
	MSec = temp[1];

	// BBS データを各DOMに格納する
	$('deletekey').value= temp[2];
	$('titlePost').value= temp[3];
	$('contents').value= temp[4];
	$('name').value= temp[5];
	if (temp[6]==1) {
		$('sex_male').checked=true;
	} else if (temp[6]==2) {
		$('sex_female').checked=true;
	}
	$('homeroom').value= temp[7];
	$('email').value= temp[8];
	if (temp[9]==0) {
		$('emailopen_0').checked= true;
	} else if  (temp[9]==1) {
		$('emailopen_1').checked= true;
	}

	// ファイル情報の表示
	tFile = temp[10].split("<>");

	for (i = 0; i < tFile.length; i++) {
	
		tf = tFile[i].split("*");

		if (tf[0]) {
			// 0:$sno 1:$filename 2:$uploadFile_thumbnai 3:$filetype 4:$filesize 5:Caption;
			//sno,filenameUploaded,fileTypeUploaded,fileSizeUploaded,imgThumbnail,Caption
			addRowFile(tf[0],tf[1],tf[3],tf[4],tf[2],tf[5]);
		}

	}

	// 地図情報の表示
	tFile = temp[11].split("<<>>");

	for (i = 0; i < tFile.length; i++) {
	
		tf = tFile[i].split("<>");

		if (tf[0]) {
			// 0:$lat 1:$lon 2:$zoom 3:$memo;
			// lat,lon,zoom,memo
			addRowMapStock(tf[0],tf[1],tf[2],tf[3],tf[4]);
		}

	}

	// 動画情報の表示
	tFile = temp[12].split("<<>>");

	for (i = 0; i < tFile.length; i++) {
	
		tf = tFile[i].split("<>");

		if (tf[0]) {
			// 0:$movie
			// movie
			addRowMovieStock(tf[0]);
		}

	}



	// 読込んだデータを下書きの表から削除する
	nodeStockDel.parentNode.removeChild(nodeStockDel);

	// 行番号を1つ減らす
	rowNumberStock--;

	if (!rowNumberStock) {
		$('stockDataList').style.display= "none";
		$('stockDataDisp').style.display= "none";
		$('stockDataHr').style.display= "none";

	}

	GlobalChange =1;

	return;
}

/*************************************************/
// 保存データ読出しからの表示追加
/*************************************************/
function addRowFile(sno,filenameUploaded,fileTypeUploaded,fileSizeUploaded,imgThumbnail,Caption) {

    var i, j;
    // 行番号を1つ増やす
    rowNumber++;
    allrowNumber++;
    
	$('disp1').style.display= "none";
	$('disp2').style.display= "block";
	$('tableFile').style.display= "block";

    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("new0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "new" + rowNumber;
    
    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {
            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];

		if (chNode.nodeName == "INPUT" && chNode.type == "checkbox") {
//			chNode.value= filenameUploaded;
			chNode.value= sno;
		}
		if (chNode.name == "checkboxno[]") {
			chNode.value= sno;
		}
		if (chNode.name == "captionno[]") {
			chNode.value= sno;
		}

		if (chNode.nodeName == "SPAN") {
			chNode.innerHTML= "<a href='./bbs.php?mode=download_case1&msec="+MSec+"&sno="+sno+"'>"+filenameUploaded+" ("+fileTypeUploaded+") "+fileSizeUploaded+"</a>";
		}

		if (chNode.nodeName == "IMG") {
			chNode.src= imgThumbnail;
		}

		if (chNode.nodeName == "INPUT" && chNode.type == "text") {
//alert(captionI+"出力");
			chNode.value= Caption;
		}
            }
        }
    }
    // 行を可視にする
    rowNode.style.display = "";
    // 表の最後に行を追加する
    var tbodyNode = document.getElementById("tblrows");
    tbodyNode.appendChild(rowNode);
   

}
//*********************************
// 下書きにある 地図情報項目の追加
//*********************************]
function addRowMapStock(lat,lon,zoom,memo) {

    var i, j;
    
    // 行番号を1つ増やす
    rowMapNumber++;

	$('dispMap1').style.display= "none";
	$('dispMap2').style.display= "block";
	$('tableMap').style.display= "block";

    
    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("rowmap0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "rowmap" + rowMapNumber;
    
    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {
            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];

		if (chNode.name == "lat[]") {
			chNode.value= lat;
		}
		if (chNode.name == "lon[]") {
			chNode.value= lon;
		}
		if (chNode.name == "zoom[]") {
			chNode.value= zoom;
		}
		if (chNode.name == "memo[]") {
			chNode.value= memo;
		}
            }
        }
    }
    // 行を可視にする
    rowNode.style.display = "";

    // 表の最後に行を追加する
    var tbodyNode = document.getElementById("tblmaprows");
    tbodyNode.appendChild(rowNode);

}

//*********************************
// 下書きにある 動画情報項目の追加
//*********************************]
function addRowMovieStock(movie) {

    var i, j;
    
    // 行番号を1つ増やす
    rowMovieNumber++;

	$('dispMovie1').style.display= "none";
	$('dispMovie2').style.display= "block";
	$('tableMovie').style.display= "block";

    
    // 雛形の行をコピーする
    var tmplRowNode = document.getElementById("rowmovie0");
    var rowNode = tmplRowNode.cloneNode(true);
    rowNode.id = "rowmovie" + rowMovieNumber;
    
    // 行の子ノードを順に調べる
    for (i = 0; i < rowNode.childNodes.length; i++) {
        var tdNode = rowNode.childNodes[i];
        // td要素であれば、その子ノードを順に調べる
        if (tdNode.nodeName == "TD") {
            for (j = 0; j < tdNode.childNodes.length; j++) {
                var chNode = tdNode.childNodes[j];

		if (chNode.name == "movie[]") {
			chNode.value= movie;
		}
            }
        }
    }
    // 行を可視にする
    rowNode.style.display = "";

    // 表の最後に行を追加する
    var tbodyNode = document.getElementById("tblmovierows");
    tbodyNode.appendChild(rowNode);

}

/******************************************/
// パスワードの表示
/******************************************/
function showpassword() {

	alert("パスワード:"+$('deletekey').value);

}

/******************************************/
// 数値のみを取得
// ブラウザによりごみが含まれる場合があるため
/******************************************/
function get_number_only(orgdata) {

	var numdata = "0123456789";

	var i, v, numberdata;

	var flg = 0;

	if ( orgdata == "" ) return;

	numberdata="";
	for ( i = 0; i < orgdata.length; i++ ) {

		for ( v = 0; v < numdata.length; v++ ) {
			if ( orgdata.charAt(i) == numdata.charAt(v) ){
				flg = 1;
			}
		}

		if (flg){
			numberdata = numberdata+orgdata.charAt(i);
		}
		flg = 0;
	}

	return numberdata;

}


