-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathui.js
More file actions
76 lines (65 loc) · 2.17 KB
/
ui.js
File metadata and controls
76 lines (65 loc) · 2.17 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
/*
Read license.txt for licensing information.
*/
var UI = {
show: function(element) {
if (UI.getStyle(element, 'display') == 'none') {
// Set display value to be defined by style sheet
var cssRules = window.getMatchedCSSRules(element, '', true);
var ruleLength = cssRules.length;
var display;
for (var i = ruleLength - 1; i >= 0 ; --i) {
display = cssRules[i].style.display;
if (display && display != 'none') {
element.style.display = display;
return;
}
}
// Set display value to be UA default value
var tmpElement = document.createElement(element.nodeName);
document.body.appendChild(tmpElement);
display = UI.getStyle(tmpElement, 'display');
document.body.removeChild(tmpElement);
element.style.display = display;
}
},
hide: function(element) {
element.style.display = 'none';
},
setStyle: function(element) {
var argLength = arguments.length;
var arg1 = arguments[1];
if (argLength == 2 && arg1.constructor == Object) {
for (var prop in arg1) {
var camelCasedProp = prop.replace(/-([a-z])/gi, function(n, letter) {
return letter.toUpperCase();
});
element.style[camelCasedProp] = arg1[prop];
}
} else if (argLength == 3)
element.style[arg1] = arguments[2];
},
getStyle: function(element, property) {
return window.getComputedStyle(element)[property];
},
addClass: function(element, className) {
var classes = element.className.split(' ');
classes.push(className);
element.className = classes.join(' ');
},
removeClass: function(element, className) {
var classes = element.className.split(' ');
var index = classes.indexOf(className);
if (index >= 0) {
classes.splice(index, 1);
element.className = classes.join(' ');
}
},
addStyleSheet: function(path) {
var link = document.createElement('link');
link.setAttribute('type', 'text/css');
link.setAttribute('rel', 'stylesheet');
link.setAttribute('href', path);
document.head.appendChild(link);
}
};