var dpSelectedArea = '';
var selectionBaseModifyRunning = false;

jQuery(document).ready(function() {
	searchInit();
});

function searchInit() {
	var mainContainer = jQuery('.tx-tuisearch-pi1');
	delete selectionCompBkp;
	delete selectionBaseBkp;
	selectBuild(mainContainer);
	helpBuild(mainContainer);
	sliderBuild(mainContainer);
	sliderDoubleBuild(mainContainer);
	raterBuild(mainContainer);
	dpBuild(mainContainer);
	mainContainer.find('select').change();
	setBookingCode();
	if(typeof(searchInitCallback) == 'function') {
		return searchInitCallback();
	}
}
	
function searchLoad(id, elm) {
	var container = elm ? jQuery(elm).parents('.tx-tuisearch-pi1') : jQuery('.tx-tuisearch-pi1');
	var loader = buildLoader(container);
	var getObj = {'tx_neustatabs_pi2[ce]' : id};
	jQuery.get('/specials/ajaxifier/ajax.xml', getObj, function(data) {
		loader.remove();
		container.prev('h2').remove();
		container.replaceWith(data);
		searchInit();
	});
}

function searchSubmit(form) {
	fixDate();
	fixFormAction(form);
	if(typeof(searchSubmitCallback) == 'function') {
		return searchSubmitCallback();
	}
	return true;
}

function fixFormAction(form) {
	var mainParts = jQuery(form).attr('action').split('?');
	if(mainParts.length > 1) {
		var subParts = mainParts[1].split('&');
		for(i=0; i<subParts.length; i++) {
			var subSubParts = subParts[i].split('=');
			if(jQuery(form).find('input[type=hidden][name=' + subSubParts[0] + ']').length) {
				jQuery(form).find('input[type=hidden][name=' + subSubParts[0] + ']').val(subSubParts[1]);
			} else {
				jQuery(form).append('<input type="hidden" name="' + subSubParts[0] + '" value="' + subSubParts[1] + '" />');
			}
		}
		jQuery(form).attr('action', mainParts[0]);
	}
}
	
function fixDate() {
	jQuery('.datepicker').each(function() {
		var dpDate = new Array();
		var dateObj = new Date();
		var newDate = new Date();
		
			//Eigabe des Startdatums leer
			if(!jQuery('#conQSStartdateInput').val()){
				 newDate = new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 7));
				jQuery('#conQSStartdateInput').val(jQuery.datepicker.formatDate('dd.mm.yy', newDate));
			}
			
			//Eigabe des Enddatums leer
			if(!jQuery('#conQSEnddateInput').val()){
				 newDate = new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 35));
				jQuery('#conQSEnddateInput').val(jQuery.datepicker.formatDate('dd.mm.yy', newDate));
			}
			
			if(jQuery(this).val().match(/\D+/g)) {
				dpDate = jQuery(this).val().replace(/\D+/g, ".").split('.');
			} else {
				if(jQuery(this).val().length == 8) {
					dpDate = new Array(jQuery(this).val().substr(0, 2), jQuery(this).val().substr(2, 2), jQuery(this).val().substr(4, 4));
				} else if(jQuery(this).val().length == 7) {
					if(jQuery(this).val().substr(0, 2) <= 31) {
						dpDate = new Array(jQuery(this).val().substr(0, 2), jQuery(this).val().substr(2, 1), jQuery(this).val().substr(3, 4));
					} else if(jQuery(this).val().substr(1, 2) <= 12) {
						dpDate = new Array(jQuery(this).val().substr(0, 1), jQuery(this).val().substr(1, 2), jQuery(this).val().substr(3, 4));
					}
				} else if(jQuery(this).val().length == 6) {
					if(jQuery(this).val().substr(2, 2) <=  12) {
						dpDate = new Array(jQuery(this).val().substr(0, 2), jQuery(this).val().substr(2, 2), jQuery(this).val().substr(4, 2));
					} else {
						dpDate = new Array(jQuery(this).val().substr(0, 1), jQuery(this).val().substr(1, 1), jQuery(this).val().substr(2, 4));
					}
				} else if(jQuery(this).val().length == 4) {
					dpDate = new Array(jQuery(this).val().substr(0, 2), jQuery(this).val().substr(2, 2), dateObj.getFullYear());
				}
			}
		//if(dpDate.length > 1) {
			if(dpDate.length == 3) {
				if(dpDate[2].length < 4) {
					if(dpDate[2].length == 0) {
						dpDate[2] = dateObj.getFullYear();
					} else {
						dpDate[2] = dpDate[2]*1+2000;
					}
				}
				newDate = new Date(dpDate[2], dpDate[1]-1, dpDate[0]);
			} else if(dpDate.length == 2) {
				newDate = new Date(dateObj.getFullYear(), dpDate[1]-1, dpDate[0]);
			}
			
			if(newDate.getTime() < dateObj.getTime()) {
				if (newDate.getMonth() < dateObj.getMonth() || (newDate.getMonth() == dateObj.getMonth() && newDate.getDate() < dateObj.getDate())) {
						newDate.setYear(dateObj.getFullYear() + 1);
					}
					else {
						newDate.setYear(dateObj.getFullYear());
					}
			}
			jQuery(this).val(jQuery.datepicker.formatDate('dd.mm.yy', newDate));
		//}
	});
}

function selectBuild(mainContainer) {
	mainContainer.find('select').each(function() {
		jQuery(this).find('option').each(function() {
			var jsCodeArr = jQuery(this).val().match(/javascript\:(.*?)$/);
			jsCodeArr && jsCodeArr[1] ? jQuery(this).data('js', jsCodeArr[1]) : '';
			jQuery(this).val(jQuery(this).val().replace(/javascript\:(.*?)$/, ''));
		});
		jQuery(this).change(function() {
			eval(jQuery(this).find('option:selected').data('js'));
		});
	});
}

function helpBuild(mainContainer) {
	mainContainer.find('.helpopen').click(function() {
		jQuery(this).next('.help').toggle(100)
		jQuery(this).next('.help').css({'top': jQuery(this).position().top, 'left': jQuery(this).position().left+jQuery(this).width()+5})
		if(typeof(searchHelpToggleCallback) == 'function') {
			searchHelpToggleCallback(jQuery(this).next('.help'));
		}
	});
}

function sliderBuild(mainContainer) {
	mainContainer.find('.slider').each(function() {
		var selIndex = 0;
		var elmArr = new Array();
		jQuery(this).find('option').each(function(i) {
			elmArr.push({'name': jQuery(this).text(), 'value': jQuery(this).val()});
			if(jQuery(this).attr('selected')) selIndex = i;
		});
		jQuery(this).after('<div class="sliderSlide"></div><div class="sliderLabel">' + elmArr[selIndex].name + '</div><input type="hidden" name="' + jQuery(this).attr('name') + '" />');
		jQuery(this).next('.sliderSlide').slider({
			max: elmArr.length-1,
			steps: elmArr.length-1,
			value: selIndex,
			orientation: 'horizontal',
			animate: true,
			slide: function (e, ui) {
				jQuery(this).next('.sliderLabel').text(elmArr[ui.value].name);
				jQuery(this).next('.sliderLabel').next('input[@type=hidden]').val(elmArr[ui.value].value);
			}
		});
		jQuery(this).remove();
	});
}

function sliderDoubleBuild(mainContainer) {
	mainContainer.find('.sliderdouble').each(function() {
		var elmArr = new Array();
		var selArr = new Array();
		var min = 10000;
		jQuery(this).find('option').each(function(i) {
			elmArr.push({'name': jQuery(this).text(), 'value': jQuery(this).val()});
			if(jQuery(this).attr('selected') && selArr.length < 2) selArr.push(i);
			min = jQuery(this).val() < min && jQuery(this).val() >= 0 ? jQuery(this).val() : min;
		});
		selArr = selArr.length < 2 ? [0, elmArr.length-1] : selArr;
		var html = '<div class="sliderSlideDouble"></div>';
		html += '<div class="sliderLabel">' + elmArr[selArr[0]].name + ' - ' + elmArr[selArr[1]].name + '</div>';
		html += '<input type="hidden" value="' + elmArr[selArr[0]].value + '" name="' +  jQuery(this).attr('name').split('[]')[0] + 'Min" />';
		html += '<input type="hidden" value="' + elmArr[selArr[1]].value + '" name="' +  jQuery(this).attr('name').split('[]')[0] + 'Max" />';
		jQuery(this).after('<div class="sliderCell">' + html + '</div>');
		jQuery(this).next('.sliderCell').find('.sliderSlideDouble').slider({
			min: min == 10000 ? 0 : min-1,
			max: elmArr.length-1,
			values: selArr,
			animate: true,
			range: 'min',
			slide: function (e, ui) {
				sliderDoubleBGPos(jQuery(this));
				jQuery(this).nextAll('.sliderLabel').text(elmArr[selArr[0]].name + ' - ' + elmArr[selArr[1]].name)
				jQuery(this).nextAll('input[@type=hidden]:first').val(elmArr[ui.values[0]].value)
				jQuery(this).nextAll('input[@type=hidden]:last').val(elmArr[ui.values[1]].value)
			}
		});
		sliderDoubleBGPos(jQuery(this).next('.sliderCell').find('.sliderSlideDouble'))
		jQuery(this).next('.sliderCell').find('.sliderSlideDouble .ui-slider-handle:first').addClass('first-handle');
		jQuery(this).next('.sliderCell').find('.sliderSlideDouble .ui-slider-handle:last').addClass('last-handle');
		jQuery(this).remove();
	});
}

function sliderDoubleBGPos(self) {
	setTimeout(function() {
		var firstSlider = self.find('.ui-slider-handle:first');
		var lastSlider = self.find('.ui-slider-handle:last');
		var bgWidth = lastSlider.position().left - firstSlider.position().left - (parseInt(firstSlider.css('width'))/2) + (parseInt(lastSlider.css('width'))/2);
		var bgLeft = firstSlider.position().left + (firstSlider.width()/2)
		self.find('.ui-widget-header').css({width: bgWidth, left: bgLeft})
	}, 10);
}

function raterBuild(mainContainer) {
	mainContainer.find('.rater').each(function() {
		var elmArr = new Array();
		var lis = ''
		jQuery(this).find('option').each(function(i) {
			elmArr.push({'name': jQuery(this).text(), 'value': jQuery(this).val()});
			if(jQuery(this).attr('selected')) selIndex = i;
			if(jQuery(this).val() && jQuery(this).val()!=-1) lis += '<li></li>';
		});
		jQuery(this).after('<div class="raterRate"><ul>' + lis + '</ul></div><div class="raterLabel">' + (elmArr[selIndex] ? elmArr[selIndex].name : '') + '</div><input type="hidden" name="' + jQuery(this).attr('name') + '" value="' + (elmArr[selIndex] ? elmArr[selIndex].value : '') + '" />');
		jQuery(this).next('.raterRate').data('elmArr', elmArr);
		jQuery(this).next('.raterRate').data('selIndex', selIndex);
		jQuery(this).next('.raterRate').find('li').each(function(i) {
			jQuery(this).click(function() {
				jQuery(this).parent().parent().next('.raterLabel').text(elmArr[i+1].name);
				jQuery(this).parent().parent().next('.raterLabel').next('input[@type=hidden]').val(elmArr[i+1].value);
				jQuery(this).parent().parent().data('selIndex', i+1);
			}).mouseover(function() {
				jQuery(this).parent().parent().next('.raterLabel').text(elmArr[i+1].name);
				jQuery(this).parent().css('backgroundPosition', '0 ' + (-(parseInt(jQuery(this).css('height')) * (i+1))) + 'px');
			}).mouseout(function() {
				jQuery(this).parent().parent().next('.raterLabel').text(jQuery(this).parent().parent().data('elmArr')[jQuery(this).parent().parent().data('selIndex')].name);
				jQuery(this).parent().css('backgroundPosition', '0 ' + (-(parseInt(jQuery(this).css('height')) * jQuery(this).parent().parent().data('selIndex'))) + 'px');
			});
			jQuery(this).mouseout();
		});
		jQuery(this).remove();
	});
}

function dependentSelectChange(localSelect, foreignSelect, noCallback) {
	if(typeof(altDependentSelectChangeCallback) == 'function') {
		altDependentSelectChangeCallback(localSelect, foreignSelect);
	} else {
		var selectionBase = foreignSelect;
		var selectionComp = localSelect;
		localSelect.find('option').each(function() {
			if(jQuery(this).val().indexOf('|')!=-1) {
				selectionBase = localSelect;
				selectionComp = foreignSelect;
				selectionBase.find('option:selected').val() != -1 ? selectionComp.find('option[@value=' + (selectionBase.find('option:selected').val().split('|')[1] ? selectionBase.find('option:selected').val().split('|')[1] : -1) + ']').attr('selected', 'selected') : '';
				return false;
			}
		});
		if(typeof(selectionCompBkp) == 'undefined') {
			selectionCompBkp = selectionComp.clone();
			selectionComp.find('option').each(function(i) {selectionCompBkp.find('option:eq(' + i + ')').data('js', jQuery(this).data('js'))});
		}
		if(typeof(selectionBaseBkp) == 'undefined') {
			selectionBaseBkp = selectionBase.clone();
			selectionBase.find('option').each(function(i) {selectionBaseBkp.find('option:eq(' + i + ')').data('js', jQuery(this).data('js'))});
		}

		if(!selectionBaseModifyRunning) {
			setTimeout(function() {
				selectionBaseModifyRunning = true;
				selectionBaseModify = selectionBaseBkp.clone();
				selectionBaseModify.find('option[@value=' + selectionBase.find('option:selected').val() + ']').attr('selected', 'selected');
				selectionBaseModify.find('option').each(function() {
					if(jQuery(this).val().indexOf('|'+selectionComp.find('option:selected').val())==-1 && selectionComp.find('option:selected').val()!=-1 && jQuery(this).val()!=-1) {
						jQuery(this).remove();
					};
				});
				selectionBaseLabel = selectionBase.prev('label');
				selectionBase.parent().html(selectionBaseModify);
				selectionBaseModify.before(selectionBaseLabel);
				selectionBaseModifyRunning = false;
				if(typeof(afterDependentSelectChangeCallback) == 'function' && !noCallback) {
					afterDependentSelectChangeCallback();
				}
			}, jQuery.browser.msie ? 200 : 0)
		}
	}
}

function childrenCountChange(elm, date) {
	childSel = parseInt(elm.find(':selected').val());
	jQuery('.childsel').hide(); 
	jQuery('.childsel:lt(' + childSel + ')').show(); 
	childSel != -1 ? elm.nextAll('.posttext').show() : elm.nextAll('.posttext').hide();
	if(date) {
		jQuery('.childsel select').find('option:first').attr('selected','selected');
		jQuery('.childsel select').trigger('change');
		jQuery('.childsel select').change(function() {
			var birth = new Date(jQuery(this).parent().find('.childselyear').val(), jQuery(this).parent().find('.childselmonth').val()-1, jQuery(this).parent().find('.childselday').val())
			var age = new Date(new Date().getTime() - birth.getTime()).getFullYear() - 1970;
			jQuery('.childselage:lt(' + childSel + ')').val(age)
			jQuery('.childselbirth:lt(' + childSel + ')').val(jQuery(this).parent().find('.childselyear').val() + '-' + jQuery(this).parent().find('.childselmonth').val() + '-' + jQuery(this).parent().find('.childselday').val());
			jQuery('.childselage:gt(' + (childSel-1) + '), .childselbirth:gt(' + (childSel-1) + ')').val('')
		})
	} else {
		jQuery('.childsel').find('option:first').attr('selected','selected'); 
	}
}

function changeDisplayState(elm, triggerPath, hideLabel, showLabel, stay) {
	toggleElm = eval('jQuery(\'.tx-tuisearch-pi1 form\').contents().filter(\'.elm:eq(' + triggerPath.split('-').join(')\').contents().filter(\'.elm:eq(') + ')\')');
	if(typeof(searchContToggleCallback) == 'function') {
		searchContToggleCallback(toggleElm);
	}
	if(!parseInt(stay) || toggleElm.is(':hidden')) {
		toggleElm.toggle(function(){
			jQuery('.trigger').each(function(){
				var elements = RegExp(/changeDisplayState\((.*),(.*),(.*),(.*),(.*)\)/).exec(jQuery(this).attr('onclick').toString());
				if (eval(elements[2]) == triggerPath) {
					jQuery(this).val(toggleElm.is(':hidden') ? eval(elements[4]) : eval(elements[3]));
				}
			})
		});
	}
}

function dpBuild(mainContainer) {
	if(mainContainer.find('.datepicker').length && !mainContainer.find('.dplayer').length) {
		var selectOptions = '';
		for(var area in vacations) selectOptions += '<option value="' + area + '">' + area + '</option>';
		mainContainer.find('.datepicker').parents('.tx-tuisearch-pi1').prepend('<div class="dplayer" style="display:none;"><div class="dpclose">Fenster schliessen</div><iframe class="dplayeriframe" frameborder="0"></iframe><div class="dpfrom" id="dpfrom"></div><div class="dpto" id="dpto"></div><label style="width:75px; padding:5px 0 2px 5px;">Schulferien:</label><select class="dpvac"><option value="">Bundesland w&auml;hlen</option>' + selectOptions + '</select><input type="button" class="dpsubmit" value="&Uuml;bernehmen" /></div>');
	}
	mainContainer.find('.datepicker').each(function(i) {
		if(i%2) {
			var dpTo = jQuery(this);
			var dpToBtn = dpTo.next('.datepickeropen');
			dpTo.addClass('dpToInput');
			jQuery([dpFrom, dpTo]).each(function(i) {
				var dpParts = jQuery(this).val().split('|');
				var dpMax = dpParts[1] ? dpParts[1].split('.') : [31, 12, new Date().getFullYear()+1];
				jQuery(this).data('maxDate', new Date(dpMax[2], dpMax[1]-1, dpMax[0]));
				jQuery(this).val(dpParts[0]);
				jQuery(this).bind("blur", fixDate)
			});
			dpFromBtn.data('dp', {from:dpFrom, to:dpTo});
			dpToBtn.data('dp', {from:dpFrom, to:dpTo});
			dpFromBtn.click(function() {
				dpShow(jQuery(this).data('dp').from, jQuery(this).data('dp').to)
			})
			dpToBtn.click(function() {
				dpShow(jQuery(this).data('dp').from, jQuery(this).data('dp').to)
			})
		} else {
			dpFrom = jQuery(this);
			dpFrom.addClass('dpFromInput');
			dpFromBtn = dpFrom.next('.datepickeropen');
		}
	});
}

function dpShow(dpFrom, dpTo) {
	//fixDate();
	dpLayer = jQuery('.tx-tuisearch-pi1 .dplayer');
	dpLayer.find('.dpfrom').data('maxDate', dpFrom.data('maxDate'));
	dpLayer.find('.dpto').data('maxDate', dpTo.data('maxDate'));
	jQuery('.dpvac option[@value=' + dpSelectedArea + ']').attr('selected', 'selected');
	dpLayer.find('.dpfrom').datepicker('destroy');
	dpLayer.find('.dpto').datepicker('destroy');
	dpLayer.find('.dpfrom').datepicker(dpGetConf(0));
	dpLayer.find('.dpto').datepicker(dpGetConf(1));
	if(dpFrom.val()) {
		var dpDate = dpFrom.val().split('.');
		if(dpDate.length == 3) {
			dpLayer.find('.dpfrom').datepicker('setDate', new Date(dpDate[2], dpDate[1]-1, dpDate[0]));
		}
	}
	if(dpTo.val()) {
		var dpDate = dpTo.val().split('.');
		if(dpDate.length == 3) {
			dpLayer.find('.dpto').datepicker('setDate', new Date(dpDate[2], dpDate[1]-1, dpDate[0]));
		}
	}
	dpLayer.find('.dpvac').change(function(){
		dpSelectedArea = jQuery('.dpvac').find('[@selected]').attr('value').replace('ü', '&uuml;');
		var dpOldFromMonthYear = jQuery('#dpfrom .monthyearcombo select option:selected').val();
		var dpOldToMonthYear = jQuery('#dpto .monthyearcombo select option:selected').val();
		dpInit();
		jQuery('#dpfrom .monthyearcombo select option[value=' + dpOldFromMonthYear + ']').attr('selected', 'selected');
		jQuery('#dpto .monthyearcombo select option[value=' + dpOldToMonthYear + ']').attr('selected', 'selected');
		dpChangeMonthYear('#dpfrom');
		dpChangeMonthYear('#dpto');
	});
	dpLayer.find('.dpclose, .dpsubmit').click(function(){dpLayer.hide()});
	dpLayer.find('.dpsubmit').click(function(){
		jQuery('.dpFromInput').val(jQuery.datepicker.formatDate('dd.mm.yy', dpLayer.find('.dpfrom').datepicker('getDate')))
		jQuery('.dpToInput').val(jQuery.datepicker.formatDate('dd.mm.yy', dpLayer.find('.dpto').datepicker('getDate')))
	});
	dpInit();
	dpLayer.css({left:dpFrom.offset().left, top:dpFrom.position().top})
	dpLayer.show();
	if(dpTo.parent(':hidden').length) {
		dpLayer.find('.dpto').prepend('<div id="dptoOverlay"></div>');
		if(jQuery.browser.msie) {
			dpLayer.find('.dpto select').css('visibility', 'hidden');
		}
	}
	dpLayer.find('.dplayeriframe').css({'width':dpLayer.outerWidth(), 'height':dpLayer.outerHeight()})
}

function dpInit() {
	var dpFrom = jQuery('.dpfrom').datepicker('getDate');
	jQuery('.dpfrom').datepicker('change', dpGetConf(0));
	if(dpFrom) {
		jQuery('.dpfrom').datepicker('setDate', dpFrom);
	}
	dpBuildMonthYear(0, '#dpfrom', 'Hinreise');
	
	var dpTo = jQuery('.dpto').datepicker('getDate');
	jQuery('.dpto').datepicker('change', dpGetConf(1));
	if(dpTo) {
		jQuery('.dpto').datepicker('setDate', dpTo);
	}
	dpBuildMonthYear(1, '#dpto', 'R\xFCckreise');
}

function dpGetConf(section) {
	if(!section) {
		return {
			beforeShowDay: dpMarkVac,
			onSelect: dpInit,
			minDate: new Date(),
			maxDate: jQuery('.dpfrom').data('maxDate')
		}
	} else {
		return {
			beforeShowDay: dpMarkVac,
			minDate: jQuery('.dpfrom').datepicker('getDate').addDays(+1),
			maxDate: jQuery('.dpto').data('maxDate')
		}
	}
}

function dpBuildMonthYear(section, preSel, label) {
	var maxDate = jQuery(section ? '.dpto' : '.dpfrom').data('maxDate')
	var minDate = section ? jQuery('.dpfrom').datepicker('getDate').addDays(+1) : new Date();
	var selYear = jQuery(preSel).find('.ui-datepicker-new-year option:selected').val();
	var selMonth = jQuery(preSel).find('.ui-datepicker-new-month option:selected').val();
	var monthYearCombo = '<div class="monthyearcombo"><div class="monthYearComboLabel">' + label + '</div><div class="prevmonth">&laquo;</div><select onchange="dpChangeMonthYear(\'' + preSel + '\')">';
	for(var year=minDate.getFullYear(); year<=maxDate.getFullYear(); year++) {
		var monthsArr = new Array('Januar', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
		var monthOffset = 0;
		if(year == minDate.getFullYear()) {
			monthOffset = minDate.getMonth();
			monthsArr = monthsArr.slice(monthOffset, 12);
		}
		monthsArr = year == maxDate.getFullYear() ? monthsArr.slice(0, monthsArr.length-(11-maxDate.getMonth())) : monthsArr;
		for (var i=0; i<monthsArr.length; i++) {
			monthYearCombo += '<option value="' + year + '_' + (i+monthOffset) + '"' + (selYear == year && selMonth == (i+monthOffset) ? ' selected="selected"' : '') + '>' + monthsArr[i] + ' ' + year + '</option>';
		}
	}
	monthYearCombo += '</select><div class="nextmonth">&raquo;</div></div>';
	jQuery(preSel + ' .monthyearcombo').remove();
	jQuery(preSel).prepend(monthYearCombo);
	dpCheckArrows(jQuery(preSel + ' .monthyearcombo select'));
	jQuery(preSel + ' .monthyearcombo .prevmonth').click(function() {
		jQuery(this).next('select').find('option:eq(' + (jQuery(this).next('select').get(0).selectedIndex-1) + ')').attr('selected', 'selected');
		jQuery(this).next('select').change();
		dpCheckArrows(jQuery(this).next('select'));
	});
	jQuery(preSel + ' .monthyearcombo .nextmonth').click(function() {
		jQuery(this).prev('select').find('option:eq(' + (jQuery(this).prev('select').get(0).selectedIndex+1) + ')').attr('selected', 'selected');	
		jQuery(this).prev('select').change();
		dpCheckArrows(jQuery(this).prev('select'));
	});
}

function dpChangeMonthYear(preSel) {
	var monthYear = jQuery(preSel + ' .monthyearcombo option:selected').val().split('_');
	jQuery(preSel + ' .ui-datepicker-new-year option[value=' + monthYear[0] + ']').attr('selected', 'selected');
	jQuery.datepicker._selectMonthYear(preSel, document.getElementById(preSel.split('#')[1]).getElementsByTagName('select')[2], 'Y');
	jQuery(preSel + ' .ui-datepicker-new-month option[value=' + monthYear[1] + ']').attr('selected', 'selected');
	jQuery.datepicker._selectMonthYear(preSel, document.getElementById(preSel.split('#')[1]).getElementsByTagName('select')[1], 'M');
	dpCheckArrows(jQuery(preSel + ' .monthyearcombo select'));
}

function dpCheckArrows(elm) {
	elm.prev('.prevmonth').css('visibility', 'visible');
	elm.next('.nextmonth').css('visibility', 'visible');
	if(!elm.get(0).selectedIndex) {
		elm.prev('.prevmonth').css('visibility', 'hidden');
	}
	if(elm.get(0).selectedIndex == elm.find('option').length-1) {
		elm.next('.nextmonth').css('visibility', 'hidden');
	}
}

function dpMarkVac(dateElm) {
	if(dpSelectedArea) {
		if(vacations[dpSelectedArea].length) {
			return showDays(vacations[dpSelectedArea].concat(holidays['global']), dateElm, 'ui-datepicker-vacation') ;
		}
	}
	if(holidays) {
		return showDays(holidays['global'], dateElm, 'ui-datepicker-vacation');
	}
	return [true, ''];
}

function showDays(markedDays, dateElm, dateClass) {
	for(i=0; i<markedDays.length; i++) {
		var dpFromParts = markedDays[i][0].split('.');
		var dpFrom = new Date(dpFromParts[2], dpFromParts[1]-1, dpFromParts[0]).getTime();
		if(markedDays[i].length == 2) {
			var dpToParts = markedDays[i][1].split('.');
			var dpTo = new Date(dpToParts[2], dpToParts[1]-1, dpToParts[0]).getTime();
			if(dateElm.getTime() >= dpFrom && dateElm.getTime() <= dpTo) {
				return [true, dateClass];
			}
		}
		if(dateElm.getTime() == dpFrom) {
			return [true, dateClass];
		}
	}
	return [true, ''];
}

function setBookingCode() {
	var bookingsequence = get('bookingsequence');
	if(bookingsequence) {
		tmp = jQuery('#input_crs').parent();
		jQuery('#input_crs').val(bookingsequence);
		jQuery('#input_crs').removeAttr('onclick');
		jQuery('#input_crs').attr({'id':'input_crs_set', 'readonly':'readonly', 'name':'input_crs_full'});
		tmp.append('<input name="input_crs" id="input_crs" type="hidden" value="' + bookingsequence.substr(0, 8) + '" />');
		tmp.append('<input name="sleistung" id="sleistung" type="hidden" value=";' + bookingsequence.substr(8, 2) + ';' + bookingsequence.substr(10, 3) + '" />');
	}
}