function trim(inputString) {

	if (typeof inputString != "string") {
		return inputString; 
	}
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ") { // Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ") { // Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
	}
	return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function

function checkPhone(val,field,man){
	var phoneNumberFilter=  /^(02\d\s?\d{4}\s?\d{4})|((01|05)\d{2}\s?\d{3}\s?\d{4})|((01|05)\d{3}\s?\d{5,6})|((01|05)\d{4}\s?\d{4,5})$/;
	var error = true;
	var elem = document.getElementById(val);
	if((man == 1) && (elem.value.length == 0)){
		alert("A valid "+field+" is required.");
		elem.style.backgroundColor = '#f5c9ff';
		elem.select();
		elem.focus();
		error = false;
	}
	else if((elem.value.length > 0) && !phoneNumberFilter.test(elem.value)){
			 alert("The "+field+" number is not a valid UK landline number.");
			 elem.style.backgroundColor = '#f5c9ff';
			 elem.select();
			 elem.focus();
			 error = false;
		 }
		 else
			 elem.style.backgroundColor = '#fff';
	return error;
}
function checkEmail(val,field){
	var emailFilter=/^.+@.+\..{2,4}$/;
	var error = true;
	var elem = document.getElementById(val);
	elem.value = trim(elem.value);
	if(!(emailFilter.test(elem.value))){
		alert("A valid "+field+" is required.");
		elem.style.backgroundColor = '#f5c9ff';
		elem.select();
		elem.focus();
		error = false;
	}
	 else
		 elem.style.backgroundColor = '#fff';
	return error;
}

function checkString(val,field,man){
	var illegalChars= /^[a-zA-Z0-9_\s-\',.]+$/;
	var error = true;
	var elem = document.getElementById(val);
	elem.value = trim(elem.value);
	if((man == 1) && (elem.value.length == 0)){
		alert("A valid "+field+" is required.");
		elem.style.backgroundColor = '#f5c9ff';
		elem.select();
		elem.focus();
		error = false;
	}
	else if(elem.value.length > 0){
		 if(!illegalChars.test(elem.value)){
			 alert("The "+field+" contains at least one invalid character. Only letters, numbers, hyphens, period, comma and single quote (/') are permitted.");
			 elem.style.backgroundColor = '#f5c9ff';
			 elem.select();
			 elem.focus();
			 error = false;
		 }
		 else
			 elem.style.backgroundColor = '#fff';
	}
	return error;
}

function checkPostCode(val,field){
	var error = true;
	var postcodeFilter = /^[A-Z]{1,2}\d{1,2}\ \d{1,2}[A-Z]{1,2}$/;
	var elem = document.getElementById(val);
	elem.value = trim(elem.value);
	elem.value = string.toUpperCase();
	if(elem.value == "") {
		error = false;
	 }
	 else if(!(postcodeFilter.test(elem.value))) { 
		   error = false;
	}
	if(!error){
		 alert("A valid "+field+" is required.");
		 elem.style.backgroundColor = '#f5c9ff';
		 elem.select();
		 elem.focus();
	}
	return error;
}

function swapTask(val){
	var elem = document.getElementById("task");
	switch(val){
		case 1 :
			elem.value = 'register-step1';
			document.loginForm.submit();
			break;
		case 1 :
			elem.value = 'register-step2';
			document.loginForm.submit();
			break;
	}
	
}

function toggleEnable(val){
	var elem = document.getElementById(val);
	if(elem.disabled == false)
		elem.disabled = true;
	else
		elem.disabled = false;
}

function toggleVisible(val){
	var elem = document.getElementById(val);
	if(elem.style.display == 'none')
		elem.style.display = '';
	else
		elem.style.display = 'none';
}

function validatereg(){
	var isgood = true;
	var form_inputs = new Array();
	form_inputs[0] = "company_name";
	form_inputs[1] = "contact_name";
	form_inputs[2] = "contact_email";
	form_inputs[3] = "contact_tel";
	form_inputs[4] = "contact_fax";
	form_inputs[5] = "contact_line1";
	form_inputs[6] = "contact_line2";
	form_inputs[7] = "contact_line3";
	form_inputs[8] = "contact_town";
	form_inputs[9] = "contact_county";
	form_inputs[10] = "contact_postcode";
	form_inputs[11] = "billing_line1";
	form_inputs[12] = "billing_line2";
	form_inputs[13] = "billing_line3";
	form_inputs[14] = "billing_town";
	form_inputs[15] = "billing_county";
	form_inputs[16] = "billing_postcode";
	index = 0;
	while(index < 17){
		alert("the index value is: "+index+" and its field is: "+form_inputs[index]);
		switch(index){
			case 2:
				if(!checkEmail(form_inputs[index],'contact email'))
					isgood = false;
				break;
			case 3:
				if(!checkPhone(form_inputs[index],"contact telephone",1))
					isgood = false;
				break;
			case 4:
				if(!checkPhone(form_inputs[index],"contact fax",0))
					isgood = false;
				break;
			case 10:
				if(!checkPostCode(form_inputs[index],"contact address postcode"))
					isgood = false;
				break;
			case 16:
				if(!checkPostCode(form_inputs[index],"billing address postcode"))
					isgood = false;
				break;
				default:
				if(index > 10){
					if(document.getElementById("billing_address_div").style.display != "none"){
						if((index == 12) || (index == 13))
							man = 0;
						else
							man = 1;
						temp = form_inputs[index];
						if(!checkString(form_inputs[index],temp.replace("_", " "),man))
							isgood = false;
					}
				}
				else{
					if((index == 6) || (index == 7))
						man = 0;
					else
						man = 1;
					temp = form_inputs[index];
					if(!checkString(form_inputs[index],temp.replace("_", " "),man))
						isgood = false;
				}
		}
		if(!isgood)
			break;
		index++;
	}
	alert("the result of the submit is: "+isgood);
	if(isgood){
		var elem = document.getElementById('task');
		elem = "register_step1";
		elem = document.getElementById('registrationForm');
		elem.submit();
	}
}