﻿
//START ----- jQuery UI for Dialog Modal
$(function () {
    // a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
    $("#dialog").dialog("destroy");

    var name = $("#name"),
	    email = $("#email"),
	    allFields = $([]).add(name).add(email),
	    tips = $(".validateTips");

    function updateTips(t) {
        tips
		.text(t)
		.addClass('ui-state-highlight');
        setTimeout(function () {
            tips.removeClass('ui-state-highlight', 1500);
        }, 500);
    }

    function updateTipsSucess(t) {
        tips
	    .text(t)
	    .addClass('ui-state-highlight-sucess');
    }


    function checkLength(o, n, min, max) {
        if (o.val().length > max || o.val().length < min) {
            o.addClass('ui-state-error');
            updateTips("Length of " + n + " must be between " + min + " and " + max + ".");
            return false;
        }
        else {
            return true;
        }
    }

    function checkLengthFieldName(o, n, fieldname, min, max) {
        if (o.val().length > max || o.val().length < min) {
            o.addClass('ui-state-error');
            updateTips("Length of " + fieldname + " must be between " + min + " and " + 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;
        }
    }

    $("#dialog-form").dialog({
        autoOpen: false,
        height: 300,
        width: 350,
        modal: true,
        buttons: {
            'Join our mailing list': function () {
                var bValid = true;
                allFields.removeClass('ui-state-error');
               
                bValid = bValid && checkLength(name, "name", 3, 16);
                bValid = bValid && checkLength(email, "email", 6, 80);

                bValid = bValid && checkRegexp(name, /^[a-z]([0-9a-z_])+$/i, "Please enter your first name only.");
                // 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, "Oops! Please enter a valid email address");

                if (bValid) {
                    $(function () {
                        $.getJSON("/MailingList/Create", { name: name.val(), email: email.val() },
                                        function (data) {
                                            switch (data) {
                                                case 'success':
                                                    updateTipsSucess("Thank you for joining our mailing list.");
                                                    $("#dialog-form").dialog({
                                                        buttons: { 'Close': function () {
                                                            $(this).dialog('close'); 
                                                        } }
                                                    });
                                                    break;
                                                case 'fail':
                                                    updateTips("Sorry, your subscription was unsuccessful. Please try again later");
                                                    break;
                                            }
                                        })
                    }
                            );

                }
            },
            Cancel: function () {
                $(this).dialog('close');
            }
        },
        close: function () {
            allFields.val('').removeClass('ui-state-error');
        }
    });


    $('#MailingList').click(function () {
        $('#dialog-form').dialog('open');
        $("#dialog-form").parent().addClass("ui-widget-content-dialog");
        $("#dialog-form input").addClass("ui-widget-content-dialog");
        $("#dialog-form").prev().addClass("ui-widget-header-dialog");
    });



    //Residential Gallery

    var yourname = $("#yourname"),
	    youremail = $("#youremail"),
	    friendname = $("#friendname"),
	    friendemail = $("#friendemail"),
	    subject = $("#subject"),
	    yourmessage = $("#yourmessage"),
	    allFields = $([]).add(yourname).add(youremail).add(friendname).add(friendemail).add(subject).add(yourmessage),
	    tips = $(".validateTips");

    $("#dialog-form-galleryemail").dialog({
        autoOpen: false,
        height: 480,
        width: 350,
        modal: true,
        buttons: {

            'Share gallery with a friend': function () {
                var bValid = true;
                allFields.removeClass('ui-state-error');

                bValid = bValid && checkLengthFieldName(yourname, "yourname", "Your Name", 3, 40);
                bValid = bValid && checkLengthFieldName(youremail, "youremail", "Your Email", 6, 80);
                bValid = bValid && checkLengthFieldName(friendname, "friendname", "Friends Name", 3, 40);
                bValid = bValid && checkLengthFieldName(friendemail, "friendemail", "Friends Email", 6, 80);
                bValid = bValid && checkLengthFieldName(subject, "subject", "Subject", 3, 50);
                bValid = bValid && checkLengthFieldName(yourmessage, "yourmessage", "Message", 6, 150);

                bValid = bValid && checkRegexp(yourname, /^[a-z]([0-9a-z_])+$/i, "Please enter your first name only.");
                bValid = bValid && checkRegexp(youremail, /^((([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, "Oops! Please enter your valid email address");
                bValid = bValid && checkRegexp(friendname, /^[a-z]([0-9a-z_])+$/i, "Please enter your friends first name only.");
                bValid = bValid && checkRegexp(friendemail, /^((([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, "Oops! Please enter friends valid email address");

                if (bValid) {
                    $(function () {
                        $.getJSON("/ResidencesGallery/Create", { yourname: yourname.val(), youremail: youremail.val(),
                            friendname: friendname.val(), friendemail: friendemail.val(),
                            subject: subject.val(), yourmessage: yourmessage.val()
                        },
                                function (data) {
                                    switch (data) {
                                        case 'success':
                                            updateTipsSucess("Your email has been sent to your friend.");
                                            $("#dialog-form-galleryemail").dialog({
                                                buttons: { 'Close': function () { $(this).dialog('close'); } }
                                            });
                                            break;
                                        case 'fail':
                                            updateTips("Sorry, your email was unsuccessful. Please try again later");
                                            break;
                                    }
                                })
                    }
                            );

                }
            },
            Cancel: function () {
                $(this).dialog('close');
            }
        },
        close: function () {
            allFields.val('').removeClass('ui-state-error');
        }
    });


    $('#ResidencesGallery').click(function () {
        $('#dialog-form-galleryemail').dialog('open');
    });

});
// END --- jQuery UI for Dialog Modal




