function RunQuery(SelectID)
{
    _Throbber.Activate();

    var SelectElement = document.getElementById(SelectID);
    var Options = SelectElement.options;
    var TermIndex = SelectElement.selectedIndex;
    var Term = Options[TermIndex].value;
    var ExpansionTerms = null;

    SelectElement.disabled = true;
    document.getElementById("Cont-" + SelectID).disabled = false;
    document.getElementById("Clear-" + SelectID).disabled = false;

    for(var i = 0; i < Options.length; i++)
    {
        if(Options[i].value != Term)
        {
            SelectElement.remove(i);
            i--;
        }
        else
        {
            Options[i].selected = true;
            Options[i].text = Options[i].text.replace(/\s\([0-9]*\)/,"");
        }
    }

    _XML = _OOTClient.OOTQuery(_XML,Term);
    _CategoryCount++;
    ExpansionTerms = _OOTClient.Expand(_XML);

    while(ExpansionTerms.length)
    {
        ExpansionTerms = ExpansionTerms.split(" ")
        for(i in ExpansionTerms)
        {
            UpdateTerm(ExpansionTerms[i]);
            _XML = _OOTClient.OOTQuery(_XML,ExpansionTerms[i]);
            _CategoryCount++;
        }
        ExpansionTerms = _OOTClient.Expand(_XML);
    }

    UpdateCategories();

    if(_CategoryCount == _CategoryTotal)
    {
        _DestinationURL = _OOTClient.FirstLevel(_XML,false);
        document.getElementById("GoButton").disabled = false;
    }

    _Throbber.Deactivate();

    return;
}

function ClearCategory(Category)
{
    _Throbber.Activate();

    var SelectElements = document.getElementsByTagName("select");
    var ContinueList = new Array();

    for(i in SelectElements)
    {
        if(SelectElements[i].disabled && SelectElements[i].id != Category)
        {
            ContinueList.push(SelectElements[i].id);
        }
    }

    ContinueWorker(ContinueList);

    _Throbber.Deactivate();

    return;
}

function Continue()
{
    _Throbber.Activate();

    var Inputs = document.getElementsByTagName("input");
    var Category = null;
    var SelectElement = null;
    var CategoryList = new Array();
    var QueryList = new Array();

    for(i in Inputs)
    {
        if(Inputs[i].type == "checkbox" && Inputs[i].checked)
        {
            CategoryList.push(Inputs[i].value);
        }
    }

    ContinueWorker(CategoryList);

    _Throbber.Deactivate();

    return;
}

function ContinueWorker(ContinueList)
{
    var QueryList = new Array();
    var Options = null;

    for(i in ContinueList)
    {
        QueryList.push(document.getElementById(ContinueList[i]).options[0].value);
    }

    Setup();

    for(i in ContinueList)
    {
        if(!document.getElementById(ContinueList[i]).disabled)
        {
            Options = document.getElementById(ContinueList[i]).options;
            for(var j = 0; j < Options.length; j++)
            {
                if(Options[j].value == QueryList[i])
                {
                    Options[j].selected = true;
                }
            }
            RunQuery(ContinueList[i]);
        }
    }

    return;
}

function EnableContinue()
{
    var Inputs = document.getElementsByTagName("input");
    var Disable = true;

    for(i in Inputs)
    {
        if(Inputs[i].type == "checkbox" && Inputs[i].checked)
        {
            Disable = false;
        }
    }

    document.getElementById("ContinueButton").disabled = Disable;

    return;
}

function UpdateTerm(Term)
{
    var Found = false;
    var Options = null;
    var XMLDoc = ParseXMLString(_XML);
    var Category = XMLDoc.getElementsByTagName(Term)[0].getAttribute("category");
    var SelectElement = document.getElementById(Category);
    var Options = SelectElement.options;

    SelectElement.disabled = true;
    document.getElementById("Cont-" + Category).disabled = false;
    document.getElementById("Clear-" + Category).disabled = false;
    for(var i = 0; i < Options.length; i++)
    {
        if(Options[i].value != Term)
        {
            SelectElement.remove(i);
            i--;
        }
        else
        {
            Options[i].text = Options[i].text.replace(/\s\([0-9]*\)/,"");
            SelectElement.options[i].selected = true;
        }
    }

    return;
}

function UpdateCategories()
{
    var SelectElements = document.getElementsByTagName("select");

    for(var i = 0; i < SelectElements.length; i++)
    {
        if(!SelectElements[i].disabled)
        {
            var OptionCount = SelectElements[i].options.length;
            for(var j = 0; j < OptionCount; j++)
            {
                SelectElements[i].remove(0);
            }
            BuildSelectList(SelectElements[i].id,SelectElements[i]);
        }
    }

    return;
}

function Go()
{
    if(_DestinationURL.length)
    {
        window.location = _DestinationURL;
    }

    return;
}
