﻿// *********************************************************************************************************
// ABOUT ME TAB
// *********************************************************************************************************
function updateStatusMessage() {

    var frm = document.getElementById('UserSettingsForm');
    var text = document.getElementById('txtStatusMessage');
    var statusMessage = text.value;
    //var statusMessage = frm.txtStatusMessage.value;

    $.ajax({
        type: "GET",
        url: "/Api/UserAccountSettingsHandler.ashx",
        data: "StrMethodName=USERISDOING&UserIsDoing=" + statusMessage,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var error = document.getElementById('updateStatusMessageError');
            var success = document.getElementById('updateStatusMessageSuccess');
            if (!response) {
                error.style.display = "block";
                success.style.display = "none";
            }
            else {
                error.style.display = "none";
                success.style.display = "block";
            }
        }
    });
}

// *********************************************************************************************************
// USER ACCOUNT TAB
// *********************************************************************************************************
function updateUserAccount(userId, isFacebook) {

    var frm = document.getElementById('userSettingsForm');
    var displayElement = document.getElementById('settingsDisplayName');
    var display = displayElement.value.trim();
    var emailElement = document.getElementById('settingsEmail');
    var email = emailElement.value.trim();
    var passwordElement = document.getElementById('settingsPassword');
    var password = passwordElement.value.trim();

    var isValid = true;
    var nameError = document.getElementById("settingsNameError");
    var emailError = document.getElementById("settingsEmailError");
    var password1Error = document.getElementById("settingsPasswordError");

    if (isFacebook == false && display.length == 0) {
        nameError.style.display = "block";
        isValid = false;
    }
    else {
        nameError.style.display = "none";
    }

    if (email.length == 0 || validateEmail(email) == false) {
        emailError.style.display = "block";
        isValid = false;
    }
    else {
        emailError.style.display = "none";
    }

    if (isFacebook == false && password.length == 0) {
        password1Error.style.display = "block";
        isValid = false;
    }
    else {
        password1Error.style.display = "none";
        password = "password";
    }

    if (isValid) {
        getRegisterDisplayNameEmailById(display, email, userId, isFacebook);
    }
}


function saveValidUserAccount(isFacebook) {

    var frm = document.getElementById('userSettingsForm');
    var displayElement = document.getElementById('settingsDisplayName');
    var display = displayElement.value.trim();
    var emailElement = document.getElementById('settingsEmail');
    var email = emailElement.value.trim();
    var passwordElement = document.getElementById('settingsPassword');
    var password = passwordElement.value.trim();
    var rememberElement = document.getElementById('settingsRemember');
    var remember;
    if (rememberElement.checked) {
        remember = "Yes";
    }
    else {
        remember = "No";
    }
    if (isFacebook) {
        $.ajax({
            type: "GET",
            url: "/Api/UserAccountSettingsHandler.ashx",
            data: "StrMethodName=USERACCOUNT&UserEmail=" + escape(email),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
            var error = document.getElementById('updateUserAccountError');
            var success = document.getElementById('updateUserAccountSuccess');
                if (!response) {
                    error.style.display = "block";
                    success.style.display = "none";
                }
                else {
                    error.style.display = "none";
                    success.style.display = "block";
                }
            }
        });
    }
    else {
        $.ajax({
            type: "GET",
            url: "/Api/UserAccountSettingsHandler.ashx",
            data: "StrMethodName=USERACCOUNT&UserDisplayName=" + escape(display) + "&UserEmail=" + escape(email) + "&UserPassword=" + escape(password) + "&RememberPassword=" + remember,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
                var error = document.getElementById('updateUserAccountError');
                var success = document.getElementById('updateUserAccountSuccess');
                if (!response) {
                    error.style.display = "block";
                    success.style.display = "none";
                }
                else {
                    error.style.display = "none";
                    success.style.display = "block";
                }
            }
        });
    }
}    

function getRegisterDisplayNameEmailById(displayName, email, userId, isFacebook) {
    $.ajax({
        type: "GET",
        url: "/Api/GetUserDisplayNameEmailById.ashx",
        data: "DisplayName=" + displayName + "&Email=" + email + "&UserId=" + userId,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            validateRegisterDisplayNameEmailById(response, isFacebook);
        }
    });
}

function validateRegisterDisplayNameEmailById(response, isFacebook) {

    var displayName = response.UserDisplayName;
    var userEmail = response.UserEmail;
    var error = response.Error;


    var isValid = true;
    var nameDupeError = document.getElementById("settingsNameDupeError");
    var emailDupeError = document.getElementById("settingsEmailDupeError");
    var accountError = document.getElementById("updateUserAccountError");

    var displayElement = document.getElementById('settingsDisplayName');
    var display = displayElement.value.trim();
    var emailElement = document.getElementById('settingsEmail');
    var email = emailElement.value.trim();
    
    // check if there was a general error raised
    if (error.trim().length > 0) {
        accountError.style.display = "block";
        isValid = false;
    }
    else {
        accountError.style.display = "none";

        if (isFacebook == false && display.toLowerCase() == displayName.trim().toLowerCase()) {
            nameDupeError.style.display = "block";
            isValid = false;
        }
        else {
            nameDupeError.style.display = "none";
        }

        if (email.toLowerCase() == userEmail.trim().toLowerCase()) {
            emailDupeError.style.display = "block";
            isValid = false;
        }
        else {
            emailDupeError.style.display = "none";
        }
    }

    if (isValid == true) {
        saveValidUserAccount(isFacebook);
    }
}


// *********************************************************************************************************
// USER INTERESTS TAB
// *********************************************************************************************************
function updateUserInterests() {
    var frm = document.getElementById('userSettingsForm');
    var interest1 = document.getElementById('UserInterest1').value;
    var interest2 = document.getElementById('UserInterest2').value;
    var interest3 = document.getElementById('UserInterest3').value;
    var interest4 = document.getElementById('UserInterest4').value;
    var interest5 = document.getElementById('UserInterest5').value;
    var interest6 = document.getElementById('UserInterest6').value;
    var interest7 = document.getElementById('UserInterest7').value;
    var interest8 = document.getElementById('UserInterest8').value;

    //var statusMessage = frm.txtStatusMessage.value;

    $.ajax({
        type: "GET",
        url: "/Api/UserAccountSettingsHandler.ashx",
        data: "StrMethodName=USERINTERESTS&UserInterest1=" + interest1 + "&UserInterest2=" + interest2 + "&UserInterest3=" + interest3 + "&UserInterest4=" + interest4 + "&UserInterest5=" + interest5 + "&UserInterest6=" + interest6 + "&UserInterest7=" + interest7 + "&UserInterest8=" + interest8,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var error = document.getElementById('updateInterestsError');
            var success = document.getElementById('updateInterestsSuccess');
            if (!response) {
                error.style.display = "block";
                success.style.display = "none";
            }
            else {
                error.style.display = "none";
                success.style.display = "block";
            }
        }
    });
}

// *********************************************************************************************************
// USER INFO TAB
// *********************************************************************************************************
function updateUserInfo() {
    var frm = document.getElementById('userSettingsForm');
    var fullName = document.getElementById('settingsFullName').value.trim();
    var gender = document.getElementById('settingsUserGender').value;
    var birthday = document.getElementById('settingsUserBirthDay').value;
    var birthmonth = document.getElementById('settingsUserBirthMonth').value;
    var birthyear = document.getElementById('settingsUserBirthYear').value;
    var city = document.getElementById('settingsCity').value.trim();
    var zip = document.getElementById('settingsZipCode').value.trim();

    if ((zip.length != 0) && (!IsNumeric(zip) || (zip.length != 5))) {
        document.getElementById('settingsErrorZipCode').style.display = "block";
    }
    else if (gender.length == 0)
    {
        document.getElementById('userGenderError').style.display = "block";   
    }
    else if (birthday.length == 0 || birthmonth.length == 0 || birthyear.length == 0)
    {
        document.getElementById('userBirthdateError').style.display = "block";
    }
    else {
        document.getElementById('settingsErrorZipCode').style.display = "none";
        document.getElementById('userBirthdateError').style.display = "none";
        document.getElementById('userGenderError').style.display = "none";
        $.ajax({
            type: "GET",
            url: "/Api/UserAccountSettingsHandler.ashx",
            data: "StrMethodName=USERINFO&UserFullName=" + fullName + "&UserBirthDay=" + birthday +"&UserSex=" + gender
            + "&UserBirthMonth=" + birthmonth + "&UserBirthYear=" + birthyear + "&UserZipCode=" + zip + "&UserCity=" + city,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
            var error = document.getElementById('updateUserInfoError');
            var success = document.getElementById('updateUserInfoSuccess');
            if (!response) {
                error.style.display = "block";
                success.style.display = "none";
            }
            else {
                error.style.display = "none";
                success.style.display = "block";
            }
            }
        });
    }
} 


// *********************************************************************************************************
// USER SUBSCRIPTIONS TAB
// *********************************************************************************************************
function showHideCCInfo() {
    var ccInfoDiv = document.getElementById('CCInfo');
    var level = document.getElementById('SubscriptionLevel').value;
    var bankSubscription = document.getElementById('BankSubscriptionID');
    var cancelLink = document.getElementById('cancellink');
    if (level == "Free") { 
        if (bankSubscription != "0") {
            alert("Changing to a free subscription will cancel your existing subscription and limit you to 100 products. If you currently have more than 100 products, some of them will be deleted. To proceed, click OK.");
        } 
        ccInfoDiv.style.display = "none";
        cancelLink.style.display = "none";
            
    }
    else
    {
        ccInfoDiv.style.display = "block";
        if (bankSubscription.value != "0")
            cancelLink.style.display = "block";

    }
}

function cancelUserSubscription(subscriptionLevelOld) {
    var bankSubscriptionID = document.getElementById('BankSubscriptionID').value;

    var confirmationMsg = "Your premium subscription has been cancelled. Thank you.";
    var subscriptionDescription = "Tibesti Free Subscription";
    var subscriptionLevel = "Free";
    var notes = "Subscription cancelled at user request.";
    var actionRequested = "CancelSubscription";

    if (bankSubscriptionID.length != 0) {
        $.ajax({
            type: "GET",
            url: "/Api/UserAccountSettingsHandler.ashx",
            data: "StrMethodName=USERCANCELSUBSCRIPTION&SubscriptionLevel=" + subscriptionLevel + "&BankSubscriptionID=" + bankSubscriptionID +
                "&Notes=" + notes + "&ActionRequested=" + actionRequested + "&RequestUrl=" + location.pathname
                 + "&ConfirmationMessage=" + confirmationMsg + "&SubscriptionLevelOld=" + subscriptionLevelOld,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
                var error = document.getElementById('updateSubscriptionError');
                var success = document.getElementById('cancelSubscriptionSuccess');
                var bankSubscriptionID = document.getElementById('BankSubscriptionID');
                if (response == "-1") {
                    success.style.display = "none";
                    error.style.display = "block";
                }
                else {
                    error.style.display = "none";
                    success.style.display = "block";
                    bankSubscriptionID.value = "0";
                }
            }
        });
    }
}

function updateUserSubscription(subscriptionLevelOld) {

    var subscriptionLevel = document.getElementById('SubscriptionLevel').value;
    if (subscriptionLevel == "Free") {
        cancelUserSubscription(subscriptionLevelOld);
        return;
    }
    var isValid = true;
    var confirmationMsg = "Your subscription information has been processed. Thank you.";
    var billingCountry = "";
    var actionRequested;
    var bankSubscriptionID = document.getElementById('BankSubscriptionID').value;
    if (bankSubscriptionID.length == 0 || bankSubscriptionID == "-1"){
        actionRequested = "CreateSubscription";
    }
    else {
        actionRequested = "UpdateSubscription";
    }
    var firstName = document.getElementById('FirstName').value.trim();
    var firstNameError = document.getElementById('FirstName_Error');
    if (firstName.length == 0){
        firstNameError.style.display = "block";
        isValid = false;
    }
    else {
        firstNameError.style.dispay = "none";
    } 
    
    var lastName = document.getElementById('LastName').value.trim();
    var lastNameError = document.getElementById('LastName_Error');
    if (lastName.length == 0){
        lastNameError.style.display = "block";
        isValid = false;
    }
    else {
        lastNameError.style.dispay = "none";
    }
    
    var creditCard = document.getElementById('CreditCard').value.trim();
    var creditCardError = document.getElementById('CreditCard_Error');
    if (creditCard.length == 0){
        creditCardError.style.display = "block";
        isValid = false;
    }
    else {
        creditCardError.style.dispay = "none";
    }

    var cardNumberLast4;
    var cardNumber = document.getElementById('CardNumber').value.trim();
    var cardNumberError = document.getElementById('CardNumber_Error');
    if (cardNumber.length == 0){
        cardNumberError.style.display = "block";
        isValid = false;
    }
    else {
        cardNumberError.style.dispay = "none";
        cardNumberLast4 = GetCreditCardNumLast4(cardNumber);
    }
     
    var billingAddress = document.getElementById('BillingAddress').value.trim();
    var billingAddressError = document.getElementById('BillingAddress_Error');
    if (billingAddress.length == 0){
        billingAddressError.style.display = "block";
        isValid = false;
    }
    else {
        billingAddressError.style.dispay = "none";
    } 
    
    var billingCity = document.getElementById('BillingCity').value.trim();
    var billingCityError = document.getElementById('BillingCity_Error');
    if (billingCity.length == 0){
        billingCityError.style.display = "block";
        isValid = false;
    }
    else {
        billingCityError.style.dispay = "none";
    } 
    
    var billingState = document.getElementById('BillingState').value.trim();
    var billingStateError = document.getElementById('BillingState_Error');
    if (billingState.length == 0){
        billingStateError.style.display = "block";
        isValid = false;
    }
    else {
        billingStateError.style.dispay = "none";
    } 
    
    var billingZip = document.getElementById('BillingZip').value.trim();
    var billingZipError = document.getElementById('BillingZip_Error');
    if (billingZip.length == 0){
        billingZipError.style.display = "block";
        isValid = false;
    }
    else {
        billingZipError.style.dispay = "none";
    } 
    
    var customerPhone = document.getElementById('CustomerPhone').value.trim();
    var customerPhoneError = document.getElementById('CustomerPhone_Error');
    if (customerPhone.length == 0){
        customerPhoneError.style.display = "block";
        isValid = false;
    }
    else {
        customerPhoneError.style.dispay = "none";
    } 
    
    var agreesToTerms = document.getElementById('AgreesToTerms').value.trim();
    var agreesToTermsError = document.getElementById('AgreesToTerms_Error');
    if (agreesToTerms != "Yes"){
        agreesToTermsError.style.display = "block";
        isValid = false;
    }
    else {
        agreesToTermsError.style.dispay = "none";
    } 
    
    var securityCode = document.getElementById('SecurityCode').value.trim();
    var securityCodeError = document.getElementById('SecurityCode_Error');
    if (securityCode.length == 0){
        securityCodeError.style.display = "block";
        isValid = false;
    }
    else {
        securityCodeError.style.dispay = "none";
    } 
    
    var expMonth = document.getElementById('ExpMonth').value.trim();
    var expMonthError = document.getElementById('ExpMonth_Error');
    if (expMonth.length == 0){
        expMonthError.style.display = "block";
        isValid = false;
    }
    else {
        expMonthError.style.dispay = "none";
    }
    
    var expYear = document.getElementById('ExpYear').value.trim();
    var expYearError = document.getElementById('ExpYear_Error');
    if (expYear.length == 0){
        expYearError.style.display = "block";
        isValid = false;
    }
    else {
        expYearError.style.dispay = "none";
    }


    var productsTotal;
    var paymentAmount;
    var subscriptionDescription;
    if (subscriptionLevel == "Gold") {
        productsTotal = 1000;
        paymentAmount = 9.95;
        subscriptionDescription = "Tibesti Gold Subscription";
    }
    else if (subscriptionLevel == "Silver") {
        productsTotal = 500;
        paymentAmount = 4.95;
        subscriptionDescription = "Tibesti Silver Subscription"
    }
    else if (subscriptionLevel == "Bronze") {
        productsTotal = 250;
        paymentAmount = 2.95;
        subscriptionDescription = "Tibesti Bronze Subscription"
    }
    
    
    if (isValid) {
        $.ajax({
            type: "GET",
            url: "/Api/UserAccountSettingsHandler.ashx",
            data: "StrMethodName=USERSUBSCRIPTION&SubscriptionLevel=" + subscriptionLevel + "&BankSubscriptionID=" + bankSubscriptionID
                + "&FirstName=" + firstName + "&LastName=" + lastName + "&CreditCard=" + creditCard + "&CreditCardNumLast4=" + cardNumberLast4
                + "&BillingAddress=" + billingAddress + "&BillingCity=" + billingCity + "&BillingState=" + billingState
                + "&BillingZip=" + billingZip + "&BillingCountry=" + billingCountry + "&CustomerPhone=" + customerPhone
                + "&ProductsTotal=" + productsTotal + "&SubscriptionDescription=" + subscriptionDescription + "&CreditCardNum=" + cardNumber
                + "&PaymentAmount=" + paymentAmount + "&SecurityCode=" + securityCode + "&ExpirationDate=" + GetCardExpDateString(expMonth, expYear)
                + "&ActionRequested=" + actionRequested + "&AgreesToTerms=" + agreesToTerms + "&ConfirmationMessage=" + confirmationMsg
                + "&SubscriptionLevelOld=" + subscriptionLevelOld + "&RequestUrl=" + location.pathname,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
                var error = document.getElementById('updateSubscriptionError');
                var success = document.getElementById('updateSubscriptionSuccess');
                var bankSubscription = document.getElementById('BankSubscriptionID');
                if (response == "-1") {
                    success.style.display = "none";
                    error.style.display = "block";
                }
                else {
                    error.style.display = "none";
                    success.style.display = "block";
                    bankSubscription.value = response;
                }
            }
        });

    }
    
}


// *********************************************************************************************************
// USER NOTIFICATIONS TAB
// *********************************************************************************************************

function updateUserNotifications() {

    var frm = document.getElementById('userSettingsForm');
    var monthlyUpdate;
    if (document.getElementById('MonthlyUpdate').checked)
        monthlyUpdate = "Yes";
    else
        monthlyUpdate = "No";

    var weeklyUpdate;
    if (document.getElementById('WeeklyUpdate').checked)
        weeklyUpdate = "Yes";
    else
        weeklyUpdate = "No";

    var commentUpdate;
    if (document.getElementById('CommentUpdate').checked)
        commentUpdate = "Yes";
    else
        commentUpdate = "No";

    var messageUpdate;
    if (document.getElementById('MessageUpdate').checked)
        messageUpdate = "Yes";
    else
        messageUpdate = "No";

    $.ajax({
        type: "GET",
        url: "/Api/UserAccountSettingsHandler.ashx",
        data: "StrMethodName=USERNOTIFICATIONS&WeeklyUpdate=" + weeklyUpdate + "&MonthlyUpdate=" + monthlyUpdate + "&CommentUpdate=" + commentUpdate + "&MessageUpdate=" + messageUpdate,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var error = document.getElementById('updateNotificationsError');
            var success = document.getElementById('updateNotificationsSuccess');
            if (!response) {
                error.style.display = "block";
                success.style.display = "none";
            }
            else {
                error.style.display = "none";
                success.style.display = "block";
            }
        }
    });
}