function ajax_object(){
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
		return ajaxRequest;
	} 
	catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
			return ajaxRequest;
		} 
		catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
				return ajaxRequest;
			} 
			catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
}
function validate_email(field){
	with (field){
		apos=value.indexOf("@");
		dotpos=value.lastIndexOf(".");
		illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
		if (value.match(illegalChars)){
			return false;
		}
		else if (apos<1||dotpos-apos<2){
			return false;
		}
		else {
			return true;
		}
	}
}

function validate_string(field){
	with (field){
		if (value == "" || value==null) {
			return false;
		}
		else {
			return true;
		}
	}
}

function error_register(message){
	document.getElementById("register_error").innerHTML = message;
	document.getElementById("register_error").style.display = "block";
}

function error_callback(message){
	document.getElementById("callback_error").innerHTML = message;
	document.getElementById("callback_error").style.display = "block";
}

function error_contact(message){
	document.getElementById("contact_error").innerHTML = message;
	document.getElementById("contact_error").style.display = "block";
}

function validate_register(form){
	with(form){
		if (!validate_string(firstname)){
			error_register("Please enter your first name");
			firstname.focus();
			return false;
		}
		if (!validate_string(lastname)){
			error_register("Please enter your last name");
			lastname.focus();
			return false;
		}
		if (!validate_email(email)){
			error_register("Please enter a valid email");
			email.focus();
			return false;
		}
		if (!validate_string(company)){
			error_register("Please enter your company");
			company.focus();
			return false;
		}
		if (!validate_string(job)){
			error_register("Please enter your job title");
			job.focus();
			return false;
		}
		if (!validate_string(telephone)){
			error_register("Please enter your telephone number");
			telephone.focus();
			return false;
		}
	}
	return true;
}

function validate_callback(form){
	with(form){
		if(!validate_string(firstname)){
			error_callback("Please enter your first name");
			firstname.focus();
			return false;
		}
		if (!validate_string(lastname)){
			error_callback("Please enter your last name");
			lastname.focus();
			return false;
		}
		if (!validate_string(telephone)){
			error_callback("Please enter your telephone number");
			telephone.focus();
			return false;
		}
		if (!validate_string(enquiry)){
			error_callback("Please enter your enquiry");
			enquiry.focus();
			return false;
		}
	}
	return true;
}

function validate_contact(form){
	with(form){
		if(!validate_string(firstname)){
			error_contact("Please enter your first name");
			firstname.focus();
			return false;
		}
		if(!validate_string(lastname)){
			error_contact("Please enter your last name");
			lastname.focus();
			return false;
		}
		if(!validate_email(emailaddress)){
			error_contact("Please enter a valid email address");
			emailaddress.focus();
			return false;
		}
		if(!validate_string(address1)){
			error_contact("Please enter the first line of your address");
			address1.focus();
			return false;
		}
		if(!validate_string(city)){
			error_contact("Please enter your town/city");
			city.focus();
			return false;
		}
		if(!validate_string(postcode)){
			error_contact("Please enter your postcode");
			postcode.focus();
			return false;
		}
		if(!validate_string(telephone)){
			error_contact("Please enter your telephone number");
			telephone.focus();
			return false;
		}
		if(!validate_string(enquiry2)){
			error_contact("Please enter your enquiry");
			enquiry2.focus();
			return false;
		}
	}
	return true;
}

function ajax_register(form){
	ao = ajax_object();
	if (validate_register(form)){
		ao.onreadystatechange = function(){
			if(ao.readyState == 4){
				document.getElementById("register_form").innerHTML = ao.responseText;
			}
		}
		with (form){
			ao.open("GET", "/ajax/process_register.php?firstname="+firstname.value+"&lastname="+lastname.value+
				"&company="+company.value+"&job="+job.value+"&email="+email.value+
				"&telephone="+telephone.value, true);
			ao.send(null);
		}
	}
}

function ajax_callback(form){
	ao = ajax_object();
	if (validate_callback(form)){		
		ao.onreadystatechange = function(){
			if(ao.readyState == 4){
				document.getElementById("callback_form").innerHTML = ao.responseText;
				// track page on normal account
				var pageTracker = _gat._getTracker("UA-7576616-1");
				pageTracker._trackPageview("/callback");
				// track page on PPC account
				var pageTracker = _gat._getTracker("UA-7787422-1");
				pageTracker._trackPageview("/callback");
				ifrm = document.createElement("IFRAME");
				var aurl= "/ajax/track_callback.html";
				ifrm.setAttribute("src", aurl);
				ifrm.style.width = 0+"px";
				ifrm.style.height = 0+"px";
				document.body.appendChild(ifrm);
			}
		}
		with (form){
			ao.open("GET", "/ajax/process_callback.php?firstname="+firstname.value+"&lastname="+lastname.value+
				"&telephone="+telephone.value+"&enquiry="+enquiry.value+"&email="+email.value, true);
			ao.send(null);
		}
	}
}

function ajax_contact(form){
	ao = ajax_object();
	if (validate_contact(form)){
		ao.onreadystatechange = function(){
			if(ao.readyState == 4){
				document.getElementById("contact_form").innerHTML = ao.responseText;
				// track page on normal account
				var pageTracker = _gat._getTracker("UA-7576616-1");
				pageTracker._trackPageview("/contact");
				// track page on PPC account
				var pageTracker = _gat._getTracker("UA-7787422-1");
				pageTracker._trackPageview("/contact");
				ifrm = document.createElement("IFRAME");
				var aurl= "/ajax/track_callback.html";
				ifrm.setAttribute("src", aurl);
				ifrm.style.width = 0+"px";
				ifrm.style.height = 0+"px";
				document.body.appendChild(ifrm);
			}
		}
		with (form){
			ao.open("GET", "/ajax/process_contact.php?firstname="+firstname.value+"&lastname="+lastname.value+
				"&email="+emailaddress.value+"&address1="+address1.value+"&address2="+address2.value+"&address3="+address3.value+
				"&city="+city.value+"&postcode="+postcode.value+"&country="+country.value+
				"&telephone="+telephone.value+"&enquiry="+enquiry.value+"&enquiry2="+enquiry2.value+
				"&hearabout="+hearabout.value+"&branch="+branch.value+"&company="+company.value+
				"&turnover="+turnover.value+"&projected_turnover="+projected_turnover.value+
				"&bank="+bank.value+"&lender="+lender.value+"&fee="+fee.value+
				"&charge="+charge.value+"&expiration_date="+expiration_date.value+
				"&no_of_debtors="+no_of_debtors.value+"&days_to_pay="+days_to_pay.value, true);
			ao.send(null);
		}
	}
}


function trackLink(link){
	// uses google analytics to track page content
	var pageTracker = _gat._getTracker("UA-7576616-1");
	pageTracker._trackPageview("/documents/"+link);
}