// ---------------------------------------------------------------------------- //
// -- Form Control ------------------------------------------------------------ //
// ---------------------------------------------------------------------------- //
var blinkTimer = null;

$(document).ready(function() {
	var NAME_DEFAULT_VALUE = "your name";
	var EMAIL_DEFAULT_VALUE = "your email address";
	var MESSAGE_DEFAULT_VALUE = "message...";
						   
	insertFocusBlurEvents($('input[name="name"]', this), NAME_DEFAULT_VALUE);
	insertFocusBlurEvents($('input[name="email"]', this), EMAIL_DEFAULT_VALUE);
	insertFocusBlurEvents($('textarea[name="message"]', this), MESSAGE_DEFAULT_VALUE);
						   
	$('#formMail').submit(function(e) {
		clearTimeout(blinkTimer);
		var f = $(this);
	
		if (!checkField($('input[name="name"]', this), NAME_DEFAULT_VALUE) || !checkField($('input[name="email"]', this), EMAIL_DEFAULT_VALUE) || !isEmailValid($('input[name="email"]', this)) || !checkField($('textarea[name="message"]', this), MESSAGE_DEFAULT_VALUE)) {
			e.preventDefault();
			blinkText();
		}
});
});

function blinkText() {
	$('#formMail .error').each(function(index, el) {
		var elem = $(this);
		elem.val(elem.val() == '' ? elem.attr('alt') : '')
	});
	
	blinkTimer = setTimeout('blinkText()', 500);
}

function resetFieldStyle() {
		clearTimeout(blinkTimer);
		$('#formMail input.error').removeClass('error');
		$('#formMail textarea.error').removeClass('error');
}

function insertFocusBlurEvents(el, defaultValue) {
	el.val(defaultValue);
	
	el.focus(function() {
		resetFieldStyle();  
		if (this.value == defaultValue) {
			this.value = '';
		}
	});
	
	el.blur(function() {
		if (this.value == '') {
			this.value = defaultValue;
		}
	});
}

function checkField(el, defaultValue) {
	if (el.val() == "" || el.val() == defaultValue) {
		el.val(defaultValue);
		el.addClass('error');
		el.attr({'alt': defaultValue});
		return false;
	}
	return true;
}

function isEmailValid(el) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test($(el).val())) {
		el.addClass('error');
		el.attr({'alt': $(el).val()});
		return false;
	}
	return true;
}
