	function validation_init() {
		var btnSubmit = $('img.submit');
		var thisForm = btnSubmit.closest('form');
		
		btnSubmit.click(function() {
			if (validateForm()) {
				formSubmit(thisForm);
			}
		});
	}
	
	function isEmpty(obj) {
		var emptyFlag = $(obj).val() == '' ? true : false;	
		
		return emptyFlag;
	}
	
	function isChecked(obj) {
		var emptyFlag = $(obj).val() == '' ? true : false;	
		
		return emptyFlag;
	}

	function isEmail(obj) {
		var regEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		
		return regEmail.test($(obj).val());
	}
	
	function isNumeric(obj) {
		var regNumber = /^[\-+]?[0-9]*\.?[0-9]+$/;
		
		return regNumber.test($(obj).val());
	}
	
	function validateType(inputObj, type) {
		var pass;
		
		switch(type) {
			case 'isEmail':
				if (isEmail(inputObj)) {
					pass &= setErrorMsg(inputObj, 'empty');
				} else {
					pass &= setErrorMsg(inputObj, 'invalidEmail');
				}
			break;
			case 'isNumber':
				if (isNumeric(inputObj)) {
					pass &= setErrorMsg(inputObj, 'empty');
				} else {
					pass &= setErrorMsg(inputObj, 'mustNumber');
				}
			break;
			default:
			break;
		}
		
		return pass;
	}
	
	function setErrorMsg(field, erroMsg) {
	
		var pass = false;
		
		switch (erroMsg) {
			case 'isRequired':
				erroMsg = 'This field is required.';
			break;
			case 'invalidEmail':
				erroMsg = 'E-Mail wrong format.';
			break;
			case 'mustNumber':
				erroMsg = 'This field must be numeric numbers.';
			break;
			case 'empty':
				erroMsg = '';
				pass = true;
			break;
			default:
			break;
		}

		if ($(':input[name=' + field.name + ']:last').next().hasClass('error_msg')) {
			$(':input[name=' + field.name + ']:last').next().text(erroMsg);
		} else {
			$(':input[name=' + field.name + ']:last').after('<p class="error_msg>' + erroMsg + '</p>')
		}
		
		return pass;
	}
	
	function validateForm() {
	
		var nonEmptyField = new Array;
		var pass = true;
		
		$.each($('.required'), function(i, inputObj) {
		
			switch($(inputObj).attr('type')) {
				case 'text':
				case 'textarea':
					if (isEmpty(inputObj)) {
						pass &= setErrorMsg(inputObj, 'isRequired');
					} else {
						nonEmptyField.push(inputObj.name);
						pass &= setErrorMsg(inputObj, 'empty');
					} 
				break;
				case 'radio':
					// alert($(inputObj + ':input[name=' + inputObj.name + ']:checked').val() );
					if ($(inputObj + ':input[name=' + inputObj.name + ']:checked').val() == undefined) {
						pass &= setErrorMsg(inputObj, 'isRequired');
					} else {
						nonEmptyField.push(inputObj.name);
						pass &= setErrorMsg(inputObj, 'empty');
						
					}
				break;
				case 'checkbox':
				case 'select':
				break;
				default:
				break;
			}
			
		});
		
		$.each($('.email'), function(i, inputObj) {
		
			if ($(inputObj).hasClass('required')) {
			
				for (var x in nonEmptyField) {
					if (nonEmptyField[x] == inputObj.name) {
						pass &= validateType(inputObj, 'isEmail');
					}
				}
				
			} else {
			
				if (inputObj.value != '') {
					pass &= validateType(inputObj, 'isEmail');
				}
			}
			
		});
		
		$.each($('.number'), function(i, inputObj) {
		
			if ($(inputObj).hasClass('required')) {
			
				for (var x in nonEmptyField) {
					if (nonEmptyField[x] == inputObj.name) {
						pass &= validateType(inputObj, 'isNumber');
					}
				}
				
			} else {
			
				if (inputObj.value != '') {
					pass &= validateType(inputObj, 'isNumber');
				}
			}
			
		});
		
		return pass;
	}
	
	function formSubmit(form) {
		$.post(
			$(form).attr('action'),
			$(form).serializeArray(),
			function(data) {
				if (data=='success') {
					alert('Thank you for your enquiry.');
					$(form)[0].reset();
				}
			}
		);
	}

