var isSendingAjax = false; jQuery(document).ready(function($){ $('body').off('click', '.ajax'); $('body').on('click', '.ajax', function(e){ e.preventDefault(); sendAjax($(this)); }); $('body').off('submit', '.ajax-form'); $('body').on('submit', '.ajax-form', function(e){ e.preventDefault(); sendAjax($(this)); }); $('body').off('click', '.submit-form'); $('body').on('click', '.submit-form', function(e){ e.preventDefault(); $(this).parents('form').submit(); }); $('body').off('click', '.redirect'); $('body').on('click', '.redirect', function(e){ e.preventDefault(); var url = '', blank = $(this).attr('data-blank'); if(typeof $(this).data('url') != 'undefined') { url = $(this).data('url'); } else if(typeof $(this).attr('href') != 'undefined') { url = $(this).attr('href'); } if(e.metaKey || e.ctrlKey ) { blank = 1; } if(url.length > 0) { if(blank == 1) { window.open(url); } else { window.location.href = url; } } }); }); function sendAjax(element) { if(!isSendingAjax) { isSendingAjax = true; } else { return false; } if(typeof $(element).attr('data-loader') == 'undefined') { showAjaxLoader(); } var url = element.attr('href'), method = 'POST', form = false, data = { ajax: 1 }; if(element.is(":submit")) { form = element.parents('form'); } else if(element.is("form")) { form = element; } if(form) { url = form.attr('action'); data = form.serialize()+'&ajax=1'; if(typeof form.attr('method') != 'undefined') { method = form.attr('method'); } } if(url.length > 0 && url != '#') { $.ajax({ url: url, data: data, type: method, complete: function(data) { if(typeof element.data('render-url') != 'undefined') { $.ajax({ url: element.data('render-url'), complete: function(data) { renderSnippet(data, element); } }); } else { renderSnippet(data, element); } }, error: reloadPage }); } else { reloadPage(); } } function renderSnippet(data, element) { var snippet_content_position = $("#snippet-content").scrollTop(), snippet_sidebar_position = $("#snippet-sidebar").scrollTop(), snippets = false, html = false; try{ var response = $.parseJSON(data.responseText); html = response.data.html; snippets = response.data.invalidSnippet; if(typeof snippets == 'undefined' && typeof $(element).data('invalid-snippet') != 'undefined') { snippets = $(element).data('invalid-snippet').split('|'); } if(typeof snippets == 'undefined' || !snippets) { snippets = "content"; } } catch(e) { html = data.responseText; if(typeof $(element).data('invalid-snippet') != 'undefined') { snippets = $(element).data('invalid-snippet').split('|'); } } if(typeof snippets == 'string') { var snippet = "#snippet-"+snippets; $(snippet).replaceWith($(snippet, html)); } else if(typeof snippets == 'array' || typeof snippets == 'object') { $.each(snippets, function(index, snippet_name){ var snippet = "#snippet-"+snippet_name; $(snippet).replaceWith($(snippet, html)); }); } $("body").trigger("initAfterLoad"); $("body").trigger("afterSnippet"); if(typeof $(element).data('close-modal') != "undefined") { $($(element).data('close-modal')).modal('hide'); } else { $('body').removeClass('modal-open'); } $('.email-content a').attr('target', '_blank'); $("#snippet-content").scrollTop(snippet_content_position); $("#snippet-sidebar").scrollTop(snippet_sidebar_position); isSendingAjax = false; hideAjaxLoader(); } function reloadSocialShare() { FB.XFBML.parse(); twttr.ready(function() { twttr.widgets.load(); }); IN.parse(document.body); } // SNIPPET function reloadPage(snippet, url) { showAjaxLoader(); if(url == null) { url = document.URL; } if(snippet == null) { location.href = url; } else { $.ajax({ url: url, success: function(answer) { replaceSnippet(snippet, answer); }, complete: function() { hideAjaxLoader(); } }); } } function replaceSnippet(snippet, html) { if(typeof snippet == 'object') { $.each(snippet, function(k, snippet_name) { $(snippet_name).replaceWith($(snippet_name, html)); }); } else { $(snippet).replaceWith($(snippet, html)); } } /** * Function rebuilds content snippet after ajax call * * @param element element holds info about invalid snippet for example * @param url */ function reloadContent(element, url, hideAjax) { if ( typeof url == 'undefined' ) { url = $(location).attr('href'); } if(!isSendingAjax) { if(typeof hideAjax == 'undefined' || hideAjax) { showAjaxLoader(); } $.ajax({ url: url, type: 'POST', data: { ajax: 1 }, complete: function(data){ renderSnippet(data, element); hideAjaxLoader(); } }); } } // SNIPPET END