$(function () {
var pickups = null;
var timeKey = null;
var timeSelected = null;
var calendar_rgba = Helpers.convertHex(getComputedStyle(document.documentElement).getPropertyValue('--primary-color-st'), 0.35);
document.documentElement.style.setProperty('--box-shadow-color', '0 15px 20px -3px ' + calendar_rgba);
$('.calendar__date--avaiable').click(function () {
selectDay($(this));
});
function selectDay(element, reset = true) {
if (reset) {
$(".calendar__date--selected-only").removeClass("calendar__date--selected-only");
$('.ticket-container').remove();
$('.request-quote').remove();
}
$(element).addClass('calendar__date--selected-only');
var dateSelected = $(element).attr('date');
timeKey = $(element).attr('timeKey') === undefined ? null : $(element).attr('timeKey');
timeSelected = $(element).attr('timeSelected') === undefined ? null : $(element).attr('timeSelected');
$('.calendar-search-result h4').html('');
$('.calendar-search-result .subtitle').html('');
$('.calendar__dates').append('
Kalender\u0020wird\u0020geladen
');
$.get('/de/calendar/day-detail', {
productId: productID,
date: dateSelected,
timeKey: timeKey
}, function (res) {
$('.calendar-times-area').remove();
$('.calendar__on-loading').remove();
for (var i = 0; i < res.length; i++) {
var price = "";
var explanation = "";
if (res[i].price != null) price = '' + res[i].price + ' € ';
if (res[i].explanation != null) explanation = '' + res[i].explanation + '
';
var ticketCalendarElement = '' +
'
' +
'
' + res[i].descr + ' ' + explanation +
'' +
'
' + price +
'
' +
'- ' +
' ' +
'+ ' +
'
' +
'
' +
'
';
$('.calendar-search-result').append(ticketCalendarElement);
}
$(".calendar-search-result").find('h4').text('Ausgew\u00E4hltes\u0020Datum: ' + Helpers.convertDateToIta(dateSelected));
if (timeSelected != null) {
$(".calendar-search-result").find('h4').append(' Ausgew\u00E4hlte\u0020Zeit: ' + timeSelected);
}
if (res.times !== undefined && (res.times.morning.length > 0 || res.times.afternoon.length > 0 || res.times.evening.length > 0 || res.times.night.length > 0)) {
$('.calendar-search-result').append('
');
$('.calendar-search-result').find('.subtitle').text('W\u00E4hlen\u0020Sie\u0020eine\u0020Zeit\u0020aus');
for (var a = 0; a < res.times.morning.length; a++) {
if (a === 0)
$('.calendar-times-area').append("Morgen ");
var timeCalendarElement = '' + res.times.morning[a].value + ' ';
$('.calendar-times-area').append(timeCalendarElement);
}
for (var b = 0; b < res.times.afternoon.length; b++) {
if (b === 0)
$('.calendar-times-area').append("Nachmittag ");
var timeCalendarElement = '' + res.times.afternoon[b].value + ' ';
$('.calendar-times-area').append(timeCalendarElement);
}
for (var c = 0; c < res.times.evening.length; c++) {
if (c === 0)
$('.calendar-times-area').append("Abend ");
var timeCalendarElement = '' + res.times.evening[c].value + ' ';
$('.calendar-times-area').append(timeCalendarElement);
}
for (var d = 0; d < res.times.night.length; d++) {
if (d === 0)
$('.calendar-times-area').append("Nacht ");
var timeCalendarElement = '' + res.times.night[d].value + ' ';
$('.calendar-times-area').append(timeCalendarElement);
}
$('.calendar-times-button').click(function () {
selectDay($(this), false);
});
} else {
if (res.length > 0) {
$('.calendar-search-result').find('.subtitle').text('W\u00E4hlen\u0020Sie\u0020die\u0020Anzahl\u0020der\u0020Tickets\u0020aus\u0020und\u0020klicken\u0020Sie\u0020auf\u0020\u0022Preis\u0020berechnen\u0022,\u0020um\u0020fortzufahren');
if (typeof res[0].is_seated != 'undefined' && res[0].is_seated) {
$('.calendar-search-result').find('.subtitle').append(' Indem\u0020Sie\u0020Ihre\u0020Tickets\u0020unten\u0020ausw\u00E4hlen,\u0020wird\u0020Ihnen\u0020der\u0020beste\u0020verf\u00FCgbare\u0020Sitzplatz\u0020zugewiesen');
$('.calendar-search-result').find('.subtitle').append('Dr\u00FCcken\u0020Sie\u0020hier,\u0020wenn\u0020Sie\u0020Orte\u0020lieber\u0020auf\u0020der\u0020Karte\u0020ausw\u00E4hlen\u0020m\u00F6chten ');
}
$('.calendar-search-result').append('Angebot\u0020berechnen ');
$('.request-quote').click(requestQuote);
} else {
$(".calendar-search-result").find('h4').html("F\u00FCr\u0020das\u0020ausgew\u00E4hlte\u0020Datum\u0020sind\u0020keine\u0020Produkte\u0020vorhanden
");
}
}
$('html,body').animate({
scrollTop: $('.calendar-search-result').offset().top - 30
}, 'slow');
});
}
var months = [
"Januar",
"Februar",
"Marsch",
"April",
"Kann",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember"
];
var today = new Date();
var currentYear = today.getFullYear();
var currentMonth = today.getMonth();
$.each(months, function (i, item) {
var selected = currentMonth === i ? 'selected' : '';
$('#calendar__month').append('' + item + ' ');
});
for (var a = 0; a < 3; a++) {
var selected = a == 0 ? 'selected' : '';
$('#calendar__year').append('' + currentYear + ' ');
currentYear++;
}
currentYear = today.getFullYear();
if (typeof avaiableDays != "undefined") {
var firstAvaiableDay = new Date(avaiableDays[0].date);
currentYear = firstAvaiableDay.getFullYear();
currentMonth = firstAvaiableDay.getMonth();
var avDayLength = avaiableDays.length;
if (new Date(avaiableDays[0].date).getMonth() === new Date(avaiableDays[avDayLength - 1].date).getMonth())
$('.calendar__opts').hide();
$('#calendar__month').val(currentMonth);
$('#calendar__year').val(currentYear);
renderCalendar(currentMonth, currentYear);
} else {
renderCalendar(currentMonth, currentYear);
}
function daysInMonth(month, year) {
month++;
return new Date(year, month, 0).getDate();
}
function renderCalendar(month, year) {
month = parseInt(month);
year = parseInt(year);
$('.calendar__dates').html('');
var startWeek = dayOfWeek(1, month, year);
var differece = 7 - startWeek;
//Mese precedente
if (startWeek != 0) {
var lastMonthStartDay = daysInMonth(month - 1, year) - startWeek;
for (var a = lastMonthStartDay; a < daysInMonth(month - 1, year); a++) {
$('.calendar__dates').append('' + (lastMonthStartDay + 1) + '
');
lastMonthStartDay++;
}
}
//Mese corrente
var closeOnSunday = false;
var daysInCurrentMonth = daysInMonth(month, year);
for (var b = 0; b < daysInCurrentMonth; b++) {
$('.calendar__dates').append('' + (b + 1) + '
');
}
var closingMontDay = dayOfWeek(daysInCurrentMonth, month, year);
//Mese successivo
if (closingMontDay !== 6) {
var succMonthStartDay = 1;
for (var c = closingMontDay; c < 6; c++) {
$('.calendar__dates').append('' + succMonthStartDay + '
');
succMonthStartDay++;
}
}
$('.calendar__dates').append('Kalender\u0020wird\u0020geladen
');
if (typeof avaiableDays != "undefined") {
for (var i = 0; i < avaiableDays.length; i++) {
if (new Date(avaiableDays[i].date).getMonth() == month) {
var elements = $(".calendar__date--close > span:contains(" + (new Date(avaiableDays[i].date).getDate()) + ")");
if (elements.length > 1) {
for (var a = 0; a < elements.length; a++) {
var text = $(elements[a]).text();
var day = new Date(avaiableDays[i].date).getDate();
if (text == day) {
$(elements[a]).parent().removeClass('calendar__date--close');
$(elements[a]).parent().addClass('calendar__date--avaiable');
$(elements[a]).parent().attr('date', Helpers.formatDate(new Date(year, month, (new Date(avaiableDays[i].date).getDate()))));
}
}
} else {
$(elements).parent().removeClass('calendar__date--close');
$(elements).parent().addClass('calendar__date--avaiable');
$(elements).parent().attr('date', Helpers.formatDate(new Date(year, month, (new Date(avaiableDays[i].date).getDate()))));
}
}
}
$('.calendar__date--avaiable').click(function () {
selectDay($(this));
});
$('.calendar__on-loading').remove();
} else {
//Carico disponibilità
$.get('/de/calendar/available-days', {
productId: productID,
startDate: Helpers.formatDate(new Date(year, month, 1)),
endDate: Helpers.formatDate(new Date(year, month + 1, 0))
}, function (res) {
$('.calendar__on-loading').remove();
for (var i = 0; i < res.length; i++) {
var elements = $(".calendar__date--close > span:contains(" + (new Date(res[i].date).getDate()) + ")");
if (elements.length > 1) {
for (var a = 0; a < elements.length; a++) {
var text = $(elements[a]).text();
var day = new Date(res[i].date).getDate();
if (text == day) {
$(elements[a]).parent().removeClass('calendar__date--close');
$(elements[a]).parent().addClass('calendar__date--avaiable');
$(elements[a]).parent().attr('date', Helpers.formatDate(new Date(year, month, (new Date(res[i].date).getDate()))));
}
}
} else {
$(elements).parent().removeClass('calendar__date--close');
$(elements).parent().addClass('calendar__date--avaiable');
$(elements).parent().attr('date', Helpers.formatDate(new Date(year, month, (new Date(res[i].date).getDate()))));
}
}
$('.calendar__date--avaiable').click(function () {
selectDay($(this));
});
}).fail(function () {
$('.calendar__on-loading').remove();
$('.calendar__dates').append('Verf\u00FCgbarkeit\u0020kann\u0020nicht\u0020gepr\u00FCft\u0020werden
');
});
}
}
function dayOfWeek(day, month, year) {
return new Date(year, month, day).getDay() === 0 ? 6 : new Date(year, month, day).getDay() - 1;
}
function requestQuote() {
$('.request-quote').prop('disabled', true);
var products = [];
$('input[name^=qty]').each(
function () {
if ($(this).val() > 0) {
products.push({
'id': $(this).attr('data-product-id'),
'qty': $(this).val()
})
}
}
);
$('.calendar-quotation').empty();
$.ajax({
url: '/de/calendar/quote',
contentType: "application/json; charset=utf-8",
dataType: "json",
method: "POST",
data: JSON.stringify({
date: $('.calendar__date--selected-only').attr('date').toString(),
productId: productID,
products: products,
lang: "it",
timeKey: timeKey
})
}).done(function (res) {
$('.calendar-quotation').empty();
$('.calendar-quotation').append(' ');
$('.calendar-quotation').append(' ');
var quoteElements = '';
$(res).each(
function (index) {
/*var bookingCode = "";*/
var checked = "";
if (index == 0) checked = "checked";
var subDescr = "";
if (typeof this.subDescr != 'undefined' && this.subDescr != null) subDescr = "
" + this.subDescr + "
";
if (this.times.length > 0) {
var that = this;
$(this.times).each(
function (index) {
quoteElements += '
' +
'
' +
'
' +
'' +
'
' + Helpers.formatDayMont(that.date) + '
' +
'
' + Helpers.formatYear(that.date) + '
' +
'
' + this + '
' +
'
' +
'' +
'
' + that.descr + '
' +
'
' + that.total + ' €
' +
subDescr +
'
' +
' ' +
'
';
}
);
} else {
quoteElements += '
' +
'
' +
'
' +
'' +
'
' + Helpers.formatDayMont(this.date) + '
' +
'
' + Helpers.formatYear(this.date) + '
' +
'
' +
'' +
'
' + this.descr + '
' +
'
' + this.total + ' €
' +
subDescr +
'
' +
' ' +
'
';
}
}
);
quoteElements += '
';
$('.calendar-quotation').find('h4').text('Eine\u0020Auswahl\u0020treffen');
$('.calendar-quotation').find('.subtitle').text('Der\u0020angezeigte\u0020Preis\u0020ist\u0020der\u0020Gesamtpreis\u0020f\u00FCr\u0020die\u0020angeforderten\u0020Tickets');
$('.calendar-quotation').append(quoteElements);
$('.request-quote').text('Zitat\u0020\u00E4ndern');
if (typeof avaiableDays != "undefined") {
if (pickupType == "M")
$('.calendar-quotation').append('Fahren\u0020Sie\u0020mit\u0020Ihrer\u0020Abholauswahl\u0020fort ');
else if (pickupType == "O")
$('.calendar-quotation').append('Auswahl\u0020ohne\u0020Abholung\u0020best\u00E4tigen - Oder -
W\u00E4hlen\u0020Sie\u0020eine\u0020Abholung\u0020aus ');
else
$('.calendar-quotation').append('Auswahl\u0020best\u00E4tigen\u0020und\u0020Hotel\u0020anzeigen ');
} else {
if (pickupType == "M")
$('.calendar-quotation').append('Fahren\u0020Sie\u0020mit\u0020Ihrer\u0020Abholauswahl\u0020fort ');
else if (pickupType == "O")
$('.calendar-quotation').append('Auswahl\u0020ohne\u0020Abholung\u0020best\u00E4tigen - Oder -
W\u00E4hlen\u0020Sie\u0020eine\u0020Abholung\u0020aus ');
else
$('.calendar-quotation').append('Auswahl\u0020best\u00E4tigen\u0020und\u0020kaufen ');
}
$('.get-pickup').click(function () {
requestPickups()
});
$('.store-cart').click(function () {
storeCart()
});
$('.store-package').click(function () {
storePackage()
});
$('html,body').animate({
scrollTop: $('.calendar-quotation').offset().top - 30
}, 'slow');
}).fail(function (res) {
nascondiLoader();
var errorMessage = "Unexpected error";
if (res.status == 400) errorMessage = res.responseJSON.error;
$.notify({
message: " " + errorMessage,
}, {
type: 'danger',
allow_dismiss: true,
delay: 5000
});
}).always(function () {
$('.request-quote').prop('disabled', false);
});
}
function requestPickups() {
$('.pickup-quotation').empty();
$.ajax({
url: '/de/calendar/pickups?rateKey=' + $('input[name="quotation"]:checked').val(),
contentType: "application/json; charset=utf-8",
dataType: "json",
method: "GET"
}).done(function (res) {
$('.pickup-quotation').empty();
$('.pickup-quotation').append(' ');
$('.pickup-quotation').append(' ');
pickups = res;
var pickupsElement = '';
$(res).each(
function (index) {
pickupsElement += '' + res[index].name + (res[index].time == null ? '' : ' - ' + res[index].time) + ' '
}
);
pickupsElement += ' ';
$('.pickup-quotation').find('h4').text('W\u00E4hlen\u0020Sie\u0020eine\u0020Abholung\u0020aus');
$('.pickup-quotation').find('.subtitle').text('W\u00E4hlen\u0020Sie\u0020eine\u0020Abholung\u0020und\u0020eine\u0020Uhrzeit\u0020aus');
$('.pickup-quotation').append(pickupsElement);
var pickup = res[0];
var pickupinfo = "";
if (pickup.name != null) pickupinfo += "
Name\u0020der\u0020Abholung: " + pickup.name + " ";
if (pickup.description != null) pickupinfo += "
Beschreibung: " + pickup.description + " ";
if (pickup.address != null) pickupinfo += "
Adresse: " + pickup.address + " ";
if (pickup.city != null) pickupinfo += "
Stadt: " + pickup.city + " ";
if (pickup.postcode != null) pickupinfo += "
POSTLEITZAHL: " + pickup.postcode + " ";
if (pickup.time != null) pickupinfo += "
Std: " + pickup.time + " ";
if (pickup.total != null) pickupinfo += "
Gesamtabholbetrag: " + pickup.total + " € ";
pickupinfo += "
";
$('.pickup-select').after(pickupinfo);
if (typeof avaiableDays != "undefined") {
$('.pickup-quotation').append('Auswahl\u0020best\u00E4tigen\u0020und\u0020Hotel\u0020anzeigen ');
} else {
$('.pickup-quotation').append('Auswahl\u0020best\u00E4tigen\u0020und\u0020kaufen ');
}
$('.pickup-store-cart').click(function () {
storeCart();
});
$('.pickup-select').change(function () {
showPickInfo($(this).val());
});
$('.pickup-store-package').click(function () {
storePackage();
});
$('html,body').animate({
scrollTop: $('.pickup-quotation').offset().top - 30
}, 'slow');
}).fail(function (res) {
nascondiLoader();
var errorMessage = "Unexpected error";
if (res.status == 400) errorMessage = res.responseJSON.error;
$.notify({
message: " " + errorMessage,
}, {
type: 'danger',
allow_dismiss: true,
delay: 5000
});
}).always(function () {
//$('.request-quote').prop('disabled', false);
});
}
function showPickInfo(pickupKey) {
$(".pick-up-info").remove();
var pickup = null;
$(pickups).each(
function (index) {
if (pickups[index].pickupKey == pickupKey) pickup = pickups[index];
}
);
var pickupinfo = "";
if (pickup.name != null) pickupinfo += "
Name\u0020der\u0020Abholung: " + pickup.name + " ";
if (pickup.description != null) pickupinfo += "
Beschreibung: " + pickup.description + " ";
if (pickup.address != null) pickupinfo += "
Adresse: " + pickup.address + " ";
if (pickup.city != null) pickupinfo += "
Stadt: " + pickup.city + " ";
if (pickup.postcode != null) pickupinfo += "
POSTLEITZAHL: " + pickup.postcode + " ";
if (pickup.time != null) pickupinfo += "
Std: " + pickup.time + " ";
if (pickup.total != null) pickupinfo += "
Gesamtabholbetrag: " + pickup.total + " € ";
pickupinfo += "
";
$('.pickup-select').after(pickupinfo);
}
$('#calendar__month').on('change', function () {
var month = $(this).find(":selected").val();
var year = $('#calendar__year').find(":selected").val();
renderCalendar(month, year);
});
$('#calendar__year').on('change', function () {
var month = $('#calendar__month').find(":selected").val();
var year = $(this).find(":selected").val();
renderCalendar(month, year);
});
});