
/*

v.0003
07.01.2016 17:23:14

*/

var autoform = {
	iden:'.autoform',
	init:function(){
		$(document).on('submit','form'+autoform.iden,function(){
			if ($(this).is('.waiting')) return false;
			url = $(this).attr('action');
			if (!url) url = window.location.href;
			$(this).find('.error-text').empty();
			$(this).find('.error').removeClass('error');
			$(this).addClass('waiting');

			var options = {
				'url' : url,
				'data' : {'action' : $(this).prop('id')},
				'beforeSubmit' : function(fields, objForm, options){
					var nf = ($(objForm).prop('id').replace(/-/g,'_'))+'_beforeSubmit';
					if (eval("typeof " + nf + " == 'function'")) {
						var tts = eval(nf+'(objForm,options)');
						if (!tts) {
							$('#'+$(objForm).prop('id')).removeClass('waiting');
							return false;
						}
						return true;
					}
				},
				'beforeSerialize' : function(objForm, options){
					var nf = ($(objForm).prop('id').replace(/-/g,'_'))+'_beforeSerialize';
					if (eval("typeof " + nf + " == 'function'")){
						var tts = eval(nf+'(objForm)');
						if (!tts){
							$('#'+$(objForm).prop('id')).removeClass('waiting');
							return false;
						}
						return true;
					}
				},
				'success' : function(data,status,info,objForm){
					$(objForm).removeClass('waiting');
					var fid = $(objForm).prop('id');
					if (!fid) return;
					if (typeof(formData) != 'object') formData = {};
					formData[fid] = data;
					var nf = fid.replace(/-/g,'_')+'_success';
					if (eval("typeof " + nf + " == 'function'")) {
						eval(nf+'(data,objForm)');
					}
				}, 
				'dataType' : 'json',
				'error' : function(){
					alert('request error. Refresh the page and try again!');
				}
			}	

			$(this).ajaxSubmit(options);
			return false;
		});
		$(document).on('click','form input.submit,form a.submit',function(){
			var obj = $(this);
			setTimeout(function(){
				$(obj).closest('form').submit();
			},30);
			return false;
		});
	}
};

$(document).ready(function(){
	autoform.init();
});