function getRequest() { var req; if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else { req = new ActiveXObject("Microsoft.XMLHTTP"); } return req; } function initMenu() { this.menu = document.getElementById("mainmenu"); this.submenus = this.menu.getElementsByTagName("div"); this.oneSmOnly = 3; this.collapseMenu = function(submenu) { var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight; var moveBy = Math.round(4 * submenu.getElementsByTagName("a").length); var mainInstance = this; var intId = setInterval(function() { var curHeight = submenu.offsetHeight; var newHeight = curHeight - moveBy; if(newHeight > minHeight) { submenu.style.height = newHeight + "px"; } else { clearInterval(intId); submenu.style.height = ""; submenu.className = "collapsed"; mainInstance.memorize(); } }, 30); }; this.collapseOthers = function(submenu) { if(!multimenu) { for(var i = 0; i < this.submenus.length; i++) { if(this.submenus[i] != submenu && this.submenus[i].className != "collapsed") { this.collapseMenu(this.submenus[i]); } } } }; this.expandMenu = function(submenu) { var fullHeight = submenu.getElementsByTagName("span")[0].offsetHeight; var links = submenu.getElementsByTagName("a"); for(var i = 0; i < links.length; i++) { fullHeight += links[i].offsetHeight; } var moveBy = Math.round(4 * links.length); var mainInstance = this; var intId = setInterval(function() { var curHeight = submenu.offsetHeight; var newHeight = curHeight + moveBy; if(newHeight < fullHeight) { submenu.style.height = newHeight + "px"; } else { clearInterval(intId); submenu.style.height= ""; submenu.className = "navbox"; mainInstance.memorize(); } }, 30); this.collapseOthers(submenu); }; this.init = function() { var mainInstance = this; for(var i = 0; i < this.submenus.length; i++) { this.submenus[i].getElementsByTagName("span")[0].onclick = function() { if(this.parentNode.className == "collapsed") { mainInstance.expandMenu(this.parentNode); } else { mainInstance.collapseMenu(this.parentNode); } }; } var links = this.menu.getElementsByTagName("a"); links[0].className = "active"; for(var i = 0; i < links.length; i++) { if(links[i].href == document.location.href) { links[0].className = ""; links[i].className = "active"; break; } } var regex = new RegExp("kagera_" + encodeURIComponent("mainmenu") + "=([01]+)"); var match = regex.exec(document.cookie); if(match) { var states = match[1].split(""); for(var i = 0; i < states.length; i++) { this.submenus[i].className = (states[i] == 0 ? "collapsed" : "navbox"); } } else if(!multimenu) { this.collapseOthers(this.submenus[0]); } }; this.memorize = function() { var states = new Array(); for(var i = 0; i < this.submenus.length; i++) { states.push(this.submenus[i].className == "collapsed" ? 0 : 1); var d = new Date(); d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); document.cookie = "kagera_" + encodeURIComponent("mainmenu") + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/"; } }; } function initTips() { var help = document.getElementById("help") if(help) { var abbrs = document.getElementsByTagName("abbr"); var tips = help.getElementsByTagName("div"); var mouseX, mouseY; document.onmousemove = function(e) { mouseX = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); mouseY = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); }; for(var i = 0; i < abbrs.length; i++) { abbrs[i].onclick = function() { for(var a = 0; a < tips.length; a++) { if("s" + tips[a].id == this.id) { tips[a].style.left = mouseX + "px"; tips[a].style.top = (mouseY - (tips[a].offsetHeight + 3)) + "px"; tips[a].style.visibility = "visible"; break; } } }; abbrs[i].onmouseout = function() { for(var a = 0; a < tips.length; a++) { if("s" + tips[a].id == this.id) { tips[a].style.visibility = "hidden"; break; } } }; } } } function logout() { window.location.href="index.sh?option=logout"; } function reboot(ask) { var boot = true; if(ask) { var answer = confirm(sysmsg[6]); if(!answer) { boot = false; } } if(boot) { toggleMsg(sysmsg[5]); statefunc = function() { window.location.href="index.sh?option=overview"; } testcon = function() { runRequest("GET", document.location.href, "&refresh=1", statefunc, false); } runCommand("reboot", statefunc, true); setInterval("testcon()", 5000); } } function refreshData(func) { statefunc = function(req) { document.getElementById("content").innerHTML = req.responseText; var target = document.getElementById("content"); var scripts = target.getElementsByTagName("script"); for (var i = 0; i < scripts.length; i++) { eval(scripts[i].innerHTML); } if(typeof func == "function") { func(); } } runRequest("GET", document.location.href, "&refresh=1", statefunc, false); } function runCommand(params, statefunc, noreload) { runRequest("POST", document.location.href + "&refresh=1&runcommand=1", "commands=" + params, statefunc, noreload); } function runRequest(method, url, params, statefunc, noreload) { var req = getRequest(); if(req) { req.onreadystatechange = function() { if(req.readyState == 4 && req.status == 200) { if(req.responseText != "") { statefunc(req); } else if(!noreload) { location.reload(true); } } } if(method == "POST") { req.open("POST", url, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(params); } else { req.open("GET", url + params, true); req.send(); } } return req; } function switchView(outid, swval) { sw = document.getElementById(outid); for(var i = 0; i < sw.children.length; i++) { if(sw.children[i].id == swval) { sw.children[i].style.display = "block"; } else { sw.children[i].style.display = "none"; } } } function toggleMsg(msg) { dimbox = document.getElementById("dim"); msgbox = document.getElementById("msg"); if(msg) { document.body.style.overflow = "hidden"; msgbox.innerHTML = msgtxt + "  " + msg; dimbox.style.display = "inline"; msgbox.style.display = "inline"; } else { msgbox.style.display = "none"; dimbox.style.display = "none"; document.body.style.overflow = "auto"; } } window.onload = function() { msgtxt = document.getElementById("msg").innerHTML; mainmenu = new initMenu(); mainmenu.init(); initTips(); if(typeof initModule == "function") { initModule(); } }