Código HTML:
<script type="text/javascript">
var suggestions = new Array("Alan Grosz | Velasco 127 11C | 4857-2470",
"Alejandro Grosz | Humahuaca 3947 6-E ",
"J.A VAN EEDEN | 22 BRILL ST | SASOLBURG | 0828155533 | [email][email protected][/email]",
"B-3-4",
"B-5-6");
var outp;
var oldins;
var posi = -1;
var words = new Array();
var input;
var key;
function setVisible(visi){
var x = document.getElementById("shadow");
var t = document.getElementsByName("text")[0];
x.style.position = 'absolute';
x.style.top = (findPosY(t)+3)+"px";
x.style.left = (findPosX(t)+2)+"px";
x.style.visibility = visi;
}
function init(){
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 ins = document.getElementsByName("text")[0].value;
var max = 0;
var div = document.getElementById("output");
if (oldins == ins) return;
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[i].length > max)
max = words[i].length
}
if((max * 6.6) > 400)
max = 400
else
max = max * 6.6;
div.style.width = max;
setVisible("visible");
input = document.getElementsByName("text")[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.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){
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)).toUpperCase()) &&
(suggestions[i].charAt(j) != (beginning.charAt(j)).toLowerCase()) )
correct = 0;
}
if (correct == 1) words[words.length] = suggestions[i];
}
return words;
}
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("text")[0];
if (key == 40){ //Key down
if (words.length > 0 && posi < words.length-1){
if (posi >=0) setColor(posi, "orange", "black");
else input = textfield.value;
setColor(++posi, "blue", "white");
textfield.value = outp.childNodes[posi].firstChild.nodeValue;
llenar(outp.childNodes[posi].firstChild.nodeValue);
}
}
else if (key == 38){ //Key up
if (words.length > 0 && posi >= 0){
if (posi >=1){
setColor(posi, "orange", "black");
setColor(--posi, "blue", "white");
textfield.value = outp.childNodes[posi].firstChild.nodeValue;
llenar(outp.childNodes[posi].firstChild.nodeValue);
}
else{
setColor(posi, "orange", "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){ // Backspace
setVisible("hidden");
posi = -1;
}
}
}
function llenar(ss){
var a = document.getElementsByName("a")[0];
var b = document.getElementsByName("b")[0];
var c = document.getElementsByName("c")[0];
var arr;
var dd;
arr = ss.split(" | ");
a.value = arr[0];
b.value = arr[1];
c.value = arr[2];
if(c.value == 'undefined')
c.value = '';
}
var mouseHandler=function(){
for (var i=0;i<words.length;++i)
setColor (i, "orange", "black");
this.style.background = "blue";
this.style.color= "white";
}
var mouseHandlerOut=function(){
this.style.background = "orange";
this.style.color= "black";
}
var mouseClick=function(){
document.getElementsByName("text")[0].value = this.firstChild.nodeValue;
llenar(this.firstChild.nodeValue);
setVisible("hidden");
posi = -1;
oldins = this.firstChild.nodeValue;
}
</script>
<STYLE TYPE="text/css">
.output
{
font-family:Arial;
font-size: 10pt;
color:black;
padding-left: 3px;
padding-top: 3px;
border: 1px solid #000000;
width: 100px;
background: orange;
}
.shadow
{
position:relative;
top: 2px;
left: 2px;
background: #555;
}
.shadow div{
position:relative;
top: -2px;
left: -2px;
background: orange;
}
</STYLE>
<form name="test" id="test"><input type="hidden" name="PHPSESSID" />
<input type="text" name="text" autocomplete="off">
<input type="text" name="a" ><br>
<input type="text" name="b" ><br>
<input type="text" name="c" >
</form>
<div class="shadow" id="shadow">
<div class="output" id="output">
</div>
</div>
<script type="text/javascript">
init();
</script>