
/*
		JS Timestamp in Datum umrechnen (Format: DD.MM.YYYY)
		@param	timestamp		JS  Timestamp 
		@return	date				Datum (TT.MM.YYYY)
*/	
function Time2Date (timeStamp) {
		
		// JS rechnet in Millisekunden
		var d = new Date(timeStamp);
		var day = d.getDate();
		var month = d.getMonth()+1;
		var year = d.getFullYear();
		
		if(day<10) day = "0"+day;
		if(month<10) month = "0"+month;
		var dateString = day+"."+month+"."+year;
		
		return dateString;
}

/*
		Datum in Timestamp umrechnen (Format: DD.MM.YYYY)
		@param	date		Datum (TT.MM.YYYY) 
		@return	timestamp	JS Timestamp
*/	
function Date2Time (dateString) {
		
		if(!checkDate(dateString)) return 0;

		var day = parseInt(dateString.substring(0,2)*1);
		var month = parseInt(dateString.substring(3,5)*1);
		var year = parseInt(dateString.substring(6,10));
		
		
		var d = new Date(year, month-1, day);
		// JS rechnet in Millisekunden
			var timeStamp = parseInt(d.getTime()) 
		// alert("DateString: "+dateString+" -> "+ day+"/"+month+"/"+year+" -> Time: "+timeStamp+" toGMTString:"+d.toGMTString()+" toLocaleString:"+d.toLocaleString());
		return timeStamp;
}

/*
		Datum in Array umwandeln (Format: DD.MM.YYYY)
		@param	date		Datum (TT.MM.YYYY) 
		@return	array		array mit Tag / Monat / JahrJS Timestamp
*/	
function Date2DateArray (dateString) {
		
		if(!checkDate(dateString)) return 0;

		var dateArray = [];
		dateArray['date'] = dateString;
		dateArray['day'] = parseInt(dateString.substring(0,2)*1);
		dateArray['month'] = parseInt(dateString.substring(3,5)*1);
		dateArray['year'] = parseInt(dateString.substring(6,10));
		return dateArray;
}

/*
		Datum in Wochentag umwandeln (Format: DD.MM.YYYY)
		@param	date		Datum (TT.MM.YYYY) 
		@return	array		array mit Tag / Monat / JahrJS Timestamp
*/	
function Date2Weekday (dateString, fullName) {
		
		if(!checkDate(dateString)) return "";

		var fullName_Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch","Donnerstag", "Freitag", "Samstag");
		var shortName_Wochentag = new Array("So", "Mo", "Di", "Mi","Do", "Fr", "Sa");

		var timeStamp = Date2Time (dateString);
		var d = new Date(timeStamp);
		var wkday = d.getDay();
		// alert(wkday);
		var wkday_name = "";
		if(fullName && fullName_Wochentag[wkday]) {
			wkday_name = fullName_Wochentag[wkday];
		} else if(shortName_Wochentag[wkday]) {
			wkday_name = shortName_Wochentag[wkday];
		}		
		return wkday_name;
		
}

/*
		Datum auf korrekte Schreibweise überprüfen (Format: DD.MM.YYYY)
		@param	date			Datum 
		@return	TRUE/FALSE			
*/	
function checkDate (dateString) {
	
		var ExpressionInteger = /^\d\d\.\d\d\.\d\d\d\d$/;
		var res = ExpressionInteger.exec(dateString);
		if(res) return 1;
		return 0;
}

/*
		Periode überprüfen (Format: DD.MM.YYYY)
		@param	dateStart		Datum (TT.MM.YYYY) 
		@param	dateEnd			Datum (TT.MM.YYYY) 
		@return	TRUE/FALSE			
*/	
	
function checkPeriod (dateStart, dateEnd) {
	
		if(!checkDate(dateStart) || !checkDate(dateEnd))
			return 0;
		
		if(Date2Time(dateStart) <= Date2Time(dateEnd))
			return 1;
		else return 0;
}
/*
		Gesamtdauer zwischen Start/Enddatum in Kalendertagen
		@param	datum_start		Startdatum TT.MM.YYYY
		@param	datum_ende		Enddatum TT.MM.YYYY
		@return	dauer					Tage
	*/	
function getDuration (dateStart, dateEnd) {
					
		var time_start = Date2Time(dateStart);
		var time_end = Date2Time(dateEnd);
		
		var d1 = new Date();
		d1.setTime(time_start);
		var dd1 = d1.getTimezoneOffset();
		var d2 = new Date();
		d2.setTime(time_end);
		var dd2 = d2.getTimezoneOffset();
		var dd = dd1 - dd2;
		// alert("Differenz zu GMT: " + dd + "start:"+dd1 + " ende:"+ dd2 +" -> " + dd * 60 * 1000);
		// alert("toGMTString: "+d1.toGMTString()+" - " +d2.toGMTString()+" toLocaleString: "+d1.toLocaleString()+" - "+d2.toLocaleString());
		// Differenz zu GMT verrechnen bei Start / Ende für Sommer/Winterzeit
		// da beide Timestamps um 00:00:00 gewertet werden
		time_end = time_end + dd1 * 60 * 1000;
		time_start = time_start + dd2 * 60 * 1000;

		// Dauer berechnen
		// var duration = Math.ceil((time_end-time_start)/(1000*86400));
		var duration = Math.floor((time_end-time_start)/(1000*86400));		
		if(duration<0) duration = 0;		
		// alert("Zeitraum: "+dateStart+" - "+dateEnd+" Dauer:"+ duration + " / Value:"+(time_end-time_start)/(1000*86400));
		return duration;				
}


