Ink.createModule('Ink.Autoload', 1, ['Ink.Dom.Selector_1', 'Ink.Util.Array_1', 'Ink.Dom.Loaded_1', 'Ink.UI.SmoothScroller_1', 'Ink.UI.Close_1', 'Ink.UI.Drawer_1'], function(Selector, InkArray, Loaded, Scroller, Close, Drawer){
'use strict';
var el=document.createElement('div');
function validSelector(sel){
try {
Selector.select(sel, el);
} catch(e){
Ink.error(e);
return false;
}
return true;
}
var Autoload={
selectors: {
'FormValidator_2':'.wcv-formvalidator',
'Modal_1':'.wcv-modal',
'Table_1':'.wcv-table',
'Tabs_1':'.wcv-tabs',
'Tooltip_1':'.wcv-tooltip, .tooltip',
},
defaultOptions: {},
run: function (parentEl, options){
options=Ink.extendObj({
selectors: Autoload.selectors
}, options||{});
for(var mod in options.selectors) if(options.selectors.hasOwnProperty(mod)){
findElements(mod);
}
if(options.createClose!==false){
new Close();
}
if(options.createSmoothScroller!==false){
Scroller.init();
}
if(options.createDrawer!==false){
if(Selector.matchesSelector(document.body, '.ink-drawer') &&
!(Drawer.getInstance&&Drawer.getInstance(document.body))){
new Drawer(document.body);
}}
function findElements(mod){
var fname;
if(/\./.test(mod)){
mod=mod.split('.');
fname=mod[1];
mod=mod[0];
}
var modName='Ink.UI.' + mod;
var elements=Selector.select(options.selectors[mod], parentEl);
elements=InkArray.filter(elements, autoloadElement);
if(elements.length){
Ink.requireModules([modName], function(Component){
InkArray.forEach(elements, function (el){
if(typeof Component.getInstance==='function' &&
Component.getInstance(el)!=null){
return;
}
if(!fname){
new Component(el, Autoload.defaultOptions[mod]);
}else{
Component[fname](el, Autoload.defaultOptions[mod]);
}});
});
}}
function autoloadElement(element){
if(options.forceAutoload===true){ return true; }
if(typeof element.getAttribute==='function'||typeof element.getAttribute==='object'){
return element.getAttribute('data-autoload')!=='false';
}}
},
add: function (moduleName, selector){
if(!validSelector(selector)){ return false; }
if(Autoload.selectors[moduleName]){
Autoload.selectors[moduleName] +=', ' + selector;
}else{
Autoload.selectors[moduleName]=selector;
}},
remove: function (moduleName){
delete Autoload.selectors[moduleName];
}};
for (var k in Autoload.selectors) if(Autoload.selectors.hasOwnProperty(k)){
Autoload.defaultOptions[k]={};}
if(!window.INK_NO_AUTO_LOAD){
Loaded.run(function (){
Autoload.run(document, {
createSmoothScroller: true,
createClose: true
});
Autoload.firstRunDone=true;
});
}
return Autoload;
});