var contactHtml;

$(document).ready(function() {

    $("#menu a[href]").each(function() {
        this.href = this.href.replace(/Index/, "Ajax");
    })
    .click(function() {
        $.get(this.href, null, function(data) {
            var $main = $("#main");
            $main.hide();
            $("#main").html(data);
            $main.fadeIn("slow");
        });
        return false;
    });


    $.get($("a[href$='/Contact']").attr("href"), null, function(data) {
        $("#dialog").html(data);
    });


    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 500,
        width: 500,
        modal: true,
        closeOnEscape: true,
        buttons: {
            'Send Email': function() {
                var bValid = true;
                $([]).add($("#txtName")).add($("#txtEmail")).add($("#txtMessage")).removeClass('ui-state-error');
                bValid = bValid && checkLength($("#txtName"), "Name", 3, 100);
                bValid = bValid && checkLength($("#txtEmail"), "Email", 6, 80);
                bValid = bValid && checkLength($("#txtMessage"), "Message", 1, null);

                // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                bValid = bValid && checkRegexp($("#txtEmail"), /^((([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, "Must be a valid email address.");

                if (bValid) {
                    var post = $("form").serialize();

                    $.post("/Ajax/Contact", post, function(data) {
                        contactHtml = $("#dialog").html();
                        
                        $("#dialog").html(data);
                        $("#dialog").dialog('option', 'hide', 'explode');
                        setTimeout("messageSuccess()", 3000);
                    });
                }
            },
            Cancel: function() {
                $("#dialog").dialog('option', 'hide', '');
                $("#dialog").dialog("close");
            }
        },
        close: function() {
            $([]).add($("#txtName")).add($("#txtEmail")).add($("#txtMessage")).val('').removeClass('ui-state-error');
        }
    });

    $("a[href$='/Contact']").unbind("click").live("click", function() {
        $(".contactSubmit").hide();
        $("#dialog").dialog("open");
        return false;
    });


});

function messageSuccess() {
    $("#dialog").dialog("close");
    $("#dialog").html(contactHtml);
    contactHtml = "";
}

function updateTips(t) {
    $("#validateTips").text(t).effect("highlight", {}, 2000);
}

function checkLength(o, n, min, max) {

    if (o.val().length < min) {
        o.addClass('ui-state-error');
        updateTips(n + " is required and must be must be " + min + " or more characters.");
        return false;
    }
    else if (max != null && o.val().length > max) {
        updateTips(n + " is required and must be must be " + max + " or fewer characters.");
        o.addClass('ui-state-error');
        return false;
    } else {
        return true;
    }
}

function checkRegexp(o, regexp, n) {

    if (!(regexp.test(o.val()))) {
        o.addClass('ui-state-error');
        updateTips(n);
        return false;
    } else {
        return true;
    }

}


