/**
 * so far, this handles text inputs, radio buttons/checkboxes, select lists, and textareas
 * it is nice that this doesn't require a JS library (like Prototype or jQuery) to work
 * the error strings might have to be customized
 * use this ---> <form ... onsubmit="return checkRequired(this);">
 */

function checkRequired(form) {
    var inputEle    = form.getElementsByTagName('input');
    var textareaEle = form.getElementsByTagName('textarea');
    var selectEle   = form.getElementsByTagName('select');
    var requiredEle = new Array();
    var errors = new Array();

    for(i = 0; i < inputEle.length; i++) {
        if(inputEle[i].getAttribute("name") == 'required') {
            requiredEle[inputEle[i].value] = 1;
        }
    }

    var error_strings = {
        'Name'                      : 'Please enter your name.',
        'Business-Name'             : "Please enter your Business's name.",
        'Phone'                     : 'Please enter your phone number.',
        'Email'                     : 'Please enter your email address.',
        'HowDidYouHear'             : 'Please tell us how you heard of us.',
        'Case-Description'          : 'Please enter a case description.',
        'Nature-of-Legal-Inquiry'   : 'Please enter the nature of your legal inquiry.'
    };

    var requiredRadioEle     = new Array();
    var requiredRadioEleHash = new Array();

    for(i = 0; i < inputEle.length; i++)
    {
        if(requiredEle[inputEle[i].name])
        {
            if(inputEle[i].type == "radio")
            {
                if( ! requiredRadioEleHash[inputEle[i].name] )
                {
                    requiredRadioEle.push(inputEle[i]);

                    requiredRadioEleHash[inputEle[i].name] = 1;
                }

                if(inputEle[i].checked)
                {
                    requiredRadioEleHash[inputEle[i].name] = 2;
                }
            }
            else
            {
                if(inputEle[i].value.length < 1) {
                    //errors.push('The Field ' + inputEle[i].getAttribute("name") + ' is required.');
                    errors.push(error_strings[inputEle[i].getAttribute("name")]);
                }
            }
        }
    }

    for(i = 0; i < requiredRadioEle.length; i++)
    {
        if( requiredRadioEleHash[requiredRadioEle[i].name] == 1 )
        {
            errors.push(error_strings[requiredRadioEle[i].name]);
        }
    }

    for(i = 0; i < textareaEle.length; i++) {
        if(requiredEle[textareaEle[i].getAttribute("name")]) {
            if(textareaEle[i].value.length < 1) {
                //errors.push('The Field ' + textareaEle[i].getAttribute("name") + ' is required.');
                errors.push(error_strings[textareaEle[i].getAttribute("name")]);
            }
        }
    }

    for (i = 0; i < selectEle.length; i++)
    {
        if (requiredEle[selectEle[i].name])
        {
            if (selectEle[i].options[selectEle[i].selectedIndex].value.length < 1)
            {
                errors.push(error_strings[selectEle[i].name]);
            }
        }
    }

    if(errors.length > 0) {
        alert("Please fix the following errors:\n\n" + errors.join("\n"));
        return false;
    }

    return true;
}

////////////////////////////////////////////////////////////////////////////////
// code for the email disclaimer
function confirm_email ()
{
    var message = "While BAKER AND RANNELLS, PA provides this e-mail link to make it easier to contact us, sending us an e-mail does not create an attorney-client relationship. In no event should you send us confidential information until you speak with one of our lawyers and receive authorization to send that information to us. If you are not currently a client of BAKER AND RANNELLS, PA, your e-mail is not privileged; we may disclose its content to other persons or use it in the representation of others adverse to you; and no lawyer in our firm will be precluded from representing parties adverse to you because you send us information that you regard as confidential.";

    return confirm(message);
}

$(function () {
    $('a.confirm_email').click(function () { return confirm_email(); });
});


////////////////////////////////////////////////////////////////////////////////
// code for temporary form field values
function focus_default_value (el)
{
    var $el = $(el);

    if ($el.val() == $el.attr('default_value'))
    {
        $el.val('');
    }
}

function blur_default_value (el)
{
    var $el = $(el);

    if ($el.val() == undefined || $el.val() == '')
    {
        $el.val($el.attr('default_value'));
    }
}

$(window).load(function () {
    $('form').each(function () {
        var form = this;
        var $form = $(this);

        $form.find('input[default_value]').each(function () {
            var $el_input = $(this);

            blur_default_value(this);

            $el_input.focus(function () {
                focus_default_value(this);
            });

            $el_input.blur(function () {
                blur_default_value(this);
            });
        });

        $form.find('textarea[default_value]').each(function () {
            var $el_textarea = $(this);

            blur_default_value(this);

            $el_textarea.focus(function () {
                focus_default_value(this);
            });

            $el_textarea.blur(function () {
                blur_default_value(this);
            });
        });

        $form.submit(function () {
            $form.find('input[default_value]').each(function () {
                focus_default_value(this);
            });

            $form.find('textarea[default_value]').each(function () {
                focus_default_value(this);
            });

            if (checkRequired(form) && confirm_email())
            {
                return true;
            }
            else
            {
                $form.find('input[default_value]').each(function () {
                    blur_default_value(this);
                });

                $form.find('textarea[default_value]').each(function () {
                    blur_default_value(this);
                });

                return false;
            }
        });
    });
});

