
var isIE;
var completeTable;
var completeField;
var autorow;
var distFromTop;

function AJAXInteraction(url) {
    this.url = url;
    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        isIE = true;
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
          	
          postProcess(req.responseXML);
        }else{
     	 //alert("1 "+req.parseError);
         }
      }else{
     	 //alert("2 "+req.parseError);
      }
    }

    this.send = function() {
        req.open("GET", url, true);
        req.send(null);
    }
}

function getElementY(element){
	var targetTop = 0;
	if (element.offsetParent) {
		while (element.offsetParent) {
			targetTop += element.offsetTop;
            element = element.offsetParent;
		}
	} else if (element.y) {
		targetTop += element.y;
    }
	return targetTop;
}

function getElementX(element){
	var targetTop = 0;
	element = element.parentElement
	if (element.offsetLeft ) {
	    targetTop = element.offsetLeft;
            //element = element.offsetParent;
		
	} else
		if (element.x) {
		targetTop += element.x;
    }
    
	return targetTop;
}


function init(fromTop) {
    distFromTop =  fromTop;
    completeTable = document.createElement("table");            
    completeTable.style.textColor = '#000000';      
    completeTable.style.width = '150px';  
    completeTable.style.borderColor = '#993300'; 
    completeTable.style.borderCollapse = 'collapse'; 
}

function doCompletion(theElement,theTypology,theMode) {
    
    completeField = document.getElementById(theElement.id);
    ilValore = completeField.value;
    if(ilValore.indexOf("\"")==0)
    	ilValore = ilValore.substring(1);
    if (completeField.value == "") {
        clearTable();
    } else { 
    	
        var url = "";
        
        if(theMode == 'idx')
        	url = "ajaxVoc.jsp?db=" + escape(document.theForm.db.value)+"&value=" + escape(ilValore)+"&key=" + escape(theElement.name)+"&typology=" + escape(theTypology)+"&theHost=<%=theHost%>";
        //alert(url)
        var ajax = new AJAXInteraction(url);
        ajax.send();
    }
}

function postProcess(responseXML) {
    
    clearTable();
   
    var vocKeys = responseXML.getElementsByTagName("keyList")[0];
    
    
    if(vocKeys!=null){
    
     	
    if (vocKeys.childNodes.length > 0) {
        completeTable.setAttribute("bordercolor", "black");
        completeTable.setAttribute("border", "1");
    } else {
        clearTable();
    }
    
    for (loop = 0; loop < vocKeys.childNodes.length; loop++) {
	var vocKey = vocKeys.childNodes[loop];
        var vocKeyVal = vocKey.getElementsByTagName("val")[0];
        var vocKeyId = vocKey.getElementsByTagName("freq")[0];
        appendvocKey(vocKeyVal.childNodes[0].nodeValue, vocKeyId.childNodes[0].nodeValue);
    }
    }else{
   //    alert(vocKeys);
    }
    scriviResponse(completeField);   
}

function clearTable() {
    if (completeTable) {
      completeTable.setAttribute("bordercolor", "white");
      completeTable.setAttribute("border", "0");
      completeTable.style.visible = false;
    
      	for (loop = completeTable.childNodes.length-1; loop >= 0 ; loop--) {
      	  completeTable.removeChild(completeTable.childNodes[loop]);
      	}
    }
}

function appendvocKey(vocKeyVal,vocKeyId) {
    var vocKeyValCell;
    var vocKeyIdCell;
    var row;
    var nameCell;
    var idCell;
    if (isIE) {
        row = completeTable.insertRow(completeTable.rows.length);
        nameCell = row.insertCell(0);
        idCell = row.insertCell(1);
    } else {
        row = document.createElement("tr");
        nameCell = document.createElement("td");
      //  nameCell.setAttribute("nowrap","nowrap");
        idCell = document.createElement("td");
        row.appendChild(nameCell);
        row.appendChild(idCell);
        completeTable.appendChild(row);
    }

    var linkElement = document.createElement("a");
    linkElement.className = "testoMain11";

    linkElement.setAttribute("href", "javascript:returnValue('"+escape(escape(vocKeyVal))+"')");
    
    linkElement.appendChild(document.createTextNode(vocKeyVal));
    nameCell.appendChild(linkElement);
    idCell.className = "testoMain11";
    idCell.appendChild(document.createTextNode(vocKeyId));
}

function scriviResponse(){
   	
   	ilPadre = completeField.parentElement;
   	loSpan = document.createElement("span");      
   	loSpan.className = "suggSpan";
   	
   	ilPadre.appendChild(loSpan);
       	
       	loSpan.style.top = (getElementY(completeField) - distFromTop) + "px"
       	loSpan.style.left = (getElementX(completeField)+2) + "px";
       	loSpan.appendChild(completeTable);
       	
}

function returnValue(valore,campo){
	valore = unescape(unescape(valore));
	if(valore.indexOf(" ")==0)
		valore = '"'+valore+'"'
	completeField.value = valore;
	clearTable();	
}
