var activeObject = '';
var prevActiveObject = '';
var activeIndex = 0;
var fieldId = '';
var fieldName = '';
var originalContent = '';
var blocked = 1;
var fKeys = [38,40,13,27];

function displayTip(field,script,lang) {

  fieldId = field;
  fieldName = document.getElementById(fieldId).name;

  if ( blocked == 0 ) {

	  fieldContent = document.getElementById(fieldId).value;
	  originalContent = fieldContent;
		if( fieldContent!='' ) {
			$.get(script+"Tip.php", { fieldName: fieldName, fieldContent: fieldContent, lang: lang },
				function(data) {

					document.getElementById(fieldName+"Tip").style.display = '';
					document.getElementById(fieldName+"Tip").innerHTML = data;

				}

			);
		}

	}

}

function handleButtons(e) {
	if( e != undefined ) var keyPressed = e.keyCode ? e.keyCode : e.charCode;
	else var keyPressed = window.event.keyCode;

	if (!fieldName) return;

	blocked = 1;

	if( document.getElementById(fieldName+"Tip").style.display != '' ) {
		if( keyPressed==40 ) {
			document.getElementById(fieldName+"Tip").style.display = '';
		}
	}

	if( document.getElementById(fieldName+"Tip").style.display == '' ) {

		if( keyPressed==38 ) { // UP

			if( activeIndex > 1 ){
				activeIndex = activeIndex-1;
				activeObject = 'pos_'+fieldName+'_'+activeIndex;
				checkActive('key');
				return false;
			} else {
				disableTip();
				return false;
			}

		} else if( keyPressed==40 ) { // Down
			var newActiveIndex = activeIndex + 1;

			if( document.getElementById('pos_'+fieldName+'_'+newActiveIndex) != undefined ) {
				activeIndex = newActiveIndex;
			} else {
				activeIndex = 1;
			}

			activeObject = 'pos_'+fieldName+'_'+activeIndex;
			checkActive('key');
			blocked = 1;
			return false;

		} else if ( keyPressed==13 ) { // Enter

			disableTip();
			return false;

		} else if ( keyPressed==27 ) { // Esc

			document.getElementById(fieldId).value = originalContent;
			disableTip();
			return false;

		} else {

			blocked = 0;
			resetList();

		}
	} else if (fKeys.indexOf(keyPressed) == -1) {
		blocked = 0;
	}

}

function checkActive(source){

	if (source=='mouse') {
		document.getElementById(fieldId).focus();
	}

	if ( prevActiveObject != '' && document.getElementById(prevActiveObject) != undefined ) {
		document.getElementById(prevActiveObject).className='';
	}

	if ( activeObject != '' && document.getElementById(activeObject) != undefined ) {

		document.getElementById(activeObject).className='active';
		if( source=='key' ) {
			document.getElementById(fieldId).value = document.getElementById(activeObject).title;
		}
		prevActiveObject = activeObject;

	}

}

function resetList() {

	activeIndex = 0;
	activeObject = '';
	checkActive();

}

function disableTip(source) {

	if( source=='mouse' ) {
		document.getElementById(fieldId).value = document.getElementById(activeObject).title;
	}

	resetList();

	blocked = 1;

	if( document.getElementById("list_"+fieldName) != undefined ) {
		document.getElementById("list_"+fieldName).style.display="none";
	}

	document.getElementById(fieldName+"Tip").style.display = 'none';

	if( source=='mouse' ) {
		document.getElementById(fieldId).focus();
	}

	return false;

}

function blurTip() {

	if( document.getElementById(activeObject)!=undefined && document.getElementById(fieldId)!=undefined )document.getElementById(fieldId).value = document.getElementById(activeObject).title;
	if( document.getElementById("list_"+fieldName) != undefined ) document.getElementById("list_"+fieldName).style.display="none";
	document.getElementById(fieldName+"Tip").style.display = 'none';

}

