ActiveDropDown = function (divElement,inputElement,SearchURL) {
	var obj = this;
	this.open = false;
	this.active_line = -1;
 	this.URL = SearchURL;
	this.div_box = divElement;
	this.entries = new Array();

	this.linked_to = inputElement;
	this.linked_to.setAttribute('autocomplete','off'); // Autocomplete Funktion für das Feld abschalten 
  this.linked_to.onmousedown = function() { if (obj.open) obj.Hide(); else obj.Show(); }
  this.linked_to.onfocus = function() { obj.Show(); }
  this.linked_to.onblur = function() { obj.Hide(); }
  this.linked_to.onkeydown = function(aEvent) {
	  var myEvent = aEvent ? aEvent : window.event; 
    if (obj.open) {
      // Nur dann auf Tastendrücke reagieren, wenn die Linie über die Einträge auch bewegt werden kann
      if (obj.active_line < obj.entries.length-1 && myEvent.keyCode == 40 || obj.active_line > 0 && myEvent.keyCode == 38) {
        if (obj.active_line >=0 && obj.active_line < obj.entries.length) obj.entries[obj.active_line].className='list';
        if (myEvent.keyCode == 40) {
          obj.active_line++;
          if (obj.div_box.scrollTop + obj.div_box.offsetHeight < obj.entries[obj.active_line].offsetTop + obj.entries[obj.active_line].offsetHeight) {
            obj.div_box.scrollTop = obj.entries[obj.active_line].offsetTop + obj.entries[obj.active_line].offsetHeight - obj.div_box.offsetHeight + 4;
          }
        }
        if (myEvent.keyCode == 38) {
          obj.active_line--;
          if (obj.div_box.scrollTop > obj.entries[obj.active_line].offsetTop) {
            obj.div_box.scrollTop = obj.entries[obj.active_line].offsetTop - 4;
          }
        }
			  if (obj.active_line >=0 && obj.active_line < obj.entries.length) obj.entries[obj.active_line].className='list hover';
			  return false;
			} 
			if (myEvent.keyCode == 13) {
        if (obj.active_line >=0 && obj.active_line < obj.entries.length) {
				  obj.entries[obj.active_line].onmousedown();
          return false;
				}
      }
			if (myEvent.keyCode == 27) {
				obj.Hide();
				return false;
			}
    }
  }
  this.linked_to.onkeyup = function(aEvent) {
	var myEvent = aEvent ? aEvent : window.event; 
  if (this.value.length == 0) { obj.Hide(); return; }
  if (myEvent.keyCode < 46 && myEvent.keyCode != 8 ) return;
/*  var caretpos = getSelectionStart(this);
		var wort_start = this.value.lastIndexOf(" ",caretpos-1)+1;
		var wort_ende = this.value.indexOf(" ",caretpos);
	  if (wort_ende == -1) wort_ende=this.value.length;
	  var lookup_wort = this.value.substring(wort_start,wort_ende);
*/
		var lookup_wort = this.value;
		var such_art=$('f').getInputs('radio', 'suche_art').find(function(r){return r.checked});
		//alert(such_art.value);
		//this.suche=such_art.value;
    if (lookup_wort.length > 0 && obj.XMLHTTP) {
      obj.XMLHTTP.open('GET', obj.URL + escape(lookup_wort) + '&suche_art=' + such_art.value , true);
			//alert( obj.URL + escape(lookup_wort)+ '&suche_art=' +such_art.value );
 	    obj.XMLHTTP.onreadystatechange = function () { 
        if (obj.XMLHTTP.readyState == 4) { obj.Update(); }
			};
      obj.XMLHTTP.send(null);
    }
  }
  
	// richtige Positionierung des dropdown-Teils
// 	var offsetObj = this.linked_to;
// 	var left = offsetObj.offsetLeft + 1;
// 	var top = offsetObj.offsetTop + offsetObj.offsetHeight + 1;
//  	while(offsetObj.offsetParent!=null && offsetObj.offsetParent != document.body && offsetObj.offsetParent != document.documentElement) {
//     left += offsetObj.offsetParent.offsetLeft;
//   	top  += offsetObj.offsetParent.offsetTop;
//   	offsetObj=offsetObj.offsetParent;
//  	}
//	this.div_box.style.top = top - 110 + 'px'; // Komische Korrektur der Berechnung für BILA-Layout
//	this.div_box.style.left= left - 140 + 'px'; // Komische Korrektur der Berechnung für BILA-Layout	

//  this.div_box.style.top  = this.linked_to.offsetTop+this.linked_to.offsetHeight+this.linked_to.offsetParent.offsetTop+this.linked_to.offsetParent.offsetParent.offsetTop+this.linked_to.offsetParent.offsetParent.offsetParent.offsetTop + 1 + 'px';
//  this.div_box.style.top  = this.linked_to.offsetTop+this.linked_to.offsetHeight+this.linked_to.offsetParent.offsetTop+ 1 + 'px';
//  this.div_box.style.left = this.linked_to.offsetLeft+this.linked_to.offsetParent.offsetLeft+this.linked_to.offsetParent.offsetParent.offsetLeft+this.linked_to.offsetParent.offsetParent.offsetParent.offsetLeft + 1 +'px';
//  this.div_box.style.left = this.linked_to.offsetLeft+this.linked_to.offsetParent.offsetLeft+ 1 +'px';
  
  var req = null;
  if (typeof XMLHttpRequest != 'undefined') { // für Mozilla etc.
    req = new XMLHttpRequest(); 
  } else {  // für den IE
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
	      req = null;
      }
    }
  }
	if (req == null) {
	  alert('Kann das entsprechende Object nicht nutzen!');
	} else {
	  this.XMLHTTP = req;
	}
}

ActiveDropDown.prototype.Show = function( ) {
  if (this.entries.length > 0) {
		this.div_box.style.display='block';
		this.open = true;
	}
}

ActiveDropDown.prototype.Hide = function( value ) {
  this.div_box.style.display='none';
	this.open = false;
  if (this.active_line >=0 && this.active_line < this.entries.length) this.entries[this.active_line].className='list';
	this.active_line = -1;
}

ActiveDropDown.prototype.Update = function () {
	var obj = this;
  var xml = this.XMLHTTP.responseXML;
  var rec = xml.getElementsByTagName('records')[0];
  if (rec) {
    var result = rec.childNodes;
		// Hier sollte man vorerst alle Kind-Elemente von vorhin loeschen
		while (this.entries.length) {  var tmpNode=this.entries.pop(); this.div_box.removeChild(tmpNode); }
	  this.active_line = -1;
		var element_count=0;
    for(i=0;i<result.length;i++) {
		  if ( result[i].nodeName != 'record' ) continue;
			var text = document.createTextNode( result[i].getAttribute('term') );
 	    var line = document.createElement("p");
			line.appendChild(text);
			line.className='list';
	    line.onmousedown = function() { add_value(this.firstChild.data,obj.linked_to); obj.Hide(); }
	    line.my_number = element_count;
	    line.onmousemove = function() { 
	      if (obj.active_line != this.my_number) {
          if (obj.active_line >=0 && obj.active_line < obj.entries.length) obj.entries[obj.active_line].className='list';
	        obj.active_line = this.my_number;
	        this.className ='list hover'; 
	      } else if (this.className == 'list') {
	        this.className ='list hover'; 
				}
	    }
			//Event.observe(line, 'click', function() {this.onclick='alert('hallo');'});
	    //line.onclick =function() {this.onclick='alert('hallo');';}
	    line.onmouseout = function() { this.className ='list'; }
	    this.entries[element_count] = line;
			this.div_box.appendChild(line);
			element_count++;
    }

		if (this.entries.length > 0) this.Show(); else this.Hide();
  }  
}

function add_value(value,dst) {
/*  var caretpos = getSelectionStart(dst);
	var wort_start = dst.value.lastIndexOf(" ",caretpos-1)+1;
	var wort_ende = dst.value.indexOf(" ",caretpos);
	if (wort_ende == -1) wort_ende=dst.value.length;
  var lookup_wort = dst.value.substring(wort_start,wort_ende);
*/
	dst.value = value;
	$('f').submit();

/*	if ( value.toUpperCase().indexOf(lookup_wort.toUpperCase()) == 0 ) {
		dst.value = dst.value.substring(0,wort_start) + value + dst.value.substring(wort_ende);
	}
*/	
}

function getSelectionStart(obj) {
  if (obj.createTextRange) {
    var r = document.selection.createRange().duplicate();
    r.moveEnd('character', obj.value.length);
    if (r.text == '') return obj.value.length; else return obj.value.lastIndexOf(r.text);
  } else {
    return obj.selectionStart;
  }	
}
