
// Removes leading whitespaces
function ltrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}

// Removes ending whitespaces
function rtrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");	
}

// Removes leading and ending whitespaces
function trim( value ) {
	return ltrim(rtrim(value));
}

/**
 * Datum vertaling:  integer => string 
 */
function date2string( date )
{
	date = Number(date);
	if( isNaN( date ) ) return '';
	if( date == 0 ) return '';
	var day = date % 100;
	var month = Math.floor(date / 100) % 100
	var year = Math.floor( date / 10000 );
	if( day < 10 ) day = "0" + day;
	if( month < 10 ) month = "0" + month; 
	return day + "-" + month + "-" + year; 
}

/**
 * Datum vertaling:  string = > integer
 * LET OP: Bij een fout wordt false teruggegeven.   
 */
function string2date( date )
{	
	date		= trim( String(date) );
	this_year	= (new Date()).getFullYear();
	
	// lege datum
	if( date == '' ) return 0;
	
	// format:  YYYYMMDD
	if( ( date.length ) == 8 && ( !isNaN( Number( date ) ) ) ) return Number(date); 
		
	// formaat: DDMM
	if( date.length == 4 && ( !isNaN( Number( date ) ) ) ) 
	{ 
		return this_year * 10000 + (date%100 * 100) + Math.floor(date/100)%100;
	} 
	
	// formaat: D-M / D-M-Y / DD-MM-YYYY 
	date = date.replace( '/', '-' );	// vervang alle '/' door '-'
	var items = date.split( "-" );
	if( items.length < 2 )
	{
		return false;	
	}
	var day = Number(items[0]);
	var month = Number(items[1]);
	var year = Number((items.length > 2) ? items[2] : this_year );
	if( isNaN( day ) || isNaN( month ) || isNaN( year ) ) return false;
	if( year < 100 ) year = 2000 + year;
	if( month < 1 || month > 12 ) return false;
	if( day < 1 || day > 31 ) return false;
	return year * 10000 + month * 100 + day ;
} 


/** 
 * converts a currency number to a string. 
 */
function currency2string( value, decimals, fraction_seperator, hide_zeros)
{
	if( hide_zeros && Math.abs( value ) < 0.0000001 ) return ""; 
	if( !decimals && decimals !== 0 ) decimals = 2;
	if( !fraction_seperator && fraction_seperator !== '' ) fraction_seperator = ',';
	var multiplier = 1;
	var di = decimals;
	while( di-- > 0 ) multiplier *= 10;
	var number = Math.floor( value / multiplier );
	var fraction = String( value % multiplier );
	while(  fraction.length < decimals ) fraction = '0' + fraction;
	return number + fraction_seperator + fraction;
} 


/** 
 * converts a string to a currency value  ( no decimals are returned!)
 * 2 decimals => converts to  ###.## * 100 
 */
function string2currency( value, decimals )
{
	if( !decimals && decimals !== 0 ) decimals = 2;
	value = String( value );
	value = value.replace( ',', '.' );
	var dvalue = Number( value );
	if( isNaN( dvalue ) ) dvalue = 0;
	var multiplier = 1;
	while( decimals-- > 0 ) multiplier *= 10;
	dvalue = dvalue * multiplier;
//alert( "s2c:dvalue="+dvalue );	
	return Math.round( dvalue );
}
 
 
function formatTime( time )
{
	// Het is ook mogelijk om:  ';', ',', '-' of '.' als scheidings teken te gebruiken
	time = String(time).replace( ';', ':' );
	time = String(time).replace( '.', ':' );
	time = String(time).replace( ',', ':' );
	time = String(time).replace( '-', ':' );

	var value = String(time);
	var items = value.split(':');
	if( items.length == 2 )
	{
		var v1 = Number( items[0] );
		var v2 = Number( items[1] );
		if( isNaN(v1)||isNaN( v2 ) ) return "0:00";
		
		if( v2 < 10 ) v2 = v2 * 10;		// minutes
		value = v1 * 100 + v2;
	}
	else
	{
		value = value.replace(":","") ;
		value = Number( value );
	}
	
	if( isNaN( value ) ) return "0:00";
	
	// 2 digits, we assume hours !
	if( value < 100 && String(time).length < 3 )
	{
		value = value * 100;
	}
		
	return time2text( value * 100 );
}

function time2text( time )
{

	var h = Math.floor(time / 10000 )
	var m = time / 100 % 100 ;
	var s = time % 100

	if( h > 23 ) h = 23;
	if( m > 59 ) m = 59;

	if( h < 10 ) h = "0" + h;
	if( m < 10 ) m = "0" + m;
	
	return h+":"+m;
}


/**
 * Vertaald een teksttijd in de vorm: HH:MM
 * naar een integer tijd in de vorm:  HHMMSS
 */  
function text2time( time )
{
	time = String( time );
	time = time.replace(';',':');
	time = time.replace('.',':');
	time = time.replace(',',':');
	time = time.replace('-',':');

	var items = time.split( ':');
	var value = '';
	if( items.length == 2 )
	{
		v1 = Number( items[0] );
		v2 = Number( items[1] );
		
		if( v2 < 10 ) v2 = v2 * 10;		// minutes
		value = v1 * 100 + v2;
	}
	else
	{
		time = time.replace( ":","" ) ;
		value = Number( time );
	}
	
	// 2 digits, we assume hours !
	if( value < 100 && time.length < 3 )
	{
		value = value * 100;
	}
	
	return value * 100;	// seconds
	
}

