// JavaScript Document

/* ==============================
AJAX Join form SPECIFIC
============================== */


function AJAX_CheckUniqueID() {
	var UniqueID = document.join.unique_name.value;
	var RequestFile = "check_unique_name.php?text=" + UniqueID;
	
	if (UniqueID.length > 0) {
		// check the characters
		if (check_characters(UniqueID)) {
			if (UniqueID.length >= 3) {
				// request ajax check
				document.getElementById("a").innerHTML='<img src="../comn/images/ani_h16_loading_a.gif" width="20" height="20" />';
				AJAX_GetRequest(RequestFile,"AJAX_CheckUniqueID_Response");
			} else {
				document.getElementById("a").innerHTML='<br />Enter at least 3 characters';
			}
		} else {
			document.getElementById("a").innerHTML='<img src="../comn/images/but_h20_x_red.gif" />';
			DisplayHelp(2);
		}
	} 
}
function AJAX_CheckUniqueID_Response(Response) {
	if (Response == "t") {
		// the name is in use.
		document.getElementById("a").innerHTML='<img src="../comn/images/but_h20_x_red.gif" />';
		document.join.un_good.value = "f";
	} else {
		document.getElementById("a").innerHTML='<img src="../comn/images/but_h20_tick_green.gif" />';
		document.join.un_good.value = "t";
	}
}
function AJAX_CheckEmail() {
	var Email = document.join.email.value;
	var RequestFile = "check_email_in_use.php?str=" + Email;
	// check is a valid email
	if (check_email(Email)) {
		// request ajax check
		document.getElementById("dd").innerHTML='<img src="../comn/images/animate_h16_loading_a.gif" width="20" height="20" />';
		AJAX_GetRequest(RequestFile,"AJAX_CheckEmail_Response");
	} else {
		document.getElementById("dd").innerHTML='';
	}
}
function AJAX_CheckEmail_Response(Response) {
	if (Response == "t") {
		// the email is in use.
		document.getElementById("dd").innerHTML='<img src="../comn/images/but_h20_x_red.gif" /><br />Email previously registered. Forgotten Password';
		document.join.e_good.value = "f";
	} else {
		document.getElementById("dd").innerHTML='<img src="../comn/images/but_h20_tick_green.gif" />';
		document.join.e_good.value = "t";
	}
}



/* ==============================
for the sign up form
============================== */


function check_characters(StringToCheck) {
	// check the string make sure has correct characters
	var allow_characters = new Array("a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J","k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v","V","w","W","x","X","y","Y","z","Z","0","1","2","3","4","5","6","7","8","9","_","-",".");
	var allow_characters_length = allow_characters.length;
	// get the values
	var string_length = StringToCheck.length;
	var string_value = StringToCheck;
	
	// check each character
	for (counter_a = 0; counter_a < string_length; counter_a++) {
		var string_character = string_value.charAt(counter_a);
		// check each character against the allowable character types
		for (counter_b = 0; counter_b < allow_characters_length; counter_b++) {
			var check_character = allow_characters[counter_b];
			if (string_character == check_character) {
				var Is_String_Good = true;
				break;
			} else {
				var Is_String_Good = false;
			}
		}
	}
	// return value
	if (Is_String_Good) {
		return true;
	} else {
		return false;
	}
}


// check email
function check_email(EmailToCheck) {
	EmailLength = EmailToCheck.length;
	IndexOfAt = EmailToCheck.indexOf("@");
	IndexOfDot = EmailToCheck.lastIndexOf(".");
	if (IndexOfAt > -1) {
		if (IndexOfDot > -1) {
			if (IndexOfAt < (IndexOfDot - 1)) {
				if (IndexOfDot < (EmailLength - 1)) {
					return true;
				}
			}
		}
	}
	return false;
}


// function to display form help info 
function DisplayHelp(displayID) {
	// list messages. will need to alter when using multiple languages, make sure the case matches the string type!!
	switch(displayID) {
		case 1:
			var message = "Please create a Unique Login ID.";
			break;
		case 2:
			var message = "Only use the allowable characters.";
			break;
		case 3:
			var message = "Please enter a profile name.";
			break;
		case 4:
			var message = "Please enter your full name.";
			break;
		case 5:
			var message = "Please enter an email.";
			break;
		case 6:
			var message = "Please enter a valid email.";
			break;
		case 7:
			var message = "Please confirm the emails match.";
			break;
		case 8:
			var message = "Please create a password with a minimum of 6 characters.";
			break;
		case 9:
			var message = "You need to accept the terms and conditions.";
			break;
		case 10:
			var message = "Please select your date of birth.";
			break;
		case 11:
			var message = "Please select your gender.";
			break;
		case 12:
			var message = "Please select your country.";
			break;
		case 13:
			var message = "The email has been previously used. Have you forgotten your password?";
			break;
	}
	// update the content in the 
	if (document.getElementById("form_help_text").innerHTML=message) {
		if (AlertShow("form_help")) {
			return true;
		}
	}
	return false;
}


// function to check the form
function validate() {
	// check the characters in the unique name
	var UniqueName = document.join.unique_name.value;
	if (UniqueName.length > 0) {
		if (!check_characters(UniqueName)) {
			// if returns false send a message
			DisplayHelp(2);
			return false;
			// test alert("good");
		} 
	} else {
		DisplayHelp(1);
		return false;
	}
	
	// check the Profile Name
	// add test for characters later, be careful of different character sets
	var ProfileName = document.join.profile_name.value;
	if (ProfileName.length == 0) {
		DisplayHelp(3);
		return false;
	}
	
	// check the Full Name
	// add test for characters later
	var FullName = document.join.full_name.value;
	if (FullName.length == 0) {
		DisplayHelp(4);
		return false;
	}
	
	// check DOB
	var dob_day = document.join.dob_day.value;
	if (dob_day == "Day") {
		DisplayHelp(10);
		return false;
	}
	var dob_month = document.join.dob_month.value;
	if (dob_month == "Month") {
		DisplayHelp(10);
		return false;
	}
	var dob_year = document.join.dob_year.value;
	if (dob_year == "Year") {
		DisplayHelp(10);
		return false;
	}
	// check the gender
	var gender = document.join.gender.value;
	if (gender == "select") {
		DisplayHelp(11);
		return false;
	}
	// check the country
	var locale_country = document.join.locale_country.value;
	if (locale_country == "select") {
		DisplayHelp(12);
		return false;
	}

	// check the email
	var UserEmail = document.join.email.value;
	if (UserEmail.length > 0) {
		if (!check_email(UserEmail)) {
			// if returns false send a message
			DisplayHelp(6);
			return false;
		} 
	} else {
		DisplayHelp(5);
		return false;
	}
	
	// confirm the email
	var ConfirmEmail = document.join.confirm_email.value;
	if (UserEmail != ConfirmEmail) {
		DisplayHelp(7);
		return false;
	}
	
	// check the password
	// make it min 6 characters
	var PassWord = document.join.pw.value;
	if (PassWord.length > 5) {
		if (!check_characters(PassWord)) {
			// if returns false send a message
			DisplayHelp(2);
			return false;
		} 
	} else {
		DisplayHelp(8);
		return false;
	}

	// check the terms box has been ticked
	if (!document.join.tnc.checked) {
		DisplayHelp(9);
		return false;
	}
	
	// check unique id has been checked by ajax
	var UNChecked = document.join.un_good.value;
	if (UNChecked == "f") {
		DisplayHelp(1);
		return false;
	}
	
	// check email has been checked by ajax
	var EmailChecked = document.join.e_good.value;
	if (EmailChecked == "f") {
		DisplayHelp(5);
		return false;
	}
	
	// secure pw to send over network
	var hashpw = hex_sha1(PassWord);
	if (document.join.pw.value = hashpw) {
		return true;
	}

	return false;
}