var CmooDateSelects = new Class({
	mDays : [31,28,31,30,31,30,31,31,30,31,30,31],
	mindate: null,
	maxdate: null,
	curdate: null,
	container: null,
	initialize: function(container, curdate, mindate, maxdate){
		this.container=$(container);
		this.mindate=mindate;
		this.maxdate=maxdate;
		this.setDate(curdate);
	},
	getDate : function(){
		var sL = this.container.getElements('select');
		return [sL[0].get('value'),sL[1].get('value'),sL[2].get('value')];
	},
	dateChange : function(){
		var curdate=this.getDate();
		// napok feltoltese
		var sL = this.container.getElements('select');
		this.mDays[1] = this.isLeap(curdate[0]) ? 29 : 28;
		if (curdate[2]>this.mDays[curdate[1]-1]) curdate[2]=this.mDays[curdate[1]-1];
		sL[2].empty();
		for (var i=1; i<=this.mDays[curdate[1]-1]; i++) new Element('option',{'html':(i<10?'0'+i:i), 'value':i, 'selected': (i==curdate[2])}).inject(sL[2]);
	},
	setDate : function(datearray){
		this.curdate = datearray;
		sL = this.container.getElements('select');
		sL[0].empty();
		sL[1].empty();
		sL[2].empty();
		sL[0].removeEvents('change');
		sL[1].removeEvents('change');
		// evszamok feltoltese
		for (var i=this.mindate[0]; i<=this.maxdate[0]; i++) new Element('option',{'html':i, 'value':i, 'selected': (i==this.curdate[0])}).inject(sL[0]);
		// honapok feltoltese
		for (var i=1; i<=12; i++) new Element('option',{'html':(i<10?'0'+i:i), 'value':i, 'selected': (i==this.curdate[1])}).inject(sL[1]);
		// napok feltoltese
		this.mDays[1] = this.isLeap(this.curdate[0]) ? 29 : 28;
		for (var i=1; i<=this.mDays[this.curdate[1]-1]; i++) new Element('option',{'html':(i<10?'0'+i:i), 'value':i, 'selected': (i==this.curdate[2])}).inject(sL[2]);
		sL[0].addEvent('change',this.dateChange.bind(this));
		sL[1].addEvent('change',this.dateChange.bind(this));
	},
	isLeap : function (y) {
		if (y % 400 == 0) {
			return true;
		}
		else if (y % 100 == 0) {
			return false;
		}
		else if (y % 4 == 0) {
			return true
		}
		return false;
	}
});
