jQuery(document).ready(function(){
	initCustomForm();
	jQuery('.popup-holder div.gallery ').gallSlide({
		duration:1
	});
	initLightbox();
	fadeGall();
	initValidation();
	addField();
	initDate(jQuery('input.date'));
})
function initDate(obj){
	var current_date = new Date();
	var day = current_date.getDate();
	var month = current_date.getMonth() + 1;
	var year = current_date.getYear();
	year = year + "";
	year = year.substr(year.length-2, 2);
	obj.val(day+'/'+month+'/'+year);
}
function addField(){
	var _count = 0;
	var _hold = jQuery('div.teilnehmer-area, div.kinder-area').find('div.row:last');
	var _btn  = jQuery('a.btn-otherperson');
	var _box = jQuery('div.otherperson');
	_btn.click(function(){
		if(_count < 6){
			_box.eq(_count).fadeIn();
			_count++;
		}
		return false;
	});
}


function initValidation(){
	var _errorClass = 'error';
	var _regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var _regEmails = /^([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})+([, ]+[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})*$/;
	var _regPhone = /^[0-9\-\ \()]+$/;
	var _regNum = /^[0-9]+$/;
	var _regDay = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/;
	var _regMon = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1}))$/;
	var _regYear = /^[19]{2}[0-9]{2}$/;
	
	jQuery('form.wpcf7-form').each(function(){
		var _form = jQuery(this);
		function checkFields() {
			var _flag = false;
			_form.find('.'+_errorClass).removeClass(_errorClass);

			// fields validation
			_form.find('input.required-email').each(function(){
				if(!_regEmail.test(jQuery(this).val())) addError(jQuery(this));
			});
			
			_form.find('input.not-required-email').each(function(){
				if(jQuery(this).val()){
					if(!_regEmail.test(jQuery(this).val())) addError(jQuery(this));
				}
			});
			
			_form.find('input.required-length').each(function(){
				if(!jQuery(this).val().length || jQuery(this).val().length > 12) addError(jQuery(this));
			});
			
			_form.find('input.required-confirm-password').each(function(){
				var _confPass = jQuery(this).val();
				var _truePass = jQuery(this).parents('div.pass-holder').find('input.pass').val();
				if(_confPass != _truePass) addError(jQuery(this));
			});
			
			
			_form.find('input.required-day').each(function(){
				if(!_regDay.test(jQuery(this).val())) addError(jQuery(this));
			});
			_form.find('input.required-mon').each(function(){
				if(!_regMon.test(jQuery(this).val())) addError(jQuery(this));
			});
			_form.find('input.required-year').each(function(){
				if(!_regYear.test(jQuery(this).val())) addError(jQuery(this));
			});
			_form.find('textarea.required-many-emails').each(function(){
				if(!_regEmails.test(jQuery(this).val())) addError(jQuery(this));
			});
			_form.find('input.required-phone').each(function(){
				if(!_regPhone.test(jQuery(this).val())) addError(jQuery(this));
			});
			_form.find('input.required-num').each(function(){
				if(!_regNum.test(jQuery(this).val())) addError(jQuery(this));
			});
			_form.find('input.required, textarea.required').each(function(){
				if(!jQuery(this).val().length || jQuery(this).val() == jQuery(this).attr('alt')) {
					addError(jQuery(this));
				}
			});
			_form.find('input.required-chek').each(function(){
				if (!jQuery(this).is(':checked')) {
					jQuery(this).parent('span').addClass('error-chk');
					_flag=true;
				}
			});
			_form.find('div.required-radio').each(function(){
				var _test = false;
				jQuery(this).find('input[type=radio]').each(function(){
					if (jQuery(this).is(':checked')) _test = true;
				});
				if (!_test) {
					_flag=true;
				}
			});

			// error class adding
			function addError(_obj) {
				_obj.addClass(_errorClass);
				_flag=true;
			}
			
			return _flag;
		}
		function errorMessage(){
			var mess = jQuery('<span class="errorMessage">Fehler beim Ausfullen des Formulars. Bitte uberprufen Sie die rot gefarbten Felder und klicken Sie nochmals auf Anmelden.</span>').css({
				width:400,
				position:'absolute',
				right:0,
				bottom:110,
				color:'red',
				fontSize:'20px',
				lineHeight:'22px'
			});
			_form.append(mess);
		}
		// catch form submit event
		_form.submit(function(){
			if(checkFields()) {
				errorMessage();
				return false;
			}
		});
		
	});
}

function initLightbox(){
	jQuery('div.userbar > ul, ul.fote').find('a').fancybox({
		'titleShow': false,
		'overlayColor' : '#000',
		'overlayOpacity' : 0.6,
		'autoScale' : true,
		'scrolling' : 'no'
	});
	jQuery('a.lightbox-opener').fancybox({
		'titleShow': false,
		'overlayColor' : '#000',
		'overlayOpacity' : 0.6,
		'autoScale' : true,
		'scrolling' : 'no'
	});
	var _closer = jQuery('div.popup-holder').find('a.close');
	_closer.click(jQuery.fancybox.close);
	_closer.click(function(){
		return false;
	});
}

function fadeGall(){
	var wait_time = 5000; // in ms
	var change_speed = 1200; // in ms
	var _hold = jQuery('div.gallery');
	if(_hold.length){
		var _t;
		var _f = true;
		var _list = _hold.find('ul.fader > li');
		var _prev = _hold.find('a.link-prev');
		var _next = _hold.find('a.link-next');
		var _btn = jQuery('<ul class="paging"></ul>');
		_list.each(function(_i){
			_btn.append('<li><a href="#">'+(_i+1)+'</a></li>');
		});
		_btn = _btn.find('a');
		var _a = _list.index(_list.filter('.active:eq(0)'));
		if(_a == -1) _a = 0;
		
		_list.removeClass('active').css('opacity', 0).eq(_a).addClass('active').css('opacity', 1);
		_btn.eq(_a).parent('li').addClass('active');
		_btn.click(function(){
			changeEl(_btn.index(this));
			return false;
		});
		
		_prev.click(function(){
			if(_a <= 0) changeEl(_list.length-1);
			else changeEl(_a-1);
			return false;
		});
		_next.click(function(){
			if(_a < _list.length - 1) changeEl(_a + 1);
			else changeEl(0);
			return false;
		});
		
		_hold.mouseenter(function(){
			_f = false;
			if(_t) clearTimeout(_t);
		}).mouseleave(function(){
			_f = true;
			if(_t) clearTimeout(_t);
			if(_f && wait_time){
				_t = setTimeout(function(){
					if(_a < _list.length - 1) changeEl(_a + 1);
					else changeEl(0);
				}, wait_time);
			}
		});
		if(_f && wait_time){
			_t = setTimeout(function(){
				if(_a < _list.length - 1) changeEl(_a + 1);
				else changeEl(0);
			}, wait_time);
		}
		function changeEl(_ind){
			if(_t) clearTimeout(_t);
			if(_ind != _a){
				_list.eq(_a).removeClass('active').animate({opacity: 0}, {queue:false, duration:change_speed});
				_list.eq(_ind).addClass('active').animate({opacity: 1}, {queue:false, duration:change_speed});
				_btn.eq(_a).parent('li').removeClass('active');
				_btn.eq(_ind).parent('li').addClass('active');
				_a = _ind;
			}
			if(_f && wait_time){
				_t = setTimeout(function(){
					if(_a < _list.length - 1) changeEl(_a + 1);
					else changeEl(0);
				}, wait_time);
			}
		}
	}
}


var _content_box = "content";
function initMain(){
	var _div = document.getElementsByTagName("div");
	for(var i=0; i<_div.length; i++){
		if (_div[i].className.indexOf(_content_box) !=-1) {
			var _box = _div[i].getElementsByTagName("div")[0];
			if(_box){
				_div[i].parentNode.parentNode.style.width = _box.offsetWidth + "px";
			}
		}
	}
}
if (window.addEventListener) window.addEventListener("load", initMain, false);
else if (window.attachEvent && !window.opera) window.attachEvent("onload", initMain);

function initCustomForm(){
	var input = jQuery('.row input[type=text], select');
	var add = jQuery('.anmelden-form a.btn-otherperson');
	var openkontakt = jQuery('a.open-kontakt');
	var openanmelden = jQuery('a.open-anmelden');
	var openanfahrt = jQuery('a.open-anfahrt');
	var openrundgang = jQuery('a.open-rundgang');
	var close = jQuery('a.close');
	var btnreg = jQuery('a.btn-registration');
	var btnmore = jQuery('a.more');
	var btngo = jQuery('a.btn-go');
	var btnwatchtour = jQuery('a.btn-watchtour');
	
	btnwatchtour.mousedown(function(){
		jQuery(this).addClass('active');
	});
	btnreg.mousedown(function(){
		jQuery(this).addClass('active');
	});
	btnreg.mouseup(function(){
		jQuery(this).addClass('active');
	});
	btnmore.click(function(){
		jQuery(this).addClass('active');
	});
	btngo.click(function(){
		jQuery(this).addClass('active');
	});
	input.focus(function(){
		jQuery(this).addClass('active');
		jQuery(this).blur(function(){
			jQuery(this).removeClass('active');
		});
	});
	openkontakt.click(function(){
		jQuery(this).parents().find('.kontact-lightbox').css('left' , '163px');
	});
	openanmelden.click(function(){
		jQuery(this).parents().find('.anmelden-lightbox').css('left' , '163px');
	});
	openanfahrt.click(function(){
		jQuery(this).parents().find('.anfahrt-lightbox').css('left' , '163px');
	});
	openrundgang.click(function(){
		jQuery(this).parents().find('.rundgang-lightbox').css('left' , '163px');
	});
	close.click(function(){
		jQuery(this).parents().find('.kontact-lightbox').css('left' , '-999px');
	});
	close.click(function(){
			jQuery(this).parents().find('.anmelden-lightbox').css('left' , '-999px');
	});
	close.click(function(){
			jQuery(this).parents().find('.anfahrt-lightbox').css('left' , '-999px');
	});
	close.click(function(){
			jQuery(this).parents().find('.rundgang-lightbox').css('left' , '-999px');
	});
}
function initPage()
{
	clearFormFields({
		clearInputs: true,
		clearTextareas: true,
		passwordFieldText: true,
		addClassFocus: "focus",
		filterClass: "default"
	});
}
function clearFormFields(o)
{
	if (o.clearInputs == null) o.clearInputs = true;
	if (o.clearTextareas == null) o.clearTextareas = true;
	if (o.passwordFieldText == null) o.passwordFieldText = false;
	if (o.addClassFocus == null) o.addClassFocus = false;
	if (!o.filter) o.filter = "default";
	if(o.clearInputs) {
		var inputs = document.getElementsByTagName("input");
		for (var i = 0; i < inputs.length; i++ ) {
			if((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass)) {
				inputs[i].valueHtml = inputs[i].value;
				inputs[i].onfocus = function ()	{
					if(this.valueHtml == this.value) this.value = "";
					if(this.fake) {
						inputsSwap(this, this.previousSibling);
						this.previousSibling.focus();
					}
					if(o.addClassFocus && !this.fake) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				inputs[i].onblur = function () {
					if(this.value == "") {
						this.value = this.valueHtml;
						if(o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);
					}
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
				if(o.passwordFieldText && inputs[i].type == "password") {
					var fakeInput = document.createElement("input");
					fakeInput.type = "text";
					fakeInput.value = inputs[i].value;
					fakeInput.className = inputs[i].className;
					fakeInput.fake = true;
					inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);
					inputsSwap(inputs[i], null);
				}
			}
		}
	}
	if(o.clearTextareas) {
		var textareas = document.getElementsByTagName("textarea");
		for(var i=0; i<textareas.length; i++) {
			if(textareas[i].className.indexOf(o.filterClass)) {
				textareas[i].valueHtml = textareas[i].value;
				textareas[i].onfocus = function() {
					if(this.value == this.valueHtml) this.value = "";
					if(o.addClassFocus) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				textareas[i].onblur = function() {
					if(this.value == "") this.value = this.valueHtml;
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
			}
		}
	}
	function inputsSwap(el, el2) {
		if(el) el.style.display = "none";
		if(el2) el2.style.display = "inline";
	}
}
if (window.addEventListener)
	window.addEventListener("load", initPage, false);
else if (window.attachEvent)
	window.attachEvent("onload", initPage);
