/*  http://javascriptcompressor.com/ */
/*
 @todo include timeout
 @todo einbinden der css, class="GNEcss_classname" ??
*/
(function()
{
	
	if (!Array.prototype.indexOf) Array.prototype.indexOf = function(value)
	{
		for(var i=0, num = this.length; i < num; ++i)
		{
			if(this[i] == value)
			{
				return i;
			}
		}
		return false;
	}
	
	if (!Array.prototype.push) Array.prototype.push = function(value)
	{
		this[this.length] = value;
	};
	
	if (!String.prototype.trim) String.prototype.trim = function()
	{
		return this.replace(/^\s+/, '').replace(/\s+$/, '');
	}
	
	var HOST = "http://der-warnemuender.de/liveG/";
	
	function NEnergy() { }

	NEnergy.addEvent = function(obj, type, fn)
	{
		if (obj.addEventListener)
		{
			obj.addEventListener( type, fn, false );
		}
		else if (obj.attachEvent)
		{
			obj.attachEvent( "on"+type, fn );
		}
	}
	
	NEnergy.removeEvent = function( obj, type, fn )
	{
		if (obj.removeEventListener)
		{
			obj.removeEventListener( type, fn, false );
		}
		else if (obj.detachEvent)
		{
			obj.detachEvent( "on"+type, fn);
	   }
	}
	
	NEnergy.DomLoader = {
		funcList : {},
		add : function(name, func)
		{
			this.funcList[name] = func;
			NEnergy.initReady(func);
		}
	};
	
	NEnergy.initReady = function(fn)
	{
		var isLoaded = false;
		// IE execute function
		function readyState()
		{
			
			// DOM is ready document.readyState == "interactive" || 
			if(!isLoaded && (document.readyState == "complete"))
			{
				isLoaded = true;
				var loader = NEnergy.DomLoader;
				for(var index in loader.funcList)
				{
					loader.funcList[index]();
				}
			}
		}
		if(document.addEventListener)
		{
			document.addEventListener("DOMContentLoaded", fn, false);
		}
		else
		{
			document.onreadystatechange = function(){readyState()}
		}
	}
	
	NEnergy.addEvent(window, "DomReady", NEnergy.initReady);
	
	function getTopPos(ele)
	{		
		var pos = ele.offsetTop;
		while((ele = ele.offsetParent) != null)
		{
			if(ele.tagName != 'HTML') 
			{
				pos += ele.offsetTop + ((document.all) ? ele.clientTop : 0);
			}
		} 
		return pos;	
	}
	
	function getLeftPos(ele)
	{		
		var pos = ele.offsetLeft;
		while((ele = ele.offsetParent) != null)
		{
			if(ele.tagName != 'HTML')
			{
				pos += ele.offsetLeft + ((document.all) ? ele.clientLeft : 0);
			}
		} 
		return pos;
	}

	function getPageSize() {
	        
	     var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		
		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	

		return {w : Math.max(xScroll, windowWidth), h : Math.max(yScroll, windowHeight) + ((document.all) ? (document.body.offsetTop*2) : 0)};
	}


	function Arguments(a)
	{
		this.a = a;
	}
	
	Arguments.prototype.getArguments = function(argList)
	{
		var aNum = this.a.length;
		for(var i = 0, num = argList.length; i < num; ++i)
		{
			var aENum = argList[i].length;
			if(aNum == aENum)
			{
				var erg = {};
				
				for(var j = 0; j < aENum; ++j)
				{
					erg[argList[i][j]] = this.a[j];
				}
				return erg;
			}
		}
		return {};
	};
	
	function NodeElement(ele)
	{
		this.htmlNode = ele;
		this.events = {};
	}
	
	NodeElement.prototype.getHTML = function()
	{
		return this.htmlNode;
	};
	
	NodeElement.prototype.setHTML = function(ele)
	{
		this.htmlNode = ele;
	};
	
	NodeElement.prototype.setCSSOpacity = function(num)
	{
		this.htmlNode.style.opacity = (num/100);
		this.htmlNode.style.MozOpacity = (num/100);
		this.htmlNode.style.filter = 'alpha(opacity=' + num + ')'; 
	};
	
	NodeElement.prototype.addEvent = function(evt, func, arg, callObj)
	{
		var funcName = func.toString().match(/function(.*)\(/)[1].trim();

		if(funcName != "")
		{
			var funcObj = function(e) { 
								if(arg)
									arg.evt = e;
													if(callObj)
														func.call(callObj, arg, callObj); 
													else
														func(arg); 
													 }
			this.events[funcName] = funcObj;
			NEnergy.addEvent(this.htmlNode, evt, funcObj);
		}
		else
		{
		if(arg)
			NEnergy.addEvent(this.htmlNode, evt, function() { 
												if(callObj)
													func.call(callObj, arg, callObj); 
												else
													func(arg); 
												 });
		else
			NEnergy.addEvent(this.htmlNode, evt, function() { 
												if(callObj)
													func.call(callObj, null); 
												else
													func();  });
		}
	};
		
	NodeElement.prototype.removeEvent = function(evt, func)
	{
		var funcName = func.toString().match(/function(.*)\(/)[1].trim();
		
		if(funcName != "")
		{
			NEnergy.removeEvent(this.htmlNode, evt, this.events[funcName]);
		}
	}
	
	NodeElement.prototype.remove = function()
	{
		var parent = this.htmlNode.parentNode;
		parent.removeChild(this.htmlNode);
	};
	
	function NodeBuilder() { }

	NodeBuilder.HEAD = document.getElementsByTagName('head')[0];
	NodeBuilder.BODY = null;
	NEnergy.DomLoader.add("galerie1", function() { NodeBuilder.BODY = document.getElementsByTagName('body')[0]; } );
	NodeBuilder.isExists = function(kennung)
	{
		if(kennung.indexOf("#") == 0)
		{
			var erg = document.getElementById(kennung.substr(1));
			if(erg)
				return new NodeElement(erg);
		}
		else
		{
			
			var args = (new Arguments(arguments)).getArguments([['kennung'], ['kennung', 'attr'] ]);
			
			var erg = document.getElementsByTagName(kennung);
			if(erg)
			{
				if(!args.attr)
				{
					var arr = [];
					for(var i = 0, num = erg.length; i < num; ++i )
					{
						arr.push(new NodeElement(erg[i]));
					}
					return arr;
				}
				else
				{
					
					var arr = [];
					
					if(args.attr.attribute)
						args.attr = args.attr.attribute;
					
					for(var i = 0, num = erg.length; i < num; ++i )
					{
						var ele = erg[i];	
						var ok = true;
						for(var index in args.attr)
						{
							if(!ele[index] || ele[index].search( args.attr[index] ) == -1)
							{	
								ok = false;
								break;
							}		
						}
						
						if(ok)
							arr.push(new NodeElement(ele));
					}
					return arr;
				}
			}
		}
		
		return null;
	};

	NodeBuilder.isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; 

	NodeBuilder.createNode = function(tag)
	{
		var args = (new Arguments(arguments)).getArguments([['tag', 'name', 'attr'], ['tag', 'attr'] ]);
		
		var ele = null;
		if(args.name)
		{
			/*@cc_on
			   /*@if (@_win32)
				  ele = document.createElement("<" + tag + " name=\"" + args.name + "\">");
			   @else @*/
					ele = document.createElement(tag);
					ele.name = args.name;
			   /*@end
			@*/
		}
		else
		{
			ele = document.createElement(tag);
		}
		
		if(args.attr)
		{
			if(args.attr.attribute)
				args.attr = args.attr.attribute;
			
			if(NodeBuilder.isIE)
			{
				if(args.attr.style)
				{
					ele.style.cssText = args.attr.style;
					delete args.attr.style;
				}
				if(args.attr.class)
				{
					ele.style.className = args.attr.class;
					delete args.attr.class;
				}
			}
			
			for(var index in args.attr)
			{
				ele.setAttribute(index, args.attr[index]);
			}
		}
		return new NodeElement(ele);
	};
	
	NodeBuilder.setText = function(ele, text)
	{
		ele.innerHTML = text;
		return ele;
	};
	
	function Attribute(obj)
	{
		this.attribute = obj;	
	}
	
	Attribute.prototype.add = function(obj)
	{
		for(var index in obj)
		{
			this.attribute[index] = obj[index];
		}
		return this;
	};

	function include(file)
	{
		var CallbackID = (new Date()).getTime();
		var args = (new Arguments(arguments)).getArguments([ ['file'], ['file', 'callobj', 'callback'] ]);
		
		file+= ((file.indexOf("?") == -1) ? "?" : "&") + "d=" + location.host + "&CallbackID=" + CallbackID;
		
		var script = NodeBuilder.createNode("script", new Attribute({src : HOST + file, type : "text/javascript" }));
		NodeBuilder.HEAD.appendChild(script.getHTML());	
		
		if(args.callback)
		{
			var wait = setInterval( function() {
				if(window['include' + CallbackID])
				{
					clearTimeout(wait);
					args.callback.call(args.callobj, window['include' + CallbackID]);				   
					window['include' + CallbackID] = null;
					NodeBuilder.HEAD.removeChild(script.getHTML());
					script = null;
				}
			} , 100);
		}
	}
	
	
	function Galerie()
	{
		this.box = null;
		this.galeries = null;
		this.galeriesImages = null;
		this.key = null;
		this.ScrollBarWidth = 0;
		this.gid = 0;
	}
	
	Galerie.STATUS = { OK : 1, ERR : 2, NOTFOUND : 21, NOACCESS : 22 };
	
	Galerie.prototype.init = function()
	{
		this.key = NodeBuilder.isExists("script", new Attribute({src : "galerie.js(.*)"}))[0].getHTML().src.match("galerie.js(.*)")[1].substr(5);
		this.galeries = {};
		this.galeriesImages = {};
		this.box = NodeBuilder.isExists("#gBox");
		this.maxShow = 0;
		this.maxImages = 0;
		
		function scrollbarWidth() {
			var old = document.body.style.overflow;
			document.body.style.overflow = 'hidden';
			var width = document.body.clientWidth;
			document.body.style.overflow = 'scroll';
			width -= document.body.clientWidth;
			
			if(!width) width = document.body.offsetWidth-document.body.clientWidth;
			document.body.style.overflow = old;
			return width;
		}
		this.ScrollBarWidth = scrollbarWidth();
		if(this.box != null)
		{
			this.box.getHTML().appendChild( NodeBuilder.setText(NodeBuilder.createNode("span", new Attribute({style : "", id : "gBoxStatus"})), "Daten werden geladen...<br>").getHTML());
			include("getData.php?key=" + this.key, this, this.loadGaleriesCallback );
		}
	};
	
	Galerie.prototype.loadGaleriesCallback = function(e)
	{
		var ref = this;
		function switchGalerie(a)
		{
			ref.box.getHTML().removeChild(ref.box.getHTML().lastChild); 
			if(this.galeriesImages[a.gid])
			{
				ref.loadGalerieCallback(a.gid, this.galeriesImages[a.gid]);	
			}
			else
			{
				ref.loadGalerie(a.gid);
			}
				
		}
		
		
		if(e.status == Galerie.STATUS.ERR)
		{
			alert("Fehler");
			return;
		}
		this.box.getHTML().appendChild(NodeBuilder.createNode("div", new Attribute({ style : "width: 150px; float: left; border: 1px solid #000000" })).getHTML());
		var liste = this.box.getHTML().lastChild;

		for(var i = 0; i < e.data.length; ++i)
		{
			var ele = NodeBuilder.createNode("div", new Attribute({ style : "width: 150px; border-bottom: 1px solid #000000" }));
			ele.getHTML().innerHTML = e.data[i][0];
			ele.addEvent("click", switchGalerie, {gid: e.data[i][1]}, this);
			liste.appendChild(ele.getHTML());
			this.galeries[e.data[i][1]] = e;
		}
		NodeBuilder.setText(NodeBuilder.isExists("#gBoxStatus").getHTML(), "Galerie wird geladen...");
		
		this.loadGalerie(e.data[0][1]);
	};
	
	Galerie.prototype.loadGalerie = function(gid)
	{
		include("getData.php?key=" + this.key + "&gid=" + gid, this, function(e){ this.loadGalerieCallback(gid, e); });
	};
	
	Galerie.prototype.loadGalerieCallback = function(gid, images)
	{
		NodeBuilder.isExists("#gBoxStatus").getHTML().style.display = "none";
		var nachladen = false;
		this.gid = gid;
		this.galeriesImages[gid] = images;
		
		var container = NodeBuilder.createNode("div", new Attribute({ style : "width: 580px; float: left; border: 1px solid #000000" }));
		var containerShow = NodeBuilder.createNode("div", new Attribute({ id : "showit", style : "width: 200px; padding-top: 0px; text-align: center; position: absolute; background-color:#ffffff; display:none; border: 1px solid #000000" }));

		if(!nachladen)
		{
			container.getHTML().style.overflow = "";	
		}

		container.setCSSOpacity(0);
		container.getHTML().appendChild(containerShow.getHTML());
		this.box.getHTML().appendChild(container.getHTML());
		
		var text = NodeBuilder.isExists("#gBoxStatus").getHTML();
		var num = images.length;
		var alle = 0;
		
		var iWidth = 0;
		var iHeight = 0;
		
		//iWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
   		//iHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
		
		var maxShow = Math.round( (container.getHTML().offsetHeight / 140) * (container.getHTML().offsetWidth / 140) );
		
		if(container.getHTML().offsetHeight < 50)
		{
			var anzeigeHeight = self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
			var height = (( num /  Math.round(container.getHTML().offsetWidth / 140)) * 140);
			if(height > anzeigeHeight)
				height = anzeigeHeight;
			//alert(height);
			maxShow = Math.round( (height / 140) * (container.getHTML().offsetWidth / 140) );
			this.maxShow = num;
		}
		else
		{
			this.maxShow = maxShow;	
		}
		
		this.maxImages = num;
		var wait = setInterval( function() {
								 	if(num > alle)
									{
										var css = ((100/maxShow) * alle);
										container.setCSSOpacity(css);
									}
									else
									{
										clearTimeout(wait);
										container.setCSSOpacity(100);
										
									}
								} , 100);
		
		var BILDSTYLE = " width: 100px; height: 100px;";
		var ref = this;
		
		function imageReady(para)
		{
			if(para.s == Galerie.STATUS.ERR)
				para.img = NodeBuilder.createNode("img", new Attribute({src : 'close.gif' , style : (BILDSTYLE + "border: 1px solid #ff0000; padding: 36px; width: 26px; height: 26px;")})).getHTML();
			
			if(para.pre.childNodes.length == 0)
				para.pre.appendChild(para.img);
			
			++alle;
		}
		
		if(nachladen)
		{
			window.onresize = function (evt) {
       			iWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
       			iHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
				//container.style.height = iHeight + "px";
			};	
			
			container.getHTML().onscroll = function ()
			{
				for(var  i = 0; i < num; ++i)
				{
					var pre = document.getElementById(i);
					if(pre && pre.childNodes.length == 0 && (!nachladen || (pre.offsetTop > container.getHTML().scrollTop && pre.offsetTop < container.getHTML().scrollTop + iHeight + 300)))
					{
						var CallbackID = (new Date()).getTime();
						var img = NodeBuilder.createNode("img", new Attribute({src : images[i].server + images[i].file + "T.jpg" + '?t=' +CallbackID , style : BILDSTYLE }));
						
						if(!NodeBuilder.isIE)
						{
							img.addEvent("load", function(a) { imageReady(a); }, {img: img.getHTML(), pre: pre, s: Galerie.STATUS.OK}, this);
							img.addEvent("error", function(a) { imageReady(a); }, {img: img.getHTML(), pre: pre, s: Galerie.STATUS.ERR}, this);
						}
						else
						{
							var wait = setInterval(function() {
							if(img.getHTML().complete)
							{
								clearInterval(wait);
								imageReady({img: img.getHTML(), pre: pre, s: Galerie.STATUS.OK}); 
								if(i < num-1) loadImageByImage.call(this, images, alle);
							}
							
															}, 100);
							img.addEvent("error", function(a) { clearInterval(wait); imageReady(a); if(i < num-1) loadImageByImage.call(this, images, alle); }, {img: img.getHTML(), pre: pre, s: Galerie.STATUS.ERR}, this);				
							
						}
						img.addEvent("mouseover", function(a) { ref.showDetails(a); }, {img: img, data : images[i]}, this);
						pre.style.background = "url(" + HOST +  "loading.gif) no-repeat center transparent";
					}
				}
			};
			container.getHTML().style.overflow = "auto";
			containerShow.display = "none";
		}
		
		
		for(var  i = 0; i < num; ++i)
		{
			container.getHTML().appendChild(NodeBuilder.createNode("div", new Attribute({ id : i, style : "float: left; margin: 20px; width: 98px; line-height: 100px; text-align: center; height: 98px; border: 1px solid #eeeeee;" })).getHTML());
		}
		
		function loadImageByImage (images, i)
		{
			var pre = NodeBuilder.isExists("#" + i);

			if(pre &&  (!nachladen ||  alle < this.maxShow ))
			{
				pre = pre.getHTML();
				var CallbackID = ""; //(new Date()).getTime();
				var img = NodeBuilder.createNode("img", new Attribute({src : images[i].server + images[i].file + "T.jpg" + '?t=' +CallbackID , style : BILDSTYLE }));

				if(!NodeBuilder.isIE)
				{
					img.addEvent("load", function(a) { imageReady(a); if(i < num-1) loadImageByImage.call(this, images, alle); }, {img: img.getHTML(), pre: pre, s: Galerie.STATUS.OK}, this);
					img.addEvent("error", function(a) { imageReady(a); if(i < num-1) loadImageByImage.call(this, images, alle); }, {img: img.getHTML(), pre: pre, s: Galerie.STATUS.ERR}, this);				
				}
				else
				{
					var wait = setInterval(function() {
					if(img.getHTML().complete)
					{
						clearInterval(wait);
						imageReady({img: img.getHTML(), pre: pre, s: Galerie.STATUS.OK}); 
						if(i < num-1) loadImageByImage.call(this, images, alle);
					}
					
													}, 100);
					img.addEvent("error", function(a) { clearInterval(wait); imageReady(a); if(i < num-1) loadImageByImage.call(this, images, alle); }, {img: img.getHTML(), pre: pre, s: Galerie.STATUS.ERR}, this);				
					
				}
				
				img.addEvent("mouseover", function(a) { ref.showDetails(a); }, {img: img, data : images[i]}, this);
				pre.style.background = "url(" + HOST +  "loading.gif) no-repeat center transparent";
			}
		}
		loadImageByImage.call(this, images, 0);
	};
	
	Galerie.prototype.showDetails = function(arg)

			{
				
				var WIDTH = 200; // set ByConfig
				var HEIGHT = 200; // set ByConfig
				
				var img = arg.img;
				var data = arg.data;
				var showBoxObj = NodeBuilder.isExists("#showit");
				var showBox = showBoxObj.getHTML();
				
				var imgLeft = getLeftPos(img.getHTML());
				var imgTop = getTopPos(img.getHTML());
				
				var displayareaLeft = getLeftPos(this.box.getHTML().lastChild);
				var displayareaTop = getTopPos(this.box.getHTML().lastChild);
				
				showBox.style.top = (imgTop - (HEIGHT/4) - this.box.getHTML().lastChild.scrollTop) + "px";
				showBox.style.left = (imgLeft - (WIDTH/4)) + "px";
				
			
				showBox.innerHTML = "";
				var ref = this;
				var img = NodeBuilder.createNode("img", new Attribute({src : img.getHTML().src.replace(/T/, "V") , style : " width: " + WIDTH + "px; height: " + HEIGHT + "px;" }));
				showBox.appendChild(img.getHTML());
				showBox.appendChild(NodeBuilder.createNode("br").getHTML());
				showBox.appendChild(document.createTextNode(data.name));

				
				showBox.onclick = function(e) { ref.showFull(img, arg.img); this.style.display = "none"; };
				
				showBox.style.visibility = "hidden";
				showBox.style.display = "";
				
				
				if(parseInt(showBox.style.left) < displayareaLeft)
				{
					showBox.style.left = (displayareaLeft + 2) + "px";
				}
				else if(parseInt(showBox.style.left) + showBox.offsetWidth > displayareaLeft + this.box.getHTML().lastChild.offsetWidth)
				{
					showBox.style.left = ((displayareaLeft + this.box.getHTML().lastChild.offsetWidth) - showBox.offsetWidth - 2 - ( ((this.maxShow < this.maxImages) ?  this.ScrollBarWidth : 0 )  ) ) + "px";
				}
				
				if(parseInt(showBox.style.top) < displayareaTop)
				{
					showBox.style.top = (displayareaTop + 2) + "px";
				}
				else if(parseInt(showBox.style.top) + showBox.offsetHeight > displayareaTop + this.box.getHTML().lastChild.offsetHeight)
				{
					showBox.style.top = ((displayareaTop + this.box.getHTML().lastChild.offsetHeight) - showBox.offsetHeight - 2) + "px";
				}
				
				
				var c = 0;
				
				var animate = setInterval(function() {
												   
												   showBoxObj.setCSSOpacity(c);
												   showBox.style.visibility = "";
												   c+= 30;
												   if(c > 90)
												   {
														clearInterval(animate);   
														 showBoxObj.setCSSOpacity(100);
												   }
												   
												   }, 60); 
				showBox.onmouseout = function(e)
				{ 
						e = e || window.event; 
						var src =  e.srcElement || e.target;
						var dest =  e.relatedTarget || e.toElement;
						function isChildOf(root, dest)
						{
							if(root == dest)
								return true;
							for(var i = 0, num = root.childNodes.length; i < num; ++i)
							{
								if(root.childNodes[i] == dest)
									return true;
								else
									return isChildOf(root.childNodes[i], dest);
							}
							return false;
						}
						
						if(!isChildOf(this ,dest))
						{
							this.style.display = "none";
							clearInterval(animate);   
						}
				};
			};
	Galerie.prototype.showFull = function(img, orgImg)
			{
				var ref = this;
				var WIN = new NodeElement(window);
				
				function getDimension(url)
				{
					url = decodeURI(url);
					for(var i = 0, num = ref.galeriesImages[ref.gid].length; i < num; ++i)
					{
						if(ref.galeriesImages[ref.gid][i].server + ref.galeriesImages[ref.gid][i].file + "V.jpg" == url.replace(/.{1}\.jpg/, "V.jpg"))
						{					
							if(ref.galeriesImages[ref.gid][i].size.w > ref.galeriesImages[ref.gid][i].size.h)
								{ return { w : Math.min( 800,  ref.galeriesImages[ref.gid][i].size.w), h : Math.min( 600 , ref.galeriesImages[ref.gid][i].size.h) }; }
							else
								{ return { w : Math.min( 600,  ref.galeriesImages[ref.gid][i].size.w), h : Math.min( 800 , ref.galeriesImages[ref.gid][i].size.h) }; }
						}
					}
					return {h: 600, w : 800};
				}
				
				function switchImage(arg)
				{
					
					var img = arg.img, orgImg = arg.miniImage;
					var nextBtn = arg.next;
					var prevBtn = arg.prev;
					var mode = arg.mode;
						
					var next;

					if(mode == 1)
					{
						if(orgImg.getHTML().parentNode.nextSibling != null)
							next = orgImg.getHTML().parentNode.nextSibling.firstChild;
						else
							next = orgImg.getHTML().parentNode.parentNode.childNodes[1].firstChild;
					}
					else
					{
						if(orgImg.getHTML().parentNode.previousSibling != null)
							next = orgImg.getHTML().parentNode.previousSibling.firstChild;
						else
							next = orgImg.getHTML().parentNode.parentNode.lastChild.firstChild;
					}
//console.info("next", img.getHTML().src);
					var url = next.src;
					url = url.substr(0, url.indexOf("?"));
					var iSize = getDimension(url);

					var imgNext = NodeBuilder.createNode("img", new Attribute({src : next.src.replace(/(.{1}\.jpg)/, "B.jpg") , style : "margin: 20px; z-index: 1; position: absolute;"}));
				
				
					img.getHTML().parentNode.insertBefore(imgNext.getHTML(), img.getHTML());
					nextBtn.removeEvent("click", switchImage);
					nextBtn.addEvent("click", switchImage, {img: imgNext, miniImage: new NodeElement(next), next: nextBtn, prev: prevBtn, mode: 1});
					
					prevBtn.removeEvent("click", switchImage);
					prevBtn.addEvent("click", switchImage, {img: imgNext, miniImage: new NodeElement(next), next: nextBtn, prev: prevBtn, mode: 2});
					
				
				
					function aniS() {
						var c = 100;
						
						var animate = setInterval(function() {
												   
												   img.setCSSOpacity(c);
												   c-= 30;
												 
												   if(c < 10)
												   {
														clearInterval(animate);   
														img.setCSSOpacity(0);
														img.remove();
														imgNext.getHTML().style.zIndex = 2;
														
														
														
														var ig = NodeBuilder.isExists("#ig");
														var hg = NodeBuilder.isExists("#hg");
														hg.getHTML().style.height = (300) + "px";
														ig.getHTML().style.width = (iSize.w + 40) + "px";
														ig.getHTML().style.height = (iSize.h + 40) + "px";
														hg.getHTML().style.height = (getPageSize().h) + "px";
														
												   }
												   
												   }, 60); }
					if(!NodeBuilder.isIE)
						imgNext.addEvent("load", aniS );
					else
					{
						if(imgNext.getHTML().complete == false)
							imgNext.addEvent("load", aniS );
						else
							aniS();
					}
				}
				
				function keyListen(a)
				{
						switch(a.evt.keyCode)
						{
							case 39:
							case 78:
							case 40:
							case 32:
								next.events["switchImage"]();
							break;
							case 37:
							case 38:
							case 80:
								prev.events["switchImage"]();
							break;
							case 27:
								WIN.removeEvent("keydown", keyListen); hg.remove(); jg.remove(); 
							break;
						}
				}
				
				var hg = NodeBuilder.createNode("div", new Attribute({id : "hg", style : " width: 100%; height: " + getPageSize().h + "px; position: absolute; top: 0px; left: 0px; background-color: #000000;" }));	
				hg.setCSSOpacity(40);
				
				NodeBuilder.BODY.appendChild(hg.getHTML());
				
				var jg = NodeBuilder.createNode("div", new Attribute({id : "jg", style : " width: 100%; height: 600px; left: 0px; position: absolute; " }));	
				var ig = NodeBuilder.createNode("div", new Attribute({id : "ig", style : " background-color: #ffffff; margin: 0px auto; width: 840px; position: relative; height: 640px;" }));	
				
				var next = NodeBuilder.createNode("div", new Attribute({id : "next", style : " width: 50%; height: 600px; left: 50%; margin-top: 20px; z-index: 10; top: 0px; background-image: url(empty.gif); position: absolute; display: block; " }));	
				var prev = NodeBuilder.createNode("div", new Attribute({id : "prev", style : " width: 50%; height: 600px; left: 0px; margin-top: 20px; z-index: 10; top: 0px; background-image: url(empty.gif); position: absolute; display: block; " }));	
				
				var top = window.pageYOffset || (document.body.scrollTop || document.documentElement.scrollTop);

				var anzeigeHeight = self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
				var pTop = 100;
				if(anzeigeHeight < 640)
				{	pTop = 0; top = 0;}
				jg.getHTML().style.top = (top + pTop) + "px";
				
				var imgObj = null;
				var url = img.getHTML().src;
				url = url.substr(0, url.indexOf("?"));
				var iSize = getDimension(url);
				
				ig.getHTML().style.width = (iSize.w + 40) + "px";
				ig.getHTML().style.height = (iSize.h + 40) + "px";
				
				imgObj = NodeBuilder.createNode("img", new Attribute({src : img.getHTML().src.replace(/(.{1}\.jpg)/, "B.jpg") , style : "margin: 20px; z-index: 2; position: absolute;"}));
				img = imgObj.getHTML();
				
				next.addEvent("mouseover", function() { this.style.background = "url(" + HOST +  "nextlabel.gif) no-repeat right 15%"; }, null, next.getHTML());
				next.addEvent("mouseout", function() { this.style.background = "url(" + HOST +  "empty.gif) repeat "; }, null, next.getHTML());
				next.addEvent("click", switchImage, {img: imgObj, miniImage: orgImg, next: next, prev: prev, mode : 1});
				
				prev.addEvent("mouseover", function() { this.style.background = "url(" + HOST +  "prevlabel.gif) no-repeat left 15%"; }, null, prev.getHTML());
				prev.addEvent("mouseout", function() { this.style.background = "url(" + HOST +  "empty.gif) repeat "; }, null, prev.getHTML());
				prev.addEvent("click", switchImage, {img: imgObj, miniImage: orgImg, next: next, prev: prev, mode : 2});
				
				WIN.addEvent("keydown", keyListen, {});
				
				hg.getHTML().onclick = function() { WIN.removeEvent("keydown", keyListen); hg.remove(); jg.remove(); };
				jg.getHTML().onclick = function(e) {  e = e || window.event; var tg = e.srcElement || e.target; if(tg == this) { WIN.removeEvent("keydown", keyListen); jg.remove(); hg.remove();} };
			
				
				
				ig.getHTML().appendChild(img);
				ig.getHTML().appendChild(next.getHTML());
				ig.getHTML().appendChild(prev.getHTML());
				jg.getHTML().appendChild(ig.getHTML());
				NodeBuilder.BODY.appendChild(jg.getHTML());
				
				hg.getHTML().style.height = (getPageSize().h + 40) + "px";
				
				if(anzeigeHeight > 640)
				window.onscroll = function () {
					
					var top = window.pageYOffset || (document.body.scrollTop || document.documentElement.scrollTop);
					jg.getHTML().style.top = (top + pTop) + "px";
					//hg.getHTML().style.top = (top) + "px";
				}
			};
			

	NEnergy.DomLoader.add("galerie", function() { new Galerie().init() } );
})();

