// JavaScript Document

function show_kalender(elem, scroll_element, elem2)
{
	if(typeof(elem2) != "undefined")
	{
		wert = document.getElementById(elem2).value.replace(/[^0-9]/g, "");
		
		if(wert == "")
			wert = datum;
	}
	else
	{
		wert = document.getElementById(elem).value.replace(/[^0-9]/g, "");
		
		if(wert == "")
			wert = datum;
	}
	var jahr = wert.substr(wert.length - 4, 4);
	var monat = wert.substr(wert.length - 1 - 6, 2);
	
	setRequest('kalender.php', 'kalender', 'innerHTML', 'element=' + elem + '&jahr=' + jahr + '&monat=' + monat);
	
	if(typeof(scroll_element) !== "undefined")
	{
		object_enable_kalender("kalender", -10, get_pos_kalender(elem, scroll_element));
	}
	else
	{
		if(window.pageYOffset)
			pos.top -= window.pageYOffset;
		else if(document.documentElement.scrollTop)
			pos.top -= document.documentElement.scrollTop;
		else if(document.body.scrollTop)
			pos.top -= document.body.scrollTop;

		set_element_kalender(document.getElementById(elem), "kalender");
		object_enable_kalender("kalender", -1);
	}
}

function kalender_switch(elem, monat, jahr)
{
	setRequest('kalender.php', 'kalender', 'innerHTML', 'element=' + elem + '&jahr=' + jahr + '&monat=' + monat);
}

function get_pos_kalender(element, scroll_element)
{
	var position = new Object();
	
	position.top = 0;
	position.left = 0;

	element = document.getElementById(element);
	
	do 
	{
		position.top += element.offsetTop || 0;
		position.left += element.offsetLeft || 0;
		
		element = element.offsetParent;

	} while (element);

	//Korrektur fürs scrollen einbauen wenn scroll_element gesetzt ist
	if(window.pageYOffset)
		position.top -= window.pageYOffset;
	else if(document.documentElement.scrollTop)
		position.top -= document.documentElement.scrollTop;
	else if(document.body.scrollTop)
		position.top -= document.body.scrollTop;

	position.top += 10;
	position.left -= 3;

	return position;
}

function kalender_ausblenden(element)
{
	//Element
	//Kann nur für position:absolute oder fixed verwendet werden
	if(element)
	{		
		var left = parseInt(element.style.left);
		var top = parseInt(element.style.top);
		var breite = parseInt(element.style.width);
		var hoehe = parseInt(element.style.height);
		
		var pos_left = pos.left;
		var pos_top = pos.top;
		
		//Korrektur fürs scrollen einbauen wenn scroll_element gesetzt ist
		if(window.pageYOffset)
			pos_top -= window.pageYOffset;
		else if(document.documentElement.scrollTop)
			pos_top -= document.documentElement.scrollTop;
		else if(document.body.scrollTop)
			pos_top -= document.body.scrollTop;

		//Standardabweichung erlaubte pixel vom fenster entfernt
		var abweichung = 25;
		//alert(pos.left + " " + pos.top + " " + left + " " + top + " " + breite + " " + hoehe);
		if((pos_left < left - abweichung) || (pos_left > left + breite + abweichung) || (pos_top < top - abweichung - 40) || (pos_top > top + hoehe + abweichung)) 
			return true;
		else
			return false;
	}
}

function set_element_kalender(elem, wahl)
{
	//elem ist das Element udn wahl ist das Element unter dem Textfeld
	var elem_liste = document.getElementById(wahl);
	
	var top = 0;
	var left = 0;
	var element = elem

	do 
	{
		top += element.offsetTop || 0;
		left += (element.offsetLeft) || 0;
		element = element.offsetParent;
	} while (element);

	var hoehe = 25;

	//Fenster setzen
	elem_liste.style.left = left + "px";
	elem_liste.style.top = (parseInt(hoehe) + parseInt(top) + 5) + "px";

}

function object_position_kalender(element, position)
{
	var height = get_window_height();
	
	var elem = document.getElementById(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 = (position.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) <= height - 20) && (position.top + parseInt(elem.style.height) <= height - 20))
		elem.style.top = (position.top + 15) + "px";
	else
		elem.style.top = (height - 20 - parseInt(elem.style.height)) + "px";
}

function object_enable_kalender(element, art, position)
{

	document.getElementById(element).style.visibility = "visible";
	document.getElementById(element).style.display = "";
	
	if(art == -10)
	{
		object_position_kalender(element, position);
	}
}

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

function set_height_kalender(elem)
{
	//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);

	var b = parseInt(elem.scrollWidth);
	if(b == 0) 
		b = parseInt(elem.offsetWidth);
	
	var h = parseInt(elem.scrollHeight);
	if(h == 0) 
		h = parseInt(elem.offsetHeight);
		
	//Werte setzen falls leer
	if(elem.style.border == "")
	{
		if(elem.style.borderLeftWidth == "") elem.style.borderLeftWidth = "0px";
		if(elem.style.borderRightWidth == "") elem.style.borderRightWidth = "0px";
		if(elem.style.borderTopWidth == "") elem.style.borderTopWidth = "0px";
		if(elem.style.borderBottomWidth == "") elem.style.borderBottomWidth = "0px";
	}
	
	if(elem.style.padding == "")
	{
		if(elem.style.paddingTop == "") elem.style.paddingTop = "0px";
		if(elem.style.paddingLeft == "") elem.style.paddingLeft = "0px";
		if(elem.style.paddingTop == "") elem.style.paddingTop = "0px";
		if(elem.style.paddingBottom == "") elem.style.paddingBottom = "0px";
	}

	elem.style.width = (b - parseInt(elem.style.paddingLeft) - parseInt(elem.style.paddingTop) - parseInt(elem.style.borderLeftWidth) - parseInt(elem.style.borderRightWidth)) + "px";
	elem.style.height = (h - parseInt(elem.style.paddingTop) - parseInt(elem.style.paddingBottom) - parseInt(elem.style.borderTopWidth) - parseInt(elem.style.borderBottomWidth)) + "px";

}


