/* * 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]; } } function stop_propagation(e) { if (!e) var e = window.event; e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); } /* * 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); } /* * Simple popup creation */ function popup_create(id,title,content) { var div = document.createElement('div'); div.id = id; div.style.zIndex = 20; div.className = 'popup'; var elem = document.createElement('span'); elem.className = 'popupTitle'; elem.innerHTML = title; div.appendChild(elem); elem = document.createElement('div'); elem.className = 'popupContent'; elem.innerHTML = content; div.appendChild(elem); document.body.appendChild(div); return div; } /* * Small context menu framework */ function menu_hide(e) { e.target.parentNode.style.display = 'none'; if (e.target.parentNode.payload['row'] != undefined) e.target.parentNode.payload['row'].style.backgroundColor = ''; } 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; } function menu_position(e,menu,diffX,diffY,items) { var height = (items.length + 1) * 14; var top = e.pageY + diffY; menu.style.left = e.pageX + diffX; if (top + height > window.innerHeight) menu.style.top = window.innerHeight - height; else menu.style.top = top; }