function chkUsrIdResp (req, param) {
    var resp = req.responseText.split(DELIMITER);
    if (resp == "no") {
	document.getElementById("usr_id").focus();
        alert(param+" Not available. Please select another ID");
    } else {
	alert("Available ;)");
    }
}

function chkUsrId (chk_avail) {
    var usrIdObj = document.getElementById("usr_id");
    var usr_id_entered = usrIdObj.value;
    var filter  = /^([a-zA-Z0-9_\-])+$/;

    if (usr_id_entered.length == 0) {
	usrIdObj.focus();
	throw("User ID Field is required");
	return;
    }

    if (!filter.test(usr_id_entered)) {
	usrIdObj.focus();
        throw("User ID cannot contain space or special characters");
        return;
    }    

    if (usr_id_entered.length > 25) {
//	usrIdObj.value='';
	usrIdObj.focus();
	throw("User id should be shorter than 32 characters!");
	return;
    }

    if (chk_avail) {
        var url = 'uid_avail_handler.php';
        var data = 'usr_id='+usr_id_entered;
        xmlHttpReq(xmlHttpObj(), url, true, data, chkUsrIdResp, usr_id_entered);
    }
}

function chkUsrIdUI () {
    try {
        chkUsrId(true);
    } catch (e) {
        alert(e);
    }
}

function chkFirstName () {
    var nameObj = document.getElementById("first_name");
    var name = nameObj.value;

    if (name.length == 0) {
	nameObj.focus();
	throw("First Name is required");
    }

    if (name.length > 31) {
	nameObj.focus();
	throw("First name up to 31 charcters is supported");
    }
}

function chkLastName () {
    var nameObj = document.getElementById("last_name");
    var name = nameObj.value;

    if (name.length == 0) {
	nameObj.focus();
	throw("Last Name is required");
    }

    if (name.length > 31) {
	nameObj.focus();
        throw("Last name up to 31 charcters is supported");
    }
}

function chkEmail () {
    var emailObj = document.getElementById("email");
    var email = emailObj.value;
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

    if (email.length == 0) {
	emailObj.focus();
	throw("Field required");
    }

    if (!filter.test(email)) {
	emailObj.focus();
        throw("Please check your email address");
    }
}

function chkPasswd () {
    var passwdObj = document.getElementById("passwd");
    var passwd = passwdObj.value;

    if (passwd.length < 4) {
	passwdObj.focus();
        throw("Password should be longer than 4 charcters");
    }
}

function chkRePasswd () {
    var passwdObj = document.getElementById("passwd");
    var passwd = passwdObj.value;
    var passwd2 = document.getElementById("passwd2").value;

    if ((passwd2.length == 0) || (passwd != passwd2)) {
	passwdObj.focus();
	throw("Re-entered password did not match the first one!");
    }
}

function chkSex () {
    var sexObj = document.getElementById("sex");
    var sex = sexObj.value;

    if ((sex == 'M') || (sex == 'F')) {
        return;
    }
    sexObj.focus();
    throw("Unknown gender");
}

function chkBirthYear () {
    var filter  = /^\d{4}$/;
    var bYearObj = document.getElementById("bYear");
    var byear = bYearObj.value;

    if (!filter.test(byear)) {
        bYearObj.focus();
        throw("Year must be a 4 digit number");
    }
    
    if (byear < 1901) {
        bYearObj.focus();
        throw("Invalid year entered");
    }
}

function chkZip () {
    var zipObj = document.getElementById("zip");
    var zip = zipObj.value;
    var filter  = /^\d{5}$/;

    if (zip.length < 5) {
	zipObj.focus();
        throw("ZIP should be 5 charcters");
    }
    if (!filter.test(zip)) {
	zipObj.focus();
        throw("ZIP should be a 5 digit number");
    }
}

function chkPhone () {
    var phoneObj = document.getElementById("phone");
    var phone = phoneObj.value;
    var filter = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;

    if ((phone == null) || (phone.value=="")) {
	return;
    }

    if (!filter.test(phone)) {
        phoneObj.focus();
        throw("Phone Number should be entered as: (555) 555-5555");
    }
 }

function chkRegForm () {
    try {
        chkUsrId(false);
	chkFirstName();
	chkLastName();
	chkEmail();
	chkPasswd();
	chkRePasswd();
        chkSex();
        chkBirthYear();
	chkZip();
    } catch (e) {
	alert(e);
	return false;
    }

    return true;
}