;---------------------------------------------------------------------
k_sort_directory:
	test	dword [status],16
	jnz	still
	or	dword [status],16

	call	get_memory_for_thread_stack
	mov	[thread_stack_5],eax
	mcall	51,1,thread5	; thread_stack_5
	jmp	still
;---------------------------------------------------------------------
thread5:				; start of bgrd thread
	mcall	9,procinfo_threads,-1
	mov	eax,[ebx+30]
	mov	[PID5],eax
	mcall	40,0x27
	mov	eax,[sort_type]
	cmp	[sort_type],dword 0
	jne	@f
	
	mov	[option_group2],sort0
	jmp	.thread5
;---------------------------------------------------------------------
@@:
	cmp	[sort_type],dword 2
	jne	@f
	
	mov	[option_group2],sort2
	jmp	.thread5
;---------------------------------------------------------------------
@@:
	cmp	[sort_type],dword 4
	jne	@f
	
	mov	[option_group2],sort4
	jmp	.thread5
;---------------------------------------------------------------------
@@:
	mov	[option_group2],sort6
;-----------------------------------
.thread5:
	mov	[sort_type_old],eax
	mov	eax,[option_group2]
	mov	[option_group2_old],eax
;-----------------------------------
.red:
	call	.draw_window
;-----------------------------------
.still:
	mcall	10	; wait here for event

	cmp	eax,1	; redraw request ?
	je	.red

	cmp	eax,2	; key in buffer ?
	je	.key

	cmp	eax,3	; button in buffer ?
	je	.button

	cmp	eax,6	; mouse in buffer ?
	je	.mouse

	jmp	.still
;---------------------------------------------------------------------
.mouse:
	push	dword option_boxes_sort
	call	[option_box_mouse]

	cmp	[option_group2],sort0
	jne	@f
	
	mov	[sort_type],dword 0
	jmp	.still
;---------------------------------------------------------------------
@@:
	cmp	[option_group2],sort2
	jne	@f
	
	mov	 [sort_type],dword 2
	jmp	.still
;---------------------------------------------------------------------
@@:
	cmp	[option_group2],sort4
	jne	@f
	
	mov	[sort_type],dword 4
	jmp	.still
;---------------------------------------------------------------------
@@:
	cmp	[option_group2],sort6
	jne	@f
	
	mov	[sort_type],dword 6
	jmp	.still
;---------------------------------------------------------------------
.key:
	mcall
	cmp	ah,27
	je	.close

	cmp	ah,13
	je	.kok

	cmp	ah,177 ;down
	je	.fdn

	cmp	ah,178 ;up
	jne	.still

	cmp	[sort_type],0
	je	.still
	
	sub	[sort_type],2
	jmp	.flagcont
;---------------------------------------------------------------------
.fdn:
	cmp	[sort_type],6
	je	.still
	
	add	[sort_type],2
	
.flagcont:
	cmp	[sort_type],dword 0
	jne	@f
	
	mov	[option_group2],sort0
	call	.draw_opt_boxes
	jmp	.still
;---------------------------------------------------------------------
@@:
	cmp	[sort_type],dword 2
	jne	@f
	
	mov	[option_group2],sort2
	call	.draw_opt_boxes
	jmp	.still
;---------------------------------------------------------------------
@@:
	cmp	[sort_type],dword 4
	jne	@f
	
	mov	[option_group2],sort4
	call	.draw_opt_boxes
	jmp	.still
;---------------------------------------------------------------------
@@:
	cmp	[sort_type],dword 6
	jne	.still	;@f
	
	mov	[option_group2],sort6
	call	.draw_opt_boxes
	jmp	.still
;---------------------------------------------------------------------
.button:			 ; button
	mcall	17 		; get id
	cmp	ah,1			; button id=1 ?
	jne	.noclose
;-------------------------------
.close:
	mov	eax,[sort_type_old]
	mov	[sort_type],eax
	mov	eax,[option_group2_old]
	mov	[option_group2],eax
.close_1:
	xor	dword [status],16
	xor	eax,eax
	mov	[PID5],eax
	mcall	68,13,[thread_stack_5]
	mcall	-1 		; close this program
;---------------------------------------------------------------------
.noclose:
.kok:
	mov	eax,[load_directory_pointer]
	cmp	[eax+4],dword 0
	je	.close_1
	
	call	load_directory.copy_dir_path
	call	load_directory.sort
	mov	[sort_directory_flag],byte 1
	jmp	.close_1
;---------------------------------------------------------------------
;	 *********************************************
;	 ******** WINDOW DEFINITIONS AND DRAW ********
;	 *********************************************
.draw_window:
	mcall	12,1
	xor	eax,eax			 ; function 0 : define and draw window
	xor	esi,esi
	mcall	,<100,300>,<100,110>,0x13909090,,labelt5
	mcall	8,<120,40>,<50,20>,4,0xdddddd
	mcall	4,<46,28>,0xffffff,sorttext,sorttext.size
	xor	ecx,ecx
	mcall	,<135,57>,,ok_btn,ok_btn.size
	call	.draw_opt_boxes
;	mcall	47,0x80000,[PID5],<200, 5>,0xffffff
	mcall	12,2
	ret
;---------------------------------------------------------------------
.draw_opt_boxes:
	push	dword option_boxes_sort
	call	[option_box_draw]
	ret
;---------------------------------------------------------------------