Release 5.2
diff --git a/src/js/ui.js b/src/js/ui.js
new file mode 100644
index 0000000..e13ea13
--- /dev/null
+++ b/src/js/ui.js
@@ -0,0 +1,70 @@
+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);
+ }
+};
\ No newline at end of file