$(function () {
    // a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
    $("#dialog:ui-dialog").dialog("destroy");

    var name, email, businessType, allFields, tips;

    name = $("#fields_fname");
    email = $("#fields_email");
    businessType = $("#fields_business_type");
    allFields = $([]).add(name).add(email).add(businessType);
    tips = $(".validateTips");

    function updateTips(tipText) {
        tips.text(tipText).addClass("ui-state-highlight");
        setTimeout(function () {
            tips.removeClass("ui-state-highlight", 1500);
        }, 500);
    }

    function checkLength(field, label) {
        var valid = true;

        if (field.val().length < 3) {
            field.addClass("ui-state-error");
            updateTips("Please enter a valid " + label + ".");
            valid = false;
        }

        return valid;
    }

    function checkRegexp(field, regexp, n) {
        var valid = true;

        if (!( regexp.test(field.val()) )) {
            field.addClass("ui-state-error");
            updateTips(n);
            valid = false;
        }

        return valid;
    }

    $("#join-our-email-list").dialog({
        autoOpen:false,
        height:310,
        width:350,
        modal:true,
        buttons:{
            Submit:function () {
                var fieldsValid = true;
                allFields.removeClass("ui-state-error");

                fieldsValid = fieldsValid && checkLength(name, "first name");
                fieldsValid = fieldsValid && checkLength(email, "email");
                fieldsValid = fieldsValid && checkLength(businessType, "business type");

                // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                fieldsValid = fieldsValid && checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. name@mail.com");

                if (fieldsValid) {
                    $("#icpsignup5969").submit();

                    $(this).dialog("close");
                    // $("#join-our-email-list-thanks").dialog("open");
                }

                return fieldsValid;
            },
            Cancel:function () {
                $(this).dialog("close");
            }
        },
        close:function () {
            allFields.val("").removeClass("ui-state-error");
        }
    });

    $("#join-our-email-list-button")
        .button().click(function () {
            $("#join-our-email-list").dialog("open");
        });

    $("#join-our-email-list-thanks").dialog({
        autoOpen:false,
        height:500,
        width:600,
        modal:true,
        buttons:{
            Ok:function () {
                $(this).dialog("close");
            }
        }
    });
});

