var xmlHttp = false; var nodesIDs = 0; // IE try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { xmlHttp = false; } } // Gecko, KHTML, Opera if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } function addEvent(obj, eventType, f, useCapture) { if (obj.addEventListener) { // Gecko, KHTML, Opera obj.addEventListener(eventType, f, useCapture); return true; } else if (obj.attachEvent) { // IE return obj.attachEvent("on"+eventType, f); } else { alert("Fehler, Event konnte nicht gesetzt werden!"); return false; } } function removeLastSelectNode() { removeSelectNode(nodesIDs-1); } function removeSelectNode(nodeID) { var node = document.getElementById("node_select_"+nodeID); var nodeDiv = document.getElementById("node_div_"+nodeID); if (nodeID == 0) { node.disabled = false; updateSelection(node); document.getElementById("select_cat_back").style.display = "none"; return; } var nodeBefore = document.getElementById("node_select_"+(nodeID-1)); document.getElementById("select_cat").removeChild(nodeDiv); nodeBefore.disabled = false; // IE-Hack nodesIDs--; updateSelection(nodeBefore); if (nodeID == 1) { document.getElementById("select_cat_back").style.display = "none"; } } function updateSelection(elem) { // IE-Hack elem = document.getElementById("node_select_"+(nodesIDs-1)); document.getElementById("cat_id").value = elem.value; document.getElementById("cat_name").innerHTML = ""+elem.options[elem.selectedIndex].text+"<\/span>"; document.getElementById("select_cat_back").style.display = ""; } function updateSubCats() { // IE-Hack myThis = document.getElementById("node_select_"+(nodesIDs-1)); if (myThis.value > 0) { updateSelection(myThis); loadSubCats(myThis.value); } } function loadSubCats(cat_id) { if (xmlHttp) { xmlHttp.open('GET', 'ajax_cat_select.php?cat_id='+cat_id, true); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) { var response = xmlHttp.responseText; var cats = new Array(); var nodeOption; var cat = new Array(); if (response.indexOf("<>" != -1)) { cats = response.split("<>"); if (cats.length > 1) { if (nodesIDs > 0) { document.getElementById("node_select_"+(nodesIDs-1)).disabled = true; } var tab = ""; for (var i = 0; i < nodesIDs; i++) { // :FIXME: // Aus optischen Gründen wurden die Tabs bis // auf weiteres auskommentiert //tab = tab + "-- "; } var nodeDiv = document.createElement("div"); nodeDiv.id = "node_div_"+nodesIDs; nodeDiv.innerHTML += tab; nodeDiv.style.margin = "5px 0px 0px 115px;"; var nodeSelect = document.createElement("select"); nodeSelect.id = "node_select_"+nodesIDs; nodesIDs++; // IE-Hack // Bei einigen IE Versionen kann die folgende Anweisung zu Problemen // führen und daher lasse ich den Hack hier zunächst stehen /*if (nodesIDs > 1) { var prevSelect = document.getElementById("node_select_"+(nodesIDs-2)); nodeSelect.options[0] = new Option(prevSelect.options[prevSelect.selectedIndex].text, -1); nodeSelect.options[0].style.fontWeight = "bold"; nodeSelect.options[0].style.background = "#eeeeee"; nodeSelect.options[0].style.color = "#000000"; } else { nodeSelect.options[0] = new Option("-- Bitte wählen --", -1); }*/ // Non IE nodeSelect.options[0] = new Option("-- Bitte wählen --", -1); nodeSelect.options[0].disabled = true; nodeSelect.options[0].defaultSelected = true; nodeSelect.options[0].selected = true; for (var i = 0; i < cats.length - 1; i++) { cat = cats[i].split("=>"); // IE-Hack nodeSelect.options[nodeSelect.options.length] = new Option(cat[1], cat[0]); } addEvent(nodeSelect, "change", updateSubCats); nodeDiv.appendChild(nodeSelect); document.getElementById('select_cat').appendChild(nodeDiv); } } } } }; xmlHttp.send(null); }