﻿/// <reference path="jquery-1.4.1-vsdoc.js" />

var clickOnce;

$(document).ready(function ()
{
    clickOnce = true;

    $("#background_more").click(function ()
    {
        if(clickOnce)
        {
            clickOnce = false;

            $("#advisor_background")
                .css("display", "block")
                .find("#copy")
                    .columnize({ columns: 3, doneFunc: set_3ColumnHeight, buildOnce: true });
        }
    });


    $("textarea,input:not(input[type=button],input[type=submit],button)")
    .addClass("inputInit")
    .focus(takeFocus);

    $("#form1").submit(validateForm);

    //$("textarea.validate,input.validate")
    //.after('<div class="fieldStatus"/>');

    $(".fieldStatus").addClass("fieldInit");
});



function takeFocus()
{
    field = $(this);
    field.removeClass("inputValid");
    field.removeClass("inputError");

    var status = field.parent().children(".fieldStatus");
    status.removeClass("fieldValid");
    status.removeClass("fieldError");
}

function validateForm()
{
    isFormValid = true; // reset

    $("textarea.validate,input.validate").each(validateField);

    if(isFormValid)
    {
        $("#frm_invalid").css("display", "none");

        return true;
    }
    else
    {
        $("#frm_invalid").css("display", "inline-block");

        return false;
    }
}



function validateField()
{
    field = $(this);

    try
    {
        var re; // Reqular Expression

        if(field.hasClass("required") || field.val().length > 0)
        {
            if(field.hasClass("asFirstName"))
            {
                // regex for first name
                re = new RegExp("[A-Za-z]{2,}");
                validateTextField(field, re);
            }
            else if(field.hasClass("asLastName"))
            {
                // regex for last name
                re = new RegExp("[A-Za-z]+([A-Za-z]|'|-){1,}");
                validateTextField(field, re);
            }
            else if(field.hasClass("asEmail"))
            {
                // regex for email
                re = new RegExp("\\b[\\w\\.-]+@[\\w\\.-]+\\.\\w{2,4}\\b");
                validateTextField(field, re);
            }
            else if(field.hasClass("asZipCode"))
            {
                // regex for phone
                re = new RegExp("^\\d{5}(-\\d{4})?$");
                validateTextField(field, re);
            }
            else if(field.hasClass("asBusinessName"))
            {
                // regex for date
                re = new RegExp("[A-Za-z]{2,}");
                validateTextField(field, re);
            }
            else if(field.hasClass("asPhoneNumber"))
            {
                // regex for date
                re = new RegExp("^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$");
                validateTextField(field, re);
            }
            else
            {
                re = new RegExp("");
                validateTextField(field, re);
            }
        }
        else
        {
            re = new RegExp("");
            validateTextField(field, re);
        }
    }
    catch(e) { }
}


function validateTextField(field, re)
{
    try
    {
        var fieldValue = field.val();
        var status = field.parent().children(".fieldStatus");

        if(fieldValue.match(re))
        {
            field.removeClass("inputError");
            field.addClass("inputValid");

            status.removeClass("fieldError");
            status.addClass("fieldValid");
        }
        else
        {
            isFormValid = false;

            field.removeClass("inputValid");
            field.addClass("inputError");

            status.removeClass("fieldValid");
            status.addClass("fieldError");
        }
    } catch(e) { }
}

