/* mqtech.jp */
/* Copyright(C) 2010 MQTech. All Rights Reserved. */

/** tree control */
function treeControl(obj) {
try {
	var trg = obj.parentNode.parentNode.lastChild;
	switch (obj.innerHTML) {
		case '-':
			trg.style.display = 'none';
			obj.innerHTML = '+';
			break;
		case '+':
			trg.style.display = 'block';
			obj.innerHTML = '-';
	}
} catch (e) {}}

var treebutton = '-';
function treeButton(val) { try { document.write('\u003ca href="javascript:void(0)" tabindex="-1" class="noMarker tree small2" onclick="try{treeControl(this)}catch(e){}return false"\u003e' + ((val)? val : treebutton) + '\u003c/a\u003e '); } catch (e) {}}

/** add bookmark on browser */
function addBookmark(title, url) { try { if (document.all) window.external.AddFavorite(url, title); } catch (e) {}}

/** command button link */
function commandButton(command, param, title, flg) {
try {
	if (flg) document.write('\u003cli\u003e');
	document.write ('\u003ca href="javascript:void(0)" title="' + title + '" class="noMaker" onclick="try{setCookie(\'' + command + '\',\'' + param + '\')}catch(e){}return false"\u003e' + title + '\u003c/a\u003e');
	if (flg) document.write('\u003c/li\u003e');
} catch (e) {}}

/** set setting on server */
function setCookie(command, param) {
try {
	var url = baseURL + 'system.php?m=' + encodeURIComponent(command);
	if (param) url += '&p=' + encodeURIComponent(param);
	url += '&s=' + (new Date()).getMilliseconds();
	setCookieHTTP(url);
} catch (e) {}}

function setCookieHTTP(url) {
try {
	var http_obj = createXMLHTTP();
	if (http_obj) {
		http_obj.onreadystatechange = function () {
			if (http_obj.readyState == 4 && http_obj.status == 200) {
				ret = http_obj.responseText;
				if (ret == 'T') location.reload();
				else if (ret == 'C') { if (confirm('\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f\u3002\n\n\u8a2d\u5b9a\u3057\u305f\u5185\u5bb9\u3092\u753b\u9762\u306b\u53cd\u6620\u3059\u308b\u306b\u306f\u518d\u8aad\u307f\u8fbc\u307f\u3092\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\u4eca\u3059\u3050\u518d\u8aad\u307f\u8fbc\u307f\u3092\u3057\u307e\u3059\u304b?')) location.reload(); }
				else alert('\u8a2d\u5b9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002');
			}
		};
		http_obj.open('get', url, true);
		http_obj.send(null);
	} else {
		location.href = url + '&r=reload';
	}
} catch (e) {}}

/** print mailto */
function printEv(evalcode_b64) { try { document.write(base64decode(evalcode_b64)); } catch (e) {}}

/** request xml connect */
function createXMLHTTP() {
try {
	return new XMLHttpRequest();
} catch (e) {
	if (window.ActiveXObject) {
		try {
			return new ActiveXObject('MSXML2.XMLHTTP');
		} catch (e) {
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
	}
	return null;
}}

/** base64 encode & decode */
var base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var base64DecodeChars = new Array(
	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
	-1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
	-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
function base64encode(str) {
	var c1, c2, c3, i = 0, len = str.length, out = '';
	while (i < len) {
		c1 = str.charCodeAt(i++) & 0xff;
		if (i == len) {
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt((c1 & 0x3) << 4);
			out += '==';
			break;
		}
		c2 = str.charCodeAt(i++);
		if (i == len) {
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
			out += base64EncodeChars.charAt((c2 & 0xF) << 2);
			out += '=';
			break;
		}
		c3 = str.charCodeAt(i++);
		out += base64EncodeChars.charAt(c1 >> 2);
		out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
		out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
		out += base64EncodeChars.charAt(c3 & 0x3F);
	}
	return out;
}

function base64decode(str) {
	var c1, c2, c3, c4, i = 0, len = str.length, out = '';
	while (i < len) {
		do { c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; } while (i < len && c1 == -1);
		if (c1 == -1) break;
		do { c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; } while (i < len && c2 == -1);
		if (c2 == -1) break;
		out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
		do {
			c3 = str.charCodeAt(i++) & 0xff;
			if (c3 == 61) return out;
			c3 = base64DecodeChars[c3];
		} while (i < len && c3 == -1);
		if (c3 == -1) break;
		out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
		do {
			c4 = str.charCodeAt(i++) & 0xff;
			if (c4 == 61) return out;
			c4 = base64DecodeChars[c4];
		} while (i < len && c4 == -1);
		if (c4 == -1) break;
		out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
	}
	return out;
}
