var sOKMessage = "Success! Your Email has been sent.";

//General
function GetSupportForm() {
	for (var i = 0; i < document.forms.length; i++) {
		if (document.forms[i].name.substring(0, 8) == 'support_')
			return document.forms[i];
	}
}

function GetSupportFormName() {
	for (var i = 0; i < document.forms.length; i++) {
		if (document.forms[i].name.substring(0, 8) == 'support_')
			return document.forms[i].name.substring(8);
	}	
}

function GetElementByTagNameAndId(Tag, Id) {
	var dOurForm = GetSupportForm();
	var Elements = dOurForm.getElementsByTagName(Tag);
	var ElementsLen = Elements.length;

	for (i = 0; i < ElementsLen; i++) {
		if (Elements[i].getAttribute('Id') == Id) {
			return Elements[i];
		}
	}
}

function Submit(SendTech) {
	if (SendTech == 'php') {
		return SubmitPHP();
	} else if (SendTech == 'ajax') {
		SubmitAJAX();
	}
}

//PHP
function JSValidateFields() {
	var dOurForm = GetSupportForm();
	if (dOurForm.cname.value == "") {
		alert('Please fill name field');
		dOurForm.cname.focus();
		return false;
	}	

	var email = dOurForm.email.value;
	emailTest = "^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z_-]+\\.)+[a-z]{2,4}$"; 
	var regex = new RegExp(emailTest); 
	if (!regex.test(email) || !(email.length > 0)) {
		alert('Please enter correct email address');
		dOurForm.email.focus();
		return false;		
	}
	/*
	if (dOurForm.subject.value == "") {
		alert('Please fill subject field');
		dOurForm.subject.focus();
		return false;
	}		

	if (dOurForm.message.value == "") {
		alert('Please fill message field');
		dOurForm.message.focus();
		return false;
	}		
	*/
	
	return true;
}

function SubmitPHP() {
	var dOurForm = GetSupportForm();
	if (JSValidateFields()) 
		dOurForm.submit();
}

//Ajax
var Ajax;

function GetAJAXObject() {
  var ajax=null;  
	try { ajax=new XMLHttpRequest(); }	catch (e) {}  
	if(!ajax) try { ajax=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}  
	if(!ajax) try { ajax=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}  
	return ajax;
}

function grabPosXML (tagName) {
  if (Ajax) 
	  if (Ajax.responseXML)
		  if (Ajax.responseXML.documentElement)
			  if (Ajax.responseXML.documentElement.getElementsByTagName(tagName)[0])
				  if (Ajax.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0])
						return Ajax.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
}

function SubmitAJAX() {
	Ajax = GetAJAXObject();
	if (!Ajax)
	  return false;

	var dOurForm = GetSupportForm();
	var URL = dOurForm.action;
	
	var success = document.getElementById(GetSupportFormName() + '_statusBar');
	var posName = dOurForm.cname;
	var posEmail = dOurForm.email;
	var posSubject = dOurForm.subject;
	var posMessage = dOurForm.message;
	var posCaptcha = dOurForm.captcha;
	
	showContactTimer(); 
	success.style.display = 'none'; 
	
	// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
	var str1 = posName.value;
	str1 = str1.replace(/&/g,"**am**");
	str1 = str1.replace(/=/g,"**eq**");
	str1 = str1.replace(/\+/g,"**pl**");
	var str2 = posEmail.value;
	str2 = str2.replace(/&/g,"**am**");
	str2 = str2.replace(/=/g,"**eq**");
	str2 = str2.replace(/\+/g,"**pl**");
	var str3 = posSubject.value;
	str3 = str3.replace(/&/g,"**am**");
	str3 = str3.replace(/=/g,"**eq**");
	str3 = str3.replace(/\+/g,"**pl**");
	var str4 = posMessage.value;
	str4 = str4.replace(/&/g,"**am**");
	str4 = str4.replace(/=/g,"**eq**");
	str4 = str4.replace(/\+/g,"**pl**");
	if (posCaptcha) {
		var str5 = posCaptcha.value;
		str5 = str5.replace(/&/g,"**am**");
		str5 = str5.replace(/=/g,"**eq**");
		str5 = str5.replace(/\+/g,"**pl**");
	}
		
	var SendData = "posName="+str1+"&posEmail="+str2+"&posSubject="+str3+"&posMessage="+str4+"&posCaptcha="+str5;

	Ajax.open("POST", URL);
	Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	Ajax.onreadystatechange = HandleAJAXResponse;	
  Ajax.send(SendData);
}

function HandleAJAXResponse() {
  // page loaded "complete"
	if (Ajax.readyState == 4) {
			// page is "OK"
			if (Ajax.status == 200) {	
				hideContactTimer(grabPosXML("status"), grabPosXML("errors"));
			}
	}
}

function showContactTimer () {
	var loader = document.getElementById(GetSupportFormName() + '_loadBar');
	var dOurForm = GetSupportForm();
	var MainTable = GetElementByTagNameAndId('table', GetSupportFormName() + '_main_table');
	var InfoTable = GetElementByTagNameAndId('table', GetSupportFormName() + '_info_table');
	var LoadBarTable = GetElementByTagNameAndId('table', GetSupportFormName() + '_loadBar_table');
	InfoTable.width = MainTable.clientWidth;
	LoadBarTable.width = MainTable.clientWidth;
	loader.style.display = 'block';
	//sentTimer = setTimeout("hideContactTimer()",1000);
}
function hideContactTimer (posStatus, posErrors) {
	function ClearFields() {
		var dOurForm = GetSupportForm();
		var inputs = dOurForm.getElementsByTagName('input');
		var inputsLen = inputs.length;
		var tAreas = dOurForm.getElementsByTagName('textarea');
		var tAreasLen = tAreas.length;
		
		for ( i=0;i<inputsLen;i++ ) {
			if ( inputs[i].getAttribute('type') == 'text' ) {
				inputs[i].value = '';
			}
		}
		for ( j=0;j<tAreasLen;j++ ) {
			tAreas[j].value = '';
		}		
	}

	var loader = document.getElementById(GetSupportFormName() + '_loadBar');
	var status = document.getElementById(GetSupportFormName() + '_statusBar');

	if (posStatus == 'OK') {
		loader.style.display = "none";
		status.style.display = "block";
		status.innerHTML = '<strong style="color:green;">' + sOKMessage + '</strong>';		
		ClearFields();
	} else if (posStatus == 'NOTOK') {
		loader.style.display = "none";
		status.style.display = "block";
		status.innerHTML = '<strong style="color:red;">There were problems Sending Email. Please check back in a couple minutes!</strong>';		
	} else if (posStatus == 'ERRORS') {
		loader.style.display = "none";
		status.style.display = "block";
		status.innerHTML = '<strong style="color:red;">Following errors were found:</strong>';			
		status.innerHTML += '<div align="center" style="color:black">' + posErrors + '</div>';
	} else if (posStatus == 'CAPTCHAERROR') {
		document.images.imgCaptcha.src = document.images.imgCaptcha.src;
		loader.style.display = "none";
		status.style.display = "block";
		status.innerHTML = '<strong style="color:red;">Following errors were found:</strong>';			
		status.innerHTML += '<div align="center" style="color:black">' + posErrors + '</div>';		
	}
}