Autocompleter.sanitizeTime = function(elemId)
{
	time = $F(elemId);

	verif = /^([0-2][0-9]):([0-5][0-9])/.test(time);

	if(verif === false)
	{
		timeInfo = time.split(':');

		switch(timeInfo.size())
		{
			case 1 :
				tmpTime = parseInt(time);
				tmpTime = tmpTime+'';
	
				if(tmpTime.blank())
				{
					hour = '12';
					min = '00';
				}
				else
				{
					if(tmpTime.length > 3)
					{
						hour = tmpTime.substr(0, 2);
						min = tmpTime.substr(2, 2);
					}
					else if(tmpTime.length > 2)
					{
						hour = '0'+tmpTime.substr(0, 1);
						min = tmpTime.substr(1, 2);
					}
					else
					{
						hour = tmpTime.substr(0, tmpTime.length);
						if(hour.length < 2) hour = '0' + hour;
						if(hour == '0') hour = '00';
						min = '00';
					}
				}
			break;

			default:
				hour = timeInfo[0];
				min = timeInfo[1];

				hour = parseInt(hour);
				hour = hour+'';

				min = parseInt(min);
				min = min+'';

				hour = (hour.length > 1) ? hour.substr(0, 2) : hour = '0' + hour.substr(0, hour.length);
				min = (min.length > 1) ? min.substr(0, 2) : min = '0' + min.substr(0, 2);
			break;


		}

		verifHour = /^([0-2][0-9])/.test(hour);
		if(verifHour === false) hour = '12';


		verifMin = /^([0-5][0-9])/.test(min);
		if(verifMin === false) min = '00';
	}
	else
	{
		timeInfo = time.substr(0,5).split(':');

		hour = timeInfo[0];
		min = timeInfo[1];
	}

	if(parseInt(hour) > 23) hour = '23';

	time = hour+':'+min;

	$(elemId).value = time;
}

Autocompleter.fullTimeArray =
[
	'00:00','00:05','00:10','00:15','00:20','00:25','00:30','00:35','00:40','00:45','00:50','00:55',
	'01:00','01:05','01:10','01:15','01:20','01:25','01:30','01:35','01:40','01:45','01:50','01:55',
	'02:00','02:05','02:10','02:15','02:20','02:25','02:30','02:35','02:40','02:45','02:50','02:55',
	'03:00','03:05','03:10','03:15','03:20','03:25','03:30','03:35','03:40','03:45','03:50','03:55',
	'04:00','04:05','04:10','04:15','04:20','04:25','04:30','04:35','04:40','04:45','04:50','04:55',
	'05:00','05:05','05:10','05:15','05:20','05:25','05:30','05:35','05:40','05:45','05:50','05:55',
	'06:00','06:05','06:10','06:15','06:20','06:25','06:30','06:35','06:40','06:45','06:50','06:55',
	'07:00','07:05','07:10','07:15','07:20','07:25','07:30','07:35','07:40','07:45','07:50','07:55',
	'08:00','08:05','08:10','08:15','08:20','08:25','08:30','08:35','08:40','08:45','08:50','08:55',
	'09:00','09:05','09:10','09:15','09:20','09:25','09:30','09:35','09:40','09:45','09:50','09:55',
	'10:00','10:05','10:10','10:15','10:20','10:25','10:30','10:35','10:40','10:45','10:50','10:55',
	'11:00','11:05','11:10','11:15','11:20','11:25','11:30','11:35','11:40','11:45','11:50','11:55',
	'12:00','12:05','12:10','12:15','12:20','12:25','12:30','12:35','12:40','12:45','12:50','12:55',
	'13:00','13:05','13:10','13:15','13:20','13:25','13:30','13:35','13:40','13:45','13:50','13:55',
	'14:00','14:05','14:10','14:15','14:20','14:25','14:30','14:35','14:40','14:45','14:50','14:55',
	'15:00','15:05','15:10','15:15','15:20','15:25','15:30','15:35','15:40','15:45','15:50','15:55',
	'16:00','16:05','16:10','16:15','16:20','16:25','16:30','16:35','16:40','16:45','16:50','16:55',
	'17:00','17:05','17:10','17:15','17:20','17:25','17:30','17:35','17:40','17:45','17:50','17:55',
	'18:00','18:05','18:10','18:15','18:20','18:25','18:30','18:35','18:40','18:45','18:50','18:55',
	'19:00','19:05','19:10','19:15','19:20','19:25','19:30','19:35','19:40','19:45','19:50','19:55',
	'20:00','20:05','20:10','20:15','20:20','20:25','20:30','20:35','20:40','20:45','20:50','20:55',
	'21:00','21:05','21:10','21:15','21:20','21:25','21:30','21:35','21:40','21:45','21:50','21:55',
	'22:00','22:05','22:10','22:15','22:20','22:25','22:30','22:35','22:40','22:45','22:50','22:55',
	'23:00','23:05','23:10','23:15','23:20','23:25','23:30','23:35','23:40','23:45','23:50','23:55',
];

Autocompleter.timeArray =
[
	'00:00','00:15','00:30','00:45',
	'01:00','01:15','01:30','01:45',
	'02:00','02:15','02:30','02:45',
	'03:00','03:15','03:30','03:45',
	'04:00','04:15','04:30','04:45',
	'05:00','05:15','05:30','05:45',
	'06:00','06:15','06:30','06:45',
	'07:00','07:15','07:30','07:45',
	'08:00','08:15','08:30','08:45',
	'09:00','09:15','09:30','09:45',
	'10:00','10:15','10:30','10:45',
	'11:00','11:15','11:30','11:45',
	'12:00','12:15','12:30','12:45',
	'13:00','13:15','13:30','13:45',
	'14:00','14:15','14:30','14:45',
	'15:00','15:15','15:30','15:45',
	'16:00','16:15','16:30','16:45',
	'17:00','17:15','17:30','17:45',
	'18:00','18:15','18:30','18:45',
	'19:00','19:15','19:30','19:45',
	'20:00','20:15','20:30','20:45',
	'21:00','21:15','21:30','21:45',
	'22:00','22:15','22:30','22:45',
	'23:00','23:15','23:30','23:45',
];

Autocompleter.Time = Class.create(Autocompleter.Local, {
	initialize: function(element, options)
	{
		$(element).addClassName('ac_time');

		new Insertion.After(element, '<div id="'+element+'_ac_time_result" class="ac_time_result"></div>');

		this.baseInitialize(element, element+'_ac_time_result', options);
		this.options.array = Autocompleter.timeArray;

		this.element.observe('click', function()
		{
			this.activate();
		}.bind(this));

		this.element.observe('change', function()
		{
			Autocompleter.sanitizeTime(this.element);
		}.bind(this));

		this.element.writeAttribute('maxlength', '5');
	},



	setOptions: function(options)
	{
		this.options = Object.extend({
		choices: 288,
		partialSearch: false,
		partialChars: 0,
		ignoreCase: true,
		fullSearch: false,
		selector: function(instance)
		{
			var ret       = []; // Beginning matches
			var partial   = []; // Inside matches
			var entry     = instance.getToken();
			var count     = 0;
		
			for (var i = 0; i < instance.options.array.length && ret.length < instance.options.choices ; i++)
			{
				var elem = instance.options.array[i];
				
				ret.push("<li>" + elem.substr(0, entry.length) + elem.substr(entry.length) + "</li>");
			}
		
			return "<ul>" + ret.join('') + "</ul>";
		}}, options || { });
	},


	onKeyPress : function(event)
	{
		if(this.active)
			switch(event.keyCode) {
			case Event.KEY_TAB:
			case Event.KEY_RETURN:
				//this.selectEntry();
				//Event.stop(event);
			case Event.KEY_ESC:
				this.hide();
				this.active = false;
				Event.stop(event);
				return;
			case Event.KEY_LEFT:
			case Event.KEY_RIGHT:
				return;
			case Event.KEY_UP:
				this.markPrevious();
				this.render();
				Event.stop(event);
				return;
			case Event.KEY_DOWN:
				this.markNext();
				this.render();
				Event.stop(event);
				return;
			}
		else if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || 
			(Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
		
		this.changed = true;
		this.hasFocus = true;
		
		if(this.observer) clearTimeout(this.observer);
		this.observer = setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
	},

	selectEntry: function() 
	{
		this.active = false;
		this.element.setValue('');
		this.updateElement(this.getCurrentEntry());
	}


});
