jQuery.fn.wait = function(time, type) {
	time = time || 1000;
	type = type || "fx";
	return this.queue(type, function() {
		var self = this;
		setTimeout(function() {
			jQuery(self).dequeue();
		}, time);
	});
};


// jQuery UI Datepicker
jQuery(function($) {
	$.datepicker.regional['de'] = {
		prevText:        'zurück',
		nextText:        'weiter',
		monthNames:      ['Jänner','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
		dayNames:        ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
		dayNamesMin:     ['So','Mo','Di','Mi','Do','Fr','Sa'],
		firstDay:        1,
		buttonText:      'Kalender',
		isRTL:           false
	};
	$.datepicker.regional['en'] = {
		buttonText:      'Calendar'
	};
	$.datepicker.regional['fr'] = {
		prevText:        'préc',
		nextText:        'suiv',
		monthNames:      ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'], 
		dayNames:        ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], 
		dayNamesMin:     ['Di','Lu','Ma','Me','Je','Ve','Sa'],
		firstDay:        0,
		buttonText:      'Calendrier',
		isRTL:           false
	};
	$.datepicker.regional['it'] = {
		prevText:        'prec',
		nextText:        'succ',
		monthNames:      ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], 
		dayNames:        ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], 
		dayNamesMin:     ['Do','Lu','Ma','Me','Gi','Ve','Sa'], 
		firstDay:        1,
		buttonText:      'Calendario',
		isRTL:           false
	};
	$.datepicker.setDefaults($.datepicker.regional[$('html').attr('lang')]);
	$.datepicker.setDefaults({
		buttonImage:     '/fileadmin/template/img/icons/datepicker.png',
		buttonImageOnly: true,
		dateFormat:      'yy-mm-dd', // ISO 8601
		minDate:         '0y',
		showOn:          'both',
		showOtherMonths: true
	});
	
	function select_to_datepicker(prefix, min_date, bind_to, change_dropdown) {
		if($('select[name="' + prefix + '_yyyy"], select[name="' + prefix + '_mm"], select[name="' + prefix + '_dd"]').length == 3) {
			$('select[name="' + prefix + '_yyyy"], select[name="' + prefix + '_mm"], select[name="' + prefix + '_dd"]').css({display: 'none'});
			$('select[name="' + prefix + '_yyyy"]').before('<input type="text" name="' + prefix + '" readonly="readonly" class="s25" />');
			$('input[name="' + prefix + '"]').val(
				$('select[name="' + prefix + '_yyyy"]').val() + '-' +
				$('select[name="' + prefix + '_mm"]'  ).val() + '-' +
				$('select[name="' + prefix + '_dd"]'  ).val()
			);
			
			// Wenn die select-Elemente keine Werte haben, wird das Textfeld wieder geleert.
			if ($('input[name="' + prefix + '"]').val() == '--') {
				$('input[name="' + prefix + '"]').val('');
			}
			$('input[name="' + prefix + '"]').datepicker({
				minDate: min_date,
				changeYear: change_dropdown,
				onSelect: function(dateText, inst) {
					var arr = dateText.split('-');
					$('select[name="' + prefix + '_yyyy"]').val(arr[0]);
					$('select[name="' + prefix + '_mm"]'  ).val(arr[1]);
					$('select[name="' + prefix + '_dd"]'  ).val(arr[2]);
					
					// Bei der Auswahl eines Anreisedatums wird der Picker des Abreisedatums auf eine Mindestauswahl von +1 Tag (86400000 Millisekunden) gesetzt.
					if (bind_to != '') {
						$('input[name="' + bind_to + '"]').datepicker(
							'option',
							$.extend({
								minDate: new Date(
									parseInt(
										Date.parse(
											$('input[name="' + prefix + '"]').datepicker('getDate')
										)
									)+86400000
								)
							})
						);
					}
				}
			});
		}
	}
	
	select_to_datepicker('mf_datum_von', '+1d', 'mf_datum_bis');
	select_to_datepicker('mf_datum_bis', '+2d');
});



jQuery('#menu').ready(function() {
	jQuery('#menu>ul>li>ul').each(
		function() {
			jQuery(this).prepend('<img src="/' + jQuery(this).parent().find('span').attr('title') + '" alt="" />');
			jQuery(this).prepend('<span class="headline">' + jQuery(this).parent().find('a').attr('title').replace(/:/, ': <br />') + '</span>');
		}
	);

	jQuery('#menu>ul>li:nth-child(4)>ul, #menu>ul>li:nth-child(5)>ul, #menu>ul>li:nth-child(6)>ul').css(
		{
			left: 'auto',
			right: '-2px'
		}
	);
	jQuery('#menu>ul>li:nth-child(6)>ul').css(
		{
			right: '-3px'
		}
	);
	jQuery('#menu>ul>li:has(ul)').hover(
		function() {
			jQuery(this).addClass('hover');
			// some nasty IE 6 bug (element is hidden without this useless snippet) see css for additional code 
			jQuery('#menu ul li.hover ul li ul').animate({left: '2px'}, 100);
			jQuery('#menu ul li.hover ul li ul').css('position', 'static');
		},
		function() {
			jQuery(this).removeClass('hover');
		}
	);
});

jQuery('#media').ready(function() {
	jQuery('#media').cycle(
		{
			fx:     'fade',
			timeout: 4000,
			speed:   2500,
			random:  1      // does not with with jquery.cycle.lite.min.js, should be replaced with custom version
		}
	);
});

function gmap2_after_initialize() {
	jQuery('#media').hover(
		function() {
			jQuery('#header, #lang, #sitelinks').animate({opacity: 0.25}, 333);
		},
		function() {
			jQuery('#header, #lang, #sitelinks').animate({opacity: 1}, 250);
		}
	);
};

function get_movie(movieName) {
	if (navigator.appName.indexOf('Microsoft') != -1) {
		return window[movieName];
	}
	else {
		return document[movieName];
	}
}

jQuery('body.home').ready(function() {
	jQuery('body.home #col0 .section').append('<span class="after"><span class="a"></span><span class="b"></span><span class="c"></span></span></span>');
	
	//get_movie('movie').jsDeactivate();
	jQuery('body.home #col0').stop(true).wait().animate(
		{
			paddingTop: '177px',
			height: '110px'
		},
		500
	);
	jQuery('body.home #col0 .section').stop(true).wait().animate(
		{
			marginTop: '0'
		},
		500
	);
	
	jQuery('body.home #col0').hover(
		function() {
			get_movie('movie').jsDeactivate();
			jQuery(this).stop(true).animate(
				{
					paddingTop: '40px',
					height: '247px'
				},
				250
			);
		},
		function() {
			jQuery(this).stop(true).animate(
				{
					paddingTop: '177px',
					height: '110px'
				},
				200,
				'swing',
				function() { get_movie('movie').jsActivate(); }
			);
			
		}
	);
	jQuery('body.home #col0 .section').hover(
		function() {
			jQuery(this).css('z-index', '100');
			jQuery('span.after', this).css('display', 'block');
			jQuery(this).stop(true).animate(
				{
					marginTop: '-30px'
				},
				250
			);
		},
		function() {
			jQuery(this).css('z-index', '10');
			jQuery('span.after', this).css('display', 'none');
			jQuery(this).stop(true).animate(
				{
					marginTop: '0'
				},
				200
			);
		}
	);
	
	jQuery('body.home #col3').cycle(
		{
			fx:     'scrollUp',
			timeout: 5000,
			speed:   1000
		}
	);
	
	jQuery('body.home a').bind(
		'click',
		function() {
			get_movie('movie').jsDeactivate();
		}
	);
	
	

});

var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUploads() {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var image = document.createElement('img');
	image.src='pix/button_select.gif';
	fakeFileUpload.appendChild(image);
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'file hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		x[i].onchange = x[i].onmouseout = function () {
			this.relatedElement.value = this.value;
		}
	}
}

jQuery(document).ready(function() {
	jQuery('form input[type=file]').parent().find('li').css('display', 'none');
	jQuery('form input[type=file]').after('<div class="fakefile"><input class="s75" /><span>upload</span></div>');
	jQuery('form input[type=file]').each(function() {
		jQuery(this).parent().find('.fakefile>input').val(
			jQuery(this).parent().find('dfn.filename').text()
		);
	});
	jQuery('form input[type=file]').bind(
		'load change mouseout',
		function() {
			if (jQuery(this).val() != '') {
				jQuery(this).parent().find('.fakefile>input').val(jQuery(this).val());
			}
		}
	);
});

jQuery(document).ready(function() {
	jQuery('.section>div.csc-frame-frame1').each(function(){
		jQuery(this).find('>h3').prepend('<span class="toggle"></span>').css('border-bottom', '1px solid #e3d8c5').css('cursor', 'pointer');
		jQuery(this).find('>*:not(h3)').slideUp(0);
		jQuery(this).find('>h3').toggle(
			function() {
				jQuery(this).parent().find('>*:not(h3)').slideDown('fast');
				jQuery(this).find('>span.toggle').addClass('on');
			},
			function() {
				jQuery(this).parent().find('>*:not(h3)').slideUp('fast');
				jQuery(this).find('>span.toggle').removeClass('on');
			}
		);
	});
});

// Zebra tables
jQuery(document).ready(function() {
	jQuery('table:not(.plain) tr:nth-child(2n)').addClass('even');
	jQuery('table:not(.plain) tr:nth-child(2n+1)').addClass('odd');
});

// Buttons
jQuery(document).ready(function() {
	jQuery('a.button').prepend('<span class="before"></span>');
	jQuery('a.button').append('<span class="after"></span>');
});

jQuery(document).ready(function() {
	jQuery('div.pagelist>dfn').toggle(
		function() {
			jQuery('div.pagelist>ul').show();
		},
		function() {
			jQuery('div.pagelist>ul').hide();
		}
	);
});
