﻿function InitRegisterPopup() {
    var frm = document.getElementById('registerForm');
    if (frm != null) {
        frm.reset();
    }

    var nameError = document.getElementById("nameError");
    var emailError = document.getElementById("emailError");
    var password1Error = document.getElementById("password1Error");
    var userGenderError = document.getElementById("userGenderError");
    var userBirthdateError = document.getElementById("userBirthdateError");
    var userBirthdateAgeError = document.getElementById("userBirthdateAgeError");
    var acceptTermsError = document.getElementById("acceptTermsError");

    var registerGeneralError = document.getElementById("registerGeneralError");
    var nameDupeError = document.getElementById("nameDupeError");
    var emailDupeError = document.getElementById("emailDupeError");

    nameError.style.display = "none";
    emailError.style.display = "none";
    password1Error.style.display = "none";
    userGenderError.style.display = "none";
    userBirthdateError.style.display = "none";
    userBirthdateAgeError.style.display = "none";
    acceptTermsError.style.display = "none";

    registerGeneralError.style.display = "none";
    nameDupeError.style.display = "none";
    emailDupeError.style.display = "none";
}

function validateAndSubmitRegisterForm() {
    var isValid = true;
    var frm = document.getElementById('registerForm');

    var nameError = document.getElementById("nameError");
    var emailError = document.getElementById("emailError");
    var password1Error = document.getElementById("password1Error");
    var userGenderError = document.getElementById("userGenderError");
    var userBirthdateError = document.getElementById("userBirthdateError");
    var userBirthdateAgeError = document.getElementById("userBirthdateAgeError");
    var acceptTermsError = document.getElementById("acceptTermsError");

    if (frm.displayName.value.trim().length == 0) {
        nameError.style.display = "block";
        isValid = false;
    }
    else {
        nameError.style.display = "none";
    }

    if (frm.email.value.trim().length == 0 || validateEmail(frm.email.value.trim()) == false) {
        emailError.style.display = "block";
        isValid = false;
    }
    else {
        emailError.style.display = "none";
    }

    if (frm.password.value.trim().length == 0) {
        password1Error.style.display = "block";
        isValid = false;
    }
    else {
        password1Error.style.display = "none";
    }

    if (frm.userGender[frm.userGender.selectedIndex].value == "") {
        userGenderError.style.display = "block";
        isValid = false;
    }
    else {
        userGenderError.style.display = "none";
    }

    // birthday is not required but make sure that atleast all values are selected
    if (frm.userBirthMonth[frm.userBirthMonth.selectedIndex].value != "" || frm.userBirthDay[frm.userBirthDay.selectedIndex].value != "" || frm.userBirthYear[frm.userBirthYear.selectedIndex].value != "") {
        if (!(frm.userBirthMonth[frm.userBirthMonth.selectedIndex].value != "" && frm.userBirthDay[frm.userBirthDay.selectedIndex].value != "" && frm.userBirthYear[frm.userBirthYear.selectedIndex].value != "")) {
            userBirthdateError.style.display = "block";
            isValid = false;
        } else {
            userBirthdateError.style.display = "none";
        }
    }
    else {
        userBirthdateError.style.display = "none";

        var birthdate = new Date(frm.userBirthYear[frm.userBirthYear.selectedIndex].value, frm.userBirthMonth[frm.userBirthMonth.selectedIndex].value - 1, frm.userBirthDay[frm.userBirthDay.selectedIndex].value);
        var today = new Date();

        if (dateDiff(birthdate, today) < 13) {
            userBirthdateAgeError.style.display = "block";
            isValid = false;
        }
        else {
            userBirthdateAgeError.style.display = "none";
        }
    }

    if (frm.chkAccept.checked == false) {
        acceptTermsError.style.display = "block";
        isValid = false;
    }
    else {
        acceptTermsError.style.display = "none";
    }

    if (isValid == true) {
        getRegisterDisplayNameEmail(frm.displayName.value.trim(), frm.email.value.trim());
    }
}

function getRegisterDisplayNameEmail(displayName, email) {
    $.ajax({
        type: "GET",
        url: "/Api/GetUserDisplayNameEmail.ashx",
        data: "DisplayName=" + displayName + "&Email=" + email,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            validateRegisterDisplayNameEmail(response);
        }
    });
}

function validateRegisterDisplayNameEmail(response) {

    var displayName = response.UserDisplayName;
    var email = response.UserEmail;
    var error = response.Error;
    
    var frm = document.getElementById('registerForm');

    var isValid = true;
    var nameDupeError = document.getElementById("nameDupeError");
    var emailDupeError = document.getElementById("emailDupeError");
    var registerGeneralError = document.getElementById("registerGeneralError");

    // check if there was a general error raised
    if (error.trim().length > 0) {
        registerGeneralError.style.display = "block";
        isValid = false;
    }
    else {
        registerGeneralError.style.display = "none";

        if (frm.displayName.value.trim().toLowerCase() == displayName.trim().toLowerCase()) {
            nameDupeError.style.display = "block";
            isValid = false;
        }
        else {
            nameDupeError.style.display = "none";
        }

        if (frm.email.value.trim().toLowerCase() == email.trim().toLowerCase()) {
            emailDupeError.style.display = "block";
            isValid = false;
        }
        else {
            emailDupeError.style.display = "none";
        }
    }

    if (isValid == true) {
        frm.submit();
    }
}
