﻿///<reference path="Core.js" />
Core.addEventListener(window, "load", function() {
    var validation = { rules: { require: /\brequire\b/, empty: /\S/, email: /\bemail\b/, emailCheck: /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/, alt_submit: /\balt_submit\b/, password: /\bpassword\b/, confirm_password: /\bconfirm_password\b/, confirm_email: /\bconfirm_email\b/
    }, // end rules
        errors: { empty: "*", empty_full: "No empty fields", email: "Invalid e-mail address", pw_mismatch: "Passwords do not match", email_mismatch: "E-mails do not match" }
} // end enum validation
        var doc_forms = document.forms[0];
        var alt_forms = document.forms[1];
        var alt_fields = alt_forms.elements;
        var fields = doc_forms.elements;
        var error_msg = null;
        var msg = null;
        var login_exists = false;
        Core.addEventListener(doc_forms, "submit", loginValidate);
        Core.addEventListener(alt_forms, "submit", submitValidate);
        function loginValidate(event) {
            var valid = true;
            reset(fields);
            for (var i = 0; i < fields.length; i++) {
                if (validation.rules["require"].test(fields[i].className)) valid = checkEmpty(fields[i], valid, "empty");
            } // end for
            if (valid == false) Core.preventDefault(event);
            else fields["login"].disabled = true;
        }
        function checkEmpty(current_field, valid, empty_str) {
            if (!validation.rules["empty"].test(current_field.value)) {
                if (valid != false)
                { current_field.focus(); }
                error_msg = document.createElement("span");
                msg = document.createTextNode(validation.errors[empty_str]);
                error_msg.className = "error_msg";
                error_msg.appendChild(msg);
                current_field.parentNode.appendChild(error_msg);
                return false;
            } // end if
            return true;
        }
        function submitValidate(event) {
            var valid = true;
            var email_str = null;
            var email_check = false;
            var pw_str = null;
            var pw_check = false;
            reset(alt_fields);
            for (var i = 0; i < alt_fields.length; i++) {
                if (validation.rules["require"].test(alt_fields[i].className)) {
                    valid = checkEmpty(alt_fields[i], valid, "empty_full");
                    if (validation.rules["password"].test(alt_fields[i].className) && validation.rules["empty"].test(alt_fields[i].value)) {
                        pw_check = true;
                        pw_str = alt_fields[i].value;
                    }
                    if (validation.rules["confirm_password"].test(alt_fields[i].className) && pw_check && pw_str != alt_fields[i].value) {
                        error_msg = document.createElement("span");
                        msg = document.createTextNode(validation.errors["pw_mismatch"]);
                        error_msg.className = "error_msg";
                        error_msg.appendChild(msg);
                        alt_fields[i].parentNode.appendChild(error_msg);
                    }
                    if (validation.rules["email"].test(alt_fields[i].className) && validation.rules["empty"].test(alt_fields[i].value)) {
                        email_check = true;
                        email_str = alt_fields[i].value;
                    }
                    if (validation.rules["confirm_email"].test(alt_fields[i].className) && email_check && email_str != alt_fields[i].value) {
                        error_msg = document.createElement("span");
                        msg = document.createTextNode(validation.errors["email_mismatch"]);
                        error_msg.className = "error_msg";
                        error_msg.appendChild(msg);
                        alt_fields[i].parentNode.appendChild(error_msg);
                    }
                    // if the class is email and is not a valid email and it is not an empty field
                    if (validation.rules["email"].test(alt_fields[i].className)
                        && !validation.rules["emailCheck"].test(alt_fields[i].value)
                        && validation.rules["empty"].test(alt_fields[i].value)) {
                        valid = false;
                        error_msg = document.createElement("span");
                        msg = document.createTextNode(validation.errors["email"]);
                        error_msg.className = "error_msg";
                        error_msg.appendChild(msg);
                        alt_fields[i].parentNode.appendChild(error_msg);
                    } // end else if
                } // end if
            } // end for
            if (valid == false) { alt_fields["alt_submit"].disabled = true; Core.preventDefault(event); }
            else { alt_fields["alt_submit"].disabled = true; alert("blah"); }
        } // end function submitValidate

        function reset(frm_fields) {
            for (var i = 0; i < frm_fields.length; i++) {
                if (validation.rules["require"].test(frm_fields[i].className)
                && frm_fields[i].parentNode.getElementsByTagName("span")[0]) {
                    frm_fields[i].parentNode.removeChild(frm_fields[i].parentNode.getElementsByTagName("span")[0]);
                } // end if
            } // end for
        } // end function resetFrm
    } // end onload function listener
);