addEvent(win, "load", function() {
	profilePopup.init();
	openMenu.init();
});

var profilePopup = {
	parentNodeId:	"description",
	winName:		"profile",

	init:	function() {
		var parentNode = doc.getElementById(this.parentNodeId);
		if(parentNode) {
			var targetNode = parentNode.getElementsByTagName("a")[0];
			if(targetNode) {
				targetNode.onclick = function() {
					var newWin = win.open(this.href, profilePopup.winName, "scrollbars=yes, width=628");
					newWin.focus();
					return false;
				}
			}
		}
	}
};

var openMenu = {
	defArticleNumbers:	10,
	buttonText:			"全てのタイトルを表示する",

	parentNodeId:		"backnumber",
	buttonElementType:	"p",
	buttonClassName:	"button",

	parentNode:			"",
	categories:			"",
	articles:			"",
	buttons:			"",
	buttonsN:			0,

	init:	function() {
		this.parentNode	= doc.getElementById(this.parentNodeId);
		if(this.parentNode) {
			this.categories	= this.parentNode.getElementsByTagName("div");
			this.articles	= new Array(this.categories.length);
			this.buttons	= new Array(this.categories.length);
			for(var i = 0; i < this.categories.length; i++) {
				this.articles[i]	= this.categories[i].getElementsByTagName("li"); // 記事タイトルを配列へ格納
				if(this.articles[i].length > this.defArticleNumbers) {
					this.buttons[i]		= this.categories[i].appendChild(this.createButton()); // ボタンを追加
					this.buttonsN		+= (1 + i) * (1 + i);
				} else {
					this.buttons[i]		= "";
				}
			}
			this.setArticlesDisplay("none");
		}
	},

	open: function() {
		this.eraceButtons();
		this.setArticlesDisplay("block");
	},

	createButton: function() {
		var buttonElement	= doc.createElement(this.buttonElementType);
		buttonElement.className	= this.buttonClassName;
		buttonElement.innerHTML	= '<a href=\"javascript:void(0)\" onclick="\openMenu\.open();"\>' + this.buttonText + '<\/a>';
		return buttonElement;
	},

	eraceButtons: function() {
		switch(this.buttonsN) {
			case 5:
				this.categories[1].removeChild(this.buttons[1]);
			case 1:
				this.categories[0].removeChild(this.buttons[0]);
				break;
			case 4:
				this.categories[1].removeChild(this.buttons[1]);
			default:
				break;
		}
	},

	setArticlesDisplay: function(displayStyle) {
		for(var i = 0; i < this.categories.length; i++) {
			if (this.articles[i].length > this.defArticleNumbers) {
				for(var j = this.defArticleNumbers; j < this.articles[i].length; j++) {
					this.articles[i][j].style.display	= (displayStyle == "none")? "none": "block";
				}
			}
		}
	}
};
