﻿function validateField(formname, fieldid, validationnoticeid, errormessage, groupedfieldstext, pattern, required, separator)
{
    var fieldvalue = "";
    var groupedfields = null;
    var validationspan = null;
    
    if(groupedfieldstext != "")
    {
        groupedfields = groupedfieldstext.split(",");
    }
    
    if (pattern == "")
    {
    }
    
    if(validationnoticeid != "")
    {
        validationspan = document.getElementById(validationnoticeid);
    }
    
    if(validationspan != null)
    {
        validationspan.style.display = "none";
    }
    
    if(groupedfields != null && groupedfields.length > 0)
    {
        for(i = 0; i < groupedfields.length; i++)
        {
            var groupedfield = document.getElementById(groupedfields[i]);
            groupedfield.className = "required";

            if (groupedfield.type == "radio")
            {
                var field = document.getElementById(fieldid);
                field.className = "required";
                
                if (groupedfield.checked)
                {
                    fieldvalue += "true_";
                }
            }
            else
            {
                if (separator != "" && i > 0)
                {
                    fieldvalue += separator;
                }
                fieldvalue += groupedfield.value;
            }
        }
    }
    else
    {
        var field = document.getElementById(fieldid);
        fieldvalue = field.value;
        field.className = "required";
    }
    
    var fieldValid = true;
    if(pattern != "")
    {
        var isrequired = false;
        if (required.toLowerCase() == "true")
        {
            isrequired = true;
        }

        if (!isrequired && fieldvalue == "")
        {
            fieldValid = true;
        }
        else
        {
            var re = new RegExp(pattern)
            fieldValid = re.test(fieldvalue);        
        }
    }
    else
    {
        if(fieldvalue == "")
        {
            fieldValid = false;
        }        
    }
    
    //Apply error messages and classes
    if(!fieldValid)
    {
        if(validationspan != null)
        {
            validationspan.style.display = "inline";
        }            
    
        if(groupedfields != null && groupedfields.length > 0)
        {
            var isRadioCollection = false;
            
            for(i = 0; i < groupedfields.length; i++)
            {
                var groupedfield = document.getElementById(groupedfields[i]);
                if (groupedfield.type == "radio")
                {
                    isRadioCollection = true;
                    break;
                }
                groupedfield.className = formname + "_Error";
            }

            if (isRadioCollection)
            {
                var field = document.getElementById(fieldid);
                field.className = formname + "_Error";
            }
        }
        else
        {
            var field = document.getElementById(fieldid);
            field.className = formname + "_Error";
        }
        
        if(errormessage != "")
        {
            return errormessage;
        }
        else
        {
            return false;
        }                       
    }
    
    return true;
}

function addErrorMessage(errorsarray, message)
{
    if(message != true)
    {  
        errorsarray.push(message);
    }
    
    return errorsarray;
}

function updateSummary(vsummary, vsummarymessage, errormessages)
{
    if (vsummary != null)
    {
        //Remove child nodes
        if (vsummary.hasChildNodes())
        {
            while (vsummary.childNodes.length >= 1)
            {
                vsummary.removeChild(vsummary.firstChild);
            }
        }

        //Add error messages
        if (errormessages.length > 0)
        {
            vsummary.style.display = "block";
            vsummary.innerHTML += vsummarymessage;
            var list = document.createElement("ul");
            for (i = 0; i < errormessages.length; i++)
            {
                var listitem = document.createElement("li");
                var message = errormessages[i];
                listitem.innerHTML = message;
                list.appendChild(listitem);

            }
            vsummary.appendChild(list);
        }
        else
        {
            vsummary.style.display = "block";
        }
    }
}
