var defaultvalues = new Array();
defaultvalues['name'] = 'your full name';
defaultvalues['email'] = 'email address';
defaultvalues['phone'] = 'phone number (w/ area code)';
defaultvalues['subject'] = 'subject';
defaultvalues['comments'] = "how can we help?";

function checkForm(e) {
	// Stop the actual form submission
	Event.stop(e);

	if (validateFields()) {
		Effect.Fade('inquiry_form', {
			afterFinish:function(obj){
				// Submit form with Ajax
				new Ajax.Request(
					window.location.href,
					{
						method: 'post',
						parameters: 'ajax=1&'+obj.element.serialize(),
						onSuccess: function(res,json) {
							obj.element.innerHTML='<div class="inquiry_form"><h2>Thanks for dropping us a note<'+'/h2>  <p>We\'ll talk to you soon.<'+'/p><'+'/div>';
							window.setTimeout(function(){Effect.Appear(obj.element);}, 500);
						},
						onFailure: function() {
							alert('Uh, yeah, that failed for some reason.  Please try calling us at 605.996.3700.');
						}
					}
				);
			}
		});
	}
}

function validateFields(fieldName) {
	var ok=true;

	if (!fieldName||fieldName=='name')
		if (!$F('name')||$F('name')==defaultvalues['name']) {Effect.Shake('name'); ok=false;}
	if (!fieldName||fieldName=='email')
		if (!$F('email')||$F('email')==defaultvalues['email']||
			!$F('email').match('^([^@]+)@([^@]+)(\.[a-z]+)$')) {Effect.Shake('email'); ok=false;}
	if (!fieldName||fieldName=='phone')
		if (!$F('phone')||$F('phone')==defaultvalues['phone']) {Effect.Shake('phone'); ok=false;}
	if (!fieldName||fieldName=='subject')
		if (!$F('subject')||$F('subject')==defaultvalues['subject']) {Effect.Shake('subject'); ok=false;}
	if (!fieldName||fieldName=='comments')
		if (!$F('comments')||$F('comments')==defaultvalues['comments']) {Effect.Shake('comments'); ok=false;}

	return ok;
}

Event.observe(window, 'load', function() {
	Event.observe('inquiry_form', 'submit', checkForm);
	var fields = $$('.hasdefault');
	for (var i=0; i<fields.length; i++) {

		Event.observe($(fields[i]), 'focus', function(evt){
			var el = Event.element(evt);
			if (el.value==defaultvalues[el.id]) {
				el.morph('color:'+el.getStyle('backgroundColor')+';', {
					duration: .15,
					afterFinish: function(obj){
						obj.element.value='';
						obj.element.setStyle({color: fieldColor});
					}
				});
			}
		});
		Event.observe($(fields[i]), 'blur', function(evt){
			var el = Event.element(evt);
			if (el.value=='') {
				el.setStyle({color: el.getStyle('backgroundColor')});
				el.value=defaultvalues[el.id];
			}
			validateFields(el.id);
			el.morph('color:'+fieldColor+';', {
				duration:.5
			});
		});

		if (fields[i].value=='') fields[i].value=defaultvalues[fields[i].id];
		fieldColor = fields[i].getStyle('color');
	}
});
