
function CheckActivationForm() {

	authcode = document.ActivationForm.authcode.value;
	passwd = document.ActivationForm.password.value;
	repasswd = document.ActivationForm.repassword.value;
	redirect_url  = document.ActivationForm.redirect_url.value;
	redirect_url = redirect_url.replace(/^(http|https):\/\//i, '');

	authcode_valid = new RegExp(/[^A-Za-z0-9]/);
	passwd_valid = new RegExp(/[^A-Za-z0-9]/);
	url_valid1 = new RegExp(/([A-z\d]+)\:([A-z\d]+)\@([A-z\d\-\.]+\.)+[A-z]/i);
	url_valid2 = new RegExp(/([A-z\d\-\.]+\.)+[A-z]/i);
	url_valid3 = new RegExp(/(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}/i);


	my_date = new Date();


	if(redirect_url == '') {

		alert('Please enter your destination web address.');
		XMLErrorUpdate(userid,133);
		document.ActivationForm.redirect_url.focus();
		return false;
	}

	else if((! url_valid1.test(redirect_url)) && (!  url_valid2.test(redirect_url)) && (!  url_valid3.test(redirect_url))) {

		alert('You have entered an invalid destination web address.');
		XMLErrorUpdate(userid,134);
		document.ActivationForm.redirect_url.focus();
		return false;
	}

	else if(passwd == '') {

		alert('Please choose a password.');
		XMLErrorUpdate(userid,116);
		document.ActivationForm.password.focus();
		return false;
	}

	else if (passwd.length < 6 || passwd_valid.test(passwd)) {

		alert('You have entered an invalid password.  Your password must be at least 6 characters long and must contain letters and numbers only.');
		XMLErrorUpdate(userid,117);
		document.ActivationForm.password.focus();
		return false;
	}

	else if ( passwd != repasswd ) {

		alert('The passwords do not match. Please make sure you type the same password in both text fields.');
		XMLErrorUpdate(userid,116);
		document.ActivationForm.password.focus();
		return false;
	}

	else if(authcode == '') {

		alert('Please enter your security code.');
		XMLErrorUpdate(userid,111);
		document.ActivationForm.authcode.focus();
		return false;
	}

	else if(authcode.length != 8 || authcode_valid.test(authcode)) {

		alert('You have entered an invalid security code.  Your security code is 8 characters long and contains letters and numbers only.');
		XMLErrorUpdate(userid,111);
		document.ActivationForm.authcode.focus();
		return false;
	}

	return true;

}


function checkSuggestUsernameForm() {

	if((! document.SuggestUsernameForm.suggestion[0].checked) && document.getElementById('email_form').style.display == 'none') {
		document.getElementById('email_form').style.display = 'block';

		document.SuggestUsernameForm.action='signup.cgi';

		return false;
	}

	else {
	
        	if(document.SuggestUsernameForm.suggestion[0].checked) {                // do some validating

	                user_suggestion = document.SuggestUsernameForm.user_suggestion.value;

			user_suggestion_valid = new RegExp(/[^a-z0-9\-\.]/);

			if (user_suggestion == '') {
                        	alert('Please enter a redirect name.');
                        	document.SuggestUsernameForm.user_suggestion.focus();
                        	return false;
                	}

                	else if (user_suggestion_valid.test(user_suggestion)) {
                        	alert(user_suggestion + " is an invalid redirect name.  Your redirect name must contain only lowercase letters or numbers, no spaces, and no special characters.");
                        	document.SuggestUsernameForm.user_suggestion.focus();
                        	return false;
                	}

                	else if (user_suggestion == 'https'||user_suggestion == 'search'||user_suggestion == 'login'||user_suggestion == 'admin') {
                        	alert(user_suggestion + " is not an acceptable redirect name.  Please choose another.");
                        	document.SuggestUsernameForm.user_suggestion.focus();
                        	return false;
                	}
        	}

		else {									// check email addresses

			email_address = document.SuggestUsernameForm.email_address.value;
			email_address_retype = document.SuggestUsernameForm.email_address_retype.value;
			email_address = email_address.replace(/\s+/g, '');		// trim leading and trailing spaces
			email_address_retype = email_address_retype.replace(/^\s+/, '');

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

			else {

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

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


			if (document.SuggestUsernameForm.agree.checked == false ){
				alert('You must agree to the terms and conditions.');
				return false;
			}
		}
	}

	return true;	
}


function checkLoginForm() {

	domain = document.LoginForm.domain.value;
	redirect_name = document.LoginForm.redirect_name.value.toLowerCase();
	email_address = document.LoginForm.email_address.value.toLowerCase();
	password = document.LoginForm.password.value;

	redirect_name_valid = new RegExp("[^a-z0-9\-\.\_]")
	email_valid = new RegExp(/^.+@.+\..{2,4}$/);

// check for username to process

	if(domain == '' && document.LoginForm.user_select[0].checked == true) {
		alert("You did not select a domain.");
		return false;
	}

	else if (redirect_name == '' && document.LoginForm.user_select[0].checked == true) {
		alert("Please enter your redirect name.");
		document.LoginForm.redirect_name.focus();
		return false;
	}

	else if (redirect_name_valid.test(redirect_name)) {
		alert(redirect_name + " is an invalid redirect name.  Your redirect name can contain only letters, numbers, hyphens and periods.");
		document.LoginForm.redirect_name.focus();
		return false;
	}

	else if (email_address == '' && document.LoginForm.user_select[1].checked == true) {
		alert("Please enter your email address.");
		document.LoginForm.email_address.focus();
		return false;
	}

	else if(email_address != '' && (! email_valid.test(email_address))) {
		alert("The email address you entered is invalid.");
		document.LoginForm.email_address.focus();
		return false;
	}
  
	else if(password == '') {
		alert("Please enter your password.");
		document.LoginForm.password.focus();
		return false;
	}

	return true;
}



function checkRegisterForm() {

	email_address = document.RegisterForm.email_address.value.toLowerCase();
	email_address_retype = document.RegisterForm.email_address_retype.value.toLowerCase();
	email_address = email_address.replace(/\s+/g, '');		// trim leading and trailing spaces for validation
	email_address_retype = email_address_retype.replace(/^\s+/, '');

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

	else {

// check email address syntax

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

// check retyped email address is the same as first one

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


// Check Agree

	if (document.RegisterForm.agree.checked == false ){
		alert('You must agree to the terms and conditions.');
		return false;
}



// check they haven't typoed their mail provider, must be the ladt check we do as can return true

	if(self.autocorrect_off == null) {

		var typo_array = new Array('homail.com:hotmail.com','hotmai.com:hotmail.com','ahoo.com:yahoo.com','hoymail.com:hotmail.com','hottmail.com:hotmail.com','yhaoo.com:yahoo.com','hotmial.com:hotmail.com','yhoo.com:yahoo.com','gmial.com:gmail.com','yahho.com:yahoo.com','hptmail.com:hotmail.com','hotrmail.com:hotmail.com','jotmail.com:hotmail.com','gmaill.com:gmail.com','yaoo.com:yahoo.com','gmal.com:gmail.com','gmai.com:gmail.com');

		var email_array = email_address.split('@');

		for(i = 0; i < typo_array.length; i++) {

			var this_typo_array = typo_array[i].split(':');

			if(email_array[1] == this_typo_array[0]) {

				var correct_typo = confirm('You entered ' + email_address + ' as your email address.\n\nShould we correct this to ' + email_array[0] + '@' + this_typo_array[1] + '?\n\n');

				if(correct_typo == true) {

					document.RegisterForm.email_address.value = email_array[0] + '@' + this_typo_array[1];
					document.RegisterForm.email_address_retype.value = document.RegisterForm.email_address.value;
					document.RegisterForm.email_address.focus();

				}

				else {

					self.autocorrect_off = 1;		// don't keep asking
				}

				return false;
			}
		}
	}

	return true;
}


function checkRedirectUpdateForm() {

	redirect_url = document.RedirectUpdateForm.redirect_url.value;
	email_forward = document.RedirectUpdateForm.email_forward.value;

	url_valid1 = new RegExp(/([A-z\d]+)\:([A-z\d]+)\@([A-z\d\-\.]+\.)+[A-z]/i);
	url_valid2 = new RegExp(/([A-z\d\-\.]+\.)+[A-z]/i);
	url_valid3 = new RegExp(/(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}/i);

	if(redirect_url == '') {
		alert("Please enter a web redirect target.");
		document.RedirectUpdateForm.redirect_url.focus();
		return false;
	}

	else if((! url_valid1.test(redirect_url)) && (!  url_valid2.test(redirect_url)) && (!  url_valid3.test(redirect_url))) {
		alert('You have entered an invalid web redirect address.');
		document.RedirectUpdateForm.redirect_url.focus();
		return false;
	}

	if(email_forward != '') {

		email_valid = new RegExp(/^.+@.+\..{2,4}$/);
		if(! email_valid.test(email_forward)) {
			alert("The mail forwarding address you entered is invalid.");
			document.RedirectUpdateForm.email_forward.focus();
			return false;
		}
	}

	return true;
}


function checkNewRedirectForm() {

	domain = document.NewRedirectForm.domain.value;
	redirect_name = document.NewRedirectForm.redirect_name.value.toLowercase();
	redirect_url = document.NewRedirectForm.redirect_url.value;
	email_forward = document.NewRedirectForm.email_forward.value;
	authcode = document.NewRedirectForm.authcode.value;

	redirect_name_valid = new RegExp("[^a-z0-9\-\.]");
	email_valid = new RegExp(/^.+@.+\..{2,4}$/);
	url_valid1 = new RegExp(/([A-z\d]+)\:([A-z\d]+)\@([A-z\d\-\.]+\.)+[A-z]/i);
	url_valid2 = new RegExp(/([A-z\d\-\.]+\.)+[A-z]/i);
	url_valid3 = new RegExp(/(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}/i);
	authcode_valid = new RegExp(/[a-z0-9]/);


	if(domain == '') {
		alert("You did not select a domain.");
		return false;
	}

	else if (redirect_name == '') {
		alert("Please enter a redirect name.");
		document.NewRedirectForm.redirect_name.focus();
		return false;
	}

	else if (redirect_name_valid.test(redirect_name)) {
		alert(redirect_name + " is an invalid redirect name.  Your redirect name can contain only letters, numbers, hyphens and periods.");
		document.NewRedirectForm.redirect_name.focus();
		return false;
	}	
	
	else if((! url_valid1.test(redirect_url)) && (!  url_valid2.test(redirect_url)) && (!  url_valid3.test(redirect_url))) {
		alert('You have entered an invalid web redirect address.');
		document.NewRedirectForm.redirect_url.focus();
		return false;
	}

	else if(email_forward != '' && (! email_valid.test(email_forward))) {
		alert('You have entered an invalid mail forwarding address.');
		document.NewRedirectForm.email_forward.focus();
		return false;
	}

	else if(authcode == '') {
		alert('You have not entered the authorization code.');
		document.NewRedirectForm.authcode.focus();
		return false;
	}

	else if(authcode.length != 8 || (! authcode_valid.test(authcode))) {
		alert("You have entered an invalid authorization code.");
		document.NewRedirectForm.authcode.focus();
		return false;
	}
	return true;
}	
	

function checkNewRedirectSuggestionForm() {

	if(document.NewRedirectSuggestionForm.suggestion[0].checked) {

		user_suggestion = document.NewRedirectSuggestionForm.user_suggestion.value;

		user_suggestion_valid = new RegExp(/[^a-z0-9\-\.]/);

		if (user_suggestion == '') {
			alert('Please enter a redirect name.');
			document.NewRedirectSuggestionForm.user_suggestion.focus();
			return false;
		}

		else if (user_suggestion_valid.test(user_suggestion)) {
			alert(user_suggestion + " is an invalid redirect name.  Your redirect name must contain only letters, numbers, hyphens and periods.");
			document.NewRedirectSuggestionForm.user_suggestion.focus();
			return false;
		}

		else if (user_suggestion == 'https'||user_suggestion == 'search'||user_suggestion == 'login'||user_suggestion == 'admin') {
			alert(user_suggestion + " is not an acceptable redirect name.  Please choose another.");
			document.NewRedirectSuggestionForm.user_suggestion.focus();
			return false;
		}

	}

	return true;
}


function CheckForgotPasswordForm() {

	user_select = document.ForgotPasswordForm.user_select;
	domain = document.ForgotPasswordForm.domain.value;
	redirect_name = document.ForgotPasswordForm.redirect_name.value.toLowerCase();
	email_address = document.ForgotPasswordForm.email_address.value.toLowerCase();

	redirect_name_valid = new RegExp("[^a-z0-9\-\.\_]")
	email_valid = new RegExp(/^.+@.+\..{2,4}$/);

	if(domain == '' && user_select[0].checked == true) {
		alert("You did not select a domain.");
		return false;
	}

	else if (redirect_name == '' && user_select[0].checked == true) {
		alert("Please enter your redirect name.");
		document.ForgotPasswordForm.redirect_name.focus();
		return false;
	}

	else if (redirect_name_valid.test(redirect_name) && user_select[0].checked == true) {
		alert(redirect_name + " is an invalid redirect name.  Your redirect name can contain only letters, numbers, hyphens and periods.");
		document.ForgotPasswordForm.redirect_name.focus();
		return false;
	}

	else if (email_address == '' && user_select[1].checked == true) {
		alert("Please enter your email address.");
		document.ForgotPasswordForm.email_address.focus();
		return false;
	}

	else if((! email_valid.test(email_address)) && user_select[1].checked == true) {
		alert("The email address you entered is invalid.");
		document.ForgotPasswordForm.email_address.focus();
		return false;
	}

	return true;
}

function XMLErrorUpdate(userid,err) {

	var request_url = '/app/signup/xmlerrorupdate.cgi';

	if (window.XMLHttpRequest){

		req = new XMLHttpRequest();
	}

	else if(window.ActiveXObject) {

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

	if(req) {

		req.open('POST', request_url, true);
		req.send('uid=' + userid + '&messageid=' + err);
	}
}




function CheckSearchForm() {

	domain = document.Searchform.domain.value;
	redirect_name = document.Searchform.redirect_name.value.toLowerCase();

	redirect_name_valid = new RegExp(/[^A-Za-z0-9\-\.]/);

	if(domain == '' || domain == 'more') {
		alert('You did not select a domain.');
		return false;
	}

	else if(redirect_name == '') {
		alert('You did not enter a redirect name.');
		document.Searchform.redirect_name.focus();
		return false;
	}

	else if(redirect_name_valid.test(redirect_name)) {
		alert(redirect_name+ " is an invalid redirect name.  Your redirect name must contain only letters or numbers, no spaces, and no special characters other than hyphens and periods.");

		document.Searchform.redirect_name.focus();
		return false;
	}

	return true;
}


function checkChangePasswordForm() {

	old_password = document.ChangePasswordForm.old_password.value;
	new_password = document.ChangePasswordForm.new_password.value;
	new_password_retype = document.ChangePasswordForm.new_password_retype.value;
	authcode = document.ChangePasswordForm.authcode.value;

	passwd_valid = new RegExp(/[^A-Za-z0-9]/);
	authcode_valid = new RegExp(/[^A-Za-z0-9]/);


	if(old_password == '') {

		alert('You have not entered your existing password.');
		document.ChangePasswordForm.old_password.focus();
		return false;
	}

	else if (old_password.length < 6 || passwd_valid.test(old_password)) {

		alert('You have entered an invalid existing password.  Your password must be at least 6 characters long and must contain letters and numbers only.');
		document.ChangePasswordForm.old_password.focus();
		return false;
	}

	else if (new_password == '') {

		alert('You have not entered your new password.');
		document.ChangePasswordForm.new_password.focus();
		return false;
	}

	else if (new_password.length < 6 || passwd_valid.test(new_password)) {

		alert('You have entered an invalid new password.  Your new password must be at least 6 characters long and must contain letters and numbers only.');
		document.ChangePasswordForm.new_password.focus();
		return false;
	}

	else if(new_password != new_password_retype) {

		alert('Your new passwords do not match.');
		document.ChangePasswordForm.new_password.focus();
		return false;
	}

	else if(authcode == '') {

		alert('Please enter your security code.');
		document.ChangePasswordForm.authcode.focus();
		return false;
	}

	else if(authcode.length != 8 || authcode_valid.test(authcode)) {

		alert('You have entered an invalid security code.  Your security code is 8 characters long and contains letters and numbers only.');		
		document.ChangePasswordForm.authcode.focus();
		return false;
	}
	
	return true;
}


function checkChangeEmailForm() {

	new_email = document.ChangeEmailForm.new_email_address.value;
	authcode = document.ChangeEmailForm.authcode.value;

	email_valid = new RegExp(/^.+@.+\..{2,4}$/);
	authcode_valid = new RegExp(/[^A-Za-z0-9]/);

	if(new_email == '') {

		alert('You did not enter your new contact email address.');
		document.ChangeEmailForm.new_email_address.focus();
		return false;
	}

	else if(! email_valid.test(new_email)) {

		alert("The email address you entered is invalid.");
		document.ChangeEmailForm.new_email_address.focus();
		return false;
	}

	else if(authcode == '') {

		alert('Please enter your security code.');
		document.ChangeEmailForm.authcode.focus();
		return false;
	}

	else if(authcode.length != 8 || authcode_valid.test(authcode)) {

		alert('You have entered an invalid security code.  Your security code is 8 characters long and contains letters and numbers only.');
		document.ChangeEmailForm.authcode.focus();
		return false;
	}
		
	return true;
}


function openInfoPage( url, w, h ) {

	window.open( url, 'info_page', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=0,width=' + w + ',height=' + h );
}

