function encode(str) {
    var ret = str;
    if (str) {
        ret = escape(str.replace(/\+/g, '&#43;'));
    }
    return ret;
}

function decode(str) {
    var ret = str.replace(/&amp;/g, '&');
    ret = ret.replace(/&lt;/g, '<');
    ret = ret.replace(/&gt;/g, '>');
    return ret;
}

function submitButton(elem, event, doBlur) {
    var evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
    
    if (charCode == 13 || charCode == 3) {
        if (elem) {
            if ((doBlur == null) || !doBlur) {
                if (elem.onclick) {
                    elem.onclick();
                } else {
                    elem.click();
                }
            } else {
                elem.blur();
            }
        }
        
        return false;
    }
    
    return true;
}

function submitOnce(evt) {
    if (evt) {
        submitOnce = blockIt;
    }
    
    return true;
}

function blockIt(evt) {
    return false;
}

function submitForm(elem, myForm) {
    var newElem = document.createElement('input');
    newElem.setAttribute('type', 'hidden');
    newElem.setAttribute('name', elem.id);
    newElem.setAttribute('value', '1');
    elem.parentNode.insertBefore(newElem, elem);
    myForm.submit();
}

function submitFormOnce(elem, myForm) {
    var ret = submitOnce(true);
    
    if (ret) {
        submitForm(elem, myForm);
    }
    
    return ret;
}
