﻿// initialisieren des kalenders
// event-handler auf die links "hotel" bei der adresseingabe
// event-handler auf den link "passwort vergessen" - blendet pwd vergessen formular ein/aus
(function($) {
	$.fn.initCalendar = function(options) {
		var opts = $.extend({}, $.fn.initCalendar.defaults, options);
		return this.each(function() {
			var tripInfo = $(this);
			var o = $.meta ? $.extend({}, opts, tripInfo.data()) : opts;

			tripInfo.find('.date a').bind('click', function(ev) {
				var calendarLink = $(this),
                    dateContainer = calendarLink.parents('.date'),
                    dateField = $('input', dateContainer),
				    destination = (tripInfo.hasClass('departure')) ? 'departure' : 'arrival';

				ev.preventDefault();

				if ($('.' + destination + 'Calendar').css('display') == 'block') {
					$('.' + destination + 'Calendar').hide('slow');
				} else {
					var d = new Date(),
						d2 = new Date(d.getFullYear(), d.getMonth() + 1, 10);

					getCalendar(dateField, destination, (d2.getMonth() + 1) + "." + d2.getFullYear());
				}
			});

			$('div.address a', tripInfo).bind('click', function(ev) {
				ev.preventDefault();
				var destination = (tripInfo.hasClass('departure')) ? 'departure' : 'arrival',
					PopWindow = window.open('/Popups/HotelList.aspx?destination=' + destination, 'hotellist', 'width=702,height=500');

				try {
					PopWindow.creator = self;
					PopWindow.focus();
				} catch (e) {
					// if window is opened on a foreign site, security settings prohibit setting the creator...
				}
			});
		});
	};

	$('a.togglePwdForm').click(function(ev) {
		ev.preventDefault();
		$('div.pw_forgotten').toggle('slow');
	});

	function getCalendar(dateField, destination, middleMonth) {
		var sizeParam = (dateField.parents(".date").hasClass("dateSmall")) ? "small" : "",
		promocodeParam = "", search;
			var s = [], promocodeParam;
			s = location.search.substring(location.search.indexOf("?") + 1).split("&");
			for (var i = 0, l = s.length; i < l; i++) {
				if (s[i].split("=")[0] === "promocode") {
					promocodeParam = s[i].split("=")[1];
					break;
				}
			}

		$.get(
			'/Helper/Calendar.aspx',
			{ dateValue: dateField.val(), month: middleMonth, size: sizeParam, promocode: promocodeParam },
			function(data) {
				$('.' + destination + 'Calendar .calendarInner').html(data).parent().show('slow');
				$('.pagingBack, .pagingNext', '.' + destination + 'Calendar .calendarInner').click(function(ev) {
					var pagingLink = $(this),
						direction = (pagingLink.attr('class') == 'pagingBack') ? -1 : 1,
						middleMonth = $('span', pagingLink).html();

					ev.preventDefault();
					getCalendar(dateField, destination, middleMonth);
				});
				$('.' + destination + 'Calendar .calendarInner .month div a').click(function(ev) {
					ev.preventDefault();
					var dayLink = $(this);
					dateField.val($('span', dayLink).html());
					//dateField.trigger('change');
					//Page_ClientValidate('TravelData');
					$('.' + destination + 'Calendar').hide('slow');
					$('.' + destination + ' .date input')[0].focus();
				});
				$('.' + destination + 'Calendar .calendarInner .month div a')[0].focus();
			});
	}
	$.fn.initCalendar.defaults = {};
})(jQuery);


// onclick event handler auf den radio-boxen
// schreibt beschreibung und preis in die rechte spalte
// zeigt die button-leiste unter die gewählte option
(function($){
	$.fn.initTicketOptionRadio = function(options) {
		var opts = $.extend({}, $.fn.initTicketOptionRadio.defaults, options);
		return this.each(function() {
			var radio = $(this);

			radio.click( function(ev){
				var labels = $('label.ticketOption'),
					parentLabel = radio.parents('label');
				$('.selectedTransportText').html( $('.label', parentLabel).clone(true) );
				$('.selectedTransportGrownupPrice').html( $('.effectivePrice', parentLabel).html() );
				displayButtonsContainer();

				return labels.each(function(i){
					if (labels[i]==parentLabel[0]) {
						$(labels[i]).addClass('currLabel');
					} else {
						$(labels[i]).removeClass('currLabel');
					}
				});
			});
		});
	}

	$.fn.initTicketOptionRadio.defaults = {};
})(jQuery);


// init buttons - taxischnittstellenvalidierung - adresse übernehmen
(function($){
	$.fn.initTaxiButtons = function(options) {
		var opts = $.extend({}, $.fn.initTaxiButtons.defaults, options);
		return this.each(function() {
			var taxiButton = $(this);
			
			taxiButton.click( function (ev){
				var addressList, addressValue, street, zip, destination;
				
				ev.preventDefault();
				addressList = taxiButton.parents('.addressList');
				addressValue = $('input:radio:checked' ,addressList).val();
				street = addressValue.substring( addressValue.indexOf('~')+1 );
				zip = addressValue.substring(0,4);
				destination = (addressList.hasClass('departureAddresslist')) ? 'departure' : 'arrival';
				
				passAddressData(zip, street, destination);
				if (destination=='departure' && $('.arrival .address input').length==1 && $('.arrivalAddresslist').length==0){
					passAddressData(zip, street, 'arrival');
				}
				addressList.slideUp();
			});
		});
	}

	function passAddressData(zip, street, destination){
		$('.zip input', '.'+destination).val(zip)
		$('.address input', '.'+destination).val(street)
	}

	$.fn.initTaxiButtons.defaults = {};
})(jQuery);



$(function(){
	$('.btnGenerateTicket').click(function(ev){
		if (!Page_ClientValidate("PaymentInfo"))
		{
			return;
		}

		//ev.preventDefault(); // TODO: WHY???

		var coverHeight = ($(window).height() > $(document).height()) ? $(window).height() : $(document).height(),
			browserIE = /*@cc_on!@*/false,
			browserIE6 = (browserIE && document.compatMode && !window.XMLHttpRequest) ? true:false,
			iframe = '<iframe src="javascript:window.status=\'\';" frameborder="0"></iframe>';
			
		$('.dvCover').height(coverHeight).css({opacity:'0.8'}).fadeIn(400); //.click(hideCover)
		$('.bigImage span img').remove();
		$('.bigImage').css({'text-align':'center','top':220}).find('span').append( $('.waitingAnimationBox').fadeIn(400) ).parent().fadeIn(400);
		if (browserIE6){
		   $('.waitingAnimationBackground').html(iframe).fadeIn(400);
		}
		//find('img.bigImg').attr('src', '').parents('.bigImage').
	});
});

// zeigt den container mit den buttons direkt unter der gewählten option
function displayButtonsContainer(){
	var radios = $('ul.selectTicket li input[type=radio]'),
		browserIE = /*@cc_on!@*/false,
		browserIE6 = (browserIE && document.compatMode && !window.XMLHttpRequest) ? true:false;
	
	return radios.each(function(i){
		var button = $(this).parents('label').siblings('.buttons');

		if ($(this).attr('checked')==true) {
			if (browserIE6) {
				window.setTimeout(function(){$(button).show();}, 30)
			} else {
				$(button).show();
			}
		} else {
			if (browserIE6) {
				window.setTimeout(function(){$(button).hide();}, 30)
			} else {
				$(button).hide();
			}
		}
	});
}
displayButtonsContainer();


// hotel-popup: werte übernehmen und ins formular schreiben
function setHotelAddress(address, destination){
	var zip = address.substr(0, address.indexOf("~")),
		street = $.trim(address.substr(address.indexOf("~")+1));
	var addressField = $('.address input', '.'+destination);
	var zipField = $('.zip input', '.'+destination);
	addressField.val(street);
	zipField.val(zip);
	addressField.trigger("change");
	zipField.trigger("change");

	if (destination == 'departure' && $('.arrival .address input').length==1)
	{
		addressField = $('.arrival .address input');
		zipField = $('.arrival .zip input');
		addressField.val(street);
		zipField.val(zip);
		addressField.trigger("change");
		zipField.trigger("change");
	}
}


// aufruf der initialisierung für kalender, tooltips, buttons-verschiebe-script
// buttons taxischnittstellenvalidierung initialisieren
$('.tripInfo').initCalendar();
$('.btnInfo').initTooltips();
$('.selectTicket .ticketOption input.radio').initTicketOptionRadio();
$('.addressList .btnLink').initTaxiButtons();
