﻿var IsFormError = false;

function DisplayError(name)
{
    var idArrow = jQuery('#errArrow' + name);
    var idText = jQuery('#errText' + name);

    if (idArrow != null)
    {
        idArrow.style.display = 'block';
    }
    if (idText != null)
    {
        idText.style.display = 'block';
    }

    IsFormError = true;
}

function RemoveError(names)
{
    if (Object.isArray(names))
    {
        names.each(
        function(name)
        {
            RemoveErrorByName(name);
        });
    }
    else
    {
        RemoveErrorByName(names);
    }
}

function RemoveErrorByName(name)
{
    var idArrow = jQuery('#errArrow' + name);
    var idText = jQuery('#errText' + name);

    if (idArrow != null)
    {
        idArrow.hide();
    }
    if (idText != null)
    {
        idText.hide();
    }
}

function IsEmptyOrExample(field)
{
    if (field.value.blank())
    {
        return true;
    }

    var defValue = field.readAttribute('ExampleValue');
    
    if (defValue != 'undefined' && defValue == field.value)
    {
        return true;
    }

    return false;
}

function StripSpaces(e)
{
    var x = e.value;
    e.value = (x.replace(/^\s+/, '')).replace(/\s+$/, '');
}
function StyleDefaultValues(field)
{
    var exampleValue = Element.readAttribute(field,'ExampleValue');

    if (exampleValue != 'undefined')
    {
        if (exampleValue == field.value)
        {
            SetClass(field, "DefaultData", true);
            SetClass(field, "UserData", false);
        }
        else
        {
            SetClass(field, "DefaultData", false);
            SetClass(field, "UserData", true);
        }
    }
}
function SetClass(field, cssClassName, isOn)
{
    if (isOn)
    {
        if (Element.hasClassName(field, cssClassName))
        {
            // Do nothing
        }
        else
        {
            Element.addClassName(field, cssClassName);
        }
    }
    else
    {
        if (Element.hasClassName(field, cssClassName))
        {
            Element.removeClassName(field, cssClassName);
        }
        else
        {
            // Do nothing
        }
    }
}

function StyleDropDownDefaultValues(field)
{
    if (field.options[field.selectedIndex].value == "Please Select ...")
    {
        SetClass(field, "DefaultData", true);
        SetClass(field, "UserData", false);
    }
    else
    {
        SetClass(field, "DefaultData", false);
        SetClass(field, "UserData", true);
    }
}


// ----------------------------------------------------------------------------------------------
// Standard control validators
// ----------------------------------------------------------------------------------------------

function Validate_RequiredTextBox(errorName, fieldId)
{
    var field = jQuery('#' + fieldId);

    if (IsEmptyOrExample(field))
    {
        DisplayError(errorName);
    }
}

function Validate_RequiredTextBox(errorName, fieldId)
{
    var field = jQuery('#' + fieldId);

    if (IsEmptyOrExample(field))
    {
        DisplayError(errorName);
    }
}

function Validate_RequiredDropDown(errorName, fieldId, invalidValue)
{
    var field = jQuery('#' + fieldId);

    if (field.options[field.selectedIndex].value == invalidValue)
    {
        DisplayError(errorName);
    }
}

function Validate_RequiredTextBoxAtLeastOne(errorName, fieldIds)
{
    var valueFound = false;

    fieldIds.each(function(fieldId)
    {
        var field = jQuery('#' + fieldId);

        valueFound = valueFound || !IsEmptyOrExample(field);
    });

    if (!valueFound)
    {
        DisplayError(errorName);
    }
}

function Validate_Phone(errorName, fieldId)
{
    var phoneRegex = /[^0-9\+\-\(\)\s]/i;

    var field = jQuer('#' + fieldId);

    // Use != for match close enough format
    if (field.value.match(phoneRegex) != null)
    {
        DisplayError(errorName);
    }
}
function Validate_PhoneStrict(errorName, fieldId)
{
    var phoneRegex = /^\({0,1}((0|\+61)(2|4|3|7|8)){0,1}\){0,1}(\ |-){0,1}[0-9]{2}(\ |-){0,1}[0-9]{2}(\ |-){0,1}[0-9]{1}(\ |-){0,1}[0-9]{3}$/i;

    var field = jQuery('#' + fieldId);

    // Use == for match exact format
    if (field.value.match(phoneRegex) == null)
    {
        DisplayError(errorName);
    }
}

function Validate_Email(errorName, fieldId)
{
    var emailRegex = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;

    var field = jQuery('#' + fieldId);

    if (field.value.match(emailRegex) == null)
    {
        DisplayError(errorName);
    }
}
function Validate_PostCode(errorName, fieldId)
{
    var postcodeRegex = /^\d{4}$/;

    var field = jQuery('#' + fieldId);

    if (field.value.match(postcodeRegex) == null)
    {
        DisplayError(errorName);
    }
}

function Validate_Number(errorName, fieldId)
{   
    // Not yet tested
    var regex = /\d+/;

    var field = jQuer('#' + fieldId);

    if (field.value.match(regex) != null)
    {
        DisplayError(errorName);
    }
}

function Validate_Money(errorName, fieldId)
{
    var regex = /[^0-9\,\.]/i;

    var field = jQuery('#' + fieldId);

    if (field.value.match(regex) != null)
    {
        DisplayError(errorName);
    }
}

function ValidateForm_CheckBoxTrue(errorName, fieldId)
{
    var field = jQuery('#' + fieldId);

    if (!field.checked)
    {
        DisplayError(errorName);
    }
}

