var slAirportNames = [ ['AMS', 'Amsterdam (AMS)'], ['ATH', 'Atene (ATH)'], ['BCN', 'Barcelona (BCN)'], ['BHX', 'Birmingham (BHX)'], ['BRU', 'Bruselj (BRU)'], ['OTP', 'Bukarešta (OTP)'], ['DUB', 'Dublin (DUB)'], ['VIE', 'Dunaj (VIE)'], ['FRA', 'Frankfurt (FRA)'], ['IST', 'Istanbul (IST)'], ['KBP', 'Kijev (KBP)'], ['CPH', 'Kobenhaven (CPH)'], ['LJU', 'Ljubljana (LJU)'], ['LGW', 'London (LGW)'], ['MAN', 'Manchester (MAN)'], ['SVO', 'Moskva (SVO)'], ['MUC', 'München (MUC)'], ['OHD', 'Ohrid (OHD)'], ['OSL', 'Oslo (OSL)'], ['CDG', 'Pariz (CDG)'], ['TGD', 'Podgorica (TGD)'], ['PRN', 'Priština (PRN)'], ['SJJ', 'Sarajevo (SJJ)'], ['SKP', 'Skopje (SKP)'], ['ARN', 'Stockholm (ARN)'], ['TIA', 'Tirana (TIA)'], ['WAW', 'Varšava (WAW)'], ['ZRH', 'Zürich (ZRH)'] ]; var enAirportNames = [ ['AMS', 'Amsterdam (AMS)'], ['ATH', 'Athens (ATH)'], ['BCN', 'Barcelona (BCN)'], ['BHX', 'Birmingham (BHX)'], ['BRU', 'Brussels (BRU)'], ['OTP', 'Bucharest (OTP)'], ['CPH', 'Copenhagen (CPH)'], ['DUB', 'Dublin (DUB)'], ['FRA', 'Frankfurt (FRA)'], ['IST', 'Istanbul (IST)'], ['KBP', 'Kiev (KBP)'], ['LJU', 'Ljubljana (LJU)'], ['LGW', 'London (LGW)'], ['MAN', 'Manchester (MAN)'], ['SVO', 'Moscow (SVO)'], ['MUC', 'Munich (MUC)'], ['OHD', 'Ohrid (OHD)'], ['OSL', 'Oslo (OSL)'], ['CDG', 'Paris (CDG)'], ['TGD', 'Podgorica (TGD)'], ['PRN', 'Pristina (PRN)'], ['SJJ', 'Sarajevo (SJJ)'], ['SKP', 'Skopje (SKP)'], ['ARN', 'Stockholm (ARN)'], ['TIA', 'Tirana (TIA)'], ['VIE', 'Vienna (VIE)'], ['WAW', 'Warsaw (WAW)'], ['ZRH', 'Zurich (ZRH)'] ]; var airportRelations = [ ['AMS', ['IST', 'KBP', 'LJU', 'TGD', 'PRN', 'SJJ', 'SKP', 'TIA']], ['ATH', ['BRU', 'LJU', 'ARN']], ['BCN', ['BRU', 'VIE', 'LJU', 'MUC', 'PRN', 'SJJ', 'SKP', 'TIA']], ['BHX', ['LJU', 'SKP']], ['BRU', ['ATH', 'BCN', 'IST', 'KBP', 'LJU', 'OHD', 'OTP', 'TGD', 'PRN', 'SJJ', 'SKP', 'TIA']], ['OTP', ['AMS', 'BRU', 'CPH', 'FRA', 'LJU', 'LGW', 'MUC', 'CDG', 'OSL', 'ARN', 'VIE', 'ZRH']], ['DUB', ['LJU']], ['VIE', ['BCN', 'FRA', 'IST', 'KBP', 'LJU', 'OHD', 'TGD', 'PRN', 'SJJ', 'SKP', 'TIA']], ['FRA', ['VIE', 'IST', 'KBP', 'LJU', 'OHD', 'OSL', 'TGD', 'PRN', 'SJJ', 'SKP', 'TIA']], ['IST', ['AMS', 'BRU', 'VIE', 'FRA', 'KBP', 'CPH', 'LJU', 'SVO', 'MUC', 'CDG', 'WAW', 'ZRH']], ['KBP', ['AMS', 'BRU', 'VIE', 'FRA', 'IST', 'LJU', 'MUC', 'OHD', 'CDG']], ['CPH', ['IST', 'LJU', 'OHD', 'PRN', 'SJJ', 'SKP', 'TIA']], ['LJU', ['AMS', 'ATH', 'BCN', 'BHX', 'BRU', 'OTP', 'DUB', 'VIE', 'FRA', 'IST', 'KBP', 'CPH', 'LGW', 'MAN', 'SVO', 'MUC', 'OHD', 'OSL', 'CDG', 'TGD', 'PRN', 'SJJ', 'SKP', 'ARN', 'TIA', 'WAW', 'ZRH']], ['LGW', ['LJU', 'PRN', 'SJJ', 'SKP', 'TIA']], ['MAN', ['LJU']], ['SVO', ['IST', 'LJU', 'MUC', 'OHD', 'SKP']], ['MUC', ['BCN', 'IST', 'KBP', 'LJU', 'SVO', 'OHD', 'TGD', 'PRN', 'SJJ', 'SKP', 'TIA']], ['OHD', ['BRU', 'VIE', 'FRA', 'KBP', 'CPH', 'LJU', 'SVO', 'MUC', 'CDG', 'WAW', 'ZRH']], ['OSL', ['FRA', 'LJU', 'PRN', 'SJJ', 'SKP', 'TIA']], ['CDG', ['IST', 'KBP', 'LJU', 'OHD', 'TGD', 'PRN', 'SJJ', 'SKP', 'TIA']], ['TGD', ['AMS', 'BRU', 'VIE', 'FRA', 'LJU', 'MUC', 'CDG', 'ZRH']], ['PRN', ['AMS', 'BCN', 'BRU', 'VIE', 'FRA', 'CPH', 'LJU', 'LGW', 'MUC', 'OSL', 'CDG', 'ARN', 'ZRH']], ['SJJ', ['AMS', 'BCN', 'BRU', 'VIE', 'FRA', 'CPH', 'LJU', 'LGW', 'MUC', 'OSL', 'CDG', 'ARN', 'WAW', 'ZRH']], ['SKP', ['AMS', 'BCN', 'BHX', 'BRU', 'VIE', 'FRA', 'CPH', 'LJU', 'LGW', 'SVO', 'MUC', 'ARN', 'OSL', 'CDG', 'WAW', 'ZRH']], ['ARN', ['LJU', 'ATH', 'PRN', 'SJJ', 'SKP', 'TIA']], ['TIA', ['AMS', 'BCN', 'BRU', 'VIE', 'FRA', 'CPH', 'LJU', 'LGW', 'MUC', 'OSL', 'CDG', 'ARN', 'ZRH']], ['WAW', ['IST', 'LJU', 'OHD', 'SJJ', 'SKP']], ['ZRH', ['IST', 'LJU', 'OHD', 'TGD', 'PRN', 'SJJ', 'SKP', 'TIA']] ]; var slDayNames = ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota']; var enDayNames = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; // boky: kaj pa veliki ponedeljek? // glej {@link com.parsek.time.TimeUtils} v parsek-util, predvsem metode // isWorkingDay // isHoliday // getNextWorkingDay var holidays = [ [0, 1], [0, 2], [1, 8], [3, 27], [4, 1], [4, 2], [5, 25], [7, 15], [9, 31], [10, 1], [11, 25], [11, 26] ]; displayAirports = function(elmParam, prefix) { var elm = elmParam; if (elm == null) { elm = document.getElementById(prefix + 'DeparturesB'); if (elm != null) { for (var m = 0, n = nullAirportNames.length; m < n; m++) { var airport = nullAirportNames[m][0]; var option = document.createElement('option'); option.value = airport; option.innerHTML = nullAirportNames[m][1]; elm.appendChild(option); } } } var rets = document.getElementById(prefix + 'Returns'); if (rets != null) { var airports = rets.getElementsByTagName('option'); for (var i = airports.length - 1, j = 0; i > j; i--){ rets.removeChild(airports[i]); } var value = elm.value; for (var i = 0, j = airportRelations.length; i < j; i++) { var relation = airportRelations[i]; if (relation[0] == value) { var relations = relation[1].toString(); for (var m = 0, n = nullAirportNames.length; m < n; m++) { var airport = nullAirportNames[m][0]; if (relations.indexOf(airport) > -1) { var option = document.createElement('option'); option.value = airport; option.innerHTML = nullAirportNames[m][1]; rets.appendChild(option); } } break; } } } }; moveDate = function(date) { date.setDate(date.getDate() + 1); date.setHours(10); date.setMinutes(0); date.setSeconds(0); date.setMilliseconds(0); return date; }; isHoliday = function(date) { var month = date.getMonth(); var day = date.getDate(); for (var i = 0, j = holidays.length; i < j; i++) { var holiday = holidays[i]; var month1 = holiday[0]; var day1 = holiday[1]; if (month == month1 && day == day1) return true; } return false; }; isWeekend = function(date) { var weekDay = date.getDay(); var hours = date.getHours(); return (weekDay == 0 || weekDay == 6 || (weekDay == 5 && hours >= 18)); }; setDate = function() { var date = new Date(); while (isWeekend(date) || isHoliday(date)) date = moveDate(date); return date; }; selectMonth = function(date, prefix, num) { var selectOption = '' + date.getFullYear() + (date.getMonth() < 10 ? '0' + date.getMonth() : date.getMonth()); var months = document.getElementById(prefix + 'Month' + num).childNodes; for (var k = 0, l = months.length; k < l; k++) { var option = months[k]; if (option.selected) option.selected = false; if (option.value == selectOption) option.selected = 'selected'; } }; displayDays = function(num, prefix, addSevenDays) { var monthElm = document.getElementById(prefix + 'Month' + num); if (monthElm != null) { var date = setDate(); var thisMonth = '' + date.getMonth(); var thisYear = '' + date.getFullYear(); var today = date.getDate(); var month = monthElm.value; var year = month.substring(0, 4); month = month.substring(4, month.length); if (month.startsWith('0')) month = month.substring(1, month.length); date.setDate(1); date.setFullYear(year); date.setMonth(month); var day = document.getElementById(prefix + 'Day' + num); var days = day.getElementsByTagName('option'); var selectedDay = day.value; if (selectedDay == 0) selectedDay = today; if (addSevenDays) { var sd = Number(selectedDay); sd += 7; date.setDate(sd); if (date.getMonth() > Number(thisMonth) || date.getFullYear() > Number(thisYear)) { selectMonth(date, prefix, num); month = date.getMonth(); today = date.getDate(); } selectedDay = '' + date.getDate(); date.setDate(1); } for (var i = days.length - 1, j = 0; i >= j; i--){ day.removeChild(days[i]); } var filter = month == thisMonth && year == thisYear; while (month == date.getMonth()) { if ((filter && date.getDate() >= today) || !filter) { var option = document.createElement('option'); option.value = date.getDate(); option.innerHTML = date.getDate(); if (date.getDate() == selectedDay) option.selected = 'selected'; day.appendChild(option); } date.setDate(date.getDate() + 1); } displayDayName(num, prefix); } }; displayDayName = function(num, prefix) { var date = new Date(); var month = document.getElementById(prefix + 'Month' + num).value; var year = month.substring(0, 4); month = month.substring(4, month.length); if (month.startsWith('0')) month = month.substring(1, month.length); date.setDate(1); date.setFullYear(year); date.setMonth(month); var day = document.getElementById(prefix + 'Day' + num).value; date.setDate(day); document.getElementById(prefix + 'DayName' + num).innerHTML = nullDayNames[date.getDay()]; }; var returnFlight = true; toggleReturnDates = function(prefix) { var ret = document.getElementById(prefix + 'TripTypeR'); var one = document.getElementById(prefix + 'TripTypeO'); var elm = document.getElementById(prefix + 'Returndates'); if (ret != null && ret.checked) { elm.style.display = 'block'; returnFlight = true; } else if (one != null && one.checked) { elm.style.display = 'none'; returnFlight = false; } }; toggleFareType = function(elm, prefix) { var schedule = document.getElementById('fareType'); var price = document.getElementById('fpFareType'); var searchPage = document.getElementById('searchPage'); var fromPage = document.getElementById('fromPage'); if (elm.value == 'price') { price.style.display = 'inline'; schedule.style.display = 'none'; searchPage.value = 'FP'; fromPage.value = 'ADVS'; } else if (elm.value == 'schedule') { price.style.display = 'none'; schedule.style.display = 'inline'; searchPage.value = 'SD'; fromPage.value = 'ADVSSD'; } }; togglePassengerInfo = function() { var obj = document.getElementById('tooltip'); if (obj != null) { if (obj.style.display == null || obj.style.display == '' || obj.style.display == 'none') obj.style.display = 'block'; else obj.style.display = 'none'; } }; var errorID = ''; var lastErrorID = ''; checkAirports = function(prefix) { var depValue = document.getElementById(prefix + 'DeparturesB').value; var retValue = document.getElementById(prefix + 'Returns').value; if (depValue == '' || retValue == '') { errorID = 'AirportsError' return false; } return true; }; getDateForCheckDates = function(prefix, num, fieldPrefix) { var month = document.getElementById(prefix + 'Month' + num).value; var year = month.substring(0, 4); month = month.substring(4, month.length); if (month.startsWith('0')) month = month.substring(1, month.length); var day = document.getElementById(prefix + 'Day' + num).value; var hours = document.getElementById(prefix + 'Hours' + num).value; if (hours != 'ANY') hours = hours.substring(0, 2); var date = new Date(); date.setDate(1); date.setFullYear(year); date.setMonth(month); date.setDate(day); if (hours != 'ANY') { date.setHours(hours); date.setMinutes(0); date.setSeconds(0); date.setMilliseconds(0); } else { date.setHours(23); date.setMinutes(59); date.setSeconds(59); date.setMilliseconds(999); } if (prefix == 'timetable') { if (day.length == 1) day = '0' + day; var m = (new Number(month) + 1) + ''; if (m.length == 1) m = '0' + m; var h = 'ANY' == hours ? '0000' : hours + '00'; document.getElementById(fieldPrefix + '_DATE').value = year + m + day + h; document.getElementById(fieldPrefix + '_Month').value = year + m; document.getElementById(fieldPrefix + '_Day').value = day; document.getElementById(fieldPrefix + '_Time').value = 'ANY' == hours ? hours : hours + '00'; if ('ANY' == hours) document.getElementById(fieldPrefix + '_ANY_TIME').value = 'TRUE'; } return date; }; checkDates = function(prefix) { var now = setDate(); var date1 = getDateForCheckDates(prefix, 1, 'B'); var date2 = getDateForCheckDates(prefix, 2, 'E'); var ret = document.getElementById(prefix + 'TripTypeR'); var one = document.getElementById(prefix + 'TripTypeO'); if (date1 <= now) { errorID = 'DateError1' return false; } else if (date1 >= date2 && (returnFlight && ret.checked)) { errorID = 'DateError2' return false; } return true; }; checkPersons = function(prefix) { var adults = new Number(document.getElementById(prefix + 'Adults').value); var children = new Number(document.getElementById(prefix + 'Children').value); var infants = new Number(document.getElementById(prefix + 'Infants').value); if (adults < 1 && children > 0) { errorID = 'ChildrenError'; return false; } else if (adults < 1 && infants > 0) { errorID = 'InfantsError1'; return false; } else if (adults < infants) { errorID = 'InfantsError2'; return false; } else if (adults < 1) { errorID = 'AdultsError'; return false; } else if (adults + children > 9) { errorID = 'PersonsError'; return false; } return true; }; bookingStartSubmit = function(prefix) { lastErrorID = errorID; var check = false; var form = document.getElementById(prefix + 'Form'); if (prefix == 'timetable') { check = checkAirports(prefix) && checkDates(prefix); } else { check = checkAirports(prefix) && checkDates(prefix) && checkPersons(prefix); } if (check) { if (lastErrorID != '') { document.getElementById(prefix + lastErrorID).style.display = 'none'; } if (form != null) { var searchPage = document.getElementById('searchPage'); var action = searchPage.value == 'FP' ? 'FlexPricerAvailability' : 'AirAvailabilityforFP'; var oldAction = form.action; var actionEnd = oldAction.indexOf('.action'); var actionStart = oldAction.firstIndexOfBackwards('/', actionEnd); var part = oldAction.substring(0, actionStart + 1); if(!part.endsWith("/")) { part += "/"; } form.action = part + action + oldAction.substring(actionEnd, oldAction.length); form.submit(); } } else { if (lastErrorID != '') document.getElementById(prefix + lastErrorID).style.display = 'none'; document.getElementById(prefix + errorID).style.display = 'block'; } }; submitForm = function(prefix) { lastErrorID = errorID; var check = false; var form = document.getElementById(prefix + 'Form'); if (prefix == 'timetable') check = checkAirports(prefix) && checkDates(prefix); else check = checkAirports(prefix) && checkDates(prefix) && checkPersons(prefix); if (check) { if (lastErrorID != '') document.getElementById(prefix + lastErrorID).style.display = 'none'; if (form != null) form.submit(); } else { if (lastErrorID != '') document.getElementById(prefix + lastErrorID).style.display = 'none'; document.getElementById(prefix + errorID).style.display = 'block'; } }; getCoord = function(e) { var xcoord = 0; var ycoord = 0; if (!e) { if (window.event) { //DOM e = window.event; } else { //TOTAL FAILURE, WE HAVE NO WAY OF REFERENCING THE EVENT return; } } if (typeof( e.pageX ) == 'number') { //NS 4, NS 6+, Mozilla 0.9+ xcoord = e.pageX; ycoord = e.pageY; } else { if (typeof( e.clientX ) == 'number') { //IE, Opera, NS 6+, Mozilla 0.9+ //except that NS 6+ and Mozilla 0.9+ did pageX ... xcoord = e.clientX; ycoord = e.clientY; if (!( ( window.navigator.userAgent.indexOf('Opera') + 1 ) || ( window.ScriptEngine && ScriptEngine().indexOf('InScript') + 1 ) || window.navigator.vendor == 'KDE' )) { if (document.body && ( document.body.scrollLeft || document.body.scrollTop )) { //IE 4, 5 & 6 (in non-standards compliant mode) xcoord += document.body.scrollLeft; ycoord += document.body.scrollTop; } else if (document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop )) { //IE 6 (in standards compliant mode) xcoord += document.documentElement.scrollLeft; ycoord += document.documentElement.scrollTop; } } } else { //TOTAL FAILURE, WE HAVE NO WAY OF OBTAINING THE //MOUSE COORDINATES return; } } var object = document.getElementById("tooltip"); if (object != null) { object.style.left = xcoord + 15 + "px"; object.style.top = ycoord + 15 + "px"; } }; formInit = function() { displayDays(1, 'booking', false); displayDays(2, 'booking', true); toggleReturnDates('booking'); displayDays(1, 'timetable', false); displayDays(2, 'timetable', true); toggleReturnDates('timetable'); displayAirports(null, 'booking'); displayAirports(null, 'timetable'); }; queueEvent = function(ev, fn) { if (typeof(fn) != 'function') return; var ofn = (window['on' + ev]) ? window['on' + ev] : function() { }; window['on' + ev] = function() { ofn(); fn(); } }; queueEvent('load', formInit); document.onmousemove = getCoord;