/* ImageList-Funktionen
 *
 */
  tf = {};
  tf.get = function(id) {
		return document.getElementById(id);
	}
  	tf.helper = {
		loadUrl : function(url) {
			document.location.href = url;
		},

		getLeft : function(l) {
			if (l.offsetParent) return (l.offsetLeft + this.getLeft(l.offsetParent));
			else return (l.offsetLeft);
		},

		getTop : function(l) {
			if (l.offsetParent) return (l.offsetTop + this.getTop(l.offsetParent));
			else return (l.offsetTop);
		},

		scrollbarVisible : function() {
			var bodyEl = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;
			if(window.innerWidth) {
				if (window.opera)
					return (window.outerWidth - bodyEl.scrollWidth)>10;
				else
					return window.scrollbars.visible;
			} else {
				return (bodyEl.clientWidth < bodyEl.offsetWidth);
			}
		},

		stopEvent : function(e) {
			if(!e) e = window.event;
			if(typeof e != 'undefined' && e != null) {
				if(typeof e.stopPropagation == 'function') e.stopPropagation();
				else e.cancelBubble = true;
			}
		},

		inArray : function(v,a) {
			for(var i=0;i<a.length;i++) {
				if(a[i] == v) return true;
			}
			return false;
		}
	}
	
	tf.imageList = {
		mouseMinX : null,
		mouseMaxX : null,
		mouseMinY : null,
		mouseMaxY : null,
		zoomActive : false,

		//zoom : function(caption,pic_filename,w,h,obj,event) {
                                    //m = multplikator für seitenverhältnis größeres bild
    zoom : function(caption,pic_filename,m,obj,event) {
				var div,innerDiv,x,y,divW,divH;
				if(this.zoomActive) {
					div = tf.get('divPicZoomContainer');
					div.onmousemove = null;
					document.body.removeChild(div);
				}
				var bodyEl = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;
				//var objW = obj.firstChild.offsetWidth;
				//var objH = obj.firstChild.offsetHeight;
    var objW = obj.offsetWidth;
				var objH = obj.offsetHeight;

				var objX = (event.pageX && event.layerX) ? event.pageX-event.layerX+parseInt(obj.offsetLeft) : tf.helper.getLeft(obj);
				var objY = (event.pageY && event.layerX) ? event.pageY-event.layerY+parseInt(obj.offsetTop) : tf.helper.getTop(obj);
				//var objX = (event.pageX && event.layerX) ? event.pageX-event.layerX : tf.helper.getLeft(obj);
				//var objY = (event.pageY && event.layerX) ? event.pageY-event.layerY : tf.helper.getTop(obj);

				// Korrektur für NS 8
				isNS8 = false;
				if(window.pageYOffset > bodyEl.scrollTop) {
					isNS8 = true;
					objY = event.pageY;
					objX = event.pageX;
				}

				div = document.createElement('div');
				div.id = 'divPicZoomContainer';
				//div.className = 'boxShadow';
				//divW = w+20+6;
				//divH = h+32+20+7;
				divW = objW*m+10;
				divH = objH*m+10;
				//x = Math.round((objX+objW/2)-divW/2);
				//y = Math.round((objY+objH/2)-divH/2);
				x = Math.round((objX)-divW/2);
				y = Math.round((objY)-divH/2);
        //dir = id/1000;
				innerDiv = document.createElement('div');
				//innerDiv.innerHTML = '<p>'+obj.parentNode.parentNode.getElementsByTagName('DIV')[1].innerHTML+'</p>';
				//innerDiv.innerHTML += '<a href="'+obj.href+'"><img src="/'+pic_filename+'" width="'+w+'" height="'+h+'" alt="" /></a>';
				innerDiv.innerHTML = '<img src="'+pic_filename+'" alt="" /><br>'+caption;

				// Ist noch im Viewport?
				ch = (window.innerHeight) ? window.innerHeight : bodyEl.clientHeight;
				cw = (window.innerWidth) ? window.innerWidth - (tf.helper.scrollbarVisible() ? 20 : 0) : bodyEl.clientWidth;
				if(!isNS8) {
					if(x < 0+bodyEl.scrollLeft) x = 0+bodyEl.scrollLeft;
					if(y < 0+bodyEl.scrollTop) y = 0+bodyEl.scrollTop;
					if(x > cw-divW+bodyEl.scrollLeft) x = cw-divW+bodyEl.scrollLeft;
					if(y > ch-divH+bodyEl.scrollTop) y = ch-divH+bodyEl.scrollTop;
				}
				div.style.left = (x)+'px';
				div.style.top = y+'px';

				div.appendChild(innerDiv);
				document.body.appendChild(div);

				// Bounds festlegen (mit Padding von 20px)
				this.mouseMinX = objX-0;
				this.mouseMaxX = objX+objW+2;
				//this.mouseMaxX = objX+30;
				this.mouseMinY = objY-0;
				this.mouseMaxY = objY+objH+2;
				//this.mouseMaxY = objY+30;

				div.onmousemove = this.checkMouseZoomLeave;
				this.zoomActive = true;

		},
		
		checkMouseZoomLeave : function(e) {
			var div = tf.get('divPicZoomContainer');
			if(!e) e = window.event;
			var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;

			mouseY = e.pageY ? e.pageY : e.clientY + body.scrollTop;
			mouseX = e.pageX ? e.pageX : e.clientX + body.scrollLeft;

			if(mouseY < tf.imageList.mouseMinY || mouseY > tf.imageList.mouseMaxY || mouseX < tf.imageList.mouseMinX || mouseX > tf.imageList.mouseMaxX) {
				tf.imageList.zoomActive = false;
				div.onmousemove = null;
				document.body.removeChild(div);
			}
		}


	}
	
	
  tf.imageListLupe = {
		mouseMinX : null,
		mouseMaxX : null,
		mouseMinY : null,
		mouseMaxY : null,
		zoomActive : false,

		zoom : function(caption,pic_filename,w,h,obj,event) {

				var div,innerDiv,x,y,divW,divH;
				if(this.zoomActive) {
					div = tf.get('divPicZoomContainer');
					div.onmousemove = null;
					document.body.removeChild(div);
				}
				var bodyEl = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;
				//var objW = obj.firstChild.offsetWidth;
				//var objH = obj.firstChild.offsetHeight;
				var objX = (event.pageX && event.layerX) ? event.pageX-event.layerX+parseInt(obj.offsetLeft) : tf.helper.getLeft(obj);
				var objY = (event.pageY && event.layerX) ? event.pageY-event.layerY+parseInt(obj.offsetTop) : tf.helper.getTop(obj);
				//var objX = (event.pageX && event.layerX) ? event.pageX-event.layerX : tf.helper.getLeft(obj);
				//var objY = (event.pageY && event.layerX) ? event.pageY-event.layerY : tf.helper.getTop(obj);

				// Korrektur für NS 8
				isNS8 = false;
				if(window.pageYOffset > bodyEl.scrollTop) {
					isNS8 = true;
					objY = event.pageY;
					objX = event.pageX;
				}

				div = document.createElement('div');
				div.id = 'divPicZoomContainer';
				//div.className = 'boxShadow';
				//divW = w+20+6;
				//divH = h+32+20+7;
				divW = w+30;
				divH = h+50;
				//x = Math.round((objX+objW/2)-divW/2);
				//y = Math.round((objY+objH/2)-divH/2);
				x = Math.round((objX)-divW/2);
				y = Math.round((objY)-divH/2);
        //dir = id/1000;
				innerDiv = document.createElement('div');
				//innerDiv.innerHTML = '<p>'+obj.parentNode.parentNode.getElementsByTagName('DIV')[1].innerHTML+'</p>';
				//innerDiv.innerHTML += '<a href="'+obj.href+'"><img src="/'+pic_filename+'" width="'+w+'" height="'+h+'" alt="" /></a>';
				innerDiv.innerHTML = '<img src="'+pic_filename+'" alt="" /><br>'+caption;

				// Ist noch im Viewport?
				ch = (window.innerHeight) ? window.innerHeight : bodyEl.clientHeight;
				cw = (window.innerWidth) ? window.innerWidth - (tf.helper.scrollbarVisible() ? 20 : 0) : bodyEl.clientWidth;
				if(!isNS8) {
					if(x < 0+bodyEl.scrollLeft) x = 0+bodyEl.scrollLeft;
					if(y < 0+bodyEl.scrollTop) y = 0+bodyEl.scrollTop;
					if(x > cw-divW+bodyEl.scrollLeft) x = cw-divW+bodyEl.scrollLeft;
					if(y > ch-divH+bodyEl.scrollTop) y = ch-divH+bodyEl.scrollTop;
				}
				div.style.left = (x)+'px';
				div.style.top = y+'px';

				div.appendChild(innerDiv);
				document.body.appendChild(div);

				// Bounds festlegen (mit Padding von 20px)
				this.mouseMinX = objX-0;
				//this.mouseMaxX = objX+objW+5;
				this.mouseMaxX = objX+30;
				this.mouseMinY = objY-0;
				//this.mouseMaxY = objY+objH+5;
				this.mouseMaxY = objY+30;

				div.onmousemove = this.checkMouseZoomLeaveLupe;
				this.zoomActive = true;

		},

		checkMouseZoomLeaveLupe : function(e) {
			var div = tf.get('divPicZoomContainer');
			if(!e) e = window.event;
			var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;

			mouseY = e.pageY ? e.pageY : e.clientY + body.scrollTop;
			mouseX = e.pageX ? e.pageX : e.clientX + body.scrollLeft;

			if(mouseY < tf.imageListLupe.mouseMinY || mouseY > tf.imageListLupe.mouseMaxY || mouseX < tf.imageListLupe.mouseMinX || mouseX > tf.imageListLupe.mouseMaxX) {
				tf.imageListLupe.zoomActive = false;
				div.onmousemove = null;
				document.body.removeChild(div);
			}
		}


	}
