	/* GET ELEMENTS BY CLASS */

function getElementsByClassName(oElm, strTagName, oClassNames)
{
var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
var arrReturnElements = new Array();
var arrRegExpClassNames = new Array();

	if(typeof oClassNames == "object")
	{
	for(var i=0; i<oClassNames.length; i++)
		{
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else
	{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	
	for(var j=0; j<arrElements.length; j++)
	{
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++)
		{
			if(!arrRegExpClassNames[k].test(oElement.className))
				{
				bMatchesAll = false;
				break;
				}
		}
		if(bMatchesAll)
			{
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

	/* VALIDATE FORM */

var formid = "joinform"

function errorNote(x)
{
var error = document.getElementById('error');

	if (document.getElementById('error') != null)
	{
		return false;
	}
	
	if (x == "show")
	{
		var newP = document.createElement("p");
		newP.setAttribute("id", "error");
		var txt = 'You have not correctly filled in all the required fields. Please try again.';
		var msg = document.createTextNode(txt);
		newP.appendChild(msg);
		var form = document.getElementById('joinform');
		form.parentNode.insertBefore(newP,form);
	}
	else
	{
		if (document.getElementById('error') != null)
		{		
			error.parentNode.removeChild(error);
		}
	}
return true;	
}

function validateRequired(field,error)
{
	if (valid)
	{
		if (document.forms[formid].elements[field].value != "")
			{document.getElementById(field).parentNode.className = '';
			errorNote('hide');
			}
	
		if (document.forms[formid].elements[field].value == "")
		{
			document.getElementById(field).parentNode.className = 'error';
			var spanText = document.createTextNode(error);
			var newSpan = document.createElement("span");
			newSpan.setAttribute("class", "error");
			newSpan.setAttribute("className", "error"); // for IE
			newSpan.appendChild(spanText);
			var parent = document.getElementById(field).parentNode;
			var newChild = parent.appendChild(newSpan);
		}
	}
return true;
}

function validateNumber(field,error)
{
var re = /^[-]?\d*\.?\d*$/;
str = document.forms[formid].elements[field].value;

	if (valid)
	{
		if (document.forms[formid].elements[field].value != "")
			{document.getElementById(field).parentNode.className = '';}
	
		if (!str.match(re))
		{
			document.getElementById(field).parentNode.className = 'error';
			var spanText = document.createTextNode(error);
			var newSpan = document.createElement("span");
			newSpan.setAttribute("class", "error");
			newSpan.setAttribute("className", "error"); // for IE
			newSpan.appendChild(spanText);
			var parent = document.getElementById(field).parentNode;
			var newChild = parent.appendChild(newSpan);			
		}
	}
return true;
}

function validatePhone(field,error)
{
var re = /^(\(\d+\) ?)?(\d+[\- ])*\d+$/;
str = document.forms[formid].elements[field].value;
	if (valid)
	{
		if (document.forms[formid].elements[field].value == "")
			{return true;}

		if (document.forms[formid].elements[field].value != "")
			{document.getElementById(field).parentNode.className = '';}

		if (!str.match(re))
		{
			document.getElementById(field).parentNode.className = 'error';
			document.forms[formid].elements[field].focus();
			var spanText = document.createTextNode(error);
			var newSpan = document.createElement("span");
			newSpan.setAttribute("class", "error");
			newSpan.setAttribute("className", "error"); // for IE
			newSpan.appendChild(spanText);
			var parent = document.getElementById(field).parentNode;
			var newChild = parent.appendChild(newSpan);			
		}
	}
return true;
}

function validateEmail(field,error)
{
var re = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
str = document.forms[formid].elements[field].value;
	if (valid)
	{
		if (document.forms[formid].elements[field].value == "")
			{return false;}

		if (document.forms[formid].elements[field].value != "")
			{document.getElementById(field).parentNode.className = '';}

		if (!str.match(re))
		{
			document.getElementById(field).parentNode.className = 'error';
			document.forms[formid].elements[field].focus();
			var spanText = document.createTextNode(error);
			var newSpan = document.createElement("span");
			newSpan.setAttribute("class", "error");
			newSpan.setAttribute("className", "error"); // for IE
			newSpan.appendChild(spanText);
			var parent = document.getElementById(field).parentNode;
			var newChild = parent.appendChild(newSpan);			
		}
	}
return true;
}

function validateValue(field,value,error)
{
	if (valid)
	{
		if (document.forms[formid].elements[field].value == "")
			{return true;}
	
		if (document.forms[formid].elements[field].value != value)
		{
			document.getElementById(field).parentNode.className = 'error';
			var spanText = document.createTextNode(error);
			var newSpan = document.createElement("span");
			newSpan.setAttribute("class", "error");
			newSpan.setAttribute("className", "error"); // for IE
			newSpan.appendChild(spanText);
			var parent = document.getElementById(field).parentNode;
			var newChild = parent.appendChild(newSpan);
		}
	}
return true;
}

function validateForm()
{
var els = getElementsByClassName(document, "span", "error");
	if (els.length > 0)
	{		
		for (i=0;i<els.length;i++ )
			{
			var span = els[i];
			var parent = span.parentNode;
			var removedChild = parent.removeChild(span);
			}
	}

	valid = true;
	valid = validateRequired('company','Please enter your company name.');
	valid = validateRequired('street_address','Please enter your street address.');
	valid = validateRequired('city','Please enter your town or city.');

	if (document.forms[0].country.value == "Australia")
	{
		valid = validateRequired('state','Please enter your state');
		valid = validateRequired('postcode','Please enter your postcode');
	}

	if (document.forms[0].country.value == "Other")
	{
		valid = validateRequired('country_other','Please enter your country');
	}
	
	valid = validateRequired('company_phone','Please enter your main phone number.');
	valid = validatePhone('company_phone','Please enter a valid phone number.');
	valid = validateRequired('first_name','Please enter your first name.');
	valid = validateRequired('last_name','Please enter your last name.');
	valid = validateRequired('job_title','Please enter your job title.');
	valid = validateRequired('email_address','Please enter your email address.');
	valid = validateEmail('email_address','Please enter a valid email address.');
	valid = validateRequired('work_phone','Please enter your work phone number.');
	valid = validatePhone('work_phone','Please enter a valid phone number.');
	valid = validateRequired('mobile_phone','Please enter your mobile phone number.');
	valid = validatePhone('mobile_phone','Please enter a valid phone number.');
	valid = validateRequired('preferred_contact','Please indicate your preferred contact method.');
	valid = validateRequired('business_description','Please describe your business.');
	valid = validateRequired('year_established','Please enter when your company was established.');
	valid = validateNumber('year_established','Please enter numbers only.');
	valid = validateRequired('revenue_total','Please enter your total annual revenue.');
	valid = validateNumber('revenue_total','Please enter numbers only.');
	valid = validateRequired('employees_total','Please enter your total number of employees.');
	valid = validateNumber('employees_total','Please enter numbers only.');

	if (document.forms[0].vertical_focus.checked == true)
	{
		valid = validateRequired('vertical_focus_other','Please specify your vertical market focus.');
	}		

	valid = validateRequired('current_products','Please enter your current products.');
	valid = validateRequired('desired_relationship','Please indicate your desired relationship.');
	valid = validateRequired('reseller_agreement','You must agree to the terms & conditions to become a partner.');
	valid = validateValue('reseller_agreement','Agree','You must agree to the terms & conditions to become a partner.');

var errorspans = getElementsByClassName(document, "span", "error");
	if (errorspans.length == 0)
	{
		return true;
	}
	else
	{
		errorNote('show');
	}
	
return false;
}