var dependencies = ["json"];
for (index in dependencies) {
    var src = '<script type="text/javascript" src="/fs_img/js/' + dependencies[index] + '.js"></script>';
    document.write(src);
}

var FORM = {
    byid: function(id) {
        return document.getElementById(id);
    },

    element_contents: function(el) {
        var contents = '';
        switch( el.nodeName ) {
            case 'TABLE': case 'HTML': case 'BODY':
                break;
            case 'INPUT': case 'OPTION': case 'RADIO': case 'SELECT': case 'TEXTAREA':
                contents = el.value;
                break;
            default:
                if( el.innerHTML ){ contents = el.innerHTML; }
                else              { contents = el.innerText; }
                break;
        }
        // if it's undefined, we don't want that text
        return (contents) ? contents : '';
    },

    // convert a form to proper JSON syntax
    to_json: function(form) {
        var form_obj = new Object();
        for(var i = 0; i < form.elements.length; i++) {
            var form_el = form.elements[i];
            var name = (form_el.name) ? form_el.name : form_el.id;

            var t = form_el.type
            var value = '';
            if (t == 'button' || t == 'submit') {
                continue;
            } else if (t == 'select-one') {
                value = form_el.value;
            } else if (t == 'radio') {
                if (form_el.length) {
                    for(var i = 0; i < form_el.length; i++) {
                        if (form_el[i].checked) {
                            value = form_el.value;
                        }
                    }
                }
                else if (form_el.checked) {
                    value = form_el.value;
                }
            } else if (t == 'text' || t == 'textarea') {
                value = this.element_contents(form_el);
            } else if (t == 'hidden') {
                value = this.element_contents(form_el);
            } else if (t == 'checkbox') {
                if (form_el.checked) { value = form_el.value; }
            }

            if (value) {
                value = escape(this.element_contents(form_el));
                // double quotes need to be unescaped to work with JSON
                value = value.replace(/%22/g, '"');
                if (form_obj[name]) {
                    var type = typeof form_obj[name];
                    if (type == 'string') {
                        form_obj[name] = [
                            form_obj[name],
                            value
                        ];
                    }
                    else if (type == 'object') {
                        form_obj[name].push(value);
                    }
                } 
                else {
                    form_obj[name] = value;
                }
            }
        }
        return JSON.stringify(form_obj);
    },

    trim: function(text) {
        return text.replace( /^\s+|\s+$/gm, '' );
    },

    choose_option: function(form_el, option_value) {
        if ( !form_el ) { return; }
        form_el = (typeof form_el == 'string') ?
            this.byid(form_el) : form_el;

        if (form_el.type == "select-one") {
            for (var i = 0; i < form_el.options.length; i++) {
                if (form_el.options[i].value == option_value) {
                    form_el.options[i].selected = true;
                }
            }
        } else if (form_el.type == "radio") {
            if (form_el.length) {
                for(var i = 0; i < form_el.length; i++) {
                    if (form_el[i].value == option_value) form_el[i].checked=true;
                }
            } else if (form_el.value==option_value) {
                form_el.checked = true;
                
            }
        }
    },
    
    get_option_value: function(form_el) {
        if ( !form_el ) { return; }

        form_el = (typeof form_el == 'string') ?
            this.byid(form_el) : form_el;

        if (form_el.length) {
            for(var i = 0; i < form_el.length; i++) {
                if (form_el[i].checked || form_el[i].selected ) {
                    return form_el[i].value;
                }
            }
        }
        return '';
    },

    check_all: function(form) {
        for(var i = 0; i < form.elements.length; i++) {
            var form_el = form.elements[i];
            if (form_el.type == 'checkbox') form_el.checked = true;
        }
    },


    toggle: function(sobj, tobj) {
        tobj.style.display = (tobj.style.display == '') ? 'none' : '';
        sobj.src = (sobj.src.match(/min.gif/)) ?
            '/cgi-bin/image/images/max.gif' :
            '/cgi-bin/image/images/min.gif';
    },

    show: function() {
        for(var i=0; i < arguments.length; i++) {
            var el = document.getElementById(arguments[i]);
            el.style.display = '';
        }
    },

    hide: function() {

        for(var i=0; i < arguments.length; i++) {
            var arg = arguments[i];
            if (typeof(arg) == 'object') {
                for (var j = 0; j < arg.length; j++) {
                    this.hide(arg[j]);
                }
            }
            else {
                var el = document.getElementById(arg);
                el.style.display = 'none';
            }
        }
    }

};
