function NavigateToSelectedValue(valObj)
{
    if (typeof(valObj.value) != 'undefined' && valObj.value != '') {
        document.location = valObj.value;
    }
}

function ShowAttributeValueList(selectObj, attributeValuesSelectId)
{
    var valuesSelect = document.getElementById(attributeValuesSelectId);
    // Очищаем select со значениями
    while (valuesSelect.lastChild != null) {
        valuesSelect.removeChild(valuesSelect.lastChild);
    }
    // Добавляем первый элемент
    var opt = document.createElement("option");
    opt.innerHTML = "Выберите значение"; // NOTE: Not part of specification
    valuesSelect.appendChild(opt);
    valuesSelect.disabled = true;
    
    // Если выбран 1-й элемент, то это 'Выберите атрибут'
    if (selectObj.selectedIndex == 0) {
        return;
    }
    
    var filterValues = selectObj.getElementsByTagName('option').item(selectObj.selectedIndex).filterValues;
    // Каждой опции, кроме 1-й, задано свойство filterValues[]
    // в котором хранится информация о значениях в виде
    // ассоциативного массива [name, url]
    for (var i = 0; i < filterValues.length; i++) {
        opt = document.createElement("option");
        opt.value = filterValues[i].url;
        opt.innerHTML = filterValues[i].name;
        valuesSelect.appendChild(opt);
        valuesSelect.disabled = false;
    }
}

var g_ajax = null;
var g_attributeNamesSelectId = null;
var g_attributeValuesSelectId = null;

function FillFiltersFromXML()
{
    if (ajax.readyState() != 4 /*|| ajax.status() != 200*/) {
        return;
    }
    
    var sel = document.getElementById(g_attributeNamesSelectId);
    var dom = ajax.responseXML();
    var avFilters = dom.getElementsByTagName('filter');
    
    // Очищаем селект
    while (sel.lastChild != null) {
        sel.removeChild(sel.lastChild);
    }
    // Добавляем первый элемент
    var opt = document.createElement("option");
    opt.innerHTML = "Выберите атрибут"; // NOTE: Not part of specification
    sel.appendChild(opt);
    
    // Заполняем
    for (var i = 0; i < avFilters.length; i++) {
        var name = avFilters.item(i).getAttribute('name');
        opt = document.createElement("option");
        opt.value = name;
        opt.innerHTML = name;
        sel.appendChild(opt);
        sel.disabled = false;
        
        opt.filterValues = [];
        var avfValues = avFilters.item(i).getElementsByTagName('value');
        for (var j = 0; j < avfValues.length; j++) {
            var valName = avfValues.item(j).getAttribute('name');
            var valUrl = avfValues.item(j).getAttribute('applyUrl');
            opt.filterValues.push(
                {
                    name: valName,
                    url: valUrl
                }
            );
        }
    }
}

function FillFiltersSelect(attributeNamesSelectId, attributeValuesSelectId, requestUrl)
{
    var aSel = document.getElementById(attributeNamesSelectId);
    var vSel = document.getElementById(attributeValuesSelectId);
    aSel.disabled = true;
    vSel.disabled = true;
    g_attributeNamesSelectId = attributeNamesSelectId;
    g_attributeValuesSelectId = attributeValuesSelectId;
    ajax = new com.is_a.AJAX(requestUrl, FillFiltersFromXML, 'text/xml');
    ajax.call(ajax.GET);
}

