/* Author: Vince Carney

*/

$(document).ready(function() {
    // jquery defaultText plugin
    $.defaultText();

    // Get the Water.org Newsletter
    $("#newsletteropt-subscribe-ajax").submit(function(event) {
        event.preventDefault();
        var ajax_newsletter_subscribe_request = $.ajax({
            url: "/newsletteropt/subscribe/ajax/",
            type: "POST",
            data: {email : $("#id_email_ajax").val(), source : $("#id_source").val()},
            dataType: 'json',
            cache: false,
            success: function(data, textStatus, jqXHR) {
                if (data['success']) {
                    $("#newsletteropt-subscribe-confirmation").fadeIn();
                    _gaq.push(['_trackEvent', 'Email', 'Submitted', document.URL]);
                }
                else {
                    if (data['errors']['email']) {
                        $("#newsletteropt-subscribe-error").html("<p>" + data['errors']['email'] + "</p>");
                        $("#newsletteropt-subscribe-error").dialog({
                            modal: true,
                            buttons: {
                                Ok: function() {
                                    $( this ).dialog( "close" );
                                }
                            }
                        });
                    }
                }
            },
            error: function(jqXHR, textStatus, errorThrown) {
                alert('Error ' + errorThrown);
            }
        });
    });

    // Nav Bar Search
    $("#nav-bar-search a").click(function() {
        $("#nav-bar #search-wrapper").fadeToggle();
    });

    $("#search_page").submit(function(event) {
        if ($("#id_q").val() == " " || $("#id_q").val() == "") {
            event.preventDefault();
            var $dialog = $('<div></div>').html('Please enter a search term.').dialog({
                modal: true,
                buttons: {
                    Ok: function() {
                        $( this ).dialog( "close" );
                    }
                }
            });
        }
    });

    // Email Dialog - Capture on lesson plans
    dialog_html = '<p>Help make the water crisis history.</p><div class="validate-tips"></div><form><fieldset><table><tr><td><label for="join_email">Email: </label> <input type="text" name="join_email" id="join_email" class="text ui-widget-content ui-corner-all" /></td></tr></table></fieldset></form>';

    function updateTips(t) {
        $(".validate-tips").text(t).addClass('ui-state-highlight');
        setTimeout(function() {
            $(".validate-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("Length of " + n + " 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;
        }
    }

    var $dialog = $('<div id="dialog-form" title="Join Water.org"></div>')
        .html(dialog_html)
        .dialog({
                autoOpen: false,
                width: 335,
                resizable: false,
                modal: true,
                buttons: {
                    'Skip': function() {
                        $(this).dialog('close');
                        window.location.replace($dialog.link_url);
                    },
                    'Submit': function() {
                        var bValid = true;
                        $("input[id^='join_']").removeClass('ui-state-error');

                        // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                        bValid = bValid && checkRegexp($("#join_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, "Invalid email address.");

                        if (bValid) {
                            var displaySuccess = function(data) {
                                if (data['success']) {
                                    $(container).html('<p>Email accepted. Redirecting...</p>');
                                    $dialog.dialog('close');
                                    _gaq.push(['_trackEvent', 'Email', 'Submitted', document.URL]);
                                    window.location.replace($dialog.link_url);
                                }
                                else {
                                  alert("<p>" + data['errors']['email'] + "</p>");
                                }
                            };

                            var data = {
                                email: $("input#join_email").val(),
                                referrer: $(document)[0].referrer,
                                source: document.URL
                            };

                            var container = $("#dialog-form");
                            $.post("/newsletteropt/subscribe/ajax/", data, displaySuccess, "json");
                        }

                    }
                },
                close: function() {
                    $("input[id^='join_']").val('').removeClass('ui-state-error');
                    $(".validate-tips").text('');
                }
        });

    $("a.email-capture-dialog").click(function() {
        var email_capture_dialog_cookie = false;

        // Check if email_capture_dialog cookie already exists
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf("email_capture_dialog=");
            if (c_start != -1) {
                // Let's assume the cookie is set and redirect user to link destination
                email_capture_dialog_cookie = true;
            }
        }

        if (!email_capture_dialog_cookie) {
            // Set the cookie
            var exdate = new Date();
            exdate.setDate(exdate.getDate() + 365);
            document.cookie = "email_capture_dialog=true;expires=" + exdate.toUTCString() + ";path=/";
            // Open the dialog modal window
            $dialog.dialog('open');
            $dialog.link_url = $(this).attr('href');
            return false;
        }
    });

    $('a.ui-dialog-titlebar-close').click(function() {
        $dialog.dialog('close');
    });
});
