//Globales Positionvariable
var pos = new Object();
var evt = window.event;
pos.left = 0;
pos.top = 0;

var div_element = new Array();

function element_add(id, art)
{
	var index = div_element.length;
	div_element[index] = new Object();
	
	div_element[index].id	= id;	//ID des Objektes
	div_element[index].art	= art;	//Art des Objektes
}

function show_contextmenu(evt)
{
	eval(evt.target.scope);
}

function key(evt) 
{ 
	if(!evt) evt = window.event; 

	if(event.keyCode == 27)
		disable_field('katalog');
}

document.onkeyup 	= key;

function mouse_pos_move(evt) 
{ 
	if(!evt) evt = window.event; 
	pos.left = evt.clientX;
	pos.top = evt.clientY; 
	var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ?  
	window.document.documentElement : window.document.body || null; 

	if (body) 
	{ 
		pos.left += body.scrollLeft; 
		pos.top += body.scrollTop; 
	} 
	move_tooltip();
}

document.onmousemove 	= mouse_pos_move;

function elemente_click_check()
{
	for(var i = 0; i < div_element.length; i++)
		menue_ausblenden(div_element[i].id, div_element[i].art);
}

function menue_ausblenden(element, art)
{
	//Element
	//Kann nur für position:absolute oder fixed verwendet werden
	if(document.getElementById(element))
	{
		if(isNaN(parseInt(document.getElementById(element).style.width)) || isNaN(parseInt(document.getElementById(element).style.height)))
			set_height(element);
		
		var left = parseInt(document.getElementById(element).style.left);
		var top = parseInt(document.getElementById(element).style.top);
		var breite = parseInt(document.getElementById(element).style.width);
		var hoehe = parseInt(document.getElementById(element).style.height);
		
		//Standardabweichung erlaubte pixel vom fenster entfernt
		var abweichung = 25;
		//Spezielle Arteneinstellungen
		//art = 0 ist normal -> nix besonderes
		//art = 1 ist dropdown, zum top wert wird das darüberliegende eingabefeld dazuaddiert (also abgezogen) (21px)
		
		if(art == 1) { top -= 21; abweichung = 0; }
		
		if((pos.left < left - abweichung) || (pos.left > left + breite + abweichung) || (pos.top < top - abweichung) || (pos.top > top + hoehe + abweichung)) 
		{
			element_kill(element);
		}
	}
}

function element_kill(id)
{
	//Stelle im Array bestimmen
	for(var i = 0; i < div_element.length; i++)
	{
		if(div_element[i].id == id)
		{
			var index = i;
			break;
		}
	}
	
	//Objekt aus dem Objektarray löschen	
	for(var i = index; i < div_element.length - 1; i++)
	{
		div_element[i].id		= div_element[i + 1].id;
		div_element[i].art		= div_element[i + 1].art;
	}
	
	//Objekt ausblenden
	object_disable(id);
}

function set_height(elem, ajax)
{
	//Setzt die Höhe von indiv. Objekten auf die richtige Höhe zur Möglichkeit zum Ausblenden
	//DIe Variable Ajax kann true sein wenn darauf gewartet werden soll bis alle Ajaxbefehle abgearbeitet worden sind, ansonsten false

	elem = document.getElementById(elem);
	
	elem.style.width = (parseInt(elem.scrollWidth) - parseInt(elem.style.paddingLeft) - parseInt(elem.style.paddingTop) - parseInt(elem.style.borderLeftWidth) - parseInt(elem.style.borderRightWidth)) + "px";
	elem.style.height = (parseInt(elem.scrollHeight) - parseInt(elem.style.paddingTop) - parseInt(elem.style.paddingBottom) - parseInt(elem.style.borderTopWidth) - parseInt(elem.style.borderBottomWidth)) + "px";
}

function object_position(element)
{
	var elem = document.getElementById(element);
	//Überprüfung vorher ob Position left+top gesetzt worden ist
	if(elem.style.left == "")
		elem.style.left = "0px";
	if(elem.style.top == "")
		elem.style.top = "0px";

	if((elem.style.width == "") && (elem.style.height == ""))
		set_height(element);

	//Überprüfung ob der Kasten rechts raus geht, dann nicht nach rechts verschieben
	if((parseInt(elem.style.left) + parseInt(elem.style.width) <= document.body.offsetWidth - 20) && (pos.left + parseInt(elem.style.width) <= document.body.offsetWidth - 20))
		elem.style.left = (pos.left + 5) + "px";
	else
		document.getElementById(element).style.left = (document.body.offsetWidth - 20- parseInt(elem.style.width)) + "px";
	
	//Dasselbe mit der Höhe
	if((parseInt(elem.style.top) + parseInt(elem.style.height) <= window.innerHeight - 20) && (pos.top + parseInt(elem.style.height) <= window.innerHeight - 20))
		elem.style.top = (pos.top + 15) + "px";
	else
		elem.style.top = (window.innerHeight - 20 - parseInt(elem.style.height)) + "px";
}

function object_enable(element, length)
{
	if(length == -1) 
	{
		document.getElementById(element).style.height = "";
		document.getElementById(element).style.width = "";
	}
	
	document.getElementById(element).style.visibility = "visible";
	document.getElementById(element).style.display = "";
}

function object_disable(element)
{
	document.getElementById(element).style.visibility = "hidden";
	document.getElementById(element).style.display = "none";
}

