<!-- 
/** */
var objectRefIDReplaceToken = "OBJECT_REF_REPLACE_TOKEN";

/** */
var pathInsertID = "insert path here id 564A8456E9E84ea3AB7C18FEF54760E4";
/** */
var nameInsertID = "insert name here id 574A8456E9E84ea3AB7C18FEF54760E4";
/** */
var displayNameInsertID = "insert displayname here id 584A8456E9E84ea3AB7C18FEF54760E4";
/** */
var targetInsertID = "insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4";
/** */
var existingTargetExcludeSelect = "insert existing target exclude select id 354A8234E9E84ae3AB7C18FEF54084E5";

/** */
var objectMapSkeleton =  "<OBJECT_MAP PATH=\"" + pathInsertID + "\" NAME=\"" + nameInsertID + "\" DISLAY_NAME_ENCODING=\"Base64\" DISLAY_NAME=\"" + displayNameInsertID + "\">" +
							"<ICON PATH=\"\" NAME=\"\"/>" +
							"<ACL/>" +
							"<META_DATA/>" +
							"<OBJECT_REFS/>" +
						 "</OBJECT_MAP>";

/** */
var replaceObjectRef =  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + 
                                "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" +
                                "<xsl:output method=\"xml\" version=\"1.0\" encoding=\"UTF-8\" indent=\"yes\"/>" +
                                        "<xsl:template match=\"/\">" +
                                            "<xsl:element name=\"OBJECT_MAP\">" +
                                                "<xsl:copy-of select=\"/OBJECT_MAP/@*\"></xsl:copy-of>" +
                                                "<xsl:copy-of select=\"/OBJECT_MAP/ACL\"></xsl:copy-of>" +
                                                "<xsl:copy-of select=\"/OBJECT_MAP/META_DATA\"></xsl:copy-of>" +
                                                "<xsl:element name=\"OBJECT_REFS\">" +
                                                                                                    
													"<xsl:for-each select=\"/OBJECT_MAP/OBJECT_REFS/*\">" +                
														"<xsl:choose>" +
															"<xsl:when test=\"" + existingTargetExcludeSelect + "\">" +
															"</xsl:when>" +
															"<xsl:otherwise>" +
																"<xsl:copy-of select=\".\"></xsl:copy-of>" +
															"</xsl:otherwise>" +
														"</xsl:choose>" +
													"</xsl:for-each>" +
													
														targetInsertID +
													                                                
                                                "</xsl:element>" +
                                            "</xsl:element>" +
                                        "</xsl:template>" +
                                "</xsl:stylesheet>";

/** */
var singletonObjectRef =  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + 
                                "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" +
                                "<xsl:output method=\"xml\" version=\"1.0\" encoding=\"UTF-8\" indent=\"yes\"/>" +
                                        "<xsl:template match=\"/\">" +
                                            "<xsl:element name=\"OBJECT_MAP\">" +
                                                "<xsl:copy-of select=\"/OBJECT_MAP/@*\"></xsl:copy-of>" +
                                                "<xsl:copy-of select=\"/OBJECT_MAP/ACL\"></xsl:copy-of>" +
                                                "<xsl:copy-of select=\"/OBJECT_MAP/META_DATA\"></xsl:copy-of>" +
                                                "<xsl:element name=\"OBJECT_REFS\">" +
                                                    
													targetInsertID +
													                                                
                                                "</xsl:element>" +
                                            "</xsl:element>" +
                                        "</xsl:template>" +
                                "</xsl:stylesheet>";

/**
 *
 */
function createContainer(apath,aname, adname,anid) {
	//
	//
	var retValue = -1;
	//
	//
	
	var timeNow = new Date();
	var timeNowTech = timeNow.getTime();
	if(!aname){
		aname=timeNowTech+ ".xml";
	}
	if(!adname){
		adname="" + timeNow.getFullYear() + "/" + (timeNow.getMonth()+1) + "/" + timeNow.getDate() + " - " + timeNow.getHours() + ":" + timeNow.getMinutes() + ":" + timeNow.getSeconds();
	}
	if(!anid){
		anid=timeNowTech;
	}
	if(!apath){
		apath="user_containers/" + aname ;
	}
	//
	//
	var newObjectMapDB = objectMapSkeleton.replace(/insert path here id 564A8456E9E84ea3AB7C18FEF54760E4/, apath);
	newObjectMapDB = newObjectMapDB.replace(/insert name here id 574A8456E9E84ea3AB7C18FEF54760E4/, "" + aname);
	newObjectMapDB = newObjectMapDB.replace(/insert displayname here id 584A8456E9E84ea3AB7C18FEF54760E4/, "" + encode64(adname));
	//
	//
	if(createDatabase(newObjectMapDB, apath, aname )==0) {
		//
		//
		var newMapEntry = "<xsl:element name=\"OBJECT_REF\">" +
							"<xsl:attribute name=\"PATH\">"+apath+"</xsl:attribute>" + 
							"<xsl:attribute name=\"NAME\">" + aname + "</xsl:attribute>" + 
							"<xsl:attribute name=\"DISLAY_NAME_ENCODING\">Base64</xsl:attribute>" + 
							"<xsl:attribute name=\"DISLAY_NAME\">" + encode64(adname) + "</xsl:attribute>" + 
							"<xsl:attribute name=\"TARGET_TYPE\">OBJECT_TYPE_XML_FILE</xsl:attribute>" + 
							"<xsl:attribute name=\"MIME_TYPE\">text/xml</xsl:attribute>" + 
							"<xsl:attribute name=\"ID\">" + anid + "</xsl:attribute>" + 
						  "</xsl:element>";
		//
		//
		var xslTranform = replaceObjectRef.replace(/insert existing target exclude select id 354A8234E9E84ae3AB7C18FEF54084E5/, "./@ID='foo'");
		xslTranform = xslTranform.replace(/insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4/, newMapEntry);
		//
		//
		retValue = transformDatabase(xslTranform, "kentish_resource_root/containers/containerMap.xml", "containerMap.xml");
	}
	//
	//
	return retValue;
}

/**
 *
 */
function renameContainer(aPath, aName, anID, aNewDisplayName) {
	//
	//
	var retValue = -1;
	//
	//
	var newMapEntry = "<xsl:element name=\"OBJECT_REF\">" +
						"<xsl:attribute name=\"PATH\">" + aPath + "</xsl:attribute>" + 
						"<xsl:attribute name=\"NAME\">" + aName + "</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME_ENCODING\">Base64</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME\">" + encode64(aNewDisplayName) + "</xsl:attribute>" + 
						"<xsl:attribute name=\"TARGET_TYPE\">OBJECT_TYPE_XML_FILE</xsl:attribute>" + 
						"<xsl:attribute name=\"MIME_TYPE\">text/xml</xsl:attribute>" + 
						"<xsl:attribute name=\"ID\">" + anID + "</xsl:attribute>" + 
						"</xsl:element>";
	//
	//
	var xslTranform = replaceObjectRef.replace(/insert existing target exclude select id 354A8234E9E84ae3AB7C18FEF54084E5/, "./@ID='" + anID + "'");
	xslTranform = xslTranform.replace(/insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4/, newMapEntry);
	//
	//
	retValue = transformDatabase(xslTranform, "kentish_resource_root/containers/containerMap.xml", "containerMap.xml");
	//
	//
	return retValue;
}

/**
 *
 */
function deleteContainer(aPath, aName, anID) {
	//
	//
	var retValue = -1;
	//
	//
	if(deleteDatabase(aPath, aName)==0) {
		//
		//
		var newMapEntry = "";
		var xslTranform = replaceObjectRef.replace(/insert existing target exclude select id 354A8234E9E84ae3AB7C18FEF54084E5/, "./@ID='" + anID + "'");
		xslTranform = xslTranform.replace(/insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4/, newMapEntry);
		//
		//
		retValue = transformDatabase(xslTranform, "kentish_resource_root/containers/containerMap.xml", "containerMap.xml");
	}
	//
	//
	return retValue;
}

/**
 *
 */
function addAssetToContainer(aContainerPath, aContainerName, anAssetPath, anAssetName, anAssetID, anAssetDisplayName, anAssetType, anAssetMimeType) {
	//
	//
	var retValue = -1;
	//
	//
	var newMapEntry = "<xsl:element name=\"OBJECT_REF\">" +
						"<xsl:attribute name=\"PATH\">" + anAssetPath + "</xsl:attribute>" + 
						"<xsl:attribute name=\"NAME\">" + anAssetName + "</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME_ENCODING\">Base64</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME\">" + encode64(anAssetDisplayName) + "</xsl:attribute>" + 
						"<xsl:attribute name=\"TARGET_TYPE\">" + anAssetType + "</xsl:attribute>" + 
						"<xsl:attribute name=\"MIME_TYPE\">" + anAssetMimeType + "</xsl:attribute>" + 
						"<xsl:attribute name=\"ID\">" + anAssetID + "</xsl:attribute>" + 
						"</xsl:element>";
	//
	//
	var xslTranform = replaceObjectRef.replace(/insert existing target exclude select id 354A8234E9E84ae3AB7C18FEF54084E5/, "./@ID='foo'");
	xslTranform = xslTranform.replace(/insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4/, newMapEntry);
	//
	//
	retValue = transformDatabase(xslTranform, aContainerPath, aContainerName);
	//
	//
	return retValue;
}

/**
 *
 */
function storeSingletonAsset(aContainerPath, aContainerName, anAssetPath, anAssetName, anAssetID, anAssetDisplayName, anAssetType, anAssetMimeType) {
	//
	//
	var retValue = -1;
	//
	//
	var timeNow = new Date();
	var timeNowTech = timeNow.getTime();
	var humanReadable = "" + timeNow.getFullYear() + "/" + (timeNow.getMonth()+1) + "/" + timeNow.getDate() + " - " + timeNow.getHours() + ":" + timeNow.getMinutes() + ":" + timeNow.getSeconds();
	//
	//
	var newMapEntry = "<xsl:element name=\"OBJECT_REF\">" +
						"<xsl:attribute name=\"PATH\">" + anAssetPath + "</xsl:attribute>" + 
						"<xsl:attribute name=\"NAME\">" + anAssetName + "</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME_ENCODING\">Base64</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME\">" + encode64(anAssetDisplayName) + "</xsl:attribute>" + 
						"<xsl:attribute name=\"TARGET_TYPE\">" + anAssetType + "</xsl:attribute>" + 
						"<xsl:attribute name=\"MIME_TYPE\">" + anAssetMimeType + "</xsl:attribute>" + 
						"<xsl:attribute name=\"TIME_STAMP\">" + timeNowTech + "</xsl:attribute>" + 
						"<xsl:attribute name=\"ID\">" + anAssetID + "</xsl:attribute>" + 
						"</xsl:element>";
	//
	//
	var xslTranform = singletonObjectRef.replace(/insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4/, newMapEntry);
	//
	//
	retValue = transformDatabase(xslTranform, aContainerPath, aContainerName);
	//
	//
	return retValue;
}

/**
 *
 */
function editAsset(aContainerPath, aContainerName, 
						anAssetPath, anAssetName, anAssetID, aNewAssetDisplayName, anAssetType, anAssetMimeType,
						tagData)
{
	//
	//
	var retValue = -1;
	//
	//
	var newMapEntry = "<xsl:element name=\"OBJECT_REF\">" +
						"<xsl:attribute name=\"PATH\">" + anAssetPath + "</xsl:attribute>" + 
						"<xsl:attribute name=\"NAME\">" + anAssetName + "</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME_ENCODING\">Base64</xsl:attribute>" + 
						"<xsl:attribute name=\"DISLAY_NAME\">" + encode64(aNewAssetDisplayName) + "</xsl:attribute>" + 
						"<xsl:attribute name=\"TARGET_TYPE\">" + anAssetType + "</xsl:attribute>" + 
						"<xsl:attribute name=\"MIME_TYPE\">" + anAssetMimeType + "</xsl:attribute>" + 
						"<xsl:attribute name=\"ID\">" + anAssetID + "</xsl:attribute>" + 
						"<xsl:element name=\"METADATA\">" +
							"<xsl:element name=\"TAGS\">" +
								(tagData!=null ? tagData:"") +
							"</xsl:element>" +
						"</xsl:element>" +
						"</xsl:element>";
	//
	//
	var xslTranform = replaceObjectRef.replace(/insert existing target exclude select id 354A8234E9E84ae3AB7C18FEF54084E5/, "./@PATH='" + anAssetPath + "' and ./@NAME='" + anAssetName + "'");
	xslTranform = xslTranform.replace(/insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4/, newMapEntry);
	//
	//
	retValue = transformDatabase(xslTranform, aContainerPath, aContainerName);
	//
	//
	return retValue;
}

/**
 *
 */
function removeAssetFromContainer(aContainerPath, aContainerName, anAssetPath, anAssetName) {
	//
	//
	var retValue = -1;
	//
	//
	var newMapEntry = "";
	var xslTranform = replaceObjectRef.replace(/insert existing target exclude select id 354A8234E9E84ae3AB7C18FEF54084E5/, "./@PATH='" + anAssetPath + "' and ./@NAME='" + anAssetName + "'");
	xslTranform = xslTranform.replace(/insert create target here id 774A8456E9E84ea3AB7C18FEF54760E4/, newMapEntry);
	//
	//
	retValue = transformDatabase(xslTranform, aContainerPath, aContainerName);
	//
	//
	return retValue;
}

/**
 *
 */
function createDatabase(xmlSkeleton, aPath, aName, overWrite) {
	//
	//
	var xmlDoc = null;
	var retValue = -1;
	//
	// do the command XML
	var cmdXML  = "<COMMANDS><COMMAND CLASS_NAME=\"com.tenduke.services.xmldb.CreateDatabase\"";
		cmdXML += " OBJECT_ID=\"" + aPath + "\"";
		cmdXML += " ALLOW_OVER_WRITE=\"" + overWrite + "\"";
		cmdXML += " OBJECT_NAME=\"" + aName + "\">";
		cmdXML += encode64(xmlSkeleton);
		cmdXML += "</COMMAND></COMMANDS>";
	//
	// send request
	var req = initRequest("/servlets/XMLCommandServlet", "POST");
    req.setRequestHeader("Content-Type", "text/xml; charset=\"UTF-8\"");
	req.send(cmdXML);
	//
	//
	if (req.readyState == 4) {
        if (req.status == 200 && req.responseXML!=null) {
			response  = req.responseXML.documentElement;
			var cmdElement = response.getElementsByTagName('COMMAND')[0];
			if(cmdElement!=null && cmdElement!=undefined) {
				var result = cmdElement.getAttribute( 'RESULT' ).toString();
				if(result!=null && result=="OK") {
					var cmdMessageElement = response.getElementsByTagName('MESSAGE')[0];
					//alert("Database create OK");
					retValue = 0;
				}
				else {
					//
					//
					alert("Database create transaction failed:" + result);
				}
			}
        } 
        else {
			alert ( "Database create transaction failed with response code: " + req.status );
        }
    }
    //
    //
    return retValue;
}

/**
 *
 */
function deleteDatabase(aPath, aName) {
	//
	//
	var xmlDoc = null;
	var retValue = -1;
	//
	// do the command XML
	var cmdXML  = "<COMMANDS><COMMAND CLASS_NAME=\"com.tenduke.services.xmldb.DeleteDatabase\"";
		cmdXML += " OBJECT_ID=\"" + aPath + "\"";
		cmdXML += " OBJECT_NAME=\"" + aName + "\">";
		cmdXML += "</COMMAND></COMMANDS>";
	//
	// send request
	var req = initRequest("/servlets/XMLCommandServlet", "POST");
    req.setRequestHeader("Content-Type", "text/xml; charset=\"UTF-8\"");
	req.send(cmdXML);
	//
	//
	if (req.readyState == 4) {
        if (req.status == 200 && req.responseXML!=null) {
			response  = req.responseXML.documentElement;
			var cmdElement = response.getElementsByTagName('COMMAND')[0];
			if(cmdElement!=null && cmdElement!=undefined) {
				var result = cmdElement.getAttribute( 'RESULT' ).toString();
				if(result!=null && result=="OK") {
					var cmdMessageElement = response.getElementsByTagName('MESSAGE')[0];
					//alert("Database delete OK");
					retValue = 0;
				}
				else {
					//
					//
					alert("Database delete transaction failed:" + result);
				}
			}
        } 
        else {
			alert ( "Database delete transaction failed with response code: " + req.status );
        }
    }
    //
    //
    return retValue;
}

/**
 *
 */
function transformDatabase(xsltInput, aPath, aName) {
	//
	//
	var xmlDoc = null;
	var retValue = -1;
	//
	// do the command XML
	var cmdXML  = "<COMMANDS><COMMAND CLASS_NAME=\"com.tenduke.services.xmldb.TransformDatabase\"";
		cmdXML += " OBJECT_ID=\"" + aPath + "\"";
		cmdXML += " OBJECT_NAME=\"" + aName + "\">";
		cmdXML += encode64(xsltInput);
		cmdXML += "</COMMAND></COMMANDS>";
	//
	// send request
	var req = initRequest("/servlets/XMLCommandServlet", "POST");
    req.setRequestHeader("Content-Type", "text/xml; charset=\"UTF-8\"");
	req.send(cmdXML);
	//
	//
	if (req.readyState == 4) {
        if (req.status == 200 && req.responseXML!=null) {
			response  = req.responseXML.documentElement;
			var cmdElement = response.getElementsByTagName('COMMAND')[0];
			if(cmdElement!=null && cmdElement!=undefined) {
				var result = cmdElement.getAttribute( 'RESULT' ).toString();
				if(result!=null && result=="OK") {
					retValue = 0;
				}
			}
        } 
    }
    //
    //
    return retValue;
}



-->