function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}



(function($) {

    $.fn.carousel = function(userOptions) {
		var parent = $(this);

		parent.animate({scrollLeft: 0},10);

		var defaults = {'autoSlide':false};
		var options = $.extend(defaults,userOptions);

		var speed = 500; //ms

		var autoSlide = true;
		var step=578;
		var cnt = $('#carouselCnt').val();
        cnt -= 1;
		var pos = 0;
		var autoConc = 0;
		var slides = parent.children('div.sliderPost');
		var left = cnt*step;
		var length = slides.length;
		var myurl = document.URL;
		for(var i = 0; i<slides.length; i++) {
			$(slides[i]).css('left',left).show();
			left -= step;
		}
		jQuery('div#sliderLights').find('span:eq(0)').addClass('current');

		var bLeft = $('#sliderToLeft');
		var bRight = $('#sliderToRight');


		//hack for sweden
		var mysearch = myurl.search(/#swedenMap/);
		if(mysearch > -1) {
			if(pos==0) {
				pos++;
				parent.animate({scrollLeft: pos*step},1);
				jQuery('div#sliderLights').find('span').removeClass('current');
				jQuery('div#sliderLights').find('span:eq('+pos+')').addClass('current');
			}
		}
		$("a#swedenLink").click(function() {
			if($("body").attr('id') == "wir") {
				if(pos==0) {
					pos++;
					parent.animate({scrollLeft: pos*step},speed,'swing');
					jQuery('div#sliderLights').find('span').removeClass('current');
					jQuery('div#sliderLights').find('span:eq('+pos+')').addClass('current');
				}
			}
		});

		if(cnt == 0) {
			bLeft.hide();
			bRight.hide();
		}
		bLeft.click(function() {
			if(pos == 0) {
				pos = cnt;
				parent.animate({scrollLeft: cnt*step},speed, 'swing');
			} else {
				pos--;
				parent.animate({scrollLeft: pos*step},speed, 'swing');
			}
			jQuery('div#sliderLights').find('span').removeClass('current');
			jQuery('div#sliderLights').find('span:eq('+pos+')').addClass('current');
			//reset timer
			resetAutoSlide();
		});
		
		bRight.click(function() {
			if(pos == cnt) {
				pos = 0;
				parent.animate({scrollLeft: 0},speed,'swing');
			} else {
				pos++;
				parent.animate({scrollLeft: pos*step},speed,'swing');
			}
			jQuery('div#sliderLights').find('span').removeClass('current');
			jQuery('div#sliderLights').find('span:eq('+pos+')').addClass('current');
			//reset timer
			resetAutoSlide();
		});

	
		jQuery('div#sliderLights').find('span').each(function() {
			jQuery(this).click(function() {
				var index = $(this).parent().children().index(this);
				jQuery('div#sliderLights').find('span:eq('+pos+')').removeClass('current');
				pos = index;
				parent.animate({scrollLeft: pos*step},speed,'swing');
				jQuery('div#sliderLights').find('span:eq('+pos+')').addClass('current');
				//reset timer
				resetAutoSlide();
			});
		});

		if(options.autoSlide) runAutonom();

		function runAutonom() {
			window.setTimeout(function() {
				if(autoSlide) {
					if(autoConc > 0) {
						autoConc --;
						return;
					}
					//animation
					if(pos == cnt) {
						pos = 0;
						parent.animate({scrollLeft: 0},speed,'swing');
					} else {
						pos++;
						parent.animate({scrollLeft: pos*step},speed,'swing');
					}
					jQuery('div#sliderLights').find('span').removeClass('current');
					jQuery('div#sliderLights').find('span:eq('+pos+')').addClass('current');

					//call self
					runAutonom();
				} else {
					autoConc--;
					autoSlide = true;
				}
			}, 10000);
		}

		function resetAutoSlide() {
			if(!options.autoSlide) return;
			autoSlide = false;
			autoConc++;
			runAutonom();
		}
    };

})(jQuery);



(function($) {
	
	$.fn.carouselRound = function() {
		var parent = $(this);

		parent.animate({scrollLeft: 0},10);
		var speed = 500; //ms
		var slides = parent.children('.c25l');
		var width = slides.eq(0).width();
		var cnt = slides.length;
		var globalStep = 4;
		var first = cnt-1;
		var animationLock = false;
		var currentLeft = first;
		var currentRight = currentLeft - globalStep + 1;
		var last = 0;
		for(var i = 0; i<cnt; i++) {
			$(slides[i]).css('left',(cnt-i-1)*width);  //change cnt-i to i and the order will change
		}
		parent.find('*').show();

		var bLeft = $('div#turnToLeft');
		var bRight = $('div#turnToRight');

		//scroll "step" elements to right
		bLeft.click(function() {
			scrollLeft(globalStep);
		});
		bRight.click(function() {
			scrollRight(globalStep);
		});



		//now check if a name has been clicked
		var namelist = parent.next();
		namelist.find('.mitarbeiterName').click(function() {
			var rel = parseInt($(this).attr('rel'));
			setTimeout(function() {
				if(!animationLock) {
					selectShortestRoute(rel);
				}
			}, 100);
		});

		function selectShortestRoute(aim) {
			var newLeft = plus(aim,0);
			var dist = minus(currentLeft,newLeft);
			if(dist != 0) {
				if(dist > parseInt(cnt / 2)) {
					scrollLeft(cnt-dist);
				} else {
					scrollRight(dist);
				}
			}
		}


		function minus (a,b) {
			var c = a-b;
			if(c < 0) {
				return c+cnt;
			} else return c;
		}

		function plus(a,b) {
			var c = a+b;
			if(c >=cnt) {
				return c - cnt;
			} else return c;
		}

		function scrollLeft(step) {
			animationLock = true;	
			parent.find('*').stop(false,true);

			//check how many elemnts are before the currentLeft
			var before = minus(first,currentLeft);
			var scrollWidth = 0;
			//push front end end element step to left
			currentLeft = plus(currentLeft,step);
			currentRight = plus(currentRight,step);
			if(before < step) {
				for(var i=0; i < step - before; i++) {
					//put last element at front
					slides.eq(last).css('left', parseInt(slides.eq(first).css('left')) - width);
					first = last;
					last = plus(last,1);	
				}
            	for(var i = 0; i < cnt; i++) {
                	slides.eq(i).css('left', parseInt(slides.eq(i).css('left')) + step*width);
            	}
				scrollWidth = step*width;
			}
			
            parent.stop(false,true).animate({scrollLeft: parent.scrollLeft() + scrollWidth},0, function() {
				var inner = true;
				parent.mouseleave(function() { inner = false; });
                parent.stop(false,true).animate({scrollLeft: parent.scrollLeft() - step*width},speed, function() {
					animationLock = false;
                });
            });

		}

		function scrollRight(step) {
			animationLock = true;
			parent.find('*').stop(false,true);

			//check how many elemnts are before the currentLeft
			var after = minus(currentRight,last);
			var scrollWidth = 0;
			//push front end end element step to left
			currentLeft = minus(currentLeft,step);
			currentRight = minus(currentRight,step);
			if(after < step) {
				for(var i=0; i < step - after; i++) {
					//put first element at end
					slides.eq(first).css('left', parseInt(slides.eq(last).css('left')) + width);
					last = first;
					first = minus(first,1);
				}
            	for(var i = 0; i < cnt; i++) {
                	slides.eq(i).css('left', parseInt(slides.eq(i).css('left')) - step*width);
            	}
				scrollWidth = step*width;
			}
            parent.stop(false,true).animate({scrollLeft: parent.scrollLeft() - scrollWidth},0, function() {
				var inner = true;
				parent.mouseleave(function() { inner = false; });
                parent.stop(false,true).animate({scrollLeft: parent.scrollLeft() + step*width},speed, function() {
					animationLock = false;
                });
            });

		}

	};
})(jQuery);



(function($) {
	
	$.fn.myModal = function() {

		var link = $(this);
		var current = 0;
		var modalDefWidth = 0; //jeweils 30px an jeder Seite
		var modalDefHeight = 0; //30 Pixel oben und unten
		var maskHeight = $(document).height();
		var maskWidth = $(window).width();
		var overlay = $('<div id="modalOverlay"></div>');
		var leftArrow = $('<div id="modalToLeft"></div>');
		var rightArrow = $('<div id="modalToRight"></div>');
		var mouseIn = false;
		var modalWindowDefault = $('<div id="modalWindow"><div class="modalCloseButton"></div><div id="modalImg"></div><div id="modalText"></div></div>');
		var modalWindow = modalWindowDefault;
		var images = new Array();
		//var imageLock = true;
	
		link.click(function() {
			
			//set top-position of modal window
			modalWindow.css('top',$(window).scrollTop()+80)
            //add grey overlay
            $("body").append(overlay.click(function() {
                  modalHide();
            }));
            $(document).keydown(handleEscape);


			//create image list
			var buffer = $('a.myModal[rel="'+link.attr('rel')+'"]');
			jQuery.each(buffer,function(i) {
				images[i] = {'href' : $(this).attr('href'), 'title' : $(this).children('img').attr('title'), 'description' : $(this).attr('title')};
				if($(this).attr('href') == link.attr('href')) current = i;
			});

			//add clicked image
			$('body').append(modalWindow);
			modalWindow.children('#modalImg').prepend(leftArrow).prepend(rightArrow);
			modalWindow.fadeIn();
			//show grey overlay
			overlay.css({'width':maskWidth,'height':maskHeight,'opacity':0.6}).fadeIn();


			changeImage(current);			

			$('.modalCloseButton').click(function() { modalHide(); });

			listenArrows();

			return false;
		});



		function modalHide() {
        	$(document).unbind("keydown", handleEscape);
			leftArrow.unbind('click');
			rightArrow.unbind('click');
        	overlay.fadeOut();
        	modalWindow.fadeOut(function() {
				modalWindow.css({width:modalDefWidth}).find('img').remove();
				modalWindow.children('div#modalText').hide().html('');
				
			});
        }

        //Our function that listens for escape key.
        function handleEscape(e) {
        	if (e.keyCode == 27) {
            	modalHide();
            }
        }

		function changeImage(i) {
			var img = new Image();
			$(img).load(function() {
				modalWindow.animate({
					width:modalDefWidth + img.width,
					left: (maskWidth - img.width - modalDefWidth) / 2
				}, 1,function() {
					leftArrow.css('top',(img.height - 20) /2);
					rightArrow.css('top',(img.height - 20) /2);
					modalWindow.find('img').remove();
					modalWindow.find('#modalImg').append($(img).show());//fadeIn(100,function() {
					modalWindow.find('#modalText').html('<h4>'+images[i].title+'</h4><p>'+images[i].description+'</p>').show();
					if(current == 0) {
						leftArrow.hide();
					} else if(mouseIn) leftArrow.show();
					if(current == images.length - 1) {
						rightArrow.hide();
					} else if(mouseIn) rightArrow.show();
				});

			}).attr({src: images[i].href});
		}

		function listenArrows() {
			modalWindow.children('#modalImg').mouseenter(function() {
				mouseIn = true;
				if(current > 0) leftArrow.stop(false,true).fadeIn();
				if(current < images.length - 1) rightArrow.stop(false,true).fadeIn();
			}).mouseleave(function() {
				mouseIn = false;
				leftArrow.stop(false,true).fadeOut();
				rightArrow.stop(false,true).fadeOut();
			});

			leftArrow.click(function() {
				if(current <= 0) return;
			
				current--;
				changeImage(current);
			});

			rightArrow.click(function() {
				if(current >= images.length - 1) return;
			
				current++;
				changeImage(current);
			});
		}

    };

})(jQuery);



/* ---------- main ---------- */

jQuery(document).ready(function(){


jQuery('#sliderAreaAuto').each(function(){ jQuery(this).carousel({'autoSlide':true}); });
jQuery('#sliderArea').each(function(){ jQuery(this).carousel(); });
jQuery('.carousel').carouselRound();

jQuery('.myModal').each(function() { jQuery(this).myModal(); });


var themePath = jQuery('#themePath').val();


/* ----- Contact Form Default Values ----- */
jQuery('#kni8_VFG, #LKPOQBXDAWD, #qqmou87BH3d, #ONBxs23bcd, #xyysduzf3z7, #BGZS-GSZ23').each(function() {
	var field = jQuery(this);
	var defVal = jQuery('label[for="'+field.attr('id')+'"]').text();
	
	if(field.val().length == 0 || field.val() == defVal) {
		field.addClass('defaultValue').val(defVal);
	}

	//on focus, if field as class "defaultValue", remove Class and content
	field.focus(function() {
		if(field.hasClass("defaultValue")) {
			field.removeClass("defaultValue").val('');
		}
	});

	//on blur, add class and add default content
	field.blur(function() {
		if(field.val().length == 0 || field.val() == defVal) {
			field.addClass('defaultValue').val(defVal);
		}
	});

});



/* ----- Contact Form Submit ---- */


jQuery('#contactForm').submit(function() {
	var valid = 1;
	//validate email
	var email = jQuery('#qqmou87BH3d');
	if(!isValidEmailAddress(email.val())) {
		valid = 0;
		email.addClass("errorField");
	} else email.removeClass("errorField");

	//validate message
	var mess = jQuery('#kni8_VFG');
	var messDef = jQuery('label[for="kni8_VFG"]').text();
	if(mess.val() == messDef || mess.val() == '') {
		valid=0;
		mess.addClass("errorField");
	} else mess.removeClass("errorField");

	//validate name
	var mess = jQuery('#LKPOQBXDAWD');
	var messDef = jQuery('label[for="LKPOQBXDAWD"]').text();
	if(mess.val() == messDef || mess.val() == '') {
		valid=0;
		mess.addClass("errorField");
	} else mess.removeClass("errorField");

	//validate tel1
	var mess = jQuery('#ONBxs23bcd');
	var messDef = jQuery('label[for="ONBxs23bcd"]').text();
	if(mess.val() == '') {
		valid=0;
		mess.addClass("errorField");
	} else mess.removeClass("errorField");

	//validate tel2
	var mess = jQuery('#xyysduzf3z7');
	var messDef = jQuery('label[for="xyysduzf3z7"]').text();
	if(mess.val() == '') {
		valid=0;
		mess.addClass("errorField");
	} else mess.removeClass("errorField");

	//validate tel3
	var mess = jQuery('#BGZS-GSZ23');
	var messDef = jQuery('label[for="BGZS-GSZ23"]').text();
	if(mess.val() == messDef || mess.val() == '') {
		valid=0;
		mess.addClass("errorField");
	} else mess.removeClass("errorField");



	if(valid == 1) {

		//send
		//var action = 'http://handlewithcare.de/wp-content/themes/hwc/sendContact.php';
		var action = '/wp-content/themes/hwc/sendContact.php';
		//jQuery.get(jQuery(this).attr('action'),{ 
		jQuery.post(action,{ 
			kni8_VFG: jQuery('#kni8_VFG').val(),
			LKPOQBXDAWD: jQuery('#LKPOQBXDAWD').val(),
			qqmou87BH3d: jQuery('#qqmou87BH3d').val(),
			ONBxs23bcd: jQuery('#ONBxs23bcd').val(),
			xyysduzf3z7: jQuery('#xyysduzf3z7').val(),
			'BGZS-GSZ23': jQuery('#BGZS-GSZ23').val(),
			fefg44fg: jQuery('#fefg44fg').val()
		});
	
		jQuery('#submitMessage').css('height',jQuery('#contactForm').css('height')).children().css('padding-top','80px');
		jQuery(this).fadeOut(function() {
			jQuery('#submitMessage').fadeIn();
			//Felder wieder leeren, damit nach einem Refresh der Inhalt nicht mehr drin steht
			jQuery(this).find('textarea,input').not('.submitButton').val('');
		});
	}
	return false;
});




/* ----- Footer-Links ----- */

var closer = jQuery('#closeFooterSlider');
var footerModal = jQuery('<div id="footerModal"></div>');
var footerPos = jQuery('#footer').position();
var footerTop = footerPos.top + parseInt(jQuery('#footer').css('margin-top'));
var currentOpenId = 0;
jQuery('#footer a').each(function() {
	var link = jQuery(this);
	link.click(function() {
		//Sollte schon ein Slider offen sein, zuerst schließen
		if(jQuery('.footerDataInner').text().length > 0) {
			jQuery('#footerSlider').slideUp(function() { jQuery('.footerData').html(''); });
			//footerModal.remove();
		}
		
		jQuery.get(themePath+'/textOnly.php', { id: link.attr('id') }, function(data) {
			if(link.attr('id') == currentOpenId)
				return;
			//footerModal.css({'height':footerTop});
			//jQuery('body').prepend(footerModal);
			jQuery('.footerData').html('<div class="footerDataInner">'+data+'</div>')
			currentOpenId = link.attr('id');
			jQuery('#footerSlider').slideDown(function() {
				// nach oben scrollen
				var scroll = jQuery(window).scrollTop();
				var pos = jQuery('#footerSlider').offset();
				pos.top -= 20;
				if(scroll > pos.top) jQuery('html, body').animate({scrollTop: pos.top},400);
				//handle Scrolling
				var outer = jQuery('#footerSlider').find('div.footerData');
				var inner = jQuery('#footerSlider').find('div.footerDataInner');
				//bugfix: scroll to top when loaded
				outer.animate({scrollTop: 0},1);
				if(inner.height() > outer.height()) {
					var diff = inner.height() - outer.height();
					var scrollStep = outer.height() - 20;
					var scrollUp = jQuery('<div class="footerSliderUp">&nbsp;&nbsp;</div>');
					var scrollDown = jQuery('<div class="footerSliderDown">&nbsp;&nbsp;</div>');
					outer.before(scrollUp).before(scrollDown);
					scrollUp.click(function() {
						if(outer.scrollTop() > 0) {
							var toScroll = outer.scrollTop() < scrollStep ? 0 : outer.scrollTop() - scrollStep;
							outer.animate({scrollTop: toScroll},400);
						}
					});
					scrollDown.click(function() {
						if(outer.scrollTop() < diff) {
							var toScroll = outer.scrollTop() + scrollStep > diff ? diff : outer.scrollTop() + scrollStep;
							outer.animate({scrollTop: toScroll},400);
						}
					});
				}

				//handle closeClick
				jQuery('#closeFooterSlider').click(function() {
					jQuery('#footerSlider').slideUp(function() { jQuery('.footerData').html(''); });
					currentOpenId = 0;
				//	jQuery('#footerModal').remove();
				});
			});

		});

		return false;
	});

});


/* ----- Office-Galerie ------ */

jQuery('#office').each(function() {
	var office = jQuery(this);
	var imgWidth = 105;
	var imgs = office.find('.ngg-gallery-thumbnail-box');
 	var width = parseInt((960-imgWidth) / (imgs.length-1)) - imgWidth;
	for (var i = 0; i < imgs.length-1 ; i++) {
		imgs.eq(i).css({'padding-right': width});
	}

});



//throw ajax-request on ever clicked mailto
var mailto = '/mailto/';

jQuery('a').each(function() {
	if(jQuery(this).attr('href').search('mailto') == -1) return;

	jQuery(this).click(function() {
		jQuery.get(themePath+'/countMailto.php');
	});

});

});

