<!--
/* HAFAS BASIC - External Javascript (based on: R4 v1.9)         */
/* v1.0  created May 2002 by MB supported by Anton & Friedrich   */
/* v1.9  changed 25.09.2002 - latest R4 version                  */
/* v2.0  changed 24.10.2002 - locType can be 'LIST' or 'RADIO'   */
/* v2.1  changed 13.11.2002 - function popUp administrates also  */
/*       new style 'loc' to replace formerly function openInfo   */
/* Select stations from history-list */


function useHistory(varselect, currentLocation, selectLocType) {
	var index = eval("document.forms[0]." + varselect + "select.selectedIndex;");
	var text  = eval("document.forms[0]." + varselect + "select.options[index].text;");
	var type  = eval("document.forms[0]." + varselect + "select.options[index].value;");
	if(type=="x") {
		eval("document.forms[0]." + varselect + "select.options[0].selected=true;");
	}
	else {
		/* Set Location Name */
		eval("document.forms[0].REQ0JourneyStops" + currentLocation + "G.value = text;");
		if(type==7) {
			var ttc = 0;
		}
		else if(type==1) {
			var ttc = 1;
		}
		else if(type==2) {
			var ttc = 2;
		}
		else if(type==4) {
			var ttc = 3;
		}
		//var test = eval("document.forms[0].REQ0JourneyStops"+currentLocation+"A.length";);
		
		if(selectLocType == "LIST") {
			eval("document.forms[0].REQ0JourneyStops" + currentLocation + "A.selectedIndex = ttc;");
		}
		else if(selectLocType == "RADIO") {
			eval("document.forms[0].REQ0JourneyStops" + currentLocation + "A[ttc].checked = true;");
		}
	}
	/* Reset select list*/
	eval("document.forms[0]." + varselect + "select.selectedIndex = 0;");
}


function cartina(path) {
	popUpWindow(path,"Tester", "loc", 100, 100, 640, 390)
}

/* Link to open a popup-window with any content */
function popUp(url, windowname) {
	popUpWindow(url, windowname, "std", 100, 100, 500, 400);
}

/* Link to open a popup-window with any content */
function popUpStyle(url, windowname, style) {
	popUpWindow(url, windowname, style, 100, 100, 500, 400);
}

/* Function to open a popup-window with any content */
function popUpWindow(url, title, style, topPosition, leftPosition, width, height) {
	var scrollbar = ",scrollbars=yes,";
	var standard = ",resizable=no,status=no,toolbar=no,menubar=no,location=no";
	if (style=="pro" || style=="int" || style=="sef") {
		scrollbar = "scrollbars=yes";
		width = 600;
		height = 500;
	}
	else if (style=="poi") {
		scrollbar = ",scrollbars=yes,";
	}
	else if (style=="pri") {
		scrollbar = ",scrollbars=yes,";
	}
	else if (style=="cms") {
		scrollbar = ",scrollbars=yes,";
	}
	else if (style=="loc") {
		scrollbar = ",scrollbars=no,";
	}
	else if (style== "profile") {
		var size = ",scrollbars=no,";
	}

	var layout = "top=" + topPosition + ",left=" + leftPosition + standard + "" + scrollbar + ",width=" + width + ",height=" + height;

	newwin = window.open(url, title, layout);
	newwin.focus(self);
}

/* Show Calendar or Servicedays in Popup */
function openCalendar(url, windowname, journeystatus) {
	var standard = "scrollbars=no,resizable=no,status=no,toolbar=no,menubar=no,location=no";
	if (windowname == "Verkehrstage") {
		var size = ",width=320,height=420";
	} else {
		var size = ",width=320,height=360";
	}
	newwin = window.open(url,windowname + "" + journeystatus, standard + "" + size);
	newwin.creator = self;
}

/* Set Date by JavaScript */
function getjsDate(type) {
	var ndate = new Date();
	var t = ndate.getDate();
	var m = 1 + (1 * ndate.getMonth());
	var g = "g" + ndate.getYear();
	var j = g.substring(3, 5);
	if(t < 10) {
		t = "0" + t;
	}
	if(m < 10) {
		m = "0" + m;
	}
	if(j < 10) {
		j = "0" + 1 * j;
	}
	if(type=="full") {
		var date = t + "." + m + "." + j;
		return date;
	}
	else {
		var date = new Array(t, m, j);
		return date;
	}
}

function checkWeekday(count, journeyType, returnDateOnly) {
	formular = document.getElementById("formular");
	var getcDate = eval("formular.REQ" + journeyType + "JourneyDate.value.toLowerCase();");
	if(getcDate == "") {
		var nix = 0;
	}
	/* Abfrage auf '+' ben&#246;tigt ??? */
	else if((getcDate.length > 2) || (getcDate.indexOf("+") != -1)) { 
		changeDate(count,journeyType,returnDateOnly);
	}
	else{
		doWeekday(journeyType, getcDate, returnDateOnly);
	}
}

function useOutwardDate(wDay) {
	formular = document.getElementById("formular");
	var getcDate = eval("formular.REQ0JourneyDate.value.toLowerCase();");
	var reg = eval("/^ *(" + wDay + ")\, */");
	var cDate = getcDate.replace(reg, "");
	//var date = cDate.split(".");
	var t = (cDate.substring(0,cDate.indexOf(".")));
	var m = (cDate.substring((cDate.indexOf(".")+1), cDate.lastIndexOf(".")));
	var j = (cDate.substring((cDate.lastIndexOf(".")+1), cDate.length));
	var date = new Array(t, m, j);
	return date;
}

function doWeekday(journeyType, getcDate, returnDateOnly) {
	formular = document.getElementById("formular");
	var wDayOri = eval("formular.wDayExt" + journeyType + ".value;");
	var wDay = eval("formular.wDayExt" + journeyType + ".value.toLowerCase();");
	if(journeyType == 0 && returnDateOnly == "yes") {
		var dateField = getjsDate('field');
	}
	else if(journeyType == 1 && returnDateOnly == "yes"){
		var dateField = useOutwardDate(wDay);
	}
	else {
		var dateField = getjsDate('field');
	}
	var reg = eval("/^ *(" + wDay + ") */");
	var test = getcDate.match(reg);
	if(test != null) {
		var days = getDaysSince1980((1 * ("20" + dateField[2])), (1 * dateField[1]), (1 * dateField[0]));
		var cwd = (wDay.substr((3 * (1 * days % 7)), 2));
		var nwd = test[0];
		var nwdidx  = (wDay.indexOf(test[0]) / 3);
		var cwdidx  = (wDay.indexOf(cwd) / 3);
		if(nwdidx < cwdidx) {
			nwdidx = nwdidx + 7 - cwdidx;
		}
		else{
			nwdidx = nwdidx - cwdidx;
		}
		var newDay = nwdidx;
		var gDate = gregDate(1 * newDay + 1 * (getDaysSince1980((1 * ("20" + dateField[2])), (1 * dateField[1]), (1 * dateField[0]))));
		var days = (1 *+ newDay + 1 * getDaysSince1980((1 * ("20" + dateField[2])), (1 * dateField[1]), (1 * dateField[0])));
		setNewDate(journeyType, gDate, getcDate, wDayOri, days);
	}
}

/* Get and Calculate new date */
function changeDate(count, journeyType, returnDateOnly) {
	var formular = document.getElementById("formular");
	var wDay = eval("formular.wDayExt" + journeyType + ".value;");
	var getcDate = eval("formular.REQ" + journeyType + "JourneyDate.value;");
	var reg = eval("/^ *(" + wDay + ")\, */");
	if(getcDate == "" && journeyType == 1 && returnDateOnly == "no") {
		var getcDate = getjsDate('full');
	}
	if(getcDate == "" && journeyType == 1 && returnDateOnly == "yes") {
		var getcDate = eval("formular.REQ0JourneyDate.value;");
	}
	var cDate = getcDate.replace(reg, "");
	var ctg = 1 * (cDate.substring(0, cDate.indexOf(".")));
	var cmt = 1 * (cDate.substring((cDate.indexOf(".") + 1), cDate.lastIndexOf(".")));
	var cjr = (cDate.substring((cDate.lastIndexOf(".") + 1), cDate.length));
	if(ctg == "" || cmt == "" || cjr == "") {
		/* NIX */
	}
	else {
		if(cjr.length == 4) {
			cjr = cjr.substring(2, 4);
		}
		var gDate = gregDate(1 * count + 1 * (getDaysSince1980((1 * ("20" + cjr)), cmt, ctg)));
		var days = (1 * count + 1 * (getDaysSince1980((1 * ("20" + cjr)), cmt, ctg)));
		setNewDate(journeyType, gDate, cDate, wDay, days);
	}
}

function setNewDate(journeyType, gDate, cDate, wDay, days) {
	var formular = document.getElementById("formular");
	var nwd = (wDay.substr((3 * (1 * days % 7)), 2));
	if(gDate[0] < 10) {
		gDate[0] = "0" + gDate[0];
	}
	if(gDate[1] < 10) {
		gDate[1] = "0" + gDate[1];
	}
	var nDate = nwd + ", " + gDate[0] + "." + gDate[1] + "." + gDate[2];
	if(nDate.indexOf("NaN") != -1) {
		var nDate = cDate;
	}
	eval("formular.REQ" + journeyType + "JourneyDate.value =\"" + nDate + "\";");
}

function getDaysSince1980(y, m, d) {
	var daysInMonth = new Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
	var returnDays = (y - 1980) * 365;
	returnDays += (y - 1980 + 3) / 4;
	returnDays += daysInMonth[m - 1];
	if(m > 2 && isLeapYear(y) == true) {
		returnDays ++;
	}
	returnDays += d;
	returnDays = parseInt(returnDays);
	return returnDays;
}

function isLeapYear(y) {
	if((y % 4) == 0 && (y % 100) != 0 || (y % 400) == 0) {
		return true;
	}
}

function gregDate(daysSince1980) {
	var daysSince1980 = parseInt(daysSince1980);
	var daysInMonth = new Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
	var daysInYear = 366;
	var years = 0;
	var february_29;
	var n = 11;
	if(daysSince1980 < 0) {
		daysSince1980 = 0;
	}
	while(daysSince1980> daysInYear) {
		years ++;
		daysSince1980 -= daysInYear;
		if((years % 4) == 0) {
			daysInYear = 366;
		}
		else {
			daysInYear = 365;
		}
	}
	if((years % 4) == 0 && daysSince1980 >= 60) {
		february_29 = true;
		daysSince1980 --;
	} else {
		february_29 = false;
	}
	while(n > 0 && daysInMonth[n] >= daysSince1980) {
		n--;
	}
	if(february_29 == true && daysSince1980 == 59) {
		daysSince1980 ++;
	}
	var d = (daysSince1980 - daysInMonth[n]);
	var m = n + 1;
	var ty = (years + 1980).toString();
	var y = ty.substring(2, 4);
	var gDate = new Array(d, m, y);
	return gDate;
}
//-->
