wizefunc.js
4.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* Go to top of page */
function topFunction() {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
}
/* open/close navigation optionally slide page */
function openNav(slide) {
if (document.getElementById("mySidenav").getAttribute("class").split(' ')[1] == "menuClosed") {
document.getElementById("mySidenav").style.width = "300px";
if (slide==1) {
document.getElementById("main").style.marginLeft = "300px";
}
document.getElementById("mySidenav").setAttribute("class","menu menuOpen");
/* Scroll to top when opening menu */
topFunction();
} else {
document.getElementById("mySidenav").style.width = "0";
if (slide==1) {
document.getElementById("main").style.marginLeft = "0";
}
document.getElementById("mySidenav").setAttribute("class","menu menuClosed");
}
}
/* when scrolling down 20 pixel display upButton */
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
upButton.style.display = "block";
} else {
upButton.style.display = "none";
}
}
/* Test if the logo is present (to avoid displaying broken link icon on chrome) */
function testLogo() {
logo=document.getElementById("logoImgId");
logodiv=document.getElementById("logoDivId");
if (logo.naturalHeight == 0) {
logodiv.setAttribute("style","display:none;");
}
}
/* Convert the two first tags into info */
/* use tags for image/table/object attributes */
function tagToInfo() {
var tags = document.getElementsByClassName('zim-tag');
var n = tags.length < 3 ? tags.length : 2;
for (var i=1; i <= n; i++) {
var s = tags[i-1].innerHTML;
s = s.replace('@','');
s = s.replace(/_/g,' ');
document.getElementById("footinfo"+i).innerHTML = s;
}
if (tags.length > 2) {
/* Image tags */
for (var i=1; i <= tags.length - 2; i++) {
var ctag = tags[i+1];
var s = ctag.innerHTML;
s = s.replace('@','');
/* find next img/table/zim-object */
ctag = findNextObject(ctag);
/* either we found something either null */
if (ctag!=null) {
var style = ctag.getAttribute("style");
var res;
style = style == null ? '' : style;
if (s == "left") {
style = style + "float:left; margin-left:0; margin-right:1em;";
}
if (s == "right") {
style = style + "float:right; margin-left:1em; margin-right:0;";
}
if (res = s.match(/^height(.+)$/)) {
style = style + "height:"+res[1]+";";
}
if (res = s.match(/^width(.+)$/)) {
style = style + "width:"+res[1]+"; height:auto;";
}
if (res = s.match(/^fontsize(.+)$/)) {
style = style + "font-size:"+res[1]+"%;";
}
ctag.setAttribute("style",style);
}
}
}
}
function findNextObject(tag) {
/* try to found in current */
var objectsTagClassArray=['IMG','','TABLE','','DIV','zim-object'];
ob = findTagInSiblings(tag,objectsTagClassArray);
if (ob == null) {
ob = findTagInSiblings(tag.parentElement,objectsTagClassArray);
}
return ob;
}
function findTagInSiblings(tag,tagsToFind) {
var notFound = true;
var ctag = tag;
while (notFound) {
ctag = ctag.nextElementSibling
if (ctag == null) {
notFound = false;
break;
}
for (var i=0 ; i < tagsToFind.length/2 ; i++) {
if (ctag.tagName == tagsToFind[i*2]) {
/* we(ve got the tag */
if (tagsToFind[i*2+1]=='') {
notFound = false;
break;
} else if (ctag.className == tagsToFind[i*2+1]) {
notFound = false;
break;
}
}
}
}
return ctag;
}