function MM_findObj(n, d)
{ //v4.01
    var p, i, x;
    if (!d)
        d = document;
    if ((p = n.indexOf("?")) > 0 && parent.frames.length)
    {
        d = parent.frames[n.substring(p + 1)].document;
        n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all)
        x = d.all[n];
    for (i = 0; !x && i < d.forms.length; i++)
        x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++)
        x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById(n))
        x = d.getElementById(n);
    return x;
}

function MM_validateForm()
{ //v4.0
    var i, p, q, nm, test, num, min, max, errors = '', args = MM_validateForm.arguments;
    for (i = 0; i < (args.length - 2); i += 3)
    {
        test = args[i + 2];
        val = MM_findObj(args[i]);
        if (val)
        {
            nm = val.name;
            if ((val = val.value) != "")
            {
                if (test.indexOf('isEmail') != -1)
                {
                    p = val.indexOf('@');
                    if (p < 1 || p == (val.length - 1))
                        errors += '- ' + nm + ' must contain an e-mail address.\n';
                }
                else if (test != 'R')
                {
                    num = parseFloat(val);
                    if (isNaN(val))
                        errors += '- ' + nm + ' must contain a number.\n';
                    if (test.indexOf('inRange') != -1)
                    {
                        p = test.indexOf(':');
                        min = test.substring(8, p);
                        max = test.substring(p + 1);
                        if (num < min || max < num)
                            errors += '- ' + nm
                                    + ' must contain a number between ' + min
                                    + ' and ' + max + '.\n';
                    }
                }
            }
            else if (test.charAt(0) == 'R')
                errors += '- ' + nm + ' is required.\n';
        }
    }
    if (errors)
        alert('The following error(s) occurred:\n' + errors);
    document.MM_returnValue = (errors == '');
}

function isValidEmail(emailAddr) {
    return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailAddr);
}

function isValidNumber(value, min, max) {
    var num = parseFloat(value);
    if (value === "" || (!isNaN(num) && (num < min || num > max))) {
        return false;
    }
    return true;
}

