
///////////////////////////////////////////////////////////////////////////////////////////////
// PC NS 4.7 doesn't like dynamicly written SELECT boxes
// MAC IE 5 & NS 4.7 have problems with timezoneoffset
// aTimes = (name,mandatory,future only)

function yearGet(v){return(v=v.getYear())<1900?v+1900:v}
function nowGet(){return new Date()}

var YEAR_START	= 2004;
var YEARS	= new Array('jaar',2004,2005,2006,2007, 2008);
//for (var i=YEAR_START; i < yearGet(nowGet())+3; i++){YEARS[YEARS.length]=i}

var LABELS	= new Array('jaar','maand','dag','uur','minuten')
var MONTHS	= new Array('maand','januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');

function yearIsLeap(y){return y%4==0?true:false}
function nZero(n){return n>9?n:('0'+n)}

function calMake(t,m,y){
	if (!m && !y){m=selGet(t+'_month');m=m=='*'?m:m-1;y=selGet(t+'_year')}if(m=='*'){m=nowGet().getMonth()}
	if(y=='*'){y=yearGet(nowGet())}winOpen('calendar','t='+t+'&m='+m+'&y='+y);
}

function quickNav() {SID=ref('PHPSESSID')?'&PHPSESSID='+ref('PHPSESSID').value:'';D.location='/?request=home&date='+selGet('quick_year')+'-'+nZero(selGet('quick_month'))+'-'+nZero(selGet('quick_day')+SID)}
function monthDayLast(m,y){if(m==1){m=yearIsLeap(y)?29:28}else{m=(m==3||m==5||m==8||m==10)?30:31}return m}


/////////////////////////////////////////////////////////////////////////////////////////

function dateMake(s){s=eval(s);return new Date(s.y,s.m,s.d,s.hr,s.mi)}

function oDATE(n,v,p){
	var t=this,S= '_';
	t.n=n;t.v=v;t.p=p;t.ly=n+S+'year';t.lm =n+S+'month';t.ld=n+S+'day';t.lhr=n+S+'hrs';t.lmi=n+S+'mins';
	t.oy=ref(t.ly);t.om=ref(t.lm);t.od=ref(t.ld);t.ohr=ref(t.lhr);t.omi=ref(t.lmi);
	t.y=function(){return (s=selGet(t.ly))!='*'?s:yearGet(nowGet())};
	t.m=function(){return (s=selGet(t.lm)-1)!='*'?s:nowGet().getMonth()};
	t.d=function(){return (s=selGet(t.ld))!='*'?s:nowGet().getDate()};
	t.hr=function(){return t.ohr?selGet(t.lhr):false};
	t.mi=function(){return t.omi?selGet(t.lmi):false};
	t.oy.onchange=function(){dMake(t)};
	t.om.onchange=function(){dMake(t)};
}

function selOptionMake(o,i,v,l){o.options[i]= new Option(v,l)}
function selSet(o,v){if(o.options[v]){o.options[v].selected=true}}
function selGet(s){return ref(s).options[ref(s).selectedIndex].value}

function dBuild(o){
	with(o){
		var a=v?1:0;
		for(var i=a;i<YEARS.length;i++){selOptionMake(oy,i-a,YEARS[i],i==0?'*':YEARS[i])}
		for(var i=a;i<MONTHS.length;i++){selOptionMake(om,i-a,MONTHS[i],i==0?'*':i)}
		for(var i=a;i<31;i++){selOptionMake(od,i-a,i==0?LABELS[2]:i,i==0?'*':i)}
		if (ohr){for(var i=a;i<25;i++){selOptionMake(ohr,i-a,i==0?LABELS[3]:nZero(i-1),i==0?'*':i-1)}}
		if (omi){for(var i=a;i<13;i++){selOptionMake(omi,i-a,i==0?LABELS[4]:nZero((i-1)*5),i==0?'*':(i-1)*5)}}
	}
}

function dMake(o,j){
	with(o){
		var a=v?1:0;
		var j=(j!=null)?j:monthDayLast(m(),y());
		with (od){
			s=selectedIndex;
			for(var i=28;i<j+1;i++){options[i-a]=new Option(i,i)}
			for(var i=31;i>j;i--){options[i-a]=null}
			if(options.length-1<=s){
				selectedIndex = options.length-1;
			}else{
				selectedIndex = s;
			}
		}
	}
}

function dInit(o,D){var D=D?D:nowGet();dSet(o,o.v||D?D:null)}

function dSet(o,D){
	dMake(o, D?monthDayLast(D.getMonth(),yearGet(D)):null );
	with(o){
		var a=v?0:1;
		selSet(oy, D?a+yearGet(D)-YEAR_START:0 );
		selSet(om, D?a+D.getMonth():0 );
		selSet(od, D?a-1+D.getDate():0 );
		if(ohr)selSet(ohr, D?a+D.getHours():0 );
		if(omi)selSet(omi, D?a+Math.floor(D.getMinutes()/5):0 );
	}

}

function dateTimeInit(dt){
	for (var i=0;i<TIMES.length;i+=3){
		eval(TIMES[i] +'= new oDATE("'+TIMES[i]+'",'+TIMES[i+1]+','+TIMES[i+2]+')');dBuild(eval(TIMES[i]))
		if(dt&&(dt[i/3]!=null)){ymd=dt[i/3].split('-');dInit(eval(TIMES[i]),new Date(ymd[0],ymd[1]-1,ymd[2]))}
	}
}
