function getZeroFilledString( string, length )
{
	while( string.length < length )
	{
		string = "0" + string;
	}
	return string;
}

function isUpcomingEvent( dateString )
{
	// dateString-Struktur TT.MM.JJJJ
	var dateArray = dateString.split(".");
	var dateTimeSince1970 = Date.UTC(dateArray[2], dateArray[1], dateArray[0]);
	
	var now = new Date();
	var nowTimeSince1970 = Date.UTC(now.getUTCFullYear(), now.getUTCMonth() + 1, now.getUTCDate());
	
	var isUpcoming = (nowTimeSince1970 <= dateTimeSince1970);
	return isUpcoming;
}
	
function highlightEvent( dateNode, date )
{
	dateNode.innerHTML = '<div class="upcoming_event">' + date + '<i>&nbsp;&nbsp;neu!</i></div>';
}
	
function insertOldDatesFlag( lastUpcomingDivNode, oldDatesNum )
{
/*	<div class="content_part">
		<div class="passed_events">
			<hr/>
			<h1>Archiv vor TT.MM.JJJJ:</h1>
		</div>
	</div>	*/
	
	var now = new Date();
	var year = now.getUTCFullYear();
	var month = getZeroFilledString( String( now.getUTCMonth() + 1 ), 2 );
	var date = getZeroFilledString( String( now.getUTCDate() ), 2 );
	
	var contentPartDivNode = document.createElement( "div" );
	var passedEventsDivNode = document.createElement( "div" );
	var hrNode = document.createElement( "hr" );
	var h1Node = document.createElement( "h3" );
	var textNode = document.createTextNode( oldDatesNum + " archivierte Termine:" );
	
	contentPartDivNode.setAttribute( "class", "content_part" );
	passedEventsDivNode.setAttribute( "class", "passed_events" );
	
	contentPartDivNode.appendChild( passedEventsDivNode );
	passedEventsDivNode.appendChild( hrNode );
	passedEventsDivNode.appendChild( h1Node );
	h1Node.appendChild( textNode );
	
	lastUpcomingDivNode.parentNode.insertBefore( contentPartDivNode, lastUpcomingDivNode.nextSibling );
}
	
function insertTotalDatesFlag( firstDivNode, totalDatesNum )
{
	if ( totalDatesNum < 2 ) return;
	
	var contentPartDivNode = document.createElement( "div" );
	var passedEventsDivNode = document.createElement( "div" );
	var hrNode = document.createElement( "hr" );
	var h1Node = document.createElement( "h3" );
	var textNode = document.createTextNode( totalDatesNum + " Termine:" );
	
	contentPartDivNode.setAttribute( "class", "content_part" );
	passedEventsDivNode.setAttribute( "class", "passed_events" );
	
	contentPartDivNode.appendChild( passedEventsDivNode );
	passedEventsDivNode.appendChild( hrNode );
	passedEventsDivNode.appendChild( h1Node );
	h1Node.appendChild( textNode );
	
	firstDivNode.parentNode.insertBefore( contentPartDivNode, firstDivNode );
}

function highlightUpcomingEvents()
{
	var dates = document.getElementsByTagName("h1");

	var dateNode;
	var date;
	var l = dates.length;
	var i;
	
	var divNodes = new Array();
	var divNodesInnerHTML = new Array();
	
	var oldDatesNum = 0;

	for ( i = 0; i < l; i++ )
	{
		dateNode = dates[i];
		date = dateNode.innerHTML;
		
		if ( isUpcomingEvent( date ) && oldDatesNum == 0 )
		{
			highlightEvent( dateNode, date );
			
			divNodes.push( dateNode.parentNode );
			divNodesInnerHTML.push( dateNode.parentNode.innerHTML );
		}
		else
		{	
			oldDatesNum++;
		}
	}
	
	l = divNodes.length;
	
	if ( l > 0 )
	{
		divNodesInnerHTML.reverse();
		
		for ( i = 0; i < l; i++ )
		{
			divNodes[ i ].innerHTML = divNodesInnerHTML[ i ];
		}
		
		var oldDatesFollowing = ( dates.length > l );
		if ( oldDatesFollowing )
		{
			insertOldDatesFlag( divNodes[ l - 1], oldDatesNum );
		}
		
		insertTotalDatesFlag( divNodes[ 0 ], l );
	}
	else
	{
		insertTotalDatesFlag( dates[ 0 ].parentNode, dates.length );
	}
}


