var activeObject = '';
var prevActiveObject = '';
var activeIndex = 0;
var fieldId = '';
var blocked = 1;

function pause(millis) {

  var date = new Date();
  var curDate = null;

  do { curDate = new Date(); } while(curDate-date < millis);

}

function GetXmlHttpObject() {

  var xmlHttp = null;

  try {

    xmlHttp = new XMLHttpRequest();

  }catch (e) {

    try {

      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

    }catch (e) {

      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    }

  }

  return xmlHttp;

}

function stateChanged() {

    if (xmlHttp.readyState==4){

      document.getElementById(fieldId+"Tip").style.display = '';
      document.getElementById(fieldId+"Tip").innerHTML = xmlHttp.responseText;

    }

}

function displayTip(fieldName, lang) {

  if ( blocked == 0 ) {

    fieldContent = document.getElementById(fieldName).value;

    fieldId = fieldName;

    xmlHttp = GetXmlHttpObject();

    if(xmlHttp == null) {

        alert ("AJAX is not supported in Your browser. Use one of: Opera, Firefox, Internet Explorer.");
        return;

    }

    var url = "ajax/ajaxTip.php";
    var lang = document.getElementById('lang').value != undefined ? document.getElementById('lang').value : '';
    url = url + "?fieldName=" + fieldId + "&fieldContent=" + fieldContent + "&lang="+ lang +"&limit=10";
    xmlHttp.onreadystatechange = stateChanged;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);

  }

}

function handleButtons(e) {

   var newActiveIndex = activeIndex + 1;

   if( e != undefined ) var keyPressed = e.keyCode ? e.keyCode : e.charCode;
   else var keyPressed = window.event.keyCode;

   if( keyPressed==38 ) {

     if( activeIndex > 1 ){

       activeIndex = activeIndex-1;
       activeObject = 'pos_'+fieldId+'_'+activeIndex;

       checkActive();
       blocked = 1;

       return false;

     } else {

       disableTip();
       return false;

     }

   } else if( keyPressed==40 ) {

     if( document.getElementById('pos_'+fieldId+'_'+newActiveIndex) != undefined ) activeIndex = activeIndex+1;
     else activeIndex = 1;

     activeObject = 'pos_'+fieldId+'_'+activeIndex;

     checkActive();
     blocked = 1;

     return false;

   } else if ( keyPressed==13 ) {

     disableTip();
     return false;

   } else {

     blocked = 0;
     resetList();

   }

}

function checkActive(){

  if( prevActiveObject != '' && document.getElementById(prevActiveObject) != undefined ) document.getElementById(prevActiveObject).style.background='#fff';
  if( activeObject != '' && document.getElementById(activeObject) != undefined ) {

    document.getElementById(activeObject).style.background='#ffff66';
    document.getElementById(fieldId).value = document.getElementById(activeObject).title;
    prevActiveObject = activeObject;

  }

}

function resetList() {

  activeIndex = 0;
  activeObject = '';
  checkActive();

}

function disableTip() {

  resetList();
  blocked = 1;
  if( document.getElementById("list_"+fieldId) != undefined ) document.getElementById("list_"+fieldId).style.display="none";
  document.getElementById(fieldId+"Tip").style.display = 'none';

}
