util = {
    
    getValueOf: function(id) {
        var tag = document.getElementById(id);
        if (tag && tag.value) return tag.value;
        return "";
    },

    setValueOf: function(id,val) {
        var tag = document.getElementById(id);
        if (tag) tag.value = val;
    },
    
    getChecked: function(id,trueVal) {    
        var tag = document.getElementById(id);
        var val = false;
        if (tag && (tag.value.toUpper() == trueVal.toUpper())) val = true;
        return val;
    },
    
    

    showRequestLog: function() {
        Top.showRequestLog();
        Top.clearRequestLog();
        Top.startRequestLogging();
    },
    
    message: "",
    clearMessage: function() {
        util.message = "";
        util.statusListener();
    },
    showMessage: function(msg) {
        util.message = msg;
        setTimeout("util.clearMessage();",5000);
        util.statusListener();
    },

    loadingTimeoutKey: null,
    openRequestsBase: 0,
    loadingTimeout: function() {
        util.loadingTimeoutKey = null;
        if (Top.openRequests > util.openRequestsBase) {
            util.openRequestsBase++;
        }
        util.statusListener();
    },
    
    statusListener: function() {
        if (util.loadingTimoutKey) {
            clearTimeout(util.loadingTimeoutKey);
            util.loadingTimeoutKey = null;
        }

        var messageText = document.getElementById("messageText");
        //Top.debug("statusListener req="+Top.openRequests+" : "+util.openRequestsBase);
        if (messageText) {
            if (Top.openRequests > util.openRequestsBase) {
                messageText.innerHTML = "Loading";
                messageText.style.visibility = "visible";
                util.loadingTimeoutKey = setTimeout("util.loadingTimeout();",5000);
            } else {
                if (Top.openRequests < util.openRequestsBase) {
                    util.openRequestsBase = Top.openRequests;
                }
                if (util.loadingTimeoutKey) {
                    clearTimeout(util.loadingTimeoutKey);
                    util.loadingTimeoutKey = null;
                }
                if (util.message.length > 0) {
                    messageText.innerHTML = util.message;
                    messageText.style.visibility = "visible";
                } else {
                    messageText.style.visibility = "hidden";
                }
            }
        }
            
        var item = document.getElementById("util.openRequests");
        if (item != null) {
            document.getElementById("util.openRequests").value = Top.openRequests;
            document.getElementById("util.goodResponses").value = Top.goodResponses;
            document.getElementById("util.badResponses").value = Top.badResponses;
        }
    },

    applyToForm: function(nameList,attrs) {
        //Top.debug("applyAttrubutesToForm attrr="+attrs+" nameList="+nameList);
        if (! attrs) return;
        for (var i=0; i<nameList.length; i++) {
            var name = nameList[i];
            var value = attrs[name];
            if (value == null) value = "";
            var elem = document.getElementById(name);
            if (elem) {
                var tagName = elem.tagName.toUpperCase();
                //Top.debug("Setting ELEM["+name+"] elem="+tagName+" attrs[name]="+attrs[name]+" val="+value);
                if (tagName == 'SELECT') {
                    var val = attrs[name].toUpperCase();
                    for (var n=0; n<elem.options.length; n++) {
                        if (elem.options[n].value.toUpperCase() == val) {
                            elem.selectedIndex = n;
                            break;
                        }
                    }
                } else if ((tagName == "INPUT") && (elem.type.toUpperCase() == "CHECKBOX")) {
                    elem.checked = value.toUpperCase() == "TRUE";
                    //Top.debug("CHECKBOX value="+elem.checked);
                } else {
                    elem.value = value;
                }
            }
        }
    },
    
    renderAsAttributes: function(nameList) {
        var buf = "";
        for (var i=0; i<nameList.length; i++) {
            var name = nameList[i];
            var elem = document.getElementById(name);
            var val = null;
            if (elem) {
                var tagName = elem.tagName.toUpperCase();
                if (tagName == 'SELECT') {
                    val = elem.options[elem.selectedIndex].value;
                } else if ((tagName == "INPUT") && (elem.type.toUpperCase() == "CHECKBOX")) {
                    if (elem.checked) val = "true";                    
                } else {
                    val = elem.value;
                }
                if ((val != null) && (val.length > 0)) {
                    buf += " "+name+"='"+val+"'";
                }
            }
        }
        return buf;
    },
        
    theEnd: true
        
}

