function build_query_string(frm) {
	var post_str = "FormName=" + frm.id + "&";
	for (i=0; i<frm.length; i++) {
		var obj = frm.elements[i];
		switch(obj.type) {
			case "hidden":
			case "password":
			case "textarea":
			case "text":
				post_str += obj.name + "=" + obj.value + "&";
				break;
			case "checkbox":
				if (obj.checked) {
					post_str += obj.name + "=" + obj.checked + "&";
				} else {
					post_str += obj.name + "=&";
				}
				break;
			case "radio":
				if (obj.checked) {
					post_str += obj.name + "=" + obj.value + "&";
				}
				break;
			case "select-one":
				var sel = obj;
				post_str += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
				break;
		}
	}
	return post_str;
}

function check_password(username, pwd1, pwd2) {
	if(username.value == "") {
		alert("Error: Your name cannot be blank!");
		username.focus();
		return false;
	}
	/* not testing for username
	re = /^\w+$/;
	if(!re.test(username.value)) {
		alert("Error: Username must contain only letters, numbers and underscores!");
		username.focus();
		return false;
	}
	*/
	if(pwd1.value != "" && pwd1.value == pwd2.value) {
		if(pwd1.value.length < 5) {
			alert("Error: Password must contain at least five characters");
			return clear_passwords(pwd1,pwd2);
		}
		if(pwd1.value == username.value) {
			alert("Error: Password must be different from your name");
			return clear_passwords(pwd1,pwd2);
		}
		re = /[0-9]/;
		if(!re.test(pwd1.value)) {
			//alert("Error: password must contain at least one number (0-9)!");
			//return clear_passwords(pwd1,pwd2);
		}
		re = /[a-z]/;
		if(!re.test(pwd1.value)) {
			//alert("Error: password must contain at least one lowercase letter (a-z)!");
			//return clear_passwords(pwd1,pwd2);
		}
		re = /[A-Z]/;
		if(!re.test(pwd1.value)) {
			//alert("Error: password must contain at least one uppercase letter (A-Z)!");
			//return clear_passwords(pwd1,pwd2);
		}
	} else {
		alert("Error: Please check that you're passwords match");
		return clear_passwords(pwd1,pwd2);
	}
	//alert("You entered a valid password: " + pwd1.value);
	return true;
}
function clear_passwords(p1,p2) {
	p1.value = p2.value = "";
	p1.focus();
	return false;
}
function clear_email(e,msg) {
	alert(msg);
	e.focus();
	e.select();
	return false;
}
function check_email(formInput) {
	var rtn = true;
    if (typeof(formInput) != "object") {
        alert("Validation not supported on this browser.");
        return(false);
    }

    var message;

    if (stringEmpty(formInput.value)) {
        message = "Error! Please enter an email address";
        return clear_email(formInput,message);
    } else if (noAtSign(formInput.value )) {
        message = "Error! The address \"" + formInput.value + "\" does not contain an '@' character.";
        return clear_email(formInput,message);
    } else if (nothingBeforeAt(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" must contain at least one character before the '@' character";
        return clear_email(formInput,message);
    } else if (noLeftBracket(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" contains a right square bracket ']',\nbut no corresponding left square bracket '['.";
        return clear_email(formInput,message);
    } else if (noRightBracket(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" contains a left square bracket '[',\nbut no corresponding right square bracket ']'.";
        return clear_email(formInput,message);
    } else if (noValidPeriod(formInput.value)) {
        message = "Error! The address \"" + formInput.value + "\" must contain a period ('.') character.";
        return clear_email(formInput,message);
    } else if (noValidSuffix(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" must contain a two, three or four character suffix.";
        return clear_email(formInput,message);
    } else {
        message = "Success! The email address \"" + formInput.value + "\" validates OK.";
        //alert(message);
    }

    var objType = typeof(formInput.focus);
    if (objType == "object" || objType == "function") {
         formInput.focus();
    }

	return true;
}
function checkValid (formField) {
    if ( checkValidation ( formField ) == true ) {
        alert ( 'E-Mail Address Validates OK' );
    }

    return ( false );
}

function stringEmpty (formField) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( formField.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign (formField) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if (formField.indexOf ('@', 0) == -1) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt (formField) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( formField.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if (formField.indexOf ( '.', 0 ) == -1)
        return ( true );

    return ( false );
}

function noValidSuffix(formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
        return ( false );
    }

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = formField.length;
    var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
        return ( true );
    } else {
        return ( false );
    }
}
