var ATSearchOverlay = new Class({
	/////////////////////////////////////////////////
	initialize: function (id,searchFormID,bodyContainer,base) {
		this.id = id || '';
		this.searchFormID = searchFormID || '';
		this.bodyContainer = bodyContainer || '';
		this.isCreated = false;
		this.isMinimized = true;
		this.url = 'search.cfm';
		this.base = base || 'http://cf7.medien-haus.de/gmaps/'
		this.element = ''; 
		this.effectDuration = 300; // THIS IS SPARTAAAA!!!
	
		$(this.searchFormID).addEvent('keyup',this.searchIt.bindAsEventListener(this));
	},
	/////////////////////////////////////////////////
	searchIt: function (){
		var that = this;
		if(!this.isCreated) 	this.create();
		if(this.isMinimized)	this.maximize();
	
		var myAjax = new Ajax(this.url, {method: 'get',data :'keyword='+$(this.searchFormID).value, update:$('searchresults'),onComplete: function(){
			$('searchresult').setStyle('height',($('searchOverlay').getStyle('height').toInt()-21)+'px');
			var els = $$('.searchresultItems');
			els.each(function(x){
				x.addEvent('click', function(){that.placeObject(this.id)})  
			})
		}});
		myAjax.request();	
	},
	/////////////////////////////////////////////////
	create: function(){
		if(!this.isCreated)
		{
			this.element = new Element('div',{id: this.id}).injectInside($(this.bodyContainer)).setHTML('<div id="dragbar"><strong>Suchergebnisse</strong><img id="searchOverlayClose" src="assets/btt_close.gif" align="right" /><img id="searchOverlayToggle" src="assets/btt_min.gif" align="right" /></div><div id="searchresults"><img src="assets/loading-big.gif" class="searchLoading"/></div>');
			var func = this.addControl.bind(this);
			func();
			this.isCreated = true;
		}
	},
	/////////////////////////////////////////////////
	minimize: function (){
		var that = this;
		if(!this.isMinimized)
		{
			this.isMinimized = true;
			var myEffects = new Fx.Styles(this.id, {duration: this.effectDuration,transition: Fx.Transitions.linear,onComplete:function(){
				$('searchOverlayToggle').setProperty('src','assets/btt_max.gif');
				$('searchOverlayToggle').removeEvents('click').addEvent('click',function(){that.maximize();});
			}});
			myEffects.start({height: '18',width: '160'});
		}
	},
	/////////////////////////////////////////////////
	maximize: function (){
		var that = this;
		if(this.isMinimized)
		{
			this.isMinimized = false;
			var myEffects = new Fx.Styles(this.element, {duration: this.effectDuration,transition: Fx.Transitions.linear,onComplete:function(){
				$('searchOverlayToggle').setProperty('src','assets/btt_min.gif');
				$('searchOverlayToggle').removeEvents('click').addEvent('click',function(){that.minimize();});
			}});
			var width = document.documentElement.clientWidth -20;
			var height  = document.documentElement.clientHeight -76 -20;
			myEffects.start({height: height+'px',width: width+'px'});
		}
	},
	/////////////////////////////////////////////////
	closeIt: function (){
		var that = this;
		var myEffects = new Fx.Styles('searchOverlay', {duration: this.effectDuration,transition: Fx.Transitions.linear,onComplete: function(){
			var func = that.destroy.bind(that);
			func();
		}});
		myEffects.start({'opacity':[0.95,0]});
	},
	/////////////////////////////////////////////////
	addControl: function (){
		var that = this;
		$('searchOverlayClose').addEvent('click',function(){that.closeIt();});
		$('searchOverlayToggle').addEvent('click',function(){that.minimize();});
	},
	/////////////////////////////////////////////////
	destroy: function (){
		if(this.isCreated)
		{
			$(this.id).remove();
			this.isCreated = false;
			this.isMinimized = true;
		}
	},
	/////////////////////////////////////////////////
	placeObject: function(id){
		var url = this.base+'map/object.cfm?objekt_id='+id;
		var option = {};
		
		objektBoxSet.removeOverlay();
		objektBoxSet = new EGeoXml("objektBoxSet", map, url, option);
		objektBoxSet.parse();

		this.minimize();
	}
});
