addLoadListener(init);

function init()
{
    var ajaxrequest = null; // initialise ajaxrequest
    
    var user = document.getElementById("user");
    user.onchange = checkUSER;
    
    var password = document.getElementById("password");
    password.onchange = validate_password;
    
    var password2 = document.getElementById("password2");
    password2.onchange = compare_passwords;

    return true;
}

function checkUSER() {    
    var enteredUSER = document.getElementById("user").value;
     alert ("Entered User is: " + user);
    var validUSER = /^w{3,9}/;         // match 3-9 numbers and/or letters & _
    var isValid = validUSER.test(enteredUSER);
    if (isValid == false) {
        alert("Not a valid Username!\nMust be between 3 and 9 letters and/or numbers.\n Can contain the underscore (_) character.!");
        var t = document.getElementById("user");
        if (t != null) {
                t.value ="";
                 setTimeout('document.getElementById("user").focus()',0);
            }
    } else {            // check if user already in students table
        var enteredUSER = document.getElementById("user").value;
        createRequest(); 
        var url = "getUSER-ajax.php?user=" + enteredUSER;  // Head Rush Ajax p.85!
        ajaxrequest.open("GET", url, true);
        ajaxrequest.onreadystatechange = checkUserExists;
        ajaxrequest.send(null);
   /* */
   }// 
}
function checkUserExists() {
    if (ajaxrequest.readyState == 4) {
        if (ajaxrequest.status == 200) {
            /* get the response from the server */ // Head Rush Ajax p.109!
            var match = ajaxrequest.responseText;
            var user = document.getElementById("user").value; //
             alert ("Server has responded with: " + ajaxrequest.responseText);
          // alert ("Server has responded with: " + match);
           // alert ("Entered User is: " + user);
            if (match == user) { // user already exists in database - alert user to this
                alert("This username is already taken!\nPlease select another!");
                // and delete user from textbox
                var tb = document.getElementById("user").value;
               // if (tb != null) {
                document.getElementById("user").value ="";
                setTimeout('document.getElementById("user").focus()',0);
                ajaxrequest = createRequest(); //added 25 April 07
                }
        } else {
            alert("Error: Server has responded with: " + ajaxrequest.status);
    }
}


function validate_password() {
    var pass1 = document.getElementById("password").value;
    var validPass1 = /^[A-Za-z0-9]{6,9}/;         // must match 6-9 UC and/or lc characters & integers
    var isValid = validPass1.test(pass1);
    if (isValid == false) {
        alert("Password can only contain Uppercase and lowercase letters, and numbers\n and must be between 6 and 9 characters long!");
        var t = document.getElementById("password");
        if (t != null) {
                t.value ="";
                 setTimeout('document.getElementById("password").focus()',0);
            }
    }
}

function compare_passwords() {
    // compare password strings
        var pass1 = document.getElementById("password").value;
        var pass2 = document.getElementById("password2").value;
        if (pass1 != pass2) {   // strings are not the same
        alert("Passwords are not equal!");
        var t = document.getElementById("password2");
        if (t != null) {
                t.value ="";
                 setTimeout('document.getElementById("password2").focus()',0);
            }
    }
}

/*______________________________ A J A X    F U N C T I O N S _____________*/
var ajaxrequest = null; // variable to hold the request object

function createRequest() {
    try {
        ajaxrequest = new XMLHttpRequest();
    } catch (trymicrosoft) {
        try {
            ajaxrequest = newActiveXObject("Msxml12.XMLHTTP");
        } catch (othermicrosoft) {
            try {
                ajaxrequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                ajaxrequest = null;
            }
        }
    }
    if (ajaxrequest == null)
     alert("Error creating request object!");
}

function getFetacModules() {    // retrieve fetac module names and codes
    createRrequest();
    var url = "getFetacModules-ajax.php";    // url of page that retrieves data from db
    ajaxrequest.open("POST", url, true);
    ajaxrequest.send(null);
}

/*__________________________ E N D     A J A X _______________________________*/
function addLoadListener(fn)
{
    if (typeof window.addEventListener != 'undefined')
    {
        window.addEventListener('load', fn, false);
    }
    else if (typeof document.addEventListener != 'undefined')
    {
        document.addEventListener('load', fn, false);
    }
    else if (typeof window.attachEvent != 'undefined')
    {
        window.attachEvent('onload', fn);
    }
    else
    {
        var oldfn = window.onload;
        if (typeof window.onload != 'function')
        {
            window.onload = fn;
        }
        else
        {
            window.onload = function()
            {
                oldfn();
                fn();
            };
        }
    }
}
