    function initCountries()
    {
        var par        = document.forms["filterForm"];
        var parelmts   = par.elements;
        var lang       = par.lang.value;
        var countrySel = parelmts["countrySel"];

        Http.get({
                url: "./data/" + lang + "/allcountries.txt",
                callback: fillCountry,
                cache: Http.Cache.GetNoCache
        }, [countrySel]);
    }

    function initFirms()
    {
        var par      = document.forms["filterForm"];
        var parelmts = par.elements;
        var lang     = par.lang.value;
        var firmSel  = parelmts["firmSel"];

        Http.get({
                url: "./data/" + lang + "/allfirms.txt",
                callback: fillFirm,
                cache: Http.Cache.GetNoCache
        }, [firmSel]);
    }

    function cFilter(dd1)
    {
        var par      = document.forms["filterForm"];
        var parelmts = par.elements;

        var lang     = par.lang.value;

        var idx      = dd1.selectedIndex;
        var country  = dd1[idx].value;
        var firmSel  = parelmts["firmSel"];
        // var country  = val;

        var directory = "" + document.location;
        directory = directory.substr(0, directory.lastIndexOf('/'));

        if (country != "")
        {
            Http.get({
                url: "./data/" + lang + "/cf/" +  country + ".txt",
                callback: fillFirm,
                cache: Http.Cache.GetNoCache
            }, [firmSel]);
        }
        else
        {
            initFirms();
            document.getElementById("topicSel").length = 1;
        }
    }

    function fFilter(dd1)
    {
        var par      = document.forms["filterForm"];
        var parelmts = par.elements;

        var lang     = par.lang.value;

        var idx      = dd1.selectedIndex;
        var firm     = dd1[idx].value;
        var topicSel = parelmts["topicSel"];

        var country = document.getElementById("countrySel").value;

        if (firm != "")
        {
            var directory = "" + document.location;
            directory = directory.substr(0, directory.lastIndexOf('/'));

            var subbedFirm = firm;
            subbedFirm     = subbedFirm.replace( /\s/g, "_");
 
            if (country != "")
            {
                Http.get({
                    url: "./data/" + lang + "/cft/" +  country + "-" + subbedFirm + ".txt",
                    callback: fillTopic,
                    cache: Http.Cache.GetNoCache
                }, [topicSel]);
            }
            else
            {
                Http.get({
                    url: "./data/" + lang + "/ft/" + subbedFirm + ".txt",
                    callback: fillTopic,
                    cache: Http.Cache.GetNoCache
                }, [topicSel]);
            }
        }
        else if (country != "")
        {
            Http.get({
                url: "./data/" + lang + "/ct/" +  country + ".txt",
                callback: fillTopic,
                cache: Http.Cache.GetNoCache
            }, [topicSel]);
        }
        else
        {
            document.getElementById("topicSel").length = 1;
        }
    }

    function fillCountry(xmlreply, ctyelmt)
    {
        if (xmlreply.status == Http.Status.OK)
        {
            var ctyresponse = xmlreply.responseText;

            ctyelmt.innerHTML = ctyresponse;
        }
        else
        {
            // alert("Cannot handle the Ajax call.");
            document.getElementById("topicSel").length = 1;
        }
        initFirms();
    }

    function fillFirm(xmlreply, firmelmt)
    {
        if (xmlreply.status == Http.Status.OK)
        {
             var firmresponse = xmlreply.responseText;

             firmelmt.innerHTML = firmresponse;
        }
        else
        {
            // alert("Cannot handle the Ajax call.");
            document.getElementById("topicSel").length = 1;
        }
        fFilter(document.getElementById("firmSel"));
    }

    function fillTopic(xmlreply, topicelmt)
    {
        if (xmlreply.status == Http.Status.OK)
        {
            var topicresponse = xmlreply.responseText;

            topicelmt.innerHTML = topicresponse;
        }
        else
        {
            // alert("Cannot handle the Ajax call.");
            document.getElementById("topicSel").length = 1;
        }
    }

    function view()
    {
        var par        = document.forms["filterForm"];
        var parelmts   = par.elements;
        var lang       = par.lang.value;

        var id = document.getElementById("topicSel").value;

        location.href = "view.cgi?id=" + id + '&lang=' + lang;
    }
