$(document).ready(function(){
	//check if there is validation rules
	if ($('#validation').attr("value")!=null) {
		
		//get validation rules
		validationRuleSet = $.parseJSON($('#validation').attr("value"));

		//add submit check to form
		$('#validation').parent().submit(function(){

			//initialize validation
			validationError = new Object();
			isError = false;
			//clear errors
			$('.error').removeClass('error');
			$('.errormessage').remove();

			for(num in validationRuleSet) {
				validationRule = validationRuleSet[num];

				if (validationRule['required']==1) {
					if ($('#'+validationRule['fieldIdentity']).attr("value")==null) {
						validationError[validationRule['fieldIdentity']] = 'The ' + validationRule['fieldName'] + ' field is required.';
					} else {
						if ($.trim($('#'+validationRule['fieldIdentity']).attr("value"))=='') {
							validationError[validationRule['fieldIdentity']] = 'The ' + validationRule['fieldName'] + ' field is required.';
						}
					}
				}

				//no necessety to check further if there is already an error
				if (validationError[validationRule['fieldIdentity']]==null) {
					if ($('#'+validationRule['fieldIdentity']).attr("value")!=null) {
						if (validationRule['fieldType']=='email') {
							if ($.trim($('#'+validationRule['fieldIdentity']).attr("value"))!='') {
								if(!emailCheck($('#'+validationRule['fieldIdentity']).attr("value"))) {
									validationError[validationRule['fieldIdentity']] = 'The ' + validationRule['fieldName'] + ' field must contain a valid email address.';
								}
							}
						}
					}
				}
			}
			
			//show errors
			for(errId in validationError) {
				$('#'+errId+'_label').addClass('error');
				$('#'+errId+'_label').append('<span class="errormessage red">'+validationError[errId]+'</span>');
				isError = true;
			}

			if (isError) {
				//prevent submit
				return false;
			}
		});
	}
});

function emailCheck(email) {
	var regexEmail = new RegExp("^([0-9a-zA-Z]([-_.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$","g");
	return regexEmail.test(email);
}
