<!--

var weekend = [6,7];
var weekendColor = "#E4EBF8";
var fontface = "Arial";
var fontsize = 1;


function show_calendar(p_item1, p_item1_value, p_item2, p_item2_value, p_item3, p_item3_value, p_mode) {
switch (p_mode) {
case "d": calDate = p_item1_value; break;
case "a": calDate = p_item2_value; break;
}
/*
if (p_item1_value == "")
{
calDate = dattmp;
}
*/
p_month = new String(calDate.substr(3,2))-1;
p_year = new String(calDate.substr(6,4));
p_format = "DD.MM.YYYY";

vWinCal = window.open("", "Calendar","width=220,height=240,status=no,resizable=no,top=290,left=600");
vWinCal.opener = self;
ggWinCal = vWinCal;

Build(p_item1, p_item1_value, p_item2, p_item2_value, p_item3, p_item3_value, p_mode, p_month, p_year, p_format);
}


var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;


// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item1, p_item1_value, p_item2, p_item2_value, p_item3, p_item3_value, p_mode, p_WinCal, p_month, p_year, p_format) {
	if ((p_month == null) && (p_year == null))	return;

	if (p_WinCal == null)
		this.gWinCal = ggWinCal;
	else
		this.gWinCal = p_WinCal;
	
	if (p_month == null) {
		this.gMonthName = null;
		this.gMonth = null;
		this.gYearly = true;
	} else {
		this.gMonthName = Calendar.get_month(p_month);
		this.gMonth = new Number(p_month);
		this.gYearly = false;
	}

	this.gYear = p_year;
	this.gFormat = p_format;
	this.gBGColor = "white";
	this.gFGColor = "black";
	this.gTextColor = "black";
	this.gHeaderColor = "black";
	this.gReturnItem1 = p_item1;
	this.gReturnItem2 = p_item2;
	this.gReturnItem3 = p_item3;
	this.gItem1Value = p_item1_value;
	this.gItem2Value = p_item2_value;
	this.gItem3Value = p_item3_value;
	this.gMode = p_mode;
}


Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;


function Calendar_get_month(monthNo) {
	return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
	/*
	Check for leap year ..
	1.Years evenly divisible by four are normally leap years, except for...
	2.Years also evenly divisible by 100 are not leap years, except for...
	3.Years also evenly divisible by 400 are leap years.
	*/
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0)
			return Calendar.DOMonth[monthNo];
	
		return Calendar.lDOMonth[monthNo];
	} else
		return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/*
	Will return an 1-D array with 1st element being the calculated month
	and second being the calculated year
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

function Calendar_print() {
	ggWinCal.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/*
	Will return an 1-D array with 1st element being the calculated month
	and second being the calculated year
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";
	
	// Begin Table Drawing code here..
	vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";
	
	vHeader_Code = this.cal_header();
	vData_Code = this.cal_data();
	vCode = vCode + vHeader_Code + vData_Code;
	
	vCode = vCode + "</TABLE>";
	
	return vCode;
}

Calendar.prototype.show = function() {
	var vCode = "";
	
	this.gWinCal.document.open();

	// Setup the page...
	this.wwrite("<html>");
	this.wwrite("<head><title>" + calentxt + "</title>");
	this.wwrite("</head>");

	this.wwrite("<body  style=\"width:210px\" " +
		"link=\"" + this.gLinkColor + "\" " +
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");

 // Show navigation buttons
	var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
	var prevMM = prevMMYYYY[0];
	var prevYYYY = prevMMYYYY[1];

	var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
	var nextMM = nextMMYYYY[0];
	var nextYYYY = nextMMYYYY[1];
	
	this.wwrite("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#E4EBF8'><TR>");

 // neu
	this.wwrite("<TD ALIGN=left>&nbsp;<A HREF=\"javascript:window.opener.Build('" 
		+ this.gReturnItem1 + "', '" + this.gItem1Value + "', '"
		+ this.gReturnItem2 + "', '" + this.gItem2Value + "', '"
		+ this.gReturnItem3 + "', '" + this.gItem3Value + "', '"
		+ this.gMode + "', '"
		+ prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "');\">" +
		"&laquo;<\/A></TD><TD align=center><FONT FACE='" + fontface + "' COLOR='#1861ad' SIZE=2><B>&nbsp;" + calmotxt + "</b></FONT></TD>");
	this.wwrite("<TD align=right><A HREF=\"javascript:window.opener.Build('" 
		+ this.gReturnItem1 + "', '" + this.gItem1Value + "', '"
		+ this.gReturnItem2 + "', '" + this.gItem2Value + "', '"
		+ this.gReturnItem3 + "', '" + this.gItem3Value + "', '"
		+ this.gMode + "', '"
		+ nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "');\">" +
		"&raquo;<\/A>&nbsp;</TD></TR></TABLE></FONT>");
	this.wwriteA("<BR><FONT FACE='" + fontface + "' SIZE=2><B>");
	this.wwriteA(this.gMonthName + " " + this.gYear);
	this.wwriteA("</B><BR>");

       // Get the complete calendar code for the month..
	vCode = this.getMonthlyCalendarCode();
	this.wwrite(vCode);

	this.wwrite("</font></body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
	var vCode = "";
	var i;
	var vr, vc, vx, vy;		// Row, Column, X-coord, Y-coord
	var vxf = 285;			// X-Factor
	var vyf = 200;			// Y-Factor
	var vxm = 10;			// X-margin
	var vym;				// Y-margin
	if (isIE) vym = 75;
	else if (isNav) vym = 25;
	
	this.gWinCal.document.open();

	this.wwrite("<html>");
	this.wwrite("<head><title>" + calentxt + "</title>");
	this.wwrite("<style type='text/css'>\n<!--");
	for (i=0; i<12; i++) {
		vc = i % 3;
		if (i>=0 && i<= 2)	vr = 0;
		if (i>=3 && i<= 5)	vr = 1;
		if (i>=6 && i<= 8)	vr = 2;
		if (i>=9 && i<= 11)	vr = 3;
		
		vx = parseInt(vxf * vc) + vxm;
		vy = parseInt(vyf * vr) + vym;

		this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
	}

	this.wwrite("-->\n</style>");
	this.wwrite("</head>");

	this.wwrite("<body style=\"width:210px\"" +
		"link=\"" + this.gLinkColor + "\" " +
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
	this.wwrite("Year : " + this.gYear);
	this.wwrite("</B><BR>");

	// Show navigation buttons
	var prevYYYY = parseInt(this.gYear) - 1;
	var nextYYYY = parseInt(this.gYear) + 1;
	
	this.wwrite("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" +
		"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" +
		"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\">>><\/A>]</TD></TR></TABLE><BR>");

	// Get the complete calendar code for each month..
	var j;
	for (i=11; i>=0; i--) {
		if (isIE)
			this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
		else if (isNav)
			this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

		this.gMonth = i;
		this.gMonthName = Calendar.get_month(this.gMonth);
		vCode = this.getMonthlyCalendarCode();
		this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
		this.wwrite(vCode);

		if (isIE)
			this.wwrite("</DIV>");
		else if (isNav)
			this.wwrite("</LAYER>");
	}

	this.wwrite("</font><BR></body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
	this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
	this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
	var vCode = "";
	vCode = vCode + "<TR>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>" + cdtxt1 + "&nbsp;</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>" + cdtxt2 + "&nbsp;</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>" + cdtxt3 + "&nbsp;</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>" + cdtxt4 + "&nbsp;</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>" + cdtxt5 + "&nbsp;</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>" + cdtxt6 + "&nbsp;</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>" + cdtxt7 + "&nbsp;</B></FONT></TD>";
       vCode = vCode + "</TR>";
	return vCode;
}

Calendar.prototype.cal_data = function() {
	var vDate = new Date();
	vDate.setDate(1);
	vDate.setMonth(this.gMonth);
	vDate.setFullYear(this.gYear);

	var vFirstDay=vDate.getDay();
	var vDay=1;
	var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
	var vOnLastDay=0;
	var vCode = "";

       if (vFirstDay == 0) {
         vFirstDay = 7;
       }

	/*
	Get day for the 1st of the requested month/year..
	Place as many blank cells before the 1st day of the month as necessary.
	*/

	vCode = vCode + "<TR>";
	for (i=1; i<vFirstDay; i++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
	}

	// Write rest of the 1st week
	for (j=vFirstDay; j<8; j++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +
			"<A HREF='#' onClick=\"";
		switch (this.gMode) {
		case "d":
		if (this.gItem2Value == "" || this.gItem3Value == "") {
		vCode = vCode +  "self.opener.document." + this.gReturnItem1 + ".value='" +
				this.format_data(vDay) + "';";
		}
		else {
		vCode = vCode +  "self.opener.document." + this.gReturnItem1 + ".value='" +
				this.format_data(vDay) + "';" +
				"self.opener.document." + this.gReturnItem2 + ".value='" +
				dbSetArrDateFromDepDate(this.format_data(vDay),this.gItem3Value) + "';";
		}
		break;
		case "a":
		if (this.gItem1Value == "" || this.gItem3Value == "") {
		vCode = vCode +  "self.opener.document." + this.gReturnItem2 + ".value='" +
				this.format_data(vDay) + "';";
		}
		else {
		vCode = vCode +  "self.opener.document." + this.gReturnItem2 + ".value='" +
				this.format_data(vDay) + "';" +
				"self.opener.document." + this.gReturnItem3 + ".value='" +
				dbSetDurFromArrDate(this.gItem1Value,this.format_data(vDay)) + "';";
		}
		break;
		}
		vCode = vCode + "window.close();\">" +
			 	this.format_day(vDay) +
			"</A>" +
			"</FONT></TD>";
		vDay=vDay + 1;
	}
	vCode = vCode + "</TR>";

	// Write the rest of the weeks
	for (k=2; k<7; k++) {
		vCode = vCode + "<TR>";

		for (j=1; j<8; j++) {
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" +
				"<A HREF='#' onClick=\"";
			switch (this.gMode) {
			case "d":
			if (this.gItem2Value == "" || this.gItem3Value == "") {
			vCode = vCode +  "self.opener.document." + this.gReturnItem1 + ".value='" +
					this.format_data(vDay) + "';";
			}
			else {
			vCode = vCode +  "self.opener.document." + this.gReturnItem1 + ".value='" +
					this.format_data(vDay) + "';" +
					"self.opener.document." + this.gReturnItem2 + ".value='" +
					dbSetArrDateFromDepDate(this.format_data(vDay),this.gItem3Value) + "';";
			}
			break;
			case "a":
			if (this.gItem1Value == "" || this.gItem3Value == "") {
			vCode = vCode +  "self.opener.document." + this.gReturnItem2 + ".value='" +
					this.format_data(vDay) + "';";
			}
			else {
			vCode = vCode +  "self.opener.document." + this.gReturnItem2 + ".value='" +
					this.format_data(vDay) + "';" +
					"self.opener.document." + this.gReturnItem3 + ".value='" +
					dbSetDurFromArrDate(this.gItem1Value,this.format_data(vDay)) + "';";
			}
			break;
			}
			vCode = vCode + "window.close();\">" +
					this.format_day(vDay) +
				"</A>" +
				"</FONT></TD>";
			vDay=vDay + 1;

			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}
		if (j == 7)
			vCode = vCode + "</TR>";
		if (vOnLastDay == 1)
			break;
	}
	
	// Fill up the rest of last week with proper blanks, so that we get proper square blocks
	for (m=1; m<(8-j); m++) {
		if (this.gYearly)
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
		else
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
	}
	
	return vCode;
}

Calendar.prototype.format_day = function(vday) {
       var vNowDay = new String(calDate.substr(0,2));
	var vNowMonth = p_month;
	var vNowYear = p_year;

	if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
		return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
	else
		return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
	var i;

	// Return special formatting for the weekend day.
	for (i=0; i<weekend.length; i++) {
		if (vday == weekend[i])
			return (" BGCOLOR=\"" + weekendColor + "\"");
	}
	
	return "";
}

Calendar.prototype.format_data = function(p_day) {
	var vData;
	var vMonth = 1 + this.gMonth;
	vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
	var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
	var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
	var vY4 = new String(this.gYear);
	var vY2 = new String(this.gYear.substr(2,2));
	var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

	switch (this.gFormat) {
		case "MM\/DD\/YYYY" :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
			break;
		case "MM\/DD\/YY" :
			vData = vMonth + "\/" + vDD + "\/" + vY2;
			break;
		case "MM-DD-YYYY" :
			vData = vMonth + "-" + vDD + "-" + vY4;
			break;
		case "DD.MM.YYYY" :
			vData = vDD + "." + vMonth + "." + vY4;
			break;
		case "MM-DD-YY" :
			vData = vMonth + "-" + vDD + "-" + vY2;
			break;
		case "DD\/MON\/YYYY" :
			vData = vDD + "\/" + vMon + "\/" + vY4;
			break;
		case "DD\/MON\/YY" :
			vData = vDD + "\/" + vMon + "\/" + vY2;
			break;
		case "DD-MON-YYYY" :
			vData = vDD + "-" + vMon + "-" + vY4;
			break;
		case "DD-MON-YY" :
			vData = vDD + "-" + vMon + "-" + vY2;
			break;
		case "DD\/MONTH\/YYYY" :
			vData = vDD + "\/" + vFMon + "\/" + vY4;
			break;
		case "DD\/MONTH\/YY" :
			vData = vDD + "\/" + vFMon + "\/" + vY2;
			break;
		case "DD-MONTH-YYYY" :
			vData = vDD + "-" + vFMon + "-" + vY4;
			break;
		case "DD-MONTH-YY" :
			vData = vDD + "-" + vFMon + "-" + vY2;
			break;
		case "DD\/MM\/YYYY" :
			vData = vDD + "\/" + vMonth + "\/" + vY4;
			break;
		case "DD\/MM\/YY" :
			vData = vDD + "\/" + vMonth + "\/" + vY2;
			break;
		case "DD-MM-YYYY" :
			vData = vDD + "-" + vMonth + "-" + vY4;
			break;
		case "DD-MM-YY" :
			vData = vDD + "-" + vMonth + "-" + vY2;
			break;
		default :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
	}

	return vData;
}

function Build(p_item1, p_item1_value, p_item2, p_item2_value, p_item3, p_item3_value, p_mode, p_month, p_year, p_format) {
	var p_WinCal = ggWinCal;
	gCal = new Calendar(p_item1, p_item1_value, p_item2, p_item2_value, p_item3, p_item3_value, p_mode, p_WinCal, p_month, p_year, p_format);

	// Customize your Calendar here..
	gCal.gBGColor="white";
	gCal.gLinkColor="black";
	gCal.gTextColor="black";
	gCal.gHeaderColor="darkgreen";

	// Choose appropriate show function
	if (gCal.gYearly)	gCal.showY();
	else	gCal.show();
}

/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar(p_item, p_year, p_format) {
	// Load the defaults..
	if (p_year == null || p_year == "")
		p_year = new String(gNow.getFullYear().toString());
	if (p_format == null || p_format == "")
		p_format = "DD.MM.YYYY";

	var vWinCal = window.open("", "Calendar", "scrollbars=yes");
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, null, p_year, p_format);
}


function checkDate(form_name, element_name, type_of_date, show_error)
{
//Eingabedatum prüfen und ergänzen
var input_field; //Eingabefeld
var output_field; //Ausgabefeld
var date_tab; //Array mit den Datumsteilen day/month/year
var day; //Variable für den Tag
var month; //Variable für den Monat
var year; //Variable für das Jahr
var day_str; //Stringvariable für den Tag
var month_str; //Stringvariable für den Monat
var year_str; //Stringvariable für das Jahr
var today = new String(sapdate); //Heutiges Datum
var compdate; //Prüfvariable für Datumsvergleich
var maxday; //Prüfvariable für den Tag des Monats

input_field = document.forms[form_name].elements[element_name].value; //Wert aus Eingabefeld in Browser übernehmen
if (input_field.length > 0)
{
date_tab = input_field.split("."); //Zerlegen des Eingabefeld in Array nach Trennzeichen(.)
switch (date_tab.length) //Verarbeitung je nach Art der Eingabe
{
case 1: //Eingabe ohne Punkte
day = new Number(date_tab[0].substr(0, 2));
month = new Number(date_tab[0].substr(2, 2));
year = new Number(date_tab[0].substr(4));
break;
case 3: //Eingabe mit 2 Punkten
day = new Number(date_tab[0]);
month = new Number(date_tab[1]);
year = new Number(date_tab[2]);
break;
default: //Alles andere ist fehlerhaft
if (show_error == "X")
{
alert(text1); //Fehlermeldung
document.forms[form_name].elements[element_name].focus();
}
return "X";
}
//Prüfen, ob eines der drei Datumselemente keinen gültigen Zahlenwert (Nummer) enthält, dann Abbruch
if (isNaN(year) || isNaN(month) || isNaN(day))
{
if (show_error == "X")
{
alert(text1); //Fehlermeldung
document.forms[form_name].elements[element_name].focus();
}
return "X";
}
if (day < 10)
{
day_str = new String("0" + day);
}
else
{
day_str = new String(day);
}
if (month < 10)
{
month_str = new String("0" + month);
}
else
{
month_str = new String(month);
}
if (year == 0) //Jahr nicht angegeben
{
year = new Number(today.substr(0, 4));
compdate = new String(year + month_str + day_str) //Prüfstring zusammenstellen
switch (type_of_date) //Umsetzung je nach Art des Datums
{
case "+": //Datum muss in Zukunft liegen, z.B. Abreisedatum
if (compdate < today) //Datum darf nicht in der Vergangenheit liegen
{
year += 1;
}
break;
case "-": //Datum muss in Vergangenheit liegen, z.B. Geburtsdatum
if (compdate > today) //Datum darf nicht in der Zukunft liegen
{
year -= 1;
}
break;
}
}
if (year < 100) //Umsetzung Jahreszahl, wenn zweistellig eingegeben
{
switch (type_of_date) //Umsetzung je nach Art des Datums
{
case "+": //Datum muss in Zukunft liegen, z.B. Abreisedatum
year += 2000;
break;
case "-": //Datum muss in Vergangenheit liegen, z.B. Geburtsdatum
year += 2000;
compdate = new String(year + month_str + day_str) //Prüfstring zusammenstellen
if (compdate > today) //Datum darf nicht in der Zukunft liegen
{
year -= 100;
}
break;
}
}
year_str = new String(year)
if (year < 1000 || year > 9999) //Wenn Jahreszahl nicht vierstellig Abbruch
{
if (show_error == "X")
{
alert(text4); //Fehlermeldung
document.forms[form_name].elements[element_name].focus();
}
return "X";
}
if (month < 1 || month > 12) //Wenn Monat kleiner als 1 oder grösser als 12 Abbruch
{
if (show_error == "X")
{
alert(text3); //Fehlermeldung
document.forms[form_name].elements[element_name].focus();
}
return "X";
}
//Anzahl Tage im Monat bestimmen
if (month == 4 || month == 6 || month == 9 || month == 11) //Gültigen Wert für Monate 4, 6, 9, 11 auf 30 Tage setzen
{
maxday = 30;
}
else //Gültiger Wert für alle anderen Monate
{
maxday = 31;
}
if (month == 2) //Gültigen Wert für Februar auf 28 Tage setzen und Schaltjahrprüfung
{
maxday = 28;
if (year %4== 0) //Wenn Jahreszahl glatt durch 4 teilbar, dann Schaltjahr, Februar auf 29 Tage setzen
{
maxday += 1;
}
if (year %100== 0) //Wenn Jahreszahl glatt durch 100 teilbar, dann kein Schaltjahr, zurück auf 28 Tage
{
maxday -= 1;
}
if (year %400== 0) //Wenn Jahreszahl glatt durch 400 teilbar, dann doch Schaltjahr, zurück auf 29 Tage
{
maxday += 1;
}
}
if (day < 1 || day > maxday) //Wenn Tag kleiner als 1 oder größer als max. Monatstag Abbruch
{
if (show_error == "X")
{
alert(text2); //Fehlermeldung
document.forms[form_name].elements[element_name].focus();
}
return "X";
}
output_field = day_str + "."  + month_str + "." + year_str; //Ausgabefeld zusammenstellen
document.forms[form_name].elements[element_name].value = output_field; //Ausgabefeld in Browser zurückstellen
}
}

function checkDepDate(form_name, element_name)
{
var input_field

error = checkDate(form_name, element_name, "+", "X");
if (error != "X")
{
input_field = document.forms[form_name].elements[element_name].value;
if (input_field.length == 0)
{
alert(text5);
document.forms[form_name].elements[element_name].focus();
}
}
}

function checkArrDate(form_name, element_name)
{
var input_filed

error = checkDate(form_name, element_name, "+", "X");
if (error != "X")
{
input_field = document.forms[form_name].elements[element_name].value;
if (input_field.length == 0)
{
alert(text6);
document.forms[form_name].elements[element_name].focus();
}
}
}

function setArrDateFromDepDate(form_name, element_dep_name, element_arr_name, element_dur_name, type_of_date)
{
var input_field_dep;
var input_field_dur;
var output_field_arr;
var error;
var new_date;
var new_day;
var new_month;
var new_year;

error = checkDate(form_name, element_dep_name, type_of_date, "X");
if (error != "X")
{
input_field_dep = document.forms[form_name].elements[element_dep_name].value;
if (input_field_dep.length == 0)
{
alert(text5);
document.forms[form_name].elements[element_dep_name].focus();
return;
}
input_field_dur = document.forms[form_name].elements[element_dur_name].value;
new_date = new Date(input_field_dep.substr(6,4),input_field_dep.substr(3,2) - 1, input_field_dep.substr(0,2));
new_date.setDate(new_date.getDate() + parseInt(input_field_dur));
			
new_month = new_date.getMonth() + 1;
new_day = new_date.getDate();
new_year = new_date.getFullYear();

output_field_arr = new_day + "."  + new_month + "." + new_year;
document.forms[form_name].elements[element_arr_name].value = output_field_arr;

error = checkDate(form_name, element_arr_name, type_of_date, "");
}
}

function setArrDateFromDur(form_name, element_dep_name, element_arr_name, element_dur_name, type_of_date)
{
var input_field_dep;
var input_field_arr;
var input_field_dur;
var output_field_arr;
var error;
var new_date;
var new_day;
var new_month;
var new_year;

error = checkDate(form_name, element_dep_name, type_of_date, "");
if (error != "X")
{
error = checkDate(form_name, element_arr_name, type_of_date, "");
if (error != "X")
{
input_field_dep = document.forms[form_name].elements[element_dep_name].value;
input_field_arr = document.forms[form_name].elements[element_arr_name].value;
input_field_dur = document.forms[form_name].elements[element_dur_name].value;
if (input_field_dep.length > 0 && input_field_arr.length > 0)
{
if (isNaN(input_field_dur) || input_field_dur.length == 0)
{
alert(text10);
document.forms[form_name].elements[element_dur_name].focus();
return;
}
new_date = new Date(input_field_dep.substr(6,4), input_field_dep.substr(3,2) - 1, input_field_dep.substr(0,2));
new_date.setDate(new_date.getDate() + parseInt(input_field_dur));
			
new_month = new_date.getMonth() + 1;
new_day = new_date.getDate();
new_year = new_date.getFullYear();

output_field_arr = new_day + "."  + new_month + "." + new_year;
document.forms[form_name].elements[element_arr_name].value = output_field_arr;

error = checkDate(form_name, element_arr_name, type_of_date, "");
}
}
}
}

function setDurFromArrDate(form_name, element_dep_name, element_arr_name, element_dur_name, type_of_date)
{
var input_field_dep;
var input_field_arr;
var output_field_dur;
var error;
var date_field_dep;
var date_field_arr;

error = checkDate(form_name, element_arr_name, type_of_date, "X");
if (error != "X")
{
error = checkDate(form_name, element_dep_name, type_of_date, "");
if (error != "X")
{
input_field_dep = document.forms[form_name].elements[element_dep_name].value;
input_field_arr = document.forms[form_name].elements[element_arr_name].value;
if (input_field_arr.length == 0)
{
alert(text6);
document.forms[form_name].elements[element_arr_name].focus();
return;
}
if (input_field_dep.length > 0)
{
date_field_dep = new Date(input_field_dep.substr(6,4),input_field_dep.substr(3,2) - 1, input_field_dep.substr(0,2)); 
date_field_arr = new Date(input_field_arr.substr(6,4),input_field_arr.substr(3,2) - 1, input_field_arr.substr(0,2)); 

output_field_dur = Math.round(Math.abs(date_field_arr - date_field_dep) / (1000 * 60 * 60 * 24 ));

document.forms[form_name].elements[element_dur_name].value = output_field_dur;
}
}
}
}

function dbSetArrDateFromDepDate(dep_date, duration)
{
var input_field_dep;
var input_field_dur;
var output_field_arr;
var new_date;
var new_day;
var new_month;
var new_year;

input_field_dep = dep_date;
input_field_dur = duration;
new_date = new Date(input_field_dep.substr(6,4),input_field_dep.substr(3,2) - 1, input_field_dep.substr(0,2));
new_date.setDate(new_date.getDate() + parseInt(input_field_dur));
			
new_day = new_date.getDate();
new_month = new_date.getMonth() + 1;
new_year = new_date.getFullYear();

new_day = (new_day.toString().length < 2) ? "0" + new_day : new_day;
new_month = (new_month.toString().length < 2) ? "0" + new_month : new_month;

output_field_arr = new_day + "."  + new_month + "." + new_year;
return output_field_arr;
}

function dbSetDurFromArrDate(dep_date, arr_date)
{
var input_field_dep;
var input_field_arr;
var output_field_dur;
var date_field_dep;
var date_field_arr;

input_field_dep = dep_date;
input_field_arr = arr_date;

date_field_dep = new Date(input_field_dep.substr(6,4),input_field_dep.substr(3,2) - 1, input_field_dep.substr(0,2)); 
date_field_arr = new Date(input_field_arr.substr(6,4),input_field_arr.substr(3,2) - 1, input_field_arr.substr(0,2)); 

output_field_dur = Math.round(Math.abs(date_field_arr - date_field_dep) / (1000 * 60 * 60 * 24 ));
return output_field_dur;
}

//-->