// JavaScript Document
function display_liste(calqt, calql) {	// Affiche le calque de la liste
	calql.style.visibility = 'visible';
	calql.style.top = calqt.style.top;
	//calql.style.top = calqt.style.top + 40;
	calql.style.left = calqt.style.left;
}
function hide_liste(calqt, calql) {	// Affiche ou masque le calque de la liste suivant son dernier état
	if (calql.style.visibility == 'visible') {
		calql.style.visibility = 'hidden';
	}
	else {
		display_liste(calqt, calql);
	}
}
function hide_liste2(calqt, calql) {	// Affiche ou masque le calque de la liste suivant son dernier état
	if (calql.style.visibility == 'visible') {
		calql.style.visibility = 'hidden';
	}
}

function display_down(keyc, listd, calqt, calql) {	// Affiche la liste si la touche "keyc" est pressée
	if (event.keyCode==keyc) {
		display_liste(calqt, calql);
	}
	if ((event.keyCode==40) && (event.keyCode==keyc)) {
		listd.focus();
	}
}
function enter_list(textb, listd, calql) {	// appelle getValue si la touche "Enter" est pressée dans la liste
	if (event.keyCode==13) {
		getValue(textb, listd, calql);
	}
}
function liste_lostfocus(textb, listd, calql) { // Masque le calque si le texte et la liste n'ont pas le focus
	if ( (self.document.activeElement.name != textb) && (self.document.activeElement.name != listd) ) {
		calql.style.visibility = 'hidden';
	}
}
function getValue(textb,listd, calql) {		// Affecte la valeur de la liste choisie dans la zone de texte
	textb.value=listd.item(listd.selectedIndex).text;
	// textb.value=listd.item(listd.selectedIndex).value; si on veut la valeur dans le code et pas dans la liste
	calql.style.visibility = 'hidden';
	textb.focus();
	textb.select();
}
function list_size(liste) {
	t=0;
	for(i=0; i<liste.length; i++) {
		if(liste.options[i].value.length > t) {
			t=liste.options[i].value.length;
		}
	}
	list_size=t;
}
function text_exist(textb, listd) { // regarde si le début existe
	if (textb.value != "") {
		for (i=0; i<listd.length; i++) {
			if (textb.value.toLowerCase() == listd[i].text.substring(0, textb.value.length).toLowerCase()) {
				return i;
			} 
			else {
				if (listd[i].text > textb.value.substring(0, listd[i].text.length)) {
					return -2;
				}
			}
		}
	}
	return -1;
}
function disp_exist(textb, listd, calqt, calql) { // regarde si existe et affiche le calque de la liste
	temp=text_exist(textb, listd);
	if (temp != -1) {
		display_liste(calqt, calql);
	}
	else {
		calql.style.visibility = 'hidden';
	}
	return temp;
}
function text_match(textb, listd) { // regarde si le texte existe en entier
	if (textb.value != "") {
		for (i=0; i<listd.length; i++) {
			if (textb.value.toLowerCase() == listd[i].text.toLowerCase()) {
				return i;
			}
		}
	}
	return -1;
}
function insert_new(textb, listd) {	// insére avant ou en fin
	if (textb.value != "") {
		if (text_match(textb, listd) == -1) {
			pos=listd.length;
			for (i=0; i<listd.length; i++) {
				if (listd[i].text>textb.value) {
					pos=i; 
					i=listd.length;
				}
			}
			listd.length++;
			for (i=listd.length-1; i>pos; i--) {
				listd[i].text=listd[i-1].text;
			}
			listd[pos].text=textb.value;
			alert("new entry added !");
		}
		else {
			alert("Entry already exists !");
		}
	}
}
