Add basic JavaScript framework
authorJoey Schulze <joey@infodrom.org>
Mon, 7 Dec 2009 22:41:25 +0000 (23:41 +0100)
committerJoey Schulze <joey@infodrom.org>
Fri, 25 Feb 2011 17:40:22 +0000 (18:40 +0100)
lib/basics.js [new file with mode: 0644]

diff --git a/lib/basics.js b/lib/basics.js
new file mode 100644 (file)
index 0000000..886e103
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Change style of DOM elements
+ */
+function style_adjust(styles)
+{
+    var obj;
+    if (!styles) return;
+
+    for (id in styles) {
+       obj = document.getElementById(id);
+       if (!obj) continue;
+       for (item in styles[id])
+           obj.style[item] = styles[id][item];
+    }
+}
+
+/*
+ * Small AJAX framework
+ */
+function ajax_request_callback(req)
+{
+    if (req.readyState == 4 && req.status == 200) {
+       var data = json_parse(req.responseText);
+
+       if (req.oncomplete)
+           req.oncomplete(data);
+    }
+}
+
+function ajax_request(func,params,oncomplete)
+{
+    var req = new XMLHttpRequest();
+    if (!req) return;
+
+    var params = 'func=' + func + '&' + params;
+    req.open ("POST", 'index.php');
+    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+    req.setRequestHeader("Content-length", params.length);
+    req.setRequestHeader("Connection", "close");
+    if (typeof oncomplete == 'function') {
+       req.onreadystatechange = function() { ajax_request_callback(req); }
+       req.oncomplete = oncomplete;
+    }
+    req.send(params);
+}
+
+/*
+ * Small context menu framework
+ */
+function menu_hide(e)
+{
+    e.target.parentNode.style.display = 'none';
+}
+
+function menu_create(id,data)
+{
+    var div = document.createElement('div');
+    div.id = id;
+    div.className = 'popup';
+
+    var elem = document.createElement('span');
+    elem.className = 'popupTitle';
+    elem.innerHTML = data['title'];
+    elem.onmouseup = menu_hide;
+    div.appendChild(elem);
+
+    for (var i=0; i < data['items'].length; i++) {
+       elem = document.createElement('span');
+       elem.className = 'popup';
+       elem.innerHTML = data['items'][i]['name'];
+       if (data['items'][i]['type'] == 'hide')
+           elem.onmouseup = menu_hide;
+       else
+           elem.onmouseup = data['items'][i]['callback'];
+       div.appendChild(elem);
+    }
+
+    document.body.appendChild(div);
+    return div;
+}