// AJAX scripts for submiting form data

// short-hand version of getElementById function
function e(id)
{
	return document.getElementById(id);
}

// multi-browser XMLHttpRequest function
function getXmlHttpObject()
{
	if (window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari
	{
		xmlhttp=new XMLHttpRequest();
	}
	else // code for IE6, IE5
	{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlhttp;
}

// return XMLHttpRequest value to element of id
function displayResults(id)
{ 
	if (xmlhttp.readyState==4)
	{ 
	e(id).innerHTML=xmlhttp.responseText;
	}
}

// email address validation
function emailCheck(str)
{
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   return false
	}
	
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}
	
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return false
	}
	
	 if (str.indexOf(at,(lat+1))!=-1){
		return false
	 }
	
	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false
	 }
	
	 if (str.indexOf(dot,(lat+2))==-1){
		return false
	 }
	
	 if (str.indexOf(" ")!=-1){
		return false
	 }
	 return true					
}

// validate and submit form given form id, name of php file (emailform.php) that will process the form, and the div id where the response will be sent
function submitForm(form,php,response)
{	
	var form = e(form);
	
	for (var n=0; n < form.elements.length; n++)
	{
		if((form.elements[n].type == "text" || form.elements[n].type == "textarea" || form.elements[n].type == "select-one") && (form.elements[n].className.match("validate"))){
			
			var field = form.elements[n];
	
			// check if field has data
			if ((field.value == null) || (field.value == ""))
			{
				new Effect.Highlight(field, {startcolor:'#ffcc00', endcolor:'#ffffff'})
				field.focus()
				e('loadbar').style.display = 'none'; // hide loadbar graphic
				return false
			}
			
			// check for valid email address
			if(form.elements[n].className.match("validate_email")){
			
				if (emailCheck(field.value) == false){
					new Effect.Highlight(field, {startcolor:'#ffcc00', endcolor:'#ffffff'})
					var error = document.createElement('p');
					error.setAttribute('class','error_msg');
					error.innerHTML = 'Error: must be a valid email address';
					field.parentNode.appendChild(error);
					field.focus()
					e('loadbar').style.display = 'none'; // hide loadbar graphic
					return false
				}
			}
		}
	}
	
	var params = '';
	
	// for each form element that is either a text, radio or textarea field add element name and value to params variable
	for (var n=0; n < form.elements.length; n++) {
		if(form.elements[n].type == "text" || form.elements[n].type == "textarea" || form.elements[n].type == "select-one" || form.elements[n].type == "hidden"){
			params = params + form.elements[n].name + "=" + escape(form.elements[n].value) + "&";
		}else if((form.elements[n].type == "radio" || form.elements[n].type == "checkbox") && form.elements[n].checked){
			params = params + form.elements[n].name + "=" + escape(form.elements[n].value) + "&";
		}
	}
	
	xmlhttp=getXmlHttpObject();
	
	var url=php+'?'+params;
	
	xmlhttp.open('POST',php,true);
	
	xmlhttp.onreadystatechange=function()
	{ 
		if (xmlhttp.readyState==4)
		{ 
		e(response).innerHTML=xmlhttp.responseText;
		}
	}
	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	xmlhttp.send(params);
}
