﻿$(document).ready(function () {
    $("#LoginDialog").dialog({
        autoOpen: false,
        width: 420,
        height: 250,
        resizable: false,
        title: "Login",
        modal: true,
        buttons: { "Login": Login, "Cancel": CloseLogin }
    });

    $("#SecurityDialog").dialog({
        autoOpen: false,
        width: 500,
        height: 240,
        resizable: false,
        title: "Security Login",
        modal: true,
        buttons: { "Ok": SecurityLogin, "Cancel": function () { $("#SecurityDialog").dialog("close"); } }
    });

    $("#Message").dialog({
        autoOpen: false,
        width: 400,
        height: 160,
        resizable: false,
        title: "Message",
        modal: true,
        buttons: { "Close": CloseMessage }
    });

    $("#addItem").bind("click", { action: 'ADD_ITEM' }, OpenLogin);
    $(".add-item-btn").bind("click", { action: 'ADD_ITEM' }, OpenLogin);
    $("#addItemLoginBtn").bind("click", { action: 'ADD_ITEM' }, OpenLogin);
    $("#login").bind("click", { action: 'LOGIN' }, OpenLogin);
    $("#logout").bind("click", Logout);
    $("#inviteAFriend").bind("click", { action: 'INVITE_A_FRIEND' }, OpenLogin);
    $(".have").bind("click", { action: 'HAVE' }, OpenLogin);
    $(".want").bind("click", { action: 'WANT' }, OpenLogin);
    $(".myMatches").bind("click", { action: 'MY_MATCHES' }, OpenLogin);
    $(".myExchanges").bind("click", { action: 'MY_EXCHANGES' }, OpenLogin);
    $("#usersFeedback").bind("click", { action: 'USERS_FEEDBACK' }, OpenLogin);
    $("#myProfile").bind("click", { action: 'USER_PROFILE' }, OpenSecurityLogin);

    $(".addToHaveList").bind("click", { action: 'ADD_TO_HAVE_LIST' }, AddToHaveList);
    $(".addToWantList").bind("click", { action: 'ADD_TO_WANT_LIST' }, AddToWantList);

    $(".new-user-btn").click(function () { location = "NewUser.aspx"; })

    $("#doLogin").click(function () {
        $("#LoginDialog").dialog("close");
    });

    if (IsLoggedIn()) {
        $("#login").hide();
        $("#logout").show();
        $("#myProfile").show();
    }
});

var afterLoginAction = '';
var afterSecurityLoginAction = '';
var archiveId = 0;
var afterCloseLocation = '';
var useAfterCloseLocation = false;

function CloseMessage() {

    $("#Message").dialog("close");
    if (useAfterCloseLocation)
        location = afterCloseLocation;
}

function AddToHaveList(event) {
    var loggedIn = IsLoggedIn();
    if (!loggedIn) {
        afterLoginAction = event.data.action;
        archiveId = $(this).attr("id").replace("addToHaveList", "");
        OpenLogin(event);
    }
    else {
        if (archiveId == 0)
            archiveId = $(this).attr("id").replace("addToHaveList", "");
        var archiveType = $("#item" + archiveId).val();
        $.ajax({
            type: "POST",
            url: "jQueryServices.aspx/AddToHaveList",
            data: "{'archiveId':" + archiveId + ", 'archiveType':" + archiveType + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: true,
            cache: false,
            success: function (msg) {
                $("#Message").html("Item added succesfuly");
                $("#Message").dialog("open");
                afterLoginAction = '';
                archiveId = 0;
            }
        });
    }
}

function AddToWantList(event) {
    var loggedIn = IsLoggedIn();
    if (!loggedIn) {
        afterLoginAction = event.data.action;
        archiveId = $(this).attr("id").replace("addToWantList", "");
        OpenLogin(event);
    }
    else {
        if (archiveId == 0)
            archiveId = $(this).attr("id").replace("addToWantList", "");
        var archiveType = $("#item" + archiveId).val();
        $.ajax({
            type: "POST",
            url: "jQueryServices.aspx/AddToWantList",
            data: "{'archiveId':" + archiveId + ", 'archiveType':" + archiveType + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: true,
            cache: false,
            success: function (msg) {
                $("#Message").html("Item added succesfuly");
                $("#Message").dialog("open");
                afterLoginAction = '';
                archiveId = 0;
            }
        });
    }
}

function OpenLogin(event) {
    afterLoginAction = event.data.action;

    var loggedIn = IsLoggedIn();
    if (!loggedIn) {
        $("#TextUserName").val("");
        $("#TextPassword").val("");
        $("#LoginDialog").dialog("open");
    }
    else
        AfterLogin();
}

function OpenSecurityLogin(event) {
    afterSecurityLoginAction = event.data.action;
    $("#SecurityLoginTextUserName").val("");
    $("#SecurityLoginPassword").val("");
    $("#SecurityLoginMotherMaidenName").val("");
    $("#SecurityLoginError").html("");
    $("#SecurityDialog").dialog("open");
}

function Logout() {
    $.ajax({
        type: "POST",
        url: "jQueryServices.aspx/Logout",
        data: "",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        cache: false,
        success: function (msg) {
            afterLoginAction = '';
            location = "default.aspx";
        }
    });
}

function Login() {
    var userName = $("#TextUserName").val();
    var userPassword = $("#TextPassword").val();

    $.ajax({
        type: "POST",
        url: "jQueryServices.aspx/Login",
        data: "{'userName':'" + userName + "', 'userPassword':'" + userPassword + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        cache: false,
        success: function (msg) {
            if (msg.d) {
                $("#LoginDialog").dialog("close");
                $("#loginError").html("");
                AfterLogin();
            }
            else {
                $("#LoginDialog").height("140");
                $("#loginError").html("Invalid User Name or Password");
            }
        }
    });
}

function SecurityLogin() {
    var userName = $("#SecurityLoginTextUserName").val();
    var userPassword = $("#SecurityLoginPassword").val();
    var motherMaidentName = $("#SecurityLoginMotherMaidenName").val();

    $.ajax({
        type: "POST",
        url: "jQueryServices.aspx/SecurityLogin",
        data: "{'userName':'" + userName + "', 'userPassword':'" + userPassword + "', 'motherMaidenName':'" + motherMaidentName + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        cache: false,
        success: function (msg) {
            if (msg.d) {
                $("#SecurityDialog").dialog("close");
                $("#SecurityLoginError").html("");
                AfterSecurityLogin();
            }
            else {
                $("#SecurityDialog").height("130");
                $("#SecurityLoginError").html("Invalid User Name, Password or Mother Maiden Name");
            }
        }
    });
}

function AfterLogin(event) {
    switch (afterLoginAction) {
        case "ADD_ITEM":
            location = "NewItem.aspx";
            break;
        case "INVITE_A_FRIEND":
            location = "InviteAFriend.aspx";
            break;
        case "HAVE":
            location = "Have.aspx";
            break;
        case "WANT":
            location = "Want.aspx";
            break;
        case "MY_MATCHES":
            $.ajax({
                type: "POST",
                url: "jQueryServices.aspx/IsUserProfileValid",
                data: "",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                cache: false,
                success: function (msg) {
                    var isValid = msg.d;
                    if (isValid == 2) // profile valid
                    {
                        location = "MyMatches.aspx";
                    }
                    if (isValid == 1) // profile not valid
                    {
                        $("#Message").html("You must complete your profile before you continue to your matches");
                        $("#Message").dialog("option", "height", 200);
                        $("#Message").dialog("open");
                        $("#sysMessage").html("Your profile is not completed");
                        Blink("sysMessage")
                    }
                }
            });
            break;
        case "MY_EXCHANGES":
            location = "MyExchanges.aspx";
            break;
        case "ADD_TO_HAVE_LIST":
            AddToHaveList(event);
            break;
        case "ADD_TO_WANT_LIST":
            break;
        case "LOGIN":
            location = "Default.aspx";
            break;
        case "USERS_FEEDBACK":
            location = "UsersFeedback.aspx";
            break;
    }
}

function AfterSecurityLogin(event) {
    switch (afterSecurityLoginAction) {
        case "USER_PROFILE":
            location = "MyProfile.aspx";
            break;
    }
}

function IsLoggedIn() {
    var result = false;
    $.ajax({
        type: "POST",
        url: "jQueryServices.aspx/IsLoggedIn",
        data: "",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        cache: false,
        success: function (msg) {
            result = msg.d;
        }
    });
    return result;
}

function CloseLogin() {
    $("#loginError").html("");
    $("#LoginDialog").dialog("close");
}

