var MANDATORY = 1;
var EMAIL = 2;
var fields = new Array("name", "email", "state", "message");
var labels = new Array("Name", "E-mail", "State", "Message");
var valids = new Array(MANDATORY, EMAIL);

function validateMandatory(form, fieldName) {
	if ("" == form.elements[fieldName].value) {
		setClassName(fieldName, "invalid");
		return false;
	}
	setClassName(fieldName, "valid");
	return true;
}

function validateEmail(form, fieldName) {	
	if (validateMandatory(form, fieldName)) {
		var value = form.elements[fieldName].value;
		var index1 = value.indexOf("@");
		var index2 = value.indexOf(".");
		if (index1 > 0 && index2 > 0 && index2 < value.length - 1) {
			setClassName(fieldName, "valid");
			return true;
		}
	}

	setClassName(fieldName, "invalid");
	return false;	
}

function setClassName(fieldName, className) {
	document.getElementById("td_" + fieldName).setAttribute("class", className);
	document.getElementById("td_" + fieldName).setAttribute("className", className);
}

function validateField(form, fieldName, validationType) {
	switch (validationType) {
		case MANDATORY:
			return validateMandatory(form, fieldName);
		case EMAIL:
			return validateEmail(form, fieldName);
		default:
			return true;
	}
}

function validate() {
	var valid = true;
	var form = validate.arguments[0];
	for (var i = 0; i < valids.length; i++) {
		var validField = validateField(form, fields[i], valids[i]);
		valid = valid && validField; 
	}
	
	return valid;
}

function contactUs(formId) {
    
	if (validate(document.getElementById(formId))) {
		//message("", msg);
		//reset(formId);
		var ajaxRequest = getAjaxRequest();
		if (ajaxRequest) {
			ajaxRequest.open("POST", "contact.php", true);
			var form = document.getElementById(formId);
			var params = "fields=" + encodeURIComponent(fields.join("|"));
			params += "&labels=" + encodeURIComponent(labels.join("|"));
			for (var i = 0; i < fields.length; i++) {
				params += "&" + fields[i] + "=" + encodeURIComponent(form.elements[fields[i]].value);
			}
			//Send the proper header information along with the request
			ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			ajaxRequest.setRequestHeader("Content-length", params.length);
			ajaxRequest.setRequestHeader("Connection", "close");

			ajaxRequest.onreadystatechange = function() {//Call a function when the state changes.
				if(ajaxRequest.readyState == 4) {
					if (ajaxRequest.status == 200) {
						message("", ajaxRequest.responseText);
						reset(formId);
					} else {
						message("", "Sorry <b>" + 
								form.elements[fields[0]].value + 
								"</b>!<br />Please try to contact us again later!");					
					}
				}
			}
			ajaxRequest.send(params);
			
		}
	} else {
		message("", "Invalid entries!");
	}
}

function reset(formId) {
	document.getElementById(formId).reset();
}

function getAjaxRequest() { 
	var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
			}
		}
	}
	
	return ajaxRequest;
}

function message(title, message) {
	var msg = "<h3><center>Kirschner &amp; Venker, P.C.</center></h3><p>" + message + "<p/>";
	document.getElementById("msg_title").innerHTML = title;
	document.getElementById("msg_message").innerHTML = msg;
	document.getElementById("msg_window").style.display = "block";
	window.setTimeout("hideMessage();", 5000);
}

function hideMessage() {
	document.getElementById("msg_window").style.display = "none";
}

