var Tools = { serialize: function(sFormId) { var asForm = {}; $.each($('#'+sFormId).serializeArray(), function(key, item){ asForm[item.name] = item.value; }); return asForm; }, ajax: function(sAction, fOnSuccess, oData, fOnFail, $Loader, sType, sDataType) { sType = sType || 'GET'; sDataType = sDataType || 'json'; oData = oData || {}; var asData = {}; if($.type(oData)=='string') { asData = this.serialize(oData); } else asData = oData; if($Loader) { $Loader .data('load_html', $Loader.html()) .data('load_class', $Loader.attr('class')) .removeClassPrefix('fa-') .addClass('loader') .html($('', {'class':'onlyimg', src: Config.paths.dir.theme_image+"ajax.svg"})); } asData['a'] = sAction; return $.ajax({ url: oCATC.consts.context.process_page, type: sType, data: asData, dataType: sDataType }) .done(function(oData) { if(oData.result==oCATC.consts.error) { if(!fOnFail) Tools.feedback('error', oData.desc); else fOnFail(oData.desc); } else fOnSuccess(oData.data, oData.desc); if($Loader) { $Loader .removeClass() .addClass($Loader.data('load_class')) .html($Loader.data('load_html')); } }) .fail(function(jqXHR, textStatus, errorThrown) { if(!fOnFail) Tools.feedback('error', textStatus+' '+errorThrown); else fOnFail(textStatus); } ); }, getIcon: function(sIcon, bFull){ bFull = bFull || false; return $('', {'class': bFull?sIcon:('fal fa-'+sIcon)}); }, feedback: function(sClass, sMsg, $Box) { $Box = $Box || $('#feedback'); sMsg = sMsg || ''; switch(sClass) { case 'notice': sClass = 'primary'; break; case 'error': sClass = 'danger'; break; } if(sClass=='danger' && sMsg=='') sMsg = 'Oops ! An unknown error occured'; $('
', {'class':'alert shadow alert-dismissible fade show alert-'+sClass, role:'alert'}) .append($('', {'class':'fal fa-inline fa-'+sClass})) .append(addPunctuation(sMsg)) .append($('