var AutocompleterTheisen = Autocompleter.extend({
	hiddenSelects : 0,
	
	update: function () {

		if($('qsResultIntro')) {
			$('qsResultIntro').setText(quicksearchConf.labels.intro);
		}

	    	/* Get data */
	    	this.nav = [];
	    	var up = $(this.update_hidden);
  		var elements = up.getElementsByTagName('li');
			var localThis = this;
							
			var i = 0;
			$$(elements).each(function(el){
				i++;
				var html = localThis.filter(el.innerHTML);
				html = html.replace(new RegExp('(' + localThis.escape($(localThis.input.id).value) + ')', 'i'), '<strong>$1</strong>');
				localThis.nav[i] =  localThis.filter(html);
				el.innerHTML = html;
				el.removeEvents();
				el.addEvent('mousemove', function(e) {
					this.addClass('selected');
				})
				.setProperty('id','li_' + i)
				.addEvent('mouseout', function(e) {
					this.removeClass('selected');
				})
				.addEvent('click', function(e) {
					localThis.input;
					localThis.input.value = localThis.filter(this.innerHTML).replace(/ -\ .*/,'');
					$(localThis.update_hidden).setStyle('display','none');
					localThis.toggleDropDown();
				});
			});
	
			/* hidden onloading*/
			if (this.options.onloading) this.input.removeClass('onloading');
			/* show div */
      		this.appear(this.update_hidden);
      		this.options.onComplete = function(){localThis.fade(localThis.update_hidden)}
	},
	
	move : function (where) {
		this.parent(where);
		var localThis = this;
		localThis.input.value = localThis.input.value.replace(/ - .*/,'');
	},
	
	start: function () {

	    // onloading
		  if (this.options.onloading) this.loading();
      this.selected=false;
			this.count = 0;
	    this.update_f  =  this.options.update;

     if ($(this.update_hidden)) $(this.update_hidden).remove();
	   if ($('list_ul_'+this.input.name)) $('list_ul_'+this.input.name).remove();
     var localThis = this;
     
     var width = this.position.width;
     if(width < 180) {
     	width = 180;
     }
     
  		// show result
			this.div = new Element('div')
			.setProperty('id',this.update_hidden)
      .setStyles({
			'display':'none',
      'position':'absolute',
      'top':this.position.bottom,
      'left':this.position.left,
      'width': width+'px'})
      .addEvent('mouseout',function(e){
				localThis.input.removeEvents('blur');
			}.bind(this))
      .addEvent('mouseleave',function(e){
				localThis.input.addEvent('blur', function(event) {
				  if ($(localThis.update_hidden)) localThis.fade(localThis.update_hidden);
				}.bind(this))
			})
  		.injectInside(document.body);
	     
      this.options.update = this.div.id;
	 		if (this.Timer) this.Timer = $clear(this.Timer);

  		/* go go */
  	  this.Timer = (function(){localThis.post_data()}).delay(150);

	},
	
	post_data: function () {
			var addParams = '';
			if($('productGroup')){
				var pg = $('productGroup').getProperty('value')
				if(pg.length > 0){
					addParams += '&pg='+pg;
				}
			}else{
				addParams += '&pg=-1';
			}
			
			if($('manufacturer')){
				var mf = $('manufacturer').getProperty('value')
				if(mf.length > 0){
					addParams += '&mf='+mf;
				}
			}else{
				addParams += '&mf=-1';
			}
			
			//console.log('addParams '+addParams)
		var searchStr = $(this.input.id).value;
		//alert(searchStr);
	    var url = encodeURI(this.url + "?id="+searchStr+addParams);
      var localThis = this;
      this.fade($(this.update_hidden));
  		//if (this.options.onComplete) this.options.onComplete = $clear(this.options.onComplete);
  	  this.options.onComplete = function(){localThis.update()};
  	  new Ajax(url, this.options).request();     
	},
	
	
	appear: function (div) {
		  try
			{
				$(div).setStyles({
					'display':'block',
					'visibility':'hidden'
					}).effect('opacity').start(0,1);
			} catch(e)	{
				$(div).setStyle('display','block');
			}
		//	this.toggleDropDown();
	},
	
	
	fade: function (div) {
			$(div).setStyle('display','none');
	//		this.toggleDropDown();
	},
	appear: function (div) {
		  try
			{
				$(div).setStyles({
					'display':'block',
					'visibility':'hidden'
					}).effect('opacity').start(0,1);
			} catch(e)	{
				$(div).setStyle('display','block');
			}
			this.toggleDropDown();
	},
	
	
	fade: function (div) {
			$(div).setStyle('display','none');
	},
	
	
	toggleDropDown : function(){
		if(window.ie6){
			var sels = $$('.hideIe6');
			if(sels[0]){
				if(sels[0].getStyle('visibility') == 'hidden'){
					sels.each(function(el){
						el.setStyle('visibility','visible');
						this.hiddenSelects = 1;
					}.bind(this));
				}else{
					sels.each(function(el){
						el.setStyle('visibility','hidden');
						this.hiddenSelects = 0;
					}.bind(this));
				}
			}
		}
	}
	
	
});