﻿var emailPanel =
{
    currentPID: null,
    currentCID: null,

    loadPanel: function (panelID, confirmID) {
        var html = '<div>';
        html += '<div class="empShortControl"><label for="' + panelID + 'empToEmailLabel">Friend&#39;s Email</label><input id="' + panelID + 'empToEmail" type="text" /></div>';   // To Email
        html += '<div class="empShortControl"><label for="' + panelID + 'empFromEmailLabel">Your Email</label><input id="' + panelID + 'empFromEmail" type="text" /></div>'; // From Email
        html += '<div class="empMultilineControl"><label for="' + panelID + 'empMessageLabel">Message</label><textarea id="' + panelID + 'empMessage" />'; // message body
        html += '<div class="empButtonControls"><button id="' + panelID + 'empSend" class="empButton" type="button">Send</button> <button id="' + panelID + 'empCancel" class="empButton" type="button">Cancel</button></div>'; // controls
        html += '<div style="display:none"><input type="hidden" id="' + panelID + 'empArticleID" /><input type="hidden" id="' + panelID + 'empLink" /></div>'; // for message
        html += '</div>'; // end styless main panel
        $(html).appendTo($('#' + panelID));
        var jqObj = $(html);
        $(jqObj.selector + '#' + panelID + 'empCancel').attr('panelID', panelID).attr('confirmID', confirmID);
        $(jqObj.selector + '#' + panelID + 'empSend').attr('panelID', panelID).attr('confirmID', confirmID);
        $(jqObj.selector + '#' + panelID + 'empCancel').click(function () { emailPanel.cancelEmail(null, this); });
        $(jqObj.selector + '#' + panelID + 'empSend').click(function () { emailPanel.sendEmail(this); });

        var chtml = '<div id="' + confirmID + 'empConfirmation"></div>';
        $(chtml).appendTo($('#' + confirmID));
        var jqCObj = $(chtml);
        $(jqCObj.selector + '.empConfirmation').css('display', 'none');
    },

    showPanel: function (artID, link, panelID) {
        $('#' + panelID + 'empArticleID').val(artID);
        $('#' + panelID + 'empLink').val(link);
        $('#' + panelID).show('slow');
    },

    sendEmail: function (sender) {
        emailPanel.currentPID = $(sender).attr('panelID');
        emailPanel.currentCID = $(sender).attr('confirmID');

        var badFrom = ($('#' + emailPanel.currentPID + 'empFromEmail').val().length < 5)
        var badTo = ($('#' + emailPanel.currentPID + 'empToEmail').val().length < 5)

        if (badFrom || badTo) {
            var emsg = ((badTo) ? '<div>Friend&#39;s Email is invalid</div>' : '') + ((badFrom) ? '<div>Your Email is invalid</div>' : '');
            $('#' + emailPanel.currentCID).html(emsg);
            $('#' + emailPanel.currentCID).fadeIn('fast').delay(2500).fadeOut('slow');
        }
        else
        {
            $.ajax({
                url: 'EmailHandler.aspx/SendEmail',
                data: '{fromEmail:"' + $('#' + emailPanel.currentPID + 'empFromEmail').val() +
            '",toEmail:"' + $('#' + emailPanel.currentPID + 'empToEmail').val() +
            '",message:"' + $('#' + emailPanel.currentPID + 'empMessage').val() +
            '",articleID:"' + $('#' + emailPanel.currentPID + 'empArticleID').val() +
            '",link:"' + $('#' + emailPanel.currentPID + 'empLink').val() + '"}',
                success: function (data) {
                    $('#' + emailPanel.currentPID).hide('slow');
                    $('#' + emailPanel.currentCID).html('Email sent successfully!');
                    $('#' + emailPanel.currentCID).fadeIn('fast').delay(3000).fadeOut('slow');
                    if (social) {
                        social.trackSocialEmail($('#' + emailPanel.currentPID + 'empFromEmail').val());
                    }
                },
                error: function (xhr, status, error) {
                    badFrom = true;
                    badTo = true;
                    var exc = eval('(' + xhr.responseText + ')');
                    if (exc.ExceptionType == 'questlineCIWebApp.InvalidEmailException') {
                        if (exc.Message == 'To Email is invalid') {
                            badFrom = false;
                        }
                        else if (exc.Message == 'From Email is invalid') {
                            badTo = false;
                        }
                        emsg = ((badTo) ? '<div>Friend&#39;s Email is invalid</div>' : '') + ((badFrom) ? '<div>Your Email is invalid</div>' : '');
                        $('#' + emailPanel.currentCID).html(emsg);
                        $('#' + emailPanel.currentCID).fadeIn('fast').delay(2500).fadeOut('slow');

                    }
                    else {
                        $('#' + emailPanel.currentPID).hide('slow');
                        $('#' + emailPanel.currentCID).html('Email could not be sent at this time.');
                        $('#' + emailPanel.currentCID).fadeIn('fast').delay(3000).fadeOut('slow');
                    }
                }
            });
        }
    },

    cancelEmail: function (targetID, sender) {
        if (targetID) {
            $('#' + targetID).hide('slow');
        }
        else if (sender) {
            $('#' + $(sender).attr('panelID')).hide('slow');
        }
    }
}
