/*  Birth date JavaScript, version 1.0.0
 *  (c) 2007 Robin Esselink
 *
 *  Birth date is freely distributable.
/*--------------------------------------------------------------------------*/
function DateCntrl(name,dtype,year,month,day){
	// properties
	this.name=name;
			
	this.date=(year==0&&month==0&day==0 ? null : new Date(year,month,day));
	this.dtype=dtype;
	this.active="Day";
	this.elems=document.forms[0].elements;
	this.lib=new DateCntrl_Lib();

	// methods
	this.refresh=DateCntrl_refresh;
	this.controlDate=DateCntrl_controlDate;
			
	// initialize form elements
	with(this.lib)
	for(var i=0;i<fields.length;i++){
		var fieldname=name+fields[i];
		this.elems[fieldname].onfocus=inputDateFocus;
		this.elems[fieldname].onblur=inputDateBlur;
		this.elems[fieldname].onkeypress=inputDateKeyPress;
	};
	this.elems[name+"dn"].onclick=inputDateAct;
	this.elems[name+"up"].onclick=inputDateAct;
	this.refresh();
};

function DateCntrl_Lib(){
	this.Month=new Array('Jan','Feb','Mrt','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Dec');
	this.Day=new Array('Zo','Ma','Di','Wo','Do','Vr','Za');
	this.fields=new Array("Day","FullYear","Month","Date");
};

// methods
function DateCntrl_refresh(f){
	var controlname=this.name.substring(0,this.name.length-2);
	if(this.date!=null)
	with(this){
		for(var i=0;i<lib.fields.length;i++){
			var fieldname=lib.fields[i];
			var value=eval('date.get' + fieldname +'()');
			elems[name+fieldname].value=( lib[fieldname] ? lib[fieldname][value] : value );
		};
		if(!f) elems[name+active].select();
		elems[controlname].value=(dtype=='NDATE'? Math.round(Date.UTC(date.getFullYear(),date.getMonth(),date.getDate())/1000 ) : date.getFullYear()+','+(date.getMonth()+1)+','+date.getDate());
	};
};

function DateCntrl_controlDate(){
	with(this){
		var dateval=parseInt(elems[name+'Date'].value);
		var yearval=parseInt(elems[name+'FullYear'].value); if(yearval < 100) yearval+=2000;
		var monthval=elems[name+'Month'].value.toLowerCase();
		if(isNaN(monthval)){
			for(var i=0;i<lib.Month.length;i++)
				if(monthval==lib.Month[i].toLowerCase()){
					monthval=i;
					break;
				};
		}else{
			monthval--;
		};
	};
	return new Date(yearval,monthval,dateval);
};

// functions for event handlers
function getInputDateCntrl(n){
	return inputDates[n.substr(0,n.lastIndexOf('__'))]
};
function getInputDateCmd(n){
	return n.substr(n.lastIndexOf('__')+2)
};

// form field event handlers
function inputDateFocus(){
	var cntrlHndl=getInputDateCntrl(this.name);
	cntrlHndl.active=getInputDateCmd(this.name);
	this.select();
};
function inputDateBlur(){
	var cntrlHndl=getInputDateCntrl(this.name);
	if(!isNaN(cntrlHndl.controlDate()) && cntrlHndl.controlDate() != cntrlHndl.date){
		cntrlHndl.date=cntrlHndl.controlDate();
	};
	cntrlHndl.refresh(true);			
};		
function inputDateAct(){
	var cntrlHndl=getInputDateCntrl(this.name);
	var field=cntrlHndl.active; if(field=="Day") field="Date";
	var addvalue=(getInputDateCmd(this.name) == 'up'? 1 : -1);
	eval( 'cntrlHndl.date.set' + field + '(cntrlHndl.date.get' + field +'()+addvalue)' );
	cntrlHndl.refresh();
};
function inputDateKeyPress(e){
	var cntrlHndl=getInputDateCntrl(this.name);
	var whichASC = event.keyCode; // key's ASCII code
  	var whichChar = String.fromCharCode(whichASC);
	var n=this.name;
	if(whichChar=='-'){
		event.keyCode=0;
		cntrlHndl.elems[cntrlHndl.name+"dn"].click();
	}else if(whichChar=='+'){
		event.keyCode=0;
		cntrlHndl.elems[cntrlHndl.name+"up"].click();
	}else if(n.substr(n.lastIndexOf('_')+1)!='Month'){
		if(event.keyCode < 48 || event.keyCode > 57){
		 event.keyCode=0;
		};
	};
};
var inputDates = new Object();

		