// -----------------------------------------------------------------------------------------------------------
// Functions for MyATC messaging
// -----------------------------------------------------------------------------------------------------------
function showNotifications(notifiy, link)
{
    countNCMEClick("myatc_notifications_click.asis");
    var el = document.getElementById(notifiy);
    if (el.style.display == 'none')
    {
        el.style.display = 'block';
        document.getElementById('emailDiv').style.display = 'none';
        document.getElementById('cancelAlertsConfirm').style.display = 'none';
        document.getElementById('notificationDiv1').style.display = 'block';
        document.getElementById('invalidEmailText').style.display = 'block';
        document.getElementById('invalidEmailLinks').style.display = 'block';
    }
    else
    {
        el.style.display = 'none';
    }
}

function showNotificationAlerts(notifiy, link)
{
    countNCMEClick("myatc_notifications_click.asis");
    var el = document.getElementById(notifiy);
    if (el.style.display == 'none')
    {
        el.style.display = 'block';
        document.getElementById('emailDiv').style.display = 'none';        
    }
    else
    {
        el.style.display = 'none';
    }
}

function hideNotifications()
{
    document.getElementById('notificationsDiv').style.display = 'none';
}

function hidePopupNotifications()
{
    document.getElementById('showpopupDiv').style.display = 'none';
}

function updateEmail(emailChange, link)
{
    if ((link != null) && (typeof link == "object")) {
        if (link.tagName.toLowerCase() == "input") {
            countNCMEClick("myatc_savechanges_click.asis");
        } else {
            countNCMEClick("myatc_updatenow_click.asis");
        }
    }

    var el = document.getElementById(emailChange);
    if (el.style.display == 'none')
    {
        el.style.display = 'block';
        document.getElementById('notificationDiv1').style.display = 'none';
    }
    else
    {
        el.style.display = 'none';
        document.getElementById('notificationDiv1').style.display = 'block';
    }
}

// used in myatc_header_msg.xhtml
function confirmCancelAlerts(deleteAlerts, link)
{
    var el = document.getElementById(deleteAlerts);
    if (el.style.display == 'none')
    {
        el.style.display = 'block';
        document.getElementById('notificationDiv1').style.display = 'none';
        document.getElementById('emailDiv').style.display = 'none';
        document.getElementById('invalidEmailText').style.display = 'none';
        document.getElementById('invalidEmailLinks').style.display = 'none';
    }
    else
    {
        el.style.display = 'none';
        document.getElementById('notificationDiv1').style.display = 'block';
    }
}

// used in myatc_header_msg.xhtml
function clearCancelAlert()
{
    document.getElementById('cancelAlertsConfirm').style.display = 'none';
    document.getElementById('notificationDiv1').style.display = 'block';
    document.getElementById('invalidEmailText').style.display = 'block';
    document.getElementById('invalidEmailLinks').style.display = 'block';
}

// used in myatc-header-module.jsp & myatc-slim-header-module.jsp
function confirmAlertsCancel(deleteAlerts, link)
{
    var el = document.getElementById(deleteAlerts);
    if (el.style.display == 'none')
    {
        el.style.display = 'block';
        document.getElementById('notificationDiv1').style.display = 'none';
        document.getElementById('emailDiv').style.display = 'none';
        document.getElementById('notificationsText').style.display = 'none';
        document.getElementById('notificationLinks').style.display = 'none';
    }
    else
    {
        el.style.display = 'none';
        document.getElementById('notificationDiv1').style.display = 'block';
    }
}

// used in myatc-header-module.jsp & myatc-slim-header-module.jsp
function clearCancelAlerts()
{
    document.getElementById('emailDiv').style.display = 'none';
    document.getElementById('cancelAlertsConfirm').style.display = 'none';
    document.getElementById('notificationDiv1').style.display = 'block';
    document.getElementById('notificationsText').style.display = 'block';
    document.getElementById('notificationLinks').style.display = 'block';
}

function clearUpdateEmail()
{
    document.getElementById('emailDiv').style.display = 'none';
    document.getElementById('cancelAlertsConfirm').style.display = 'none';
    document.getElementById('notificationDiv1').style.display = 'block';
    document.getElementById('invalidEmailText').style.display = 'block';
    document.getElementById('invalidEmailLinks').style.display = 'block';
}

function isValidEmail(addy) {
    // there must be >= 1 character before @, so we
    // start looking at character position 1
    // (i.e. second character)
    var i = 1;
    // look for @
    while ((i < addy.length) && (addy.charAt(i) != "@")) {
        i++;
    }
    if ((i >= addy.length) || (addy.charAt(i) != "@")) {
        return false;
    } else {
        i += 2;
    }
    // look for .
    while ((i < addy.length) && (addy.charAt(i) != ".")) {
        i++;
    }
    // there must be at least one character after the .
    if ((i >= addy.length - 1) || (addy.charAt(i) != ".")) {
        return false;
    } else {
        return true;
    }
}

function submitEmail() {
    var errorMsgList = new Array();

    var old_email = $("old_email").value;
    var new_email = $("new_email").value;
    var c_email = $("confirmed_email").value;
    var cms = $("cmsResource").value;
    var pwd = $("password").value;
    countNCMEClick("myatc_savechanges_click.asis");
    if (new_email == "") {
        errorMsgList[errorMsgList.length] = 'Please enter your new email address to change your current email address.';
    }

    else if (c_email == "") {
        errorMsgList[errorMsgList.length] = 'Please confirm your new email address before saving your change.';
    }

    else if (pwd == "") {
        errorMsgList[errorMsgList.length] = 'Please enter your password to save your new email address.';
    }

    else if (!isValidEmail(new_email)) {
        errorMsgList[errorMsgList.length] = 'Please enter a valid email address format. (Example: emailaddress@domain.com)';
    }

    else if (new_email.toLowerCase() != c_email.toLowerCase()) {
        errorMsgList[errorMsgList.length] = 'The email addresses entered do not match. Please double-check your email address and confirmation entries before saving your change.';
    }
    
    if (errorMsgList.length > 0) {
        displayErrors(errorMsgList);
    } else {
        document.getElementById('pageLoading').style.display = 'block';
        UserMsgController.updateEmail(old_email, new_email, pwd, cms, updateEmailCallBack);
    }
}

function displayErrors(errorMsgList) {
    var errorTxt = '';
    if (errorMsgList.length > 0) {
        errorTxt += '<ul>';
        for (var i = 0; i < errorMsgList.length; i++) {
            errorTxt += '<li>' + errorMsgList[i] + '</li>';
        }
        errorTxt += '</ul>';
    } else {
        errorTxt += errorMsgList[0] + '<br />';
    }
    document.getElementById('errorContainer').style.display = 'inline';
    document.getElementById('errorContainer').style.color = '#f00';
    document.getElementById('errorMsg').innerHTML = errorTxt;
}

var updateEmailCallBack = function (response) {
    if (response) {
        document.getElementById('pageLoading').style.display = 'none';
        if (isNaN(response)) {
            var errorMsgList = new Array();
            errorMsgList[errorMsgList.length] = response;
            displayErrors(errorMsgList);
        } else {
            if (parseInt(response) > -1) {
                document.getElementById('changeResponse').innerHTML = '<b>We Updated Your Email Address</b><br/>' +
                                                                      'We sent a confirmation email to ' +
                                                                      document.getElementById('new_email').value;
                document.getElementById('headerNotificationCount').innerHTML = response;
            }
            else if (parseInt(response) == -1) {
                document.getElementById('changeResponse').innerHTML = 'Update Failed';
            }
            document.getElementById('emailDiv').style.display = 'none';
            document.getElementById('notificationDiv1').style.display = 'none';
            document.getElementById('notificationsText').style.display = 'none';
            document.getElementById('notificationLinks').style.display = 'none';
            document.getElementById('cancelAlertsConfirm').style.display = 'none';
        }
    }
};

function cancelAlerts() {
    var cms = $("cmsResource").value;
    document.getElementById('pageLoading').style.display = 'block';
    UserMsgController.cancelAlerts(cms, cancelAlertsCallBack);
}

var cancelAlertsCallBack = function (response) {
    if (response) {
        document.getElementById('pageLoading').style.display = 'none';
        if (parseInt(response) > -1) {
            document.getElementById('changeResponse').innerHTML = 'Your alerts have been canceled.';
            document.getElementById('headerNotificationCount').innerHTML = response;
        } else if (parseInt(response) == -1) {
            document.getElementById('changeResponse').innerHTML = 'Cancelling Alerts Failed';
        }
        document.getElementById('emailDiv').style.display = 'none';
        document.getElementById('notificationDiv1').style.display = 'none';
        document.getElementById('notificationsText').style.display = 'none';
        document.getElementById('notificationLinks').style.display = 'none';
        document.getElementById('cancelAlertsConfirm').style.display = 'none';
    }
};
