/**
 * @author stapll
 */
gloader.load(["glow", "1", "glow.dom", "glow.events"], {
	onLoad: function(glow){	
		bbc.fmtj.utils.createObject("bbc.fmtj.apps.tabmaker");
		
		bbc.fmtj.apps.tabmaker = (function () {
			return {
				init: function(){
					var tabList = new glow.dom.NodeList();
					var tabNavList = new glow.dom.NodeList();
					var tabContainer = glow.dom.create('<div class="tabcontainer"><ul class="tabnav"></ul><div class="clear"></div></div>');
					
					function createTabs(json)
					{
						for (var i = 0; i < json.tabs.length; i++) {
							var currentTab = glow.dom.get('div#' + json.tabs[i].divId);
							currentTab.addClass('tab-content');
							tabList.push(currentTab); //push to global tabList
							
							if (i === 0) {
								currentTab.before(tabContainer);//insert tabContainer at position in dom of first divId
							}
							currentTab.remove(); //remove from dom
							tabContainer.append(currentTab); //add to tabContainer
							
							//create link and add listener to pass through appropriate index to selectTab
							var tabLink = glow.dom.create('<a href="#">' + json.tabs[i].title + '</a>');
							glow.events.addListener(tabLink, 'click', function(index){
								return function(){
									selectTab(index);
									return false;
								};
							}(i), this);
							
							var tabLI = glow.dom.create('<li></li>');
							tabLI.append(tabLink);
							tabNavList.push(tabLI); //push to global tabNavList
							tabContainer.get('ul.tabnav').append(tabLI);
						}		
						selectTab(0);//select first tab
					};
					
					function selectTab(tabIndex)
					{
						if (tabIndex <= tabList.length - 1) {
							tabContainer.get('ul.tabnav li.nav-selected').removeClass('nav-selected');
							tabContainer.get('div.tab-selected').removeClass('tab-selected');
							tabContainer.get(tabList[tabIndex]).addClass('tab-selected');
							tabContainer.get(tabNavList[tabIndex]).addClass('nav-selected');
						}
					};
					
					//public 
					return {
						createTabs: createTabs
					}
				}
			}
		})();		
	}
});