//UDMv3.6.2

var exclude=true; var agt=navigator.userAgent.toLowerCase();var ie=false; var ie4=false; var ie5=false; var op5=false; var konqi=false;if (typeof document.all!="undefined"&&(agt.indexOf('msie')!=-1)){ie=true; ie4=true; exclude=false;if (agt.indexOf('msie 4')==-1){ie5=true; ie4=false;}if (agt.indexOf('opera')!=-1){ie=false; ie4=false; ie5=false; op5=true;}}var ns6=false; var mz7=false;if (typeof document.getElementById!="undefined"&&!ie){ns6=true; exclude=false;if (agt.indexOf('netscape6')==-1){ns6=false; mz7=true;}if (typeof window.opera!="undefined"){mz7=false; op5=true;}else if (agt.indexOf('gecko')==-1){mz7=false; exclude=true;}}if (agt.indexOf('opera 4')!=-1){op5=false; mz7=false; exclude=true;}var ns4=false;if ((agt.indexOf('mozilla')!=-1)&&(parseInt(navigator.appVersion)>=4)&&!ie&&!op5&&!ns6&&!mz7){ns4=true; exclude=false;}if (agt.indexOf('webtv')!=-1){ie=false; ie4=false; exclude=true;}var win=false; var mac=false; var lin=false;if (agt.indexOf('win')!=-1){win=true; mac=false; lin=false;}else if (agt.indexOf('mac')!=-1){win=false; mac=true; lin=false;}else{win=false; mac=false; lin=true;}if (typeof navigator.vendor!="undefined"){if (navigator.vendor =="KDE"){ie=false;ie4=false;ie5=false;konqi = true;ns6=true;ns4 = false;exclude = false;var thisKDE=agt;var splitKDE=thisKDE.split("konqueror/");var aKDE=splitKDE[1].split("; ");var KDEn=parseFloat(aKDE[0]);var oldKde=false;if(KDEn<2.2){oldKde=true;exclude=true;ns6=false;konqi=false;}}}var op6=false;if((agt.indexOf("opera 6")!=-1)||(agt.indexOf("opera/6")!=-1)){op6=true;op5=false;}var ie6=false;if(ie5&&agt.indexOf("msie 6")!=-1){ie6=true;}var dcm,com;if(ie6){dcm=document.compatMode;com=false;if(dcm!="BackCompat"){com=true;}}var ice=false;if(typeof navigator.__ice_version!="undefined"){ice=true; ie=false; ie5=false; ie4=true; ns4=false;}var ns7=false;if(agt.indexOf("netscape/7")!=-1){mz7=false; ns6=true; ns7=true;}if(agt.indexOf("opera/3")!=-1){ie4=false;ice=false;op5=false;exclude=true;}if(agt.indexOf("opera 4")!=-1){ns4=false;exclude=true;}var mu="mu";var m=0;var sm=0;var cm=0;var sp=0;var mI=new Array;var sP=new Array;var sI=new Array;var cP=new Array;var rcP=new Array;var cI=new Array;var relPad;var mainRel=false;var subRel=false;function addMainItem(ma,mb,mc,md,me,mf,mg,mh,mi,mj,mk,ml,mm){sm=0;if(menuALIGN=="virtual"){ma="";mb="";mc=10;md="";me="";mf="";mg=0;mh=0;mi="";mj="";mk="";ml="";mm="";}else{if(!mb||mb==""){mb="&nbsp;";}while(mb.indexOf('<BR>')!=-1){mb=mb.replace('<BR>','<br>');}while(mb.indexOf('<Br>')!=-1){mb=mb.replace('<Br>','<br>');}while(mb.indexOf('<br />')!=-1){mb=mb.replace('<br />','<br>');}if(!mc||mc==""){mc="left";}if(!md||md==""){md="left";}if(!me||me==""){me="_self";}if((win&&ie5)&&(typeof fSIZE=="string")&&menuALIGN!="free"){while(mb.indexOf('<br>')!=-1){mb=mb.replace('<br>',' ');}mainRel=true;if(m==0){relPad='<span style="width:'+(tINDENT*2)+'px">';if(com){relPad+='<img width='+(tINDENT*2)+' height=1 alt="" border=0>';}relPad+='</span>';}if(md=="left"){mb=mb+relPad;}if(md=="right"){mb=relPad+mb;}if(md=="center"){mb=relPad+mb+relPad;}}if(!mf||mf==""||altDISPLAY==""){mf="none";if(ie5){mf="";}}if(!mg){mg=0;}if(!mh){mh=0;}if(!mi||mi==""||mi=="c"||mi=="C"){mi="-";}if(mi!="-"){mi=mi.toLowerCase();}if(!mj){mj="";}if(!mk){mk="";}if(!ml){ml="";}if(!mm){mm="";}}mI[m]=new Array(ma,mb,mc,md,me,mf,mg,mh,mi,mj,mk,ml,mm);m++;};function defineSubmenuProperties(spa,spb,spc,spd,spe,spf,spg,sph,spi,spj,spk,spl){if(!ie5){spa+=(sbSIZE*2);}if(!spb||spb==""){spb="left";}if(!spc||spc==""){spc="left";}if(!spd){spd=0;}if(!spe){spe=0;}if(!spf){spf="";}if(!spg){spg="";}if(!sph){sph="";}if(!spi){spi="";}if(!spj){spj="";}if(!spk){spk="";}if(!spl){spl="";}sP[(m-1)]=new Array(spa,spb,spc,spd,spe,spf,spg,sph,spi,spj,spk,spl);if(sm==0){sI[(m-1)]=new Array; cP[(m-1)]=new Array; rcP[(m-1)]=new Array; cI[(m-1)]=new Array;}};function addSubmenuItem(sma,smb,smc,smd){cm=0;var sme=true;if(sme&&sma=="~"){sme=false;if(!ie5&&!ie4&&!ns6&&!mz7&&!op5){sma="";}smc="";}if(!sma||sma==""){sma="#";}if(!smb||smb==""){smb="&nbsp;";}while(smb.indexOf('<BR>')!=-1){smb=smb.replace('<BR>','<br>');}while(smb.indexOf('<Br>')!=-1){smb=smb.replace('<Br>','<br>');}while(smb.indexOf('<br />')!=-1){smb=smb.replace('<br />','<br>');}if(((win&&ie5)||mz7||ns6)&&(typeof sfSIZE=="string")&&menuALIGN!="free"){if(m==1&&sm==0){subRel=true;relPad='<span style="width:'+(stINDENT*3)+'px">';if(com||mz7||ns6){relPad+='<img width='+(stINDENT*3)+' height=1 alt="" border=0>';}relPad+='</span>';}if(sP[(m-1)][2]=="left"){smb=smb+relPad;}if(sP[(m-1)][2]=="right"){smb=relPad+smb;}if(sP[(m-1)][2]=="center"){smb=relPad+smb+relPad;}}if(!smc||smc==""){smc="_self";}if(sma=="#"||sma=="~"){smc="_self";}if(!smd||smd==""||altDISPLAY==""){smd="none";if(ie5){smd="";}}sI[(m-1)][sm]=new Array(sma,smb,smc,smd,sme);sm++;};function defineChildmenuProperties(cpa,cpb,cpc,cpd,cpe,cpf,cpg,cph,cpi,cpj,cpk,cpl){if(!ie5){cpa+=(sbSIZE*2);}if(!cpb||cpb==""){cpb="left";}if(!cpc||cpc==""){cpc="left";}if(!cpd){cpd=0;}if(!cpe){cpe=0;}if(!cpf){cpf="";}if(!cpg){cpg="";}if(!cph){cph="";}if(!cpi){cpi="";}if(!cpj){cpj="";}if(!cpk){cpk="";}if(!cpl){cpl="";}cP[(m-1)][(sm-1)]=new Array(cpa,cpb,cpc,cpd,cpe,cpf,cpg,cph,cpi,cpj,cpk,cpl);rcP[(m-1)][(sm-1)]=new Array(cpa,cpb,cpc,cpd,cpe,cpf,cpg,cph,cpi,cpj,cpk,cpl);cI[(m-1)][(sm-1)]=new Array;};function addChildmenuItem(cma,cmb,cmc,cmd){var cme=true;if(cma&&cma=="~"){cme=false;if(!ie5&&!ie4&&!ns6&&!mz7&&!op5){cma="";}cmc="";}if(!cma||cma==""){cma="#";}if(!cmb||cmb==""){cmb="&nbsp;";}while(cmb.indexOf('<BR>')!=-1){cmb=cmb.replace('<BR>','<br>');}while(cmb.indexOf('<Br>')!=-1){cmb=cmb.replace('<Br>','<br>');}while(cmb.indexOf('<br />')!=-1){cmb=cmb.replace('<br />','<br>');}if(((win&&ie5)||mz7||ns6)&&(typeof sfSIZE=="string")&&menuALIGN!="free"){if(cP[(m-1)][(sm-1)][2]=="left"){cmb=cmb+relPad;}if(cP[(m-1)][(sm-1)][2]=="right"){cmb=relPad+cmb;}if(cP[(m-1)][(sm-1)][2]=="center"){cmb=relPad+cmb+relPad;}}if(!cmc||cmc==""){cmc="_self";}if(cma=="#"||cma=="~"){cmc="_self";}if(!cmd||cmd==""||altDISPLAY==""){cmd="none";if(ie5){cmd="";}}cI[(m-1)][(sm-1)][cm]=new Array(cma,cmb,cmc,cmd,cme);cm++;}var keepSubLIT=true;var chvOFFSET=0;var chhOFFSET=-5;var openTIMER=0;var closeTIMER=330;var cellCLICK=true;var aCURSOR="hand";var remoteTRIGGERING=false;var altDISPLAY="";var allowRESIZE=true;var redGRID=false;var gridWIDTH=0;var gridHEIGHT=0;var documentWIDTH=0;var hideSELECT=false;var allowForSCALING=false;function activateMenu(){}function remoteTrigger(rts){if(exclude||remoteTRIGGERING||menuALIGN=="virtual"){return false;}if(ie4||ie5||ns6||mz7){if(typeof mainCell!="undefined"){mainCell(rts,false);}if(ie&&hideSELECT){hideSelects();}}if(ns4||op5||(op6&&((typeof oR[1][rts]!="undefined"&&oR[1][rts].style.visibility=="hidden")))){oM(rts,false);}return true;};
/////////////////////////////////
// custom window opening function
var nUrl,nW,nH;
var nWin=new Array;
var nw=0;
function openWindow(nUrl,nW,nH){
nWin[nw] = open(nUrl, "","width="+nW+",height="+nH+",status=yes,scrollbars=no,scrolling=no,toolbar=no,menubar=no,location=no,resizable=yes");
nw++;
}
/////////////////////////////////



/////////////////////////////////
// Skripte für den Duisport Kalkulatoren
function replaceSubstring(inputString, fromString, toString) {
   // Goes through the inputString and replaces every occurrence of fromString with toString
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { // If the string being replaced is not a part of the replacement string (normal situation)
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { // String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      // Find a string that doesn't exist in the inputString to be used
      // as an "inbetween" string
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      } // Keep on going until we build an "inbetween" string that doesn't exist
      // Now go through and do two replaces - first, replace the "fromString" with the "inbetween" string
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      // Next, replace the "inbetween" string with the "toString"
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } // Ends the check to see if the string being replaced is part of the replacement string or not
   return temp; // Send the updated string back to the user
} // Ends the "replaceSubstring" function

/////////////////////////////////
// runden auf volle ganze Zahl

function roundit(what) {
	what = replaceSubstring(what, ",",".");	
	var xx = what.indexOf('.')
	
	if (xx == -1) { 
		ganz = what		
	}
	else { 
		var ganz = what.substr(0,xx);
		if(what.substr(xx,5) > 0 ) ganz = (ganz*1) + 1;
	}
	theNo = ganz
	return(theNo)
}
/////////////////////////////////
// Skripte für Bahnfrachtrechner

function bahnfrachtrechner() {
	
	var MindestBeitrag = 19.94;
	
	Gewicht = parseFloat(window.document.berechnung.FormGewicht.value);
	Beitrag = parseFloat(window.document.berechnung.FormBeitrag[document.berechnung.FormBeitrag.selectedIndex].value);
	
	Wagen = parseFloat(window.document.berechnung.FormWagen.value);

	if (Gewicht == 0 ) { k = 0; Beitrag = MindestBeitrag;}
	else if (Gewicht <= 17 ) { k = 1; Beitrag = MindestBeitrag;}
	else if (Gewicht == 18 ) { k = 0.821; }
	else if (Gewicht == 19 ) { k = 0.846; }
	else if (Gewicht == 20 ) { k = 0.872; }
	else if (Gewicht == 21 ) { k = 0.898; }
	else if (Gewicht == 22 ) { k = 0.923; }
	else if (Gewicht == 23 ) { k = 0.949; }
	else if (Gewicht == 24 ) { k = 0.974; }
	else if (Gewicht == 25 ) { k = 1; }
	else if (Gewicht > 25 ) { k = ((Gewicht - 25) * 0.04) + 1; }
		
	if (!Wagen) {
		document.berechnung.FormWagen.value = 1; 
		Wagen = 1;
	}
	GesamtBeitrag = Beitrag * k;

	ergebnis = parseFloat(Math.round(GesamtBeitrag*100)/100);
	if( ergebnis < MindestBeitrag)
		document.berechnung.FormErgebnis.value = runden(MindestBeitrag * Wagen); 
	else {
		ergebnis = parseFloat(Math.round(GesamtBeitrag * 100 * Wagen)/100);
		document.berechnung.FormErgebnis.value = runden(ergebnis);
	}
}


/////////////////////////////////
// Skripte für Ufergeldrechner

function ufergeldrechner() {
	
	//Gewicht = parseFloat(window.document.berechnung.FormGewicht.value);
	Gewicht = roundit(window.document.berechnung.FormGewicht.value);
	Beitrag = parseFloat(window.document.berechnung.FormBeitrag[document.berechnung.FormBeitrag.selectedIndex].value);

	GesamtBeitrag = Gewicht * Beitrag;
	ergebnisgesamt = Math.round(GesamtBeitrag*100)/100;
	document.berechnung.FormErgebnis.value = runden(parseFloat(ergebnisgesamt));

}

/////////////////////////////////
// Skripte für Hafengeldrechner

function hafengeldrechner() {
	var dat = new Date();
	//var dat_dev = new Date("July 1,2003");
	var dat_dev = new Date("January 1,2007");
	
	//	alert(dat_dev.getTime());
	//	alert(dat.getTime());
	if (dat.getTime() > dat_dev.getTime()) {
		// Tarife neu
		var tarif_4411 = "1.63";
		var tarif_4412 = "4.90";
		var tarif_4413 = "9.00";
		var tarif_4414 = "10.75";
	}	
	else {
		// Tarife alt
		var tarif_4411 = "1.58";
		var tarif_4412 = "4.75";
		var tarif_4413 = "8.70";
		var tarif_4414 = "10.45";
	}

		a_tag = document.calc.dd.value
		a_monat = document.calc.mm.value
		a_jahr = document.calc.jahr1.value
		a_hh = document.calc.FormUhrzeitAnkunftStunden.value
		a_mm = document.calc.FormUhrzeitAnkunftMinuten.value
		b_tag = document.calc.ddAbfahrt.value
		b_monat = document.calc.mmAbfahrt.value
		b_jahr = document.calc.jahr1Abfahrt.value
		b_hh = document.calc.FormUhrzeitAbfahrtStunden.value
		b_mm = document.calc.FormUhrzeitAbfahrtMinuten.value
/////////////// Differenz berechnen 
		diff = Tage_von_bis(a_tag,a_monat,a_jahr,a_hh,a_mm,b_tag,b_monat,b_jahr,b_hh,b_mm)
		//alert('Diff '+diff)
	
	var Tragfaehigkeit = window.document.calc.FormTragfaehigkeit.value
	var buffer = Tragfaehigkeit/100;
	ergebnis = 0;
	TragfaehigkeitFaktor = String(buffer).split(".");
	
	if (TragfaehigkeitFaktor[1]){
		if (TragfaehigkeitFaktor[1].substring(0,1) > 4) { TragfaehigkeitFaktor[0] = Number(TragfaehigkeitFaktor[0])+1; }
	}


	//alert ('TragfaehigkeitFaktor'+TragfaehigkeitFaktor[0])
	Umschlag = window.document.calc.FormUmschlag.value
	//mit der gerundeten Tragfaehigkeit weiterrechnen
	Tragfaehigkeit = TragfaehigkeitFaktor[0]*100;
	//alert(Tragfaehigkeit);
	//alert ('Umschlag'+Umschlag)
	if (Number(Umschlag) >= 0) {
		UmschlagAnteil = ((Number(Umschlag)/Number(Tragfaehigkeit))* 100);
		//alert ('UmschlagAnteil '+parseFloat(UmschlagAnteil))
		//if ( document.calc.wochentag.value != "Sonntag") {
			if ((UmschlagAnteil <= 25) && (diff == 1)){
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4411;
			}
			else if ((UmschlagAnteil <= 50) && (diff >= 1) && (diff < 4)){
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4412;
			}
			else if ((UmschlagAnteil > 50) && (diff >= 1) && (diff < 4)){
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4413;
			}
			else if ((diff > 3) && (diff < 11)){
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4414;
			}
			else if ((diff > 10)){
				alert ("Die Berechnung erfolgt nur für Aufenthalte bis 10 Kalendertagen")
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4414;
			}

//		}
	}
	else {

		//alert ('UmschlagAnteil '+parseFloat(UmschlagAnteil))
		if ( document.calc.wochentag.value != "Sonntag") {
			if ((a_hh == b_hh) && (a_mm < b_mm))
				diff = (Number(diff) + 1);
			else if (a_hh < b_hh)
				diff = (Number(diff) + 1);

			if (diff == 1){
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4411;
			}
			else if ((diff > 1) && (diff < 4)){
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4412;
			}
			else if ((diff > 3) && (diff < 11)){
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4414;
			}
			else if ((diff > 10)){
				alert ("Die Berechnung erfolgt nur für Aufenthalte bis 10 Kalendertagen")
				ergebnis = TragfaehigkeitFaktor[0] * tarif_4414;
			}
		}

	}
	ergebnis = parseFloat(Math.round(ergebnis*100)/100);
	document.calc.FormErgebnisHafen.value = runden(ergebnis);

}

/////////////////////////////////
// Skripte zum runden

function runden(x) {
	var k = (Math.round(x * 100) / 100).toString();
	k += (k.indexOf('.') == -1)? '.00' : '00';
	var p = k.indexOf('.'), m = k.indexOf('-.');
	var f = (p == 0 || m == 0)? '0,' : ',';
	return k.substring(0, p) + f + k.substring(p+1, p+3);
}

/////////////////////////////////
// Skripte für Duisport Kalkulatoren zur Datumsberechnung

var Tage_pro_Monat = new Array (31,28,31,30,31,30,31,31,30,31,30,31);
var WochenTage     = new Array ("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
var Meldungstext   = "Keine Datumsberechnungen vor Christi.";

function Melden(Meldetext) {
     if (Meldetext != "") alert(" Problem: "+Meldetext);
}

function ist_Schaltjahr(jahr) {
   if (jahr % 4 == 0)
      if (jahr < 1582)
         return 1;
      else if (!(jahr % 100 == 0))
              return 1;
           else if (jahr % 400 == 0)
                   return 1;
   return 0;
}

function Tage_pro_Jahr(jahr) {
   if (jahr == 1582)
      return 355;
   else
      return 365 + ist_Schaltjahr(jahr);
}

function Tag_des_Jahres(tag,monat,jahr) {
   var Tage = 0;

   /* Februar hat im Schaltjahr 29 Tage      */
   Tage_pro_Monat[1] = 28 + ist_Schaltjahr(jahr);

   if (tag <= Tage_pro_Monat[monat-1]) {
	for (var i=0; i < monat-1; i++) {
          Tage = Tage + Tage_pro_Monat[i];
	}
   }
   Tage = Number(Tage) + Number(tag);

   /* Bei Kalenderreform 10 Tage weggefallen */
   if ((jahr==1582) && (monat >= 10) && (tag>=15))
      Tage = Tage - 10;
   return Tage;
}

function CurrentDoomDay(jahr) {
   var CenturyDoomDay = new Array (5,4,2,0);
   var CC             = Math.floor(jahr/100);
   var YY             = jahr%100;
   var CCDoomDay      = CenturyDoomDay[CC%4];
   var YYDoomDay      = 0;

   if (YY == 0)
         YYDoomDay = CCDoomDay;
   else if (YY%12 == 0)
        YYDoomDay = (CCDoomDay + YY/12 - 1) % 7;
   else YYDoomDay = ( CCDoomDay
                     +(Math.floor(YY/12)
                     + (YY%12)
                     + Math.floor(((YY-1)%12)/4))
                    ) % 7;
   if  ((YY != 0)&&(CC%4 == 0))
         YYDoomDay = (YYDoomDay + 1)%7;

   return YYDoomDay;
}

function Wochentag(tag,monat,jahr) {
   var Wochentag1Jan = CurrentDoomDay(jahr);
   var Tage          = Tag_des_Jahres(tag,monat,jahr)-1;

   /* Die fehlenden 10 Tage in 1582 werden zur Wochentagberechnung gebraucht */
   if ((jahr==1582) && (monat >= 10) && (tag>=15))
      Tage = Tage + 10;

   return WochenTage[(Wochentag1Jan+(Tage%7))%7];
}

function Kalenderwoche(tag,monat,jahr) {
   var Woche         = 0;
   var Wochentag1Jan = CurrentDoomDay(jahr);
   var Tage          = Tag_des_Jahres(tag,monat,jahr)-1;

   if (Wochentag1Jan > 3)
      Tage = Tage - (7 - Wochentag1Jan);
   else Tage = Tage + Wochentag1Jan;

   if (Tage < 0)
      if ((Wochentag1Jan == 4) || (CurrentDoomDay(jahr-1) == 3))
         Woche = 53;
      else Woche = 52;
   else Woche = Math.floor(Tage/7) + 1;

   if ((Tage > 360) && (Woche > 52)) {
      if (Wochentag1Jan == 3)
          Woche = 53;
      else if (CurrentDoomDay(jahr+1) == 4)
              Woche = 53;
           else Woche = 1;
   }

   return Woche;
}

function Ostersonntag(jahr) {
  var K  = Math.floor(jahr/100);
   if (jahr > 1582) {
      var h = Math.floor((3*K+3)/4);
      var M = 15 + h - Math.floor((8*K+13)/25);
      var S = 2 - h;
   } else {
      var M = 15;
      var S =  0;
   }
  var A  = jahr % 19;
  var B  = Math.floor(jahr/4);
  var D  = (19*A+M) % 30;
  var R  = Math.floor(D/29) + (Math.floor(D/28)-Math.floor(D/29)) * Math.floor(A/11);
  var OG = 21 + D - R;
  var SZ = 7 - ((jahr+B+S)%7);
  var OE = 7 - ((OG-SZ)%7);

  return (OG+OE);
}

function Feiertage(jahr) {
  var i = 0;
  var l_day   = 0;
  var l_month = 0;
  var tdj     = 0;
  var OS      = Ostersonntag(jahr);

  l_tdj = Tag_des_Jahres(1,3,jahr)-1 + OS;
  while (l_tdj > 0) {
        l_tdj = l_tdj - Tage_pro_Monat[i];
        i++;
  }
  l_month = i;
  l_day   = Tage_pro_Monat[i-1] + l_tdj;
  if (l_tdj > 0)
     l_day = l_day + 1;

  document.calc.Ostern.value = l_day+". "+l_month+".";
  return;
}

function is_greg_Date(dd,mm,jjjj) {
   if (jjjj > 1582)
      return 1;
   else if (jjjj == 1582)
           if (mm > 10)
              return 1;
           else if (mm == 10)
                   if (dd >= 15)
                      return 1;
                   else return 0;
                else return 0;
         else return 0;
}

function JulianDayNumber(tag,monat,jahr) {
   var MJDN = 0; /* Modified Julian Day Number */
   var B    = 0;

   if (is_greg_Date(tag,monat,jahr))
      B = Math.floor(jahr/400) - Math.floor(jahr/100) + Math.floor(jahr/4);
   else
      B = Math.floor((jahr+4716)/4) - 1181;

   if (monat <= 2) {
      B = B - ist_Schaltjahr(jahr);
      jahr  = jahr - 1;
      monat = monat + 13;
   }
   else monat = monat + 1;

   MJDN = (365*jahr) - 679004 + B + Math.floor(30.6*monat) + tag;

   return (MJDN + 2400001);
}

function date2days() {
  var l_dd   = parseInt(document.calc.dd.value);
  var l_mm   = parseInt(document.calc.mm.value);
  var l_jahr = parseInt(document.calc.jahr1.value);
  var l_ddd  = 0;

  if (l_jahr > 0) {
     Melden("");
     Tage_pro_Monat[1] = 28 + ist_Schaltjahr(l_jahr);

     if ((l_mm > 0) && (l_mm < 13))
        if ((l_dd > 0) && (l_dd <=Tage_pro_Monat[l_mm-1])) {
           self.status = "";
           l_ddd = Tag_des_Jahres(l_dd,l_mm,l_jahr);
           document.calc.ddd.value   = l_ddd;
           document.calc.jahr1.value = l_jahr;
           if (is_greg_Date(l_dd,l_mm,l_jahr))
              document.calc.wochentag.value = Wochentag(l_dd,l_mm,l_jahr);
           else
              document.calc.wochentag.value = WochenTage[JulianDayNumber(l_dd,l_mm,l_jahr)%7];
           document.calc.woche.value    = Kalenderwoche(l_dd,l_mm,l_jahr);
           document.calc.DayNumber.value = JulianDayNumber(l_dd,l_mm,l_jahr);
           Feiertage(l_jahr);
        } else Melden("Tage bitte nur zwischen 1 und "+Tage_pro_Monat[l_mm-1]+".");
     else Melden("Monate bitte nur zwischen 1 und 12.");
  } else Melden(Meldungstext);
}

function date2daysAbfahrt() {
  var l_dd   = parseInt(document.calc.ddAbfahrt.value);
  var l_mm   = parseInt(document.calc.mmAbfahrt.value);
  var l_jahr = parseInt(document.calc.jahr1Abfahrt.value);
  var l_ddd  = 0;

  if (l_jahr > 0) {
     Melden("");
     Tage_pro_Monat[1] = 28 + ist_Schaltjahr(l_jahr);

     if ((l_mm > 0) && (l_mm < 13))
        if ((l_dd > 0) && (l_dd <=Tage_pro_Monat[l_mm-1])) {
           self.status = "";
           l_ddd = Tag_des_Jahres(l_dd,l_mm,l_jahr);
           document.calc.dddAbfahrt.value   = l_ddd;
           document.calc.jahr1Abfahrt.value = l_jahr;
           if (is_greg_Date(l_dd,l_mm,l_jahr))
              document.calc.wochentagAbfahrt.value = Wochentag(l_dd,l_mm,l_jahr);
           else
              document.calc.wochentagAbfahrt.value = WochenTage[JulianDayNumber(l_dd,l_mm,l_jahr)%7];
           document.calc.wocheAbfahrt.value    = Kalenderwoche(l_dd,l_mm,l_jahr);
           document.calc.DayNumberAbfahrt.value = JulianDayNumber(l_dd,l_mm,l_jahr);
           Feiertage(l_jahr);
        } else Melden("Tage bitte nur zwischen 1 und "+Tage_pro_Monat[l_mm-1]+".");
     else Melden("Monate bitte nur zwischen 1 und 12.");
  } else Melden(Meldungstext);
}
function days2date() {
  var l_dd   = parseInt(document.calc.dd.value);
  var l_mm   = parseInt(document.calc.mm.value);
  var l_jahr = parseInt(document.calc.jahr1.value);
  var l_ddd  = 0;

  if (l_jahr > 0) {
     Melden("");
     Tage_pro_Monat[1] = 28 + ist_Schaltjahr(l_jahr);

     if ((l_mm > 0) && (l_mm < 13))
        if ((l_dd > 0) && (l_dd <=Tage_pro_Monat[l_mm-1])) {
           self.status = "";
           l_ddd = Tag_des_Jahres(l_dd,l_mm,l_jahr);
           document.calc.ddd.value   = l_ddd;
           document.calc.jahr1.value = l_jahr;
           if (is_greg_Date(l_dd,l_mm,l_jahr))
              document.calc.wochentag.value = Wochentag(l_dd,l_mm,l_jahr);
           else
              document.calc.wochentag.value = WochenTage[JulianDayNumber(l_dd,l_mm,l_jahr)%7];
           document.calc.woche.value    = Kalenderwoche(l_dd,l_mm,l_jahr);
           document.calc.DayNumber.value = JulianDayNumber(l_dd,l_mm,l_jahr);
           Feiertage(l_jahr);
        } else Melden("Tage bitte nur zwischen 1 und "+Tage_pro_Monat[l_mm-1]+".");
     else Melden("Monate bitte nur zwischen 1 und 12.");
  } else Melden(Meldungstext);
}

function days2dateAbfahrt() {
  var l_dd   = parseInt(document.calc.ddAbfahrt.value);
  var l_mm   = parseInt(document.calc.mmAbfahrt.value);
  var l_jahr = parseInt(document.calc.jahr1Abfahrt.value);
  var l_ddd  = 0;

  if (l_jahr > 0) {
     Melden("");
     Tage_pro_Monat[1] = 28 + ist_Schaltjahr(l_jahr);

     if ((l_mm > 0) && (l_mm < 13))
        if ((l_dd > 0) && (l_dd <=Tage_pro_Monat[l_mm-1])) {
           self.status = "";
           l_ddd = Tag_des_Jahres(l_dd,l_mm,l_jahr);
           document.calc.dddAbfahrt.value   = l_ddd;
           document.calc.jahr1Abfahrt.value = l_jahr;
           if (is_greg_Date(l_dd,l_mm,l_jahr))
              document.calc.wochentagAbfahrt.value = Wochentag(l_dd,l_mm,l_jahr);
           else
              document.calc.wochentagAbfahrt.value = WochenTage[JulianDayNumber(l_dd,l_mm,l_jahr)%7];
           document.calc.wocheAbfahrt.value    = Kalenderwoche(l_dd,l_mm,l_jahr);
           document.calc.DayNumberAbfahrt.value = JulianDayNumber(l_dd,l_mm,l_jahr);
           Feiertage(l_jahr);
        } else Melden("Tage bitte nur zwischen 1 und "+Tage_pro_Monat[l_mm-1]+".");
     else Melden("Monate bitte nur zwischen 1 und 12.");
  } else Melden(Meldungstext);
}

function changeDD(wert) {
	
  var TgAnno = 365;
  var l_ddd  = parseInt(document.calc.ddd.value);
  var l_jahr = parseInt(document.calc.jahr1.value);

  if (l_jahr == 1582)
     TgAnno = 355;

  l_ddd = l_ddd + wert;

  if (l_ddd < 1) {
     l_jahr = l_jahr - 1;
     if (l_jahr == 1582)
        TgAnno = 355;
     l_ddd = TgAnno + ist_Schaltjahr(l_jahr);
  }
  if (l_ddd > (TgAnno + ist_Schaltjahr(l_jahr))) {
     l_jahr = l_jahr + 1;
     l_ddd = 1;
  }

  if (l_jahr > 0) {
     document.calc.ddd.value   = l_ddd;
     document.calc.jahr1.value = l_jahr;

     days2date()
  } else Melden(Meldungstext);
}

function changeDDAbfahrt(wert) {
  var TgAnno = 365;
  var l_ddd  = parseInt(document.calc.dddAbfahrt.value);
  var l_jahr = parseInt(document.calc.jahr1Abfahrt.value);

  if (l_jahr == 1582)
     TgAnno = 355;

  l_ddd = l_ddd + wert;

  if (l_ddd < 1) {
     l_jahr = l_jahr - 1;
     if (l_jahr == 1582)
        TgAnno = 355;
     l_ddd = TgAnno + ist_Schaltjahr(l_jahr);
  }
  if (l_ddd > (TgAnno + ist_Schaltjahr(l_jahr))) {
     l_jahr = l_jahr + 1;
     l_ddd = 1;
  }

  if (l_jahr > 0) {
     document.calc.dddAbfahrt.value   = l_ddd;
     document.calc.jahr1Abfahrt.value = l_jahr;

     days2dateAbfahrt()
  } else Melden(Meldungstext);
}

function changeMM(wert) {
  var l_dd   = parseInt(document.calc.dd.value);
  var l_mm   = parseInt(document.calc.mm.value);
  var l_jahr = parseInt(document.calc.jahr1.value);

  l_mm = l_mm + wert;
  if (l_mm < 1) {
     l_mm   = 12;
     l_jahr = l_jahr - 1;
  } else if (l_mm > 12) {
            l_mm   = 1;
            l_jahr = l_jahr + 1;
         }
  Tage_pro_Monat[1] = 28 + ist_Schaltjahr(l_jahr);
  if (l_dd > Tage_pro_Monat[l_mm-1])
     l_dd = Tage_pro_Monat[l_mm-1];

  if (l_jahr > 0) {
     /* In 1582 die fehlende 10 Tage unterdruecken. */
     if ((l_jahr == 1582) && (l_mm == 10))
        if ((l_dd < 15) && (l_dd > 4))
           if (wert > 0)
              l_dd = 15;
           else
              l_dd = 4;
     document.calc.dd.value    = l_dd;
     document.calc.mm.value    = l_mm;
     document.calc.jahr1.value = l_jahr;

     date2days()
  } else Melden(Meldungstext);
}

function changeMMAbfahrt(wert) {
  var l_dd   = parseInt(document.calc.ddAbfahrt.value);
  var l_mm   = parseInt(document.calc.mmAbfahrt.value);
  var l_jahr = parseInt(document.calc.jahr1Abfahrt.value);

  l_mm = l_mm + wert;
  if (l_mm < 1) {
     l_mm   = 12;
     l_jahr = l_jahr - 1;
  } else if (l_mm > 12) {
            l_mm   = 1;
            l_jahr = l_jahr + 1;
         }
  Tage_pro_Monat[1] = 28 + ist_Schaltjahr(l_jahr);
  if (l_dd > Tage_pro_Monat[l_mm-1])
     l_dd = Tage_pro_Monat[l_mm-1];

  if (l_jahr > 0) {
     /* In 1582 die fehlende 10 Tage unterdruecken. */
     if ((l_jahr == 1582) && (l_mm == 10))
        if ((l_dd < 15) && (l_dd > 4))
           if (wert > 0)
              l_dd = 15;
           else
              l_dd = 4;
     document.calc.ddAbfahrt.value    = l_dd;
     document.calc.mmAbfahrt.value    = l_mm;
     document.calc.jahr1Abfahrt.value = l_jahr;

     date2days()
  } else Melden(Meldungstext);
}

function changeYY(wert) {
  var l_dd   = parseInt(document.calc.dd.value);
  var l_mm   = parseInt(document.calc.mm.value);
  var l_jahr = parseInt(document.calc.jahr1.value);

  l_jahr = l_jahr + wert;

  if (l_jahr > 0) {
     /* In 1582 die fehlende 10 Tage unterdruecken. */
     if ((l_jahr == 1582) && (l_mm == 10))
        if ((l_dd < 15) && (l_dd > 4)) {
           if (wert > 0)
              l_dd = 15;
           else
              l_dd = 4;
           document.calc.dd.value = l_dd;
        }
     /* Im Gemeinjahr gibt es keinen 29 Februar */
     if ((l_mm == 2) && !ist_Schaltjahr(l_jahr))
        if (l_dd == 29)
           document.calc.dd.value = 28;
     document.calc.jahr1.value = l_jahr;
     date2days()
  } else Melden(Meldungstext);
}

function changeYYAbfahrt(wert) {
  var l_dd   = parseInt(document.calc.ddAbfahrt.value);
  var l_mm   = parseInt(document.calc.mmAbfahrt.value);
  var l_jahr = parseInt(document.calc.jahr1Abfahrt.value);

  l_jahr = l_jahr + wert;

  if (l_jahr > 0) {
     /* In 1582 die fehlende 10 Tage unterdruecken. */
     if ((l_jahr == 1582) && (l_mm == 10))
        if ((l_dd < 15) && (l_dd > 4)) {
           if (wert > 0)
              l_dd = 15;
           else
              l_dd = 4;
           document.calc.ddAbfahrt.value = l_dd;
        }
     /* Im Gemeinjahr gibt es keinen 29 Februar */
     if ((l_mm == 2) && !ist_Schaltjahr(l_jahr))
        if (l_dd == 29)
           document.calc.dd.value = 28;
     document.calc.jahr1Abfahrt.value = l_jahr;
     date2days()
  } else Melden(Meldungstext);
}

function current_year(year) {
  if (year < 1900)
     year = year + 1900;
  return year;
}

function DateInit() {
  var dat = new Date();

  document.calc.dd.value = dat.getDate();
  document.calc.mm.value = dat.getMonth()+1;
  document.calc.jahr1.value = current_year(dat.getYear());
  date2days();

  document.calc.ddAbfahrt.value = dat.getDate();
  document.calc.mmAbfahrt.value = dat.getMonth()+1;
  document.calc.jahr1Abfahrt.value = current_year(dat.getYear());
  date2daysAbfahrt();
  
  
}
function Tage_von_bis(a_tag,a_monat,a_jahr,a_hh,a_mm,b_tag,b_monat,b_jahr,b_hh,b_mm) {
	var anz    = 0;
 
	var a_Tage = Tag_des_Jahres(a_tag,a_monat,a_jahr);
	var b_Tage = Tag_des_Jahres(b_tag,b_monat,b_jahr);

	if ((a_jahr > b_jahr) || ((a_jahr == b_jahr) && (a_Tage > b_Tage))) {
		c_tag = a_tag; c_monat = a_monat; c_jahr = a_jahr;
		a_tag = b_tag; a_monat = b_monat; a_jahr = b_jahr;
		b_tag = c_tag; b_monat = c_monat; b_jahr = c_jahr;
	}

	if (a_jahr == b_jahr)
		anz = b_Tage - a_Tage;
    	else {
		anz = Tage_pro_Jahr(a_jahr) - a_Tage;
		jahr = a_jahr + 1;
		while (jahr < b_jahr) {
			anz = anz + Tage_pro_Jahr(jahr);
			jahr++;
		}
		anz = anz + b_Tage;
	}

	if( anz <= 1) {
		
    		if ((b_hh == a_hh) && (b_mm == a_mm) && (b_tag == a_tag) && (b_monat == a_monat) && (b_jahr == a_jahr)) {
    			anz = anz + 1;
    		}

    		else if (b_hh > a_hh) anz = anz + 1;
    		else if (b_hh == a_hh) {
    			if (b_mm > a_mm) anz = anz + 1;
    		}    		
    		//alert (anz);
	}
	else if ( anz > 1) anz = anz + 1;
	//alert (anz);
	return anz;
 } 
