/*
 *	Initialize date helper in event-entry
 */

// load when DOM ready
jQuery( function()
{
	var etContainer = jQuery( '#eventEndTime' ).hide()
	if( !etContainer || !etContainer.length )
		return;
	
	var start = {},
		end = {};
	
	function findFields( id, name, dest )
	{
		jQuery( id ).children().each( function( i, o )
		{ 
			switch( o.name )
			{
				case name + '[Day]': 		dest.d = jQuery( o ); break;
				case name + '[Month]': 		dest.m = jQuery( o ); break;
				case name + '[Year]': 		dest.y = jQuery( o ); break;
				case name + 'Time[Hour]': 	dest.th = jQuery( o ); break;
				case name + 'Time[Minute]': dest.tm = jQuery( o ); break;
			}
			
		} );
		
		dest.date = function( d )
		{
			if( typeof(d) != 'undefined' )
			{
				function twoDig( v )
				{
					return (""+v).length > 1 ? v : ("0"+v);
				}
				
				dest.y.val( d.getFullYear() ); 
				dest.m.val( twoDig(d.getMonth() +1) ); // months begin at 0
				dest.d.val( twoDig(d.getDate()) );
				dest.th.val( twoDig(d.getHours()) ); 
				dest.tm.val( twoDig(d.getMinutes()) );
				return;
			}

			return new Date( 
				dest.y.val(), 
				dest.m.val() -1, // months begin at 0
				dest.d.val(), 
				dest.th.val(), 
				dest.tm.val() 
			);
		};
	}
	
	findFields( '#eventStartTime', 'start', start );
	findFields( '#eventEndTime', 'end', end );

	start.y.click( changeListener ).keyup( changeListener );
	start.m.click( changeListener ).keyup( changeListener );
	start.d.click( changeListener ).keyup( changeListener );
	start.th.click( changeListener ).keyup( changeListener );
	start.tm.click( changeListener ).keyup( changeListener );
	
	var ettContainer = jQuery( '<p id="eventEndTimeToggle"></p>' ).insertBefore( etContainer ),
		etToggle = jQuery( '<input type="checkbox" name="eventEndTimeToggle" value="1">' ).prependTo( jQuery( '<label>Enddatum angeben</label>' ).prependTo(ettContainer) ).bind( 'click', toggleListener );

	function toggleListener( e )
	{
		if( this.checked )
			etContainer.show();
		else
			etContainer.hide();
		
		changeListener( e );
	}

	function changeListener( e )
	{
		if( end.date() < start.date() || !etToggle[0].checked )
		{
			var d = start.date();
			d.setHours( d.getHours() +6 );
			end.date( d );
		}
			
	}
	
} );


jQuery( function()
{
	var details = jQuery( '#eventDrawingDetails' ),
		button = jQuery( '#drawing_status_0' ),
		button1 = jQuery( '#drawing_status_1' );

	if( !button || !button.length )
		return;

	function toggleListener( e )
	{
		if( button[0].checked )
			details.hide();
		else
			details.show();
	}
	
	button.click( toggleListener ).keyup( toggleListener ).click();
	button1.click( toggleListener ).keyup( toggleListener );
} );