// mootools v1.2 necessary for scripts to work

// open external links in new window
var externalLinks = {
	
	// CSS CLASSES
	externalLinkClass: 'external_link',
	externalLinkTitle: 'öffnet neues Fenster',
	
	init: function() {
		var links = $$('a.'+externalLinks.externalLinkClass);
		for(var i=0; i<links.length; i++) {
			links[i].target = "_blank";
			links[i].title += " ("+externalLinks.externalLinkTitle+")";
		};
	}
};

// open external links in new window
var searchFieldValue = {
	
	// CSS CLASSES AND IDS
	fieldId: 'SearchFormNew_SearchFormNew_Search',
	submitId: 'SearchFormNew_SearchFormNew_action_results',
	standardValue: '',
	
	init: function() {
		var searchField = $(searchFieldValue.fieldId);
		var submitBtn = $(searchFieldValue.submitId);
		searchFieldValue.standardValue = submitBtn.value;
		
		searchField.onclick = searchFieldValue.onfocus = function() {
			searchFieldValue.removeValue(this);
		}
		
		searchField.onblur = function() {
			searchFieldValue.restoreValue(this);
		}
	},
	
	removeValue: function(elm) {
		if(elm.value == searchFieldValue.standardValue) {
			elm.value = '';
		}
	},
	
	restoreValue: function(elm) {		
		if(elm.value == '') {
			elm.value = searchFieldValue.standardValue;
		}
	}
};

// add an unobtrusive "print this page" link
var printPage = {
	
	// CSS CLASSES AND IDS
	insertAfterID: 'langSelect', // ID of the element that the print page Link ist insrted after
	printPageID: 'printPage',
	
	// TEXTS
	printPageTitle: 'Seite drucken',
	printPageTxt: 'Diese Seite ausdrucken',
	
	init: function() {
		var insertInto = $(printPage.insertAfterID).getParent();
		
		// create link
		var printPageLink = new Element('a', {
			href: '#',
			title: printPage.printPageTitle,
			id: printPage.printPageID
		});
		printPageLink.set('text', printPage.printPageTxt);
		
		// insert link into document
		printPageLink.onclick = function() {window.print(); return false;}
		insertInto.appendChild(printPageLink);
	}
};

// add text-resize widget to page
var textResize = {
	
	// CSS CLASSES AND IDS
	insertAfterID: 'langSelect', // ID of the element that the print page Link ist insrted after
	textResizeID: 'textResize',
	textResizeIDSmaller: 'smaller',
	textResizeIDNormal: 'normal',
	textResizeIDBigger: 'bigger',
	currClass: 'current',
	
	// TEXTS
	textResizeTitleSmaller: 'Schrift verkleinern',
	textResizeTitleNormal: 'Normale Schriftgröße',
	textResizeTitleBigger: 'Schrift vergrößern',
	
	// STYLESHEET TITLE
	smallerTitle: 'Kleine Schrift',
	normalTitle: 'Standard',
	biggerTitle: 'Große Schrift',
	
	// GLOBAL VARIABLES
	activeStyleTitle: '',
	cookieName: 'styleTitle',
	
	init: function() {
		if (!document.getElementsByTagName) return;
		
		// set preferred Stylesheet saved in Cookie
		var cookie = textResize.readCookie(textResize.cookieName);
		textResize.activeStyleTitle = (cookie) ? cookie : textResize.normalTitle;
		textResize.setActiveStylesheet(textResize.activeStyleTitle);
		
		var insertInto = $(textResize.insertAfterID).getParent();
		
		// create list
		var textResizeList = new Element('ul', {id: textResize.textResizeID});
		
		// create List items
		var tmpLi1 = new Element('li');
		// create link
		var tmpA1 = new Element('a', {
			href: '#',
			title: textResize.textResizeTitleSmaller,
			id: textResize.textResizeIDSmaller
		});
		tmpA1.set('text', textResize.textResizeTitleSmaller);
		tmpA1.onclick = function() {
			textResize.setActiveStylesheet(textResize.smallerTitle, this);  
			return false;
		}
		
		// create List items
		var tmpLi2 = new Element('li');
		// create link
		var tmpA2 = new Element('a', {
			href: '#',
			title: textResize.textResizeTitleNormal,
			id: textResize.textResizeIDNormal
		});
		tmpA2.onclick = function() {
			textResize.setActiveStylesheet(textResize.normalTitle, this); 
			return false;
		}
		tmpA2.set('text', textResize.textResizeTitleNormal);
		
		// create List items
		var tmpLi3 = new Element('li');
		// create link
		var tmpA3 = new Element('a', {
			href: '#',
			title: textResize.textResizeTitleBigger,
			id: textResize.textResizeIDBigger
		});
		tmpA3.onclick = function() {
			textResize.setActiveStylesheet(textResize.biggerTitle, this); 
			return false;
		}
		tmpA3.set('text', textResize.textResizeTitleBigger);
		
		// set current link depending on preferred Stylesheet
		switch(textResize.activeStyleTitle) {
			
			case textResize.smallerTitle:
				tmpA1.addClass(textResize.currClass);
				break;
				
			case textResize.biggerTitle:
				tmpA3.addClass(textResize.currClass);
				break;
				
			default:
				tmpA2.addClass(textResize.currClass);
		}
		
		// append list items to list
		tmpLi1.appendChild(tmpA1);
		textResizeList.appendChild(tmpLi1);
		tmpLi2.appendChild(tmpA2);
		textResizeList.appendChild(tmpLi2);
		tmpLi3.appendChild(tmpA3);
		textResizeList.appendChild(tmpLi3);
		
		// append list to body
		insertInto.appendChild(textResizeList);		
	},
	
	setClass: function(elm) {
		var list = elm.getParent().getParent();
		listLinks = list.getElements('a');
		
		for(var i=0; i<3; i++) {
			if(listLinks[i].hasClass(textResize.currClass)) {
				listLinks[i].removeClass(textResize.currClass);
			}
		}
		elm.addClass(textResize.currClass);
	},
	
	setActiveStylesheet: function(styleTitle, link) {
		
		// set calss for active link
		if(link) {
			textResize.setClass(link);
		}
		
		var el = document.getElementsByTagName("link");
		for (var i = 0; i < el.length; i++ ) {
			if(el[i].getAttribute("rel").indexOf("style") != -1 && el[i].getAttribute("title") && el[i].getAttribute("media") != "print" ) {
				el[i].disabled = true;
				//enable selected stylesheet
				if(el[i].getAttribute("title") == styleTitle) {
					el[i].disabled = false;
					textResize.activeStyleTitle = styleTitle;
					// set cookie with current stylesheet
					textResize.createCookie("styleTitle", styleTitle, 365);
				}
			}
		}
	},
	
	createCookie: function(name, value, days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
			var expires = '; expires=' + date.toGMTString();
		} 
		else {
			expires = '';
		}
		document.cookie = name + '=' + value + expires + '; path=/';
	},

	readCookie: function(name) {
		var nameEQ = name + '=';
		var ca     = document.cookie.split(';');
	
		for (var i = 0; i < ca.length; i++) {
			var c = ca[i];
	
			while (c.charAt(0) == ' ') {
				c = c.substring(1, c.length);
			}
	
			if (c.indexOf(nameEQ) == 0) {
				return c.substring(nameEQ.length, c.length);
			}
		}
		return null;
	}
	
};

// modifiy <select> dropdown language selection
var langSelect = {
	
	// CSS CLASSES AND IDS
	containerId: 'langSelect',
	
	init: function() {
		
		var baseHref = document.getElementsByTagName("base")[0].href;
		
		var form = $(langSelect.containerId);
		var fieldset = form.getElementsByTagName('fieldset')[0];
		var select = form.getElementsByTagName('select')[0];
		var submit = form.getElementsByTagName('input')[0];
		
		// remove submit Button
		fieldset.removeChild(submit);
		
		// automatically reset url to new urlSegement of the selected language
		// (every page in every language has its unique urlSegment)
		select.onchange = function() {
			select.options[select.selectedIndex].selected = true;
			window.location = baseHref + select.options[select.selectedIndex].value;
		}
	}
}



// Dynamische Unternavigation wird animiert ein-/ausgeblendet
var dynamicNav = {
	
	// CSS CLASSES AND ID
	navContainerId: "mainNav",
	navHiddenClass: "nav_hidden",
	navVisibleClass: "nav_visible",
	hasSubListsClass: "has_children",
	navLevel1CurrClass: "currLi",
	
	// Animation Variables
	aniTransitionIn: Fx.Transitions.Circ.easeOut,
	aniTransitionOut: Fx.Transitions.Circ.easeOut, 
	aniDuration: 200, //Duration of Animation in ms
	aniTimeout: 400, // timeout in ms till submenu gets hidden automatically
	
	// Variables
	currVisibleLiLevel1: null,
	currVisibleLiLevel2: null,
	currTimeoutLevel1: null,
	currTimeoutLevel2: null,	
	safariScrollSize: 5, // width in px that is added to scrollSize, because safari gets it too short
	subNavHeightLevel1: 282, // height of subnavigation level 1 in pixels
	subNavWidthLevel2: 240, // width of subnavigation level 2 in pixels
	
	init:function(){
		
		// Select all <li> Tags of main-navigation
		var navLis = $$('#'+dynamicNav.navContainerId+' li');
		
		for(var i=0; i < navLis.length; i++) {
			
			// <li> Tag as Trigger to show subnavigation
			var trigger = navLis[i];
			
			// Add Events to all <li> Elements of main Navigation
			if(trigger.getParent().getProperty('id') == dynamicNav.navContainerId) {
			
				// getSublist level 1
				var subListLevel1 = trigger.getElementsByTagName('ul')[0];
				
				// Copy Sublists level 1 in containing div
				if(subListLevel1) {
					
					// Copy Subnavigation in surrounding <div>
					var newDiv = new Element('div').inject(subListLevel1, 'before');
					newDiv.addClass(dynamicNav.navHiddenClass);
					newDiv.adopt(subListLevel1);					
						
					// Set initial height of surrounding div to 0 (hide from view)
					newDiv.setStyles({
						'height': 0
					});
						
					// Set negative margin-top to subnavigation level 1, so that it is hidden from view
					//subListLevel1.setStyle('margin-top', -dynamicNav.subNavHeightLevel1);
					subListLevel1.style.marginTop = '-'+dynamicNav.subNavHeightLevel1+'px';
					
					// check for sublists level 2
					var subListLevel1Li = subListLevel1.getElementsByTagName('li');
					for(var j=0; j<subListLevel1Li.length; j++) {
						
						// Add behaviour to sublists level 2
						if(subListLevel1Li[j].hasClass(dynamicNav.hasSubListsClass)) {
							
							// getSublist level 2
							var subListLevel2 = subListLevel1Li[j].getElementsByTagName('ul')[0];
							
							// Copy Sublist level 2 in containing div
							if(subListLevel2) {
								
								// Copy Subnavigation level 2 in surrounding <div>
								var newDiv = new Element('div').inject(subListLevel2, 'before');
								newDiv.adopt(subListLevel2);
									
								// Set initial width of surrounding div to 0 (hide from view)
								newDiv.setStyles({
									'width': 0
								});
									
								// Set negative margin-left to subnavigation, so that it ist hidden from view
								//subListLevel2.setStyle('margin-left', -dynamicNav.subNavWidthLevel2);
								subListLevel2.style.marginLeft = '-'+dynamicNav.subNavWidthLevel2+'px';
							}
								
							// Events für Listitem Subnavi level 2
							subListLevel1Li[j].addEvents({
								'mouseover': function(){
									dynamicNav.slideOutCurr(this, 2);
									dynamicNav.slideIn(this, 2);
								},		
								'focus': function(){
									dynamicNav.slideOutCurr(this, 2);
									dynamicNav.slideIn(this, 2)
								},
								'mouseout': function() {
									dynamicNav.setTimeout(this, 2);
								}
							});
						}					
					}
					
					// Events für Listitem Hauptnavi level 1
					trigger.addEvents({
						'mouseover': function(){
							dynamicNav.slideOutCurr(this, 1);
							dynamicNav.slideIn(this, 1);
						},		
						'focus': function(){
							dynamicNav.slideOutCurr(this, 1);
							dynamicNav.slideIn(this, 1)
						},
						'mouseout': function() {
							dynamicNav.setTimeout(this, 1);
						}
					});			
				}	
			}
		}		
	},
	
	slideIn:function(trigger, level) {
		
		var navDiv = trigger.getElementsByTagName('div')[0];
		
		// if li doesn´t have subnavigation
		if(!navDiv) {
			return;
		}	
		
		var navList = navDiv.getFirst();
		
		// set tweening properties
		navDiv.set('tween', {duration: dynamicNav.aniDuration, transition: dynamicNav.aniTransitionIn});
		navList.set('tween', {duration: dynamicNav.aniDuration, transition: dynamicNav.aniTransitionIn});
		
		// change class name to visible
		navDiv.removeClass(dynamicNav.navHiddenClass);
		navDiv.addClass(dynamicNav.navVisibleClass);
		
		// if sublist level 1
		if(level == 1) {
			
			// Clear Timeout for Slideout
			if(dynamicNav.currTimeoutLevel1) {
				window.clearTimeout(dynamicNav.currTimeoutLevel1);
				dynamicNav.currTimeoutLevel1 = null;
			}
			
			// set current class to <li> trigger
			trigger.addClass(dynamicNav.navLevel1CurrClass);
			
			// start tweening
			navDiv.tween('height', dynamicNav.subNavHeightLevel1);
			navList.tween('margin-top', 0);
			
			// save current submenu
			dynamicNav.currVisibleLiLevel1 = trigger;
			
		}
		else {
			
			// Clear Timeout for Slideout
			if(dynamicNav.currTimeoutLevel2) {
				window.clearTimeout(dynamicNav.currTimeoutLevel2);
				dynamicNav.currTimeoutLevel2 = null;
			}
			
			// start tweening
			navDiv.tween('width', dynamicNav.subNavWidthLevel2);
			navList.tween('margin-left', 0);
			
			// save current submenu
			dynamicNav.currVisibleLiLevel2 = trigger;
		}		
		
	},
	
	slideOutCurr:function(trigger, level) {
		
		// if sublist level 1
		if (level == 1) {
			

			// if no subnavigation level1 is visible, there is no subnavigation level1 or subnavigation level 1 is the same that should be shown -> return
			if (!dynamicNav.currVisibleLiLevel1 || !dynamicNav.currVisibleLiLevel1.getElementsByTagName('div')[0] || trigger === dynamicNav.currVisibleLiLevel1) {
				return;
			}
			
			var navDiv = dynamicNav.currVisibleLiLevel1.getElementsByTagName('div')[0];
			var navList = navDiv.getFirst();
		}
		
		else {
			// if no subnavigation is visible, there is no subnavigation or subnavigation is the same that should be shown -> return
			if (!dynamicNav.currVisibleLiLevel2 || !dynamicNav.currVisibleLiLevel2.getElementsByTagName('div')[0] || trigger === dynamicNav.currVisibleLiLevel2) {
				return;
			}
			
			var navDiv = dynamicNav.currVisibleLiLevel2.getElementsByTagName('div')[0];
			var navList = navDiv.getFirst();
			
		}
		
		// set tweening properties
		navDiv.set('tween', {duration: dynamicNav.aniDuration, transition: dynamicNav.aniTransitionIn});
		navList.set('tween', {duration: dynamicNav.aniDuration, transition: dynamicNav.aniTransitionIn});
		
		// if sublist level 1
		if(level == 1) {
			
			// start tweening
			navDiv.tween('height', 0);
			navList.tween('margin-top', -dynamicNav.subNavHeightLevel1);
			
			// remove current class from current visible <li>
			dynamicNav.currVisibleLiLevel1.removeClass(dynamicNav.navLevel1CurrClass);
			
			// delete current submenu
			dynamicNav.currVisibleLiLevel1 = null;
			
		}
		else {
			
			// start tweening
			navDiv.tween('width', 0);
			navList.tween('margin-left', -dynamicNav.subNavWidthLevel2);
			
			// delete current submenu
			dynamicNav.currVisibleLiLevel2 = null;
		}
	},
	
	slideOut:function(trigger, level) {
		
		// if sublist level 1
		if (level == 1) {

			// if no subnavigation level1 is visible, there is no subnavigation level1 -> return
			if (!dynamicNav.currVisibleLiLevel1 || !dynamicNav.currVisibleLiLevel1.getElementsByTagName('div')[0]) {
				return;
			}
			
			var navDiv = dynamicNav.currVisibleLiLevel1.getElementsByTagName('div')[0];
			var navList = navDiv.getFirst();
		}
		
		else {
			// if no subnavigation is visible, there is no subnavigation -> return
			if (!dynamicNav.currVisibleLiLevel2 || !dynamicNav.currVisibleLiLevel2.getElementsByTagName('div')[0]) {
				return;
			}
			
			var navDiv = dynamicNav.currVisibleLiLevel2.getElementsByTagName('div')[0];
			var navList = navDiv.getFirst();
			
		}
		
		// set tweening properties
		navDiv.set('tween', {duration: dynamicNav.aniDuration, transition: dynamicNav.aniTransitionIn});
		navList.set('tween', {duration: dynamicNav.aniDuration, transition: dynamicNav.aniTransitionIn});
		
		// if sublist level 1
		if(level == 1) {
			
			// start tweening
			navDiv.tween('height', 0);
			navList.tween('margin-top', -dynamicNav.subNavHeightLevel1);
			
			// set current class to <li> trigger
			trigger.removeClass(dynamicNav.navLevel1CurrClass);
			
			// delete current submenu
			dynamicNav.currVisibleLiLevel1 = null;
			
		}
		else {
			
			// start tweening
			navDiv.tween('width', 0);
			navList.tween('margin-left', -dynamicNav.subNavWidthLevel2);
			
			// delete current submenu
			dynamicNav.currVisibleLiLevel2 = null;
		}
	},
	
	setTimeout: function(trigger, level) {
		
		// if sublist level 1
		if (level == 1) {
		
			// Clear Timeout for Slideout
			if (dynamicNav.currTimeoutLevel1) {
				window.clearTimeout(dynamicNav.currTimeoutLevel1);
				dynamicNav.currTimeoutLevel1 = null;
			}
			
			// set callback function for timeout to submit variables
			var callback = function() {
				dynamicNav.slideOut(trigger, level);
			};
			
			// set new timeout
			dynamicNav.currTimeoutLevel1 = window.setTimeout(callback, dynamicNav.aniTimeout);
			
		}
		else {
		
			// Clear Timeout for Slideout
			if (dynamicNav.currTimeoutLevel2) {
				window.clearTimeout(dynamicNav.currTimeoutLevel2);
				dynamicNav.currTimeoutLevel2 = null;
			}
			// set callback function for timeout to submit variables
			var callback = function() {
				dynamicNav.slideOut(trigger, level);
			};
			
			// set new timeout
			dynamicNav.currTimeoutLevel2 = window.setTimeout(callback, dynamicNav.aniTimeout);
		}
	}
}


// Overlay zur Abfrage ob fremder Shop besucht werden soll
var shopOverlay = {

	// CSS CLASSES AND ID
	shopLinkClass: 'shopBtn',
	shopLinkClass2: 'shopPopUp',
	
	overlayCID: 'shopOverlayContainer',
	overlayCContainer: 'document.body',
	overlayCZIndex: 100,
	
	overlayID: 'shopOverlay',
	overlayColour: '#000',
	overlayOpacity: 0.8,
	
	overlayMID: 'shopMessage',
	overlayMWidth: 540,
	overlayMHeight: 190,
	
	aniDuration: 200,
	aniTransition: Fx.Transitions.Linear,
	
	defaultLang: 'de', //default language of the website
	/*
	 * Website needs lang="xx" in html tag for script to work:
	 * <html lang="de">
	 */
	
	
	init: function() {
		
		// translatioons for shop overlay
		var _t = new Array();
		// deutsch
		_t['de'] = new Array(
			// heading
			'Sie verlassen nun die MEDintim Website und wechseln zu einem externen Online Shop.',
			// infotext
			'Der Shop gehört nicht zur Kessel Marketing & Vertriebs GmbH, sondern vertreibt unabhängig Artikel aus dem MEDintim Sortiment.',
			// shop link
			'Zum Online Shop',
			// abort link
			'Abbrechen'
		);
		// englisch
		_t['en'] = new Array(
			// heading
			'You are leaving the MEDintim website and entering an external online shop.',
			// infotext
			'The online shop is not part of Kessel Marketing & Vertriebs GmbH. It is an independet shop selling products from the MEDintim product range.',
			// shop link
			'Enter online shop',
			// abort link
			'Abort'
		);
		// niederländisch - deaktiviert
		/*
		_t['nl'] = new Array(
			// heading
			'U verlaat nu de MEDintim website en gaat verder naar een externe webshop.',
			// infotext
			'De webshop maakt geen deel uit van KESSEL Marketing & Vertriebs GmbH. Het is een onafhankelijke webshop waar de producten van MEDintim besteld kunnen worden.',
			// shop link
			'Ga naar de webshop',
			// abort link
			'Stoppen'
		);
		*/
		
		
		// get language of current page
		var currLang = $$('html').getProperty('lang');
		// if language isn´´ set in header -> use default language
		if(!currLang || currLang == '') currLang = shopOverlay.defaultLang;
		// if no translation for given language is available -> abort
		if(currLang != '' && !_t[currLang]) return;
		
		
		// get shop links
		var shopLinks1 = $$('p.'+shopOverlay.shopLinkClass+' a');
		var shopLinks2 = $$('a.'+shopOverlay.shopLinkClass2);
		var shopLinks = shopLinks1.concat(shopLinks2);
		
		// if shop links on page
		if(shopLinks.length >= 1) {
			var linkHref = shopLinks[0].getProperty('href');
			shopLinks[0].setProperty('href', '#');
			// add onclick events
			shopLinks[0].addEvent('click', function(event){
				shopOverlay.show();
				event.stop();
			});		
			
			// get body size
			var bodyScrollSize = document.body.getScrollSize();
			var bodySize = document.body.getSize();
			var currScrollPos = document.body.getScroll();
			
			// OVERLAY CONTAINER
			shopOverlay.container = new Element('div').setProperty('id', shopOverlay.overlayCID).setStyles({
				position: 'absolute',
				left: '0px',
				top: '0px',
				width: bodyScrollSize.x,
				height: bodyScrollSize.y,
				visibility: 'hidden',
				overflow: 'hidden',
				zIndex: shopOverlay.overlayCZIndex
			}).inject(document.body, 'inside');
			
			// OVERLAY
			shopOverlay.overlay = new Element('div').setProperty('id', shopOverlay.overlayID).setStyles({
				position: 'absolute',
				left: '0px',
				top: '0px',
				width: bodyScrollSize.x,
				height: bodyScrollSize.y,
				opacity: shopOverlay.overlayOpacity,
				zIndex: (shopOverlay.overlayCZIndex+1),
				backgroundColor: shopOverlay.overlayColour
			}).inject(shopOverlay.container, 'inside');
			
			// MESSAGE
			shopOverlay.messageContainer = new Element('div').setProperty('id', shopOverlay.overlayMID).setStyles({
				position: 'absolute',
				left: Math.round((bodySize.x/2)-(shopOverlay.overlayMWidth/2))+'px',
				top: (currScrollPos.y+(Math.round((bodySize.y/2)-(shopOverlay.overlayMHeight/2))))+'px',
				width: shopOverlay.overlayMWidth+'px',
				zIndex: (shopOverlay.overlayCZIndex+2)
			}).inject(shopOverlay.container, 'inside');
			
			var innerDiv = new Element('div').inject(shopOverlay.messageContainer, 'inside');
			
			var messageHead = new Element('h2').setProperty('class', 'margin-top_0').set(
				'html',
				_t[currLang][0]
			).inject(innerDiv, 'inside');
			
			var message = new Element('p').set(
				'html',
				_t[currLang][1]
			).inject(innerDiv, 'inside');
			
			var links = new Element('p').setProperty('class', 'links clearfix').inject(shopOverlay.messageContainer, 'inside');
			
			var linkShop = new Element('a').setProperties({
				href: linkHref,
				target: '_blank',
				title: '',
				id: 'shopOverlayBtn'
			}).set('html', _t[currLang][2]).inject(links, 'inside');
			
			var linkAbort = new Element('a').setProperties({
				href: '#',
				title: '',
				id: 'shopOverlayAbort'
			}).set('html', _t[currLang][3]).inject(links, 'inside');
			
			linkShop.addEvent('click', function(event){
				shopOverlay.hide();
				event.stopPropagation();
			});
			
			// SET OPACITY
			shopOverlay.fade = new Fx.Morph(shopOverlay.overlayCID, {duration: shopOverlay.aniDuration, transition: shopOverlay.aniTransistion}).set({
				'opacity': 0,
				'display': 'none'
			});
			
			// click event for overlay
			shopOverlay.container.addEvent('click', function(event){
				shopOverlay.hide();
				event.stop();
			});
		}
		
		
		
	},
	
	show: function(){
		var bodySize = document.body.getSize();
		var currScrollPos = document.body.getScroll();
		$(shopOverlay.overlayMID).setStyle('top', (currScrollPos.y+(Math.round((bodySize.y/2)-(shopOverlay.overlayMHeight/2)))));
		
		shopOverlay.fade.start({
			'opacity': 1,
			'visibility': 'visible',
			'display': 'block'
		});
	},
	
	hide: function(){
		shopOverlay.fade.start({
			'opacity': 0,
			'visibility': 'hidden',
			'display': 'none'
		});
	}
}


// Verlinkte Elemente auf Seite (href="#element") über Klick auf Link ein-/ausblenden
/*
 * trigger link needs class "toggle" and href="#idOfTargetElement"
 *
 * Example HTML:
 * <h4><a href="#konditionen-1" title="" class="toggle">Konditionen</a></h4>
 * <div id="konditionen-1">
 *     ...
 * </div>
 *
 */
var slideToggle = {
	
	// CSS and VARIABLES
	triggerClass: 'toggle', // class des <a>-Elements, damit Funktion ausgeführt wird
	openClass: 'open',	// class des <a>-Elements, die angibt dass zugehöriger Container geöffnet ist
	containerClass: 'toggleContainer',	// class des containers der ein- und ausgeblendet wird
	
	init: function() {
		var links = $$('a.'+slideToggle.triggerClass);
		var linksCnt = links.length;
		if(linksCnt >= 1) {
			for(var i=0; i < linksCnt; i++) {
				// hide all target elements when page loads
				// get target id of link
				var target = links[i].getProperty("href").split("#");
				if(target[target.length-1]) {
					var targetElm = $$('#'+target[target.length-1]);
					$$('#'+target[target.length-1]).addClass(slideToggle.containerClass);
					// create slide element for each link
					links[i].slide = new Fx.Slide(target[target.length-1], {duration: 300});
					// hide target item with given ID
					links[i].slide.hide();
					// add click-event to toggle target element
					links[i].addEvent('click', function(e) {
						e.stop();
						// toggle class
						this.toggleClass(slideToggle.openClass);
						this.slide.toggle();
					});
				}
			}
		}
	}
}
	

// INITIALISIERUNG ALLER FUNKTIONEN NACH LADEN DER SEITE
window.addEvent('domready', function() {
	// add CSS class to body tag to indicate that JavaScript is available
	$$("body").addClass('has_js');
	
	externalLinks.init();
	searchFieldValue.init();
	printPage.init();
	textResize.init();
	langSelect.init();
	dynamicNav.init();
	shopOverlay.init();
	slideToggle.init();
});