/*-- spam protection --*/

	function getAdr(prefix, postfix, text) {
		document.write('<a href="mailto:' + prefix + '@' + postfix + '">' + (text ? text.replace(/&quot;/g, '"').replace(/%EMAIL%/, prefix + '@' + postfix) : prefix + '@' + postfix) + '</a>');
	}

/*-- swap image --*/

	function swapImage(element, newimage) {
		var oldsrc = element.src;
		element.src = newimage;
		if (!element.onmouseout) {
			element.onmouseout = function (event) { swapImage(this, oldsrc); };
		}
	}

/*-- hover --*/

	function init_hover() {
		var tags = new Array('tr');
		for(t=0; t<tags.length; t++) {
			var eles = document.getElementsByTagName(tags[t]);
			for(var i = 0; i < eles.length; i++) {
				eles[i].onmouseover = function() { addClass(this, 'hover'); }
				eles[i].onmouseout = function() { removeClass(this, 'hover'); }			
			}
		}
	}

/*-- focus --*/

	function init_focus() {
			var tags = new Array('input','button','textarea');
			for(t=0; t<tags.length; t++) {
				var eles = document.getElementsByTagName(tags[t]);
				for(i=0; i<eles.length; i++) {
					eles[i].onfocus = function() { addClass(this, 'focus'); }
					eles[i].onblur = function() { removeClass(this, 'focus'); }
				}
			}
	}

/*-- add/remove class --*/

	function addClass(obj, newclass) {
		if(obj.className.indexOf(newclass) == -1)
			obj.className += " " + newclass;
	}
	
	function removeClass(obj, newclass) {
		var classes = obj.className.split(' ');
		for(i=0; i<classes.length; i++) {
			if(classes[i].indexOf(newclass) > -1)
				classes[i] = "";
		}
		obj.className = classes.join(' ');
	}

/*-- getElementsByClassName --*/

	function getElementsByClassName(strClass, strTag, objContElm) {
		strTag = strTag || "*";
		objContElm = objContElm || document;
		var objColl = objContElm.getElementsByTagName(strTag);
		if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
		var arr = new Array();
		var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
		var arrClass = strClass.split(delim);
		for (var i = 0, j = objColl.length; i < j; i++) {
			var arrObjClass = objColl[i].className.split(' ');
			if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
			var c = 0;
			comparisonLoop:
			for (var k = 0, l = arrObjClass.length; k < l; k++) {
				for (var m = 0, n = arrClass.length; m < n; m++) {
					if (arrClass[m] == arrObjClass[k]) c++;
					if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
						arr.push(objColl[i]);
						break comparisonLoop;
					}
				}
			}
		}
		return arr;
	}

/*-- validform --*/

	function init_forms() {
		var content = document.getElementById('content');
		if(content) {
			var forms = content.getElementsByTagName('form');
			for(f=0; f<forms.length; f++) {
				init_form(forms[f]);
			}
		}
		var email_empfaenger = document.getElementById('email_empfaenger');
		if(email_empfaenger)
			email_empfaenger.value = email_empfaenger.value.replace('+at+', '@');
	}

	function init_form(form) {
		var required = getElementsByClassName('required', '*', form);
		for(i=0; i<required.length; i++) {
			required[i].onblur = function() {
				validate(this);
			}
		}
		form.onsubmit = function() {
			var doSubmit = true;
			var list = new Array();
			var required = getElementsByClassName('required', '*', this);
			for(v=0; v<required.length; v++) {
				if(! validate(required[v])) {
					doSubmit = false;
					list.push(required[v]);
				}
			}
			var checkboxeles = getElementsByClassName('required_checkbox', '*', this);
			for(i=0; i<checkboxeles.length; i++) {
				valid = false;
				checkboxes = checkboxeles[i].getElementsByTagName('input');
				for(c=0; c<checkboxes.length; c++) {
					if(checkboxes[c].type == 'checkbox' && checkboxes[c].checked) {
						valid = true;
					}
				}
	
				if(valid == false) {
					doSubmit = false;
					set_msg(checkboxeles[i], label_valid_checkbox);
					list.push(checkboxeles[i]);
				} 
				else {
					clear_msg(checkboxeles[i]);
				}
			}
			var radioeles = getElementsByClassName('required_radio', '*', this);
			for(i=0; i<radioeles.length; i++) {
				valid = false;
				radios = radioeles[i].getElementsByTagName('input');
				for(c=0; c<radios.length; c++) {
					if(radios[c].type == 'radio' && radios[c].checked) {
						valid = true;
					}
				}
	
				if(valid == false) {
					doSubmit = false;
					set_msg(radioeles[i], label_valid_radio);
					list.push(radioeles[i]);
				} 
				else {
					clear_msg(radioeles[i]);
				}
			}
		if(doSubmit == false)
			show_error(list);
		return doSubmit;
		}
	}

	function validate(el) {
		var valid = true;
		clear_msg(el);
		switch(el.type) {
			case 'text':
			case 'textarea':
			case 'select-one':
				if(el.value != '') {
					if(el.className.indexOf('email') > -1) {
						var regEmail = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
						if(el.value.toUpperCase().match(regEmail)){
							valid = true;
						}
						else {
							valid = false;
							set_msg(el, label_valid_email);
						}
					}
					if(el.className.indexOf('number') > -1) {
						var regNum = /[-+]?[0-9]*\.?[0-9]+/;
						if(el.value.match(regNum)){
							valid = true;
						}
						else {
							valid = false;
							set_msg(el, label_valid_postalcode);
						}
					}
				}
				else {
					valid = false;
					set_msg(el);
				}
				break;
		}
	
		return valid;
	}

	function set_msg(el, msg) {
		if(msg == undefined) {
			msg = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + label_valid_required;
		}
	
		el.errorMessage = msg;
		if(el.parentNode.className.indexOf('error') == -1)
			el.parentNode.className += ' error';
	}

	function clear_msg(el) {
		var classes = el.parentNode.className.split(' ');
		for(i=0; i<classes.length; i++) {
			if(classes[i].indexOf('error') > -1)
				classes[i] = "";
		}
		el.parentNode.className = classes.join(' ');
		el.errorMessage = "";
	}

	function show_error(list) {
		errorlist = '<ul>';
		for(i=0; i<list.length; i++) {
			el = list[i];
			if(el.errorMessage != undefined)
				errorMessage = el.errorMessage;
			else
				var errorMessage = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + label_valid_required;
	
			errorlist += '<li>' + errorMessage + '</li>';
		};
		errorlist += '</ul>';
	
		var validationMessage = document.getElementById('validationMessage');
		//validationMessage.innerHTML = '<h2 title="' + label_valid_error + '">' + label_valid_error + '</h2>' + errorlist;
		validationMessage.innerHTML = '<span id="validationMessage">Bitte füllen Sie vor dem Versenden mindestens die rot markierten Felder aus.</span>';
		document.location.href = '#validationMessage';
	}


/*-- alternativ x-menu --*/

	var navImagesNormal = new Array();
	var navImagesHover = new Array();
	function init_nav() {
		var nav = document.getElementById('nav');
		var lis = nav.getElementsByTagName('li');
		for(var i = 0; i < lis.length; i++) {
			lis[i].number = i;
			lis[i].onmouseover = function() {
				addClass(this, 'hover');
				var img = this.getElementsByTagName('img');
				if(img[0] && navImagesHover[this.number])
					img[0].src = navImagesHover[this.number];
			}
			lis[i].onmouseout = function() {
				removeClass(this, 'hover');
				var img = this.getElementsByTagName('img');
				if(img[0] && navImagesNormal[this.number])
					img[0].src = navImagesNormal[this.number];
			}
			var img = lis[i].getElementsByTagName('img');
			if(img[0] && img[0].onmouseover) {
				navImagesNormal[i] = img[0].src;
				img[0].onmouseover();
				navImagesHover[i] = img[0].src;
				img[0].onmouseout();
				img[0].onmouseover = function() {};
				img[0].onmouseout = function() {};
			}
		}
	}

/*-- offer maps --*/

var activeMap = "";
function init_offer_maps() {
	var maps = $$('.offerings .maps .map');
	if(maps.length) {
		maps.each(function(map, i) {
			map.setStyle('display', 'none');
		});
	}

	var areas = $$('.offerings .maps area');
	if(areas.length) {
		areas.each(function(area, i) {
			area.mapID = area.id.replace('area_', 'maps_');
			area.addEvent('click', function() {
				if($(this.mapID)) {
					if($(activeMap)) {
						$(activeMap).setStyle('backgroundPosition', '0 0');
						$(activeMap).setStyle('display', 'none');
					}
					$(this.mapID).setStyle('display', 'block');
					$(this.mapID).setStyle('backgroundPosition', '0px ' + (0-$(this.mapID).getHeight()) + 'px');

					var link = $(this.mapID).getElement('a');

					var content = $$('.right .content')[0];
					content.innerHTML = "<br><br>";
					content.addClass('loading');

					var xml = new Request.HTML({
						onComplete: function(tree, eles, html, js) {
							var title = "";
							var offer_nr = "";
							var text = "";
							var longtext = "";

							var title_text = $(activeMap).getElement('span').innerHTML;
							var html = '<div class="result"><div class="map_title">' + title_text + '</div>';

							eles.each(function(el, i) {
								offer_nr = "";
								longtext = "";
								if(el.tagName.toLowerCase() == 'entry') {
									var kids = el.getChildren();
									kids.each(function(kid, b) {
										if(kid.tagName.toLowerCase() == "title") {
											title = kid.innerHTML;
										}
										if(kid.tagName.toLowerCase() == "offernr") {
											offer_nr = kid.innerHTML;
										}
										if(kid.tagName.toLowerCase() == "text") {
											text = kid.innerHTML;
										}
										if(kid.tagName.toLowerCase() == "longtext") {
											longtext = kid.innerHTML;
										}
									});
									html += '<div class="entry"><div class="entry_title">' + title + '</div><div class="text">' + text + '</div>';
									if(longtext != "") {
										html += '<div class="longtext">' + longtext + '</div>';
									}
									if(offer_nr != "") {
										html += '<div class="offernr">Angebotsnummer ' + offer_nr + '</div>';
									}
									html += '</div>';
								}
							});

							html += '</div>';

							var content = $$('.right .content')[0];
							content.innerHTML = html;
							content.getElements('.entry').each(function(entry, en) {
								var longtext = entry.getElement('.longtext');
								if(longtext) {
									entry.longtextheight = longtext.getHeight();
									entry.expanded = false;
									longtext.setStyles({
										height: 0,
										overflow: 'hidden'
									});
									entry.fx = new Fx.Morph(longtext, {
										duration: 500,
										wait: false,
										onComplete: function() {
										}
									});
									entry.addEvent('click', function(e) {
										var event = new Event(e).stop();
										if(this.expanded == false) {
											this.fx.start({
												height: this.longtextheight
											});
											this.expanded = true;
										}
										else {
											this.fx.start({
												height: 0
											});
											this.expanded = false;
										}
									});
									entry.setStyle('cursor', 'pointer');
								}
							});
							content.removeClass('loading');
						}
					}).get(link.href + '?' + Math.random());
					activeMap = this.mapID;
				}
			});
			area.addEvent('mouseover', function() {
				if($(this.mapID)) {
					if(this.mapID != activeMap)
						$(this.mapID).setStyle('display', 'block');
				}
			});
			area.addEvent('mouseout', function() {
				if($(this.mapID)) {
					if(this.mapID != activeMap)
						$(this.mapID).setStyle('display', 'none');
				}
			});
		});
	}
}

/*-- report messages --*/

function init_report_messages() {
	if($$('.report_quartal').length) {
		var reports = $$('.report_quartal')[0].getChildren('li');
		reports.each(function(el, i) {
			var li = el;
			var ul = li.getChildren('ul')[0];
			var a = li.getChildren('a')[0];
			a.addEvent('click', function(event) {
				var e = new Event(event);
				e.stop();
				expand(this.parentNode);
			});
			if(i != 0) {
				ul.setStyle('display', 'none');
			}
		});

		var messages = $$('.report_message_browser')[0].getChildren('li');
		messages.each(function(el, i) {
			var li = el;
			var ul = li.getChildren('ul')[0];
			var a = li.getChildren('a')[0];
			a.addEvent('click', function(event) {
				var e = new Event(event);
				e.stop();
				expand(this.parentNode);
			});
			if(i != 0) {
				ul.setStyle('display', 'none');
			}

			var msgs = ul.getChildren('li');
			msgs.each(function(msg, i) {
				var link = msg.getChildren('a')[0];
				link.addEvent('click', function(event) {
					var e = new Event(event);
					e.stop();
					var xml = new Request.HTML({
						onComplete: function(tree, eles, html, js) {
							var title = "";
							var date = "";
							var text = "";

							eles.each(function(el, i) {
								if(el.tagName.toLowerCase() == "title") {
									title = el.innerHTML;
								}
								if(el.tagName.toLowerCase() == "date") {
									date = el.innerHTML;
								}
								if(el.tagName.toLowerCase() == "text") {
									text = el.innerHTML;
								}
							});

							var html = '<p class="date">Meldung vom ' + date + '</p><h2>' + title + '</h2>';
							html += '<p class="text">' + text + '</p>';
	
							if(text != "" && title != "" && date != "")
								showHTMLPopup(html);

							msg.removeClass('loading');
						}
					}).get(this.href + '?' + Math.random());

					msg.addClass('loading');
				});
			});
		});
	}
}

function expand(li) {
	var ul = li.getChildren('ul')[0];
	if(ul) {
		if(ul.getStyle('display') == 'block') {
			ul.setStyle('display', 'none');
		}
		else {
			ul.setStyle('display', 'block');
		}
	}
}

function showHTMLPopup(html) {
	var popupcontainer = $('popupcontainer');
	if(!popupcontainer) {
		popupcontainer = new Element('div').inject(document.body, 'bottom');
		popupcontainer.id = 'popupcontainer';
	}

	popupcontainer.setStyles({
		position: 'fixed',
		top: '0',
		left: '0',
		right: '0',
		bottom: '0',
		background: 'black',
		opacity: '0',
		zIndex: '100000'
	});

	if(navigator.userAgent.indexOf('MSIE 6') > -1) {
		popupcontainer.setStyles({
			position: 'absolute',
			width: document.getWidth(),
			height: document.getHeight(),
			top: $(document.body).getScroll().y
		});
	}

	popupcontainer.html = html;
	popupcontainer.html += '<a class="close" href="javascript:closeHTMLPopup()"><span>X</span></a>';
	popupcontainer.innerHTML = "";
	var fx = new Fx.Morph(popupcontainer, {
		duration: 500,
		wait: false,
		onComplete: function() {
			var popupcontent = $('popupcontent');
			if(!popupcontent) {
				popupcontent = new Element('div').inject(document.body, 'bottom');
				popupcontent.id = 'popupcontent';
			}
			popupcontent.setStyles({
				border: '2px solid gray',
				background: 'white',
				position: 'fixed',
				top: '50%',
				left: '50%',
				width: 600,
				marginLeft: -300,
				padding: 20,
				zIndex: popupcontainer.getStyle('zIndex')+1,
				opacity: 0,
				visibility: 'hidden'
			});

			popupcontent.innerHTML = popupcontainer.html;
			var close = popupcontent.getElement('.close');
			if(close) {
				close.addEvent('mouseover', function() {
					this.setStyle('opacity', 0.5);
				});
				close.addEvent('mouseout', function() {
					this.setStyle('opacity', 1);
				});
			}
			popupcontent.origHeight = popupcontent.getHeight(); //save for later
			if(popupcontent.getHeight() > document.body.offsetHeight) {
				popupcontent.setStyles({
					overflow: 'hidden',
					height: (document.body.offsetHeight - popupcontent.getStyle('padding').toInt() - 40)
				});
			}
			popupcontent.setStyles({
				marginTop: 0-Math.round(popupcontent.getHeight()/2),
				visibility: 'visible',
				overflow: 'auto'
			});
			var aphex = new Fx.Morph(popupcontent, {
				duration: 500,
				wait: false,
				onComplete: function() {
					popupcontainer.addEvent('click', function() {
						closeHTMLPopup();
					});
				}
			}).start({
				opacity: 1
			});

			if(navigator.userAgent.indexOf('MSIE 6') > -1) {
				popupcontent.setStyles({
					position: 'absolute',
					marginTop: 0,
					top: $(document.body).getScroll().y + (document.body.offsetHeight / 2)  - (popupcontent.getHeight() / 2)
				});
			}
		}
	}).start({
		opacity: '0.4'
	});
}

function closeHTMLPopup() {
	[$('popupcontainer'), $('popupcontent')].each(function(el, i) {
		if(el) {
			el.removeEvents('click');
			var fx = new Fx.Morph(el, {
				duration: 500,
				wait: false,
				onComplete: function() {
					if($('popupcontent'))
						$('popupcontent').destroy();
				}
			}).start({
				opacity: 0
			});
		}
	});
}

function resizeHTMLPopup() {
	var popupcontent = $('popupcontent');
	var popupcontainer = $('popupcontainer');
	if(popupcontent) {
		if(popupcontent.getHeight() > document.body.offsetHeight) {
			popupcontent.setStyles({
				overflow: 'auto',
				height: (document.body.offsetHeight - popupcontent.getStyle('padding').toInt() - 40)
			});
		}
		else {
			popupcontent.setStyles({
				height: popupcontent.origHeight - 40
			});
		}
		popupcontent.setStyles({
			marginTop: 0-Math.round(popupcontent.getHeight()/2)
		});

		if(navigator.userAgent.indexOf('MSIE 6') > -1) {
			popupcontainer.setStyles({
				top: $(document.body).getScroll().y,
				width: document.body.getWidth(),
				height: document.body.getHeight()
			});
			popupcontent.setStyles({
				top: $(document.body).getScroll().y + (document.body.offsetHeight / 2)  - (popupcontent.getHeight() / 2),
				marginTop: 0
			});
		}
	}
}

function init_show_hide_boxing() {
	var boxinggloves = getElementsByClassName('showhide_box', '*');
	if(boxinggloves.length > 0) {
		for(i=0; i<boxinggloves.length; i++) {
			var h3 = boxinggloves[i].getElementsByTagName('h3')[0];
			var checkbox = getElementsByClassName('checkbox', '*', boxinggloves[i])[0];
			h3.onclick = function() {
				var checkbox = getElementsByClassName('checkbox', '*', this.parentNode)[0];
				var toggler = getElementsByClassName('toggler', '*', this.parentNode)[0];
				if(toggler.style.display == 'block') {
					toggler.style.display = 'none';
					checkbox.checked = false;
				}
				else {
					toggler.style.display = 'block';
					checkbox.checked = true;
				}
			}
			checkbox.onclick = function() {
				this.parentNode.getElementsByTagName('h3')[0].onclick();
			}
		}
	}
}

/*
             \|/
            .-*-
           / /|\
          _L_
        ,"   ".
    (\ /  O O  \ /)
     \|    _    |/
       \  (_)  /
       _/.___,\_
     (_/ doom  \_)
         ready, the end is near
*/

	var doomreadywaiter = window.setInterval(function() {
		if (document.body && document.getElementById('content')) {
			window.clearInterval(doomreadywaiter);
			doomready();			
		}
	}, 100);
	function doomready() {
		init_hover();
		init_focus();
		init_forms();
		init_nav();
		init_show_hide_boxing();

		if(window.addEvent) {
			init_report_messages();
			window.addEvent('resize', function() {
				resizeHTMLPopup();
			});
			window.addEvent('scroll', function() {
				resizeHTMLPopup();
			});
			init_offer_maps();			
		}

	}