window.onload = InitSearch;
//Suche initialisieren
var search = Object();
function InitSearch()
{
	if(document.getElementById('suchbox'))
	{
		search = new Suche();
		search.textbox.focus();
	}
}
function Suche()
{
	this.textbox = document.getElementById('suchbox');
	this.preview = document.getElementById('suchvorschau');
	this.erweiterteSuche = document.getElementById('erweiterteSuche');
	this.suchergebnis = document.getElementById('suchergebnis');
	this.button = document.getElementById('suchbutton');
	this.suche = document.getElementById('suche');
	this.canvas = document.getElementById('canvas');
	this.textbox.onkeyup = function(event)
	{
		if(search.CheckKey(event))
		{
			search.MoveSearch(event);
			if(event.keyCode == 13)
			{
				delete this.helpRequest;
				delete this.searchRequest;
			}
			else
			{
				search.GenerateHelp();
			}
		}
	}
	this.textbox.onkeydown = function(event)
	{
		if(event.keyCode == 27)
		{
			document.location.reload();
			return false;
		}
		else
		{
			return search.KeyFunctions(event);
		}
	}
	this.textbox.onfocus = function(event)
	{
		search.selectSelected = false;
	}
}
Suche.prototype.CheckKey = function(event)
{
	if((event.keyCode > 40 && event.keyCode < 133 && event.keyCode != 114 && event.keyCode != 116) || event.keyCode == 8)
	{
		if(event.keyCode == 91 || event.ctrlKey)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return false;
	}
}
Suche.prototype.KeyFunctions = function(event)
{
	if(event.keyCode == 40)
	{
		if(document.activeElement.parentNode.id != "suchvorschaupanel")
		{
			search.selectSelected = true;
			search.select.focus();
		}
		return false;
	}
}
Suche.prototype.MoveSearch = function(event)
{
	if(search.suche.parentNode.id != "canvas" && (event.keyCode > 40 && event.keyCode < 133 && event.keyCode != 114 && event.keyCode != 116))
	{
		search.HideAside();
//		search.HideContentBody();
		search.canvas.appendChild(search.suche);
		if(search.erweiterteSuche)
		{
			search.erweiterteSuche.style.display = "none";
		}
		if(search.checkBrowserName('MSIE'))
		{
			window.setTimeout("search.textbox.focus()", 100);  
			//this.selectionStart
			//search.textbox.value = search.textbox.value;
			search.textbox.selectionStart = 1;
			search.textbox.selectionEnd = 1;
			
		}
		else
		{
			search.textbox.focus();
		}
	}
}
Suche.prototype.checkBrowserName = function(name)
{  
	var agent = navigator.userAgent.toLowerCase();  
	if (agent.indexOf(name.toLowerCase())>-1) 
	{  
		return true;  
	}  
	return false;  
}  
Suche.prototype.HideAside = function ()
{
	if(document.URL.indexOf("search=") == -1 && !search.aside)
	{
		search.aside = document.getElementById("aside");
		search.aside.style.opacity = "0.2";
		search.asidePanel = document.createElement("div");
		search.aside.appendChild(search.asidePanel);	
		var style = document.createAttribute("style");
		style.nodeValue = 'opacity: 0.05; background-color: white; position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; cursor: pointer;';
		search.asidePanel.setAttributeNode(style);
		search.aside.onclick = function (event){search.aside.removeChild(search.asidePanel); search.aside.style.opacity = 1;};
	}
}
Suche.prototype.HideContentBody = function ()
{
	if(document.URL.indexOf("search=") == -1 && !search.contentBody)
	{
		search.contentBody = document.getElementById("contentbody");
		search.contentBody.style.opacity = "0.2";
		search.contentBodyPanel = document.createElement("div");
		search.contentBody.appendChild(search.contentBodyPanel);	
		var style = document.createAttribute("style");
		style.nodeValue = 'opacity: 0.05; background-color: white; position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; cursor: pointer;';
		search.contentBodyPanel.setAttributeNode(style);
		search.contentBody.onclick = function (event){search.contentBody.removeChild(search.contentBodyPanel); search.contentBody.style.opacity = 1;};
	}
}
Suche.prototype.GenerateHelp = function()
{
	if(window.XMLHttpRequest)
	{
		//Mozilla, Safari, ...
		this.helpRequest = new XMLHttpRequest();
		if(this.helpRequest.overrideMimeType)
		{
			this.helpRequest.overrideMimeType('text/plain');
		}
	}
	else
	{
		this.helpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	this.helpRequest.onreadystatechange = function() 
	{
		if(this.readyState == 4)
		{
//			search.preview.innerHTML = this.responseText;
//			search.BindSelect();
//			if(search.selectSelected)
//			{
//				search.preview.firstChild.focus();
//			}
			if(search.textbox.value == "" && search.searchCache != "")
			{
				search.suchergebnis.innerHTML = search.searchCache;
				cmx_search_and_execute(this.responseText);
			}
			else
			{
				search.ShowResult();
			}
		}
	}
	var query = 'cmx/ordner/system/Suche/Suche.php?search=' + this.textbox.value;
	query += '&cmx_zielbereichsid=' + search.suchergebnis.id;
	this.helpRequest.open('GET', query + '&help=1', true);
	this.helpRequest.send(null);
}
Suche.prototype.BindSelect = function()
{
	search.select = search.preview.firstChild;
	if(search.select)
	{
		search.select.value = search.select.firstChild.value;
		search.select.onkeyup = function(event)
		{
			search.textbox.value = search.select.value;
			if(event.keyCode == 13)
			{
				event.target.form.submit();
			}
		}
		search.select.onkeydown = function(event)
		{
			if((event.keyCode > 40 && event.keyCode < 133 && event.keyCode != 114 && event.keyCode != 116))
			{
				search.textbox.focus();
			}
			else if(event.keyCode == 38 && search.select.value == search.select.firstChild.value)
			{
				search.textbox.focus();
			}
		}
	}
}
Suche.prototype.ShowResult = function()
{
	if(window.XMLHttpRequest)
	{
		//Mozilla, Safari, ...
		this.searchRequest = new XMLHttpRequest();
		if(this.searchRequest.overrideMimeType)
		{
			this.searchRequest.overrideMimeType('text/plain');
		}
	}
	else
	{
		this.searchRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	this.searchRequest.onreadystatechange = function() 
	{
		if(this.readyState == 4)
		{
			if(!search.searchCache && search.suchergebnis.innerHTML != "undefined")
			{
				search.searchCache = search.suchergebnis.innerHTML;
			}
			search.suchergebnis.innerHTML = this.responseText;
			cmx_search_and_execute(this.responseText);
		}
	}
	var query = 'cmx/ordner/system/Suche/Suche.php?search=' + this.textbox.value;
	query += '&cmx_zielbereichsid=' + search.suchergebnis.id;
	this.searchRequest.open('GET', query, true);
	this.searchRequest.send(null);
}
