// JavaScript Document

/*
NOTE:
For the validation function to work in a sane manner, all checking functions
must return 0 on success and >0 on failure. This may seem counter-intuitive,
so just think of it as an "error level".
*/

function validateForm() {	
	var err = 0;
	
	validateUsername($('username'));
	if ($('usernameError').innerHTML.match('warning')) {
		err++;
	}
	err += validatePasswords($('password2'));
	err += validateEmail($('email'));
	
	var reqd = new Array('fname','lname','title');
	if ( $('companyName') != null ) {
		reqd.concat(new Array ('companyName','address','City','province','postal','country','phoneNumber','website'));
	}
	
	for ( var i = 0 ; i < reqd.length ; i++ ) {
		err += validateRequired($(reqd[i]));
	}
	
	if (err == 0) {
		document.theform.submit();
		return true;
	} else {
		alert('There are errors in some of the form fields. Please review the information in the form and try again.');
		return false;
	}
}

function notRequired(o) {
	document.getElementById(o.id+'Error').innerHTML='<img src="template/images/checkmark.gif" />';
	return 0;
}

function validateEmail(o) {
	if (!o.value.match('^[0-9A-Za-z](([_\.\\-+]?[0-9A-Za-z]+)*)@([0-9A-Za-z]+)(([\.\\-]?[0-9A-Za-z]+)*)\.([A-Za-z]{2,4})$') ) {
		makeError(o,'You must enter a valid email address');
		return 1;
	} else {
		document.getElementById(o.id+'Error').innerHTML='<img src="template/images/checkmark.gif" />';
		return 0;
	}
}

function validatePasswords(o) {
	if (validateRequired(o) > 0) return 1;
	if (document.getElementById('password1').value !== o.value) {
		makeError(o,'The passwords do not match.', true);
		makeError(document.getElementById('password1'),'The passwords do not match.');
		return 1;
	} else {
		document.getElementById(o.id+'Error').innerHTML='<img src="template/images/checkmark.gif" />';
		document.getElementById('password1Error').innerHTML='<img src="template/images/checkmark.gif" />';
		return 0;
	}
}

function validateUsername(o) {
	var url = "ajaxWorker.php?action=checkUser&userTest=" + o.value;
	var req = new Request({url:url,
		onSuccess: function(txt) {
			if (txt == 'OK') {
				$('usernameError').innerHTML = '<img src="template/images/checkmark.gif" />';
			} else {
				$('usernameError').innerHTML = '<img src="template/images/warning.gif" />';
			}
		},
		//Our request will most likely succeed, but just in case, we'll add an
		//onFailure method which will let the user know what happened.
		onFailure: function() {
			// XXX: FIXME! For some reason, this fails on form submit. Find out why!
			/*alert('fail');*/
		}
	});
	req.send();
}

function validateTextarea(o,minlen,maxlen) {
	if (o.value.length <=minlen) {
		makeError(o,'You should probably write some more details');
		return 1;
	} else if (o.value.length >= maxlen) {
		makeError(o,'You wrote a little too much, try to keep it under '+maxlen+' characters',true);
		return 1;
	} else {
		document.getElementById(o.id+'Error').innerHTML='<img src="template/images/checkmark.gif" />';
		return 0;
	}
}

function validateRequired(o) {
	if (o.value.length <=1) {
		makeError(o,'You must complete this field');
		return 1;
	} else {
		document.getElementById(o.id+'Error').innerHTML='<img src="template/images/checkmark.gif" />';
		return 0;
	}
}

function makeError(o,msg,override) {
	//if ((override==undefined) &&(document.getElementById(o.id+'Error').innerHTML!='')) { return false; }
	//if (override==undefined) return false;
	document.getElementById(o.id+'Error').innerHTML = '<img src="template/images/warning.gif" alt="'+msg+'" title="'+msg+'" />';
}