var _resultAddress = "http://bahn.erfurter-bahn.de/auskunft/view.php5?";
//var _resultAddress = "http://192.168.1.36/de.marcus.erfurtbahn.web/view.php5?";
var _addressStack = new Array();
var _addressStackPosition = -1;

// JavaScript Document
function handleStationChange(target) {
	var bhf = target.options[target.selectedIndex].value;
	if(bhf != "0")
		loadByStation(bhf);
	else
		handleStationCloser();
}

function loadByStation(stationId) {
	new Ajax.Request(_resultAddress + "bhf=" + stationId, {
		onSuccess: handleLoadStations
	});
}

function loadByTrain(trainId) {
	new Ajax.Request(_resultAddress + "zug=" + trainId, {
		onSuccess: handleLoadStations
	});
}

function showStations(response) {
	var content = response.responseText;	
	var match = content.match(/\<body\>((\n|.)*?)\<\/body\>/i);
	if(match != null && match.length > 0)
		content = match[1];
	var div = document.createElement("div");
	div.id = "overlay";
	div.innerHTML = content;
	var oldDiv = $("overlay");
	if(oldDiv)
		document.getElementsByTagName("body")[0].removeChild(oldDiv);
	document.getElementsByTagName("body")[0].appendChild(div);

	if($('overlay_closer')) {
		Event.observe($('overlay_closer'), 'click', handleStationCloser, false);
	}
	if($('overlay_reloader')) {
		Event.observe($('overlay_reloader'), 'click', reloadCurrent, false);
	}
	if($('overlay_forward')) {
		if(_addressStack[_addressStackPosition + 1] != null)
			Event.observe($('overlay_forward'), 'click', handleStationForward, false);
		else  {
			$('overlay_forward').style.opacity = 0.3;
			$('overlay_forward').style.filter = "alpha(opacity=" + (0.3*100) + ")";
		}
	}
	if($('overlay_backward')) {
		if(_addressStackPosition - 1 >= 0)
			Event.observe($('overlay_backward'), 'click', handleStationBackward, false);
		else {
			$('overlay_backward').style.opacity = 0.3;
			$('overlay_backward').style.filter = "alpha(opacity=" + (0.3*100) + ")";
		}
	}
}

function handleLoadStations(response) {
	_addressStack[ ++ _addressStackPosition] = response.request.url;
	_addressStack[_addressStackPosition + 1] = null; // Den folgenden immer auf null setzen, break point :)
	showStations(response);
}

function reload(url) {
	new Ajax.Request(url, {
		onSuccess: showStations
	});
}

function reloadCurrent() {
	if(_addressStack[_addressStackPosition] != null) {
		reload(_addressStack[_addressStackPosition]);
	}
}

function handleStationBackward() {
	if(_addressStackPosition - 1 >= 0) {
		reload(_addressStack[ -- _addressStackPosition]);
	}
}

function handleStationForward() {
	if(_addressStack[_addressStackPosition + 1] != null) {
		reload(_addressStack[ ++ _addressStackPosition]);
	}
}

function handleStationCloser() {
	document.getElementsByTagName("body")[0].removeChild($("overlay"));
}
