$(document).ready(function () {
	prepJForm();
});

function prepJForm() {
	$(".formFields input").bind('focus',function () {
		$(this).parents('li').addClass('focused');
		$(this).siblings('p').addClass('focused');
	}).bind('blur',function () {
		$(this).siblings('p').removeClass('focused');
		$(this).parents('li').removeClass('focused');
	});
	$(".formFields textarea").bind('focus',function () {
		$(this).parents('li').addClass('focused');
	}).bind('blur',function () {
		$(this).parents('li').removeClass('focused');
	});
	$(".formFields select").bind('focus',function () {
		$(this).parents('li').addClass('focused');
	}).bind('blur',function () {
		$(this).parents('li').removeClass('focused');
	});
	$(".formFields li").each(function () {
		reqItems = $(this).filter('.required');
		if (reqItems.length) {
			$(this).find('label.desc').addClass('required');
		}
		$('.required:last',this).bind('blur',function () {
			checkRequired(this);
		});
		$('input:last',this).bind('blur',function() {
			$(this).parents('li').removeClass('focused');
			$(this).siblings('p').removeClass('focused');
		});
		$('select:last',this).bind('blur',function() {
			$(this).parents('li').removeClass('focused');
		});
		$('textarea:last',this).bind('blur',function() {
			$(this).parents('li').removeClass('focused');
		});
	});
	$(".formFields .email").unbind('blur').bind('blur', function () {
		var supported = 0;
		if (window.RegExp) {
			var tempStr = "a";
			var tempReg = new RegExp(tempStr);
			if (tempReg.test(tempStr)) supported = 1;
		}
		if($(this).val() == '') {
			addError(this,'This field is required.');
		} else {
			if (!supported) var isValid =  eval(str.indexOf(".") > 2) && (str.indexOf("@") > 0) ? 1 : 0;
			else {
				var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
				var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
				var isValid = eval(!r1.test(this.value) && r2.test(this.value)) ? 1 : 0;
			}
			if (!isValid) {
				addError(this,'There appears to be a problem with this email address.');
			} else {
				removeError(this);
			}	
		}
		$(this).parents('li').removeClass('focused');
	});
	$("form.validate").bind('submit',function () {
		var problem = 0;
		$(this).find('.formFields li').each(function () {
			$(this).find('.required').each(function () {
				if (this.nodeName != 'LABEL') {
					var re = /[A-Za-z0-9]/;
					if (!this.value.match(re) || (this.nodeName == 'SELECT' && this.selectedIndex == 0 && this.options[0].value == '')) {
						addError(this, 'This field is required.');
						problem = 1;
					}
				}
			});
		});
		if (problem) {
			$("form.validate").find('p.problem_alert').remove();
			$("form.validate .submit").before('<p class="alert">Please complete all the required fields.</p>');
			return false;
		}
	});
}

function checkRequired(elem) {
	if ($(elem).val() == '') {
		addError(elem,'This field is required.');
		//$(elem).focus();
	} else {
		removeError(elem);
	}
}

function addError(elem,msg) {
	var container = $(elem).parents('li').get(0);
	$(container).addClass('error');
	$(container).find('p.error').remove();
	$('label.desc',container).after('<p class="problem error">'+msg+'</p>');
	$('p.error',container).fadeIn('slow');
	$(elem).addClass('problem');
}
function removeError(elem) {
	var container = $(elem).parents('li');
	container.removeClass('error');
	container.find('p.error').fadeOut('slow');
	$(elem).removeClass('problem');
}