<!--
/* 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, language){
	popUpWindow(path+"/"+language+"cartina.htm","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){
	var getcDate = eval("document.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)
{
	
	var getcDate = eval("document.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){
	var wDayOri = eval("document.formular.wDayExt"+journeyType+".value;");
	var wDay = eval("document.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 wDay = eval("document.formular.wDayExt"+journeyType+".value;");
	var getcDate = eval("document.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("document.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 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("document.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;
}

//-->

