|
@@ -86,3 +86,69 @@ ajax.post = function(url, data, callback, async) {
|
|
|
};
|
|
|
ajax.send(url, callback, 'POST', query.join('&'), async);
|
|
|
};
|
|
|
+
|
|
|
+// TODO: rework later (remove duplicated code)
|
|
|
+ajax.hasClass = function(obj, className) {
|
|
|
+ return !!obj.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
|
|
|
+};
|
|
|
+
|
|
|
+ajax.addClass = function(obj, className) {
|
|
|
+ if(!ajax.hasClass(obj, className)) obj.className += " " + className;
|
|
|
+};
|
|
|
+
|
|
|
+ajax.removeClass = function(obj, className) {
|
|
|
+ if(ajax.hasClass(obj, className)) {
|
|
|
+ var reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
|
|
|
+ obj.className = obj.className.replace(reg, ' ').trim();
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+ajax.processTag = function(tag, url, func) {
|
|
|
+ if(typeof window[func] === 'function') {
|
|
|
+ if(!ajax.hasClass(tag, 'loading')) {
|
|
|
+ ajax.addClass(tag, 'loading');
|
|
|
+ var body = document.getElementsByTagName('body');
|
|
|
+ if(body.length >= 1) { ajax.addClass(body[0], 'loading'); };
|
|
|
+ ajax.getJSON(url, {}, function(method, data, readyState, status, responseData) {
|
|
|
+ var body = document.getElementsByTagName('body');
|
|
|
+ if(body.length >= 1) { ajax.removeClass(body[0], 'loading'); };
|
|
|
+ try {
|
|
|
+ var resp = window[func](tag, responseData);
|
|
|
+ tag.innerHTML = resp;
|
|
|
+ } catch(e) {
|
|
|
+ console.log('ajax.processTag', 'e', e);
|
|
|
+ };
|
|
|
+ ajax.removeClass(tag, 'loading');
|
|
|
+ }, function(method, data, readyState, status, responseData) {
|
|
|
+ ajax.removeClass(tag, 'loading');
|
|
|
+ var body = document.getElementsByTagName('body');
|
|
|
+ if(body.length >= 1) { ajax.removeClass(body[0], 'loading'); };
|
|
|
+ });
|
|
|
+ };
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+ajax.processTags = function() {
|
|
|
+ var tags = document.querySelectorAll('[data-ajax-get]');
|
|
|
+ for(var key in tags) if(tags.hasOwnProperty(key)) {
|
|
|
+ var tag = tags[key];
|
|
|
+ var get = tag.getAttribute('data-ajax-get');
|
|
|
+ var func = tag.getAttribute('data-ajax-func');
|
|
|
+ var delay = tag.getAttribute('data-ajax-delay');
|
|
|
+ if(get && get != null && func && func != null) {
|
|
|
+ if(delay == null) {
|
|
|
+ ajax.processTag(tag, get, func);
|
|
|
+ } else {
|
|
|
+ setTimeout(function() {
|
|
|
+ ajax.processTag(tag, get, func);
|
|
|
+ }, delay);
|
|
|
+ };
|
|
|
+ };
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+if(window.attachEvent) {
|
|
|
+ window.attachEvent('onload', ajax.processTags);
|
|
|
+} else if(window.addEventListener) {
|
|
|
+ window.addEventListener('load', ajax.processTags, false);
|
|
|
+};
|