/*
    <form action="http://app.bronto.com/public/actionpage/subscriber_add/?fn=Mail_ActionPage_FormResponse&pid=h9vqfetp76dnouobb7j4eyyorc3kj&ssid=698">
    <input name="email"/>
    <input name="field_data[7233]" /> //fname
    <input name="field_data[7234]"/>  //lname
    </form>
    var callback = function () {
        alert('Subscribed!');
    }

    $(form).bronto(callback);
*/
(function ($) {
    jQuery.fn.bronto = function (callback, validator) {
        return this.each(function () {
            $(this).submit(function (e) {
                    //this = form
                    e.preventDefault();
                    if(typeof validator == 'function') {
                        if(!validator(this)) {
                            return false;
                        }
                    }
                    if(!$(this).find("input[name='email']").val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) {
                        if (typeof console != 'undefined') {
                            console.log('email failed validation.');
                        }
                        return false;
                    }
                    var querystring = $(this).serialize();
                    var src = $(this).attr('action').concat('&'+querystring);
                    var img = $('<img/>').attr({ height:0,width:0,border:0,src:src });
                    $(document.body).append(img);
                    $.get('/log-email/', querystring, function (data) {
                        if (typeof console != 'undefined') {
                            console.log($(data).find('response').text());
                        }
                    }, 'xml'); 
                    if (typeof callback == 'function') {
                        callback();
                    }
            });
        });
    };

    jQuery.fn.brontoslideup = function(callback, validator) { 
        // check for plugin dependency
        if (jQuery.fn.cookie) { 
            // jquery.cookie plugin is required for brontoslideup
            if (typeof console != 'undefined') {
                console.log('jquery.cookie plugin needs to be loaded for brontoslideup plugin');
            }
            return false;
        }

        if (jQuery.cookie('dontshowslideup')) { 
            // do not display the slide up
            return false;
        }

        // display defaultvalue for the input elements
        $(this).children().each(function() { 

            var defaultVal = $(this).attr('defaultvalue');
            var val = $(this).val();
            // set default value when none present
            if (val == '') { 
                $(this).val(defaultVal);
            }
            $(this).focusin(function() {
                $(this).css('color', 'black');
                if ($(this).val() == defaultVal) { 
                    $(this).val('');
                }
            });
            $(this).focusout(function() {
                $(this).css('color', '#667');
                if ($(this).val() == '') { 
                    $(this).val(defaultVal);
                }
            });

        });

        var parentItem = $(this).parent();
        parentItem.slideDown("slow");

        $("#newsletterslideup_close").click(function(e) {
            e.preventDefault();
            parentItem.slideUp("slow");
            return false;
        });

        $("#newsletterslideup_dontshow").click(function(e) {
            e.preventDefault();
            jQuery.cookie('dontshowslideup', true, { path: '/' });
            parentItem.slideUp("slow");
            return false;
        });
        var callback = function () {
            alert('subscribed!');
            parentItem.slideUp("slow");
        }

        var emailValidator = function(form) { 
            if(!$(form).find("input[name='email']").val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) {
                if (typeof console != 'undefined') {
                    console.log('email failed validation.');
                }
                alert("Please enter a valid email address");
                return false;
            }
            return true;
        }

        $(this).bronto(callback, emailValidator);

    };
}) (jQuery);
