﻿function ObjectBuilder(OutXML) {
    var XMLObject = new Object();

    var xmlDoc = CreateXMLDocument();
    try{
        xmlDoc.loadXML(OutXML);
    }catch(e){
    var oParser=new DOMParser();
        xmlDoc=oParser.parseFromString(OutXML,"text/xml");
    }
    var ZXUNRoot = xmlDoc.getElementsByTagName("HuaYing").item(0);
    var Number = 0;
    for (var i = 0; i < ZXUNRoot.childNodes.length; i++) {
        var Node = ZXUNRoot.childNodes[i];
        if (Node.tagName != undefined) {
            Number++;
            if (Node.childNodes != undefined && Node.childNodes.length != 0 && Node.childNodes[0].nodeName != "#text") {//if node is not equest text type
                if (XMLObject[Node.tagName] == undefined) {//if exist object
                    XMLObject[Node.tagName] = new Object();
                    XMLObjectChildNodes(XMLObject[Node.tagName], Node.childNodes);
                }
                else {//Create Array

                    if (XMLObject[Node.tagName].length == undefined) {

                        var TempObject = new Object();
                        TempObject = XMLObject[Node.tagName];

                        XMLObject[Node.tagName] = null;

                        XMLObject[Node.tagName] = new Object();
                        XMLObject[Node.tagName][0] = new Object();
                        XMLObject[Node.tagName].length = 1;
                        XMLObject[Node.tagName][0] = TempObject;

                        TempObject = null;
                    }
                    XMLObject[Node.tagName][XMLObject[Node.tagName].length] = new Object();
                    XMLObjectChildNodes(XMLObject[Node.tagName][XMLObject[Node.tagName].length], Node.childNodes);
                    XMLObject[Node.tagName].length = XMLObject[Node.tagName].length + 1;
                }
            }
            else {
                XMLObject[Node.tagName] = Node.firstChild.nodeValue;
            }
        }
    }
    return XMLObject;
}

function XMLObjectChildNodes(XMLObject, NodesList) {
    var Number = 0;
    for (var i = 0; i < NodesList.length; i++) {
        var Node = NodesList[i];
        if (Node.tagName != undefined) {
            Number++;
            if (Node.childNodes != undefined && Node.childNodes.length != 0 && Node.childNodes[0].nodeName != "#text") {//if node is not equest text type
                if (XMLObject[Node.tagName] == undefined) {//if exist object
                    XMLObject[Node.tagName] = new Object();
                    XMLObjectChildNodes(XMLObject[Node.tagName], Node.childNodes);
                }
                else {//Create Array

                    if (XMLObject[Node.tagName].length == undefined) {

                        var TempObject = new Object();
                        TempObject = XMLObject[Node.tagName];

                        XMLObject[Node.tagName] = null;

                        XMLObject[Node.tagName] = new Object();
                        XMLObject[Node.tagName][0] = new Object();
                        XMLObject[Node.tagName].length = 1;
                        XMLObject[Node.tagName][0] = TempObject;

                        TempObject = null;
                    }
                    XMLObject[Node.tagName][XMLObject[Node.tagName].length] = new Object();
                    XMLObjectChildNodes(XMLObject[Node.tagName][XMLObject[Node.tagName].length], Node.childNodes);
                    XMLObject[Node.tagName].length = XMLObject[Node.tagName].length + 1;
                }
            }
            else {
                try{
                    XMLObject[Node.tagName] = Node.firstChild.nodeValue;
                }catch(e){
                    XMLObject[Node.tagName] = "";
                }
            }
        }
    }
    return XMLObject;
}

function ObjectListBuilder(OutXML) {
    var XMLObject = new Object();

    var xmlDoc = CreateXMLDocument();
    xmlDoc.loadXML(OutXML);

    var ZXUNRoot = xmlDoc.getElementsByTagName("HuaYing").item(0);
    var Number = 0;
    for (var i = 0; i < ZXUNRoot.childNodes.length; i++) {
        var Node = ZXUNRoot.childNodes[i];
        if (Node.tagName != undefined) {
            if (XMLObject[Node.tagName] == undefined)
                XMLObject[Node.tagName] = new Object();
            XMLObject[Node.tagName][Number] = new Object();
            XMLObjectChildNodes(XMLObject[Node.tagName][Number], Node.childNodes);
            Number++;
            XMLObject[Node.tagName].length = Number;
        }
    }
    return XMLObject;
}
