// default.js
//	fileinfo: dir=web/js
//	※プロトタイプ用に一部変更してある(prototypeで検索)。

//---- ユーティリティ ----
// 要素取得
function GetElement(id) {
	var  x = $(id);
	if (!x) alert("NOT FOUND: id='"+id+"'");
	return x;
}

// 要素表示制御
function Display(id, shown) {
	var  x = GetElement(id);
	if (!x) return;
	if (shown == null) shown = true;
	x.style.display = shown ? "block" : "none";
	return;
}

function DisplayTable(id, shown) {
	var  x = GetElement(id);
	if (!x) return;

	var	d;
	if ((shown == null) || shown) {
		d = Prototype.Browser.Gecko ? "table-row" : "block";
	}
	else {
		d = "none";
	}
	x.style.display = d;
	return;
}

function ChangeDisplay(id1, id2) {
	var  x = GetElement(id1);
	if (!x) return;
	var  d = x.style.display;
	if (!d || (d == "block")) {
		Display(id1, false);
		Display(id2);
	}
	else {
		Display(id2, false);
		Display(id1);
	}
	return;
}

function ChangeTab(base, num) {
	for (var i = 1; ; ++i) {
		var id = base + i;
		var  x = $(id);
		if (!x) break;
		Display(id, (i == num));
	}
	return;
}

function ChangeTabClass(base, num) {
	for (var i = 1; ; ++i) {
		var id = base + i;
		var  x = $(id);
		if (!x) break;
		var nc = (i == num) ? "tabsel" : "tab";
		var cc = x.className;
		cc = cc.replace(/tabsel */, "").replace(/tab */, "");
		cc = (cc == "") ? nc : nc + " " + cc;
		x.className = cc;
	}
	return;
}

// 要素設定
function SetHTML(id, html) {
	var x = GetElement(id);
	if (x) x.innerHTML = html;
	return;
}

function SetText(id, text) {
	var x = GetElement(id);
	if (x.innerText != null) {
		x.innerText = text;
	}
	else {
		x.textContent = text;
	}
	return;
}

function GetText(id) {
	var x = GetElement(id);
	return x.innerText || x.textContent;
}

function SetLink(id, label, url) {
	var  x = GetElement(id);
	if (!x) return;
	x.innerHTML = label;
	x.href = url.replace(/^js:/, "javascript:");
	return;
}

// HTMLをAJAX読み込み
function LoadHTML(url, id, opts) {
	if (!id) id = "load";

	var q = url.indexOf("?", 0);
//		q = 0;								// prototypeでは常に 0
	if (q != -1) url += "&cache=" + (new Date()).getTime();
	var p = $(id);
	var c = opts ? opts.onCompleteEnd : null;
	new Ajax.Updater(id, url, {
		method: "get",
		onComplete: function evalResponse(req) {
			var code = getCode(req.responseText);
			if (code) {
				p.innerHTML = "";
				eval(code);
			}
			if (c) c(req);
			var to = opts["JumpTo"];
			if (to) {
//				window.location.href = "#" + to;
				var e = $(id);
				if (e) window.scrollTo(0, e.offsetTop - 100);
			}
			return;
		}
	});
	return void(0);
}

// LoadHTML()後にページ内リンク
function LAJHTML(url, id, opts) {
	if (!opts) opts = {};
	opts["JumpTo"] = id;
	return LoadHTML(url, id, opts);
}

// LoadHTMLを一時的にテストしたいとき用 ("+"返すやつは処理できない)
function loadHTML(url) {
	window.open(url);
	return;
}

// CGIをAJAX読み込み
function LoadForm(formid, id) {
	if (formid == null) formid = "form";
	if (id == null) id = "load";
	var form = $(formid);
	new Ajax.Updater(id, form.action, {
		method		: form.method,
		parameters	: Form.serialize(form),
		onComplete	: function evalResponse(req) {
			var code = getCode(req.responseText);
			if (code) {
				p.innerHTML = "";
				eval(code);
			}
			return;
		}
	});
	return false;	// void(0)だと IE7が submitしてしまう
}

function getCode(text) {
	var code = text.replace(/^\+/, "");
	if (code == text) {				// デバッグ情報を削除
		code = text.replace(/^(.|\n)+<hr \/>\n\+/, "");
	}
	return (code == text) ? null : code;
}

// フォーム
function UpdateTextCount(name, max) {
	// UPDATE_TEXT_COUNTの[N]を置換する
	var r = max - GetElement(name).value.length;
	var c, h;
	if (r >= 0) {
		c = "xcntok";
		h = UPDATE_TEXT_COUNT_OK.replace("[N]", r);
	}
	else {
		c = "xcntng";
		h = UPDATE_TEXT_COUNT_NG.replace("[N]", -r);
	}
	var m = GetElement("n_" + name);
	m.className = c;
	m.innerHTML = h;
	return;
}

function ClearOption(s) {
	s.length = 0;
	return;
}

function AddOption(s, value, label, selected) {
	var i = s.length;
	var o = new Option(label, value);
	o.selected = selected;
	s.options[i] = o;
	return;
}

// FLASH
function IsFlashEnabled() {
	var b = navigator.appName;
	var v = navigator.appVersion;
		v = v.substring(0,1);
	var m = navigator.mimeTypes;
	if (b =="Netscape" && v >= "3"){
		for (var i = 0; i < m.length; i++) {
			if (m[i].type == "application/x-shockwave-flash") {
				break;
			}
		}
		return false;
	}
	return true;
}

function CopyrightYear(f) {
	var y = (new Date()).getYear();
	if (y < 1900) y += 1900;
	var t = (y == f) ? "" : "-" + y;
	document.open();
	document.write(f + t);
	document.close();
	return;
}


// デバッグ
//	max =null, null_to =null
function dumpHash(x, max, null_too) {
	var m = "<pre>";
	for (var key in x) {
		var val = x[key];
		if (null_too || val) {
			val = "" + val;
			if (max && (val.length > max)) {
				val = val.substr(0, max);
			}
			m += key + ": " + val + "\n";
		}
	}
	SetHTML("dummy", m + "</pre>");
	PopupDiv("dummy", "dump hash");
	return;
}
// end of default.js

/*
//	try {
//		if (opts.selected != null)
//			LinkSelected("li", opts.selected);
//	}
//	catch (e) { ;}

function Selected(no) {
	return { "selected": no };
}

function LinkSelected(prefix, on) {
	for (var i = 1; ; ++i) {
		var obj = $(prefix + i);
		if (obj == null) break;
		obj.className = (i == on) ? "select" : "";
	}
	return;
}

function LoadIframe(url, id, opts) {
	if (id == null) id = "iframe";
	if (opts.selected != null) LinkSelected("li", opts.selected);
	var obj = $(id);
	if (obj != null) obj.src = url;
	return;
}


function AjaxAndReload(url) {
	var p = $("dummy");
//	p.style.display = "none";
	new Ajax.Updater("dummy", url);
	return void(0);
}



// Popup
function PopupHTML(url, id) {
	if (id == null) {
		id = "popup";
	}
	if (PopupID != null) {
		var p = $(PopupID);
		p.style.display = "none";
	}
	PopupID = id;
	var p = $(id);
//	p.innerText = "now loading...";
	p.style.display = "block";
	p.style.position = "absolute";
	new Ajax.Updater(id, url, {
		method: "get" ,
		onComplete	: function evalResponse(req) {
			var x = req.responseText;
			if (x.substring(0, 1) == "+") {
				p.innerHTML = "";
				eval(x.substring(1));
			}
			return;
		}
	});
	return void(0);
}

function PopupForm(args) {
	if (args == null) { args = {}; }
	if (args.form	== null) { args.form   = "form" ; }
	if (args.popup	== null) { args.popup  = "popup"; }
	if (args.script	== null) { args.script =  false ; }
	if (PopupID		!= null) { $(PopupID).style.display = "none"; }
	var p = $(PopupID = args.popup);
	var f = $(args.form);
	p.style.display  = "block"	 ;
	p.style.position = "absolute";
	new Ajax.Updater(args.popup, f.action, {
		method		: f.method,
		parameters	: Form.serialize(args.form),
		onComplete	: function evalResponse(req) {
			var x = req.responseText;
			if (x.substring(0, 1) == "+") {
				p.innerHTML = "";
				eval(x.substring(1));
			}
			return;
		}
	});
	return void(0);
}


function PopupForm2(formname) {
	PopupForm({ form: formname });
	return void(0);
}

*/
