
// require() 用キャッシュ格納場所
var cache = new Object();

// FSMenu オブジェクト
if(typeof FSMenu != 'undefined') {
	var listMenu = new FSMenu('listMenu', true, 'display', 'block', 'none');
}

// onload

function chippie_init() {

	// 指定したタグの要素一覧を取得
	var tag = "a";
	if(document.all) { objlist = document.all.tags(tag); }
	else if(document.getElementsByTagName) { objlist = document.getElementsByTagName(tag); }
	else { return; }
	// 指定したクラスの要素にイベントを付与
	var cls = "external";
	for(var i = 0; i < objlist.length; i++) {
		if(objlist[i].className.indexOf(cls) >= 0) { objlist[i].onclick = _popup; }
	}

	// FSMenu 有効化
	if(document.getElementById("fsmenu") && typeof FSMenu != 'undefined') {
		listMenu.animations[listMenu.animations.length] = FSMenu.animFade;
		listMenu.animations[listMenu.animations.length] = FSMenu.animSwipeDown;
		listMenu.activateMenu("fsmenu");
	}

}

// 汎用

function couple_input(chk, form, name) {
	document.forms[form].elements[name].disabled = !chk;
}

function _popup(opt) {
	return popup(this, opt);
}
function popup(o, opt) {
	window.open(o.getAttribute("href"), opt);
	return false;
}

function show(tag, id) {
	e = document.getElementById(id);
	if(e) {
		try { e.innerHTML = tag; }
		catch(err) { e.innerHTML = "エラー:<br />"+err+"<hr />※プレビュー時にエラーが起きたようです。<br />HTMLの構文が正しいかチェックしてみてください。"; return false; }
	} else { return false; }
	return true;
}

function showpg(addr, id) {
	e = document.getElementById(id);
	return send(addr, e);
}

function sendform(addr, id, f) {
	e = document.getElementById(id);
	var query = new Array();
	for(var i = 0; i < f.elements.length; i++) {
		if(f.elements[i].type == "radio" && f.elements[i].checked
		|| f.elements[i].type == "checkbox" && f.elements[i].checked
		|| f.elements[i].type != "radio" && f.elements[i].type != "checkbox") {
			query[query.length] = f.elements[i].name + "=" + encodeURIComponent(f.elements[i].value);
		}
	}
	return send(addr, e, query.join("&"));
}

function request() {
	try { return new ActiveXObject("Msxml2.XMLHTTP"); }
	catch(e) {
		try { return new ActiveXObject("Microsoft.XMLHTTP"); }
		catch(e) {
			if(typeof XMLHttpRequest != 'undefined') return new XMLHttpRequest();
		}
	}
	return null;
}

function send(addr, o, query, func) {
	var xmlhttp = request();
	// 読み込み状態が変わったとき呼ばれる関数を指定
	xmlhttp.onreadystatechange = function() {
		if(typeof o.innerHTML!='undefined') {
			// 読み込み終わったら処理を行う
			/*
			if(xmlhttp.readyState == 1) {
				o.innerHTML = "読み込み中...";
			}
			*/
			if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				o.innerHTML = xmlhttp.responseText;
			}
		}
	}
	if(typeof query != 'undefined') {
		xmlhttp.open('POST', addr);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		xmlhttp.send(query);
	} else {
		xmlhttp.open('GET', addr);
		if(addr.indexOf("?") >= 0) {
			xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		}
		xmlhttp.send(null);
	}
	return true;
}

function load(addr) {
	if(typeof cache[addr] == 'undefined') {
		var xmlhttp = request();
		xmlhttp.open("GET", addr, false);
		xmlhttp.send(null);
		cache[addr] = xmlhttp.responseText;
	}
	return cache[addr];
}

function json(addr) { return eval(load(addr)); }

function option_add(text, val, e) {
	var len = e.length;
	e.options[len] = new Option(text, val);
	// if(navigator.appName.substring(0, 1) == "N") history.go(0);
}

function option_replace(val_rem, text, val, e) {
	var len = e.length;
	var dif = 0;
	for(var i = 0; i < e.length; i++) {
		if(e.options[i].value == val_rem) dif++;
		e.options[i].value = e.options[i+dif].value;
		e.options[i].text = e.options[i+dif].text;
	}
	e.options[len] = new Option(text, val);
	if(navigator.appName.substring(0, 1) == "N") history.go(0);
}

function clip_copiable() { return clipboardData; }
function clip_copy(s) {
	if(obj = clip_copiable()) { obj.setData("Text", s); }
}

function replace_all(from, to, s) {
	while(true) {
		var dummy = s;
		s = dummy.replace(from, to);
		if(s == dummy) break;
	}
	return s;
}
function htmlconvert(s) {
	s = replace_all('\n', '[brx /]', s);
	s = replace_all('>[brx /]', '>\n', s);	// 前後にタグがある場合戻す
	s = replace_all('[brx /]<', '\n<', s);	// 〃
	s = replace_all('[brx /]', '<br />', s);
	return s;
}

