/* vim: set expandtab sw=4 ts=4 sts=4: */
/*
 * Copyright (c) 2008 FIZON GmbH
 * All rights reserved.
 *
 * $Id: date.js 1739 2008-08-04 07:50:26Z as $
 */

/**
 * Autor   : Aron Schlesinger <as@paefchen.net>
 * Lizenz  : BSDL
 * Version : 1.0
 */

/**
 * Date-Funktion die der PHP-Function date()[1]
 * nachempfunden ist. Zeichen die nicht weiter
 * geparsed werden sollen, aber eigentlich eine
 * andere belegung haben werden mit einem
 * Backslash ``\'' escapt.
 *
 * Aktuell werden folgende Formatierungen
 * unterstützt:
 *
 *   d - Tag des Monats zweistellig. 
 *   F - Monatsname voll ausgeschrieben (Deutsch).
 *   G - Stunde im 24 Stundenformat.
 *   H - Stunde zweistellig im 24 Stundenformat. 
 *   i - Minute der Stunde zweistellig.
 *   j - Tag des Monats.
 *   l - Wochentag voll ausgeschrieben (Deutsch).
 *   m - Monat des Jahres einstellig.
 *   s - Sekunde der Minute. 
 *   U - Unixtimestamp
 *   y - Jahr zweistellig
 *   Y - Jahr vierstellig
 *
 * [1] http://www.php.net/date
 */
 
/**
 * date()
 *
 * Zum Formatieren von Unixtimestamp.
 *
 * @param	string	beinhaltet den Formatierungs-String
 * @param	integer	der zu formatierende Timestamp
 *
 * @return	string	der Formatierte String.
 */

function date(format, ts)
{
	/* wenn kein Timestamp uebergeben wurde,
	 * dann wird die aktuelle Zeit als TS gesetzt. */
	if (date.arguments.length < 2)
		ts = new Date().getTime() / 1000;

	/* Datums-Objekt erstellen */
	var d = new Date(ts * 1000);
	
	/* String-Object fuer den return-Wert */
	var r = '';
	
	/* Temporaerie-String */
	var t = '';
	
	/* ob das naechste Zeichen Escapt ist */
	var strEsc = false;

	for (var i = 0; i < format.length; i++) {

		/* ist das Zeichen escapt worden */
		if (strEsc) {
			r += format[i];
			strEsc = false;
			continue;
		}
		
		/* naechstes Zeichen ist Escapt */
		else if (format[i] == '\\') {
			strEsc = true;
			continue;
		}
		

		switch(format[i]) {
		
		case 'd':
			t = d.getDate();
			r += t < 10 ? '0'+t : t;
			break;
			
		case 'F':
			r += month_de[d.getMonth()];
			break;
			
		case 'G':
			r += d.getHours();
			break;
			
		case 'H':
			t = d.getHours();
			r += t < 10 ? '0'+t : t;
			break;
			
		case 'i':
			t = d.getMinutes();
			r += t < 10 ? '0'+t : t;
			break
			
		case 'j':
			r += d.getDate();
			break;
			
		case 'l':
			r += day_de[d.getDay()];
			break;
			
		case 'm':
			t = d.getMonth()+1;
			r += t < 10 ? '0'+t : t;
			break;
			
		case 's':
			t = d.getSeconds();
			r += t < 10 ? '0'+t : t;
			break;
			
		case 'U':
			r += d.getTime() / 1000;
			break;
			
		case 'y':
			t = d.getYear();
			r += t > 99 ? '0'+(t-100) : t;
			break;
			
		case 'Y':
			r += d.getFullYear();
			break;
			
		default:
			r += format[i];
			
		}
	}

	return r;
}

