//hide the error message
$(function(){$('#error-msg').hide();});

var errors = {};
//submit feebback
function validate(form)
{
	$('.required').removeClass('required');
	//validate the following fields
	var validate_ne = {
		'input':{
			'name':1,'address':1, 'email':1, 'subject':1, 'feedback':1, 'title': 1, 'country':1
		}
	};
	//loop through inputs
	for(var key in validate_ne['input']){
		var inputName = key;
		var element = $(':input[name="' + inputName + '"]');
		
		errors[inputName] = (element.val()) ? ((element.val().length < 1) ? true : false): true;
	}
	//validate email.
	if(!errors['email']){
		var emailVal = $(':input[name="email"]').val();
		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (!filter.test(emailVal)) {
			errors['email'] = true;
		}
	}
	//apply class for error fields
	for(var inputName in validate_ne['input']){
		var parentLvl = validate_ne['input'][key];
		var element = $(':input[name="' + inputName + '"]');
		if(errors[inputName]){
			var elToError = element;
			for(var i = parentLvl; i > 0; i--){
				elToError = elToError.parent();
			}
			elToError.addClass('required');
		}
	}
	
	var ret = true;
	for(var key in errors){
		if(errors[key]){
			ret = false;
		}
	}
	
	return ret;
}
function showErrors(){
	var eMsg = '';
	for(var i in errors){
		if(errors[i]){
			switch(i){
				case 'title':
					eMsg += '<li>Please select your title.</li>';
					break;
				case 'name':
					eMsg += '<li>Please enter your name.</li>';
					break;
				case 'address':
					eMsg += '<li>Please enter your address.</li>';
					break;
				case 'country':
					eMsg += '<li>Please select your country.</li>';
					break;
				case 'email' :
					eMsg += '<li>Please enter a valid email.</li>';
					break;
				case 'subject':
					eMsg += '<li>Please enter subject of your feedback.</li>';
					break;
				case 'feedback':
					eMsg += '<li>Please enter your feedback</li>';
					break;
				default:
					break;
			}
		}
	}
	if(eMsg.length > 0){
		eMsg = '<ul>' + eMsg + '</ul>';
		$('#error-msg').html(eMsg).show();
		$('#afterSuccess').hide();
	}
}
function submitfeedback(form){
	var validatedResult = validate(form);
	if(validatedResult){
		$.post('feedback_form.php', $('form').serialize(), 
			function(data){
				if(data.status){
					alert('You feedback has been submitted');
					resetForm('myfeedback');
					//$('myfeedback').clearForm()
					$('#afterSuccess').show();
					$('#error-msg').hide();
				}else{
					alert('There\'s an error in submitting your feedback, please try again. If the problem persist please contact us for assistance');
					window.location.reload();
				}
			}, 'json'
		);
	}else{
		//show errors
		showErrors();
	}
}
function resetForm(id) {
	$('#'+id).each(function(){
	        this.reset();
	});
}
