var currentLevel;
var querySource=null;
var categoryPadding=12;
var selectedItem = null;
var categoryBox,currentApplicationName,currentView,currentCategories;
var functionOnCategoryChanged="";

function showCategoryBox(objCategoryBox, applicationName, view, categories, left, top, width, height, onCategoryChanged) { //初始化分类
	functionOnCategoryChanged = onCategoryChanged;
	categoryBox = objCategoryBox;
	currentApplicationName = applicationName;
	currentView = view;
	currentCategories = categories;
	if(categoryBox.innerHTML!="") {
		categoryBox.style.display = "";
		categoryBox.focus();
	}
	else {
		//init frame
		requestCategory(applicationName, view, "INIT", categories);
		//set position
		var style = categoryBox.style;
		style.left = left;
		style.top = top;
		style.width = width;
		style.height = height
	}
}
function requestCategory(applicationName, view, act, categories) {
	document.getElementById("frameQuery").src = document.getElementById("contextPath").value + "/platform/dialog/getcategory.do?prefix=" + applicationName + "&view=" + view + "&act=" + act +"&categories=" + escape(categories) + "&" + generateSeq();
}
function hideCategory(src) { //隐藏分类选择
	var e=document.activeElement;
	if(src.contains(e))
		src.focus();
	else
		src.style.display="none";
}
function transactCategoryResult(currentQuery) { //处理数据
	var formQuery = window.frames("frameQuery").document.forms[0];
	if(!formQuery) {
		return false;
	}
	var tables = formQuery.getElementsByTagName("TABLE");
	var dLen = tables.length;
	if(dLen==0) {
		if(formQuery.innerHTML.indexOf("RELOGIN")!=-1) {
			location.reload();
			return false;
		}
	}
	var i,j,len;
	var parentTable,table,rows;
	var htmlLeft = "<span class='treeCollapse' onclick='showSubtree(this)'></span><input style='width:3px;height:1px;border:none'><span class='tree' style='cursor:pointer' onmouseout='className=\"tree\"' onmouseover='className=\"treeHover\"' onclick='categorySelected(this)'>"
	var htmlLeaf = "<span class='treeLeaf' onclick='showSubtree(this)'></span><input style='width:3px;height:1px;border:none'><span class='tree' style='cursor:pointer' onmouseout='className=\"tree\"' onmouseover='className=\"treeHover\"' onclick='categorySelected(this)'>"
	var categoryCount=document.getElementsByName("viewPackage.categoryCount")[0].value;
	if(currentQuery=="INIT") { //显示树
		var td,rows,table;
		var categoryList = currentCategories.split(",");
		parentTable = document.createElement("table");
		parentTable.id = "ROOT";
		parentTable.border = "0";
		parentTable.cellPadding = "0";
		parentTable.cellSpacing = "0";
		categoryBox.appendChild(parentTable);
		td = parentTable.insertRow(parentTable.rows.length).insertCell(0);
		td.style.paddingTop = 3;
		td.innerHTML = (categoryCount==0 ? htmlLeft:htmlLeaf) + categoryList[0].split("|")[0] + "</span>";
		td.id = "ROOT";
		for(i=0;i<dLen;i++) {
			table = document.createElement("table");
			table.border="0";
			table.cellPadding="0";
			table.cellSpacing="0";
			td = getElement(parentTable, "td", categoryList[i].split("|")[1]);
			if(!td) {
				break;
			}
			td.appendChild(table);
			td.getElementsByTagName("span")[0].className = "treeExpand";
			parentTable = table;
			rows = tables[i].rows;
			len = rows.length;
			for(j=0; j<len; j++) {
				td = table.insertRow(table.rows.length).insertCell(0);
				td.innerHTML = (categoryCount==0 || i<categoryCount-1 ? htmlLeft : htmlLeaf) + rows[j].cells[0].innerHTML + "</span>";
				td.style.paddingLeft = categoryPadding;
				td.style.paddingTop = 3;
				td.id = rows[j].cells[0].id;
			}
		}
		var categories = document.getElementsByName("viewPackage.categories")[0].value.split(",");
		categories = categories[categories.length-1].split("|");
		td = getElement(categoryBox, "td", (categories[1] ? categories[1] : categories[0]));
		categoryBox.style.display = "";
		if(td) {
			if(td[0])td = td[0];
			selectedItem = td.getElementsByTagName("span")[1];
			selectedItem.style.borderColor = "#999999";
			td.focus();
		}
		categoryBox.focus();
	}
	else if(currentQuery=="GETCATEGORY") { //显示子树
		table=querySource;
		if(dLen==0) {
			td=table.offsetParent;
			td.removeChild(table);
			td.getElementsByTagName("span")[0].className="treeLeaf";
		}
		else {
			rows=tables[0].rows;
			len=rows.length;
			table.deleteRow(0);
			for(j=0;j<len;j++) {
				td = table.insertRow(table.rows.length).insertCell(0);
				td.style.paddingLeft=categoryPadding;
				td.style.paddingTop=3;
				td.innerHTML=(categoryCount==0 || currentLevel<categoryCount-1 ? htmlLeft:htmlLeaf) + rows[j].cells[0].innerHTML + "</span>";
				td.id=rows[j].cells[0].id;
			}
		}
	}
	querySource=null;
}
function showLoding() { //显示正在加载
	var td=document.getElementById("tdTemp");
	if(!td)return;
	td.style.paddingLeft=categoryPadding;
	td.style.paddingTop=3;
	td.className="tree";
	td.innerHTML="<span align='middle' class='treeLeaf'></span><input style='width:3px;height:1px;border:none'>正在加载...";
	td.style.display='';
}
function showSubtree(src) { //显示子树
	var td = src.parentNode;
	var tables=td.getElementsByTagName("table");
	switch(src.className) {
	case "treeLeaf":
		return false;
	case "treeCollapse":
		if(tables.length>0) {
			src.className="treeExpand";
			tables[0].style.display="";
		}
		else {
			if(querySource!=null)return;
			src.className="treeExpand";
			var table = document.createElement("table");
			table.id=td.id;
			table.border="0";
			table.cellPadding="0";
			table.cellSpacing="0";
			td.appendChild(table);
			var tdTemp=table.insertRow(table.rows.length).insertCell(0);
			tdTemp.style.display="none";
			tdTemp.id="tdTemp";
			querySource=table;
			window.setTimeout("showLoding();",500);
			//请求数据
			var categories="";
			for(currentLevel=1;;currentLevel++) {
				categories = td.getElementsByTagName("span")[1].innerHTML + "|" + td.id + (categories=="" ? "":"," + categories);
				if(td.id=="ROOT")break;
				td=td.offsetParent.offsetParent;
			}
			requestCategory(currentApplicationName, currentView, "GETCATEGORY", categories);
		}
		break;
	default:
		src.className="treeCollapse";
		if(tables.length>0)tables[0].style.display="none";
	}
}
function categorySelected(src) { //选中分类
	if(selectedItem!=null) {
		selectedItem.style.borderColor="";
	}
	selectedItem=src;
	selectedItem.style.borderColor="#999999";
	var categories="";
	var td=src.offsetParent;
	for(;;) {
		categories=td.getElementsByTagName("span")[1].innerHTML + "|" + td.id + (categories=="" ? "":"," + categories);
		if(td.id=="ROOT")break;
		td=td.offsetParent.offsetParent;
	}
	var ret;
	eval("ret=" + functionOnCategoryChanged + "(categories);");
	if(ret)document.getElementById("divSelect").style.display="none";
}