$(document).ready(function() {
	formHelper.initDefaultValues();
});

var formHelper = {
	validateAndSubmitForm: function(fid) {
		formHelper.validateFormResult = false;
		formHelper.validateForm(fid, function() {

			if (formHelper.validateFormResult) {

				formHelper.submitForm(fid);
			}
		});
	},
	submitForm: function(fid) {

		var url = 'forms/submit';
		var postvars = formHelper.collectValuesToString($('#' + fid));
		$.post(url, postvars, function(data) {
			
			var parsedData = jQuery.parseJSON(data);
			
			if (parsedData['redirect_after_submit'] != '') {
				top.location.href = parsedData['redirect_after_submit'];
			}
		});
	},
	validateFormResult: false,
	tmpStack: {},
	validateForm: function(fid, callfunc) {
		
		formHelper.tmpStack.validateFormCallfunc = callfunc; 
		
		var url = 'forms/validate';
		var postvars = formHelper.collectValuesToString($('#' + fid));
		$('#' + fid + ' .block-message').slideUp();
		$('#' + fid + ' .form-field-line').css('background-color', '#ffffff');
		$('#' + fid + ' .form-field-line').css('border', 'none');
		$('#' + fid + ' .field-message').slideUp();
		
		$('#' + fid + ' .agree-message').slideUp();
		$('#' + fid + ' .agree-box').css('background-color', '#ffffff');
		$('#' + fid + ' .agree-box').css('border', 'none');
		
		$.post(url, postvars, function(data) {
			
			var parsedData = jQuery.parseJSON(data);
			
			if (parsedData['valid'] != 'yes') {
				
				var fields_errors = [];
				
				for (var x in parsedData['errors']) {
					var e = parsedData['errors'][x];
					
					if (e['type'] == 'agree') {
						$('#' + fid + ' .agree-message').html(e['message']);
						$('#' + fid + ' .agree-message').slideDown();
						$('#' + fid + ' .agree-box').css('border', '1px solid #ff0000');
						
					}
					
					if (e['forms_fields_id'] != "undefined") {
						if (e['forms_fields_id'] > 0) {
							if (typeof(fields_errors[e['forms_fields_id']]) == "undefined") {
								fields_errors[e['forms_fields_id']] = [];
							}
							fields_errors[e['forms_fields_id']][e['type']] = e['type'];
						}
					}
					
					
				}
				
				for (var x in fields_errors) {
					var msg = '';
					//- alert(fields_errors[x]['email']);
					if (fields_errors[x]['required'] == 'required') msg = 'A mező kitöltése kötelező!';
					if (fields_errors[x]['email'] == 'email') msg = 'Kérem, valós e-mail címet adjon meg!';
					
					$('#' + fid + ' .form-field-line[ff_id="' + x + '"] .field-message').html(msg);
					$('#' + fid + ' .form-field-line[ff_id="' + x + '"] .field-message').slideDown();
					$('#' + fid + ' .form-field-line[ff_id="' + x + '"]').css('border', '1px solid #ff0000');
				}
				
				formHelper.validateFormResult = false;
			}
			else {
				formHelper.validateFormResult = true;
			}
			formHelper.tmpStack.validateFormCallfunc();
			
		});
	},
	collectedValues: {},
	collectValuesToString: function(fobj) {
		var values = this.collectValues(fobj);
		
		var str = '';
		for (var x in values) {
			str = str + x + '=' + values[x] + '&';
		}
		return str;
	},
	resetValues: function(fobj) {
		$(fobj).find('input').each(function() {
			$(this).attr('value', '');
		});
		$(fobj).find('textarea').each(function() {
			$(this).val('');
		});
		this.initDefaultValues();
	},
	encodeValue: function(str) {
		str = str.replace("&","%26");
		str = str.replace("?","%3F");
		str = str.replace("=","%3D");
		return str;
	},
	collectValues: function(fobj) {
		formHelper.collectedValues = {};
		
		$(fobj).find('input').each(function() {
			var value = $(this).attr('value');
			if ($(this).attr('default_value') != '' && $(this).attr('default_value') != undefined) {
				if ($(this).attr('value') == $(this).attr('default_value')) {
					value = '';
				}
			}
			
			if ($(this).attr('type') == 'checkbox') {
				value = '';
				if ($(this).attr('checked')) {
					value = $(this).attr('value');
				}
			}
			
			formHelper.collectedValues[$(this).attr('name')] = formHelper.encodeValue(value);
		});

		$(fobj).find('textarea').each(function() {
			var value = $(this).val();
			if ($(this).attr('default_value') != '' && $(this).attr('default_value') != undefined) {
				if ($(this).val() == $(this).attr('default_value')) {
					value = '';
				}
			}
			
			formHelper.collectedValues[$(this).attr('name')] = formHelper.encodeValue(value);
		});
		
		$(fobj).find('select').each(function() {
			var value = $(this).val();
			formHelper.collectedValues[$(this).attr('name')] = formHelper.encodeValue(value);
		});

		return formHelper.collectedValues;

	},
	initDefaultValues: function() {
		$('input').each(function() {
			if ($(this).attr('default_value') != '' && $(this).attr('default_value') != undefined) {
				$(this).focus(function() {
					if ($(this).attr('value') == $(this).attr('default_value')) {
						$(this).attr('value', '');
					}
				});
				$(this).blur(function() {
					if ($(this).attr('value') == '') {
						$(this).attr('value', $(this).attr('default_value'));
					}
				});
				
				if ($(this).attr('value') == '') {
					$(this).attr('value', $(this).attr('default_value'));
				}
			}
		});

		$('textarea').each(function() {
			if ($(this).attr('default_value') != '' && $(this).attr('default_value') != undefined) {
				$(this).focus(function() {
					if ($(this).val() == $(this).attr('default_value')) {
						$(this).val('');
					}
				});
				$(this).blur(function() {
					if ($(this).val() == '') {
						$(this).val($(this).attr('default_value'));
					}
				});

				if ($(this).val() == '') {
					$(this).val($(this).attr('default_value'));
				}
			}
		});

	}
}
