function mykal(startdatum,monatslaengen,formname){
	this.startdatum=startdatum;
	this.monatslaengen=monatslaengen;
	this.formname=formname;

	this.Update=mykalUpdate;
	this.testDatum=mykalTestDatum;
	this.aktualisiereBis=mykalAktualisiereBis;
	this.aktualisiereVon=mykalAktualisiereVon;

	for(var i in this.monatslaengen){
		this.enddatum=i;
	}
	this.enddatum+="-12-31";

}
function mykalUpdate(wer){
	var vondat="";
	var bisdat="";
	var sel="";
	var tmp;

	this.testDatum("von");
	this.testDatum("bis");


	sel=document.forms[this.formname].elements['von_jahr'];
	vondat=sel.options[sel.selectedIndex].value+"-";
	sel=document.forms[this.formname].elements['von_monat'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp+"-";
	sel=document.forms[this.formname].elements['von_tag'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp;

	// wenn das von datum kleiner als startdatum
	if(vondat<this.startdatum){
		//alert(vondat);
		// annahme : der tag wurde umgestellt
		var tmp=vondat.split("-");
		var t=parseInt(Number(tmp[2]));
		var m=parseInt(Number(tmp[1]));
		var j=parseInt(Number(tmp[0]));

		var tmp=this.startdatum.split("-");
		var t_s=parseInt(Number(tmp[2]));
		var m_s=parseInt(Number(tmp[1]));
		var j_s=parseInt(Number(tmp[0]));
		if(m<m_s){
			//schalte das jahr einen später
			sel=document.forms[this.formname].elements['von_jahr'];
			if(sel.options.length>sel.selectedIndex+1){
				sel.selectedIndex++;
			}
		}
	}
	sel=document.forms[this.formname].elements['von_jahr'];
	vondat=sel.options[sel.selectedIndex].value+"-";
	sel=document.forms[this.formname].elements['von_monat'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp+"-";
	sel=document.forms[this.formname].elements['von_tag'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp;



	// wenn das von datum kleiner als startdatum
	if(vondat<this.startdatum){
		//alert(vondat);
		// annahme : der tag wurde umgestellt
		var tmp=vondat.split("-");
		var t=parseInt(Number(tmp[2]));
		var m=parseInt(Number(tmp[1]));
		var j=parseInt(Number(tmp[0]));

		var tmp=this.startdatum.split("-");
		var t_s=parseInt(Number(tmp[2]));
		var m_s=parseInt(Number(tmp[1]));
		var j_s=parseInt(Number(tmp[0]));
		if(t<t_s){
			//schalte den monat einen später
			sel=document.forms[this.formname].elements['von_monat'];
			if(sel.options.length>sel.selectedIndex+1){
				sel.selectedIndex++;
			}
		} 
	}
	sel=document.forms[this.formname].elements['von_jahr'];
	vondat=sel.options[sel.selectedIndex].value+"-";
	sel=document.forms[this.formname].elements['von_monat'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp+"-";
	sel=document.forms[this.formname].elements['von_tag'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp;











	// wenn das von datum kleiner als startdatum
	if(vondat<this.startdatum){
		//	setzte auf von_datum auf startdatum
		tmp=this.startdatum.split("-");
		// Jahresumstellung darf nicht vorkommen!!
		// Monatsumstellung:
		sel=document.forms[this.formname].elements['von_monat'];
		sel.selectedIndex=tmp[1]-1;
		// Tagesumstellung:
		sel=document.forms[this.formname].elements['von_tag'];
		sel.selectedIndex=tmp[2]-1;
	}

	sel=document.forms[this.formname].elements['von_jahr'];
	vondat=sel.options[sel.selectedIndex].value+"-";
	sel=document.forms[this.formname].elements['von_monat'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp+"-";
	sel=document.forms[this.formname].elements['von_tag'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	vondat+=tmp;

	sel=document.forms[this.formname].elements['bis_jahr'];
	bisdat+=sel.options[sel.selectedIndex].value+"-";
	sel=document.forms[this.formname].elements['bis_monat'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	bisdat+=tmp+"-";
	sel=document.forms[this.formname].elements['bis_tag'];
	tmp=sel.options[sel.selectedIndex].value;
	if(tmp<10){tmp="0"+tmp;}
	bisdat+=tmp;

	if(bisdat<=vondat){
		// mache Unterscheidung nach dem ausloesenden Event
		switch(wer){
			case "von_tag":
			case "von_monat":
			case "von_jahr":
				this.aktualisiereBis(vondat,bisdat,1);
			break;
			case "bis_tag":
			case "bis_monat":
			case "bis_jahr":
				this.aktualisiereVon(vondat,bisdat,1);
			break;
		}
	}
}

function mykalAktualisiereBis(vondat,bisdat,ok){
	// stelle "bis" auf einen tag nach "von"
	var tmp=vondat.split("-");
	var t=parseInt(Number(tmp[2]));
	var m=parseInt(Number(tmp[1]));
	var j=parseInt(Number(tmp[0]));
	t++;
	if(t>this.monatslaengen[j][m]){t=1;m++;}
	if(m>12){m=1;j++;}

	var bis_sql="";
	bis_sql+=j+"-";
	bis_sql+=(m<10?"0"+m:m)+"-";
	bis_sql+=(t<10?"0"+t:t);
	if(bis_sql<=this.enddatum){
		var jindex=0;
		sel=document.forms[this.formname].elements['bis_jahr'];
		if(sel.options.length >1 && sel.options[1].value==j){jindex=1;}
		if(sel.options.length >2 && sel.options[2].value==j){jindex=2;}
		if(sel.options.length >3 && sel.options[3].value==j){jindex=3;}
		sel.selectedIndex=jindex;

		sel=document.forms[this.formname].elements['bis_monat'];
		sel.selectedIndex=m-1;
		
		sel=document.forms[this.formname].elements['bis_tag'];
		sel.selectedIndex=t-1;
//		alert('B #'+bis_sql + ' # '+ vondat +' # '+ bisdat);
	}else{
		if(ok==1)this.aktualisiereVon(vondat,bisdat,0);
	}
}
function mykalAktualisiereVon(vondat,bisdat,ok){
	// stelle "von" auf einen tag vor "bis"
	var tmp=bisdat.split("-");
	var t=parseInt(Number(tmp[2]));
	var m=parseInt(Number(tmp[1]));
	var j=parseInt(Number(tmp[0]));
	t--;
	if(t==0){t=31;m--;}
	if(m==0){m=12;j--;}
	t=Math.min(t,this.monatslaengen[j][m]);
	var von_sql="";
	von_sql+=j+"-";
	von_sql+=(m<10?"0"+m:m)+"-";
	von_sql+=(t<10?"0"+t:t);
	if(this.startdatum<=von_sql){
		var jindex=0;
		sel=document.forms[this.formname].elements['von_jahr'];
		if(sel.options.length >1 && sel.options[1].value==j){jindex=1;}
		sel.selectedIndex=jindex;

		sel=document.forms[this.formname].elements['von_monat'];
		sel.selectedIndex=m-1;
		
		sel=document.forms[this.formname].elements['von_tag'];
		sel.selectedIndex=t-1;
//		alert('V #'+von_sql + ' # '+ vondat +' # '+ bisdat);
	}else{
		if(ok==1)this.aktualisiereBis(vondat,bisdat,0);
	}
}	

function mykalTestDatum(was){
	var tag="";
	var monat="";
	var jahr="";
	var sel="";
	sel=document.forms[this.formname].elements[was+'_jahr'];
	jahr=sel.options[sel.selectedIndex].value;
	sel=document.forms[this.formname].elements[was+'_monat'];
	monat=sel.options[sel.selectedIndex].value;
	sel=document.forms[this.formname].elements[was+'_tag'];
	tag=sel.options[sel.selectedIndex].value;
	if(this.monatslaengen[jahr][monat]<=tag){
		sel=document.forms[this.formname].elements[was+'_tag'];
		sel.selectedIndex=this.monatslaengen[jahr][monat]-1;
	}
}
