comparison build/reports/tests/classes/js/report.js @ 66:0c4a0a1c2f7f

gtadle
author Kanagawa TATSUKI <tatsuki@ie.u-ryukyu.ac.jp>
date Mon, 16 Jun 2014 16:47:12 +0900
parents
children
comparison
equal deleted inserted replaced
65:caad209bfbe3 66:0c4a0a1c2f7f
1 var tabs = new Object();
2
3 function initTabs() {
4 var container = document.getElementById('tabs');
5 tabs.tabs = findTabs(container);
6 tabs.titles = findTitles(tabs.tabs);
7 tabs.headers = findHeaders(container);
8 tabs.select = select;
9 tabs.deselectAll = deselectAll;
10 tabs.select(0);
11 return true;
12 }
13
14 window.onload = initTabs;
15
16 function switchTab() {
17 var id = this.id.substr(1);
18 for (var i = 0; i < tabs.tabs.length; i++) {
19 if (tabs.tabs[i].id == id) {
20 tabs.select(i);
21 break;
22 }
23 }
24 return false;
25 }
26
27 function select(i) {
28 this.deselectAll();
29 changeElementClass(this.tabs[i], 'tab selected');
30 changeElementClass(this.headers[i], 'selected');
31 while (this.headers[i].firstChild) {
32 this.headers[i].removeChild(this.headers[i].firstChild);
33 }
34 var h2 = document.createElement('H2');
35 h2.appendChild(document.createTextNode(this.titles[i]));
36 this.headers[i].appendChild(h2);
37 }
38
39 function deselectAll() {
40 for (var i = 0; i < this.tabs.length; i++) {
41 changeElementClass(this.tabs[i], 'tab deselected');
42 changeElementClass(this.headers[i], 'deselected');
43 while (this.headers[i].firstChild) {
44 this.headers[i].removeChild(this.headers[i].firstChild);
45 }
46 var a = document.createElement('A');
47 a.setAttribute('id', 'ltab' + i);
48 a.setAttribute('href', '#tab' + i);
49 a.onclick = switchTab;
50 a.appendChild(document.createTextNode(this.titles[i]));
51 this.headers[i].appendChild(a);
52 }
53 }
54
55 function changeElementClass(element, classValue) {
56 if (element.getAttribute('className')) {
57 /* IE */
58 element.setAttribute('className', classValue)
59 } else {
60 element.setAttribute('class', classValue)
61 }
62 }
63
64 function findTabs(container) {
65 return findChildElements(container, 'DIV', 'tab');
66 }
67
68 function findHeaders(container) {
69 var owner = findChildElements(container, 'UL', 'tabLinks');
70 return findChildElements(owner[0], 'LI', null);
71 }
72
73 function findTitles(tabs) {
74 var titles = new Array();
75 for (var i = 0; i < tabs.length; i++) {
76 var tab = tabs[i];
77 var header = findChildElements(tab, 'H2', null)[0];
78 header.parentNode.removeChild(header);
79 if (header.innerText) {
80 titles.push(header.innerText)
81 } else {
82 titles.push(header.textContent)
83 }
84 }
85 return titles;
86 }
87
88 function findChildElements(container, name, targetClass) {
89 var elements = new Array();
90 var children = container.childNodes;
91 for (var i = 0; i < children.length; i++) {
92 var child = children.item(i);
93 if (child.nodeType == 1 && child.nodeName == name) {
94 if (targetClass && child.className.indexOf(targetClass) < 0) {
95 continue;
96 }
97 elements.push(child);
98 }
99 }
100 return elements;
101 }