var msg_EmailRequired = "That doesn't seem like a valid email address!";
var msg_firm = "Please include your Firm's name";
var msg_contact = "Please include a contact name";
var msg_address = "We'll need your address to send you a sample. Please make sure you've included that.";
var msg_other = "Please tell us how heard about The Fortune Group";
var msg_emailFailed = "We couldn't send your message at this time. Please try again later.";
var msg_sending = "Sending your message, please wait...";
function validateFields(e) {
	Event.stop(e);
	var frmEl = $('cForm');
	var firm = $F('firm');
	var contact = $F('posName');
	var email = $F('posEmail');
	var phone = $F('posPhone');
	var text = $F('posText');
	var sample = $('sendsample').checked;
	var addr = $F('address');
	var city = $F('city');
	var state = $('state').value;
	var zip = $F('zip');
	var hear = $('hear').value;
	var other = $F('other');
	//var strCC = $('selfCC').checked;
	var newsletter = $('newsletter').checked;
	
	try {
		require(firm, msg_firm, 'firm');
		require(contact, msg_contact, 'posName');
		requireEmail(email, msg_EmailRequired, 'posEmail');
		if (sample) {
			require(addr,msg_address,'address');
			require(city,msg_address,'city');
			require(state,msg_address,'state');
			require(zip,msg_address,'zip');
			require(hear,msg_other,'hear');
			if (hear == 'other') 
				require(other,msg_other,'other');
		}

		
	} catch(e) {
		return;
	}
	sendPosEmail();


}
function require(test,errmsg,f) {
	if (empty(test)) {
		alert(errmsg);
		if ($(f)) $(f).focus();
		throw('Failed validation!');
	}
}
function requireEmail(eml,errmsg,f) {
	require(eml,errmsg,f);
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
	if (!(!reg1.test(eml) && reg2.test(eml))) {
		alert(errmsg);
		if ($(f)) $(f).focus();
		throw('Failed validation!');
	}// if syntax is valid		
}
function empty(val) {
	return val == '' ||  /^[\s]+$/.test(val);
}

var pos = null;
function sendPosEmail () {
	var page = "scripts/xmlHttpRequest.php?contact=true&xml=true";
	var frm = $('cForm');
	frm.action = page;
	var msg = $('msg');
	msg.className = "";
	msg.update(msg_sending);
	$('msg_cont').setStyle({'visibility':'visible'});
	$('load_img').setStyle({'visibility':'visible'});
	
	frm.request({
		onComplete:function(t) {
			pos = t;				
			$('load_img').setStyle({'visibility':'hidden'});
			var success,conf,msg =$('msg');
			if (!t.responseXML) {
				success = false;
				conf = msg_emailFailed;
			} else {
				success = (grabPosXML('status') == "OK");
				conf = grabPosXML("confirmation");
			}
			alert(conf);
			msg.className = (success)?"success":"error";
			msg.update(conf);
			if (success) {
				frm.reset();
				setupForm();
			}
		}});
		
}



function grabPosXML (tagName) {
	if (!pos.responseXML) return false;
	var ns = pos.responseXML.documentElement.getElementsByTagName(tagName);
	if (ns && ns[0] && ns[0].childNodes && ns[0].childNodes[0]) 	
		return ns[0].childNodes[0].nodeValue;
	else return false;
}

function ajaxContact() {
	$('msg_cont').setStyle({'visibility':'hidden' });
	setupForm();
	var frmEl = $('cForm');
	Event.observe(frmEl,'submit', validateFields);
	frmEl.onsubmit = function() { return false; }
}

function setupForm(){
	if (!$('sendsample').checked) $('sample').hide();
	if ($('hear').value != 'other') $('divother').hide();
	
	$('sendsample').observe('click', function() {
		if (this.checked)
			$('sample').show();
		else $('sample').hide();
	});
	
	$('hear').observe('change', function() {
		if (this.value=='other') 
			$('divother').show();	
		else $('divother').hide();
	});
}
Event.observe(window, 'load',ajaxContact);