var posicion = -1;
var posicion_ant;
var posicion_max;
var isIE = false;
var div;
var req;
var req_url = "/buscatags?q=";
var TAGS = [];
var global_target;
var request;
var timeout;
function LISTTAGSautocompleteLoadXMLDoc() {
url = request
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = LISTTAGSautocompleteProcessReqChange;
req.open("GET", url, true);
req.send(null);
} else if (window.ActiveXObject) {
isIE = true;
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = LISTTAGSautocompleteProcessReqChange;
req.open("GET", url, true);
req.send();
}
}
}
function LISTTAGSautocompleteProcessReqChange() {
if (req.readyState == 4) {
if (req.status == 200) {
LISTTAGSautocompleteClearTopicList();
LISTTAGSautocompleteBuildTopicList();
} else {
alert("There was a problem retrieving the XML data:\n" + req.statusText);
}
}
}
function LISTTAGSautocompleteClearTopicList() {
if ( div ) {
while (div.childNodes[0]) {
div.removeChild(div.childNodes[0])
}
}
}
function LISTTAGSautocompleteBuildTopicList() {
var data = req.responseText;
eval("_hashAnswer = " + data);
var items = _hashAnswer.answer;
for (var i = 0; i < items.length; i++) {
LISTTAGSautocompleteAddOption(items[i], items[i], i);
}
posicion_max=items.length - 1;
posicion=-1;
posicion_ant=100;
}
function LISTTAGSautocompleteLigth() {
if (posicion <= -1) {
if (div.childNodes[posicion_ant]) {
div.childNodes[posicion_ant].className = "desplegable1";
}
posicion_ant = 100;
posicion = -1;
return false;
}
if (div.childNodes[posicion]) {
if (div.childNodes[posicion_ant]) {
div.childNodes[posicion_ant].className = "desplegable1";
}
div.childNodes[posicion].className = "desplegable2";
posicion_ant = posicion;
}
}
function LISTTAGSautocompleteKeyPress(evt) {
evt = (evt) ? evt : ((window.event) ? window.event : null);
if (evt.keyCode==13||evt.keyCode==3) {
return false;
}
}
function LISTTAGSautocompleteKeyUp(evt) {
evt = (evt) ? evt : ((window.event) ? window.event : null);
var target = evt.target ? evt.target : window.event.srcElement;
global_target = target;
if ( timeout )
clearTimeout(timeout);
if (evt.keyCode==40) {
posicion++;
if ( posicion > posicion_max )
posicion = posicion_max;
LISTTAGSautocompleteLigth();
return false;
} else if (evt.keyCode==38) {
posicion--;
LISTTAGSautocompleteLigth();
return false;
} else if (evt.keyCode==37||evt.keyCode==39) {
return false;
} else if (evt.keyCode==13||evt.keyCode==3) {
if (div.childNodes[posicion].childNodes[0])
target.value=div.childNodes[posicion].childNodes[0].nick;
LISTTAGSautocompleteClearTopicList();
if ( div )
if ( div.parentNode )
div.parentNode.removeChild(div);
ant=0;
if (target.value)
window.location = "http://www.soitu.es/soitu/tags/portadilla/" + escape(target.value);
return false;
} else {
if (target.value==0) {
LISTTAGSautocompleteInitialize(target);
return false;
}
if (target.value.length < 3) {
return false;
}
try {
request = req_url + target.value;
timeout = setTimeout("LISTTAGSautocompleteLoadXMLDoc()",500);
}
catch(e) {
var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
return;
}
}
}
function LISTTAGSautocompleteInitialize(_input) {
var text_val = eval(_input);
text_val.focus();
text_val.select();
if (div) {
if (div.parentNode) {
div.parentNode.removeChild(div);
}
}
div = document.createElement("DIV");
div.className = "desplegable";
div.style.visibility="hidden";
div.id="test";
div.style.zIndex="102";
div.style.position="absolute";
div.style.top=(LISTTAGSautocompleteCalcPosition(_input,"offsetTop")+_input.offsetHeight+1)+"px";
div.style.left=(LISTTAGSautocompleteCalcPosition(_input,"offsetLeft"))+"px";
div.style.width=_input.offsetWidth-2+"px";
_input.onkeyup=LISTTAGSautocompleteKeyUp;
_input.onkeypress=LISTTAGSautocompleteKeyPress;
document.body.appendChild(div);
}
function LISTTAGSautocompleteAddOption(value, nick, position){
var temp = document.createElement("DIV");
var temp2 = document.createElement("SPAN");
temp2.nick = nick
temp2.innerHTML = value;
temp.position = position;
temp.appendChild(temp2);
temp.onclick = function(position) {
if (div.childNodes[this.position].childNodes[0])
global_target.value=div.childNodes[this.position].childNodes[0].nick;
LISTTAGSautocompleteClearTopicList();
if ( div )
if ( div.parentNode )
div.parentNode.removeChild(div);
ant=0;
window.location = "http://www.soitu.es/soitu/tags/portadilla/" + escape(global_target.value);
}
temp.onmouseover = function(position) {
posicion = this.position;
LISTTAGSautocompleteLigth();
}
div.appendChild(temp);
div.style.visibility="visible";
}
function LISTTAGSautocompleteCalcPosition(r,attr) {
var kb=0;
while (r) {
kb+=r[attr];
r=r.offsetParent
}
return kb
}

