/* Copyright (c) 2009, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt version: 3.0.0 build: 1549 */ YUI.add('pluginhost',function(Y){var L=Y.Lang;function PluginHost(){this._plugins={};} PluginHost.prototype={plug:function(p,config){if(p){if(L.isFunction(p)){this._plug(p,config);}else if(L.isArray(p)){for(var i=0,ln=p.length;i=0;i--){constructor=classes[i];classUnplug=constructor._UNPLUG;if(classUnplug){Y.mix(unplug,classUnplug,true);} classPlug=constructor._PLUG;if(classPlug){Y.mix(plug,classPlug,true);}} for(pluginClassName in plug){if(plug.hasOwnProperty(pluginClassName)){if(!unplug[pluginClassName]){this.plug(plug[pluginClassName]);}}} if(config&&config.plugins){this.plug(config.plugins);}},_destroyPlugins:function(){this._unplug();},_plug:function(PluginClass,config){if(PluginClass&&PluginClass.NS){var ns=PluginClass.NS;config=config||{};config.host=this;if(this.hasPlugin(ns)){this[ns].setAttrs(config);}else{this[ns]=new PluginClass(config);this._plugins[ns]=PluginClass;}}},_unplug:function(plugin){var ns=plugin,plugins=this._plugins;if(L.isFunction(plugin)){ns=plugin.NS;if(ns&&(!plugins[ns]||plugins[ns]!==plugin)){ns=null;}} if(ns){if(this[ns]){this[ns].destroy();delete this[ns];} if(plugins[ns]){delete plugins[ns];}}}};PluginHost.plug=function(hostClass,plugin,config){var p,i,l,name;if(hostClass!==Y.Base){hostClass._PLUG=hostClass._PLUG||{};if(!L.isArray(plugin)){if(config){plugin={fn:plugin,cfg:config};} plugin=[plugin];} for(i=0,l=plugin.length;i