function getElementsByClass(el, name, recursive)
{
    var result = new Array();
    
    recursive = recursive == false ? false : true;

    var searchFromParent = function(element)
    {
        for (var i = 0; i < element.childNodes.length; ++i)
        {
            if (element.childNodes[i].nodeType == 3)
                continue;
            
            if (typeof(element.childNodes[i].className) != 'undefined')
            {
                var className = ' ' + element.childNodes[i].className + ' ';
                if (className.indexOf(' ' + name + ' ') >= 0)
                    result.push(element.childNodes[i]);
            }
            
            if (recursive)
                searchFromParent(element.childNodes[i]);
        }
    };
    searchFromParent(el);

    return result;
};


function switchTab(link, tabIndex)
{
    // Get list of tab links
    var tabLinks = link.parentNode.childNodes;
    
    // Make all tab links inactive
    for (var i = 0; i < tabLinks.length; ++i)
    {
        if (tabLinks[i].tagName == 'A')
            tabLinks[i].className = '';
    }
    
    // Make target tab active
    link.className = 'selected';
    
    // Get list of tab content divs
    tabDivsContainer = getElementsByClass(link.parentNode.parentNode.parentNode, 'tabs').pop();
    tabList = tabDivsContainer.childNodes;
    
    // Hide all tab content divs
    for (var i = 0; i < tabList.length; ++i)
    {
        if (tabList[i].tagName == 'DIV')
            tabList[i].style.display = 'none';
    }
    
    // Show target tab content div
    targetDiv = getElementsByClass(tabDivsContainer, 'tab-' + tabIndex).pop();
    targetDiv.style.display = 'block';
};


function hideTabContents(element)
{
    var tabAreas = getElementsByClass(element, 'tabs', true);
    
    for (var i = 0; i < tabAreas.length; ++i)
    {
        var firstDiv = -1;
        
        // Hide all divs and resolve first div
        for (var j = 0; j < tabAreas[i].childNodes.length; ++j)
        {
            if (tabAreas[i].childNodes[j].tagName == 'DIV')
            {
                tabAreas[i].childNodes[j].style.display = 'none';
                firstDiv = (firstDiv == -1) ? j : firstDiv;
            }
        }
        
        // Show first div
        tabAreas[i].childNodes[firstDiv].style.display = 'block';
    }
};


