function Dependency(formName, mainSelect, dependentSelect, dependencyArray)
{
    this.formName = formName;
    this.mainSelectName = mainSelect;
    this.dependentSelectName = dependentSelect;
    this.dependencyArray = dependencyArray;

    this.dependentSelectValues = new Array();
    this.dependentSelectCaptions = new Array();

    this.read = read;
    this.update = update;
    this.init = init;
    this.getCaptionByValue = getCaptionByValue;
}

function init()
{
    this.form = eval('document.' + this.formName);

    this.mainSelect = eval('this.form.' + this.mainSelectName);
    this.dependentSelect = eval('this.form.' + this.dependentSelectName);

    var dependentSelectValue = this.dependentSelect.value;

    this.read();
    this.update();
    this.dependentSelect.value = dependentSelectValue;
}

function read()
{
    var options = this.dependentSelect.options;
    for (var i = 0; i < options.length; i++) {
        this.dependentSelectValues[i] = options[i].value;
        this.dependentSelectCaptions[i] = options[i].text;
    }
}

function update()
{
    var values = this.dependencyArray[this.mainSelect.selectedIndex];
    this.dependentSelect.options.length = 0;
    for (var i = 0; i < values.length; i++) {
        this.dependentSelect.options[i] = new Option(
            this.getCaptionByValue(values[i]),
            values[i]
        );
    }
}

function getCaptionByValue(value)
{
    for (var i=0; i < this.dependentSelectValues.length; i++)
    {
        if (this.dependentSelectValues[i] == value) {
            return this.dependentSelectCaptions[i];
        }
    }
    return null;
}

function updateDependent(mainObj, dependentName)
{
    var formName = mainObj.form.name;
    var mainName = mainObj.name;
    dependency = getDependency(formName, mainName, dependentName);
    if (dependency) {
        dependency.update();
    }
}

function getDependency(formName, mainName, dependentName)
{
    for (var i = 0; i < depends.length; i++) {
        if (
            depends[i].formName == formName &&
            depends[i].mainSelectName == mainName &&
            depends[i].dependentSelectName == dependentName
        ) {
            return depends[i];
        }
    }
    return null;
}

function initDependencies()
{
    for (var i = 0; i < depends.length; i++) {
        depends[i].init();
    }
}

window.onload = initDependencies;



