/*
	AnchorMen autocompleter
*/
(function($){  
 $.fn.autoComplete = function(optionsUrl) {  
		var options = $('<autocomplete />');
		$.get(optionsUrl,function(a,b,c){ // load autoComplete options
			options = a; 
		});
		var ignoreCodes = [8,9,13,16,16,17,18,19,20,27,33,34,35,36,37,38,39,40,45,46,91,92,93];
		var ignoreCode = function(e){
			for(var i=0;i<ignoreCodes.length;i++)
			{
				if(e == ignoreCodes[i])
					return true;
			}
			return false;
		};
    return this.each(function() {
			if(!(this.nodeName == 'INPUT' || this.nodeName == 'input'))
				return;
			if($(this).attr('type') != 'text')
				return;
			$(this).attr('autocomplete','off'); // anders krijgen we ongewilde surgestie box er onder
			$(this).keyup(function(event){
				var code = 0;
				if (event.keyCode) 
					code = event.keyCode;
				else if (event.which) 
					code = event.which;
				if(ignoreCode(code))
				{
					return false; // alle events zijn geldig
				}
				var current = $(this).val();
				if(current == null)
					current = "";
				current = current.toUpperCase();
				var matches = $(options).find('option').filter(function(){ 
					// De xml filteren op nuttige elementen
					return $(this).text().toUpperCase().indexOf(current) == 0;
				});
				if(matches.length > 0) // alleen als er opties zijn
				{
					$(this).val(matches.filter(':first').text());
					var start = current.length;
					var end = $(this).val().length;
					if(end - start > 0 && current.length > 0) // alleen als er iets te selecteren valt.
					{
						if( this.createTextRange ) 
						{
								var selRange = this.createTextRange();
								selRange.collapse(true);
								selRange.moveStart('character', start);
								selRange.moveEnd('character', end);
								selRange.select();
						} else if( this.setSelectionRange ) 
						{
							this.setSelectionRange(start, end);
						} else if( this.selectionStart ) 
						{
							this.selectionStart = start;
							this.selectionEnd = end;
						}
					}
				}
				return false; // geen events afvuren
			});
    });  
 };  
})(jQuery);
