
(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.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 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)
	{
		var funcName = func.toString().match(/function([^(]*)\(/)[1].trim();
		this.htmlNode.eid = new Date().getTime();
		if(funcName != "")
		{
			var funcObj = function(e) { 
								if(arg)
									arg.evt = e || window.event;  
													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(e) { 
														  
												if(arg)
													arg.evt = e || window.event;  
														  
												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)
	{
		if(typeof(func) == "string")
		{
			var funcName = func;
		}
		else
		{
			var funcName = func.toString().match(/function(.*)\(/)[1].trim();
		}
		
																	   
		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;
					
					
					if(NodeBuilder.isIE)
					{
						if(args.attr.style)
						{
							args.attr.style.cssText = args.attr.style;
							//delete args.attr.style;
						}
						
					}
					
					if(args.attr['class'])
						{
							args.attr.className = args.attr['class'];
							delete args.attr['class'];
						}
					
					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)
							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)
		{
			ele = document.createElement(tag);
			//$(ele).attr('name', args.name);
			ele.setAttribute('name', args.name);
		}
		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("sponsoren.png") > -1 )
			{
				var oldSrc = img.src;
				
				img.style.width = "849px";
				img.style.height = "276px";
				img.src = "wkal2009/images/leer.gif";
				img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + oldSrc + "',sizingMethod='cope')";
				/*img.style.backgroundColor = '#ff0000';*/
			}
		}
	}
	
	function WKal()
	{
		if(NodeBuilder.isIE == true)
			oldIEAlphaPNG();
		
		var div = document.getElementById('wkal-bgLayer');
		
		var htmlNode = NodeBuilder.isExists("html")[0].getHTML();
		var bodyNode = NodeBuilder.isExists("body")[0].getHTML();
		
		div.style.height = Math.max(htmlNode.scrollHeight, bodyNode.scrollHeight) + "px";
		new NodeElement(div).setCSSOpacity(70);
		div.style.backgroundColor = "#000000";
		
		NodeBuilder.isExists("#wkal-display").addEvent("click", this.closeWKal, {}, this);
		
		var wait = setInterval(function() {
										div.style.height = Math.max(htmlNode.scrollHeight, bodyNode.scrollHeight) + "px";
																				
										}, 5000);
		
		
		var lnk = NodeBuilder.isExists("a", {rel : "showWkal"});
		for(var i = 0, maxI = lnk.length; i < maxI; ++i)
		{
			lnk[i].addEvent("click", this.showWKal, {}, this);
			lnk[i].getHTML().innerHTML = "Adventskalender &ouml;ffnen";
			
		}
		
		this.pfad = "wkal2009/";
		
		window['p'] = this.pfad;
		this.loadimg = NodeBuilder.createNode("img", {src : this.pfad + "images/load.gif"});
		
		new Image().src = "wkal2009/images/kalender-hg.jpg";
		
	}
	
	WKal.prototype.closeWKal = function(arg)
	{
		
		var ele = arg.evt.target || arg.evt.srcElement;
		
		if(ele == NodeBuilder.isExists("#wkal-display").getHTML())
		{
			NodeBuilder.isExists("#wkal-bgLayer").setStyle({display:""});
			NodeBuilder.isExists("#wkal-display").setStyle({display:""});
		}
	}
	
	WKal.prototype.showWKal = function(arg)
	{
		
		arg.evt.cancelBubble = true;
		if(arg.evt.stopPropagation) arg.evt.stopPropagation();
		if(arg.evt.preventDefault) arg.evt.preventDefault();
		arg.evt.returnValue = false;
		
		NodeBuilder.isExists("#wkal-bgLayer").setStyle({display:"block"});
		NodeBuilder.isExists("#wkal-display").setStyle({display:"block"});
		
		NodeBuilder.isExists("#wkal-bgLayer").setStyle({height : NodeBuilder.isExists("html")[0].getHTML().scrollHeight + "px"});
		
		//pageTracker._trackEvent("adventskalender2009", "Open", "Startseite");
		
		this.init();
	}
	
	WKal.prototype.init = function()
	{
		
		
		if(this.isInit)
			return;
		this.isInit = true;

		var links = NodeBuilder.isExists("a", NodeBuilder.isExists("#wkalList").getHTML(), {});
		var img = NodeBuilder.createNode("img", {src : this.pfad + "images/leer.gif"}).getHTML();
		var d = new Date().getDate();
				/*d = 1;*/
		for(var i = 0, maxI = links.length; i < maxI; ++i)
		{
			var dateImage = links[i].getHTML().firstChild;
			if(i < d-1)
			{
				var iK = (i+1);
				links[i].addEvent("click", this.loadDay, {x : links[i].getHTML().href, day : iK, src : dateImage.src}, this);
				img.width = dateImage.offsetWidth;
				img.height = dateImage.offsetHeight;
				img.style.top = dateImage.style.top;
				img.style.left = dateImage.style.left;
				links[i].getHTML().replaceChild(img.cloneNode(true), dateImage);
			}
			else if(i == d-1)
			{
				var iK = (i+1);
				links[i].addEvent("click", this.loadDay, {x : links[i].getHTML().href, day : iK, kD : (iK), openMe : true, src : dateImage.src}, this);
			}
			else
			{
				links[i].setStyle({cursor: "default"});
				links[i].getHTML().onclick = function() { return false; };
			}
		}
		
		var temp1 = NodeBuilder.isExists("div", NodeBuilder.isExists("#wkal-display").getHTML(), {"class" : "wkal-close"});

		var erg = NodeBuilder.isExists("img", temp1[0].getHTML(), {})[0];
		
		erg.addEvent("click", function() 
		{
			NodeBuilder.isExists("#wkal-bgLayer").setStyle({display:""});
			NodeBuilder.isExists("#wkal-display").setStyle({display:""}); 
		}, {}, this);
		
		 NodeBuilder.isExists("#wkalList").getHTML().style.background = "transparent url(wkal2009/images/kalender-hg.jpg) no-repeat";
		
	}
	
	WKal.prototype.loadDay = 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 ref = this;
		
		
		var inhalt = NodeBuilder.isExists("#wkal-inhalt");
		
		NodeBuilder.isExists("#wkal-contentTable").setStyle({display : ""});
		inhalt.getHTML().parentNode.insertBefore(ref.loadimg.getHTML(), inhalt.getHTML());
		var i = 100;
		var wait = setInterval(function() {
										
										inhalt.setCSSOpacity(i);
										i-= 20;
										if(i < 0)
										{
											clearInterval(wait);
											//inhalt.setStyle({display: "none"});
										}
										
										},60);
		new xhr({post: "day=" + arg.day, res : "obj"}).newReq(this.pfad + "wkalDyn.php?day=" + arg.kD + "&t=" + (new Date()).getTime(), function(e) { ref.contentHandle(e, arg, wait, i) } );
		return false;
	}
	/*
	<gott> ich hab gerade beim aufr�umen im k�hlschrank ne dose lebewurst gefunden  
	<gott> der war scheinbar kalt  
	<gott> die hat sich nen pelz angezogen
	*/
	WKal.prototype.buildForm = function(arg, innerhtml)
	{

		var form = NodeBuilder.createNode("form", {id : "sendForm", method : "post", action : this.pfad + "wkalDyn.php?form", target : "wkal-iframe"});
		var iframe = NodeBuilder.createNode("iframe", "wkal-iframe", {style : "display: none;"});
		form.getHTML().innerHTML = innerhtml;
		
		var ref = this;
		
		form.getHTML().appendChild( NodeBuilder.createNode("input", "t", {id : "t", type : "hidden"}).getHTML() );
		form.getHTML().appendChild( NodeBuilder.createNode("input", "answer", {id : "answer", type : "hidden"}).getHTML() );
		form.addEvent("submit", function() { 
										 var t = NodeBuilder.isExists("#t").getHTML(); 
										 t.value = new Date().getTime(); 
										 var answer = NodeBuilder.isExists("#answer").getHTML(); 
										 
										 var opts = NodeBuilder.isExists("input", {name : "answerOpt", type : "radio"});
				
										 for(var i = 0, max = opts.length; i < max; ++i)
										 {
											if(opts[i].getHTML().checked == true)
												answer.value = opts[i].getHTML().value;
										 }
										
										 var wait = setInterval(function() 
																		 { 
																		 
																		 	if(window['erg' + t.value]) 
																			{ 
																				clearInterval(wait); 
																				ref.fromResponse(window['erg' + t.value]); 
																			} 
																		}, 1000); } );
		
		arg.inhalt.appendChild(form);
		arg.inhalt.appendChild(iframe);
	}
	
	WKal.prototype.fromResponse = function(erg)
	{
	
			if(erg.e == 200 || erg.e == 400)
			{
				var inhalt = NodeBuilder.isExists("#wkal-inhalt");
				
				var span = NodeBuilder.createNode("span");
				span.getHTML().innerHTML = erg.t;
				inhalt.appendChild(span);
				
				 var opts = NodeBuilder.isExists("input", {name : "answerOpt", type : "radio"});
				
										 for(var i = 0, max = opts.length; i < max; ++i)
										 {
											opts[i].setStyle({display: "none"});
										 }
				
				NodeBuilder.isExists("#sendForm").setStyle({display:"none"});
			}
			else if(erg.e == 401)
			{
				alert(erg.t);
			}
	}
	
	WKal.prototype.contentHandle = function(obj, arg, wait, i)
	{
		clearInterval(wait);
		var img = document.getElementById('wkal-dayImage');
		img.src = arg.src;
		
		
		var inhalt = NodeBuilder.isExists("#wkal-inhalt");
		
		try{
			inhalt.getHTML().parentNode.removeChild(this.loadimg.getHTML());
		}catch(e) {}
		inhalt.setStyle({display: ""});
		
		
		if(arg.openMe)
		{
			var links = NodeBuilder.isExists("a", NodeBuilder.isExists("#wkalList").getHTML(), {})[arg.day-1];
			var firstImage = links.getHTML().firstChild;
			var img = NodeBuilder.createNode("img", {src : this.pfad + "images/leer.gif"}).getHTML();
			img.width = firstImage.offsetWidth;
			img.height = firstImage.offsetHeight;
			img.style.top = firstImage.style.top;
			img.style.left = firstImage.style.left;			
			links.getHTML().replaceChild(img, firstImage);
		}
		
		inhalt.getHTML().innerHTML = obj.text;
		arg.inhalt = inhalt;
		if(obj.extra && obj.extra != "")
			obj[obj.extra].call(this, arg);
		
		var wait = setInterval(function() {
										
										inhalt.setCSSOpacity(i);
										
										i+= 10;
										if(i > 100)
										{
											clearInterval(wait);
											inhalt.setCSSOpacity(100);
											setTimeout(function() { window.scrollTo(0, i*4);
																inhalt.setCSSOpacity(null);	
																															
																}, 200);
										}
										}, 100);
		
	}
		
	//NEnergy.DomLoader.add("wkal", function() { new WKal(); } );
	jQuery(document).ready(function() {
	new WKal(); 
	});
	
	
	//NEnergy.addEvent(window, "load", function() { new WKal(); } );
	
})();
			


