var _dataHandler = null;
var _dataForm = null;
var _fromJS = false;
var _waitMsg = 'Please wait...';

function submitOnClick(frm) {
    //Do not want to get stuck in loop if test passes.
    if (_fromJS) {
        _fromJS = false;
        return(true);
    }

    _dataForm = frm;
    var msg = 'Please wait...';
    var displayed = setMessage('message_top',_waitMsg);
    displayed = setMessage('message_bottom',_waitMsg) || displayed;
    if (!displayed) {
        alert(msg);
    }

    _dataHandler = new XMLDataHandler(frm.action,true,finishSubmitOnClick);
    var ht = new Array();
    ht['javascript'] = 1;
    for (var i = 0; i < frm.elements.length; i++) {
        var elt = frm.elements[i];
        if (typeof elt == 'undefined') continue;

        ht[elt.name] = elt.value;
    }
    ht['job'] = 'error_check';
    _dataHandler.post(ht);

    //This function is called from a submit element and must return false or the form will be
    //submitted twice.
    return(false);
}

function finishSubmitOnClick() {
    var req = _dataHandler.getReq();
    if (req.readyState != 4) return;

    _dataHandler._initialized = true;

    var msg = '';
    if (req.status != 200) {
        msg = req.statusText;
    } else {
        msg = req.responseText;
    }

    var lmsg = msg;
    if (lmsg.indexOf('reCAPTCHAFlag') == 0) {
        var a = lmsg.split('=');
        _dataForm.reCAPTCHA_flag.value = a[1];
        lmsg = '';
        msg = '';
    }

    if (lmsg == '') {
        lmsg = _waitMsg;
    }

    var displayed = setMessage('message_top',lmsg);
    displayed = setMessage('message_bottom',lmsg) || displayed;
    if (!displayed && lmsg) {
        alert(lmsg);
    }

    if (msg == '') {
        _fromJS = true;
        _dataForm.submit();
    }
}

function setMessage(eltID,msg) {
    var elt = document.getElementById(eltID);
    if (typeof elt == 'undefined' || elt == null) {
        return(false);
    }

    elt.innerHTML = msg;
    return(true);
}
