function trim(str,charlist){
	var whitespace,l=0,i=0;
	str += '';
	if(!charlist){
		whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
	}else{
		charlist += '';
		whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');
	};
	l = str.length;
	for(i = 0; i < l; i++){
		if(whitespace.indexOf(str.charAt(i)) === -1){
			str = str.substring(i);
			break;
		};
	};
	l = str.length;
	for(i = l - 1; i >= 0; i--){
		if(whitespace.indexOf(str.charAt(i)) === -1){
			str = str.substring(0, i + 1);
			break;
		};
	};
	return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
};


// form_validation v. 2.1
//  ----------------------------
// | Euroweb GmbH     |
//  ----------------------------
//	Last changed:	09. 09. 2009


function validateForm(formular) {
	var error = 0;
	var currentLabel = '';
	var currentField = '';
	var klasse = '';
	var newClass = '';
	
	// Inspect all of the document's labels ...
	for (var i = 0; i < document.getElementsByTagName("label").length; i++) {
		currentLabel = document.getElementsByTagName("label")[i];
		if (currentLabel.htmlFor) {
			currentField = document.getElementById(currentLabel.htmlFor);
		};
		klasse = currentLabel.className;
		newClass = currentLabel.className.replace(/ error/, '');
		
		// Check if the current label belongs to the form we want to validate
		if (currentLabel.form == formular && currentField) {

			// ...  and if it is required at all, or has to be a number, or an e-mail address.
				
				// Rueckruf exists: Mark phone number field as required
				if (currentField.name == 'Rueckruf') {
					if (currentField.checked == true) {
						document.getElementById('label-telefon').className += ' required rueckruf';
					} else {
						var newTelClass = document.getElementById('label-telefon').className.replace(/ required rueckruf/, '');
						document.getElementById('label-telefon').className = newTelClass;
					};
				};
				

				// required field (but neither numeric nor an e-mail)
				if (klasse.match(/required/)) {
					if (currentField.tagName == 'SELECT') {
						if (currentField.childNodes[1].selected) {
							currentLabel.className = newClass;
							currentLabel.className += ' error';
							error = 1;
						} else {
							currentLabel.className = newClass;
						};
					} else if (currentField.type == 'checkbox') {
						if (currentField.checked == false) {
							currentLabel.className = newClass;
							currentLabel.className += ' error';
							error = 1;
						} else {
							currentLabel.className = newClass;
						};
					} else {
						if (currentField.value == '') {
							currentLabel.className = newClass;
							currentLabel.className += ' error';
							error = 1;
						} else {
							currentLabel.className = newClass;
						};
					};
					
				};
								
				// numeric field
				if (klasse.match(/number/)) {
					var numeric = isNumber(currentField);
					if (!numeric && !klasse.match(/required/) && currentField.value != '') {
						currentLabel.className = newClass;
						currentLabel.className += ' error';
						error = 1;
					} else {
						currentLabel.className = newClass;
					};
					if (!numeric && klasse.match(/required/)) {
						currentLabel.className = newClass;
						currentLabel.className += ' error';
						error = 1;
					} else {
						if (error == 0) {
							currentLabel.className = newClass;
						};
					};
				};
				
				// e-mail address
				if (klasse.match(/mail/)) {
					var valid = isMailValid(currentField);
					if (!valid && currentField.value != '') {
						currentLabel.className = newClass;
						currentLabel.className += ' error';
						error = 1;
					} else {
						currentLabel.className = newClass;
					};
					if (!valid && klasse.match(/required/)) {
						currentLabel.className = newClass;
						currentLabel.className += ' error';
						error = 1;
					} else {
						if (error == 0) {
							currentLabel.className = newClass;
						};
					};
				};


		};
		
	} ;// end for

	
	// Return TRUE and proceed sending the form if no errors occured.
	// Return FALSE in case of errors and display the error message,
	// then focus on the ID of the element containing the error message.
	
	// (The window.location.href call comes in handy if the page containing
	//	the form is as high as serveral screens,
	//  but can be safely removed without preventing the script to function properly).
	if (error === 0) {
		return true;
	} else {
		var errorbox = document.getElementById("fehlermeldung");
		errorbox.style.display = 'block';
		errorbox.innerHTML = '<strong>Beim Abschicken sind Fehler aufgetreten.</strong> Sie haben eventuell nicht alle Pflichtfelder ausgef&uuml;llt. Die falsch ausgef&uuml;llten Punkte sind <strong class="error">rot</strong> gekennzeichnet.<br /><a href="javascript:;" id="errorclose">Diese Meldung schlie&szlig;en</a>';
		window.location.href = "#fehlermeldung";
		document.getElementById("errorclose").onclick = function (event) { errorbox.style.display = 'none'; return false; }
		return false;
	};
		
};



// Additional functions for numeric and e-mail validation
function isNumber(field) {
	var returnvar = (isNaN(parseInt(field.value)) == true) ? false : true;
	return returnvar;
};

function isMailValid(field) {
	var returnvar = (field.value.match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/)) ? true : false;
	return returnvar;
};

// END OF FORM VALIDATION

jQuery.fn.noSpam = function() {
	at = '@';
	return this.each(function(){
		e = null;
		jQuery(this).find('span').replaceWith(at);
		e = jQuery(this).text();
		jQuery(this).attr('href', 'mailto:' + e);
	});
};

function accordion(){
	jQuery('.accContent').hide();
	jQuery('.accToggle').click(function(){
			jQuery(this).parent().children('.accContent').slideUp(600);
		if(jQuery(this).next('.accContent').css('display') == 'none' && jQuery(this).next('.accContent').text() != ''){
			jQuery(this).next('.accContent').slideDown(600);
		}
	});
};

jQuery.fn.topLink = function(settings) {
	settings = jQuery.extend({fadeSpeed: 200}, settings);
		var scroll_timer;
		var displayed = false;
		var $message = jQuery(this);
		var $window = jQuery(window);
		var top = jQuery(document.body).children(0).position().top;
		$window.scroll(function () {
			window.clearTimeout(scroll_timer);
			scroll_timer = window.setTimeout(function () {
				if($window.scrollTop() <= top)
				{
					displayed = false;
					$message.fadeOut(settings.fadeSpeed);
				}
					else if(displayed == false) 
				{
					displayed = true;
					$message.stop(true, true).fadeIn(settings.fadeSpeed).click(function () { $message.fadeOut(settings.fadeSpeed); });
				}
			}, 100);
		});
};


jQuery(function(){ 
    jQuery('a[href*=#]').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') 
        && location.hostname == this.hostname) {
            var $target = jQuery(this.hash);
            $target = $target.length && $target || jQuery('[name=' + this.hash.slice(1) +']');
            if ($target.length) {
                var targetOffset = $target.offset().top;
                jQuery('html,body').animate({scrollTop: targetOffset}, 1000);
                return false;
            };
        };
    });
	jQuery('a.escape').noSpam();
	jQuery('#gototop').topLink({fadeSpeed: 500});
	jQuery("a[rel='lightbox']").colorbox({maxHeight:"90%"});
	jQuery("a[class='lightbox']").colorbox({maxHeight:"90%"});
	jQuery("a[rel='lightbox[1]']").colorbox({maxHeight:"90%"});
	jQuery("a[rel='iframe']").colorbox({height:"90%",width:'960px', iframe:true});
	jQuery('#slideshow').nivoSlider({
		effect:'random', //Specify sets like: 'fold,fade,sliceDown'
		slices:25,
		animSpeed:600, //Slide transition speed
		pauseTime:4000,
		startSlide:0, //Set starting Slide (0 index)
		directionNav:false, //Next & Prev
		controlNav:false, //1,2,3...
		pauseOnHover:true, //Stop animation while hovering
		captionOpacity:0.8 //Universal caption opacity
	});
});
