﻿
var student_login_action = '';
$(document).ready(function() {
student_login_action = $('form#login-form').attr('action');
    
    $("input#user").focus().select();
    $(".oops").hide();
    $("label").removeClass("error");
    var login_form = $("form#login-form");
    $("input#enter").focus(function() {
        $("#password-tooltip").fadeIn();
    });
    $("input#enter").blur(function() {
        $("#password-tooltip").fadeOut();
    });

    //clicking this starts the "forgot password" flow
    $("#student_forgot_password").click(function(e) {
        e.preventDefault();
        $(this).addClass("disabled").attr("disabled", "disabled");
        $("div#login").hide();
        $("div#get-security-question").show();
        $("input#un").focus().select();
        $(this).removeClass("disabled").attr("disabled", "");
    });

    //first step of "forgot password" screens
    $("#submit-username").click(function(e) {
        e.preventDefault();
        var this_button = $(this);
        this_button.addClass("disabled").attr("disabled", "disabled");
        var this_form = $(this).parents("form");
        var form_labels = this_form.find("label");
        form_labels.removeClass("error");
        var un = $("input#un");
        var username_oops = $("#username-oops");
        username_oops.hide();

        if (un.val() != "") {
            $.get("Services/GetSecurityQuestion?name=" + un.val(),
                function(data) {
                    if (data.success) {
                        //move the form to the next step
                        $("div#get-security-question").hide();
                        var sec_question_box = $("div#security-question");
                        sec_question_box.find("span#question").text(data.question);
                        sec_question_box.show();
                        $("input#ans").focus().select();
                    }
                    else {
                        //show error message
                        form_labels.addClass("error");
                        username_oops.text(data.message).show();
                    }
                    this_button.removeClass("disabled").attr("disabled", "");
                }); //end getjson
        } else {
            username_oops.text("Oops! Please enter a username.");
            form_labels.addClass("error");
            username_oops.show();
            this_button.removeClass("disabled").attr("disabled", "");
        }


    }); //end submit username

    //2nd step of "forgot password" screens
    //responding to forgotten password security question 
    $("#submit-security-question").click(function(e) {
        e.preventDefault();
        var this_button = $(this);
        this_button.addClass("disabled").attr("disabled", "disabled");
        var this_form = $(this).parents("form");
        var form_labels = this_form.find("label");
        form_labels.removeClass("error");
        var ans = $("input#ans");
        var security_question_oops = $("#security-question-oops");
        security_question_oops.hide();
        if (ans.val() != "") {
            $.get("Services/CheckAnswer?name=" + $("input#un").val() + '&answer=' + ans.val(),
                function(data) {
                    if (data.success) {
                        //move the form to the next step
                        $("div#security-question").hide();
                        $("div#forgot-password").show();
                        $("input#enter").focus().select();
                    }
                    else {
                        //show error message
                        form_labels.addClass("error");
                        security_question_oops.text(data.message).show();
                    }
                    this_button.removeClass("disabled").attr("disabled", "");
                }); //end getjson
        } else {
            security_question_oops.text("Oops! You forgot to answer the question.");

            form_labels.addClass("error");
            security_question_oops.show();
            this_button.removeClass("disabled").attr("disabled", "");
        }

    }); //end submit security question

    //third step of "forgot password" screens
    //submitting new password
    //you get logged into the site after this
    $("#submit-new-password").click(function(e) {
        e.preventDefault();
        var this_button = $(this);
        this_button.addClass("disabled").attr("disabled", "disabled");

        var this_form = $(this).parents("form");
        var form_labels = this_form.find("label");
        form_labels.removeClass("error");
        var password_oops = $("#password-oops");
        var input_enter = $("input#enter");
        var input_retype = $("input#retype");
        password_oops.hide();
        if (input_enter.val() == "") {
            this_button.removeClass("disabled").attr("disabled", "");
            input_enter.parents("div.row").find("label").addClass("error");
            password_oops.text("Oops! You forgot to type your password.").show();
        }
        else {
            if (input_enter.val() === input_retype.val()) {
                var password_value = input_enter.val();
                if (password_value.match(/(?=.*\d)(?=.*[a-zA-Z].*){6,}/) == null) {
                    password_oops.text("Oops! Your passwords needs to have 6 or more characters, and at least one number.").show();
                    input_enter.parents("div.row").find("label").addClass("error");

                    this_button.removeClass("disabled").attr("disabled", "");
                }
                else {
                    var reverse_indexof = -1;
                    var uname = $("input#un").val();
                    var splittext = uname.split("");
                    reverse_indexof = password_value.toLowerCase().indexOf(splittext.reverse().join(""));
                    if (password_value.toLowerCase().indexOf(uname.toLowerCase()) == -1 &&
                reverse_indexof == -1) {
                        $.post("Services/ChangePassword", { name: $("input#un").val(), pass: input_enter.val() },
                function(data) {
                    if (data.success) {
                        //submit login form
                        $("input#user").val($("input#un").val());
                        $("input#password").val(input_enter.val());
                        $("#submit-login").click();
                    }
                    else {
                        //show error message
                        input_enter.parents("div.row").find("label").addClass("error");
                        password_oops.text(data.message).show();
                    }

                    this_button.removeClass("disabled").attr("disabled", "");
                }, "json"); //end post
                    } else {
                        password_oops.text("Oops! Your password cannot contain your username in it.").show();
                        input_enter.parents("div.row").find("label").addClass("error");

                        this_button.removeClass("disabled").attr("disabled", "");
                    }
                }
            }
            else {

                this_button.removeClass("disabled").attr("disabled", "");
                input_retype.parents("div.row").find("label").addClass("error");
                password_oops.text("Oops! Your passwords don't match.").show();
            }
        }

    }); //end submit new pass

    //if you hit "back to login" anywhere during the forgot password stuff, it resets that little toolbox area
    $("a.back-to-login").click(function(e) {
        e.preventDefault();
        $("label").removeClass("error");
        $(this).parents("div.login-box").hide();
        $("span.oops").hide();
        $("div#login").show();
        $("input[type='radio']").attr("checked", false);
        $("input[type='disabled']").removeClass("disabled").attr("disabled", "");
    });

    //submit the login form
    $("#submit-login").click(function(e) {
        e.preventDefault();
        login_form.submit();
    });

    login_form.submit(function() {
        var this_form = $(this);
        var form_labels = this_form.find("label");
        var login_oops = $("span#login-oops");
        form_labels.removeClass("error");
        login_oops.text("");
        var un = $("input#user");
        var p = $("input#password");
        var has_errors = false;
        this_form.find("input[type='image']").addClass("disabled").attr("disabled", "disabled");
        if (un.val() === '') {
            un.parents("div.row").find("label").addClass("error");
            login_oops.text("Oops! You forgot to enter your username.").show();
            has_errors = true;
        }
        if (p.val() === '') {
            p.parents("div.row").find("label").addClass("error");
            if (has_errors) {
                login_oops.text("Oops! You forgot to enter your username and password.").show();
            } else {
                login_oops.text("Oops! You forgot to enter your password.").show();
            }
            has_errors = true;
        }
        if (!$("input[name='stud']:checked").val()) {

            $("input[name='stud']").parents("div.row").find("label").addClass("error");
            if (has_errors) {
                login_oops.append(" Sorry, you need to pick either Student or Educator/Adult before you can login.").show()
            }
            else {
                login_oops.text("Sorry, you need to pick either Student or Educator/Adult before you can login.").show();
                has_errors = true;
            }
        }

        if (has_errors) {
            this_form.find("input[type='image']").removeClass("disabled").attr("disabled", "");
        }

        if ($("input[type='radio']#educator:checked").val()) {
            un.attr("name", "email");
            p.attr("name", "pword");
            this_form.attr("action", "http://school.fueluptoplay60.com/join/password_enter.php");
        }
        else {
            un.attr("name", "username");
            p.attr("name", "password");
            this_form.attr("action", student_login_action);
        }


        return !has_errors;
    });
    //show the find school popup
    $("#find_school").click(function(e) {
        e.preventDefault();
        $.get("/Home/GetMapForZip?zip=" + $("#zip").val(),
                function(data) {
                    $("body").append($(data));
                });
    });


});
