﻿var StoreUserLoginControl = null;

function SetupUserLoginControl() {
    StoreUserLoginControl = new UserLoginControl('StoreUserLoginControl');
    StoreUserLoginControl.addEventHandler('ValidateEmail', jsValidateEmail);
    StoreUserLoginControl.addEventHandler('ValidatePassword', jsValidatePassword);

    // Check if user logged in
    var User = new StoreFrontService.User();
    var ret = User.getUserIfLoggedIn(OnUserLoggedInComplete, OnWSError, OnWSTimeout);
}

function isEmailValid(str) {
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if (filter.test(str))
        return true;
    else {
        return false;
    }
}

function jsValidateEmail(me) {
    if (isEmailValid(me.getUserEmail())) {
        var User = new StoreFrontService.User();
        var ret = User.isUserValid(me.getUserEmail(), OnUserIsValidComplete, OnWSTimeout, OnWSError);
    }
}

function jsValidatePassword(me) {
    var User = new StoreFrontService.User();
    var ret = User.getUser(me.getUserEmail(), me.getUserPassword(), OnGetAuthenticatedUser, OnGetUnAuthenticatedUser, OnGetUnAuthenticatedUser);
}

function OnSendResetPasswordEmail() {
    var User = new StoreFrontService.User();
    var ret = User.SendPasswordResetEmail($get('txtForgotEmail').value, OnResetPasswordEmailSent, OnGetUnAuthenticatedUser, OnGetUnAuthenticatedUser);
}

function OnGetAuthenticatedUser(user) {

    StoreUserLoginControl.setUser(user);
    StoreUserLoginControl.showWelcomeMessageToLoggedInUser();
    $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
}

function OnResetPasswordEmailSent(msg) {
    StoreUserLoginControl.showResetPasswordSuccessMessage(msg);
    $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
}

function OnLoginClicked() {
    StoreUserLoginControl = new UserLoginControl('StoreUserLoginControl');
    StoreUserLoginControl.addEventHandler('ValidateEmail', jsValidateEmail);
    StoreUserLoginControl.addEventHandler('ValidatePassword', jsValidatePassword);
    StoreUserLoginControl.showEmailBox();
    $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
    StoreUserLoginControl.RegisterEvents();
    //alert($get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._emailTextBox.getId() + '_0').id);
    setTimeout(function () {
        $get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._emailTextBox.getId() + '_0').focus();
    }, 500);


}

function OnLogoutClicked() {
    var User = new StoreFrontService.User();
    User.logout();
    OnUserLoggedInComplete(null);
}

function OnNewUserClicked() {
    StoreUserLoginControl.showRegisterNewUserBox();
    $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
    StoreUserLoginControl.RegisterEvents();
    //alert($get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._emailTextBox.getId() + '_0').id);
    setTimeout(function () {
        $get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._emailTextBox.getId() + '_0').focus();
    }, 500);
}

function OnForgotPasswordClicked() {
    StoreUserLoginControl = new UserLoginControl('StoreUserLoginControl');
    StoreUserLoginControl.addEventHandler('ValidateEmail', jsValidateEmail);
    StoreUserLoginControl.addEventHandler('ValidatePassword', jsValidatePassword);
    StoreUserLoginControl.showForgotPasswordBox();
    $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
    StoreUserLoginControl.RegisterEvents();
    //alert($get('txtForgotEmail').id);
    setTimeout(function () {
        $get('txtForgotEmail').focus();
    }, 500);
}

function OnGetUnAuthenticatedUser(error) {
    //alert("Error: " + error.get_message());
}

function OnUserIsValidComplete(isUserValid) {
    if (isUserValid) {
        StoreUserLoginControl.showEmailAndPasswordBox();
        $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
        StoreUserLoginControl.RegisterEvents();

        setTimeout(function () {
            $get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._passwordTextBox.getId() + '_0').focus();
        }, 500);
    }
    else {
        StoreUserLoginControl.showNewUserBox();
        $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
        StoreUserLoginControl.RegisterEvents();

        setTimeout(function () {
            $get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._passwordTextBox.getId() + '_0').focus();
        }, 500);
    }
}

function OnUserLoggedInComplete(user) {
    if (user != null) {
        StoreUserLoginControl.setUser(user);
        if (user.FirstName == '' || user.LastName == '') {
            StoreUserLoginControl.showWelcomeMessageToNewUser();
        }
        else {
            StoreUserLoginControl.showWelcomeMessageToLoggedInUser();
        }
        $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
        StoreUserLoginControl.RegisterEvents();
    }
    else {
        //alert('ShowLoginLink');
        StoreUserLoginControl.ShowLoginLink();
        $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
        //StoreUserLoginControl.RegisterEvents();
    }
}

function CreateUser() {

    var userId = $get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._emailTextBox.getId() + '_0');
    var password = $get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._passwordTextBox.getId() + '_0');
    var password1 = $get(StoreUserLoginControl.getId() + '_' + StoreUserLoginControl._passwordTextBox.getId() + '_1');

    if (!isEmailValid(userId.value)) {
        alert(userId.value + ' is invalid email address!');
        return false;
    }
    if (password1.value == password.value) {
        var User = new StoreFrontService.User();
        var ret = User.createUser(userId.value, password.value, OnUserCreationComplete, OnWSTimeout, OnWSError);
    }
    else {
        alert('Passwords do not match!');
        return false;
    }
}

function OnUserCreationComplete(user) {
    alert(user.FirstName + ' New Account Created!');
    StoreUserLoginControl.setUser(user);
    StoreUserLoginControl.showWelcomeMessageToNewUser();
    $get('dvLoginControl').innerHTML = StoreUserLoginControl.getHTML();
    StoreUserLoginControl.RegisterEvents();
}


