// 2006-02-17 lucas@amdica.com: File created.
// 2006-05-01 lucas@amdica.com: Added verify_email() and verify_opt_email().

// checks all fields supplied for completedness and alerts() if failed, returns false
function validate_not_null()
{
    var i = 0;
    var regex = new RegExp('^ *$');

    while(i < arguments.length)
    {
        if (!(arguments[i].value.length) || regex.test(arguments[i].value))
        {
            alert("Please Complete All Required Fields.\nRequired fields have red names.");
            return false;
        }
        ++i;
    }
    return true;
}

function validate_email(field)
{
    var i;
    var tlds = ['com','ca','net','org','ac','ad','ae','af','ag','ai','al','am',
                'an','ao','aq','ar','as','at','au','aw','ax','az','ba','bb','bd',
                'be','bf','bg','bh','bi','bj','bm','bn','bo','br','bs','bt','bv',
                'bw','by','bz','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn',
                'co','cr','cs','cu','cv','cx','cy','cz','de','dj','dk','dm','do',
                'dz','ec','ee','eg','eh','er','es','et','fi','fj','fk','fm','fo',
                'fr','ga','gb','gd','ge','gf','gg','gh','gi','gl','gm','gn','gp',
                'gq','gr','gs','gt','gu','gw','gy','hk','hm','hn','hr','ht','hu',
                'id','ie','il','im','in','io','iq','ir','is','it','je','jm','jo',
                'jp','ke','kg','kh','ki','km','kn','kp','kr','kw','ky','kz','la',
                'lb','lc','li','lk','lr','ls','lt','lu','lv','ly','ma','mc','md',
                'mg','mh','mk','ml','mm','mn','mo','mp','mq','mr','ms','mt','mu',
                'mv','mw','mx','my','mz','na','nc','ne','nf','ng','ni','nl','no',
                'np','nr','nu','nz','om','pa','pe','pf','pg','ph','pk','pl','pm',
                'pn','pr','ps','pt','pw','py','qa','re','ro','ru','rw','sa','sb',
                'sc','sd','se','sg','sh','si','sj','sk','sl','sm','sn','so','sr',
                'st','sv','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm',
                'tn','to','tp','tr','tt','tv','tw','tz','ua','ug','uk','um','us',
                'uy','uz','va','vc','ve','vg','vi','vn','vu','wf','ws','ye','yt',
                'yu','za','zm','zw','aero','biz','coop','info','museum','name',
                'pro','gov','mil','int','arpa','edu','su', 'eu'];

    var email_regex  = new RegExp('^ *([_0-9a-z-]+[_.0-9a-z-]*)@([_0-9a-z-][_.0-9a-z-]*)\\.([a-z]{2,}) *$');

    field.value = field.value.toLowerCase();
    var email_tokens = email_regex.exec(field.value);

    if (email_regex.test(field.value))
    {
        if (email_tokens.length)
        {
            var tld = email_tokens[email_tokens.length - 1];
            for(i = 0; i < tlds.length; ++i)
            {
                if (tlds[i] == tld)
                {
                    break;
                }
            }
            if (i == tlds.length)
            {
                alert('Invalid E-mail address.');
                return false;
            }
        }
    } else {
        alert('Invalid E-mail address.');
        return false;
    }

    return true;
}

function validate_opt_email(field)
{
    if (field.value)
    {
        return validate_email(field);
    } else {
        return true;
    }
}

function validate_iso_8601(field)
{
    var iso_8601_regex = new RegExp('^ *[12][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] *$');

    if (field.value)
    {
        if (iso_8601_regex.test(field.value))
        {
            return true;
        }
    }

    alert("Invalid Date.\nDates should be in the form of 2006-06-24");
    return false;
}

function validate_opt_iso_8601(field)
{
    if (field.value)
    {
        return validate_iso_8601(field);
    } else {
        return true;
    }
}

