// variable to en-/disable debug // set to 1 to enable debug log var DEBUG; // xmlhttp object function function getHTTPObject() { // debug log if (DEBUG === 1) {console.log("xml http object function");} var xhr; // check for availibility if xmlhttprequest object if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if(window.ActiveXObject) { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } return xhr; } // ajax call function function ajaxCall(dataUrl, outputElement, callback, responseType) { // debug log if (DEBUG === 1) {console.log("ajax function");} // get the xmlhttp object which is supported var request = getHTTPObject(); outputElement.innerHTML = "Lade Daten ..."; request.onreadystatechange = function() { if(request.readyState === 4 && request.status === 200) { //save ajax response if (responseType === "json") { var response = JSON.parse(request.responseText); } else if (responseType === "xml") { var response = request.responseXML; } else { var response = request.responseText; } // check if callback is a function if(typeof callback === "function") { callback(response); } } }; request.open("get", dataUrl, true); request.send(null); } // wrap all in anonymous function to get out of global scope (function() { // debug log if (DEBUG === 1) {console.log("anonymous function");} // server url var origin = window.location.origin.indexOf("www.goodcleanfun.de"); if (origin === -1) { var serverUrl = "http://goodcleanfun.de/cgi-bin/"; } else { var serverUrl = "http://www.goodcleanfun.de/cgi-bin/"; } // get the search form var searchForm = document.getElementById("search-form"); // haltestelle object var haltestelle = { getInfo : function(event) { // debug log if (DEBUG === 1) {console.log("getInfo function");} // prevent submit default behaviour event.preventDefault(); // get output area var target = document.getElementById("output"); var hstName = document.getElementById("q").value; var hstUrl = encodeURI(serverUrl + "abfahrtsmonitor.py?ort=dresden&hst=" + hstName); ajaxCall(hstUrl, target, function(data) { // debug log if (DEBUG === 1) {console.log("received data: " + data);} data = data.replace(/\],\[/gi, '#'); data = data.replace(/\(.+?\)/gi, ''); data = data.replace('ß', 'ss'); data = data.replace(/<(.+?)>/gi, '$1'); data = data.slice(3,-3).split("#"); // debug log if (DEBUG === 1) {console.log("parsed data: " + data);} var i; var y; var htmlOutput; var dataLength = data.length; // generate table header htmlOutput = ""; htmlOutput += ""; htmlOutput += ""; htmlOutput += ""; htmlOutput += ""; htmlOutput += ""; // generate table entries for (i = 0; i < dataLength; i++) { htmlOutput += ""; var entry = data[i].split(","); // debug log if (DEBUG === 1) {console.log("part " + i + " of parsed data: " + entry);} for (y = 0; y < 3; y++) { // debug log if (DEBUG === 1) {console.log("part " + y + ": " + entry[y]);} htmlOutput += ""; } htmlOutput += ""; } // close table htmlOutput += "
LinieRichtungAbfahrt
" + entry[y].slice(1,-1) + "
"; // print table into web page target.innerHTML = htmlOutput; }, "text"); } }; //event listeners searchForm.addEventListener("submit", haltestelle.getInfo, false); })(); // end of anonymous function