(function()
{
	
	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 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 NodeBuilder() { }

	NodeBuilder.HEAD = document.getElementsByTagName('head')[0];
	NodeBuilder.BODY = null;
	NEnergy.DomLoader.add("galerie1", function() { NodeBuilder.BODY = document.getElementsByTagName('body')[0]; } );
	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.className = args.attr['class'];
					delete args.attr['class'];
				}
			}
			
			for(var index in args.attr)
			{
				ele.setAttribute(index, args.attr[index]);
			}
		}
		
		return (ele);
	};
	
	function setCSSOpacity (ele, num)
	{
		if(num != null)
		{
			ele.style.opacity = (num/100);
			ele.style.MozOpacity = (num/100);
			ele.style.filter = 'Alpha(opacity=' + num + ')'; 
		}
		else
		{
			ele.style.opacity = "";
			ele.style.MozOpacity = "";
			ele.style.filter = ''; 
		}
	}
	
	function Beherbegungen()
	{
		this.contentLayer = null;
		this.hgLayer = null;
		this.displayLayer = null;
		this.ids = [];
		this.id = 0;
		
		this.init();
		
	}

	Beherbegungen.prototype.init = function()
	{
		var htmlNode = document.getElementsByTagName("html")[0];
		var bodyNode = document.getElementsByTagName("body")[0];
		
		
		// http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAjL4lHdCJ3e1MDbq71jFb5BQ2xeDiXyOyH333qD8tKKFJ61QFtRTsjuSkbiDaRdpoZimcOUttgyiMZw
		
		/*var scripts = document.getElementsByTagName("script");
		for(var i = 0, max = scripts.length; i < max; ++i)
		{
			var script = scripts[i];
			if(script.src && script.src.indexOf("beherbergung.js") > -1)
			{
				this.ids = script.src.match(/beherbergung.js\?ids=(.*)/)[1].split(",");
			}
		}*/
		
		this.ids = beherbergung.ids.split(",");
		
		
		var hgLayer = NodeBuilder.createNode("div", {style : "position: absolute; width: 100%; top: 0px; left: 0px; z-index: 11; display: none; background-color: #000000; height: "+ Math.max(htmlNode.scrollHeight, bodyNode.scrollHeight) +"px "});
		
		setCSSOpacity(hgLayer, 70);
		var wait = setInterval(function() {
			hgLayer.style.height = Math.max(htmlNode.scrollHeight, bodyNode.scrollHeight) + "px";
													
			}, 5000);
		NodeBuilder.BODY.appendChild(hgLayer);
		
		
		var displayLayer = NodeBuilder.createNode("div", {style : "position: absolute; display: none; width: 100%; top: 0px; left: 0px; z-index: 11;   "});
		var displayContentLayer = NodeBuilder.createNode("div", {style : "width: 630px; margin: 20px auto; padding: 10px; position: relative; color: #1C4070; background-color: #ffffff; "});
		displayLayer.appendChild(displayContentLayer);
		NodeBuilder.BODY.appendChild(displayLayer);
		
		this.contentLayer = displayContentLayer;
		this.hgLayer = hgLayer;
		this.displayLayer = displayLayer;
		
		hgLayer.onclick = function() { hgLayer.style.display = "none"; displayLayer.style.display = "none"; return false; };
		displayLayer.onclick = function(evt) {
			evt = evt || window.event;
			
			var ele = evt.target || evt.srcElement;
		
			if(ele == displayLayer)
			{
				hgLayer.style.display = "none"; 
				displayLayer.style.display = "none";
			} 
		};
		
		displayContentLayer.innerHTML = "a";
		var ref = this;
		function addClick(ele, para)
		{
			
			ele.onclick = function() 
			{ 
				ref.id = para.id;
				hgLayer.style.display = "block"; 
				displayLayer.style.display = "block"; 
				displayContentLayer.innerHTML = "<div style=\"text-align: center\"><img src=\"wait.gif\"></div>";
				new xhr({post: "XHR:DATA=&XHR:ID=" + para.id, res : "obj"}).newReq(location.href, function(e) { ref.contentHandle(e) } );
			
				return false; 
			};
			
		}
		
		var nodes = document.getElementsByTagName("a");
		for(var i = 0, max = nodes.length; i < max; ++i)
		{
			var node = nodes[i];
			if(node.rel && node.rel.indexOf("beherbergunginfo") > -1)
			{
				var id = node.rel.match(/beherbergunginfo\[(\d+)\]/)[1];
				
				addClick(node, {id : id} );
				
			}
		}
		
	};
	
	Beherbegungen.prototype.contentHandle = function(erg)
	{
		var close = '<img src="close.jpg" id="BeherbergungCloseBtn" style="float: right; cursor: pointer;"><br style="clear: both;">';
		var next = '<img src="next.jpg" id="BeherbergungNextBtn" style="float: right; cursor: pointer;"><br style="clear: both;">';
		//window.scrollTo(0,0);
		
		this.displayLayer.style.top = (window.pageYOffset || (document.documentElement.scrollTop || document.body.scrollTop)) + "px";
		
		this.contentLayer.innerHTML = close + erg.a + "<br style=\"clear: both;\">" + next;
		eval(erg.s);
		var ref = this;
		var wait = setInterval(function()
		{ 
			if(load)
			{
				clearInterval(wait);
			
			load(); 
			myLytebox.updateLyteboxItems(); 
			$('BeherbergungCloseBtn').onclick = function() { 
				ref.hgLayer.style.display = "none"; 
				ref.displayLayer.style.display = "none"; 
			}; 
			$('BeherbergungNextBtn').onclick = function() { 
				ref.contentLayer.innerHTML = "<div style=\"text-align: center\"><img src=\"wait.gif\"></div>";
				var id = ref.ids[0];
				for(var i = 0, max = ref.ids.length; i<max; ++i)
				{
					if(ref.ids[i] == ref.id)
					{
						if(ref.ids[i+1])
							id = ref.ids[i+1];
						break;
					}
				}
				ref.id = id;
				new xhr({post: "XHR:DATA=&XHR:ID=" + id, res : "obj"}).newReq(location.href, function(e) { ref.contentHandle(e) } );
			}; 
			}
		}, 1000);
	};
	
	NEnergy.DomLoader.add("beherbergung.js", function() { new Beherbegungen();  } );

	/*var gMap = NodeBuilder.createNode("script", {type : "text/javascript", src : "http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAjL4lHdCJ3e1MDbq71jFb5BQ2xeDiXyOyH333qD8tKKFJ61QFtRTsjuSkbiDaRdpoZimcOUttgyiMZw"});
	NodeBuilder.HEAD.appendChild(gMap);*/
})();