﻿function InitNewsletterWidget(formControl) {

    $('#' + formControl).find('#txtName').watermark(
        '{html:"Your Name",cls:"NewsletterWidgetWatermark"}');

    $('#' + formControl).find('#txtEMail').watermark(
        '{html:"Your E-mail",cls:"NewsletterWidgetWatermark"}');

    $('#' + formControl).validate({
        errorElement: "span",
        messages: {
            txtEMail: {
                required: '<span>Email:Is Required</span>',
                email: '<span>Email:Invalid format</span>'
            },
            txtName: '<span>Name:Is Required</span>',
            optNewsletter: '<span>Sel. at least one guide</span>'
        },
        submitHandler: function(form) {
            if ($(form).valid()) {

                var dataSourceType = $(form).find('#dataSourceType').val(),
                    exactTargetNewsletter = $(form).find('#exactTargetNewsletter').val()
                i;
                i = 0;

                if ($(form).find('.optNewsletter').length > 0) {
                    var newsletterName = dataSourceType.split(','),
                        etNewsletterName = exactTargetNewsletter.split(',');
                        
                    dataSourceType = '';
                    exactTargetNewsletter = '';

                    $(form).find('.optNewsletter').each(function() {
                        if ($(this).attr('checked')) {
                            dataSourceType += ((dataSourceType == '') ? '' : ',') + newsletterName[i];
                            exactTargetNewsletter += ((exactTargetNewsletter == '') ? '' : ',') + etNewsletterName[i];
                        }
                        i++;
                    });
                }

                $.ajax({
                    type: 'POST',
                    url: '/services/NewsletterService.asmx/AddSubscriber',
                    contentType: 'application/json; charset=utf-8',
                    data: "{'name': '" + $(form).find('#txtName').val() + "','email': '"
                        + $(form).find('#txtEMail').val() + "','ts': '"
                        + $(form).find('#ts').val() + "','adCategory': '"
                        + $(form).find('#adCategory').val() + "','dataSourceType': '"
                        + dataSourceType + "','exactTargetNewsletter': '"
                        + exactTargetNewsletter + "','campaign': '"
                        + $(form).find('#campaign').val() 
                        + "','optInHotDealsCouponsNewsletter':'-1'}",
                    dataType: 'json',
                    beforeSend: function(xmlHttpRequest) {
                        $(form).hide();
                        $(form).nextAll('img:first').show();
                    },
                    success: function(result) {
                        $(form).nextAll('img:first').hide();
                        if (result.d != 'ok') {
                            $(form).validate().showErrors(
                                eval('(' + result.d + ')'));
                            $(form).show();
                        }
                        else {
                            pageTracker._trackEvent($(form).find('#categoryTracking').val(),
                                $(form).find('#actionTracking').val(),
                                $(form).find('#optionalLabelTracking').val());

                            $(form).nextAll('div:first').show();
                        }
                    },
                    error: AjaxFailed
                });
            };
        }
    });
    
    $.ajax({
        type: 'POST',
        url: '/services/NewsletterService.asmx/Token',
        contentType: 'application/json; charset=utf-8',
        data: '{}',
        dataType: 'json',
        success: function (result) {
            $('#' + formControl).append(
                '<input type="hidden" id="ts" value="' + result.d + '" />');
        },
        error: AjaxFailed
    });
}

function AjaxFailed(result) {
    //alert(result.status + ' ' + result.statusText);
}