var reqNav = null; var reqNav1 = null; var reqList = null; function newXMLHttpRequest() { var xmlreq; // Create XMLHttpRequest object in non-Microsoft browsers if (window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else { if (window.ActiveXObject) { try { // Try to create XMLHttpRequest in later versions // of Internet Explorer xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { // Failed to create required ActiveXObject try { // Try version supported by older versions // of Internet Explorer xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { // Unable to create an XMLHttpRequest by any means xmlreq = false; } } } } return xmlreq; } /* * Returns a function that waits for the specified XMLHttpRequest * to complete, then passes it XML response to the given handler function. * req - The XMLHttpRequest whose state is changing * responseXmlHandler - Function to pass the XML response to */ function getReadyStateHandler(req, responseXmlHandler) { // Return an anonymous function that listens to the XMLHttpRequest instance return function () { // If the request's status is "complete" if (req.readyState == 4) { // Check that we received a successful response from the server if (req.status == 200) { // Pass the XML payload of the response to the handler function. responseXmlHandler(req.responseXML); } else { // An HTTP problem has occurred alert("HTTP error " + req.status + ": " + req.statusText); } } }; } function showNavandList(navid) { showNav(navid); showList(navid); } function showList(navid) { reqList = newXMLHttpRequest(); reqList.onreadystatechange = getReadyStateHandler(reqList, updateList); reqList.open("POST", "index.do", true); reqList.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); reqList.send("action=showList&navid=" + navid); } function showNav(navid) { reqNav = newXMLHttpRequest(); reqNav.onreadystatechange = getReadyStateHandler(reqNav, updateNav); reqNav.open("POST", "index.do", true); reqNav.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); reqNav.send("action=showNav&navid=" + navid); } function updateNav() { var itemMenu = document.getElementById("menu"); itemMenu.innerHTML = ""; var ulElement = document.createElement("UL"); ulElement.innerHTML = reqNav.responseText; itemMenu.appendChild(ulElement); } function updateList() { var body = document.getElementById("body"); body.innerHTML = ""; body.innerHTML = reqList.responseText; } function showHide(id) { showList(id); var el = document.getElementById(id); var bExpand = true; var aTag = el.getElementsByTagName("A"); if (aTag[0].name == "-") { bExpand = false; aTag[0].setAttribute("name", "+"); } else { bExpand = true; aTag[0].setAttribute("name", "-"); } var subs = el.lastChild; if (bExpand) { subs.style.display = "block"; } else { subs.style.display = "none"; } } var gid = null; function getSubTree(navid) { showList(navid); gid = navid; reqNav = newXMLHttpRequest(); reqNav.onreadystatechange = getReadyStateHandler(reqNav, parseSubTree); reqNav.open("POST", "index.do", true); reqNav.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); reqNav.send("action=showNav&navid=" + navid); } function parseSubTree() { var el = document.getElementById(gid); var ulElmt = document.createElement("UL"); ulElmt.innerHTML = reqNav.responseText; el.appendChild(ulElmt); var aTag = el.getElementsByTagName("A"); aTag[0].setAttribute("name", "-"); aTag[0].setAttribute("onclick", new Function("showHide('" + gid + "')")); }