
function widgetDatum ( id, default_datum, connect_min, connect_max, minDate, maxDate, connect_offset ) {

	TraminoReady(function() {
	
		$("#"+id).datepicker({
			beforeShow: function( input, inst){
  			    $(inst.dpDiv).addClass('jquery-ui');
    		},
			firstDay: 1,
			// showOn: 'button',
			// buttonImage: 'https://tramino.s3.amazonaws.com/tramino/gfx/calendar.gif',
			// buttonImageOnly: true,
			dateFormat: 'dd.mm.yy',
			altFormat: 'dd.mm.yy',
			duration: '',
			firstDay: 1,
			dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
			dayNamesMin:['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
			dayNamesShort:['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
			monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
			monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],
			defaultDate: default_datum
		});
		
		if ( default_datum ) {
			$("#"+id).datepicker('setDate', default_datum );
		}
		
		if ( minDate ) {
			$("#"+id).datepicker( 'option', 'minDate', new Date( minDate ) );
		}
		
		if ( maxDate ) {
			$("#"+id).datepicker( 'option', 'maxDate', new Date( maxDate ) );
		}

		$("#"+id).change( function(){
			
			checkDatum(this);
			d =  $("#"+id).datepicker('getDate');
			if ( d ) {


				if ( connect_min ) {

					d2 = $("#"+connect_min).datepicker('getDate');
					naechte = parseInt( ( Date.parse( d ) - Date.parse( d2 ) + 3600000 ) / ( 60*60*24*1000 ), 10);
					// console.log( d, d2, connect_offset, naechte );
					if ( naechte >= 0 - connect_offset ) {
						var newdate = new Date( Date.parse( d ) + ( 1000 * 60 * 60 * 24 * connect_offset ) );
						console.log( newdate  );
						$("#"+connect_min).datepicker('setDate', newdate );
					}


					// $("#"+connect_min).datepicker('option', 'minDate', $("#"+id).datepicker('getDate') );
					
					
				}

				if ( connect_max ) {

					d2 = $("#"+connect_max).datepicker('getDate');
					naechte = parseInt( ( Date.parse( d ) - Date.parse( d2 ) + 7600000 ) / ( 60*60*24*1000 ), 10);
					// console.log( d, d2, connect_offset, naechte );
					if ( naechte <= 0 + connect_offset ) {
						var newdate = new Date( Date.parse( d ) - ( 1000 * 60 * 60 * 24 * connect_offset ) );
						console.log( newdate  );
						$("#"+connect_max).datepicker('setDate', newdate );
					}


					// $("#"+connect_min).datepicker('option', 'minDate', $("#"+id).datepicker('getDate') );
					
					
				}


			}

		});
		
	} );
	
}

function checkDatum ( obj ){
	var erg;
	var match = /^(\d{2})(\d{2})(\d{4})$/;
	var str = obj.value;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + "." + erg[3];
		return 1;
	}
	match = /^(\d{2})(\d{2})(\d{2})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + ".20" + erg[3];
		return 1;
	}
	
	match = /^(\d{2})\.(\d{2})\.(\d{2})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + ".20" + erg[3];
		return 1;
	}
	
	match = /^(\d{1})\.(\d{2})\.(\d{2})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + ".20" + erg[3];
		return 1;
	}
	
	match = /^(\d{2})\.(\d{1})\.(\d{2})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + ".20" + erg[3];
		return 1;
	}
	
	match = /^(\d{1})\.(\d{1})\.(\d{2})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + ".20" + erg[3];
		return 1;
	}
	
	match = /^(\d{2})\.(\d{2})\.(\d{4})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + "." + erg[3];
		return 1;
	}
	
	match = /^(\d{1})\.(\d{2})\.(\d{4})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + "." + erg[3];
		return 1;
	}
	
	match = /^(\d{2})\.(\d{1})\.(\d{4})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + "." + erg[3];
		return 1;
	}
	
	match = /^(\d{1})\.(\d{1})\.(\d{4})$/;
	if( erg = match.exec( str ) ){
		obj.value = erg[1] + "." + erg[2] + "." + erg[3];
		return 1;
	}
}