formComboLabels = new Array();
formComboValues = new Array();
formComboMax = new Array();

function changeCombo(name,basename) {

        var selectElement = document.getElementById(name + '[key]');
        var inputElement  = document.getElementById(name + '[string]');

        if (selectElement.options[selectElement.selectedIndex].value=='') {
                inputElement.value = "";
                checkCombo(name,basename);
        } else if (selectElement.options[selectElement.selectedIndex].value!=-1) {
                inputElement.value = selectElement.options[selectElement.selectedIndex].text;
        }

}

function checkCombo(name,basename) {

        var selectElement = document.getElementById(name + '[key]');
        var inputElement  = document.getElementById(name + '[string]');

        var i=0;
        var match=false;

        selectElement.innerHTML = "";
        text = inputElement.value.toLowerCase();

        for (var c=0; c < formComboLabels[basename].length; c++) {
        //alert (c);
        //alert (formComboLabels[basename][c]);
        if (text=='') {
                        selectElement.options[i] = new Option(formComboLabels[basename][c],formComboValues[basename][c],false,false);
                        match=true;
                        i++;
                }
                else if (text == formComboLabels[basename][c].substr(0,text.length).toLowerCase()) {
                        selectElement.options[i] = new Option(formComboLabels[basename][c],formComboValues[basename][c],false,false);
                        match=true;
                        i++;
                }
                else if (formComboLabels[basename][c]=='' || formComboValues[basename][c]=='-1') {
                        selectElement.options[i] = new Option(formComboLabels[basename][c],formComboValues[basename][c],false,false);
                        i++;
                }
        }

        for (var t=0;t < selectElement.options.length;t++) {
                if (inputElement.value.toLowerCase() == selectElement.options[t].text.substr(0,inputElement.value.length).toLowerCase()) {
                        selectElement.selectedIndex = t;
                        break;
                }
        }


        if (!match) {
                var already=unbekanntExists(selectElement);
                if (already==null) {
                        selectElement.options[i] = new Option('-- unbekannt --','-1',false,false);
                        selectElement.selectedIndex=i;
                }
                else {
                        selectElement.selectedIndex = already;
                }
        }

}


function addCombo(name,selectedKey,stringValue) {



                var root = document.getElementById("comboRoot_" + name);
                var childCount = root.childNodes.length;

                if (formComboMax[name] > 0 && childCount== formComboMax[name]) return;

                var html="<table><tr>";
                var random = (Math.round(Math.random() *100000000));
                elmt = document.createElement("div");
                elmt.setAttribute("id",random);
                //alert (childCount + ' ' +formComboMax[name]);
                if (childCount == 0 && formComboMax[name] !=1 ) {
                       html+="<td><a href=\"#\" onClick=\"addCombo('"+name+"','','',1,1)\"><img src=\"../images/plus.gif\" border=\"0\"></a></td>";

                } else if (childCount > 0) {
                        html+="<td><a href=\"#\" onClick=\"removeElement('"+random+"')\"><img src=\"../images/minus.gif\" border=\"0\"></a></td>";
                }



                html+="<td><input id=\"" + name + "[" + random + "][string]\" onKeyUp=\"checkCombo('"+name+"["+ random +"]','"+name+"')\" name=\""+ name +"[" + random +"][string]\" size=\"35\" maxlength=\"255\"";
                html+=" value=\""+stringValue+"\">";

                html+=" <select id=\""+ name +"[" + random +"][key]\" onChange=\"changeCombo('"+name+"["+ random +"]','"+name+"')\" name=\""+ name +"[" + random +"][key]\">";
        html+="\n</select></td></tr></table>";
        //alert (html);

        elmt.innerHTML = html;
        root.appendChild(elmt);
        checkCombo(name+"["+ random +"]",name);

        if (selectedKey!='') {
                var selectElement=document.getElementById(name+"["+ random +"][key]");
                var textElement=document.getElementById(name+"["+ random +"][string]");
                for (var t=0;t < selectElement.options.length;t++) {
                                if (selectElement.options[t].value==selectedKey) {
                                        selectElement.selectedIndex = t;
                                        changeCombo(name+"["+ random +"]",name);
                                }
                        }
        }

}

function removeElement(id) {
        it = document.getElementById(id);
        it.parentNode.removeChild(it);
}

function unbekanntExists(element) {
        for (c=0;c < element.options.length;c++) {
                if (element.options[c].value=='-1') return c;
        }
        return null;
}