﻿jQuery(function ($) {
    var subscription = {
        serviceUrl: '/api/email/subscriber',
        message: null,
        init: function () {
            $('a#btnSubscribe').click(function (e) {
                e.preventDefault();

                if (!$('input#txtSubscribe').val()) {
                    alert('Please type your e-mail address.');
                    return false;
                }

                if (!subscription.validateEmail($('input#txtSubscribe').val())) {
                    alert('The e-mail address you typed is invalid, please type it again!');
                    return false;
                }

               // var dataTest = { "Success": true, "Email": "abcd@abcd.com" };
               // subscription.submitEmail(dataTest);

                var url = subscription.serviceUrl + '/add?email=' + $('input#txtSubscribe').val() + '&key=N_8CDxOXMOw4HiwxXLo3JC5SJ0hBlphdChi12c63uvQaSKHoFOZd14HadQqyT_djcX8Ut7oNYX81';
                // load the contact form using ajax
                $.get(url, subscription.submitEmail);
            });
        },
        show: function (dialog) {
            $('#subscription-container .subscription-send').click(function (e) {
                e.preventDefault();
                // validate form
                if (subscription.validate()) {
                    var msg = $('#subscription-container .subscription-message');
                    msg.fadeOut(function () {
                        msg.removeClass('subscription-error').empty();
                    });
                    $('#subscription-container .subscription-title').html('Sending...');
                    $('#subscription-container form').fadeOut(200);
                    $('#subscription-container .subscription-content').animate({
                        height: '28px'
                    }, function () {
                        $('#subscription-container .subscription-loading').fadeIn(200, function () {
                            var sites = '';
                            $('input:checkbox[name=interest]:checked').each(function (i) {
                                if (sites)
                                    sites += ',';
                                sites += $(this).val();
                            });
                           
                            $.ajax({
                                url: subscription.serviceUrl + '/info',
                                type: "GET",
                                data: {
                                    email: $('#subscription-email').val(),
                                    id : $('#subscription-id').val(),
                                    gender: $('input:radio[name=gender]:checked').val(),
                                    year: $('#subscription-year').val(),
                                    zip: $('#subscription-zipcode').val(),
                                    key : "N_8CDxOXMOw4HiwxXLo3JC5SJ0hBlphdChi12c63uvQaSKHoFOZd14HadQqyT_djcX8Ut7oNYX81",
                                    site: sites
                                },
                                cache: false,
                                error : function(data) {
                                	var test = data;
                                },
                                success: function (data) {
//                                    $('#subscription-container .subscription-loading').fadeOut(200, function () {
//                                        $('#subscription-container .subscription-title').html('Thank you!');
//                                        msg.html(data).fadeIn(200);
                                    //                                    });

                                    $.modal.close()
                                    alert("Thank You");

                                }
                            });

                        });
                    });
                }
                else {
                    if ($('#subscription-container .subscription-message:visible').length > 0) {
                        var msg = $('#subscription-container .subscription-message div');
                        msg.fadeOut(200, function () {
                            msg.empty();
                            subscription.showError();
                            msg.fadeIn(200);
                        });
                    }
                    else {
                        $('#subscription-container .subscription-message').animate({
                            height: '30px'
                        }, subscription.showError);
                    }
                }
            });
        },
        validate: function () {
            subscription.message = '';
            if (!$('input:radio[name=gender]:checked').length) {
                subscription.message += 'Gender is required. ';
            }

            if (!$('#subscription-container #subscription-zipcode').val()) {
                subscription.message += 'Zipcode is required. ';
            }

            if (!$('#subscription-container #subscription-year').val()) {
                subscription.message += 'Year is required.';
            }

            if (subscription.message.length > 0) {
                return false;
            }

            return true;
        },
        validateEmail: function (email) {
            var at = email.lastIndexOf("@");

            // Make sure the at (@) sybmol exists and  
            // it is not the first or last character
            if (at < 1 || (at + 1) === email.length)
                return false;

            // Make sure there aren't multiple periods together
            if (/(\.{2,})/.test(email))
                return false;

            // Break up the local and domain portions
            var local = email.substring(0, at);
            var domain = email.substring(at + 1);

            // Check lengths
            if (local.length < 1 || local.length > 64 || domain.length < 4 || domain.length > 255)
                return false;

            // Make sure local and domain don't start with or end with a period
            if (/(^\.|\.$)/.test(local) || /(^\.|\.$)/.test(domain))
                return false;

            // Check for quoted-string addresses
            // Since almost anything is allowed in a quoted-string address,
            // we're just going to let them go through
            if (!/^"(.+)"$/.test(local)) {
                // It's a dot-string address...check for valid characters
                if (!/^[-a-zA-Z0-9!#$%*\/?|^{}`~&'+=_\.]*$/.test(local))
                    return false;
            }

            // Make sure domain contains only valid characters and at least one period
            if (!/^[-a-zA-Z0-9\.]*$/.test(domain) || domain.indexOf(".") === -1)
                return false;

            return true;
        },
        showError: function () {
            $('#subscription-container .subscription-message')
				.html($('<div class="subscription-error"></div>').append(subscription.message))
				.fadeIn(200);
        },
        submitEmail: function (data) {
            if (data && data.Success) {
            	
                $('#subscription-email').val(data.Email.Email);
                $('#subscription-id').val(data.Email.Id);
                // create a modal dialog with the data
                $('#subscription-container').modal({
                    position: ["57", ],
                    overlayId: 'subscription-overlay',
                    containerId: 'subscription-container',
                    onShow: subscription.show
                });

                return true;
            }

            return false;
        }
    };

    subscription.init();
});
