function handleKeys(event)
{
	if( $('#suggestion').css('display') != 'none' )
	{
		if( event.keyCode == 38 ) //'flèche haut'
		{
			oldsuggestionPos = suggestionPos;
			suggestionPos = ( suggestionPos == 0 ) ? maxSuggestion : suggestionPos - 1; 
		}
		else if( event.keyCode == 40 ) //'flèche bas'
		{
			oldsuggestionPos = suggestionPos;
			suggestionPos = ( suggestionPos == maxSuggestion ) ? 0 : suggestionPos + 1;
		}
		else if( event.keyCode == 27 ) //'echap'
			clearSuggestion();

		if( event.keyCode == 38 || event.keyCode == 40 )
		{	
			$('#suggestion > li').eq(oldsuggestionPos).removeClass('suggestHover').addClass('suggest');
			$('#suggestion > li').eq(suggestionPos).removeClass('suggest').addClass('suggestHover');
			return false;
		}
	}
}

function autocompletion(event)
{
	if( event.keyCode == 13 ) //'enter'
	{
		if( $('#suggestion').css('display') != 'none' )
		{
			var li = $('#suggestion > li').eq(suggestionPos);
			addSuggestion( li.html(), li.attr('match') );
		}
		
		var cmds = $('#saisie').val().split('|');
		for( var i = 0; i < cmds.length; ++i )
		{
			if( cmds[i] != '' )
				add(cmds[i]);
		}
	}
	else if( event.keyCode == 27 || event.keyCode == 38 || event.keyCode == 40 )
		return;
	else
	{
		var val = $('#saisie').val().toLowerCase();
		if( val ) 
		{
			var Suggest = ''; maxSuggestion = -1; suggestionPos = 0;
			var Pos = 0, end = false;
			
			if( val == 'cal' )
				end = true;
				
			while( !end  )
			{
				for( var i = 0; i < seriesLow.length && maxSuggestion < 9; ++i )
				{
					if( seriesLow[i].indexOf( val ) == 0 )
					{
						Suggest += '<li class="suggest' + (( maxSuggestion == -1 ) ? 'Hover' : '' ) + '" match="' + val.length + '">'+series[i]+'</li>';
						++maxSuggestion;
					}
				}
				
				if( maxSuggestion == -1 )
				{
					Pos = val.indexOf( ' ' );
					if( Pos != -1 )
					{
						val = val.substr( Pos + 1 );
						if( val )
							continue;
					}
				}
				
				end = true;
			}

			if( Suggest )
			{	
				$('#suggestion').html(Suggest).show().find('li').bind( 'click', function(){ addSuggestion(this.innerHTML+' ', this.getAttribute('match') ); } )
				.bind( 'mouseover', function(){ oldsuggestionPos = suggestionPos; var obj = this; $('#suggestion > li' ).each( function( index ){ if( this == obj ) suggestionPos = index; } ); } );
			}
		}
	}

	if( event.keyCode == 13 || event.keyCode == 45 || !$('#saisie').val() || !Suggest )
		clearSuggestion();
}

function addSuggestion(suggest, match)
{
	document.getElementById( 'saisie' ).value += suggest.substr( match ).toLowerCase();
	$('#saisie').focus();
	clearSuggestion();
}

function clearSuggestion()
{
	suggestionPos = oldsuggestionPos = Match = 0;
	$( '#suggestion' ).hide();
}