<!--

    //////////////////////////////////////////////////////////////////////////
    //
    //  Copyright (c) 2003-2004, Levyco Development, LLC.
    //  All rights are reserved.
    //
    //////////////////////////////////////////////////////////////////////////
    
    // normal startup stuff
    
    var activeTimer;
    var timerPending = false;
    var menusShown = '';
    var submenusShown = '';
    var clientBrowser = "";
    var clientVersion = 0;
    var ua = navigator.appName;
    var ver = parseInt(navigator.appVersion);
    var refIn = "";
    var refOut = "";
    var trackerCount = 0;    
    var trackerFlag = false;
    var trackerKeys = new Array(100);
    var trackerData = new Array(100);
    
    
    // determine the browser information
    
    if ((ua == "Netscape") && (ver < 5)) {
        refIn = "document.layers['";
        refOut = "']";
        clientBrowser = "NN";
        clientVersion = ver;
    }
    else if ((ua == "Netscape") && (ver >= 5)) {
        refIn = "document.getElementById('";
        refOut = "').style";
        clientBrowser = "NN";
        clientVersion =ver;
    }
    else {
        refIn = "document.all['";
        refOut = "'].style";
        clientBrowser = "IE";
        clientVersion = ver;
    }
    

    // init the tracker
    
    trackerInit();

    
    // tracker functions
    
    function trackerInit () {
        var i;
        for (i=0; i<100; i++) {
            trackerKeys[i] = "";
            trackerData[i] = "";
        }
    }

    function trackerAdd (objName) {
        if (trackerCount < 100) {
            trackerKeys[trackerCount] = objName;
            trackerData[trackerCount] = "";
            ++trackerCount;
        }
    }
            
    function trackerFind (objName) {
        var i;
        for (i=0; i<trackerCount; i++) {
            if (trackerKeys[i] == objName) {
                return (i);
            }
        }
        return (-1);
    }

    function trackerReset (objName) {
        var p = trackerFind(objName);
        if (p < 0) {
            trackerAdd (objName);
        }
        else {
            trackerData[p] = "";
        }
    }

    function trackerTrack (objName, listbox) {
        var i;
        var n;
        var listStr;
        var trackStr;
        var count;
        var found = -1;
        var c;
        var p = trackerFind(objName);
        if (p >= 0) {
            if (clientBrowser == "IE") {
                c = (event.keyCode >= 32 ? String.fromCharCode(event.keyCode) : "");
                //event.keyCode = 0;
            }
            else {
                c = (event.which >= 32 ? String.fromCharCode(event.which) : "");
                //event.which = 0;
            }
            trackerData[p] = trackerData[p] + c;
            trackStr = new String (trackerData[p]);
            n = trackStr.length;
            trackStr = trackStr.toLowerCase();
            count = listbox.length;
            for (i=0; (i<count) && (found<0); i++) {
                listStr = new String(listbox.options[i].text);
                listStr = listStr.toLowerCase();
                if (trackStr == listStr.substr(0,n)) {
                    found = i;
                }
            }
            if (found >= 0) {
                listbox.selectedIndex = found;
            }
        }
        return (false);
    }
    
    // utility functions
    
    function moveFocus (obj, size, formname, nextobj) {
        if (obj.value.length < size) {
            obj.value += (event.keyCode >= 32 ? String.fromCharCode(event.keyCode) : "");
        }
        if (obj.value.length >= size) {
            eval ("document."+formname+"."+nextobj+".focus();");
        }
        return (false);
    }
    

    /*******************************************************************************/

    var dbugText = "";
    function dbug (s) {
        dbugText = dbugText + "\n" + s;
    }

    function getdbug () {
        alert (dbugText);
        //document.debug.debugtext.value = dbugText;
        dbugText = "";
    }

    /*******************************************************************************/
    
    var CLOSE_ALL = 1;
    var CLOSE_SUB_TREE = 2;
    var ANY_ID = -1;
    
    // menuing helper functions

    function getRef (name) {
        return (refIn + name + refOut);
    }
    
    function holdMenu () {
        menuTimer (false);
    }
    
    function menuTimer (flag) {
        if (timerPending) clearTimeout (activeTimer);
        if (flag) {
            activeTimer = setTimeout ('menuClose(0,'+CLOSE_ALL+')', 500);
            timerPending = true;
        }
        else {
            timerPending = false;
        }
    }
    
    function initMenu (name, id) {
        holdMenu();
        menuClose (0, CLOSE_ALL);
        if (name != '') {
            eval (getRef(name) + ".visibility = 'visible';");
            eval (getRef('tab'+name.substr(4)) + ".visibility = 'visible';");
            if (menusShown.indexOf(name+'@') < 0) menusShown += ',' + name + '@';
        }
    }
    
    function releaseMenu () {
        menuTimer (true);
    }

    function initSubmenu (name, id) {
        holdMenu();
        menuClose (id, CLOSE_SUB_TREE);
        if (name != '') {
            eval (getRef(name) + ".visibility = 'visible';");
            if (submenusShown.indexOf(name+'@') < 0) submenusShown += ',' + name + '@';
        }
    }
    
    function releaseSubmenu (id) {
        menuClose (id, CLOSE_SUB_TREE);
    }

    function menuClose (topid, mode) {
        var i;
        var divs;
        var count;
        if (timerPending) clearTimeout (activeTimer);
        timerPending = false;
        if (mode == CLOSE_ALL) menusShown = closeMenuList (menusShown, topid, mode);
        if ((mode == CLOSE_ALL) || (mode == CLOSE_SUB_TREE)) submenusShown = closeMenuList (submenusShown, topid, mode);
    }
    
    function closeMenuList (names, topid, mode) {
        var newNames = '';
        var menuNum = 0;
        divs = names.split (',');
        count = divs.length;
        for (i=0; i<count; i++) {
            id = divs[i];
            if (id != '') {
                id = id.substr(0,id.length-1);
                menuNum = parseInt(id.substr(4));
                if ((mode == CLOSE_ALL) || ((mode == CLOSE_SUB_TREE) && (menuNum > topid))) {
                    eval (getRef(id) + ".visibility = 'hidden';");
                    if (menuNum < 1000) eval (getRef('tab'+menuNum) + ".visibility = 'hidden';");
                }
                else {
                    newNames += ',' + id + '@';
                }
            }
        }
        return (newNames);
    }
    
//-->
