src/ztfy/myams/resources/js/myams.js
changeset 189 688803362e9d
parent 187 6a5e0d867964
child 192 d58af89193e3
--- a/src/ztfy/myams/resources/js/myams.js	Fri Nov 25 16:30:51 2016 +0100
+++ b/src/ztfy/myams/resources/js/myams.js	Mon Nov 28 14:51:54 2016 +0100
@@ -2442,8 +2442,10 @@
 				if (plugins.hasOwnProperty(name)) {
 					var plugin = plugins[name];
 					plugin.css = plugin.css || new_plugin.css;
-					plugin.callbacks.push(new_plugin.callback);
-					plugin.contexts.push(new_plugin.context);
+					plugin.callbacks.push({
+						callback: new_plugin.callback,
+						context: new_plugin.context
+					});
 					if (new_plugin.register) {
 						plugin.register = true;
 					}
@@ -2454,8 +2456,10 @@
 					plugins[name] = {
 						src: new_plugin.src,
 						css: new_plugin.css,
-						callbacks: new_plugin.callback ? [new_plugin.callback] : [],
-						contexts: [new_plugin.context],
+						callbacks: [{
+							callback: new_plugin.callback,
+							context: new_plugin.context
+						}],
 						register: new_plugin.register,
 						async: new_plugin.async
 					};
@@ -2498,17 +2502,18 @@
 
 			function _loadPlugin() {
 				var index;
-				var callbacks = plugin.callbacks;
-				var contexts = plugin.contexts;
+				var callbacks = plugin.callbacks,
+					callback;
 				if (callbacks && callbacks.length) {
 					for (index=0; index < callbacks.length; index++) {
-						var called = ams.getFunctionByName(callbacks[index]);
+						callback = callbacks[index];
+						callback.callback = ams.getFunctionByName(callback.callback);
 						if (plugin.register !== false) {
 							var enabled = ams.plugins.enabled;
 							if (enabled.hasOwnProperty(name)) {
-								enabled[name].push(called);
+								enabled[name].push(callback);
 							} else {
-								enabled[name] = [called];
+								enabled[name] = [callback];
 							}
 						}
 					}
@@ -2521,7 +2526,8 @@
 				// before callback is called so we call plug-in manually
 				if (callbacks && callbacks.length && (plugin.async !== false)) {
 					for (index=0; index < callbacks.length; index++) {
-						ams.getFunctionByName(callbacks[index])(contexts[index]);
+						callback = callbacks[index];
+						ams.executeFunctionByName(callback.callback, element, callback.context);
 					}
 				}
 			}
@@ -2552,8 +2558,12 @@
 						default:
 							for (var cbIndex = 0; cbIndex < callbacks.length; cbIndex++) {
 								var callback = callbacks[cbIndex];
-								if (typeof(callback) === 'function') {
-									callback(element);
+								switch (typeof(callback)) {
+									case 'function':
+										callback(element);
+										break;
+									default:
+										callback.callback(callback.context);
 								}
 							}
 					}