﻿var xmlDoc = null;
var listChilds = null;

function registerLink(parentID, childID, type, url) {

    if (listChilds == null || listChilds == 'undefined')
        listChilds = new Array();
    var linkIndex = listChilds.length;
    listChilds[linkIndex] = new Array();
    listChilds[linkIndex][0] = parentID;
    listChilds[linkIndex][1] = childID;
    listChilds[linkIndex][2] = url;
    listChilds[linkIndex][3] = type;
    return listChilds[linkIndex];

}

function getChildsLink(rootItem) {
    if (listChilds != null) {
        for (var i = 0; i < listChilds.length; i++) {
            if (listChilds[i][0] == rootItem)
                return listChilds[i];
        }
    }
    return null;
}

function loadChilds(parentID, childID, type, url) {
    var link = getChildsLink(parentID);
    if (link == null || link == 'undefined') {
        link = registerLink(parentID, childID, type, url)
    }

    if (typeof window.ActiveXObject != 'undefined') {
        xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
        xmlDoc.onreadystatechange = process;

    }
    else {
        xmlDoc = new XMLHttpRequest();
        xmlDoc.onload = process;
    }
    try {

        var _childItems = document.getElementById(link[1]);
        
        while (_childItems.length > 0) {
            _childItems.remove(_childItems[0])
        }

        var o = document.createElement("option");

        o.text = "Загрузка...";
        if (typeof window.ActiveXObject != 'undefined') {
            _childItems.add(o);
        }
        else {
            _childItems.appendChild(o);
        }
        var _parentSelect = document.getElementById(link[0]);
        xmlDoc.open("GET",
                    link[2]
                    + "?parentValue=" + _parentSelect.options[_parentSelect.selectedIndex].value
                    + "&parentID=" + link[0]
                    + "&type=" + link[3]
                    , false);
        xmlDoc.send(null);
      
    }
    catch (e) {
        alert(e);
    }
}

function process() {

    if (xmlDoc.readyState != 4) return;
    var link = null;
    try {
        var xmlresponse;
        var items;
        if (typeof window.ActiveXObject != 'undefined') {
            xmlresponse = new ActiveXObject("Microsoft.XMLDOM");
            xmlresponse.loadXML(xmlDoc.responseText);


        }
        else {
            var domParser = new DOMParser();
            xmlresponse = domParser.parseFromString(xmlDoc.responseText, 'text/xml');


        }
        var responseData = xmlresponse.getElementsByTagName("ResposeData");
        link = getChildsLink(responseData[0].getAttribute("ParentID"));
        items = xmlresponse.getElementsByTagName("ViewItem");

        var _childItems = document.getElementById(link[1]);

        while (_childItems.length > 0) {
            _childItems.remove(_childItems[0])
        }

        for (var i = 0; i < items.length; i++) {

            var o = document.createElement("option");

            var text = items[i].getAttribute("Text");
            var value = items[i].getAttribute("Value");

            o.value = value;
            o.text = text;
            if (typeof window.ActiveXObject != 'undefined') {
                _childItems.add(o);
            }
            else {
                _childItems.appendChild(o);
            }
        }


    }
    catch (ex) {
        alert(ex.message);
    }
    
    

}