
if(window.addEventListener) {
    window.addEventListener('load', initialize, false);
}
else if(window.attachEvent) {
    window.attachEvent('onload', initialize);
}
else {
    window.onload = initialize;
}

var fader;
var fadeopacity = 1;
var showbox;
var bannershow;
var preloadImages = [];
var isLoaded = false;
var error_messages = new Object();

var newHeight = 0,
	neueLeft = 0,
	tweenTimer = 3000,
	tweenTimer2 = 1000,
	tweeningFunction = "easeOutCubic",
	slideback = null,
	startTime = null,
	slidetimer = null,
	titleLeft = 0,
	titleTime = null,
	titletimer = null,
	contentheight = 0,
	heightTime = null,
	heighttimer = null;


var popupConfig = new Object();
popupConfig[1] = {
		width: "580",
		height: "335",
		effect: "'fade",
		direction: "left",
		tweening: "easeNone",
		speed: "0.8"
};

function initialize() {
	isLoaded = true;

	if (typeof(ScrollbarOverride) !== 'undefined') {
		var config = {
				smoothScroll: true,
				smoothFunction: 'easeOutQuart',
				hScrollbar: false
		};

		var scrollBody = new ScrollbarOverride();
		scrollBody.init(document.body, config);
	}
	
	if(typeof initialize_map == 'function') {
		initialize_map();
	}
	imagePreloader();

	var newstickerElement = document.getElementById('newsticker');
	if (typeof(newstickerElement) != "undefined" && newstickerElement != null) {
		ticker = new TICKER( newstickerElement, {'breite': 280, 'hoehe': 158, 'versatz': 2, 'verzoegerung': 75, 'richtung': 'top'} );
		ticker.start();
	}
	
	var popup = document.getElementById("popup_1");
	if (popup) {
		openPopup(1);
	}
	
	//Custom.init();
	/*
	headerImage.start_slide();
	var eingangsFlashElement = document.getElementById("eingangs_flash");
	if (eingangsFlashElement) {
		if (typeof(eingangsFlashElement.zum_eingang) != "undefined") {
			eingangsFlashElement.zum_eingang();
		} 
	}
	*/
}

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};


function shImageCount() {
    var image_count = document.getElementById("bigimage_bildcounter");
	if (typeof(image_count) != "undefined") {
		if(image_count.style.display == "none") {
			image_count.style.display = "block";
		}
		else {
			image_count.style.display = "none";
		}
	}
}

function testJS() {
	return "true";
}

function flashReady() {
	return isLoaded;
}
function makeFlashTransparent() {
	document.getElementById("eingangs_overlay").style.backgroundColor = "transparent";
}
function hideGoogleText() {
	makeFlashTransparent();
	document.getElementById("leave_text").style.display = "none";
}

function imagePreloader() {
	var preloaded = [];
	if (preloadImages.length > 0) {
		for (i=0;i<preloadImages.length;++i) {
			if (preloadImages[i] != "") {
				preloaded[i] = new Image();
				preloaded[i].src = preloadImages[i];
			}
		}
	}
}

function entry_preview() {
    alert(document.forms[0].gbuch_name.value);
}

function addReflection(element) {
	if (element.style.height != "120px") {
		setTimeout(function() {
				addReflection(element);
			},100);
	} else {
		Reflection.add(element, {height: 1/3});
	}

}

function trimMaxHeight(id_text,id_more,maxHeight) {
	var text, more;
	text = document.getElementById(id_text);
	more = document.getElementById(id_more);
	if (text.offsetHeight > maxHeight) {
		if(text != null) {
			text.style.height = maxHeight + 'px';
		}
		if(more != null) {
			more.style.display = 'block';
		}
	}
}

function showGbuch() {
	document.getElementById("widget_gbook").style.display = "block";
	document.getElementById("widget_umfrage").style.display = "none";
}

function showUmfragen() {
	document.getElementById("widget_gbook").style.display = "none";
	document.getElementById("widget_umfrage").style.display = "block";
}

function closeEingangsoverlay() {
	var eingangsoverlay = document.getElementById("eingangs_overlay");
	if (typeof(eingangsoverlay) != "undefined") {
		eingangsoverlay.style.display = "none";
	}
	if (typeof(hauptpopup) != "undefined") {
		hauptpopup.open();
	}
}


Array.prototype.contains = function (element) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == element) {
			return true;
		}
	}
	return false;
};

/* *** Ajax Funktionen *** */
var content;
function loadContent(file,params) {
	content = new Ajax(file,'post');
	content.query(params,showContent);
}

function showContent() {
	/*
	document.getElementById("invisible_content").innerHTML = content.result;
	clearTimeout(heighttimer);
	if (typeof(repeat) == "undefined") {
		heightTime = new Date();
	}
	var aktTime = new Date,
		element = document.getElementById("content_div"),
		aktelement = document.getElementById("invisible_content"),
		timerDifference = aktTime.getTime() - heightTime.getTime();

	aktPosition = getStyle(aktelement,"offsetHeight",true);
	
	if (timerDifference <= tweenTimer) {
		startPos = getStyle(element,"offsetHeight",true);
		newHeight = tweener[tweeningFunction](timerDifference, startPos, aktPosition-startPos, tweenTimer);
		element.style.height = newHeight + "px";
		heighttimer = setTimeout(function() {showContent(aktPosition,true)}, 10);
	} else {
		startTime = null;
		clearTimeout(heighttimer);
	}
*/
    document.getElementById("content_div").innerHTML = content.result;

	scriptSource = content.result.replace(/\s+/g, " ");
	scriptSource = scriptSource.replace(/[ ]+/g, " ");
	
	scriptCheck = /<script[^>]*>(.*?)<\/script>/gi;
	while(scriptTags = scriptCheck.exec(scriptSource)) {
		if (scriptTags.length > 1) {
			scriptTags = scriptTags.pop();
			scriptTags = scriptTags.replace(/(<!--|\/\/-->)/g, '');			
			
			eval(scriptTags);
		}
	}
    
    Custom.init();
}

function sendUmfrage(anzahl) {
	var selected = "";
	var lng = document.getElementById("hidden_language").value;
	for (i=0; i < anzahl; i++) {
		if (document.getElementById("checkbox_" + i).checked) {
			selected += "," + i;
		}
	}
	selected = selected.replace(",","");
	if (selected != "") {
		var uid = document.getElementById("umfrageid").value;
		var params = "umfrageid=" + uid + "&umfrage=" + selected + "&send_umfrage=1&lng=" + lng;

		usend = new Ajax('tasks/sendumfrage.task.php','post');
		usend.query(params,sendUmfrageSuccess);
	}
}

function sendUmfrageSuccess() {
	if (parseInt(usend.result,10) == 0) {
		getUmfrage();
	}
}

function getUmfrage() {
	uget = new Ajax('tasks/getumfrage.task.php','post');
	var params = "language=" + document.getElementById("hidden_language").value;
	uget.query(params,getUmfrageSuccess);
}

function getUmfrageSuccess() {
	document.getElementById("umfrage_container").innerHTML = uget.result;
	//Custom.init();
}

function empty(str) {
    return (str.replace(/^\s+/g, '').replace(/\s+$/g, '') == '') ? true : false;
}

function ckeckEmailAddress(email) {
  var regex = new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+\.+([a-zA-Z0-9]{2,4})+$");

  return(regex.test(email));
}

/* *** Benutzerdefenierte Funktionen *** */
function focusMenu(aktPosition,repeat) {
	clearTimeout(slidetimer);
	if (typeof(repeat) == "undefined") {
		startTime = new Date();
	}
	var aktTime = new Date,
		element = document.getElementById("menu_aktiv"),
		timerDifference = aktTime.getTime() - startTime.getTime();

	if (timerDifference <= tweenTimer) {
		startPos = getStyle(element,"left",true);
		neueLeft = tweener[tweeningFunction](timerDifference, startPos, aktPosition-startPos, tweenTimer);
		element.style.left = Math.round(neueLeft) + "px";
		slidetimer = setTimeout(function() {focusMenu(aktPosition,true);}, 10);
	} else {
		startTime = null;
		clearTimeout(slidetimer);
	}

}

function slideMenuBack(startPosition) {
	clearTimeout(slideback);
	slideback = setTimeout(function() {focusMenu(startPosition);}, 5000);
}

function titelmenu(titellink,repeat) {
	var id_str, id_array, titel_div;

	clearTimeout(titletimer);
	if (typeof(repeat) == "undefined") {
		titleTime = new Date();
	}
	var aktTime = new Date,
		element = document.getElementById("titel"),
		timerDifference = aktTime.getTime() - titleTime.getTime();

	if (timerDifference <= tweenTimer2) {
		startPos = 32;
		aktPosition = -570;
		neueLeft = tweener[tweeningFunction](timerDifference, startPos, aktPosition-startPos, tweenTimer2);
		element.style.left = neueLeft + "px";
		titletimer = setTimeout(function() {titelmenu(titellink,true);}, 10);
	} else {
		titleTime = null;
		clearTimeout(titletimer);
		
		titel_div = document.getElementById("titel");
		for (var i = 0; i < titel_div.childNodes.length; i++) {
			id_str = titel_div.childNodes[i].id;

			if(typeof(id_str) != 'undefined' && id_str != '') {
				id_array = id_str.split("_");
				if( id_array[0] == 'titellink') {
					document.getElementById(id_str).style.display = "block";
				}
			}
		}
		document.getElementById("titellink_" + titellink).style.display = "none";
		document.getElementById("main_titel").innerHTML = document.getElementById("titellink_" + titellink).innerHTML;
		titletimer = setTimeout(function() {titelmenuBack(titellink);}, 10);
	}
}

function titelmenuBack(titellink,repeat) {

	clearTimeout(titletimer);
	if (typeof(repeat) == "undefined") {
		titleTime = new Date();
	}
	var aktTime = new Date,
		element = document.getElementById("titel"),
		timerDifference = aktTime.getTime() - titleTime.getTime();

	if (timerDifference <= tweenTimer2) {
		startPos = 610;
		aktPosition = 32;
		neueLeft = tweener[tweeningFunction](timerDifference, startPos, aktPosition-startPos, tweenTimer2);
		element.style.left = neueLeft + "px";
		titletimer = setTimeout(function() {titelmenuBack(titellink,true);}, 10);
	} else {
		titleTime = null;
		clearTimeout(titletimer);
	}
}

function checkFormular (form_name, check_values, default_values) {
	var field_value,
		return_value = true,
		params_array = new Array(),
		empty_array = new Array(),
		invalid_array = new Array(),
		default_array = new Array(),
		check_array = check_values.split(','),
		std_array = default_values.split(','),
		// default Task
		filename = 'tasks/sendemail.task.php';
	for(var i = 0; i < check_array.length; i++) {
		field_value = document.forms[form_name][check_array[i]].value;
		// auf leere Werte prüfen
		if(empty(field_value)) {
			empty_array.push(check_array[i]);
			document.forms[form_name][check_array[i]].value = std_array[i];
			return_value = false;
		}
		else {
			// auf Defaultwerte prüfen
			if(field_value == std_array[i]) {
				default_array.push(check_array[i]);
				return_value = false;
			}
			else {
				// Werte auf Richtigkeit prüfen
				if(check_array[i] == 'email' && !ckeckEmailAddress(field_value)) {
					invalid_array.push(check_array[i]);
					return_value = false;
				}
				if(check_array[i] == 'nachricht') {
					field_value = field_value.replace(/\n/g, "<br>");
				}
				params_array.push(check_array[i] + "=" + field_value);
			}
		}
	}

	if(return_value) {
		switch(form_name) {
			case 'Newsletter':
				filename = 'tasks/saveabonnent.task.php';
				// aktion Parameter setzen bzw. an PHP weiterleiten
				if(check_array.contains('key')) {
					params_array.push("aktion=confirm");
				}
				if(check_array.contains('email') && check_array.length == 1) {
					params_array.push("aktion=unsubscribe");
				}
				break;

			case 'Gästebuch':
				filename = 'tasks/gbook_saveentry.task.php';
				btn_reset = document.getElementById("btn_reset");
				if(btn_reset) {
					btn_reset.style.display = 'none'
				}
				document.getElementById("btn_submit").style.display = 'none';
				break;

		}
		send_form = new Ajax(filename,'post');
		params_array.push("formname=" + form_name);
		params = params_array.join("&");
		send_form.query(params,showMesaage);
	}
	else {
		showErrorMessage(empty_array.join(","), invalid_array.join(","), default_array.join(","));
	}

	return return_value;
}

function showMesaage() {
	document.getElementById("error").innerHTML = send_form.result;
}

function showErrorMessage(empty_values, invalid_values, default_values) {
	var error_message = new Array(),
		empty_array = empty_values.split(','),
		invalid_array = invalid_values.split(','),
		default_array = default_values.split(',');

	for(var k = 0; k < empty_array.length; k++) {
		if(!empty(empty_array[k])) {
			error_message.push(error_messages[empty_array[k] + "_leer"]);
		}
	}
	for(var l = 0; l < invalid_array.length; l++) {
		if(!empty(invalid_array[l])) {
			error_message.push(error_messages[invalid_array[l] + "_invalid"]);
		}
	}
	for(var i = 0; i < default_array.length; i++) {
		if(!empty(default_array[i])) {
			error_message.push(error_messages[default_array[i] + "_default"]);
		}
	}

	document.getElementById("error").innerHTML = error_message.join("<br>");
}

function resetInput(field, defaultValue, isBlur) {
	if (typeof(isBlur) === 'undefined') {
		isBlur = false;
	}

    if(field.value === defaultValue) {
		field.value = '';
	}
    else if (field.value === '' && isBlur) {
    	field.value = defaultValue;
    }
}

function prepareEvent(eventId) {
	var eventBlock = null;

	if (typeof(eventId) !== 'undefined') {
		if (typeof(eventId) !== 'object') {
			eventBlock = document.getElementById(eventId);
		}
		
		if(eventBlock) {
			eventText = getElementsByClassName('event_text', 'div', eventBlock);
			eventMore = getElementsByClassName('event_more', 'div', eventBlock);

			if (eventText.length > 0) {
				eventText = eventText.pop();
			}
			
			if (eventMore.length > 0) {			
				eventMore = eventMore.pop();
			}
			
			setStyle(eventBlock, 'maxHeight', '154px');
			
			if (eventText) {
				setStyle(eventText, 'maxHeight', '147px');
			}
			
			if (eventMore) {
				setStyle(eventMore, 'display', 'block');
			}
		}
	}
}

function displayEventInformation(eventId, close) {
	var eventBlock = null;

	if (typeof(eventId) !== 'undefined') {
		if (typeof(eventId) !== 'object') {
			eventBlock = document.getElementById(eventId);
		}
		
		if(eventBlock) {
			if (typeof(close) === 'undefined') {
				close = false;
			}
			
			if (close) {
				blockHeight  = '154px';
				textHeight   = '147px';
				displayMore  = 'mehr Informationen &raquo;';
				functionMore = function () {displayEventInformation(eventBlock.id);};
			}
			else {
				blockHeight  = '';
				textHeight   = '';
				displayMore  = '&laquo; schließen';
				functionMore = function () {displayEventInformation(eventBlock.id, true);};
			}
			
			eventText = getElementsByClassName('event_text', 'div', eventBlock);
			eventMore = getElementsByClassName('event_more', 'div', eventBlock);

			if (eventText.length > 0) {
				eventText = eventText.pop();
			}
			
			if (eventMore.length > 0) {			
				eventMore = eventMore.pop();
			}
			
			setStyle(eventBlock, 'maxHeight', blockHeight);
			
			if (eventText) {
				setStyle(eventText, 'maxHeight', textHeight);
			}

			if (eventMore) {
				eventMore.innerHTML = displayMore;
				eventMore.onclick = functionMore;
			}
		}
	}
}

function selectTextarea(id) {
    var element = document.getElementById(id);
	if (typeof(element) != "undefined" && element != null) {
		element.focus();
		element.select();
	}
}

