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);
}