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