﻿// 折りたたみ式のサイドバー

// 折りたたまないアイテムの見出し
var fold_not = ["VISITER","SOUL'd OUT","ココログからのお知らせ","カテゴリー"];

////////////////////////////////////////////////////////////////////

var fold_init_count = 0;
fold_hidelist();
fold_init();

var fold_obj = null;

function fold_init() {
	if(! fold_init_ok()) return;
	
	var h2s = document.getElementsByTagName("H2");
	var i;
	for(i = 0; i < h2s.length; i++) {
		if(fold_head_ok(h2s[i])) {
			var list = fold_findlist(h2s[i]);
			if(list) fold_setlist(h2s[i], list);
		}
	}
	
	var captions = document.getElementsByTagName("CAPTION");
	for(i = 0; i < captions.length; i++) {
		if(fold_caption_ok(captions[i])) {
			var tbody = fold_findtbody(captions[i])
			if(tbody) fold_settbody(captions[i], tbody);
		}
	}
	
	var divs = document.getElementsByTagName("DIV");
	for(i = 0; i < divs.length; i++) {
		// livedoor
		if(divs[i].className == "sidetitle" ||
			divs[i].className == "calendarhead") {
			var list = fold_findlist_livedoor(divs[i]);
			if(list) fold_setlist(divs[i], list);
		}
	}
	
	var tds = document.getElementsByTagName("TD");
	for(i = 0; i < tds.length; i++) {
		// yaplog
		if(tds[i].className == "side_title") {
			var table = fold_findlist_yaplog(tds[i]);
			if(table) fold_setlist_yaplog(tds[i], table);
		}
	}
}

function fold_head_ok(head) {
	
	var pa = head.parentNode;
	while(pa) {
		if(pa.tagName == "BODY") break;
		if(pa.tagName == "DIV") {
			if(pa.className == "sidebar") return true;
		}
		pa = pa.parentNode;
	}
	
	return false;
}

function fold_caption_ok(head) {
	var table = head.parentNode;
	var div = table.parentNode;
	
	if(div.tagName == "DIV" && div.id == "calendar")
		return true;
	
	return false;
}

function fold_findlist(head) {
	var elem = head.nextSibling;
	while(elem) {
		if(elem.nodeType == 1) {
			if(elem.tagName == "UL") return elem;
			else if(elem.tagName == "DIV") {
				if(elem.id == "calendar" || elem.id == "photo") return elem;
				else if(elem.className == "side") return elem;
				var childs = elem.childNodes;
				var i;
				for(i = 0; i < childs.length; i++) {
					if(childs[i].nodeType == 1 && 
					childs[i].tagName == "UL") return childs[i];
				}
			}
		}
		elem = elem.nextSibling;
	}
	return null;
}

function fold_findtbody(caption) {
	var elem = caption.nextSibling;
	while(elem) {
		if(elem.nodeType == 1 && elem.tagName == "TBODY")
			return elem;
		elem = elem.nextSibling;
	}
	return null;
}

function fold_findlist_livedoor(head) {
	var elem = head.nextSibling;
	while(elem) {
		if(elem.nodeType == 1) {
			if(elem.tagName == "DIV") {
				if(elem.className == "side") return elem;
			}
			else if(elem.tagName == "TABLE") {
				if(elem.className == "calendartable") return elem;
			}
		}
		elem = elem.nextSibling;
	}
	return null;
}

function fold_findlist_yaplog(td) {
	var table = null;
	var pa = td.parentNode;
	while(pa) {
		if(pa.tagName == "TABLE") {
			table = pa; break;
		}
		pa = pa.parentNode;
	}
	if(!table) return null;
	
	var elem = table;
	var i = 0;
	while(elem && i < 2) {
		elem = elem.nextSibling;
		if(elem.nodeType == 1) i++;
	}
	
	if(elem && elem.tagName == "TABLE") {
		return elem;
	}
	
	return null;
}

function fold_setlist(head, list) {
	head.style.cursor = "pointer";
	head.mylist = list;
	head.onclick = function () {
		var list = this.mylist;
		if(this.foldon) {
			list.style.display = "block";
			this.style.marginBottom = "0";
		}
		else {
			list.style.display = "none";
			this.style.marginBottom = "10px";
		}
		this.foldon ^= 1;
	};
	head.foldon = 0;
	if(fold_isfold(head)) {
		head.onclick();
	}
}

function fold_setlist_yaplog(td, table) {
	td.style.cursor = "pointer";
	td.mytable = table;
	
	var patd = table.parentNode;
	if(patd.tagName == "TD" && patd.className == "side")
		td.mypa = patd;
	
	td.onclick = function () {
		if(td.foldon) {
			this.mytable.style.display = "";
			if(this.mypa)
				this.mypa.style.paddingBottom = "10px";
		}
		else {
			this.mytable.style.display = "none";
			if(this.mypa)
				this.mypa.style.paddingBottom = "0";
		}
		this.foldon ^= 1;
	};
	
	td.foldon = 0;
	if(fold_isfold(td)) {
		td.onclick();
	}
}

function fold_settbody(caption, tbody) {
	
	var div = caption.parentNode.parentNode;
	if(div.tagName == "DIV" && div.id == "calendar") {
		caption.parentdiv = div;
	}
	
	caption.style.cursor = "pointer";
	caption.style.whiteSpace = "nowrap";
	caption.tbody = tbody;
	
	caption.onclick = function () {
		if(this.parentdiv) {
			if(this.foldon)
				this.parentdiv.style.marginBottom = "30px";
			else
				this.parentdiv.style.marginBottom = "10px";
		}
		
		if(this.foldon)
			this.tbody.style.display = "";
		else
			this.tbody.style.display = "none";
		
		this.foldon ^= 1;
	}
	
	caption.foldon = 0;
	if(fold_isfold(caption)) {
		caption.onclick();
	}
}

function fold_isfold(obj) {
	var i;
	for(i = 0; i < fold_not.length; i++) {
		if(!fold_not[i]) continue;
		var re = new RegExp(fold_not[i], "i");
		if(obj.innerHTML.search(re) >= 0) return false;
	}
	return true;
}

//////////////////////////////////////////////////////////////////////////

function fold_init_ok() {
	if(!document.getElementById) return false;
	
	if(document.readyState) {
		if(document.getElementById("footer") ||
			document.readyState == "loaded" || 
			document.readyState == "complete")
			return true;
		else {
			setTimeout("fold_init();", 500);
			return false;
		}
	}
	else {
		if(document.getElementById("footer"))
			return true;
		else {
			if(fold_init_count < 3)
				setTimeout("fold_init();", 500);
			fold_init_count++;
			return false;
		}
	}
}

//////////////////////////////////////////////////////////////////////////

function fold_hidelist() {
	if(!document.getElementById) return;
	if(window.imp_hidelist) return;
	window.imp_hidelist = 1;
	document.write("<div id='imp_divhidelist'></div>");
	setTimeout("fold_hidelist_timer()", 500);
}

function fold_hidelist_timer() {
	var div = document.getElementById("imp_divhidelist");
	if(!div) {
		setTimeout("fold_hidelist_timer()", 500); return;
	}
	var pa = div.parentNode;
	while(pa) {
		if(pa.tagName == "DIV" && pa.className == "list module") break;
		if(pa.tagName == "DIV" && pa.className == "side") break;
		pa = pa.parentNode;
	}
	if(!pa) return;
	
	if(pa.className == "list module")
		pa.style.display = "none";
	else if(pa.className == "side") {
		pa.style.display = "none";
		var prev = pa.previousSibling;
		while(prev) {
			if(prev.nodeType == "1" && prev.tagName == "DIV") {
				prev.style.display = "none";
				break;
			}
			prev = prev.previousSibling;
		}
	}
}
