
<!-- 
//
//
function XMLDBUtils() {
	//
	//
	this.getXML = getXMLDatabaseInOneChunk;
}

//
//
function getXMLDatabaseInOneChunk(objectID, objectName) {
	//
	//
	var xmlDoc = null;
	//
	// do the command XML
	var cmdXML  = "<COMMANDS><COMMAND CLASS_NAME=\"com.tenduke.services.objectstorage.command.GetFile\"";
		cmdXML += " OBJECT_ID=\"" + objectID + "\"";
		cmdXML += " OBJECT_NAME=\"" + objectName + "\"";
		cmdXML += " ENCODE=\"false\"";
		cmdXML += " SERIALIZE_IN_ONE_CHUNK=\"true\">";
		cmdXML += "</COMMAND></COMMANDS>";
	//
	// send request
	var req = initRequest("/servlets/XMLCommandServlet", "POST");
    req.setRequestHeader("Content-Type", "text/xml; charset=\"UTF-8\"");
    try {
		req.send(cmdXML);
	}
	catch(sendE) {
		req = null;
		//alert(sendE);
	}
	//
	//
	if (req!=null && req.readyState == 4) {
        if (req.status == 200 && req.responseXML!=null) {
			//
			//
			response  = req.responseXML;
			//
			
			
			/*var serializer = new XMLSerializer();
			str = serializer.serializeToString(response);
			alert(str);
			*/
			//
			//
			var cmdElement = response.getElementsByTagName('COMMAND')[0];
			if(cmdElement!=null && cmdElement!=undefined) {
				var result = cmdElement.getAttribute( 'RESULT' ).toString();
				if(result!=null && result!=undefined && result=="OK") {
					//
					//
					var dataElement = response.getElementsByTagName('ODP')[0];
					var odpNode=getNodeByType(dataElement, Node.ELEMENT_NODE, false);
					xmlDoc = odpNode;
					
				}
				else if(result!=null && result!=undefined && result=="REQUIRES_AUTHENTICATION") {
					//
					//
					logout();
					
				}
				else {
					//
					//
					//var cmdMessageElement = response.getElementsByTagName('MESSAGE')[0];
					//alert("Service did not respond to request, your session has probably expired, please log in again!");
				}
			}
			else {
				alert("Service did not respond to request, your session has probably expired, please log in again!");
			}
        } 
        else {
			alert("Service did not respond to request, your session has probably expired, please log in again!");
			//alert ( "Database query transaction failed with response code: " + req.status );
        }
    }
    else {
		//
		//
		alert ( "Sorry, " + SERVICE_BRAND + " could not process your request at this time. Please try later again!");
		//
		//
		//window.location = "index.html";
    }
    //
    //
    return xmlDoc;
}

/**
 * Finds the first node with the specified node type (search includes the input node as well).
 * Search order all node children first before recusring deeper into node hierarchy.
 * @return First matching node or null if not found.
 */
function getNodeByType(startNode, aNodeType, includeRoot) {
    //
    //
    var retValue = null;
    //
    //
    if(includeRoot && startNode && startNode.nodeType==aNodeType) {
        retValue = startNode;
    }
    //
    //
    if(startNode && retValue==null) {
        //
        //
        var childNodes = startNode.childNodes;
        if(childNodes) {
            for(var i=0; i<childNodes.length; i++) {
                var aChild = childNodes[i];
                if(aChild && aChild.nodeType==aNodeType) {
                    retValue = aChild;
                    break;
                }
            }
            if(retValue==null) {
                for(var i=0; i<childNodes.length; i++) {
                    var aChild = childNodes[i];
                    retValue = getNodeByType(aChild, aNodeType);
                    if(retValue) break;
                }                    
            }
        }
    }
    //
    //
    return retValue;
}

-->
