	var outp;				// div for suggestion list
	var oldins;
	var posi = -1;			// position on suggestion list
	var words = new Array();// matching words
	var input;				// user input
	var key;				// last key input
	var enterSel = 1;		// enter was pressed in smart search field
	var scrollCnt = 0;		// scroll distance multiplier
	var selFieldFocus = 0;	// focus on smart search field
	var counLang = 0;		// country/language selected
	var selCounLangFocus = 0; // focus on country/language selection
	
	var suggestions = new Array(); // flexible word list
	

	// set suggestion list visible
	function setVisible(visi)
	{
		var x = document.getElementById("shadow");
		var t = document.getElementsByName("C008")[0];
		x.style.position = 'absolute';
		x.style.top =  (findPosY(t)+3)+"px";
		x.style.left = (findPosX(t)+2)+"px";
		x.style.visibility = visi;
	}

	// init page scripts
	function init()
	{
		outp = document.getElementById("output");
		window.setInterval("lookAt()", 300);
		setVisible("hidden");
		
		document.onkeydown = keyHandler;
		
		// document.onmousedown = docmousedown;
		
		selFieldFocus = 0;
		enterSel = 1;
		scrollCnt = 0;
		
		// determine selected country/language - "back button"
		var selCoLa = document.getElementById("C997");
		selCL(selCoLa);
	}

	function findPosX(obj)
	{
		var curleft = 0;
		if (obj.offsetParent){
			while (obj.offsetParent){
				curleft += obj.offsetLeft;
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;
	}

	function findPosY(obj)
	{
		var curtop = 0;
		if (obj.offsetParent){
			curtop += obj.offsetHeight;
			while (obj.offsetParent){
				curtop += obj.offsetTop;
				obj = obj.offsetParent;
			}
		}
		else if (obj.y){
			curtop += obj.y;
			curtop += obj.height;
		}
		return curtop;
	}

	// create suggestion list	
	function lookAt()
	{
		var ins = document.getElementsByName("C008")[0].value;
		if (oldins == ins) return;		
		else if (enterSel != 0) return;
		else if (selFieldFocus != 1) return;
		
		// NEW else if (posi > -1);
		else if (ins.length > 0)
		{
			words = getWord(ins);
			if (words.length > 0)
			{
				clearOutput();
				for (var i=0;i < words.length; ++i) addWord (words[i]);
				
//				if (words.length < 10) // smaller div for less than 10 words
//				{
//					var hei = words.length * 17 + 4;
//					outp.style.height = hei;
//				}
//				else 
//				{
//					outp.style.height = 177;
//				}
				
				outp.scrollTop = 0;
				
				setVisible("visible");
				input = document.getElementsByName("C008")[0].value;
			}
			else
			{
				setVisible("hidden");
				posi = -1;
			}
		}
		else{
			setVisible("hidden");
			posi = -1;
		}
		oldins = ins;
	}
	
	// add word to suggestion list
	function addWord(word)
	{
		var sp = document.createElement("div");
		sp.appendChild(document.createTextNode(word));
		sp.onmouseover = mouseHandler;
		sp.onmouseout = mouseHandlerOut;
		//sp.onclick = mouseDown;
		sp.onmousedown = mouseDown;
		outp.appendChild(sp);	
	}
	
	// clear suggestion list
	function clearOutput()
	{
		while (outp.hasChildNodes()){
			noten=outp.firstChild;
			outp.removeChild(noten);
		}
		posi = -1;
	}
	
	// find matching words for suggestion list
	function getWord(beginning)
	{
		var words = new Array();
		for (var i=0;i < suggestions.length; ++i)
		{
			var j = -1;
			var correct = 1;
			while (correct == 1 && ++j < beginning.length)
			{
//				if (suggestions[i].charAt(j) != beginning.charAt(j).toLowerCase())
				if ((suggestions[i].charAt(j) != beginning.charAt(j).toLowerCase()) &&
					(suggestions[i].charAt(j) != beginning.charAt(j).toUpperCase())) correct = 0;
			}
			if (correct == 1) words[words.length] = suggestions[i];
			
//			if (words.length >= 10) // restrict size
//			{
//				break;
//			}
		}
		return words;
	}
	
	function setColor (_posi, _color, _forg)
	{
		outp.childNodes[_posi].style.background = _color;
		outp.childNodes[_posi].style.color = _forg;
	}
	
	// get key pressed
	function keygetter(event)
	{
		if (!event && window.event) event = window.event;
		if (event) key = event.keyCode;
		else key = event.which;
	}
	
	// process key input
	function keyHandler(event)
	{
		keygetter(event);

		if (document.getElementById("shadow").style.visibility == "visible")
		{
			var textfield = document.getElementsByName("C008")[0];
			if (key == 40) // key down
			{
				if (words.length > 0 && posi < words.length-1)
				{
					if (posi >= 0)
					{
						setColor(posi, "#fff", "black");
					}
					else
					{
						input = textfield.value;
					}
					posi++;
					setColor(posi, "#F5F5F5", "black");
					//textfield.value = outp.childNodes[posi].firstChild.nodeValue;
									
					 // scroll down
					/*var rnd = posi / 10;
					rnd = Math.floor(rnd);
					scrollCnt = rnd;										
					outp.scrollTop = scrollCnt * 160;
					*/
					if (posi >= 10)
					{
						outp.scrollTop = (posi-9) * 16;
					}
					else
					{
						outp.scrollTop = 0;
					}
				}
			}
			else if (key == 38) //Key up
			{
				if (words.length > 0 && posi >= 0)
				{
					if (posi >=1)
					{				
						setColor(posi, "#fff", "black");
						posi--;		
						setColor(posi, "#F5F5F5", "black");
						//textfield.value = outp.childNodes[posi].firstChild.nodeValue;
						
						 // scroll up						
						/*var rnd = posi / 10;
						rnd = Math.floor(rnd);
						scrollCnt = rnd;										
						outp.scrollTop = scrollCnt * 160;
						*/
						if (posi >= 10)
						{
							outp.scrollTop = posi * 16;
						}
						else
						{
							outp.scrollTop = 0;
						}			
					}
					else
					{
						setColor(posi, "#fff", "black");
						textfield.value = input;
						textfield.focus();
						posi--;
					}
				}
			}
			else if (key == 27) // Esc
			{
				textfield.value = input;
				setVisible("hidden");
				posi = -1;
				oldins = input;
			}
			else if (key == 8) // Backspace
			{
				posi = -1;
				oldins=-1;
			}
			else if (key == 13) // Enter
			{
				if (words.length > 0 && posi <= words.length-1 && posi >= 0)
				{
					textfield.value = outp.childNodes[posi].firstChild.nodeValue;
					setVisible("hidden");
					posi = -1;

					if (enterSel != 1) // no enter pressed yet
					{
						enterSel = 1;
						return false; // break event bubbling
					}
				}
				else
				{
					setVisible("hidden");
					
					if (enterSel != 1)
					{
						enterSel = 1;
						
						// NEW
						posi = -1;
						
						return false;
					}
				}
			}
			else // any char
			{
				posi=-1;
				oldins=-1;
				
				// NEW
				enterSel=0;
			}
		}
		else // shadow invisible
		{	
			if (selFieldFocus == 1)
			{
				if (key == 8 || 
					key == 16 ||
					key == 32 ||
					(key >= 45 && key <= 90) || 
					(key >= 96 && key <= 111) ||
					(key >= 186 && key <= 222)) // input chars
				{
					enterSel = 0;
				}
				else if(key == 13)
				{
					enterSel = 1;
				}
			}
		}
	}
	
	// process mouse input
	var mouseHandler=function()
	{
		if (posi > -1)
		{
			setColor (posi, "white", "black");
		}
	
		this.style.background = "#F5F5F5";
		this.style.color= "black";
		
		var found = -1;
		var j;
		for (j = 0; j < words.length; j++)
		{
			if (words[j] == this.firstChild.nodeValue) // set position on item under mouse
			{
				found = 1;
				break;
			}
		}
		if (found = 1)
		{
			posi = j;
		}			
	}
	
	var mouseHandlerOut=function()
	{
		//this.style.background = "white";
		//this.style.color= "black";
		//posi = 0;
	}
	
	// process mouse click
	var mouseDown=function()
	{
		document.getElementsByName("C008")[0].value = this.firstChild.nodeValue;
		setVisible("hidden");
		posi = -1;
		oldins = this.firstChild.nodeValue;
	}

	// process enter key
    function checkEnter(event)
	{
		keygetter(event);
		if(key == 13 && selFieldFocus != 1)
		{ 	
			selFieldFocus = 0;
			startSearch();
		}
		else if (key == 13 && selFieldFocus == 1 && enterSel == 1)
		{
			selFieldFocus = 0;
			enterSel = 0;
			startSearch();
		}
	} 	

	// suggestion list leaves focus
	function leaveFocus()
	{
		setVisible("hidden");
		selFieldFocus = 0;		
	}
	
	// suggestion list enters focus
	function enterFocus()
	{
		selFieldFocus = 1;
		
    	if (counLang == 0) // no country/language selected
    	{
    		alert(popupMsg);
    		setTopFocus();
    	}		
	}
    
    // set focus to top input
    function setTopFocus()
	{
		document.search.C997.focus();
	} 
    
    // start search
    function startSearch()
    {
    	if (counLang == 1) // country/language selected
    	{
    		self.document.search.submit();
    	}
    	else
    	{
    		alert(popupMsg);
    		setTopFocus();
    	}
  	}
  	
  	// set country/language selected/deselected
	function selCL(sel)
	{
		if (sel.options[0].selected)
		{
			counLang = 0;
			suggestions.length = 0;
		}
		else
		{
			counLang = 1;
			
			var iC008 = document.getElementsByName("C008")[0];
			var vC008 = iC008.value;
			iC008.value = "";
			
			//build current suggestion list
			var indx = sel.selectedIndex;
			var selValue = sel.options[indx].value;
		    //alert(selValue);
			
			var indexOfFirstPlus = selValue.indexOf("+");
			var selLangu = selValue.substring(indexOfFirstPlus-1, indexOfFirstPlus);
			//alert(selLangu);
			
			var indexOfSecondSemi = selValue.indexOf(";", indexOfFirstPlus+1);
			var indexOfSecondPlus = selValue.indexOf("+", indexOfFirstPlus+1);
			var selGenvar = selValue.substring(indexOfSecondSemi+1, indexOfSecondPlus);
			//alert(selGenvar);
			
			var tmpLangu;
			var tmpGenvar;
			var tmpNamprod;
			suggestions.length = 0;			
			for (i = 0; i < compProdNams.length; i++)
			{
				tmpGenvar = compProdNams[i]["genvar"];
				tmpLangu = compProdNams[i]["langu"];
				tmpNamprod = compProdNams[i]["namprod"];
				if (tmpGenvar.match(selGenvar) && tmpLangu.match(selLangu))
				{
					//alert("push" + tmpNamprod)
					suggestions.push(tmpNamprod);
					if (vC008 == tmpNamprod)
					{
						iC008.value = tmpNamprod;
					}
				}
			}
		}
	}

	function checkCounLang()
	{
		if (counLang == 0)
		{
			alert(popupMsg);
			setTopFocus();
		}
	}

	// process mouse click on document
	var docmousedown=function()
	{
		setVisible("hidden");
		posi = -1;
	}
