﻿function ValidateForm()
{
    var errors = false;
    for(var i = 0; i < validate_fields.length; i++)
        if(!ValidateField(document.getElementById(validate_fields[i])))
            errors = true;
    return !errors;
}

function ValidateField(c)
{
    return DoValidate(c, "requiredText", "errorColor", ValidateLength) &&
           DoValidate(c, "formatText"  , "errorColor", ValidateFormat);
}

function DoValidate(c, ta, ca, delegate)
{
    var l = GetLabel(c);
    var tv = c.getAttribute(ta);
    var cv = l.getAttribute(ca);
    if(tv == null || cv == null)
        return true;

    if(delegate(c))
    {
        if(typeof(l.backup) != 'undefined')
        {
            l.innerHTML = l.backup.innerHTML;
            l.innerHTML = l.backup.innerHTML;
            l.style.color = l.backup.color;
        }
        return true;
    }

    if(typeof(l.backup) == 'undefined')
    {
        l.backup = {innerHTML:l.innerHTML,color:l.style.color};
    }
    l.innerHTML = l.backup.innerHTML + " " + tv;
    l.style.color = cv;

    return false;
}

function ValidateLength(c)
{
    return c.value.length != 0;
}

function ValidateFormat(c)
{
    var format = c.getAttribute("format");
    var regex = new RegExp(format, "g")
    return regex.test(c.value);
}

function GetLabel(f)
{
    var labels = document.getElementsByTagName('LABEL');
    for (var i=0; i<labels.length; i++)
        if(f.id == labels[i].htmlFor)
            return labels[i];
    return null;
}