    var outp;
	var oldins;
	var posi = -1;
	var words = new Array();
	var input;
	var key;
    var suggestions;
    var formatSuggestions = new Array();
	function setVisible(visi){
		var x = document.getElementById("shadow");
		var t = document.getElementsByName("s")[0];
		x.style.position = 'relative';
		x.style.left = '6px';
		x.style.visibility = visi;
		x.style.top = '12px';
		
	}

	function init(names){
		
      suggestions = names.split(",");
	
		outp = document.getElementById("output");
		window.setInterval("lookAt()", 100);
		setVisible("hidden");
		document.onkeydown = keygetter; //needed for Opera...
		document.onkeyup = keyHandler;
	}

	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;
	}
	
	function lookAt(){
	  var nwords = new Array(); 
		var ins = document.getElementsByName("s")[0].value;
		if (oldins == ins) return;
		else if (posi > -1);
		else if (ins.length > 0){
			nwords = getWord(ins);
			//	 alert("words.. "+nwords.length);
			if (nwords.length > 0){
				//	 alert("words.. "+nwords);
				clearOutput();
				for (var i=0;i < nwords.length; ++i)
				 addWord (nwords[i]);
				setVisible("visible");
				input = document.getElementsByName("s")[0].value;
				
			}
			else{
				setVisible("hidden");
				posi = -1;
			}
		}
		else{
			setVisible("hidden");
			posi = -1;
		}
		oldins = ins;
	}
	
	function addWord(word){
		var sp = document.createElement("div");
		sp.appendChild(document.createTextNode(word));
		sp.style.background = "white";
		sp.style.color= "black";
		sp.style.borderRight = "1px solid #cccccc";
		   sp.style.borderLeft = "1px solid #cccccc";
		    sp.style.borderBottom = "1px solid #cccccc";
			
		  sp.style.color= "#818181";
		   sp.style.textAlign= "left";
		  sp.style.padding= "4px";
		  sp.style.margin= "-2px";
		  sp.style.width= "201px";
		  sp.style.fontSize= "12px";
		  sp.style.textTransform= "lowercase";

		sp.onmouseover = mouseHandler;  
		sp.onmouseout = mouseHandlerOut; 
		sp.onclick = mouseClick;
		outp.appendChild(sp);
		
		 
	}
	
	function clearOutput(){
		while (outp.hasChildNodes()){
			noten=outp.firstChild;
			outp.removeChild(noten);
		}
		posi = -1;
	}

	function getWord(beginning){
	
		words = new Array();
		finalwords = new Array();
		var tempsuggestions;
		var matchChar;
		beginning = beginning.toUpperCase();
			for (var z=0;z < suggestions.length; ++z){
			
       	     formatSuggestions[z] = suggestions[z].toUpperCase();
         	}
         		/*for (var m=0;m < formatSuggestions.length; ++m){
       	     	 if (formatSuggestions[m].charAt(0) == beginning.charAt(0)){
       	          matchChar = true;
       	          break;
       	          }
                 } */
          //alert(formatSuggestions.length);
		for (var i=0;i < formatSuggestions.length; ++i){
			var j = -1;
			var correct = 1;
		    var temValue = formatSuggestions[i];
			/*//work for more than one word and char not matches
			//alert("first .. "+temValue +" compare.."+beginning.charAt(0));

				 if ((temValue.charAt(0) != beginning.charAt(0)))
			  {
			  
					var tempSplitData = temValue.split(' ');
					// alert("inside if.."+tempSplitData.length);
					if(tempSplitData.length  > 1){
				
							  for(var k=0; k<tempSplitData.length; k++){
						  	    var b = tempSplitData[k].charAt(0);
						  	   //  alert("inside if.b."+b);
						  	     //alert("inside if.."+tempSplitData[k]);
						  	     	      if(b  == beginning){
						  	     //  document.write(" temValue \n"+temValue);
						  	    // alert("inside if.."+tempSplitData[k]);
						        // for(var z=0; z<tempSplitData.length; z++){
						         // var c = tempSplitData[z].charAt(0);
						           //alert("inside if.."+tempSplitData[z]);
						           words[words.length] = temValue;
						           //  getSWord(temValue.charAt(0),words);
						           //  matchChar = true;
						           //  }
						          //  break;
						            }
					          }
					    }
				   //end 
				  }
				  else{*/
				            //alert("inside main else ");
							while (correct == 1 && ++j < beginning.length){
								if (temValue.charAt(j) != beginning.charAt(j)) 

correct = 0;
				
							}
							if (correct == 1){
					
											      words[words.length] 

= temValue;
						
											      }
							    /* }
				          
			          //end of else*/
		   }
		finalwords =  unique(words);
		//  alert("final words length "+finalwords.length);
		
		return finalwords;
	}
		
	function unique(a) {
      var r = new Array();
	  var resLength;
	  if(a.length > 10){
		resLength = 10;
	  }else{
		resLength = a.length;		  
	  }
       o:for(var i = 0, n = resLength; i < n; i++) {
      for(var x = 0, y = r.length; x < y; x++)
         if(r[x]==a[i]) continue o;
      r[r.length] = a[i];
   }
   return r;
}
	function setColor (_posi, _color, _forg){
		outp.childNodes[_posi].style.background = _color;
		outp.childNodes[_posi].style.color = _forg;
	}
	
	function keygetter(event){
		if (!event && window.event) event = window.event;
		if (event) key = event.keyCode;
		else key = event.which;
	}
		
	function keyHandler(event){
		if (document.getElementById("shadow").style.visibility == "visible"){
		var textfield = document.getElementsByName("s")[0];
		if (key == 40){ //Key down
			//alert (words);
			if (words.length > 0 && posi !=  words.length-1){
						if (posi >=0) setColor(posi, "#fff", "#818181");
				else input = textfield.value;
				setColor(++posi, "#1eb1f7", "white");
				textfield.value = outp.childNodes[posi].firstChild.nodeValue;
			}
		}
		else if (key == 38){ //Key up
			if (words.length > 0 && posi >= 0){
				if (posi >=1){
					setColor(posi, "#fff", "#818181");
					setColor(--posi, "#1eb1f7", "white");
					textfield.value = outp.childNodes[posi].firstChild.nodeValue;
				}
				else{
					setColor(posi, "#fff", "#818181");
					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;
		}
		}
	}
	
	var mouseHandler=function(){
	
	
		this.style.background = "#1eb1f7";
		this.style.color= "white";
	}
	
	var mouseHandlerOut=function(){
		this.style.background = "white";
		this.style.color= "#818181";
	}
	
	var mouseClick=function(){
		document.getElementsByName("s")[0].value = this.firstChild.nodeValue;
		setVisible("hidden");
		posi = -1;
		oldins = this.firstChild.nodeValue;
		document.getElementsByTagName("input").value = "";
	}
	 function clearfields(){
    document.getElementsByName("s")[0].value = "";
    }
