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) { |