var Lookup = new Class({

	initialize: function(tb, results, lookuptype, itemClick){
		if(!tb)
			return;

		//see if there is a clear button
		if($('clear_' + tb.id))
			$('clear_' + tb.id).addEvent('click', function() {
				$(tb.id + 'Results').set('text', '');
			});

		tb.resultFocus = false;
		
		tb.itemClick = itemClick;
		tb.results = results;
		tb.lookuptype = lookuptype;
		
		
		tb.onkeyup = this.keyup.pass(tb, this);
		tb.onblur = this.blur.pass(tb, this);
		tb.onfocus = this.focus.pass(tb, this);
	},
	
	focus: function(tb) {
		tb.resultFocus = false;
	},
	
	blur: function(tb) {
		if(tb.resultFocus)
			return;
			 
		if(tb.box)
			tb.box.dispose();
		tb.box = null;
		tb.value = ''
	},

	keyup: function(tb){
		if(!tb.box)
		{
			//lookup div
			var d = new Element('div');
			d.set('class', 'lookupbox');
			d.setStyle('z-index', 100);
			d.inject(tb, 'after');
			d.addEvent('mousedown', function() {
				tb.resultFocus = true;
			});
			tb.box = d;
		}
		
		//get the results
		var s = tb.value;
		
		if(s.length == 0)
		{
			tb.box.dispose();
			tb.box = null;				
		}
		
		new Request.HTML({
			url: 'lookups/' + tb.lookuptype + '.aspx?id=' + tb.id + '&s=' + s,
			update: tb.box,
			onSuccess: function() {
					//setup the items to be clickable
				tb.box.getElements('li').addEvent('click', function() {
					if(tb.itemClick)
					{
						tb.itemClick(this.getFirst('input').value);
					}
					else if(tb.results)
					{
						tb.results.set('html', this.get('html'));
						tb.box.dispose();
						tb.box = null;
						tb.value = ''						
					}
				});
			}
		}).send();
	},
});
