// Contact form scripts.

// Functions for AJAX form submit
// based on functions from http://www.devarticles.com/c/a/XML/XML-in-the-Browser-Submitting-forms-using-AJAX/
var xmlReq = null;//for XMLHttpRequest
var serverTimeout;
// Submit the form
function submitForm(){
	if(!validateForm()) return false;
	document.getElementById('ajaxLoader').style.display = 'block';
	var str = getFormValues('frm_contact');
	xmlReq = getXMLHttpObj('../contact.php',str);	
	return false;
}

// Create XMLHttpObject submit form and get response
function getXMLHttpObj(file,str){
	var XMLHttpObj = null
	if (typeof window.ActiveXObject != 'undefined' ){
		try { XMLHttpObj = new ActiveXObject("Msxml2.XMLHTTP"); } 
		catch (e) {
			try { XMLHttpObj = new ActiveXObject("Microsoft.XMLHTTP"); } 
			catch (e) {}
		}
		if (XMLHttpObj) XMLHttpObj.onreadystatechange = displayResponse;
		else alert('Your browser does not support Ajax.');
	}
	else {
		if (!XMLHttpRequest) alert('Your browser does not support Ajax.');
		XMLHttpObj = new XMLHttpRequest();
		XMLHttpObj.onload = displayResponse;
	}
	XMLHttpObj.open( "POST", file, true );
	XMLHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	XMLHttpObj.send(str);
	serverTimeout = setTimeout('alert("Server not responding, please try again later.");document.getElementById("ajaxLoader").style.display="none";', 15000);
	return XMLHttpObj;
}

// Create a string from form values for getXMLHttpObj function
function getFormValues(fobj){
	var str = "";
	for(var i = 0;i < document.forms[fobj].elements.length;i++){
		str += document.forms[fobj].elements[i].name +
		"=" + encodeURIComponent(document.forms[fobj].elements[i].value) + "&";
	}
	str = str.substr(0,(str.length - 1));//clip last "&"
	//alert ('string to send: ' + str);
	return str;
}

// Display response from XMLHttpObject
function displayResponse(){	
	//While not ready, wait.
	if (!xmlReq) return;
	//alert(xmlReq.readyState);
	if (xmlReq.readyState == 4) {
         clearTimeout(serverTimeout);
		 document.getElementById('ajaxLoader').style.display='none';
		 if (xmlReq.status == 200) alert(xmlReq.responseText);          
         else alert('There was a problem sending your message.\nplease try agian later.');
	}	
}


// Validate form values
function validateForm(){
	var emailRegex = '^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$';
	var frm_items=new Array('full_name', 'email', 'subject', 'text');
	var err = null;	
	//Check if there is an empty field
	for(i=0; i<frm_items.length; i++){
		if (document.forms[0].elements[frm_items[i]].value == "" || document.forms[0].elements[frm_items[i]].value == null){
			err = frm_items[i];
			el_title = document.forms[0].elements[err].title;
			alert('Please fill in \"' + el_title + '\"');
			break;
		}
	}		
	//Check if mail is mulformed
	if (!err){
		var email = document.forms[0].email.value;
		if(!email.match(emailRegex)){	
			alert('Invalid mail address');
			err = 'email';
		}
	}
	//Focus bad field
	if (err) {
		document.forms[0].elements[err].focus();		
		return false;
	}
	else return true; 
}
// JavaScript Document