function homeContentTabs() {
    //Holds the array of tabs
    this.tabs = new Array();
    //Holds the array of text for each tab
    this.tabTitle = new Array();
    //The number of tabs - 1.  Used as the key for the this.tabs array
    this.tabCount = 0;
    //Holds the div that surrounds the tab content
    this.container = null;
    this.bookmark = false;
    this.defaultTab = 1;
    this.divClass = 'homeTabs_div';
    this.tabLinkActiveClass = 'homeTabs_active';
    this.tabLiActiveClass = 'homeTabs_liActive';
    this.tabLinks = null;
    this.tabLinkPrefix = 'tab';
    this.autoHeight = false;
    this.minHeight = 0;
    //Class name for the tab container once the tabs are initialized
    this.liveTabsClass = 'homeTabs_live';
    //Class name for hidding tabs
    this.hideTabsClass = 'homeTabs_hide';
    //Regular expression for removing the hideTabsClass
    this.REhideTabsClass = new RegExp('\\b' + this.hideTabsClass + '\\b', 'gi');
    this.onShow = function() {};
    this.selectedTab;
    this.selectedTabNumber;
    this.scrollInterval;

    this.init = function(div, callbacks) {
        if(!document.getElementById || !document.createTextNode || div == null){return;}
        //Get the div that surrounds tab content
        this.container = document.getElementById(div);
        if (this.container == null || !this.container.hasChildNodes) {return;}
        //Get all of the child divs
        var divs = this.container.getElementsByTagName('div');
        for (var i = 0; i < divs.length; i ++) {
            if (divs[i].parentNode == this.container) {
                //Get the divs for each tab content
                this.tabs[this.tabCount] = divs[i];
                //Hide each div
                //				divs[i].style.display = 'none';
                //Give each div a unique id
                divs[i].setAttribute('id',this.tabLinkPrefix + (this.tabCount + 1));
                divs[i].className = this.divClass;
                this.tabTitle[this.tabCount] = this.tabCount + 1;
                this.tabCount ++;
            }
        }
        if (this.autoHeight) {
            this.setMinHeight();
        }
        //Create the tabs
        //this.createTabLinks();
        //Select the default tab
        this.setDefaultTab();
        //Give the tabs div the "live" class
        this.container.className = this.liveTabsClass;
    }

    this.setMinHeight = function() {
        for (var i = 0; i < this.tabs.length; i ++) {
            this.minHeight = Math.max(this.minHeight, this.getHeight(this.tabs[i]));
        }
        for (var i = 0; i < this.tabs.length; i ++) {
            this.tabs[i].style.minHeight = this.minHeight + 'px';
            this.tabs[i].setAttribute('minh',this.minHeight);
            if (this.getHeight(this.tabs[i]) < this.minHeight) {
                this.tabs[i].style.height = this.minHeight;
            }
        }

    }

    this.getHeight = function(e) {
        var h = 0;
        if (e.offsetHeight) {
            h = e.offsetHeight;
        }
        else if (e.style.pixelHeight) {
            h = e.style.pixelHeight;
        }
        return h;
    }

    this.setDefaultTab = function() {
        var usedBookmark = false;
        if (this.bookmark) {
            //See if there is an anchor in the url that matches one of the ids of the tab content divs. If so, show that div
            if (window.location.href.toString().match(/#(.*)/)) {
            var anchor = window.location.href.toString().match(/#(.*)/)[1];
            var div = document.getElementById(anchor);
            var num = anchor.substring(this.tabLinkPrefix.length, anchor.length);
            if(div){
                this.showTab(num - 1);
                usedBookmark = true;
            }
        }
    }
    if (!usedBookmark) {
        //Url bookmarks aren't used so select the default tab. Show the default tab
        if (this.defaultTab > 0 && this.defaultTab <= this.tabCount) {
            this.showTab(this.defaultTab - 1);
        }
        else {
            this.showTab(0);
        }
    }
}

this.createTabLinks = function() {
    if (this.tabs.length == 0) {return;}
    list = document.createElement('ul');
    list.className = 'homeTabs_tabLinks';
    for (var i = 0; i < this.tabs.length; i ++) {
//    for (var i = this.tabs.length - 1; i >= 0; i --) {
        var li = document.createElement('li');
        var link = document.createElement('a');
        link.href = '#' + this.tabLinkPrefix + (i + 1);
        link.obj = this;
        link.onclick = this.showSelectedTab;
        link.appendChild(document.createTextNode(this.tabTitle[i]));
        li.appendChild(link);
        list.appendChild(li);
    }

//    var li = document.createElement('li');
//    var stopLink = document.createElement('a');
//    stopLink.href = '#';
//    stopLink.obj = this;
//    stopLink.onclick = this.stopScroll;
//    stopLink.appendChild(document.createTextNode('stop'));
//    li.appendChild(stopLink);
//    list.appendChild(li);

    this.container.parentNode.appendChild(list);
//    this.container.appendChild(list);
    this.tabLinks = list.getElementsByTagName('li');
}

this.showSelectedTab = function() {
    //get the obj attribute from the link. "this" refers to the link, not ncTabs object
    var link = this;
    if (!link.obj) { return; }
    var ncTabsObj = this.obj;
    ncTabsObj.stopScroll(null, ncTabsObj);
    ncTabsObj.hideTabs();
    //Get the tab number by parsing the href attribute
    var tabNumber = link.href.substring(link.href.indexOf("#") + ncTabsObj.tabLinkPrefix.length + 1, link.href.length) - 1;
    //Remove the focus from the link so that the tab doesn't look funny in Firefox
    link.blur();

    ncTabsObj.startScroll(null, ncTabsObj);
    return ncTabsObj.showTab(tabNumber);
}
this.showTab = function(tabNumber) {
    this.selectedTab = 'tab' + (parseInt(tabNumber) + 1);
    this.selectedTabNumber = tabNumber;
    this.hideTabs();
    this.tabs[tabNumber].className = this.tabs[tabNumber].className.replace(this.REhideTabsClass,'');
//    this.tabLinks[tabNumber].className = this.tabLiActiveClass;
//    this.tabLinks[tabNumber].firstChild.className = this.tabLinkActiveClass;
    this.onShow.apply(this);
    if (!this.bookmark) {
        return false;
    }
}

this.hideTabs = function() {
    for (var i = 0; i < this.tabs.length; i ++) {
        if (!this.tabs[i].className.match(this.REhideTabsClass)) {
            this.tabs[i].className += ' ' + this.hideTabsClass;
        }
    }
//    for (var x = 0; x < this.tabLinks.length; x ++) {
//        this.tabLinks[x].className = '';
//        this.tabLinks[x].firstChild.className = '';
//    }
}
this.getSelectedTab = function() {
    return this.selectedTab;
}
this.setupScroll = function() {
    this.scrollInterval = setInterval('this.scroll()', 6000);
}
this.stopScroll = function(e, obj) {
    obj = obj || this.obj;
    clearInterval(obj.scrollInterval);
    this.innerHTML = 'play';
    this.onclick = obj.startScroll;
    return false;
}
this.startScroll = function(e, obj) {
    obj = obj || this.obj;
    obj.setupScroll(e, obj);
    this.innerHTML = 'stop';
    this.onclick = obj.stopScroll;
    return false;
}
this.scroll = function() {
    if (this.selectedTabNumber < (this.tabCount - 1)) {
        this.showTab(this.selectedTabNumber + 1);
    }
    else {
        this.showTab(0);
    }
}
}

var tabs;
function setupTabs() {
    tabs = new homeContentTabs();
    tabs.init('featured');
    tabs.setupScroll();
}

function scroll() {
    var current = tabs.getSelectedTab();
    tabs.scroll();
}
NC.Window.onDomReady(setupTabs);