//4WD Tasmania JavaScript File
//Include the include.js file for functions used here.
document.write('<script type="text/javascript" src="includes/include.js"></script>');
//This variable holds the root position of the site (change for when uploaded to net)
var root ='4wdtasmania.org/';
var full_root = '4wdtasmania.org/';		//REMOTE
var lr = "remote";
if (document.location.href.indexOf('file:///') !== -1) {
	full_root = 'file:///D:/My%20Webs/4WD%20TAS/';				//LOCAL
	root ='4WD%20TAS/';
	lr = "local";
}
//This function deals with direct links
function redirect() 
{
	var l = document.location.href;
	if (l.indexOf(full_root + 'index.html') == -1 && l.indexOf(full_root + 'index.php') == -1) 
	{
		if (l.indexOf('.html') !== -1 || l.indexOf('.htm') !== -1 || l.indexOf('.php') !== -1) 
		{
			//needs redirecting
			var page = l.substr(l.indexOf(root) + root.length);
			var newlocation = full_root + "redirect.php?page=" + page;
			document.location.href = newlocation;
		}//else must be homepage
	} //else must be homepage
}
redirect();
function validateRegistration() 
{
	if (!document.getElementById) { return false; }
	
	removeErrorId("Username");
	removeErrorId("FirstName");
	removeErrorId("LastName");
	removeErrorId("Password");
	removeErrorId("Confirm");
	removeErrorId("Email");
	
	var valid = new Array();
	valid[0] = validate_alphaNumerics("Username");
	valid[1] = validate_alpha("FirstName", "Given Name");
	valid[2] = validate_alpha("LastName", "Last Name");
	valid[3] = validate_alpha("Password");
	valid[4] = validate_passwordMatch("Password");
	valid[5] = validate_length("Username", 4, 20);
	valid[6] = validate_length("Password", 5, 20);
	valid[7] = validate_char("Email", "@");
	valid[8] = validate_required("Username");
	valid[9] = validate_required("FirstName", "Given Name");
	valid[10] = validate_required("LastName", "Last Name");
	valid[11] = validate_required("Password");
	valid[12] = validate_required("Confirm");
	valid[13] = validate_required("Email");
	
	for (var i = 0; i < valid.length; i++)
	{
		if (!valid[i])
		{
			return false;
		}
	}
	return true;	
}

function validate_alphaNumerics(elementId, friendlyName)
{
	friendlyName = (friendlyName == "") ? elementId : friendlyName;
	var element = document.getElementById(elementId);
	if (element.value.search(/\W/) != -1) //has dodgey characters
	{
		if (element.value.search(/\s/) == -1) //dodgey characters are not spaces
		{
			addError(element, elementId + " can only contain letters, numbers and spaces");
			return false;
		}
		else { return true; }
	}
	else { return true; }	
}

function validate_alpha(elementId, friendlyName)
{
	friendlyName = (friendlyName == "") ? elementId : friendlyName;
	var element = document.getElementById(elementId);
	if (element.value.search(/\W/) != -1) //has dodgey characters
	{
		addError(element, elementId + " can only contain letters");
		return false;
	}
	else { return true; }	
}
function validate_char(elementId, char, friendlyName)
{
	friendlyName = (friendlyName == "") ? elementId : friendlyName;
	var element = document.getElementById(elementId);
	if (element.value.search(char) == -1) //char is not found
	{
		addError(element, elementId + " must contain the '" + char + "' character");
		return false;
	}
	else { return true; }	
}

function validate_required(elementId, friendlyName)
{
	friendlyName = (friendlyName == "") ? elementId : friendlyName;
	var element = document.getElementById(elementId);
	element.value.replace(/^\s/g, ""); //trim
	element.value.replace(/\s%/g, ""); //trim
	if (element.value.length <= 0) 
	{
		addError(element, elementId + " is a required field");
		return false;
	}
	else { return true; }	
}
function validate_length(elementId, minLength, maxLength, friendlyName)
{
	friendlyName = (friendlyName == "") ? elementId : friendlyName;
	var element = document.getElementById(elementId);
	element.value.replace(/^\s/g, ""); //trim
	element.value.replace(/\s%/g, ""); //trim
	if (element.value.length < minLength) 
	{
		addError(element, elementId + " must be at least " + minLength + " characters long");
		return false;
	}
	if (element.value.length > maxLength) 
	{
		addError(element, elementId + " must be no more than " + maxLength + " characters long");
		return false;
	}
	else { return true; }	
}

function validate_passwordMatch(elementId, friendlyName)
{
	friendlyName = (friendlyName == "") ? elementId : friendlyName;
	var element = document.getElementById(elementId);
	if (element.value != document.getElementById("Confirm").value)
	{
		addError(element, elementId + " must match Confirm Password field.");
		return false;	
	}
	return true;	
}

function addError(element, message)
{
	var errorElement = document.createElement("span");
	var errorText = document.createTextNode(message);
	errorElement.appendChild(errorText);
	element.parentNode.getElementsByTagName("div").item(0).appendChild(errorElement);
	element.parentNode.className="validationError";
}
function removeError(element) 
{
	element.parentNode.className=""; 
	var emptying = element.parentNode.getElementsByTagName("div").item(0);
	while (emptying.childNodes.length > 0)
	{
		emptying.removeChild(emptying.childNodes.item(0));
	}
}
function removeErrorId(elementId)
{
	removeError(document.getElementById(elementId));	
}
function validateChangePassword()
{
	if (this.Password.value != this.Confirm.value)
	{
		alert("Passwords entered do not match!");
		return false;	
	}
	return true;
}
function setInnerHTML(elementId, text)
{
	if (document.getElementById)
	{
		document.getElementById(elementId).innerHTML = text;
	}
}
function ajaxRequest(method, page, funct, loadingFunct, data)
{
	var request = getHTTPObject();
	if (!request) { return true; }
	request.onreadystatechange = function()
	{
		if(this.readyState == 1)
		{
			eval(loadingFunct);	
		}
		else if(this.readyState == 4)
		{
			if(this.status == 200)
			{
				var response = this.responseText;
				eval(funct);
			}
			this.close;
		}
	}
	request.open(method, page, true);
	request.send(data);
	return false;
}
function getHTTPObject()
{
	var r = new XMLHttpRequest();	
	if (!r) 
	{
		r = new ActiveXObject("Microsoft.XMLHTTP");	
	}
	return r;
}