
var nameRegexp = /^[-A-Za-z,. ]+$/i;
var addressRegexp = /^[-\w,.;# \(\)]+$/i;
var emailRegexp = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
var zipRegexp = /^.{1,15}?$/;
var pwdRegexp = /^[A-Za-z0-9]{6,100}$/;
var usernameRegexp = /^[A-Za-z][A-Za-z0-9_\.-]+/;
var activationCodeRegex = /^\w{10}$/;
var priceRegexp = /^\$?(\d+)(\.(\d?\d?))?$/;
var itemTitleRegexp = /^.{5,}/;



function validateChgPersonal() {
	var group1 = document.getElementById("group1");
	resetErrorBox(group1);
	var err = 0;
	if(!nameRegexp.test(document.chgpersonalform.fname.value)) {
		group1.innerHTML += "<p>Please enter a valid first name.</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.fname.style.color = "red";
	}
	if(!nameRegexp.test(document.chgpersonalform.lname.value)) {
		group1.innerHTML += "<p>Please enter a valid last name.</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.lname.style.color = "red";
	}
	if(!addressRegexp.test(document.chgpersonalform.add1.value)) {
		group1.innerHTML += "<p>Please enter a valid mailing address.</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.add1.style.color = "red";
	}
	if(!nameRegexp.test(document.chgpersonalform.city.value)) {
		group1.innerHTML += "<p>Please enter a valid city name.</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.city.style.color = "red";
	}
	if(!nameRegexp.test(document.chgpersonalform.country.value)) {
		group1.innerHTML += "<p>Please enter a valid country!</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.country.style.color = "red";
		
	}
	if((document.chgpersonalform.country.value == "United States of America") && (document.chgpersonalform.state.value == "none")) {
		group1.innerHTML += "<p>Please select a state!.</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.state.style.color = "red";
	}
	if(!zipRegexp.test(document.chgpersonalform.zip.value)) {
		group1.innerHTML += "<p>Please enter a valid zip code (i.e. 12345 or 12345-6789).</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.zip.style.color = "red";
	}
	if(document.chgpersonalform.sex.value == "none") {
		group1.innerHTML += "<p>Please select a gender!</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.sex.style.color = "red";
	}
	if(document.chgpersonalform.agegrp.value == "none") {
		group1.innerHTML += "<p>Please select an age group!</p>";
		err++;
		group1.style.display = "block";
		document.chgpersonalform.agegrp.style.color = "red";
	}
	if(err) {
		alert("There "+((err==1)?"was an error ":"were errors ")+"in processing the form. Please correct, and try again.");
		return false;
	}
	else {
		return true;
	}
}

function validateChgPassword() {
	var group1 = document.getElementById("group1");
	resetErrorBox(group1);
	var err = 0;
	if(!pwdRegexp.test(document.chgpasswordform.newpw1.value)) {
		group1.innerHTML += "<p>Please enter a new password! (alpha-numeric, at least 6 characters)<p>";
		err++;
		group1.style.display = "block";
		document.chgpasswordform.newpw1.style.color = "red";	
	}
	if(document.chgpasswordform.newpw1.value != document.chgpasswordform.newpw2.value) {
		group1.innerHTML += "<p>Please make sure that your passwords match!<p>";
		err++;
		group1.style.display = "block";
		document.chgpasswordform.newpw1.style.color = "red";	
		document.chgpasswordform.newpw2.style.color = "red";	
	}
	if(err) {
		alert("There was an error processing the form. Please correct, and try again.");
		return false;
	}
	else {
		return true;
	}
}



function validateChgEmail() {
	var group1 = document.getElementById("group1");
	resetErrorBox(group1);
	var err = 0;
	if(!emailRegexp.test(document.chgemailform.email1.value)) {
		group1.innerHTML += "<p>Please enter a valid email address!</p>";
		err++;
		group1.style.display = "block";
		document.chgemailform.email1.style.color = "red";	
	}
	if(document.chgemailform.email1.value != document.chgemailform.email2.value) {
		group1.innerHTML += "<p>Email addresses do not match! Please enter the same email address in both fields.</p>";
		err++;
		group1.style.display = "block";
		document.chgemailform.email1.style.color = "red";	
		document.chgemailform.email2.style.color = "red";	
	}
	if(err) {
		alert("There was an error processing the form. Please correct, and try again");
		return false;
	}
	else {
		return true;
	}
}


function resetErrorBox(box)
{
	box.style.display = "none";
	box.innerHTML = "";	
}


function validatePosting() {
	var group1 = document.getElementById("group1");
	var group2 = document.getElementById("group2");
	var group3 = document.getElementById("group3");
	var group4 = document.getElementById("group4");
	var group5 = document.getElementById("group5");
	var group6 = document.getElementById("group6");
	var err = 0;
	resetErrorBox(group1);
	resetErrorBox(group2);
	resetErrorBox(group3);
	resetErrorBox(group4);
	resetErrorBox(group5);
	resetErrorBox(group6);
	if(!itemTitleRegexp.test(document.postitem.itemTitle.value)) {
		group1.innerHTML += "<p>Please enter a more descriptive title!</p>";
		err++;
		group1.style.display = "block";
		document.postitem.itemTitle.style.color = "red";	
	}
	if(!priceRegexp.test(document.postitem.price.value)) {
		group4.innerHTML += "<p>Please enter a valid price!</p>";
		err++;
		group4.style.display = "block";
		document.postitem.price.style.color = "red";
	}
	if(document.postitem.category.value=="none") {
		group2.innerHTML += "<p>Please select a main category!</p>";
		err++;
		group2.style.display = "block";
		document.postitem.category.style.color = "red";
	}
	if(document.postitem.size.value.length == 0) {
		group3.innerHTML += "<p>Please enter the size of the item!</p>";
		err++;
		group3.style.display = "block";
		document.postitem.size.style.color = "red";
	}
	if(document.postitem.brand.value.length == 0) {
		group3.innerHTML += "<p>Please enter the brand of the item! (If there is no brand, simply type 'Generic').</p>";
		err++;
		group3.style.display = "block";
		document.postitem.brand.style.color = "red";
	}
	
	if((getCheckedValue(document.postitem.donate) == "yes") && (document.postitem.nonprofit.value == "0000")) {
		group6.innerHTML += "<p>Please select a non-profit organization!</p>";
		err++;
		group6.style.display = "block";
		document.postitem.nonprofit.style.color = "red";
	}
	if(err) {
		alert("There was a problem with your posting form. Please see errors on form, and correct before posting.");
		return false;
	}
	else {
		return true;
	}	
}

function validateActivation() {
	var group1 = document.getElementById("group1");
	var group2 = document.getElementById("group2");
	var err = 0;
	resetErrorBox(group1);
	resetErrorBox(group2);
	if(!emailRegexp.test(document.activate.email.value)) {
		group1.innerHTML += "<p>Please enter a valid email address!</p>";
		err++;
		group1.style.display = "block";
		document.activate.email.style.color = "red";
	}
	if(!activationCodeRegex.test(document.activate.actcode.value)) {
		group2.innerHTML += "<p>Invalid activation code. Please enter the activation code sent in the \"Welcome\" email.</p>";
		err++;
		group2.style.display = "block";
		document.activate.actcode.style.color = "red";
	}
	
	if(err) {
		alert("There was a problem with your activation information. Please see the messages on the form.");
		return false;
	}
	else {
		return true;
	}
	
}
function validateRegistration()
{
	var group1 = document.getElementById("group1");
	var group2 = document.getElementById("group2");
	var group3 = document.getElementById("group3");
	var group4 = document.getElementById("group4");
	var err = 0;
	
	resetErrorBox(group1);
	resetErrorBox(group2);
	resetErrorBox(group3);
	resetErrorBox(group4);
	// group1:
	if(!nameRegexp.test(document.register.fname.value))
	{
		group1.innerHTML += "<p>Please enter a valid First Name!</p>";
		err++;
		group1.style.display = "block";
		document.register.fname.style.color = "red";
	}
	if(!nameRegexp.test(document.register.lname.value))
	{
		group1.innerHTML += "<p>Please enter a valid Last Name!</p>";
		err++;
		group1.style.display = "block";
		document.register.lname.style.color = "red";
	}
	if(!addressRegexp.test(document.register.mail1.value))	{
		group1.innerHTML += "<p>Please enter a valid Address!</p>";
		err++;
		group1.style.display = "block";
		document.register.mail1.style.color = "red";
	}
	if(!nameRegexp.test(document.register.city.value)) {
		group1.innerHTML += "<p>Please enter a valid city name!</p>";
		err++;
		group1.style.display = "block";
		document.register.city.style.color = "red";
	}
	if(!nameRegexp.test(document.register.country.value)) {
		group1.innerHTML += "<p>Please enter a valid country!</p>";
		err++;
		document.register.country.style.color = "red";
		group1.style.display = "block";
	}
	if((document.register.country.value == "United States of America") && (document.register.state.value == "none")) {
		group1.innerHTML += "<p>Please select a state!</p>";
		err++;
		group1.style.display = "block";
	}
	if(!zipRegexp.test(document.register.zipcode.value)) {
		group1.innerHTML += "<p>Please enter a valid zipcode! (12345)<p>";
		err++;
		group1.style.display = "block";
		document.register.zipcode.style.color = "red";
	}
	
	//group2:
	if(document.register.gender.value == "none") {
		group2.innerHTML += "<p>Please select your gender!</p>";
		err++;
		group2.style.display = "block";
	}
	if(document.register.age.value == "none") {
		group2.innerHTML += "<p>Please select your age group!</p>";
		err++;
		group2.style.display = "block";
	}
	
	
	//group3: (username)
	if(!usernameRegexp.test(document.register.username.value)) {
		group3.innerHTML += "<p>Please enter a valid nickname! (Nicknames can contain letters, numbers, underscores, dashes, and periods. It must start with a letter.)</p>";
		err++;
		group3.style.display = "block";
		document.register.username.style.color = "red";
	}
	
	//group4:
	if(!emailRegexp.test(document.register.emailaddress.value))
	{
		group4.innerHTML += "<p>Please enter a valid email address!</p>";
		err++;
		group4.style.display = "block";
		document.register.emailaddress2.style.color = "red";
		document.register.emailaddress.style.color = "red";
	}
	else if(document.register.emailaddress.value != document.register.emailaddress2.value) {
		group4.innerHTML += "<p>Please re-type your email address! (twice)</p>";
		err++;
		group4.style.display = "block";
		document.register.emailaddress2.style.color = "red";
		document.register.emailaddress.style.color = "red";
	}

	if(!pwdRegexp.test(document.register.password.value)) {
		group4.innerHTML += "<p>Please enter a new password! (alpha-numeric, at least 6 characters)<p>";
		err++;
		group4.style.display = "block";
		document.register.password.style.color = "red";
		document.register.password2.style.color = "red";
	}
	else if(document.register.password.value != document.register.password2.value) {
		group4.innerHTML += "<p>Passwords do not match. Please re-type your password!</p>";
		err++;
		group4.style.display = "block";
		document.register.password.style.color = "red";
		document.register.password2.style.color = "red";
	}
	
	if(err) {
		alert("There "+((err==1)?"was ":"were ")+err+" error"+((err==1)?"":"s")+" with the registration form. Please see messages at the top!");
		return false;
		
	}
	else {
		return true;
	}
	
}

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}