(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+$/, '');
	};
	
	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.windowSize = function()
	{
		return {w : (window.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth) ),
				h : (window.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight) ) };
	};
	
	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 getPos(obj)
	{
		var left = 0;
		var top = 0;
		var ele = obj;
		
		left+= parseInt(ele.offsetLeft);
		top+= parseInt(ele.offsetTop);
		
		while( (ele = ele.parentNode))
		{
			if(ele.nodeType == 1)
			{
				left+= parseInt(ele.offsetLeft);
				top+= parseInt(ele.offsetTop);
			}
		}
		return [left, top];
	}
	
	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 = {};
		
		if(ele)
		{
			this.appendChild = function (obj) { if(obj.getHTML) obj = obj.getHTML(); this.htmlNode.appendChild(obj); };
		}
				
	}
	
	NodeElement.prototype.getHTML = function()
	{
		return this.htmlNode;
	};
	
	NodeElement.prototype.setHTML = function(ele)
	{
		this.htmlNode = ele;
	};
	
	NodeElement.prototype.setCSSOpacity = function(num)
	{
		if(num != null)
		{
			this.htmlNode.style.opacity = (num/100);
			this.htmlNode.style.MozOpacity = (num/100);
			this.htmlNode.style.filter = 'Alpha(opacity=' + num + ')'; 
		}
		else
		{
			this.htmlNode.style.opacity = "";
			this.htmlNode.style.MozOpacity = "";
			this.htmlNode.style.filter = ''; 
		}
	};
		
	NodeElement.prototype.addEvent = function(evt, func, arg, callObj, breakIt)
	{
		var funcName = func.toString().match(/function([^(]*)\(/)[1].trim();
		if(funcName != "")
		{
			var funcObj = function(e) { 
												if(arg)
													arg.evt = e || window.event;  
													
												if(breakIt)
												{
													arg.evt.cancelBubble = true;
													if(arg.evt.stopPropagation) arg.evt.stopPropagation();
													if(arg.evt.preventDefault) arg.evt.preventDefault();
													arg.evt.returnValue = false;
												}
												if(callObj)
													func.call(callObj, arg, callObj); 
												else
													func(arg); 
												};
			this.events[funcName] = funcObj;
			NEnergy.addEvent(this.htmlNode, evt, funcObj);
		}
		else
		{
		
		if(breakIt)
		{
			if(!this.htmlNode.onfocus)
				this.htmlNode.onfocus = function() { this.blur(); };
			else
			{
				var focu = this.htmlNode.onfocus;
				this.htmlNode.onfocus = function() { this.blur(); focu(); };
			}
		}
		
		if(arg)
		{
		
			var funcObj = function(e) { 
														  
												if(arg)
													arg.evt = e || window.event;  
												
												if(breakIt)
												{
													arg.evt.cancelBubble = true;
													if(arg.evt.stopPropagation) arg.evt.stopPropagation();
													if(arg.evt.preventDefault) arg.evt.preventDefault();
													arg.evt.returnValue = false;
												}

												if(callObj)
													func.call(callObj, arg, callObj); 
												else
													func(arg); 
												 };
			this.events[func.toString().length + "" + evt] = funcObj;

			NEnergy.addEvent(this.htmlNode, evt, funcObj);
		}
		else
			NEnergy.addEvent(this.htmlNode, evt, function() { 
												if(callObj)
													func.call(callObj, null); 
												else
													func();  });
		}
	};
		
	NodeElement.prototype.removeEvent = function(evt, func)
	{
		if(typeof(func) == "string")
		{
			var funcName = func;
		}
		else
		{
			var funcName = func.toString().match(/function(.*)\(/)[1].trim();
			if(funcName == "")
			{
				funcName = func.toString().length + "" + evt;
			}
		}
		
																	   
		if(funcName != "" && this.events[funcName])
		{
			NEnergy.removeEvent(this.htmlNode, evt, this.events[funcName]);
			delete this.events[funcName];
		}
	};
	
	NodeElement.prototype.remove = function()
	{
		var parent = this.htmlNode.parentNode;
		parent.removeChild(this.htmlNode);
	};
	
	NodeElement.prototype.setStyle = function(attr)
	{
		if(attr)
		{
			if(attr.attribute)
				attr = attr.attribute;
			
			for(var index in attr)
			{
				this.htmlNode.style[index] = attr[index];
			}
		}
	};
	
	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'], ['kennung', 'parent', 'attr'] ]);
			if(!args.parent)
			{
				var erg = document.getElementsByTagName(kennung);
			}
			else
			{
				var erg = args.parent.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.getAttribute(index) || ele.getAttribute(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.IEVersion = (navigator.appVersion.indexOf("MSIE") != -1) ? parseFloat(navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5)) : 0; 
	
	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 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 oldIEAlphaPNG()
	{
		var pfad = document.getElementById("briefmarke").firstChild.src;
		pfad = pfad.substr(0, pfad.indexOf("images/"));
		var anz = document.getElementsByTagName("img").length;
		for(var i = 0; i < anz; i++)
		{
			var img = document.getElementsByTagName("img")[i];
			
			if(img.src.indexOf(".png") > -1 )
			{
				var oldSrc = img.src;
				img.style.width = img.width + "px";
				img.style.height = img.height + "px";
				img.src = pfad + "images/leer.gif";
				img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + oldSrc + "',sizingMethod='cope')";
				/*img.style.backgroundColor = '#ff0000';*/
			}
		}
	}

	
	function AnimateTextLikeAS()
	{
		this.chars = "a!b<cde{f%eg?hi>j[klmo$p-q(rst)uvw_xy]z1=234}56/7890";
		this.charsLength = this.chars.length-1;
		AnimateTextLikeAS.mode = 0;
		AnimateTextLikeAS.ref = this;
	}

	AnimateTextLikeAS.prototype.charRepeat = function(char, num)
	{
		var t = "";
		for(var i = 0; i< num; ++i)
		{
			if(AnimateTextLikeAS.mode == 1) t+= char;
			else t+= AnimateTextLikeAS.ref.chars[AnimateTextLikeAS.ref.r(1,AnimateTextLikeAS.ref.charsLength)];	
		}
		return t;
	};
		
	AnimateTextLikeAS.prototype.r = function(min, max)
	{
		return Math.floor(Math.random() * (max - min + 1)) + min;
	};
		
	AnimateTextLikeAS.prototype.trim = function(s)
	{
		return s.replace (/^\s+/, '').replace (/\s+$/, '');
	};
		
	AnimateTextLikeAS.prototype.showText = function(orgText, node)
	{
		var charEffect = function(charNum, n, max)
		{
			++n;
			if(n < max)
			{
				if(orgText[charNum].charCodeAt(0) < 96)
				{
					node.nodeValue = node.nodeValue.substr(0, charNum ) + AnimateTextLikeAS.ref.chars[AnimateTextLikeAS.ref.r(1,AnimateTextLikeAS.ref.charsLength)].toUpperCase() + node.nodeValue.substr(charNum + 1);
				}
				else
				{
					node.nodeValue = node.nodeValue.substr(0, charNum ) + AnimateTextLikeAS.ref.chars[AnimateTextLikeAS.ref.r(1,AnimateTextLikeAS.ref.charsLength)] + node.nodeValue.substr(charNum + 1);
				}
				setTimeout(function() { charEffect(charNum, n, max); }, (max-n)*10);				
			}
			else
			{
				node.nodeValue = node.nodeValue.substr(0, charNum ) + orgText[charNum] + node.nodeValue.substr(charNum + 1);
			}
		};
			
		var nextChar = function(charNum)
		{
			if(charNum != orgText.length)
			{
				charEffect(charNum, 0, AnimateTextLikeAS.ref.r(5, 20));
				setTimeout(function() { nextChar(++charNum); }, 50);
			}
		};
			
		setTimeout(function() { nextChar(0); }, 100);
	};

	AnimateTextLikeAS.prototype.startAniChars = function(text, node, t)
	{
		node.nodeValue = this.charRepeat(" ", text.length);
		setTimeout(function() {AnimateTextLikeAS.ref.showText.call(AnimateTextLikeAS.ref, text, node); }, t );
	};

	AnimateTextLikeAS.prototype.run = function()
	{
		var h1s = document.getElementsByTagName("p"); 
		for(var i = 0, max = h1s.length; i < max; ++i)
		{
			var te = 0;
			for(var j = 0, maxNodes = h1s[i].childNodes.length; j < maxNodes; ++j)
			{
				if(h1s[i].childNodes[j].nodeType == 3)
				{
					this.startAniChars(this.trim(h1s[i].childNodes[j].nodeValue), h1s[i].childNodes[j], te );
					te+= (this.trim(h1s[i].childNodes[j].nodeValue).length * 100 );
				}
			}
		}
	};
	
	
	function Art()
	{
		this.c = 0;
		this.myArray = {Home : "hg_water_home.png", Unternehmen : "hg_water_unternehmen.png", Portfolio : "hg_water_portfolio.png", Referenzen : "hg_water_referenzen.png", Kontakt : "hg_water_service.png", Service : "hg_water_service.png"};
		this.marken = new Array();
		
		this.pages = new Array("home");
		
		this.content = new NodeElement(document.getElementById("content"));
		this.rahmen = new NodeElement(document.getElementById("rahmen"));
		
		this.orgMoved = null;
		this.copMoved = null;
		this.copMoved2 = null;
		this.movedPos = 0;
		this.intervalShowContent = null;
		this.intervalMoveHg = null;
		this.akPage = "";
		this.requestErg = null;
		
		Art.ref = this;
		
		new xhr({"post" : "time=", "res" : "obj"}).newReq( "./xhr/loadData.frontend.php?xhr=loadData", function(ele)
		{
			Art.ref.init(ele);
		});
		
	}
	
	Art.prototype.init = function(ele)
	{
		
		this.marken = ele.images;
		this.pages = ele.pages;
		this.siteRequest = null;
		
		function arrayShuffle(arr){
			  var tmp, rand;
			  for(var i =0; i < arr.length; i++){
			    rand = Math.floor(Math.random() * arr.length);
			    tmp = arr[i]; 
			    arr[i] = arr[rand]; 
			    arr[rand] =tmp;
			  }
			  return arr;
			}
		this.marken = arrayShuffle(this.marken);

		var next = NodeBuilder.isExists("#linkNext");
		var right = NodeBuilder.isExists("#linkPrev");
		
		/*for(var i = 0, max = this.marken.length; i  < max; ++i)
		{
			new Image().src = "showImgResize.php?postkarte&file=" + Art.ref.marken[i];
		}*/
		
		
		var file = "";
		if(window.location.href.indexOf("?page=") > -1)
		{
			var paras = window.location.search.replace(/\?/, "").split("&");
			for(var i = 0, max = paras.length; i < max; ++i)
			{
				if(paras[i].indexOf("page=") > -1)
				{
					file = paras[i].replace(/page=/, "");
					break;
				}
			}
		}
		else
		{
			var pfade = window.location.pathname.split("/");
			file = pfade[pfade.length-1].replace(/\.html/, "").split(",")[0];
		}
		
		if(file == "")
			file = "home";
		this.akPage = file;
		
		if(!NodeBuilder.isIE || (NodeBuilder.isIE && NodeBuilder.IEVersion >= 7))
		{
			next.addEvent("click", this.moveLeft, {}, this );
			right.addEvent("click", this.moveRight, {}, this );
			
			/*var page = "";
			if(location.href.indexOf(".html") > -1)
			{
				page = location.href.match(/(\w+)\.html/)[1];
			}*/
			
			for(var i = 0, max = this.pages.length; i < max; ++i)
			{
				if(this.akPage == this.pages[i].a)
					this.c = i;
			}

			var showNavi = function(c)
			{
				next.setCSSOpacity(c);
				right.setCSSOpacity(c);
				c+= 15;
				if(c > 90)
				{
					next.setCSSOpacity(null);
					right.setCSSOpacity(null);
				}
				else
					setTimeout(function() { showNavi(c); }, 50);
			};
			showNavi(0);
			next.getHTML().style.display = "block";
			right.getHTML().style.display = "block";
			
		}
		if(NodeBuilder.isIE && NodeBuilder.IEVersion == 6)
			oldIEAlphaPNG();
		
		this.pfad = "uploads/design/"; 
		

		
		
		this.marke();
		this.kundenmeinung();
		this.kontakt();
		this.referenzen();
		this.listenUri();
		
		this.isPopupOpen = false;
		
		var node = NodeBuilder.isExists("#kontakt2");
		if(node != null)
		{
			var kontakt = node.addEvent("click", this.showKontaktPopup, {}, this);
		}

		
	};
	
	Art.prototype.listenUri = function()
	{
		var hash = window.location.hash.replace(/#/, "");
		
		if(hash != "")
		{
			if(hash != Art.ref.akPage)
			{
				var x = -1;
				var c = -1;
				for(var i = 0, max = Art.ref.pages.length; i < max; ++i)
				{
					if(Art.ref.akPage == Art.ref.pages[i].a)
					{
						x = i;
					}
					
					if(hash == Art.ref.pages[i].a)
					{
						c = i;
						break;
					}
				}
				
				if(x == -1)
					x = c+1;
				
				
				Art.ref.akPage = hash;
				if(c != -1)
				{
					if(x < c)
						Art.ref.moveLeft(c);
					else
						Art.ref.moveRight(c);
				}
				
			}
		}
		
		setTimeout(Art.ref.listenUri, 1000);
	};
	
	
	/**
	 * <ZakobJoa> heutzutage muss man vorsichtig sein mit freakig anziehen. da versucht man aufzufallen und - ZACK - hat man ne neue subkultur mit ner million anhängern.
	 */
	Art.prototype.marke = function()
	{
		
		var briefmarkeLink = document.getElementById("briefmarkeLink");
		var briefmarke = document.getElementById("briefmarke");
		
		var countMarke = 0;
	
		var switchMarkeInterval = function()
		{
			if(Art.ref.intervalMoveHg == null)
			{	
				var org = new NodeElement(briefmarke.firstChild);
				var cop = org.getHTML().cloneNode(true);
				
				++countMarke;
				if(countMarke > Art.ref.marken.length-1)
					countMarke = 0;
								
				briefmarkeLink.firstChild.href = "uploads/images/fotos/" + Art.ref.marken[countMarke] + ".jpg";
				cop.src = "showImgResize.php?postkarte&file=" + Art.ref.marken[countMarke];
				
				org.getHTML().parentNode.insertBefore(cop, org.getHTML());
				
				if(NodeBuilder.isIE)
				{
					var wait = setInterval(function()
							{
								if(cop.complete)
								{
									clearInterval(wait);
									
									var i = 100;
									var switchmarke = function() 
									{
										i-= 10;
																	
										org.setCSSOpacity(i);
										if(i < 10)
										{
											org.remove();
										}
										else
										{
											setTimeout(switchmarke, 40);
										}
									};
									switchmarke();
								}
							}, 100);
				}
				else
				{
					
					cop.onload = function()
					{
						var switchmarke = function(opa) 
						{
							opa-= 10;
														
							org.setCSSOpacity(opa);
							
							if(opa < 10)
							{
								org.remove();
							}
							else
							{
								setTimeout(function() { switchmarke(opa); }, 50);
							}
						};
						switchmarke(100);
					};
					
					
				}
			}
			setTimeout(switchMarkeInterval, 10000);
		};

		setTimeout(switchMarkeInterval, 10000);

		function isNodeFromRoot(node, rootNode)
		{
			
			if(node == rootNode)
				return true;
			
			while(node = node.parentNode)
			{
				if(node.tagName == "BODY")
					break;
				if(node == rootNode)
					return true;
			}
			return false;
		}
		
		document.onclick = function(e)
		{
			e = e || window.event;

			if(Art.ref.isPopupOpen)
			{
				if(e.target || e.srcElement)
				{
					if(document.getElementById("airmail"))
						if(!isNodeFromRoot( ( e.target || e.srcElement), document.getElementById("airmail")))
						{
							new NodeElement(document.getElementById("airmail").parentNode).remove();
							Art.ref.isPopupOpen = false;
						}
					
					if(document.getElementById("referenzenPopup"))
						if(!isNodeFromRoot( ( e.target || e.srcElement), document.getElementById("referenzenPopup")))
						{
							new NodeElement(document.getElementById("referenzenPopup").parentNode).remove();
							Art.ref.isPopupOpen = false;
						}
					
					if(document.getElementById("kundenmeinungPopup"))
						if(!isNodeFromRoot( ( e.target || e.srcElement), document.getElementById("kundenmeinungPopup")))
						{
							new NodeElement(document.getElementById("kundenmeinungPopup").parentNode).remove();
							Art.ref.isPopupOpen = false;
						}
				}
			}
		};
		
	};
	
	Art.prototype.kundenmeinung = function()
	{
		var readObj = null;
		var org = NodeBuilder.isExists("#bottom-feedback");
		
		var i = 100;
		
		for(var temp = 0; temp < org.getHTML().childNodes.length; ++temp)
		{
			if(org.getHTML().childNodes[temp].nodeType == 1 && org.getHTML().childNodes[temp].id)
			{
				org.addEvent("click", Art.ref.showKundenmeinungPopup, {i: org.getHTML().childNodes[temp].id.replace(/kum/, "")}, this);
			}
		}
		
		
		var einblenden = function(opa, ele) 
		{
			opa+= 10;
			org.setCSSOpacity(opa);
			if(opa > 90)
			{
				org.setCSSOpacity(null);
				org.addEvent("click", Art.ref.showKundenmeinungPopup, {i: ele.i}, this);
			}
			else
				setTimeout(function() { einblenden(opa, ele); }, 50);
		};
		
		var ausblenden = function(opa, ele) 
		{
			opa-= 10;
			org.setCSSOpacity(opa);
			if(opa < 10)
			{
				org.setCSSOpacity(0);
				org.getHTML().innerHTML = ele.n;
				einblenden(10, ele);
			}
			else
				setTimeout(function() { ausblenden(opa, ele); }, 50);
		};
		
		setInterval(function()
		{
			if(Art.ref.intervalMoveHg == null)
			{	
			
				var d = new Date();
				readObj = new xhr({"post" : "time=", "res" : "obj"}).newReq( "./xhr/kundenmeinung.frontend.php?xhr=kundenmeinung", function(ele)
				{  
					org.removeEvent("click", Art.ref.showKundenmeinungPopup);
					ausblenden(100, ele);
				});
			}
		}, 20000); // 20000
	};

	
	Art.prototype.kontakt = function()
	{
		var node = NodeBuilder.isExists("#kontaktLetter");
		if(node != null)
		{
			var kontakt = node.addEvent("click", this.showKontaktPopup, {}, this);
		}
	};
	
	Art.prototype.showKontaktPopup = function()
	{
		
		if(NodeBuilder.isExists("#airmailRahmen"))
			return;
		
		var org = NodeBuilder.isExists("#kontaktLetter");
		
		if(org == null)
		{
			org = NodeBuilder.isExists("#space");
		}
		
		var node = NodeBuilder.createNode("div", {id : "airmailRahmen", style : "background: url(uploads/design/images/service_formular.png) no-repeat transparent; width: 595px; z-index: 10; position: absolute; top: 10px; left: 60px; height: 433px;"});
		org.getHTML().parentNode.appendChild(node.getHTML());

		function fromResponse(erg)
		{
			document.getElementById("c").style.display = "none";
			alert(erg.t);
			if(erg.e == 404)
			{
				document.getElementById("c").src = "uploads/design/images/leer.gif";
				document.getElementById("c").src = "imgC/capta.php?token=" + erg.d;
				NodeBuilder.isExists("input", {name : "^x$"})[0].getHTML().value = erg.d; 
				document.getElementById("c").style.display = "";
			}
			else
			{
				
				var airmailNode = new NodeElement(document.getElementById("airmailRahmen"));
				var hideAirMail = function(posLeft, zielPosLeft, AirmailNode)
				{
					posLeft-= 100;

					AirmailNode.getHTML().style.left = posLeft + "px";
					if(posLeft < zielPosLeft)
					{
						AirmailNode.remove();
					}
					else{
						setTimeout(function() {hideAirMail(posLeft, zielPosLeft, AirmailNode);}, 50);}
				};		

				hideAirMail(parseInt(airmailNode.getHTML().style.left), -(getLeftPos(airmailNode.getHTML()) - parseInt(airmailNode.getHTML().style.left) + (parseInt(airmailNode.getHTML().style.width))) , airmailNode);
				Art.ref.isPopupOpen = false;
			}
			
			
		}
		
		function submitArgument(arg)
		{
			var t = NodeBuilder.isExists("#t").getHTML(); 
			t.value = new Date().getTime(); 
			
			
			var elements = arg.popupForm.getHTML().elements;
			for(var i = 0, max = elements.length; i < max; ++i)
			{
				if(elements[i].tagName == "INPUT" && elements[i].type != "submit" && elements[i].type != "button" && elements[i].type != "hidden")
				{
					elements[i].clearSubmit();
				}
			}
			
			var wait2 = setInterval(function() 
			{ 
				if(window['erg' + t.value]) 
				{ 
					clearInterval(wait2); 
					fromResponse(window['erg' + t.value]); 
				} 
			}, 1000); 
		}
		
		function clearMe(orgText, input)
		{
			input.onfocus = function()
			{
				if(this.value == orgText)
					this.value = "";
			};
			input.onblur = function()
			{
				if(this.value == "")
					this.value = orgText;
			};
			input.clearSubmit = function()
			{
				if(this.value == orgText)
					this.value = "";
			};
		}
		
		new xhr({"post" : "time=" + this.myArray[this.pages[this.c].c].match(/hg_water_(\w+)\.png/)[1], "res" : "obj"}).newReq( "./xhr/kontaktformular.xhr.php?xhr=kontaktformular", function(ele) { 
			node.getHTML().innerHTML = ele.src;
			
			var wait = setInterval(function() 
			{
				if(document.getElementById("kontaktPopupForm"))
				{
					clearInterval(wait);
					Art.ref.isPopupOpen = true;
					
					var iframe = NodeBuilder.createNode("iframe", "sendIframe", {style : "display: none;"});
					
					var popupForm = new NodeElement(document.getElementById("kontaktPopupForm"));
					popupForm.addEvent("submit", submitArgument, {popupForm:popupForm});
					popupForm.getHTML().target = "sendIframe";
					popupForm.getHTML().action = "./xhr/kontaktformular.xhr.php?xhr=kontaktformular&sendData=";
					popupForm.getHTML().parentNode.appendChild(iframe.getHTML());
					popupForm.getHTML().appendChild( NodeBuilder.createNode("input", "t", {id : "t", type : "hidden"}).getHTML() );

					var elements = popupForm.getHTML().elements;
					for(var i = 0, max = elements.length; i < max; ++i)
					{
						if(elements[i].tagName == "INPUT" && elements[i].type != "submit" && elements[i].type != "button")
						{
							clearMe(elements[i].value, elements[i]);
						}
					}
					
					new NodeElement(document.getElementById("btnClosePopup")).addEvent("click", function() {
					var a = document.getElementById("airmail").parentNode;
						new NodeElement(document.getElementById("airmail").parentNode).remove();
					}, {});
				}
			}, 100);
		} );
	};
	
	Art.prototype.referenzen = function()
	{
		var node = NodeBuilder.isExists("a", {id : "referenzen_(.*)"});
		for(var i = 0, max = node.length; i < max; ++i)
		{
			var id = node[i].getHTML().id.match(/referenzen_(.*)/)[1];
			
			var r = "";
			if(node[i].getHTML().rel)
			{
				r = node[i].getHTML().rel;
			}
			
			var kontakt = node[i].addEvent("click", this.showReferenzPopup, {i: id, rel : r}, this);
		}
	};
	
	Art.prototype.showReferenzPopup = function(arg)
	{
		arg.evt.cancelBubble = true;
		if(arg.evt.stopPropagation) arg.evt.stopPropagation();
		if(arg.evt.preventDefault) arg.evt.preventDefault();
		arg.evt.returnValue = false;
		
		var org = NodeBuilder.isExists("#space");
		var node = NodeBuilder.createNode("div", {style : "background: url(uploads/design/images/referenzen_hg.png) no-repeat transparent; width: 900px; z-index: 10; position: absolute; top: -15px; left: -80px; height: 600px;"});
		org.getHTML().parentNode.appendChild(node.getHTML());
		node.getHTML().innerHTML = '<div style="padding-top: 30px; padding-left: 30px">lädt...</div>';
		
		new xhr({"post" : "time=" + arg.i + "&rel=" + arg.rel, "res" : "obj"}).newReq( "./xhr/referenzen.xhr.php?xhr=referenzen", function(ele) { 
			node.getHTML().innerHTML = ele.src;
			
			var wait = setInterval(function() 
			{
				if(document.getElementById("referenzenPopup"))
				{
					clearInterval(wait);
					Art.ref.isPopupOpen = true;
					
				
					new NodeElement(document.getElementById("referenzPoupUpPrevBtn")).addEvent("click", function(e) 
					{
						var i = document.getElementById("referenzPoupUpPrevBtn").alt;
						new NodeElement(document.getElementById("referenzenPopup").parentNode).remove();
						
						Art.ref.showReferenzPopup({i: i, evt : e.evt, rel : arg.rel});
					}, {});
					new NodeElement(document.getElementById("referenzPoupUpNextBtn")).addEvent("click", function(e)
					{
						var i = document.getElementById("referenzPoupUpNextBtn").alt;
						new NodeElement(document.getElementById("referenzenPopup").parentNode).remove();
						
						Art.ref.showReferenzPopup({i: i, evt : e.evt, rel : arg.rel});
						
					}, {});
				}
			}, 100);
		} );
	};
	
	Art.prototype.showKundenmeinungPopup = function(arg)
	{
		arg.evt.cancelBubble = true;
		if(arg.evt.stopPropagation) arg.evt.stopPropagation();
		if(arg.evt.preventDefault) arg.evt.preventDefault();
		arg.evt.returnValue = false;
		
		var org = NodeBuilder.isExists("#space");
		var node = NodeBuilder.createNode("div", {style : "background: url(uploads/design/images/referenzen_hg.png) no-repeat transparent; width: 900px; z-index: 10; position: absolute; top: -15px; left: -80px; height: 600px;"});
		org.getHTML().parentNode.appendChild(node.getHTML());
		node.getHTML().innerHTML = '<div style="padding-top: 30px; padding-left: 30px">lädt...</div>';
		
		new xhr({"post" : "time=" + arg.i, "res" : "obj"}).newReq( "./xhr/kundenmeinung.frontend.php?xhr=show", function(ele) { 
			node.getHTML().innerHTML = ele.src;
			
			var wait = setInterval(function() 
			{
				if(document.getElementById("kundenmeinungPopup"))
				{
					clearInterval(wait);
					Art.ref.isPopupOpen = true;
					
				
					new NodeElement(document.getElementById("referenzPoupUpPrevBtn")).addEvent("click", function(e) 
					{
						var i = document.getElementById("referenzPoupUpPrevBtn").alt;
						new NodeElement(document.getElementById("kundenmeinungPopup").parentNode).remove();
						
						Art.ref.showKundenmeinungPopup({i: i, evt : e.evt});
					}, {});
					new NodeElement(document.getElementById("referenzPoupUpNextBtn")).addEvent("click", function(e)
					{
						var i = document.getElementById("referenzPoupUpNextBtn").alt;
						new NodeElement(document.getElementById("kundenmeinungPopup").parentNode).remove();
						
						Art.ref.showKundenmeinungPopup({i: i, evt : e.evt});
						
					}, {});
				}
			}, 100);
		} );
	};
	
	Art.prototype.moveHg = function (para) {
		
		para.movedPos+= 50;
		
		if(para.out)
		{
			if(para.movedPos <= 1000 + this.rahmen.getHTML().offsetLeft)
			{
				setTimeout(function() { Art.ref.moveHg( para ); }, 50);
			}
		}

		if(para.movedPos <= 480)
		{
			this.copMoved.style.width = (para.movedPos) + "px";
		}
		else
		{
			this.copMoved.style.width = "480px";
			this.copMoved.style.right = ((-this.rahmen.getHTML().offsetLeft) + para.movedPos - 480) + "px";
			
			if(para.movedPos-570 <= 570)
			{
				if(para.movedPos > 570)
				this.copMoved2.style.width = (para.movedPos-570) + "px";
			}
			else
			{
				this.copMoved2.style.width = "570px";
				this.copMoved2.style.right = ((-this.rahmen.getHTML().offsetLeft) + para.movedPos - 1130) + "px";
			}
		}
		
		if(para.movedPos > 1000 + this.rahmen.getHTML().offsetLeft)
		{
			this.copMoved.style.width = "1130px";
			this.copMoved.style.right = "-130px";
			this.copMoved2.style.width = "570px";
			this.copMoved2.style.right = "-130px";
			
			this.copMoved.id = "moved_hg";
			setTimeout(function() { Art.ref.copMoved.parentNode.removeChild(Art.ref.copMoved2); Art.ref.copMoved2 = null;  }, 50);

			clearInterval(para.interval);
			Art.ref.intervalMoveHg = null;
			var nodes = NodeBuilder.isExists("#mainmenu").getHTML().childNodes;
			var name = this.myArray[this.pages[this.c].c].match(/hg_water_(\w+)\.png/)[1];

			NodeBuilder.isExists("link", {rel : "next"})[0].getHTML().href = (this.pages[ ((this.c+1 > this.pages.length-1) ? 0 : this.c+1) ].a) + ".html";
			NodeBuilder.isExists("link", {rel : "prev"})[0].getHTML().href = (this.pages[ ((this.c-1 < 0) ? this.pages.length-1 : this.c-1) ].a) + ".html";
			
			if(this.pages[this.c].a == "kontakt")
				name = "kontakt";
			
			for(var i = 0, max = nodes.length; i < max; ++i)
			{
				var node = nodes[i];
				if(node.nodeType == 1)
				{
					if(node.href.indexOf(name) > -1)
					{
						if(node.firstChild.src.indexOf("-ak") == -1)
							node.firstChild.src = node.firstChild.src.replace(/\.png/, "-ak.png");
					}
					else if(node.firstChild.src.indexOf("-ak.png") > -1)
					{
						node.firstChild.src = node.firstChild.src.replace(/-ak\.png/, ".png");
					}
				}
			}
	
			Art.ref.waitForContent();

		}

	};
	
	Art.prototype.showContent = function(c)
	{
		Art.ref.content.setCSSOpacity(c);
		c+=10;
		if(c > 90 )
		{
			Art.ref.content.setCSSOpacity(null);
			clearInterval(Art.ref.intervalShowContent);
			
			Art.ref.kontakt();
			Art.ref.referenzen();
		}
		else
			setTimeout(function() {Art.ref.showContent(c);}, 50);
	};
	
	
	Art.prototype.waitForContent = function() 
	{
		if(Art.ref.requestErg != null)
		{
			NodeBuilder.isExists("#space").getHTML().innerHTML = Art.ref.requestErg.n;
			document.title = Art.ref.requestErg.t;
			window.location.hash = "#" + Art.ref.requestErg.a;
			Art.ref.akPage = Art.ref.requestErg.a;
			if(!Art.ref.requestErg.noHG)
			{
				NodeBuilder.isExists("#space").getHTML().parentNode.className = "hg";
			}
			else
			{
				NodeBuilder.isExists("#space").getHTML().parentNode.className = "hgclear";
			}
			Art.ref.requestErg = null;
			setTimeout(function() {Art.ref.showContent(0);}, 50);
		}
		else
			setTimeout(function() {Art.ref.waitForContent();}, 500);
	};
	
	Art.prototype.moveLeft = function()
	{
		
		this.movedPos = 0;
		Art.ref.intervalShowContent = null;
		
		
		var orgMovedHg = document.getElementById("moved_hg");
		var windowSize = NEnergy.windowSize();
		
		var copMovedHg = orgMovedHg.cloneNode(true);
		copMovedHg.style.right = (-this.rahmen.getHTML().offsetLeft) + "px";
		copMovedHg.style.width = "0px";
		var copMovedHg2 = copMovedHg.cloneNode(true);
	
		var i = 0;
	
		++this.c;
		if(this.c > this.pages.length-1)
			this.c = 0;
		
		if(arguments.length == 1 )
		{
			this.c = arguments[0];
		}
		
		
		
		copMovedHg.style.backgroundImage = "url(" + Art.ref.pfad + "images/" + this.myArray[this.pages[this.c].c] + ")";
		copMovedHg2.style.backgroundImage = "url(" + Art.ref.pfad + "images/" + this.myArray[this.pages[this.c].c].replace(/.png/, "2.png") + ")";
		orgMovedHg.parentNode.insertBefore(copMovedHg, orgMovedHg);
		orgMovedHg.parentNode.insertBefore(copMovedHg2, orgMovedHg);
	
		copMovedHg.style.width = "4px";
		copMovedHg2.style.width = "5px";
	
		var neOrgMovedHg = new NodeElement(orgMovedHg);
		
		this.orgMoved = new NodeElement(orgMovedHg);
		this.copMoved = copMovedHg;
		this.copMoved2 = copMovedHg2;
		
		var co = 100;
		var intervalMove = 0;
		
		Art.ref.intervalMoveHg = true;

		if(this.siteRequest != null)
		{
			this.siteRequest.abort();
			this.requestErg = null;
			
		}

		this.siteRequest = new xhr({"post" : "time=" + this.pages[this.c].i, "res" : "obj"}).newReq( "./xhr/pageswitch.frontend.php?xhr=pageswitch", function(ele) { Art.ref.requestErg = ele; Art.ref.siteRequest = null; } );

		var hideContent = false;
		if(!Art.ref.content.getHTML().style.opacity)
			var hideContent = true;

		Art.ref.hideContent({ co : 100, hideContent : hideContent, moveHg : { displayFunc : Art.ref.moveHg, interval : intervalMove, movedPos : 0, out : true} });
		
	};
	
	
	Art.prototype.moveHg2 = function (para)
	{
		
		para.movedPos+= 50;
		
		if(para.out)
		{
			if(para.movedPos <= 1000 + this.rahmen.getHTML().offsetLeft)
			{
				setTimeout(function() { Art.ref.moveHg2( para ); }, 50);
			}
		}
		
		if(para.movedPos <= 570)
		{
			this.copMoved.style.width = (para.movedPos) + "px";
			this.copMoved.style.right = ((this.rahmen.getHTML().offsetLeft) - para.movedPos + 1000) + "px";
		}
		else
		{
			this.copMoved.style.width = "570px";
			this.copMoved.style.right = ((this.rahmen.getHTML().offsetLeft) - para.movedPos + 1000) + "px";
			
			if(this.movedPos-480 <= 480)
			{
				this.copMoved2.style.right = ((this.rahmen.getHTML().offsetLeft) - para.movedPos + 1570) + "px";
			}
			else
			{
				this.copMoved2.style.right = ((this.rahmen.getHTML().offsetLeft) - para.movedPos + 1570) + "px";
			}
		}
		
		if(para.movedPos > 1000 + this.rahmen.getHTML().offsetLeft)
		{
			this.copMoved2.style.width = "1130px";
			this.copMoved2.style.right = "-130px";
			this.copMoved.style.width = "570px";
			this.copMoved.style.right = "-130px";
			
			this.copMoved.id = "moved_hg";
			setTimeout(function() { Art.ref.copMoved2.parentNode.removeChild(Art.ref.copMoved); Art.ref.copMoved2 = null;  }, 50);
			
			clearInterval(para.interval);
			Art.ref.intervalMoveHg = null;
			
			var nodes = NodeBuilder.isExists("#mainmenu").getHTML().childNodes;
			var name = this.myArray[this.pages[this.c].c].match(/hg_water_(\w+)\.png/)[1];

			NodeBuilder.isExists("link", {rel : "next"})[0].getHTML().href = (this.pages[ ((this.c+1 > this.pages.length-1) ? 0 : this.c+1) ].a) + ".html";
			NodeBuilder.isExists("link", {rel : "prev"})[0].getHTML().href = (this.pages[ ((this.c-1 < 0) ? this.pages.length-1 : this.c-1) ].a) + ".html";
			
			if(this.pages[this.c].a == "kontakt")
				name = "kontakt";
			
			for(var i = 0, max = nodes.length; i < max; ++i)
			{
				var node = nodes[i];
				if(node.nodeType == 1)
				{
					if(node.href.indexOf(name) > -1)
					{
						if(node.firstChild.src.indexOf("-ak") == -1)
							node.firstChild.src = node.firstChild.src.replace(/\.png/, "-ak.png");
					}
					else if(node.firstChild.src.indexOf("-ak.png") > -1)
					{
						node.firstChild.src = node.firstChild.src.replace(/-ak\.png/, ".png");
					}
				}
			}
			
			Art.ref.waitForContent();
			
		}
		
	};
	
	Art.prototype.moveRight = function()
	{
		
		this.movedPos = 0;
		Art.ref.intervalShowContent = null;
		
		
		var orgMovedHg = document.getElementById("moved_hg");
		var windowSize = NEnergy.windowSize();
		
		var copMovedHg = orgMovedHg.cloneNode(true);
		copMovedHg.style.right = (this.rahmen.getHTML().offsetLeft+1000) + "px";
		copMovedHg.style.width = "0px";
		var copMovedHg2 = copMovedHg.cloneNode(true);
	
		var i = 0;
	
		--this.c;
		if(this.c < 0)
			this.c = this.pages.length-1;
			
		if(arguments.length == 1 )
		{
			this.c = arguments[0];
		}
		
		copMovedHg.style.backgroundImage = "url(" + Art.ref.pfad + "images/" + this.myArray[this.pages[this.c].c].replace(/.png/, "2.png") + ")";
		copMovedHg2.style.backgroundImage = "url(" + Art.ref.pfad + "images/" + this.myArray[this.pages[this.c].c] + ")";
		orgMovedHg.parentNode.insertBefore(copMovedHg, orgMovedHg);
		orgMovedHg.parentNode.insertBefore(copMovedHg2, orgMovedHg);
	
		copMovedHg.style.width = "4px";
		copMovedHg2.style.width = "470px";
		copMovedHg.style.backgroundPosition = "top right";
		var neOrgMovedHg = new NodeElement(orgMovedHg);
		
		this.orgMoved = new NodeElement(orgMovedHg);
		this.copMoved = copMovedHg;
		this.copMoved2 = copMovedHg2;
		
		var co = 100;
		var intervalMove = 0;
		
		Art.ref.intervalMoveHg = true;
		
		new xhr({"post" : "time=" + this.pages[this.c].i, "res" : "obj"}).newReq( "./xhr/pageswitch.frontend.php?xhr=pageswitch", function(ele) { Art.ref.requestErg = ele; } );
	
		var hideContent = false;
		if(!Art.ref.content.getHTML().style.opacity)
			var hideContent = true;
		
		Art.ref.hideContent({ co : 100, hideContent : hideContent, moveHg : {displayFunc : Art.ref.moveHg2,  interval : intervalMove, movedPos : 0, out : true} });
	};

	Art.prototype.hideContent = function(para) 
	{
		Art.ref.orgMoved.setCSSOpacity(para.co);
		if(para.hideContent)
			Art.ref.content.setCSSOpacity(para.co);
		para.co-= 15;
		if(para.co < 30 )
		{
			Art.ref.orgMoved.remove();
			Art.ref.content.setCSSOpacity(0);
			
			setTimeout(function() { para.moveHg.displayFunc.call( Art.ref, para.moveHg ); }, 50);
		}
		else
		{
			setTimeout(function() { Art.ref.hideContent(para); }, 100);
		}
	};
	window.AnimateTextLikeAS = AnimateTextLikeAS;
	NEnergy.DomLoader.add("3art", function() { new Art(); } );

})();




