function jh_getposition(element, xy, relative) {
	var elem = element, x = 0, y = 0, w = 0, h = 0, bl = 0, bt = 0, br = 0, bb = 0;
	
	// Breite & Hoehe berechnen
	w = elem.offsetWidth;
	h = elem.offsetHeight;
	if (xy == 'w') return w;
	if (xy == 'h') return h;

	// Border bestimmen
	if (document.defaultView) {
		// Firefox + Safari + Opera
		bl = parseInt(document.defaultView.getComputedStyle(element,null).getPropertyValue('border-left-width'));
		bt = parseInt(document.defaultView.getComputedStyle(element,null).getPropertyValue('border-top-width'));
		br = parseInt(document.defaultView.getComputedStyle(element,null).getPropertyValue('border-right-width'));
		bb = parseInt(document.defaultView.getComputedStyle(element,null).getPropertyValue('border-bottom-width'));
	} else if (element.currentStyle) {
		// IE (+ Opera)
		bl = parseInt(element.currentStyle['borderLeftWidth']);
		bt = parseInt(element.currentStyle['borderTopWidth']);
		br = parseInt(element.currentStyle['borderRightWidth']);
		bb = parseInt(element.currentStyle['borderBottomWidth']);
		if (isNaN(bl)) bl = 0;
		if (isNaN(bt)) bt = 0;
		if (isNaN(br)) br = 0;
		if (isNaN(bb)) bb = 0;
	}
	if (xy == 'bl') return bl;
	if (xy == 'bt') return bt;
	if (xy == 'br') return br;
	if (xy == 'bb') return bb;

	// Position berechnen
	if (relative == true) {
		// relative werte zum naechsthoeheren Element
		y = elem.offsetTop;
		x = elem.offsetLeft;
	} else {
		// solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
		// wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt
		while ((typeof(elem) == 'object') && (elem.tagName) && (typeof(elem.tagName) != 'undefined')) {
			y+=elem.offsetTop;	// Offset des jeweiligen Elements addieren
			x+=elem.offsetLeft;	// Offset des jeweiligen Elements addieren
		
			// wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen
			switch (elem.tagName.toLowerCase()) {
				case 'body':
				case 'html':
					elem = 0;
			}
		
			// wenn elem ein Objekt ist und offsetParent enthaelt Offset-Elternelement ermitteln
			if ((typeof(elem) == 'object') && (typeof(elem.offsetParent) == 'object')) {
				elem=elem.offsetParent;
			}
		}
	}

	// x, y oder objekt zurueckgeben
	if (xy == 'x') return x;
	if (xy == 'y') return y;
	position = new Object();

	position.x = x;
	position.y = y;
	position.w = w;
	position.h = h;
	position.bl = bl;
	position.bt = bt;
	position.br = br;
	position.bb = bb;
	return position;
}

function jh_setposition(elem, x, y, w, h) {
	if (typeof(elem) == 'object') {
		if (elem.style) {
		
			if (typeof(x) == 'object') {
				// übergabe eines objektes
				if (x.x) elem.style.left = parseInt(x.x) + 'px';
				if (x.y) elem.style.top = parseInt(x.y) + 'px';
				if (x.w) {
					if (parseInt(x.w) < 0) x.w = 0;
					elem.style.width = parseInt(x.w) + 'px';
				}
				if (x.h) {
					if (parseInt(x.h) < 0) x.h = 0;
					elem.style.height = parseInt(x.h) + 'px';
				}
			} else {
				// übergabe von parametern
				if ((x) && (x != '')) elem.style.left = parseInt(x) + 'px';
				if ((y) && (y != '')) elem.style.top = parseInt(y) + 'px';
				if ((w) && (w != '')) {
					if (parseInt(w) < 0) w = 0;
					elem.style.width = parseInt(w) + 'px';
				}
				if ((h) && (h != '')) {
					if (parseInt(h) < 0) h = 0;
					elem.style.height = parseInt(h) + 'px';
				}
			}
			
		}
	}
}