// This module on PenguinBlog3.
// Created by Orikasa,Tomohiro.
var pb_category = {
	// Categories
	listFlag : false,
	dateFlag : false,
	countFlag : false,
	hideFlag : false,
	exclude : "",
	nowLevel : 0,
	setCategories : function (id,listFlag,dateFlag,countFlag,hideFlag,exclude) {
		pb_category.listFlag  = eval(listFlag);
		pb_category.dateFlag  = eval(dateFlag);
		pb_category.countFlag = eval(countFlag);
		pb_category.hideFlag  = eval(hideFlag);
		pb_category.exclude   = exclude;
		node = document.getElementById(id);
		if (!node) throw id+" isn't found";

		if (isHTTPreq) {
			var url = "/categories.json";
			pb_category.loadCategories(node,url);
		} else {
			node.innerHTML = ''; // oldOpera, MacIE5...
		}
	},
	loadCategories : function(node,url) {
		var xml = new JKL.ParseXML.JSON(url);
		var func = function (data) {
			pb_category.makeCategories(node,data);
		}
		xml.async(func);
		xml.parse();
	},
	makeCategories : function(node,data) {
		var html = '';
		var count = 0;
		var excludeIds = {};
		if (pb_category.exclude!=undefined && pb_category.exclude!="") {
			excludeIds = pb_category.exclude.split(',');
		}
		var func = function (row) {
			if (row==undefined) return;
			if (pb_category.nowLevel<row['level']) {
				html += '<ul>';
			} else if (pb_category.nowLevel>row['level']) {
				html += '</ul>'+"\n";
			}
			if (row['count']>0 || (pb_category.hideFlag!=true && pb_category.hideFlag!=1)) {
				var excludeFlag = false;
				for(var i=0;i<excludeIds.length;i++) {
					if (excludeIds[i]==row['id']) {
						excludeFlag = true;
						break;
					}
				}
				if (!excludeFlag) {
					if (pb_category.listFlag==true || pb_category.listFlag==1) {
						html += '<li>';
					}
//					html += '<a href="/"'+row['id']+'">';
					html += '<a href="#" onclick="pb_category.relocation(\''+row['id']+'\');return false;">';
					html += row['name'];
					if (pb_category.countFlag==true || pb_category.countFlag==1) {
						html += '('+row['count']+')';
					}
					html += '</a>';
//					if (pb_category.listFlag==true || pb_category.listFlag==1) {
//						html += '</li>';
//					}
					html += "\n";
				}
			}
			pb_category.nowLevel = row['level'];
		}
		data['category'].each(func);
		if (pb_category.nowLevel!=0) {
			while(pb_category.nowLevel==0) {
				html += '</ul>'+"\n";
				pb_category.nowLevel--;
			}
		}
		node.innerHTML = html;
	},
	relocation : function(id) {
		if (typeof(pb_posts)=='undefined') {
			window.location.href = indexurl+'?d=category_'+id+'.json';
		} else {
			pb_posts.reloadList('/category_'+id+'.json');
		}
	}
}

