function getFormElement(name, type) {

	if (document.getElementsByName) {

		var elements = document.getElementsByName(name);

		if (!type) {
			return elements[0];
		}

		for (var e = 0; e < elements.length; e++) {
			if (elements[e].type == type) {
				return elements[e];
			}
		}

		return false;
	}

	for (var f = 0; f < document.forms.length; f++) {
		for (var e = 0; e < document.forms[f].elements.length; e++) {

			if (document.forms[f].elements[e].name != name) {
				continue;
			}

			if (!type) {
				return document.forms[f].elements[e];
			}

			if (document.forms[f].elements[e].type == type) { 
				return document.forms[f].elements[e];
			}
		}
	}
}


//*****************************************************************************
// @author		Jan Marsch <jama@keks.com>
// @version		0.9 @ 2003-09-27 12:00
// @copyright	You might use and distribute this for free as long
//				as you keep this header notice.
//*****************************************************************************

function toCombo(selectName,inputName){

	//****** Constructor ******************************************************
	//*************************************************************************

	//****** find & init Select, input element ******

	if (!selectName || !inputName){
		return false;
	}

	var selectObj = getFormElement(selectName, "select-one");
	var textObj   = getFormElement(inputName, "text");	

	if (selectObj == false || textObj == false) {
		return false;
	}

	textObj.autocomplete = "off";

	var selectedIndex = -1;

	//*********************************
	
	selectObj.onkeydown = function(e) {
		var key = 0;

		if (!e)
			var e = window.event;

		if (e.keyCode) {
			key = e.keyCode;
		} else {
			if(e.which) key = e.which;
		}

		switch (key) {
			case 33:	// PAGE UP
			case 34:	// PAGE DOWN
			case 35:	// END
			case 36:	// HOME
			case 37:	// CURSOR LEFT
			case 39:	// CURSOR RIGHT
			case 27:	// ESCAPE
				return;
			case 38:	// CURSOR UP
			case 40:	// CURSOR DOWN
				{
					textObj.value = selectObj.options[selectObj.selectedIndex].text;
					textObj.select();
					selectedIndex = selectObj.selectedIndex;
					return;
			}
			
			default:
				return;
		}
	}

	//*********************************

	textObj.onkeyup = function(e) {
		var key = 0;

		if (!e) var e = window.event;

		if (e.keyCode) {
			key = e.keyCode;
		} else {
			if(e.which) key = e.which;
		}

		switch (key) {
			case  8:	// BACKSPACE
			case 33:	// PAGE UP
			case 34:	// PAGE DOWN
			case 35:	// END
			case 36:	// HOME
			case 37:	// CURSOR LEFT
			case 38:	// CURSOR UP
			case 39:	// CURSOR RIGHT
			case 40:	// CURSOR DOWN
			case 45:	// INSERT
			case 46:	// DELETE
				return;

			case 27:	// ESCAPE
				//selectMode(true);
				return;

			case  9:	// TAB (?)
			case 13:	// RETURN
				//selectMode();
				return;

			default:
			
				if (!this.setSelectionRange && !this.createTextRange) { 
					return;
				}
				
				for (var i = 0; i < selectObj.options.length; i++) {
					if (selectObj.options[i].text.toLowerCase().indexOf(textObj.value.toLowerCase()) != 0) { 
						continue;
					}

					selectedIndex = i;

					if (textObj.value.length == selectObj.options[i].text.length) { 
						return;
					}
					
					var input  = textObj.value;

					textObj.value = selectObj.options[i].text;

					if (this.setSelectionRange) {
						this.setSelectionRange(input.length, textObj.value.length);
						return;
					}

					var range = this.createTextRange();
					range.moveStart("character", input.length);
					range.select();
					return;
				}
			
				selectedIndex = -1;
				return;
		}
	}

	//*********************************

	textObj.onblur = function(event) {
		selectMode();
	}
	
	//*********************************

	this.selectMode = function(cancel) {

		/*if (!cancel) {
			if (selectedIndex == -1) {
				selectObj.selectedIndex = 0;
			} else {
				selectObj.selectedIndex = selectedIndex;
			}
		}*/

		selectObj.focus();
	}

}