Date.prototype.format = function(f)
{
	if ( !this.valueOf() ) return '';
	
	var d = this;
	
	return f.replace(/(yyyy|yy|mmmm|mmm|mm|m|dddd|ddd|dd|d|id|hh|h|nn|ss|a\/p)/gi,
		
		function( s )
		{
			switch( s.toLowerCase() )
			{
				case "yyyy" : 	return d.getFullYear();
				case "yy" : 	return ( d.getFullYear() + "" ).substr( 2, 2 );
				case "mmmm" : 	return monthNames[ d.getMonth() ];
				case "mmm" : 	return monthNames[ d.getMonth() ].substr( 0, 3 ); 
				case "mm" : 	return decimal( d.getMonth() + 1 );
				case "m" :		return d.getMonth();
				case "dddd" : 	return dayNames[d.getDay()];
				case "ddd" : 	return dayNames[d.getDay()].substr( 0, 2 );
				case "dd" :		return decimal( d.getDate() );
				case "d" :		return d.getDay();
				case "id" :		return d.getDate();
				case "hh" : 	return decimal( ( h = d.getHours() % 12 ) ? h : 12 );
				case "h" :		return decimal( d.getHours() );
				case "nn" : 	return decimal( d.getMinutes() );
				case "ss" : 	return decimal( d.getSeconds() );
				case "a/p" : 	return d.getHours() < 12 ? 'a' : 'p';
			}
		}
	);
}

function decimal(num)
{		
	if ( getInt(num) < 10 ) return "0" + num;
	
	return num;
}

function getInt(num)
{
	return parseInt( num * 1 );
}

function splitDate( d )
{
	var data = d.split(" ");
	
	var s = data[0];
	s = s.split("-");
	
	var h = data[1];
	h = h.split(":");
	
	return { 
		year 	: getInt( s[0] ),
		month 	: getInt( s[1] ) - 1,
		day 	: getInt( s[2] ),
		hour	: getInt( h[0] ),
		minutes : getInt( h[1] )
	}
}

function getDay(d)
{
	var d = d.getDay() - 1;
	if ( d == -1 ) d = 6;
	return d;
}


Date.prototype.getWeek = function()
{
	var year = this.getFullYear();
	var month = this.getMonth() + 1;
	var day = this.getDate();
	
	var a = Math.floor( ( 14 - month ) / 12 );
	var y = year + 4800 - a;
	var m = month + (12 * a) - 3;
	var jd = 	day + Math.floor( ( (153 * m) + 2 ) / 5 ) +
				(365 * y ) + Math.floor(y/4) - Math.floor(y/100) +
				Math.floor( y / 400 ) - 32045;
	
	var d4 = ( jd + 31741 - (jd%7) )% 146097 % 36524 % 1461;
	var l = Math.floor( d4 / 1460 );
	var d1 = ( ( d4 -l ) % 365 ) + l;
	var wk = Math.floor( d1/7)+1;
	return wk;		
}

/*
Date.prototype.getWeek = function()
{
	var today = new Date();
	
	today.setFullYear( this.getFullYear(), this.getMonth(), this.getDate() );
	var d = today.getDay();
	
	
	
	today.setDate( today.getDate() + ( 4 - d ) );
	
	var yn = today.getFullYear();
	var zbdocy = Math.floor( ( today.getTime() - new Date( yn, 0, 1, -6 ) ) / 86400000 );
	var wn = 1 + Math.floor( zbdocy / 7 );
	
	return wn;
}
*/

Date.prototype.clone = function()
{
	return new Date(this.getTime());
}


var monthNames = new Array(

	'januari',
	'februari',
	'maart',	
	'april',
	'mei',
	'juni',	
	'juli',
	'augustus',
	'september',	
	'oktober',
	'november',
	'december'
);

var dayNames = new Array(

	"zondag",
	"maandag",
	"dinsdag",
	"woensdag",
	"donderdag",
	"vrijdag",
	"zaterdag"
);



function getWeekStart()
{
	var today = new Date().format('d dd m yyyy');
	var data = today.split(" ");
		
	var weekDay = parseInt( data[0] );
	var dayOfset = weekDay - 1;
	var monthDay = parseInt( data[1] );
	var month = parseInt( data[2] );
	var year = parseInt( data[3] );
	
	var startDate = new Date( year, month, monthDay - dayOfset );
	
	return startDate;
}
