
function addLoadEvent(f) {
    var old = window.onload;
    if ( typeof window.onload != 'function' ) {
        window.onload = f;
    } else {
        window.onload = function() {
            old();
            f();
        }
    }
}
function validateForm(f) {
    if (f.name == "payments" && !validatePurchaseForm(f) ) return false;
    if ( f.action.indexOf( "$(MYIP)" ) != -1 ) {
        f.action = f.action.replace( /\$\(MYIP\)/g, myip )
    }
    for ( var i=0; i < f.elements.length; ++i ) {
        var el = f.elements[i];
        if ( el.className.indexOf("req") != -1 ) {
            if ( el.value.length < 1 ) {
                alert( "Please fill in "+el.name );
                return false;
            }
        }
        if ( el.value.indexOf("$(MYIP)") != -1 ) {
            el.value = el.value.replace( /\$\(MYIP\)/g, myip )
        }
    }
    return true;
}

function validatePurchaseForm(f) {
    var prods = document.getElementsByName("product");
    var refno = document.getElementsByName("reference_number")[0]
    var fnd = false;
    for ( var i=0; i < prods.length; ++i ) {
        var a = document.getElementsByName( prods[i].value );
        if (prods[i].checked) {
            a[0].value = "1";
            fnd = true;
            if (prods[i].value == "gdbu" && refno.value.length < 1 ) {
                alert("Please supply Serial Number for GDBU copy.");
                return false;
            }
            if (prods[i].value == "Pay_Invoice" && refno.value.length < 1 ) {
                alert("Please supply Invoice Number for invoice being paid");
                return false;
            }
        } else {
            a[0].value = "0";
        }
    }
    if ( !fnd ) alert("No product selected");
    return fnd;
}

function prepareForms() {
    for ( var i=0; i < document.forms.length; ++i ) {
        var f = document.forms[i];
        f.onsubmit = function() {
            return validateForm(this);
        }
    }
}

addLoadEvent( prepareForms )

