var MenuManager = {
	initialize : function(stats) {
		for (var i = 0; i < stats.length; ++i) {
			var stat = stats[i].split('=');
			var elem = this.getElement(stat[0]);
			if (elem) {
				if (stat[1] == 'open') {
					elem.style.display = '';
					MenuManager.changeIcon(elem, true);
				}
			}
		}
	},

	getElement : function(id) {
		if (document.getElementById) {
			return document.getElementById(id);
		} else if (document.all) {
			return document.all[id];
		} else {
			return null;
		}
	},

	toggle : function(ids) {
		var menu = [];

		// 複数のメニューを開閉する場合、一個でも
		// 開いているメニューがあれば現在の状態をオープン状態にする
		var isopen = false;

		// 複数のメニューを開閉する場合、一個でも
		// 閉じているメニューがあれば現在の状態をクローズ状態にする
	//	var isopen = true;

		for (var i = 0; i < ids.length; ++i) {
			var elem = this.getElement(ids[i]);

			// 複数のメニューを開閉する場合、一個でも
			// 開いているメニューがあれば現在の状態をオープン状態にする
			isopen |= (elem.style.display == '');

			// 複数のメニューを開閉する場合、一個でも
			// 閉じているメニューがあれば現在の状態をクローズ状態にする
//			isopen &= (elem.style.display == '');

			menu.push(elem);
		}

		// 現在のメニューの状態がオープンなら全てを閉じ、
		// クローズなら全てを開く
		for (var i = 0; i < menu.length; ++i) {
			var e = menu[i];
			e.style.display = isopen ? 'none' : '';
			this.changeIcon(e, !isopen);
			CookieManager.setValue(e.id, isopen ? 'close' : 'open');
		}
	},

	changeIcon : function(elem, opened) {
		var e = elem;
		var h1 = null;
		for (var i = 0; i < 10; ++i) {
			h1 = e.previousSibling;
			if (h1 == null) {
				return;
			}
			if (h1.nodeName.toLowerCase() == 'h1') {
				break;
			}
			e = h1;
		}

		var cn = h1.className;
		var nodes = h1.getElementsByTagName('img');
		if (nodes.length > 0) {
			var img = nodes[0];
			if (opened) {
				img.src = 'images/' + cn + '_open.png';
			} else {
				img.src = 'images/' + cn + '_close.png';
			}
		}
	}
};

var CookieManager = {
	//クッキーから折りたたみ状態を読み込み設定する
	initialize : function() {
		var val = document.cookie.split(';');

		var stats = [];
		for (var i = 0; i < val.length; i++) {
			var c = val[i];
			while (c.charAt(0) == ' ') {
				c = c.substring(1);
			}
			if (c.indexOf('=') != -1) {
				stats.push(c);
			}
		}

		MenuManager.initialize(stats);
	},

	//クッキーに折りたたみ状態を保持する
	setValue : function(id, stat) {
		document.cookie = id + "=" + stat + ";";
	}
};

if (window.addEventListener) {
	window.addEventListener("load", CookieManager.initialize, true);
} else if (window.attachEvent) {
	window.attachEvent("onload", CookieManager.initialize);
}
