var countdownAlwaysShowDays = false;
var countdownNeverShowDays = false;
var countdownUseDigits = false;

function createCounter( id, until, expTitle, expLink, labels )
{
	var html = "<span class='countdownTimer'>";
	
	if( !countdownNeverShowDays ) {
		
		html += "<span class='ct_days ct_cell'><div class='ct_dig ct_dig3'>&nbsp;</div><div class='ct_dig ct_dig2'>&nbsp;</div><div class='ct_dig ct_dig1'>&nbsp;</div>";
				
		if( labels )
			html += '<div class="ct_label">' + labels[ 0 ] + "</div>";
		
		html += "</span>" +
				"<span class='ct_days ct_daysSep'><div class='ct_sep'>&nbsp;</div></span>";
	}
			
	html += "<span class='ct_hours ct_cell'><div class='ct_dig ct_dig3' style='display: none'>&nbsp;</div><div class='ct_dig ct_dig2'>&nbsp;</div><div class='ct_dig ct_dig1'>&nbsp;</div>";

	if( labels )
		html += '<div class="ct_label">' + labels[ 1 ] + "</div>";
		
	html += "</span>" +
			"<span class='ct_days ct_hoursSep'><div class='ct_sep'>&nbsp;</div></span>" +
			"<span class='ct_mins ct_cell'><div class='ct_dig ct_dig2'>&nbsp;</div><div class='ct_dig ct_dig1'>&nbsp;</div>";

	if( labels )
		html += '<div class="ct_label">' + labels[ 2 ] + "</div>";
		
	html += "</span>" +
			"<span class='ct_days ct_minsSep'><div class='ct_sep'>&nbsp;</div></span>" +
			"<span class='ct_secs ct_cell'><div class='ct_dig ct_dig2'>&nbsp;</div><div class='ct_dig ct_dig1'>&nbsp;</div>";

	if( labels )
		html += '<div class="ct_label">' + labels[ 3 ] + "</div>";
		
	html += "</span>" +
			"</span>";
	
	$( id ).innerHTML = html;
	
	window.setTimeout( function() { countdownUpdate( id, until, expTitle, expLink ) }, 1000 );
}

function countdownUpdate( id, until, expTitle, expLink )
{
	var now = new Date();
	var div = $( id );
	var diff = until - ( now.getTime() / 1000 );

	if( diff <= 0 ) {
		
		if( expLink && expLink.length )
			div.innerHTML = '<div class="countdownTimerExpired"><a href="' + expLink + '">' + expTitle + '</a></div>';
		else
			div.innerHTML = '<div class="countdownTimerExpired">' + expTitle + '</div>';
		
	} else {
		var days, hours, mins, secs;
		
		days   = Math.floor( diff / 86400 );
		diff  -= days * 86400;
		hours  = Math.floor( diff / 3600 );
		diff  -= hours * 3600;
		mins   = Math.floor( diff / 60 );
		secs   = Math.floor( diff - ( mins * 60 ));
		
		if( countdownNeverShowDays )			
			hours += days * 24;			
		else if( !countdownAlwaysShowDays && ( days <= 0 )) {

			div.down( '.ct_days' ).hide();
			div.down( '.ct_daysSep' ).hide();

		} else {
			var first = Math.floor( days / 10 );
			
			if( first > 9 )
				countdownSetDigit( div.down( '.ct_days .ct_dig3' ), Math.floor( first / 10 ));
			else
				div.down( '.ct_days .ct_dig3' ).hide();

			countdownSetDigit( div.down( '.ct_days .ct_dig2' ), first % 10 );
			countdownSetDigit( div.down( '.ct_days .ct_dig1' ), days % 10 );
		}
		
		countdownSetDigit( div.down( '.ct_hours .ct_dig2' ), Math.floor( hours / 10 ));
		countdownSetDigit( div.down( '.ct_hours .ct_dig1' ), hours % 10 );

		countdownSetDigit( div.down( '.ct_mins .ct_dig2' ), Math.floor( mins / 10 ));
		countdownSetDigit( div.down( '.ct_mins .ct_dig1' ), mins % 10 );

		countdownSetDigit( div.down( '.ct_secs .ct_dig2' ), Math.floor( secs / 10 ));
		countdownSetDigit( div.down( '.ct_secs .ct_dig1' ), secs % 10 );

		window.setTimeout( function() { countdownUpdate( id, until, expTitle, expLink ) }, 1000 );
	}
}

function countdownSetDigit( el, digit )
{
	el = $( el );
	
	for( var i = 0; i <= 9; i++ )
		el.removeClassName( 'ct_digval_' + i );
		
	el.addClassName( 'ct_digval_' + digit );
	
	if( countdownUseDigits )
		el.update( digit );
}

