var arrivalRequest; var arrivalResult = null; var dstArrivalObj = null; var arrivalIndex = -1; var arrivalSelectedValue = null; var arrivalOk = false; var arrivalInput = null; var arrivalSrollVisible = false; var finalDeparture = null; var finalArrival = null; var finalRequest; function arrivalIn() { dstArrivalObj = document.getElementById('plecari'); clearTimeout(thread); hideDepartures(); // daca e scris ceva in inputul de sosiri in momentul in care ia focusul lansam thread-ul arrivalInput = document.getElementById('la'); if (arrivalInput.value != '') { if (thread != null) clearTimeout(thread); thread = setTimeout('doArrivalRequest()', 300); } } function arrivalOut() { clearTimeout(thread); hideArrivals(); } function arivalKeyUp(key) { hideDepartures(); arrivalInput = document.getElementById('la'); if (arrivalInput.value == '') {// daca e vid anulam call-ul si ascundem meniul clearTimeout(thread); hideArrivals(); return; } if ((key == 9) || (key == 13) || (key == 38) || (key == 40) || (key == 16)) // tab, enter, sageata sus, sageata jos, shift return true; if (thread != null) clearTimeout(thread); thread = setTimeout('doArrivalRequest()', 300); } function arrivalKeyDown(key) { hideDepartures(); arrivalInput = document.getElementById('la'); dstArrivalObj = document.getElementById('sosiri'); if (arrivalInput.value == '') {// daca e vid anulam call-ul si ascundem meniul clearTimeout(thread); hideArrivals(); } if ((key == 9) && (arrivalSelectedValue != null) && (arrivalOk)) { arrivalInput.value = arrivalSelectedValue; hideArrivals(); finish(); } if ((key == 13) && (arrivalSelectedValue != null) && (arrivalOk)) { arrivalInput.value = arrivalSelectedValue; hideArrivals(); finish(); } // daca meniul nu este vizibil nu tinem cont de sageata sus si sageata jos if (! arrivalSrollVisible) return true; if (key == 38) { if (arrivalIndex > 0) { arrivalIndex--; showArrivals(); buildArrivalTable(); } return true; } if (key == 40) { if (arrivalIndex < arrivalResult.arrivals.length - 1) { arrivalIndex++; showArrivals(); buildArrivalTable(); } return true; } } function doArrivalRequest() { if (arrivalInput.value == '') // daca e vid nu face call-ul return; departureInput = document.getElementById('dela'); try { if (window.XMLHttpRequest) arrivalRequest = new XMLHttpRequest(); else if (window.ActiveXObject) arrivalRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { return false; } arrivalRequest.onreadystatechange = waitArrivalResponse; arrivalRequest.open('GET', 'getsosiri.php?' + departureInput.name + '=' + replaceDiacritics(townMatch(departureInput.value)) + '&' + arrivalInput.name + '=' + replaceDiacritics(townMatch(arrivalInput.value)), true); arrivalRequest.send(''); return true; } function waitArrivalResponse() { if (arrivalRequest.readyState == 4) { if (arrivalRequest.status == 200) { arrivalResult = eval('(' + arrivalRequest.responseText + ')'); if (arrivalResult.arrivals.length == 0) { arrivalResult.arrivals[0] = 'Nici o cursă găsită!' arrivalOk = false; } else { arrivalOk = true; } arrivalIndex = 0; if (!((arrivalInput.value == '') || ((replaceDiacritics(townMatch(arrivalInput.value.toLowerCase())) == replaceDiacritics(arrivalResult.arrivals[0].toLowerCase())) && (arrivalResult.arrivals.length == 1)))) { showArrivals(); buildArrivalTable(); } // un singur raspuns, match perfect pe user input if ((replaceDiacritics(townMatch(arrivalInput.value.toLowerCase())) == replaceDiacritics(arrivalResult.arrivals[0].toLowerCase())) && (arrivalResult.arrivals.length == 1)) { hideArrivals(); finish(); } } } } function showArrivals() { if (dstArrivalObj == null) return; dstArrivalObj.style.top = '81px'; dstArrivalObj.style.left = $('#la').offset().left + 'px'; dstArrivalObj.style.visibility = 'visible'; dstArrivalObj.style.display = 'inline'; arrivalSrollVisible = true; } function hideArrivals() { if (dstArrivalObj == null) return; while (dstArrivalObj.rows.length > 0) dstArrivalObj.deleteRow(0); dstArrivalObj.style.visibility = 'hidden'; dstArrivalObj.style.display = 'none'; arrivalSrollVisible = false; arrivalSelectedValue = null; } function selectArrivalTableItem() { var color; if (arrivalOk) color = '#14a143'; else color = 'red'; for (var i = 0; i < dstArrivalObj.rows.length; i++) { var row = dstArrivalObj.rows[i]; var cell = row.cells[0]; if (i == arrivalIndex) { cell.style.color = 'white'; cell.style.backgroundColor = color; arrivalSelectedValue = arrivalResult.arrivals[i]; } else { cell.style.color = '#666666'; cell.style.backgroundColor = 'white'; } } } function getArrivalTableItemIndex(cell) { for (var i = 0; i < dstArrivalObj.rows.length; i++) { var row = dstArrivalObj.rows[i]; if (row.cells[0] == cell) return i; } } function buildArrivalTable() { while (dstArrivalObj.rows.length > 0) dstArrivalObj.deleteRow(0); if (arrivalResult == null) return; for (var i = 0; i < arrivalResult.arrivals.length; i++) { var row = dstArrivalObj.insertRow(i); var cell = row.insertCell(0); cell.innerHTML = arrivalResult.arrivals[i]; cell.onmousemove = function() { arrivalIndex = getArrivalTableItemIndex(this); selectArrivalTableItem(); } cell.onmousedown = function() { arrivalIndex = getArrivalTableItemIndex(this); selectArrivalTableItem(); if (arrivalOk) { arrivalInput.value = arrivalSelectedValue; finish(); } hideArrivals(); } } selectArrivalTableItem(); } function finish() { try { if (window.XMLHttpRequest) finalRequest = new XMLHttpRequest(); else if (window.ActiveXObject) finalRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { return false; } finalDeparture = townNameFormat(townMatch(replaceDiacritics(departureInput.value))); finalArrival = townNameFormat(townMatch(replaceDiacritics(arrivalInput.value))); finalRequest.onreadystatechange = doFinalRequest; finalRequest.open('GET', 'autocare.php?nmp=1&dela=' + finalDeparture + '&la=' + finalArrival, true); finalRequest.send(''); return true; } function doFinalRequest() { if (finalRequest.readyState == 4) { if (finalRequest.status == 200) { var content = document.getElementById('content'); content.innerHTML = finalRequest.responseText; document.title = 'Orarul curselor FANY de la ' + finalDeparture + ' la ' + finalArrival; var urlDeparture = finalDeparture.replace(/-/g, ' '); var urlArrival = finalArrival.replace(/-/g, ' '); var ajax_url = '/autocare-' + urlDeparture + '-' + urlArrival; var pageTracker = _gat._getTracker('UA-9627298-1'); pageTracker._trackPageview(ajax_url); // +1 code var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); } } }