/*---------------------------------------------------------------------------*/
/*                                                                           */
/*    javascript for dslbase3                                                */
/*                                                                           */
/*---------------------------------------------------------------------------*/
/*   Digital Sheep Learning, Inc All Rights Reserved.                        */
/*---------------------------------------------------------------------------*/

/*********************************************************/
/*  画面遷移
/*********************************************************/
// 一覧の表示
function list(){
	document.getElementById("form_body").action = LIST_ACTION;
	document.getElementById("form_body").reqid.value = "list";
	document.getElementById("form_body").submit();
}

// ソート
function sort(key){
	if (key.indexOf("_show") != -1) key = key.substring(0, key.lastIndexOf("_show"));
	if (key.indexOf("_export") != -1) key = key.substring(0, key.lastIndexOf("_export"));
	document.getElementById("form_body").action = LIST_ACTION;
	document.getElementById("form_body").reqid.value = "sort";
	document.getElementById("form_body").sort_key.value = key;
	if (now_sort_key == key){
		document.getElementById("form_body").sort_order.value = (now_sort_order == "1") ? "0" : "1";
	} else {
		document.getElementById("form_body").sort_order.value = "1";
	}
	document.getElementById("form_body").submit();
}

// ジャンプ
function jump(val){
	if (val == "b"){
		prevPage();
	} else if (val == "n"){
		nextPage();
	} else {
		document.getElementById("form_body").action = LIST_ACTION;
		document.getElementById("form_body").pageno.value = val;
		document.getElementById("form_body").reqid.value="jump";
		document.getElementById("form_body").submit();
	}
}

// 次ページ
function nextPage(){
	document.getElementById("form_body").action = LIST_ACTION;
	document.getElementById("form_body").reqid.value = "next";
	document.getElementById("form_body").submit();
}

// 前ページ
function prevPage(){
	document.getElementById("form_body").action = LIST_ACTION;
	document.getElementById("form_body").reqid.value = "prev";
	document.getElementById("form_body").submit();
}

// 新規作成入力フォーム表示
function input_new(){
	document.getElementById("form_body").action = MGR_ACTION;
	document.getElementById("form_body").reqid.value = "input_new";
	document.getElementById("form_body").submit();
}

// 更新入力フォーム表示
function input_upd(rid){
	document.getElementById("form_body").action = MGR_ACTION;
	document.getElementById("form_body").reqid.value = "input_upd";
	document.getElementById("form_body").rid.value = rid;
	document.getElementById("form_body").submit();
}

// 詳細
function detail(rid){
	document.getElementById("form_body").action = MGR_ACTION;
	document.getElementById("form_body").reqid.value = "detail";
	document.getElementById("form_body").rid.value = rid;
	document.getElementById("form_body").submit();
}

// 登録（新規or更新）
function regist(){
	try {
		var check = check_input();
	} catch (e){
		if (LANG == undefined || LANG=="ja"){
			alert("debug : check_inputメソッドを実装してください。");
		} else if (LANG == "en"){
			alert('debug : Please implement the method named "check_input".');
		}
		return;
	}
	if (check){
		document.getElementById("form_body").action = MGR_ACTION;
		document.getElementById("form_body").reqid.value = "regist";
		document.getElementById("form_body").submit();
	}
}

// 検索
function search(){
	try {
		var check = check_search();
	} catch (e){
		if (LANG == undefined || LANG=="ja"){
			alert("debug : check_inputメソッドを実装してください。");
		} else if (LANG == "en"){
			alert('debug : Please implement the method named "check_input".');
		}
		return;
	}
	if (check){
		document.getElementById("form_search").reqid.value = "search";
		document.getElementById("form_search").searchFlg.value = "true";
		document.getElementById("form_search").submit();
	}
}

function search_reset(){
	document.getElementById("form_search").action = SEARCH_ACTION;
	document.getElementById("form_search").reqid.value = "reset";
	document.getElementById("form_search").submit();
}

// 削除
function del_line(rid, name){
	try {
		var check = check_delete(rid, name);
	} catch (e){
		if (LANG == undefined || LANG=="ja"){
			alert("debug : check_deleteメソッドを実装してください。");
		} else if (LANG == "en"){
			alert('debug : Please implement the method named "check_input".');
		}
		return;
	}
	if (check){
		document.getElementById("form_body").action = MGR_ACTION;
		document.getElementById("form_body").reqid.value = "delete";
		document.getElementById("form_body").rid.value = rid;
		document.getElementById("form_body").submit();
	}
}

// エクスポート
// NNでダウンロード時の拡張子がXXX.csv.do になるため、dummy=1を付加
function export_list(){
	document.getElementById("form_body").action = LIST_ACTION + "?dummy=1"; 
	document.getElementById("form_body").reqid.value = "export_list";
	document.getElementById("form_body").submit();
}

function import_list(){
	if (document.getElementById("form_import").import_file.value == "" || checkExtension("import_file", "csv") == false) {
		if (LANG == undefined || LANG=="ja"){
			alert("csv形式のファイルを指定してください。");
		} else if (LANG == "en"){
			alert('Specify a file in CSV format as the file.');
		}
		
		return;
	}
	start_loading();
	document.getElementById("form_import").submit();
}

// ツリー表示
function tree(){
	document.getElementById("form_body").action = TREE_ACTION;
	document.getElementById("form_body").reqid.value = "tree";
	document.getElementById("form_body").submit();
}

// ヘッダの変更
function chgHeader(){
	document.getElementById("form_body").action = LIST_ACTION;
	document.getElementById("form_body").reqid.value="chg_header";
	document.getElementById("form_body").list_header.value = getListBoxValue("selected_list", ",");
	document.getElementById("form_body").submit();
}

// ヘッダリストの生成
function makeHeaderList(){
	removeAllItem("selectable_list");
	for (var i=0; i<selectable_header.length; i++){
		addItem("selectable_list", selectable_header[i].text, selectable_header[i].value);
	}
	removeAllItem("selected_list");
	for (var i=0; i<selected_header.length; i++){
		addItem("selected_list", selected_header[i].text, selected_header[i].value);
	}
}

// ヘッダのリセット
function resetHeader(){
	removeAllItem("selectable_list");
	for (var i=0; i<selected_header.length; i++){
		var flg = false;
		for (var j=0; j<default_header.length; j++){
			if (selected_header[i].value == default_header[j].value){
				flg = true;
				break;
			}
		}
		if (!flg){
			addItem("selectable_list", selected_header[i].text, selected_header[i].value);
		}
	}
	for (var i=0; i<selectable_header.length; i++){
		var flg = false;
		for (var j=0; j<default_header.length; j++){
			if (selectable_header[i].value == default_header[j].value){
				flg = true;
				break;
			}
		}
		if (!flg){
			addItem("selectable_list", selectable_header[i].text, selectable_header[i].value);
		}
	}
	removeAllItem("selected_list");
	for (var i=0; i<default_header.length; i++){
		addItem("selected_list", default_header[i].text, default_header[i].value);
	}
}

// ヘッダの確定
function dispHeader(){
	chgHeader();
}

// ヘッダの移動
function moveHeader(){
	var srcListBox = document.getElementById("selectable_list");
	var select_cnt = 0;
	for (var i=0; i<srcListBox.length; i++){
		if (srcListBox[i].selected) select_cnt ++;
	}
	if (select_cnt == 0){
		return;
	}
	moveItems("selectable_list", "selected_list");
}

// ヘッダの削除
function removeHeader(){
	var srcListBox = document.getElementById("selected_list");
	var select_cnt = 0;
	for (var i=0; i<srcListBox.length; i++){
		if (srcListBox[i].selected) select_cnt ++;
	}
	if (select_cnt == srcListBox.length){
		if (LANG == undefined || LANG=="ja"){
		alert("少なくともひとつは表示する必要があります。");
		} else if (LANG == "en"){
			alert('Please select one or more. ');
		}
		return;
		
		
	}
	for (var i=0; i<srcListBox.length; i++){
		if (srcListBox[i].selected) select_cnt ++;
	}
	if (select_cnt == 0){
		return;
	}
	moveItems("selected_list", "selectable_list");
}

// ヘッダの順序変更
function upHeader(){
	var srcListBox = document.getElementById("selected_list");
	var select_cnt = 0;
	for (var i=0; i<srcListBox.length; i++){
		if (i==0 || srcListBox[i-1].selected) continue;
		if (srcListBox[i].selected){
			var tmp_value = srcListBox[i-1].value;
			var tmp_text = srcListBox[i-1].text;
			srcListBox[i-1].value = srcListBox[i].value;
			srcListBox[i-1].text = srcListBox[i].text;
			srcListBox[i-1].selected = true;
			srcListBox[i].value = tmp_value;
			srcListBox[i].text = tmp_text;
			srcListBox[i].selected = false;
		}
	}
}

// ヘッダの順序変更
function downHeader(){
	var srcListBox = document.getElementById("selected_list");
	var select_cnt = 0;
	for (var i=srcListBox.length-1; i>=0; i--){
		if (i==srcListBox.length-1 || srcListBox[i+1].selected) continue;
		if (srcListBox[i].selected){
			var tmp_value = srcListBox[i+1].value;
			var tmp_text = srcListBox[i+1].text;
			srcListBox[i+1].value = srcListBox[i].value;
			srcListBox[i+1].text = srcListBox[i].text;
			srcListBox[i+1].selected = true;
			srcListBox[i].value = tmp_value;
			srcListBox[i].text = tmp_text;
			srcListBox[i].selected = false;
		}
	}
}

// ダイアログの状態
var openObject = undefined;
function pop_btn_click(disp_id){
	var element = document.getElementById(disp_id);
	if (element.style.display == "block"){

		// NNでのクラッシュ防止
		if (disp_id == "import_main_div"){
			document.getElementById("div_import_file").innerHTML = '';
		}
		element.style.display = "none";
		openObject = undefined;
	} else {
		if (openObject != undefined){
			openObject.style.display = "none";
		}
		if (disp_id == "chgdisp_main_div"){
			makeHeaderList();
		}
		element.style.display = "block";
		
		// NNでのクラッシュ防止
		if (disp_id == "import_main_div"){
			document.getElementById("div_import_file").innerHTML = '<input type="file" name="import_file" id="import_file" style="width:300px;">';
		}
		openObject = element;
	}
}

var timerID = undefined;
// ローディング開始
function start_loading(){
	if (openObject != undefined){
		openObject.style.display = "none";
	}
	document.getElementById("overlay").style.display="block";
	document.getElementById("loading").style.display="block";
	off_no = 0;
	on_no = 4;
	timerID = setInterval('loading()', 300);
}

// ローディング終了
function stop_loading(){
	if (openObject != undefined){
		openObject.style.display = "none";
	}
	document.getElementById("overlay").style.display="none";
	document.getElementById("loading").style.display="none";
	if (timerID != undefined){
		clearInterval(timerID);
	}
}

// ローディングの処理
function loading(){
	on_no ++;
	off_no ++;
	if (on_no > 10) on_no = 1;
	if (off_no > 10) off_no = 1;
	document.getElementById("loadspan"+on_no).style.visibility = "visible";
	document.getElementById("loadspan"+off_no).style.visibility = "hidden";
}


/*********************************************************/
/*  ページング
/*********************************************************/
// btn_first.jpg, btn_back.jpg, btn_next.jpg, btn_last.jpg および各ディセイブルを用意すること
function paging(hitNum, dispnum, pageNum, nowPage, img_path, img_header){
	var count = 7;
	var pageNum = Math.floor(((hitNum-1)/dispnum)+1);
	var nowPageStartIndex = (nowPage-1) * dispnum;
	var start = Math.max((nowPage - Math.floor(count/2)), 1);
	var end = Math.min((start+count-1), pageNum);
	if (pageNum - (count/2) < nowPage){
		start = Math.max((pageNum-count+1), 1);
	}
	var w1 = 80;
	var w2 = 25;
	var w3 = 80;
	if (img_header == undefined) img_header = "";
	if (img_path.lastIndexOf("/") != img_path.length-1) img_path += "/";
	var first_jpg = img_path + img_header + "btn_paging_first.gif";
	var next_jpg = img_path + img_header + "btn_paging_next.gif";
	var back_jpg = img_path + img_header + "btn_paging_back.gif";
	var last_jpg = img_path + img_header + "btn_paging_last.gif";
	var first_dis_jpg = img_path + img_header + "btn_paging_first-dis.gif";
	var next_dis_jpg = img_path + img_header + "btn_paging_next-dis.gif";
	var back_dis_jpg = img_path + img_header + "btn_paging_back-dis.gif";
	var last_dis_jpg = img_path + img_header + "btn_paging_last-dis.gif";
	if (pageNum == nowPage){
		var hitString = '&nbsp;'+String(nowPageStartIndex+1)+'-'+hitNum+'/'+hitNum+'&nbsp;&nbsp;';
	} else {
		var hitString = '&nbsp;'+String(nowPageStartIndex+1)+'-'+String(nowPageStartIndex+dispnum)+'/'+hitNum+'&nbsp;&nbsp;';
	}
	
	
	if (pageNum == 0) return '<div style="height:25px;"><br></div>';

	var aryData = new Array();
	aryData.push('<table border="0" align="center" width="100%" cellspacing="0" cellpadding="0">');
	aryData.push('<tr><td class="txt-12" width="100%" align="right">');
	aryData.push('<table border="0" align="right" cellspacing="0" cellpadding="0">');
	aryData.push('<tr class="txt-12"><td align="right"><small>'+ hitString + '</small></td>');
	
	aryData.push('<td align="right">');
	if (start != 1){
		aryData.push('<a href="javascript:jump(\'1\');"><img src="'+first_jpg+'" width="21" height="23" border="0"></a>');
		aryData.push('&nbsp;');
	} else {
		aryData.push('<img src="'+first_dis_jpg+'" width="21" height="23" border="0">');
		aryData.push('&nbsp;');
	}
	if (nowPage == 1){
		aryData.push('<img src="'+back_dis_jpg+'" width="21" height="23" border="0">');
	} else {
		aryData.push('<a href="javascript:jump(\'b\');"><img src="'+back_jpg+'" width="21" height="23" border="0"></a>');
	}
	aryData.push('&nbsp;');
	aryData.push('</td><td align="center" width="10">');
	
	aryData.push('<table border="0" cellpadding="0" cellspacing="0" width="'+(end-start)*w2+'"><tr class="txt-12">');
	for (var i=start; i<=end; i++){
		aryData.push('<td align="center" width="'+w2+'" style="padding-left:2px;">');
		if (i == nowPage){
			aryData.push('<font color="#CC3366"><b>'+String(i)+'</b></font>');
		} else {
			aryData.push('<a href="javascript:jump(\''+String(i)+'\');">'+String(i)+'</a>');
		}
		aryData.push('</td>');
	}
	aryData.push('</tr></table>');
	
	aryData.push('</td><td>');
	aryData.push('&nbsp;');
	if (nowPage == end){
		aryData.push('<img src="'+next_dis_jpg+'" width="21" height="23" border="0">');
	} else {
		aryData.push('<a href="javascript:jump(\'n\');"><img src="'+next_jpg+'" width="21" height="23" border="0"></a>');
	}
	if (end != pageNum){
		aryData.push('&nbsp;');
		aryData.push('<a href="javascript:jump(\''+pageNum+'\');"><img src="'+last_jpg+'" width="21" height="23" border="0"></a>&nbsp;&nbsp;&nbsp;');
	} else {
		aryData.push('&nbsp;');
		aryData.push('<img src="'+last_dis_jpg+'" width="21" height="23" border="0">&nbsp;');
	}

	aryData.push('</td></tr>');
	aryData.push('</table>');
	
	aryData.push('</td></tr></table>');
	return aryData.join("");

}

