You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
2.8 KiB
128 lines
2.8 KiB
//-------------------------------------------------------------------- |
|
// Tabs |
|
//-------------------------------------------------------------------- |
|
|
|
var tabLinks = new Array(); |
|
var contentDivs = new Array(); |
|
|
|
function init() |
|
{ |
|
// Grab the tab links and content divs from the page |
|
var tabListItems = document.getElementById('tabs').childNodes; |
|
console.log(tabListItems); |
|
for (var i = 0; i < tabListItems.length; i ++) |
|
{ |
|
if (tabListItems[i].nodeName == "LI") |
|
{ |
|
var tabLink = getFirstChildWithTagName(tabListItems[i], 'A'); |
|
var id = getHash(tabLink.getAttribute('href')); |
|
tabLinks[id] = tabLink; |
|
contentDivs[id] = document.getElementById(id); |
|
} |
|
} |
|
|
|
// Assign onclick events to the tab links, and |
|
// highlight the first tab |
|
var i = 0; |
|
|
|
for (var id in tabLinks) |
|
{ |
|
tabLinks[id].onclick = showTab; |
|
tabLinks[id].onfocus = function () { |
|
this.blur() |
|
}; |
|
if (i == 0) |
|
{ |
|
tabLinks[id].className = 'active'; |
|
} |
|
i ++; |
|
} |
|
|
|
// Hide all content divs except the first |
|
var i = 0; |
|
|
|
for (var id in contentDivs) |
|
{ |
|
if (i != 0) |
|
{ |
|
console.log(contentDivs[id]); |
|
contentDivs[id].className = 'content hide'; |
|
} |
|
i ++; |
|
} |
|
} |
|
|
|
//-------------------------------------------------------------------- |
|
|
|
function showTab() |
|
{ |
|
var selectedId = getHash(this.getAttribute('href')); |
|
|
|
// Highlight the selected tab, and dim all others. |
|
// Also show the selected content div, and hide all others. |
|
for (var id in contentDivs) |
|
{ |
|
if (id == selectedId) |
|
{ |
|
tabLinks[id].className = 'active'; |
|
contentDivs[id].className = 'content'; |
|
} |
|
else |
|
{ |
|
tabLinks[id].className = ''; |
|
contentDivs[id].className = 'content hide'; |
|
} |
|
} |
|
|
|
// Stop the browser following the link |
|
return false; |
|
} |
|
|
|
//-------------------------------------------------------------------- |
|
|
|
function getFirstChildWithTagName(element, tagName) |
|
{ |
|
for (var i = 0; i < element.childNodes.length; i ++) |
|
{ |
|
if (element.childNodes[i].nodeName == tagName) |
|
{ |
|
return element.childNodes[i]; |
|
} |
|
} |
|
} |
|
|
|
//-------------------------------------------------------------------- |
|
|
|
function getHash(url) |
|
{ |
|
var hashPos = url.lastIndexOf('#'); |
|
return url.substring(hashPos + 1); |
|
} |
|
|
|
//-------------------------------------------------------------------- |
|
|
|
function toggle(elem) |
|
{ |
|
elem = document.getElementById(elem); |
|
|
|
if (elem.style && elem.style['display']) |
|
{ |
|
// Only works with the "style" attr |
|
var disp = elem.style['display']; |
|
} |
|
else if (elem.currentStyle) |
|
{ |
|
// For MSIE, naturally |
|
var disp = elem.currentStyle['display']; |
|
} |
|
else if (window.getComputedStyle) |
|
{ |
|
// For most other browsers |
|
var disp = document.defaultView.getComputedStyle(elem, null).getPropertyValue('display'); |
|
} |
|
|
|
// Toggle the state of the "display" style |
|
elem.style.display = disp == 'block' ? 'none' : 'block'; |
|
|
|
return false; |
|
} |