//	####################################################################################
//	Countdown
//	####################################################################################

//	====================================================================================
//	implementiert die Countdown-Funktionalitaet
//	====================================================================================
//	
//	Autor:		Ulrich Schumacher, Blackbox Hamburg
//	Datum:		05.05.2006
//	Version:	1.2
//	====================================================================================


//
//	CHANGELOG
//
//	====================================================================================
//
//
//	v1.1 - 04.05.2006
//	- GetElementInDocument bietet eine browser&#8730;¬&#8747;bergreifende M&#8730;&#8706;glichkeit 
//	  Elemente anhand ihrer ID zu adressieren.
//	- Minuten werden aufgerundet, statt das Abrunden auszubessern
//	- Textelemente der Ausgabe werden in Plural und Singular gesetzt
//
//	v1.2 - 05.05.2006
//	- Umr&#8730;ºstung von Sekundenbasis auf volle Minuten
//
//	====================================================================================
//	====================================================================================

//
//	CONSTs
//
//	====================================================================================

var constMinutesPerDay    = 60 * 24;
var constMinutesPerHour   = 60;
var constSecondsPerMinute = 60;


//
//	GetElementInDocument
//
//	====================================================================================
//
//	browser&#8730;¬&#8747;bergreifende Alternative zu getElementById
//

function GetElementInDocument( theDocument, theID )
{
       if( theDocument.getElementById )
       {
               if( theDocument.getElementById( theID ) )	return ( theDocument.getElementById( theID ) );
       }
       else
       if( theDocument.all )
       {
               if( theDocument.all[ theID ] )				return( theDocument.all[ theID ] );
       }
       else
       if( theDocument.layers )
       {
               if( theDocument.layers[ theID ] ) 			return( theDocument.layers[ theID ] );
       }
       else
       {
                                                                                               return( null );
       }
}



//
//	countdown_count
//
//	====================================================================================
//
//	implementiert die periodische Berechnung und Ausgabe bis zum Zieldatum
//
function countdown_count( minutesLeft )
{

	if( minutesLeft >= 1 )
	{
		//
		//	Berechnung
		//
		tmpMinutesLeft = minutesLeft;

		// Tage
		days = Math.floor( minutesLeft / constMinutesPerDay );
		minutesLeft = minutesLeft % constMinutesPerDay;

		// Stunden
		hours = Math.floor( minutesLeft / constMinutesPerHour );
		minutesLeft =  minutesLeft % constMinutesPerHour;

		// Minuten
		minutes =  minutesLeft;
		// die Minuten werden aufgrund fehlender Sekundenausgabe aufgerundet
		
		//
		//	Ausgabe
		//
		GetElementInDocument( document, "countdown_day"    ).innerHTML = days;
		GetElementInDocument( document, "countdown_hour"   ).innerHTML = hours;
		GetElementInDocument( document, "countdown_minute" ).innerHTML = minutes;

		//
		// Textausgabe in Abh&#8730;¬ßngigkeit von Mehr- oder Einzahl der Einheiten
		//
		if( days != 1 )
			GetElementInDocument( document, "countdown_day_text"	).innerHTML = "Tage";
		else
			GetElementInDocument( document, "countdown_day_text"	).innerHTML = "Tag";
		
		if( hours != 1 )
			GetElementInDocument( document, "countdown_hour_text" 	).innerHTML = "Stunden";
		else
			GetElementInDocument( document, "countdown_hour_text"	).innerHTML = "Stunde";
		
		if( minutes!=1 )
			GetElementInDocument( document, "countdown_minute_text"	).innerHTML = "Minuten";
		else
			GetElementInDocument( document, "countdown_minute_text"	).innerHTML = "Minute";

		//
		//	naechsten Aufruf vorbereiten
		//
		setTimeout( "countdown_count( " + (tmpMinutesLeft - 1) + " )", 60000 );
	}
	else
	{
		//
		//	Ausgabe umschalten --- Zieldatum ist erreicht
		//
		GetElementInDocument( document, "countdown_display" ).innerHTML = "<div style='position: absolute; top: 8px; left:  75px;'    class='countdown_text'>Seit dem 01. Januar 2007</div>";
	}
}

//
//	countdown_init
//
//	====================================================================================
//
//	initialiisert die Countdown-Funktionalitaet
//
function countdown_init( curr_timestamp, dest_day, dest_month, dest_year )
{
	// Umwandlung des Zieldatums in internes Format
	dest_date= new Date( dest_year, dest_month-1, dest_day );
	dest_timestamp = Date.parse( dest_date.toGMTString() ) / 1000;

	//
	// verbleibende Sekunde errechnen => verbleibende Minuten berechnen
	// mit Aufrunden auf volle Minuten
	minutesLeft = Math.ceil( (dest_timestamp - curr_timestamp) / constSecondsPerMinute );

	// verbleibende Minutes an den Countdown uebergeben
	countdown_count( minutesLeft );
}
