src/ztfy/myams/resources/js/myams.js
changeset 189 688803362e9d
parent 187 6a5e0d867964
child 192 d58af89193e3
equal deleted inserted replaced
188:c6b84eed2f59 189:688803362e9d
  2440 			// Inner plug-in register function
  2440 			// Inner plug-in register function
  2441 			function _registerPlugin(name, new_plugin) {
  2441 			function _registerPlugin(name, new_plugin) {
  2442 				if (plugins.hasOwnProperty(name)) {
  2442 				if (plugins.hasOwnProperty(name)) {
  2443 					var plugin = plugins[name];
  2443 					var plugin = plugins[name];
  2444 					plugin.css = plugin.css || new_plugin.css;
  2444 					plugin.css = plugin.css || new_plugin.css;
  2445 					plugin.callbacks.push(new_plugin.callback);
  2445 					plugin.callbacks.push({
  2446 					plugin.contexts.push(new_plugin.context);
  2446 						callback: new_plugin.callback,
       
  2447 						context: new_plugin.context
       
  2448 					});
  2447 					if (new_plugin.register) {
  2449 					if (new_plugin.register) {
  2448 						plugin.register = true;
  2450 						plugin.register = true;
  2449 					}
  2451 					}
  2450 					if (new_plugin.async === false) {
  2452 					if (new_plugin.async === false) {
  2451 						plugin.async = false;
  2453 						plugin.async = false;
  2452 					}
  2454 					}
  2453 				} else {
  2455 				} else {
  2454 					plugins[name] = {
  2456 					plugins[name] = {
  2455 						src: new_plugin.src,
  2457 						src: new_plugin.src,
  2456 						css: new_plugin.css,
  2458 						css: new_plugin.css,
  2457 						callbacks: new_plugin.callback ? [new_plugin.callback] : [],
  2459 						callbacks: [{
  2458 						contexts: [new_plugin.context],
  2460 							callback: new_plugin.callback,
       
  2461 							context: new_plugin.context
       
  2462 						}],
  2459 						register: new_plugin.register,
  2463 						register: new_plugin.register,
  2460 						async: new_plugin.async
  2464 						async: new_plugin.async
  2461 					};
  2465 					};
  2462 				}
  2466 				}
  2463 				if (new_plugin.css) {
  2467 				if (new_plugin.css) {
  2496 			// Inner plug-in loader function
  2500 			// Inner plug-in loader function
  2497 			var plugin;
  2501 			var plugin;
  2498 
  2502 
  2499 			function _loadPlugin() {
  2503 			function _loadPlugin() {
  2500 				var index;
  2504 				var index;
  2501 				var callbacks = plugin.callbacks;
  2505 				var callbacks = plugin.callbacks,
  2502 				var contexts = plugin.contexts;
  2506 					callback;
  2503 				if (callbacks && callbacks.length) {
  2507 				if (callbacks && callbacks.length) {
  2504 					for (index=0; index < callbacks.length; index++) {
  2508 					for (index=0; index < callbacks.length; index++) {
  2505 						var called = ams.getFunctionByName(callbacks[index]);
  2509 						callback = callbacks[index];
       
  2510 						callback.callback = ams.getFunctionByName(callback.callback);
  2506 						if (plugin.register !== false) {
  2511 						if (plugin.register !== false) {
  2507 							var enabled = ams.plugins.enabled;
  2512 							var enabled = ams.plugins.enabled;
  2508 							if (enabled.hasOwnProperty(name)) {
  2513 							if (enabled.hasOwnProperty(name)) {
  2509 								enabled[name].push(called);
  2514 								enabled[name].push(callback);
  2510 							} else {
  2515 							} else {
  2511 								enabled[name] = [called];
  2516 								enabled[name] = [callback];
  2512 							}
  2517 							}
  2513 						}
  2518 						}
  2514 					}
  2519 					}
  2515 				} else {
  2520 				} else {
  2516 					if (plugin.register !== false) {
  2521 					if (plugin.register !== false) {
  2519 				}
  2524 				}
  2520 				// If running in async mode, registered plug-ins are run
  2525 				// If running in async mode, registered plug-ins are run
  2521 				// before callback is called so we call plug-in manually
  2526 				// before callback is called so we call plug-in manually
  2522 				if (callbacks && callbacks.length && (plugin.async !== false)) {
  2527 				if (callbacks && callbacks.length && (plugin.async !== false)) {
  2523 					for (index=0; index < callbacks.length; index++) {
  2528 					for (index=0; index < callbacks.length; index++) {
  2524 						ams.getFunctionByName(callbacks[index])(contexts[index]);
  2529 						callback = callbacks[index];
       
  2530 						ams.executeFunctionByName(callback.callback, element, callback.context);
  2525 					}
  2531 					}
  2526 				}
  2532 				}
  2527 			}
  2533 			}
  2528 
  2534 
  2529 			for (name in plugins) {
  2535 			for (name in plugins) {
  2550 							callbacks(element);
  2556 							callbacks(element);
  2551 							break;
  2557 							break;
  2552 						default:
  2558 						default:
  2553 							for (var cbIndex = 0; cbIndex < callbacks.length; cbIndex++) {
  2559 							for (var cbIndex = 0; cbIndex < callbacks.length; cbIndex++) {
  2554 								var callback = callbacks[cbIndex];
  2560 								var callback = callbacks[cbIndex];
  2555 								if (typeof(callback) === 'function') {
  2561 								switch (typeof(callback)) {
  2556 									callback(element);
  2562 									case 'function':
       
  2563 										callback(element);
       
  2564 										break;
       
  2565 									default:
       
  2566 										callback.callback(callback.context);
  2557 								}
  2567 								}
  2558 							}
  2568 							}
  2559 					}
  2569 					}
  2560 				}
  2570 				}
  2561 			}
  2571 			}