
// methods


function atkSetConfirmator(act, text) {
        this.cfm[this.cfm.length] = new Array(act, text);
        return;
}

function atkSet(name, value, submit) {
        var form = document.forms[this.frm];
        form.elements[this.pfx + name].value = value;
        if (submit) this.atkSubmit();
        return;
}

function atkDefault(name, value, submit) {
        var form = document.forms[this.frm];
        var elm = form.elements[this.pfx + name];
        if (! elm.value || elm.value == '') elm.value = value;
        if (submit) this.atkSubmit();
        return;
}

function atkSubmit() {
        var form = document.forms[this.frm];
        var act = form.elements[this.pfx + 'ACT'].value;
        for (var i = 0; i < this.cfm.length; i++) {
                if (act == this.cfm[i][0] && ! confirm(this.cfm[i][1])) return;
        }
        form.submit();
        return;
}

function atkSwitch(name, value) {
        document.location.search='?' + this.pfx + name + '=' + value;
        return;
}

function atkForm() {
        return document.forms[this.frm];
}

function atkCheckAll(name) {
        var form = document.forms[this.frm];
        var s = new String;
        for (i = 0; i < form.elements.length; i++) {
                if (form.elements[i].type == "checkbox" && form.elements[i].name == (this.pfx + name))
                        form.elements[i].checked = ! form.elements[i].checked;
        }
        return;
}


// construction

var ATKs = new Array();

function atkRegister(prefix, formname)
{
        var obj = new Object;

        // members
        obj.pfx = prefix;
        obj.frm = formname;
        obj.cfm = new Array();

        // methods
        obj.atkSetConfirmator = atkSetConfirmator;
        obj.atkSet = atkSet;
        obj.atkDefault = atkDefault;
        obj.atkSubmit = atkSubmit;
        obj.atkSwitch = atkSwitch;
        obj.atkForm = atkForm;
        obj.atkCheckAll = atkCheckAll;

        ATKs[prefix] = obj;
        return obj;
}

function atk(prefix)
{
        if (! ATKs[prefix]) {
                alert('Unregistered ATK object: prefix ' + prefix);
        }
        return ATKs[prefix];
}
