/*-- 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(){
				swapImage(this, oldsrc);
			}
		}
	}


/* border-radius plugin */

	(function($){
		$.fn.borderRadius = function(radius){
			return this.each(function(e){
				$(this).css({
					'border-radius': radius,
					'-moz-border-radius': radius,
					'-webkit-border-radius': radius
				});
			});
		};
	})(jQuery);


/*-- Iframe popup --*/

	(function($){
		$.fn.IframePopup = function(options){
			// Settings
			var IP_Settings = {
				margin: 20, // Margin from the iframe popup
				width: 700, // Default popup width
				height: 500, // Default popup height
				borderradius: '10px'  // Popup border-radius
			};
			var IP_Settings = $.extend(IP_Settings, options);
	
			// Create iframe popup
			createIframePopup();
			// Open iframe popup
			$(this).click(function(){
				// Hide scrollbar and fadein overlay
				$('body, html').css('overflow', 'hidden');
				$(ip_overlay).fadeTo('slow', 0.8);
				// Set tabindex="-1" to content
				$('a, input, textarea, select, button').not('.close').each(function(){
					$(this).addClass('tabindex').attr('tabindex', '-1');
				});
				// Get popup size from rel attribut
				var popupHeight = this.rel.split(',')[1];
				var popupWidth = this.rel.split(',')[0];
				if(popupWidth == null || popupHeight == null){
					popupWidth = IP_Settings.width;
					popupHeight = IP_Settings.height;
				}
				// Set popup size
				var NormalCSS = {
					'bottom': 'auto',
					'height': popupHeight+'px',
					'left': '50%',
					'margin-left' : Math.floor(-(popupWidth)/2)+'px',
					'margin-top': Math.floor(-(popupHeight)/2)+$(window).scrollTop()+'px',
					'max-height': popupHeight+'px',
					'top': '50%',
					'width' : popupWidth+'px'
				};
				var FlexibleCSS = {
					'bottom': IP_Settings.margin+'px',
					'height': 'auto',
					'margin-top': 0,
					'top': IP_Settings.margin+'px'
				};
				// Normal iframe popup size
				$(ip_popup).css(NormalCSS).borderRadius(IP_Settings.borderradius).show();
				// Flexible iframe popup size
				$(window).resize(function(){
					($(this).height() <= ($(ip_popup).height()+2*IP_Settings.margin)) ? $(ip_popup).css(FlexibleCSS) : $(ip_popup).css(NormalCSS);
				});
				($(window).height() <= ($(ip_popup).height()+2*IP_Settings.margin)) ? $(ip_popup).css(FlexibleCSS) : $(ip_popup).css(NormalCSS);
				// Insert iframe title
				$(ip_title).html(this.title);
				// Insert iframe content
				$(ip_popup).addClass('ip_loading');
				$(ip_iframe).attr('src', this);	
				// Preloader
				$(ip_iframe).css('visibility', 'hidden');
				$(ip_iframe).load(function(){
					$(ip_popup).removeClass('ip_loading');
					$(ip_iframe).css('visibility', 'visible');
				});
				return false;
			});
			$(document).bind('keydown', keyDown);
	
			// Close popup
			function closeIframePopup(){
				$('body').css('overflow', bodyOverflow);
				$('html').css('overflow-x', htmlOverflowX);
				$('html').css('overflow-y', htmlOverflowY);
				$(ip_popup).hide();
				$(ip_overlay).fadeOut('slow');
				$(window).unbind('resize');
				// Remove tabindex="-1"
				$('.tabindex').each(function(){
					$(this).removeClass('tabindex').removeAttr('tabindex');
				});
			}

			// Keyboard events
			function keyDown(event){
				var code = event.keyCode;
				return ($.inArray(code, [27,88,67]) >= 0) ? closeIframePopup() : true;
			}

			// Create iframe popup
			function createIframePopup(){
				$('body').append(
					ip_overlay = $('<div>').attr({ 'class': 'ip_overlay' }).hide().click(closeIframePopup),
					ip_popup = $('<div class>').attr({ 'class': 'ip_popup' }).append(
					ip_close = $('<a>').attr({ 'class': 'close', href: '#', title: close+' [ESC]' }).text(close).click(closeIframePopup),
					ip_title = $('<h2>').attr({ 'class': 'title' }),
					$('<div>').attr({ 'class': 'ip_content' }).append(
						ip_iframe = $('<iframe>').attr({ 'src': '', 'frameborder': '0' })
					)
				).hide()
			);
			$([
				bodyOverflow = $('body').css('overflow'),
				htmlOverflowX = $('html').css('overflow-x'),
				htmlOverflowY = $('html').css('overflow-y')
			])
		}};
	})(jQuery);


/*-- slimbox 2.03 --*/

	(function(w){var E=w(window),u,g,F=-1,o,x,D,v,y,L,s,n=!window.XMLHttpRequest,e=window.opera&&(document.comtextMode=="CSS1Comtext")&&(w.browser.version>=9.3),m=document.documentElement,l={},t=new Image(),J=new Image(),H,a,h,q,I,d,G,c,A,K;w(function(){w("body").append(w([H=w('<div id="lbOverlay" />')[0],a=w('<div id="lbCenter" />')[0],G=w('<div id="lbBottomContainer" />')[0]]).css("display","none"));h=w('<div id="lbImage" />').appendTo(a).append(q=w('<div style="position: relative;" />').append([I=w('<a id="lbPrevLink" href="#" />').click(B)[0],d=w('<a id="lbNextLink" href="#" />').click(f)[0]])[0])[0];c=w('<div id="lbBottom" />').appendTo(G).append([w('<a id="lbCloseLink" href="#" />').add(H).click(C)[0],A=w('<div id="lbCaption" />')[0],K=w('<div id="lbNumber" />')[0],w('<div style="clear: both;" />')[0]])[0]});w.slimbox=function(O,N,M){u=w.extend({loop:false,overlayOpacity:0.8,overlayFadeDuration:400,resizeDuration:400,resizeEasing:"swing",initialWidth:250,initialHeight:250,imageFadeDuration:400,captionAnimationDuration:400,counterText:"Image {x} of {y}",closeKeys:[27,88,67],previousKeys:[37,80],nextKeys:[39,78]},M);if(typeof O=="string"){O=[[O,N]];N=0}y=E.scrollTop()+((e?m.clientHeight:E.height())/2);L=u.initialWidth;s=u.initialHeight;w(a).css({top:Math.max(0,y-(s/2)),width:L,height:s,marginLeft:-L/2}).show();v=n||(H.currentStyle&&(H.currentStyle.position!="fixed"));if(v){H.style.position="absolute"}w(H).css("opacity",u.overlayOpacity).fadeIn(u.overlayFadeDuration);z();k(1);g=O;u.loop=u.loop&&(g.length>1);return b(N)};w.fn.slimbox=function(M,P,O){P=P||function(Q){return[Q.href,Q.title]};O=O||function(){return true};var N=this;return N.unbind("click").click(function(){var S=this,U=0,T,Q=0,R;T=w.grep(N,function(W,V){return O.call(S,W,V)});for(R=T.length;Q<R;++Q){if(T[Q]==S){U=Q}T[Q]=P(T[Q],Q)}return w.slimbox(T,U,M)})};function z(){var N=E.scrollLeft(),M=e?m.clientWidth:E.width();w([a,G]).css("left",N+(M/2));if(v){w(H).css({left:N,top:E.scrollTop(),width:M,height:E.height()})}}function k(M){w("object").add(n?"select":"embed").each(function(O,P){if(M){w.data(P,"slimbox",P.style.visibility)}P.style.visibility=M?"hidden":w.data(P,"slimbox")});var N=M?"bind":"unbind";E[N]("scroll resize",z);w(document)[N]("keydown",p)}function p(O){var N=O.keyCode,M=w.inArray;return(M(N,u.closeKeys)>=0)?C():(M(N,u.nextKeys)>=0)?f():(M(N,u.previousKeys)>=0)?B():true}function B(){return b(x)}function f(){return b(D)}function b(M){if(M>=0){F=M;o=g[F][0];x=(F||(u.loop?g.length:0))-1;D=((F+1)%g.length)||(u.loop?0:-1);r();a.className="lbLoading";l=new Image();l.onload=j;l.src=o}return false}function j(){a.className="";w(h).css({backgroundImage:"url("+o+")",visibility:"hidden",display:""});w(q).width(l.width);w([q,I,d]).height(l.height);w(A).html(g[F][1]||"");w(K).html((((g.length>1)&&u.counterText)||"").replace(/{x}/,F+1).replace(/{y}/,g.length));if(x>=0){t.src=g[x][0]}if(D>=0){J.src=g[D][0]}L=h.offsetWidth;s=h.offsetHeight;var M=Math.max(0,y-(s/2));if(a.offsetHeight!=s){w(a).animate({height:s,top:M},u.resizeDuration,u.resizeEasing)}if(a.offsetWidth!=L){w(a).animate({width:L,marginLeft:-L/2},u.resizeDuration,u.resizeEasing)}w(a).queue(function(){w(G).css({width:L,top:M+s,marginLeft:-L/2,visibility:"hidden",display:""});w(h).css({display:"none",visibility:"",opacity:""}).fadeIn(u.imageFadeDuration,i)})}function i(){if(x>=0){w(I).show()}if(D>=0){w(d).show()}w(c).css("marginTop",-c.offsetHeight).animate({marginTop:0},u.captionAnimationDuration);G.style.visibility=""}function r(){l.onload=null;l.src=t.src=J.src=o;w([a,h,c]).stop(true);w([I,d,h,G]).hide()}function C(){if(F>=0){r();F=x=D=-1;w(a).hide();w(H).stop().fadeOut(u.overlayFadeDuration,k)}return false}})(jQuery);

	if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)){
		jQuery(function($){
			$("a[rel^='lightbox']").slimbox({counterText: countertext, easing: "easeOutElastic"}, null, function(el){
				return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
			});
		});
	}


/*-- Forms --*/

	(function($){
		$.fn.forms = function(options){
			if(this.length){
				// Settings
				var formSettings = {
					summarypage: true,
					multipage: true,
					progress_steps: true,
					error_value: false
				};
				var formSettings = $.extend(formSettings, options);
				var toValidate = new Array();
				var validForm = this;

				// Reset inputs
				$('.section :input:visible', validForm).not('button').val('');
				// Multiple inputs
				initMultiInput(validForm);
				// Multipage
				initMultipageForm(validForm);
				// Update contactinfo
				updateConactinfos(validForm);
				// Error in value
				valueErrorMsg(validForm);
				// Live validation on blur
				validateCheck(validForm, 'live');
				// Validate on submit
				$(validForm).submit(function(){
					setTimeout(function(){ $('.error :input:enabled:first', validForm).focus(); }, 300);	
					return validateCheck(validForm);
				});
			}

			// validate form
			function validateForm(element){
				var valid = true;
				var el = {
					item: $(element),
					type: element.type,
					id: element.id,
					value: element.value,
					error_msg: '',
					error_box: $(element).parents('.entry')
				};
				switch(el.type){
					case 'checkbox':
						// checkbox validation
						var siblings = el.item.siblings('.group');
						if(!el.item.is(':checked')){
							el.error_msg = error_msg_checkbox;
							siblings.addClass('required');
							valid = (siblings.is(':checked')) ? true : false;
						}
						else {
							el.item.addClass('required');
							if(!siblings.is(':checked'))
								siblings.removeClass('required');
						}
						if(siblings.length){
							el.item = $('.group:first', el.error_box);
							el.id = el.error_box.id;
						}
						break;
					default:
						// normal validation
						if(el.value == '' || el.value == error_msg_default){
							el.error_msg = error_msg_default;
							valid = false;
						}
						// e-mail validation
						else if(el.item.hasClass('email')){
							var regExp = /^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
							if(!el.value.match(regExp)){
								el.error_msg = error_msg_email;
								valid = false;
							}
						}
						// number validation
						else if(el.item.hasClass('number')){
							if(el.value != Math.round(el.value)){
								el.error_msg = error_msg_number;
								valid = false;
							}
						}
				}
				// error message
				if(valid){
					$('.error_msg', el.error_box).remove();
					el.error_box.removeClass('error');
				}
				else {
					// custom error message
					if(custom_required_text[el.id])
						el.error_msg = custom_required_text[el.id];
					// insert error message
					if(!el.error_box.hasClass('error')){
						var error_msg = $('<p>').attr({ 'class': 'error_msg' }).append(
							$('<span>').attr({ 'class': 'text' }).text(el.error_msg),
							$('<span>').attr({ 'class': 'arrow' })
						);
						switch(el.type){
							case 'checkbox':
									error_msg.insertBefore(el.item);
								break;
							default:
								if(el.item.siblings('.datepicker').length)
									error_msg.insertAfter(el.item.siblings('.datepicker'));
								else if(formSettings.error_value){
									el.item.data('value', el.item.val());
									el.item.addClass('error_value');
									el.item.val(el.error_msg);
								}
								else
									error_msg.insertAfter(el.item);
						}
					}
					else
						$('.error_msg .text', el.error_box).text(el.error_msg);
					el.error_box.addClass('error');
				}
			};

			// Error in value
			function valueErrorMsg(form){
				if(formSettings.error_value){
					$('.required', form).focus(function(){
						if($(this).hasClass('error_value')){
							$(this).val($(this).data('value')).data('value', '').removeClass('error_value');
							$(this).parents('.error').removeClass('error');
						}
					});
				}
			}

			// live, multipage or normal validation check
			function validateCheck(form, check){
				switch(check){
					case 'live':
						$('.required', form).blur(function(){
							toValidate.push(this);
							setTimeout(function(){
								if(toValidate.length > 0){
									validateForm(toValidate[0]);
									toValidate.shift();
								}
							}, 300);
						});
						break;
					default:
						var required = (check == 'multipage') ? $('.section:visible .required', form) : $('.required', form);
						required.each(function(){ validateForm(this); });
				}
				return ($('.error', form).length || $('.error_value:visible', form).length) ? false : true;
			}
	
			// create multipage and progress bar
			function initMultipageForm(form){
				if(formSettings.multipage == true){
					// initalize summary page
					initSummary(form);
					// show only first section
					$(' .section', form).show().not(':first').hide();
					// generate the progress bar and steps
					$(form).prepend(
						specialbox = $('<div>').attr({ 'class': 'specialbox' }).append(
							$('<div>').attr({ 'class': 'specialbox_lb' }),
							$('<div>').attr({ 'class': 'specialbox_rb' }),
							$('<div>').attr({ 'class': 'specialbox_lt' }),
							$('<div>').attr({ 'class': 'specialbox_rt' }),
							$('<ol>').attr({ 'class': 'progress_bar' })
						)
					);
					progress_bar = $('.specialbox .progress_bar');
					$(' .section', form).each(function(){
						$(progress_bar).append(
							$('<li>').append($('.section_title', this).text())
						);
					})
					if(formSettings.progress_steps)
						$(progress_bar).after(
							progress_steps = $('<p>').attr({ 'class': 'progress_steps' })
						);
					// generate the buttons
					generateButtons(form);
					updateWizzard(form);
				}
			}
	
			// generate the next and last buttons
			function generateButtons(form){
				// the last button	
				$('<button type=button>').attr({ 'accesskey': 'b', 'name': 'back' }).text(back).click(function(){
					$('.section:visible', form).hide().prev().show();
					$(':input:enabled:first', form).focus();
					updateWizzard(form);
					// Hide required text on summary page
					($('.summary_section', form).is(':visible')) ? $('.required_text', form).hide() : $('.required_text', form).show();
					return false;
				}).insertBefore("button[name=send]", form).hide();
				// the next button
				$('<button type=button>').attr({ 'accesskey': 'n', 'name': 'next' }).text(next).click(function(){
					validateCheck(form, 'multipage');
					if(!$('.error:visible', form).length && !$('.error_value:visible', form).length){
						$('.section:visible', form).hide().next().show();
						$('.section:visible :input:enabled:first', form).focus();
						updateWizzard(form);
						// Hide required text on summary page
						($('.summary_section', form).is(':visible')) ? $('.required_text', form).hide() : $('.required_text', form).show();
					}
					else{
						if(!formSettings.error_value)
							$('.error :input:enabled:first', form).focus();
					}
					return false;
				}).insertBefore('button[name=send]', form).hide();
			}
		
			// should be run in each formfield change handles progress bar navigation and buttons
			function updateWizzard(form){
				// update button next
				var button_back = $('button[name=back]', form);
				($('.section:first:visible', form).is(':visible')) ? button_back.hide() : button_back.show();
				// update button last
				var button_next = $('button[name=next]', form);
				($('.section:last', form).is(':visible')) ? button_next.hide() : button_next.show();
				// update button submit
				var button_submit = $('button[name=send]', form);
				(!$('.section:last', form).is(':visible')) ? button_submit.attr({ 'disabled': 'true' }).hide() : button_submit.attr({ 'disabled': '' }).show();
				// update progress bar
				$('li.active', progress_bar).removeClass('active');
				$('li:contains("'+$('.section:visible .section_title', form).text()+'")', progress_bar).addClass('active done');
				$('li', progress_bar).each(function(index){
					var title = $(this).text();
					if(!$(this).children('a').length && $(this).hasClass('done')){
						$(this).wrapInner(
							$('<a>').attr({ 'rel': index, 'href': '#', 'title': title })
						);
					}
				});
				$('a', progress_bar).unbind('click').bind('click', function(){
					$('.section:visible', form).hide();
					$('.section:eq('+this.rel+')', form).show();
					$(':input:visible:enabled:first', form).focus();
					updateWizzard(form); 
					return false;
				});
				// Update progress steps
				if(formSettings.progress_steps)
					$(progress_steps).html(progress_step.replace('{x}', $('li.active', progress_bar).prevAll().length+1).replace('{y}', $('li', progress_bar).length));
				// Generate summary
				generateSummary(form);
			}
		
			// Initalize summary section
			function initSummary(form){
				if(formSettings.summarypage){
					$('.section:last', form).after(
						summary_section = $('<div>').attr({ 'class': 'section summary_section' }).append(
							$('<h2>').attr({ 'class': 'section_title', title: 'summary_title' }).html(summary_title)			
						)
					);
				}
			}
	
			// Generate summary table
			function generateSummary(form){
				if(formSettings.summarypage && $('.section:last', form).is(':visible')){
					$('.summary', form).remove();
					$('.section', form).not(':last').each(function(){
						var section_title = $(this).children('.section_title').text();
						$('<div>').attr({ 'class': 'zms_table' }).append(
							$('<table>').attr({ 'class': 'summary' }).append(
								$('<caption>').html(section_title),
								tbody = $('<tbody>')
							)
						).appendTo(summary_section);
						$('label', $(this)).each(function(){
							var me = $(this).parents('.multi_entry');
							if(me.length){
								if($(this).hasClass('hideme')){
									$(tbody).append(
										$('<tr>').append(
											$('<td>').attr({ 'colspan': 2 }).append(
												subtable = $('<div>').attr({ 'class': 'zms_table' }).append(
													$('<table>').attr({ 'class': 'multi_summary' }).append(
														$('<thead>').append($('<tr>')), $('<tbody>')
													)
												)
											)
										)
									);
									$('.entry:first label', me).each(function(){
										$('thead tr', subtable).append($('<th>').text($(this).text().replace(' *', '')));
									});
									$('.entry', me).each(function(){
										var row = $('<tr>');
										$(':input', this).each(function(){
											row.append($('<td>').text(getInputValue($(this))));
										});
										$('tbody', subtable).append(row);
									});
								}
							}
							else {
								$(tbody).append(
									$('<tr>').append(
										$('<th>').text($(this).text().replace(' *', '')),
										$('<td>').text(getInputValue($('#'+$(this).attr('for'))))
									)
								);
							}
						});
					});
				}
			}
			function getInputValue(el){
				if(el.is('select'))
					return $(':selected', el).text();
				else if(el.is('input[type=checkbox]') && el.is(':checked'))
					return yes;
				else
					return el.val();
			}
			
			//Multiple Inputs init
			function initMultiInput(form){
				$('.multi_entry', form).each(function(i){
					var me = $(this);
					var meid = $('legend', this).attr('id')+'_multi';
					$(this).append(
						$('<div>').html(
							$('<a>').attr('href', '#').text(add_entry).click(function(){
								count = '_'+$('.entry', me).length;
								clonekrieger = $('.entry:first', me).clone();
								$('label', clonekrieger).each(function(){
									$(this).attr('for', $(this).attr('for')+count);
								});
								$(':input', clonekrieger).each(function(){ $(this).attr({ 'id': $(this).attr('id')+count, 'name': $(this).attr('name')+count }).val('') });
								clonekrieger.insertBefore($(this).parent());
								multiInputBinding(me);
								return false;
							})
						).addClass('add'),
						$('<input>').attr({ 'type': 'hidden', 'name': meid, 'id': meid }),
						$('<label>').attr('for', meid).html($('legend', this).html()).addClass('hideme')
					);
					multiInputBinding(me);
				});
			};
	
			//Update on Unfocus
			function multiInputBinding(me){
				$(':input', me).unbind().blur(function(){
					var v = ''
					$('.entry :input', me).each(function(){
						v += $('label[for='+$(this).attr('id')+']').text().replace(' *', '')+": ";
						v += getInputValue($(this))+"\r";
					})
					$('input[name='+$('legend', me).attr('id')+'_multi]', me).val(v); 
				});
			}

			// Update contactinfos on change email receiver
			function updateConactinfos(form){
				$('#secure_target', form).change(function() {
					var contactID = $(':selected', $(this)).attr('id');
					if(contactID.length){
						$('.locations_data .'+contactID+' span', form).each(function(){
							$('input[name=to_'+$(this).attr('title')+']').val($(this).text());
						});
					}
				});	
			}

		};
	})(jQuery);


/*-- datepicker -- */

    (function($){
        $.fn.datePicker = function(options){
            // Plugin options
            var now = new Date();
            var defaults = {
                hideInput: false, // Hide the coresponding input
                month: now.getMonth(), // Start month
                year: now.getFullYear(), // Start year
                format: "d.m.y", // Date format
                disableWeekend: true, // Disable Sa/So clicks
                speed: 200 // in km/h 
            };
            var options = $.extend(defaults, options);
            var dp_count = 0;
            // Init plugin to each
            return this.each(function(){
                // Pass vars
                var op = options;
                var el = $(this);
                var mp = ( $(this).parent().is('label')) ? $(this).parent() : $(this); //mp as in mountpoint
                dp_count++;
                // Generate main .datepicker
                if(op.hideInput == true) el.hide();
                $('<div id="dp'+dp_count+'" class="datepicker"><h2>init</h2><a class="dpprev" href="#" title="'+back+'">'+back+'</a><a class="dpnext" href="#" title="'+next+'">'+next+'</a><table><thead><tr></tr></thead><tbody></tbody></table></div>').insertAfter(mp);
                var datepicker = $("#dp"+dp_count);
                $.each(days_list, function(index, value){ $("thead tr", datepicker).append('<th>'+value+'</th>') });
                //Measure fill
                for(t=0;t<=6;t++){ $("table", datepicker).append("<tr><td class='dpday dpclickable active'>19</td><td class='dpday dpclickable'>20</td><td class='dpday dpclickable'>21</td><td class='dpday dpclickable'>22</td><td class='dpday dpclickable'>23</td><td class='dpday'>24</td><td class='dpday'>25</td></tr>"); }  
                //CSS settings
                datepicker.css( { "width":$("table", datepicker).width()+"px","height":datepicker.height()+"px","overflow":"hidden" });
                // Fill init selected month
                fillDateTable( datepicker, el, op.month, op.year, op );
                // Generate the buttons
                $('a', datepicker).click(function(event){
                    event.preventDefault();
                    mont = jQuery.inArray($("h2 .dpmonth", datepicker).html(), mont_list);
                    year = $("h2 .dpyear", datepicker).html();
                    direction = $(this).hasClass("dpprev");
                    if( direction ) mont--;
                    else mont++;
                    if(mont>11){
                        mont = 0;
                        year++;
                    }
                    if(mont<0){
                        mont = 11;
                        year--;  
                    }
                    // Refill in selected direction
                    $("table", datepicker).stop(true, true).animate({marginLeft: (direction) ? '100%' : '-100%'}, op.speed, function(){
                        fillDateTable( datepicker, el, mont, year, op );
                        $("table", datepicker).css("marginLeft", (direction) ? '-100%' : '100%').animate({marginLeft:0}, op.speed);
                    });
                });
            });
            // Feed the .datepicker with data
            function fillDateTable(datepicker, el, mont, year, op){
                $("h2", datepicker).html('<span class="dpmonth">'+mont_list[mont] +'</span> <span class="dpyear">'+ year+'</span>');
                $("tbody tr", datepicker).remove();
                $("tbody", datepicker).append( generateMonthTable(mont, year));
                ncd = (op.disableWeekend == false) ? ":empty" : ":empty, .dpweekend";
                $('tbody td', datepicker).not(ncd).click(function(){
                    var format = op.format;
                    format = format.replace('m', ((jQuery.inArray($("h2 .dpmonth", datepicker).html(), mont_list))+1));
                    format = format.replace('d', $(this).html());
                    format = format.replace('y', $("h2 .dpyear", datepicker).html());
                    el.val(format);
                    $('tbody td.active', datepicker).removeClass("active");
                    $(this).addClass('active');
                    // remove error classes
                    el.parent().removeClass('error');
                    el.siblings('.error_msg').remove();
                });
            }
            // Generate the tbody
            function generateMonthTable(mont, year){
                var date = new Date(year, mont)
                var days = date.getDate();
                var firs = (date.getDay());
                if(firs == 0) firs = 7; // begin with Sundays
                var last = (new Date((new Date(year, mont+1,1))-1)).getDate();
                var now = new Date();
                var html = "<tr>";
                var d = 1;
                for(c=1;c<= Math.ceil(((last+(firs-1))/7))*7 ;c++){
                    var tdclass = ''; 
                    if(c>=firs && d<=last) tdclass += "dpday";
                    if(((c % 7 == 0) || ((c+1) % 7 == 0)) && d<=last) tdclass += " dpweekend";
                    if(!((c % 7 == 0) || ((c+1) % 7 == 0)) && c>=firs && d<=last ) tdclass += " dpclickable";
                    if(mont==now.getMonth() && year==now.getFullYear() && d==now.getDate()) tdclass += " dptoday";
                    html += "<td class='"+tdclass+"'>";
                    if(c>=firs&&d<=last) html += d++;
                    html += "</td>";
                    if (c % 7 == 0 && d<=last) html += "</tr><tr>";
                }
            return html + "</tr>";
            }
        };
    })(jQuery);


/*-- display elements --*/

	(function($){
		$.fn.showElement = function(options){
			var SE_Settings = {
				handler: 'toggle',
				destination: '',
				animate: false
			};
			var SE_Settings = $.extend(SE_Settings, options);
			// hide href anchor destination
			if($(this).length){				
				if($(this).is('a')){
					var destination = ($(SE_Settings.destination).length) ? $(SE_Settings.destination) : $('#'+$(this).attr('href').split('#').pop());
				}
				else{
					$(this).wrapInner('<a href="#" />');
					var destination = $(SE_Settings.destination);
				}
				destination.hide();
				// show destination
				if(SE_Settings.handler == 'toggle'){
					// toogle destination
					$(this).toggle(
						function(){ (SE_Settings.animate) ? destination.animate(SE_Settings.animate, { duration: 'slow' }) : destination.show(); },
						function(){ (SE_Settings.animate) ? destination.animate(SE_Settings.animate, { duration: 'slow' }) : destination.hide(); }
					);
				}
				else if(SE_Settings.handler == 'mouseover'){
					// show destination on mouseover
					$(this).bind({
						click: function(){ return false; },
						mouseover: function(){ (SE_Settings.animate) ? destination.animate(SE_Settings.animate, { duration: 'slow' }) : destination.show(); },
						mouseout: function(){ (SE_Settings.animate) ? destination.animate(SE_Settings.animate, { duration: 'slow' }) : destination.hide(); }
					});
				}
			}
		};
	})(jQuery);

/*-- Default value -- */

	(function($){
		$.fn.defaultValue = function(){
			$(this).focus(function(){
				if(!$(this).data('defaultValue')) $(this).data('defaultValue', $(this).attr('value'));
				if($(this).data('defaultValue') == $(this).attr('value')) $(this).attr('value', '');
			}).blur(function(){
				if(!$(this).attr('value').length) $(this).attr('value', $(this).data('defaultValue'));
			});
		};
	})(jQuery);


/*-- Word highlighting --*/

	(function($){
		$.fn.highlight = function(text, options){
			var defaults = {
				color: 'red',
				background: 'yellow'
			};
			var options = $.extend(defaults, options);
	
			function innerHighlight(node, text){
				var skip = 0;
				if (node.nodeType == 3){
					var pos = node.data.toUpperCase().indexOf(text);
					if (pos >= 0){
						var spannode = document.createElement('span');
						spannode.className = 'highlight';
						spannode.style.color = options.color;
						spannode.style.background = options.background;
						var middlebit = node.splitText(pos);
						var endbit = middlebit.splitText(text.length);
						var middleclone = middlebit.cloneNode(true);
						spannode.appendChild(middleclone);
						middlebit.parentNode.replaceChild(spannode, middlebit);
						skip = 1;
					}
				}
				else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)){
					for (var i = 0; i < node.childNodes.length; ++i){
						i += innerHighlight(node.childNodes[i], text);
					}
				}
			return skip;
			}
	
			return this.each(function(){
				innerHighlight(this, text.toUpperCase());
			});
		};
	})(jQuery);


/*-- Searchword highlightning --*/

	(function($){
		$.fn.highlightSearchwords = function(options){
			var url = document.location.href;
			var ref = document.referrer;
			if(ref.indexOf('%') > -1){
				ref = unescape(ref);
			}
			if(ref.indexOf('words=') > -1 && url.indexOf('words=') == -1){
				var words = ref.split('words=');
				words = words[1].split('&');
				words = words[0].split('+');
				for(w=0; w<words.length; w++){
					$(this).highlight(words[w], options);
				}
			}
		};
	})(jQuery);


/*--- Calibri-FontSize-Anpassung ---*/

	function checkCalibri () {
		var font_family_before = $('body').css("fontFamily");
		var width_before = $('h1#sitetitle span').width();
		$('h1#sitetitle').css({fontFamily: "calibri, " + font_family_before});
		var width_after = $('h1#sitetitle span').width();
		$('h1#sitetitle').css({fontFamily: "inherit"});

		if (width_before == width_after) {
			// calibri not installed
		} else {
			// calibri installed - increase font-size and change font-family
			$('body').css({fontSize: '0.8125em', fontFamily: 'calibri, ' + font_family_before});
		}
	}


/*--- News ---*/

	function drawNewssite() {
		var window_location = window.location.toString();
		if (window_location.split('#')[1] == 'news_page') {
			$('#more_news').addClass('more_news_bottom');
			$('#more_news .active').css({display: 'none'});
			$('.news_preview .entry img').css({display: 'none'});
			$('.news_overview_top').css({display: 'none'});
		} else {
			$('#more_news h2 span').css({display: 'none'});
			$('#news_page').css({display:'none'});
			$('.news_overview_top').css({display:'none'});
			$('#more_news .active').css({display: 'block'});

			$('#more_news .active a').click(function(){
				$('#more_news').addClass('more_news_bottom');
				$('#news_page').css({display:'block'});
				$('#more_news .active').css({display: 'none'});
				$('.news_preview .entry img').css({display: 'none'});
				$('.news_overview_top').css({display: 'none'});
			});
		}
	}



/*-- DOM -- */

	$(function(){

		// Forms
		$('form.appointmentmaker, form.contact, form.application').forms({ summarypage: true, error_value: true });

 		// Datepicker
		$('input.date').datePicker({ hideInput: true, format: "d/m/y" });

 		// Show elements
		$('.show_disclaimer').showElement();

 		// Search
		$('#search input[type=text]').defaultValue();
		$('#content').highlightSearchwords({ color: 'pink' });

		// Iframe popup
		$('.popup').IframePopup();

		// Calibri-FontSize-Anpassung
		checkCalibri ();

		// Newsseite
		if ($('.news_overview').length > 0) {drawNewssite();}


		// activate Navpoint

		if ($('#nav > li.activenode').length) {
			var active_li = $('#nav > li.activenode');
		} else {
			var active_li = $('#nav > li.active');
		}

		active_li.append(
			$('<span>').attr({ 'class': 'act_nav_bottom' }),
			$('<span>').attr({ 'class': 'act_nav_lb' }),
			$('<span>').attr({ 'class': 'act_nav_rb' }),
			$('<span>').attr({ 'class': 'act_nav_arrow' })
		);

		active_li.hover(function() {
			if ($('ul', active_li).length > 0) {
				$('.act_nav_bottom').css({display:'none'}),
				$('.act_nav_lb').css({display:'none'}),
				$('.act_nav_rb').css({display:'none'}),
				$('.act_nav_arrow').css({display:'none'})
			}
		});

		active_li.mouseleave(function() {
			$('.act_nav_bottom').css({display:'block'}),
			$('.act_nav_lb').css({display:'block'}),
			$('.act_nav_rb').css({display:'block'}),
			$('.act_nav_arrow').css({display:'block'})
		});

	});

