var viewLevelCurrent = 0;var viewLevelUntil = 0;var curViewPos = "";var colValsArray;var arrCheckAction = new Array();var numRows;var dataSetCount = 15;var ajaxReq;var currentResortColumn = new Array(-1,"", "");var currentSearchPosition = 1;var contentID = "";var innerDB = "";var innerView = "";var restrictToCategory = "";var errorResponse = "";function getCategoryItems(selectionType, start, expand, resortAscending, resortDescending, dataSetCounter) {	//	The following line is for IE-Caching-Bug only	try { document.execCommand("BackgroundImageCache", false, true); } catch(err) {};	//	End of special instruction for IE-Caching-Bug	var urlStr = "?ReadViewEntries";	selectionType = (selectionType=="")?"start":selectionType;	start = (start=="")?(initialStart!=""?initialStart:""):start;	start = (start=="")?((initialExpand!="" && initialExpand!="ExpandAll")?initialExpand.split(".")[0]:"1"):start;	expand = (expand=="")?(initialExpand!=""?initialExpand:""):expand;	resortAscending = (resortAscending=="")?(initialResortAscending!=""?initialResortAscending:""):resortAscending;	resortDescending = (resortDescending=="")?(initialResortDescending!=""?initialResortDescending:""):resortDescending;	dataSetCount = (dataSetCounter=="")?dataSetCount:parseInt(dataSetCounter);	innerDB = (innerDB=="")?webDbName:innerDB;	innerView = (innerView=="")?viewName:innerView;	initialExpand = "";	initialStart = "";	initialResortAscending = resortAscending;	initialResortDescending = resortDescending;	//	arrCheckAction = new Array();		switch (selectionType) {		case "start":			viewLevelCurrent = 0;			viewLevelUntil = expand.split(".").length;			curViewPos = "";			urlStr += "&Start="+start;			break;		case "startKey":			viewLevelCurrent = 0;			viewLevelUntil = expand.split(".").length;			curViewPos = "";			urlStr += "&StartKey="+start;			break;		case "restrictToCategory":			viewLevelCurrent = 0;			viewLevelUntil = 10;			curViewPos = "";			urlStr += "&RestrictToCategory="+start;			break;	}		urlStr += (resortAscending!="")?"&ResortAscending="+resortAscending:"";	urlStr += (resortDescending!="")?"&ResortDescending="+resortDescending:"";	if(selectionType!="restrictToCategory") {		if(resortAscending=="" && resortDescending=="") {			urlStr += (expand!="")?(expand=="ExpandAll"?"&ExpandAll":"&Expand="+expand):"&CollapseView";		} else {			urlStr += "&ExpandAll";		}	}		viewLevelUntil = (expand=="ExpandAll"?10:viewLevelUntil);		urlStr += "&Count="+(expand=="ExpandAll"?"1000":dataSetCount);	urlStr = encodeURI(urlStr);	//alert("/" + webDbName + "/" + viewName + urlStr);	if(ajaxReq) {		runAJAXRequest("/" + webDbName + "/" + viewName + urlStr, "writeCategoryItems");	} else {		createAJAXRequest("/" + webDbName + "/" + viewName + urlStr, "writeCategoryItems");	}}function resetView() {	getCategoryItems("", "", "", "", "", "");}function writeCategoryItems() {	var xmlData = ajaxReq.responseXML;	//alert(contentID+": \n"+ajaxReq.responseText);	var viewEntries = xmlData.getElementsByTagName("viewentries");	var numRows = parseInt(viewEntries[0].getAttribute("toplevelentries"));	var viewRows = xmlData.getElementsByTagName("viewentry");	var viewContent = document.getElementById("viewBody"+contentID);	viewContent.innerHTML="";	if(viewRows.length>0) {		formatViewContent(viewRows, viewContent, "replace");		expandSelectedRow(viewRows);	} else {		if(errorResponse=="") { errorResponse = noViewEntries; }		if(errorResponse=="") { errorResponse = "- empty result -"; }		thisRowHTML = "<div style=\"clear: both; margin: 10px; width: 385px; border-left: 2px solid #182b45; padding-left: 20px; background-image:url('/" + webDbName + "/pics/common/info.gif'); background-repeat: no-repeat; background-position: 0px 0px;\">" + errorResponse + "</div>";		viewContent.innerHTML = thisRowHTML;	}	contentID = "";	innerDB = "";	innerView = "";	restrictToCategory = "";	errorResponse = "";}function retrieveNextLevelDownChoices(){	var parentDiv;	var childDiv;	var xmlData = ajaxReq.responseXML;	//alert(ajaxReq.responseText);	var viewRows = xmlData.getElementsByTagName("viewentry");	var numChildren = viewRows[0].getAttribute("children");	var posNum = viewRows[viewRows.length-1].getAttribute("position").split(".");	var lastRow = posNum[posNum.length-1];	positionVal = viewRows[0].getAttribute("position");	parentDiv = document.getElementById(curViewPos);	childDiv = document.getElementById(curViewPos + contentID + "Child");	childDiv.style.display = "block";	formatViewContent(viewRows, childDiv, "append");	document.getElementById(curViewPos + contentID).style.backgroundImage = "url('/" + webDbName + "/pics/tree/minus.gif')";	contentID = "";	innerDB = "";	innerView = "";	restrictToCategory = "";}function formatViewContent(viewRows, divContainer, inplaceType) {	var thisRowHTML = "";	var thisRowDescds;	var viewRowLevel;	var positionVal;	var linkVal;	var oldPositionVal = "";	var newPositionVal = "";		for(var i=0; i<viewRows.length; i++) {		positionVal = viewRows[i].getAttribute("position");		viewRowLevel = positionVal.split(".").length;		if((viewRowLevel>=viewLevelCurrent) && (viewRowLevel<=viewLevelUntil+1))  {			thisRowDescds = parseInt(viewRows[i].getAttribute("children"));			linkVal = getViewRowValues(viewRows[i]);			if(linkVal!=null) {				if (thisRowDescds > 0) {					if(document.getElementById(positionVal)==null) {						thisRowHTML = "<div id=\"" + positionVal + contentID + "\" class=\"level" + (viewRowLevel-1) + "\" ";						thisRowHTML += "onClick=\"checkLevelAction('" + ((innerDB=="")?webDbName:innerDB) +"', '" + ((innerView=="")?viewName:innerView) +"', '" + contentID + "', '" + restrictToCategory + "', '" + positionVal + "', '" + thisRowDescds + "');\" style=\"background-repeat: no-repeat; background-image:url('/" + webDbName + "/pics/tree/plus.gif')\">";						thisRowHTML += "<img src=\"/" + webDbName + "/pics/common/no.gif\" alt=\"+\" width=\"9\" height=\"9\" />";						for(r=0; r<linkVal.length; r++) {							thisRowHTML += linkVal[r];						}						thisRowHTML += "</div>";						thisRowHTML += "<div id=\"" + positionVal + contentID + "Child\" style=\"display:none;\"></div>";					}				} else {					if(document.getElementById(positionVal)==null) {						thisRowHTML = "<div id=\"" + positionVal + contentID + "\" >";						if(linkVal[0].indexOf("<table")==-1) {							thisRowHTML += "<div class=\"finalRow\"><table><tr>";						}						for(r=0; r<linkVal.length; r++) {							thisRowHTML += decodeURI(linkVal[r]);						}						if(linkVal[0].indexOf("<table")==-1) {							thisRowHTML += "</tr></table></div>";						}						thisRowHTML += "</div>";					}				}			}		}		if(positionVal.split(".").length>1) {			newPositionVal = positionVal.substring(0, positionVal.lastIndexOf("."));			var targetContainer = document.getElementById(newPositionVal + contentID + "Child");		} else {			var targetContainer = divContainer;		}		if(inplaceType=="replace") {			targetContainer.innerHTML = thisRowHTML;			inplaceType="append";		} else {			targetContainer.innerHTML += thisRowHTML;		}	}}function expandSelectedRow(viewRows) {	var positionVal;	for(var i=0; i<viewRows.length; i++) {		positionVal = viewRows[i].getAttribute("position");		if(positionVal.split(".").length>1) {			newPositionVal = positionVal.substring(0, positionVal.lastIndexOf("."));			flagAlreadyInArray=false;			for(j=0;j<arrCheckAction.length;j++) {				if(arrCheckAction[j].indexOf(newPositionVal+contentID)>=0) { flagAlreadyInArray=true; }			}			if(flagAlreadyInArray==false) { arrCheckAction.push(newPositionVal+contentID) };			var targetContainer = document.getElementById(newPositionVal+contentID+"Child")			targetContainer.style.display = "block";			document.getElementById(newPositionVal+contentID).style.backgroundImage = "url('/" + webDbName + "/pics/tree/minus.gif')";		}	}}function checkLevelAction(inDB, inView, contID, restrCat, newVal, childrenCount) {	flagInArray=false;		for(i=0; i<arrCheckAction.length; i++) {		if(arrCheckAction[i].indexOf(newVal+contID)>=0 && arrCheckAction[i].length==((newVal.length)+(contID.length))) {			flagInArray=true;			if(document.getElementById(arrCheckAction[i] + "Child").style.display == "none") {				openLevel(arrCheckAction[i]);			} else {				closeLevel(arrCheckAction[i]);			}			i = arrCheckAction.length		}	}	if (flagInArray==false) {		arrCheckAction.push(newVal+contID);		getNextLevel(inDB, inView, contID, restrCat, newVal, parseInt(childrenCount)+1);	}}function getNextLevel(inDB, inView, contID, restrCat, newVal, childrenCount) {	viewLevelCurrent = newVal.split(".").length + ((restrCat!="")?1:0);	viewLevelUntil = newVal.split(".").length + ((restrCat!="")?1:0);	curViewPos = newVal;	childDiv = document.getElementById(curViewPos + contID + "Child");		if(restrCat!="") {		var urlStr = "?ReadViewEntries&RestrictToCategory=" + restrCat + "&Start=" + newVal + "&Expand=" + newVal + "&Count=" + childrenCount;	} else {		var urlStr = "?ReadViewEntries&Start=" + newVal + "&Expand=" + newVal + "&Count=" + childrenCount;	}	//alert(urlStr);	restrictToCategory = restrCat;	contentID = contID;	innerDB = inDB;	innerView = inView;	runAJAXRequest("/" + innerDB + "/" + innerView + urlStr, "retrieveNextLevelDownChoices");}function openLevel(thisVal) {	curRowId = thisVal;	document.getElementById(curRowId).style.backgroundImage = "url('/" + webDbName + "/pics/tree/minus.gif')";	document.getElementById(curRowId + "Child").style.display = "block";}function closeLevel(thisVal) {	curRowId = thisVal;	document.getElementById(curRowId).style.backgroundImage = "url('/" + webDbName + "/pics/tree/plus.gif')";	document.getElementById(curRowId + "Child").style.display = "none";}function getViewRowValues(row) {   colValsArray = new Array();   getColumnValues(row);   return colValsArray;}function getColumnValues(rowOrCol){   var node = rowOrCol.firstChild;   while (node != null){      if ((node.nodeType == 3 || node.nodeType == 4) && node.nodeValue != "\n") {		nodeParent = node.parentNode;      	while (!(nodeParent.getAttribute("name"))) {      		nodeParent = nodeParent.parentNode;		} //nodeParent = node.parentNode.parentNode;    			colValsArray[colValsArray.length] = (node.nodeValue=="")?"-":node.nodeValue;      } else if (node.nodeType == 1) {         getColumnValues(node);      }      node = node.nextSibling;   }}
