$(function() {
    // a workaround for a flaw in the demo system
    // (http://dev.jqueryui.com/ticket/4375), ignore!
    $("#dialog:ui-dialog").dialog("destroy");

    var name = $("#name"), email = $("#email"), phone = $("#phone"), address = $("#address"), message = $("#message"), allFields = $(
			[]).add(name).add(email).add(phone).add(address).add(message), tips = $(".validateTips");

    function updateTips(t) {
        tips.text(t).addClass("ui-state-highlight");
        setTimeout(function() {
            tips.removeClass("ui-state-highlight", 1500);
        }, 500);
    }

    function checkLength(o, n, min, max) {
        if (o.val().length > max || o.val().length < min) {
            o.addClass("ui-state-error");
            updateTips("Поле " + n + " должно содержать от " + min + " до "
                    + max + " символов.");
            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;
        }
    }

    $("#quickContactForm")
            .dialog(
            {
                autoOpen : false,
                height : 550,
                width : 500,
                modal : true,
                buttons : {
                    "Отправить" : function() {
                        var bValid = true;
                        allFields.removeClass("ui-state-error");

                        bValid = bValid
                                && checkLength(name, "Имя", 3, 100);
                        bValid = bValid
                                && checkLength(email, "Email", 6, 100);
                        bValid = bValid
                                && checkLength(message, "Сообщение", 3, 1000);

                        bValid = bValid
                                && checkRegexp(name,
                                /^[a-zа-я]([0-9а-яa-z_ ])+$/i,
                                "Имя должно начинаться на букву и может содержать буквы, цифры и пробел.");
                        // From jquery.validate.js (by joern),
                        // contributed by Scott Gonzalez:
                        // http://projects.scottsplayground.com/email_address_validation/
                        bValid = bValid
                                && 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. ui@jquery.com");

                        if (bValid) {
                            var modal = this;
                            $.ajax({
                                url: '/company/sendMessage/',
                                data: {send_contact_form: 1, name: name.val(), email: email.val(), phone: phone.val(), address: address.val(), text: message.val()},
                                dataType: 'json',
                                type: 'GET',
                                success: function(response) {
                                    if (response.result == true) {
                                        var message = '<p id="sendMessageResult">Сообщение отправлено</p>';
                                    }
                                    $(modal).dialog("close");
                                    $('#sendQuickMessageResult').append(message);
                                    setTimeout("$('#sendMessageResult').remove()", 3000);
                                }
                            });
                        }
                    },
                    Cancel : function() {
                        $(this).dialog("close");
                    }
                },
                close : function() {
                    allFields.val("").removeClass("ui-state-error");
                }
            });

    $("#sendQuickMessage").button().click(function() {
        $("#quickContactForm").dialog("open");
    });
});
