

var namecheck_url = '/app/signup/namecheck.cgi';

function UsernameCheck(username) {

	invalid_un = new RegExp(/[^a-z0-9]/)

	if (invalid_un.test(username)) {
		alert(username + " is an invalid address.  Your address must contain only lowercase letters or numbers, no spaces, and no special characters.");
		document.RegisterForm.username.focus();
		return false;
	}

	else if(username != '' && username.length < 5) {
		alert("Your address must be at least 5 characters in length.")
		document.RegisterForm.username.focus();
	}

	else if (username == "https"||username == "search"||username == "login"||username == "admin"
	||username == "manage"||username == "update"||username == "images"
	||username == "gifts"||username == "cameras"||username == "survey"||username == "rawimages") {
		alert(username + " is not an acceptable address.  Please choose another.");
		document.RegisterForm.username.focus();
		return false;
	}

	return true;
}


function XMLNameCheck(username,email_address,mode) {

	if(mode == 'blur') {

		username = username.toLowerCase();

		var valid_username = UsernameCheck(username);

		if(! valid_username) {return false}

		var namecheck_params = 'username=' + username;
	}

	else if(mode == 'submit') {

		var namecheck_params = 'username=' + username + '&email_address=' + email_address;
	}

	if (window.XMLHttpRequest){

		req = new XMLHttpRequest();
	}

	else if(window.ActiveXObject) {

		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if(req) {

		req.open('POST', namecheck_url, true);

		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.setRequestHeader("Content-length", namecheck_params.length);
		req.setRequestHeader("Connection", "close");

		req.onreadystatechange = function() {		// Call a function when the state changes.

			if(req.readyState == 4 && req.status == 200) {


				if(req.responseText == "Ok\n") {

					if(mode == 'blur') {

						document.getElementById('searchform').style.backgroundImage = 'url(' + image_yes + ')';
					}

					else if(mode == 'submit') {

						document.RegisterForm.submit();
					}
				}

				else {

					if(mode == 'submit') {

						document.getElementById('searchform').style.backgroundImage = 'url(' + image_no + ')';

						var suggestion_array = req.responseText.split("\n");

						var dynamic_content = 'Or, choose an available suggestion:<br><ul style="list-style-type: none; margin: 0 0 0 10px">';

						for(i = 0; i < suggestion_array.length - 1; i++) {

							dynamic_content = dynamic_content + '<li><input type="radio" name="suggest" value="' + suggestion_array[i] + '" onclick="document.RegisterForm.username.value = \'' + suggestion_array[i] +  '\'; document.getElementById(\'searchform\').style.backgroundImage = \'url(\' + image_yes + \')\'; animatedcollapse.toggle(\'fail\'); animatedcollapse.toggle(\'initial\');">&nbsp;<b>' + suggestion_array[i] + '</b></li>';

							}

							dynamic_content = dynamic_content + '</ul>';

							document.getElementById('fail').innerHTML = dynamic_content;

							animatedcollapse.toggle('fail');
						}

					else {

						document.getElementById('searchform').style.backgroundImage = 'url(' + image_no + ')';	

					}

					}

					return;
				}
			}

			req.send(namecheck_params);
		}

	 return false;
}


function checkRegisterForm() {

	username = document.RegisterForm.username.value.toLowerCase();

	email_address = document.RegisterForm.email_address.value;
	email_address_retype = document.RegisterForm.email_address_retype.value;

	email_address = email_address.replace(/^\s+/, '');	// trim leading and trailing spaces for validation
	email_address = email_address.replace(/\s+$/, '');	// Javascript regexps suck, can't combine with a pipe
	email_address_retype = email_address_retype.replace(/^\s+/, '');
	email_address_retype = email_address_retype.replace(/\s+$/, '');

	if (username == '') {
		alert("Please enter an address.");
		document.RegisterForm.username.focus();
		return false;
	}

	if (email_address == '') {
		alert("Please enter your email address.");
		document.RegisterForm.email_address.focus();
		return false;
	}

	else {
		var filter=/^.+@.+\..{2,4}$/;
		if(!(filter.test(email_address))) {
			alert("The email address you entered is invalid.");
			document.RegisterForm.email_address.focus();
			return false;
		}
	}

	if(email_address != email_address_retype) {
		alert('Your email addresses do not match.')
		document.RegisterForm.email_address.focus();
		return false;
	}

	if (document.RegisterForm.agree.checked == false ) {
		alert('You must agree to the Terms of Use.');
		return false;
	}

	XMLNameCheck(document.RegisterForm.username.value,document.RegisterForm.email_address.value,'submit');

	return false;
}


