;---------------------------------------------------------------------
delete_file:
;    call progress_bar
;    jmp  still
    mov  [confirmation_type],delete_type
    call confirmation_action
    cmp  [work_confirmation_yes],1
    jne  red  ;reload_dir

    xor  eax,eax
    mov  [files_counter],eax
    mov  [directories_counter],eax
    mov  [files_size.low],eax
    mov  [files_size.high],eax
    call get_files_information

    call delete_marked_files
    cmp  [delete_marked_yes],1
    je	 .end_1   ;reload_dir_all

    xor  eax,eax
    xor  edx,edx
    cmp  [select_panel_counter],0
    jne  .right_1
    mov  ax,[left_start_draw_cursor_line]
    mov  ebx,10
    div  ebx
    mov  ebx,[left_start_draw_line]
    add  ebx,eax
    imul ebx,304
    add  ebx,[left_folder_data]
    call prepare_data_7
    mov   esi,read_folder_name	  ;read_folder.name
    jmp  .end
.right_1:
    mov  ax,[right_start_draw_cursor_line]
    mov  ebx,10
    div  ebx
    mov  ebx,[right_start_draw_line]
    add  ebx,eax
    imul ebx,304
    add  ebx,[right_folder_data]
    call prepare_data_7
    mov   esi,read_folder_1_name   ;read_folder_1.name
.end:
    mov   [error_pointer],ebx
    mov   edi,file_name   ;delete_file_data.name
    call  copy_path_1
    test [ebx-40],byte 0x10
    jz	 @f
    push eax ebx
    xor  eax,eax
    mov  [current_progress_value],eax
;    mov  [delete_marked_yes],al
    mov  [draw_all_progressbar],1
    call delete_dir
    pop  ebx eax
    jmp  .end_1
@@:
    call del_file
    test  eax,eax
    jz	 .end_1
    call start_error_window_thread
    jmp  reload_dir_all
.end_1:
    cmp  [select_panel_counter],0
    jne  .right
    call proc_read_left_folder
    jmp  red
.right:
    call proc_read_right_folder
    jmp  red
;---------------------------------------------------------------------
delete_marked_files:
    mov  eax,[directories_counter]
    add  eax,[files_counter]
    mov  [max_progress_value],eax
    
    xor  eax,eax
    mov  [current_progress_value],eax
    mov  [delete_marked_yes],al
    mov  [draw_all_progressbar],1
    
   cmp  [select_panel_counter],al
    jne  .right_1
;    mov  eax,[left_marked_counter]
;    mov  [max_progress_value],eax
    mov  ebp,[left_folder_block]
.start:
    mov  ebx,ebp
    dec  ebx
    imul ebx,304
    add  ebx,[left_folder_data]
    add  ebx,32+40
    cmp  [ebx+299-40],byte 0
    je	 @f
    cmp  [ebx],word '..'
    jne  .continue
    cmp  [ebx+2],byte 0
    je	 .continue_1
.continue:
    mov  esi,read_folder_name	;read_folder.name
    call prepare_data_6
.continue_1:
    mov  [delete_marked_yes],1
@@:
    dec  ebp
    jnz  .start
    cmp  [delete_marked_yes],0
    je	 @f
    mov  [left_start_draw_cursor_line],0
@@:
    ret
.right_1:
;    mov  eax,[right_marked_counter]
;    mov  [max_progress_value],eax
    mov  ebp,[right_folder_block]
.start_1:
    mov  ebx,ebp
    dec  ebx
    imul ebx,304
    add  ebx,[right_folder_data]
    add  ebx,32+40
    cmp  [ebx+299-40],byte 0
    je	 @f
    cmp  [ebx],word '..'
    jne  .continue_2
    cmp  [ebx+2],byte 0
    je	 .continue_3
.continue_2:
    mov   esi,read_folder_1_name   ;read_folder_1.name
    call prepare_data_6
.continue_3:
    mov  [delete_marked_yes],1
@@:
    dec  ebp
    jnz  .start_1
    cmp  [delete_marked_yes],0
    je	 @f
    mov  [right_start_draw_cursor_line],0
@@:
    ret
;---------------------------------------------------------------------
prepare_data_6:
    mov   [error_pointer],ebx
    mov  edi,file_name	 ;delete_file_data.name
    call copy_path_1
;    inc  [current_progress_value]
;    call progress_bar_delete
    test [ebx-40],byte 0x10
    jz	 @f
    call delete_dir
    jmp  .continue
@@:
    inc  [current_progress_value]
    call progress_bar_delete
    call del_file
    test eax,eax
    jz	 .continue  ;  .continue_1
    call start_error_window_thread
    add  esp,8
.continue:
    ret
;---------------------------------------------------------------------
prepare_data_7:
    add  ebx,32+40
    cmp  [ebx],word '..'
    jne  .continue
    cmp  [ebx+2],byte 0
    jne  .continue
    add  esp,4
    jmp  reload_dir
.continue:
    ret
;---------------------------------------------------------------------
delete_dir:
    pusha
    mov   [recursive_pointer],0
    mov   eax,[appl_memory]
    mov   [appl_memory_old],eax
.1:
    mov  [read_delete_dir_data.size],0
    mov  [read_delete_dir_data.return],delete_dir_data
    call read_delete_dir
    test eax,eax
    jz	 @f
    mov   [error_pointer],file_name
    call start_error_window_thread
    popa
    add  esp,8+4
    ret
@@:
    mov  eax,[delete_dir_data+8]
    cmp  eax,2
    ja	 @f
    inc  [current_progress_value]
    call progress_bar_delete
    call del_file
    test eax,eax
    jz	 .end
    mov   [error_pointer],file_name
    call start_error_window_thread
    popa
    add  esp,8+4
    ret
@@:
    imul  eax,304
    add   eax,32
    mov   ebx,eax
    add   ebx,[appl_memory_old]
    cmp   ebx,[appl_memory]
    jbe   @f
    mov   ecx,[appl_memory]
    mov   ecx,ebx
    mov   [appl_memory],ecx
    mcall 64,1
@@:
    mov  eax,[delete_dir_data+8]
    mov  [read_delete_dir_data.size],eax
    mov   eax,[appl_memory_old]
    mov  [read_delete_dir_data.return],eax
    call read_delete_dir
    test eax,eax
    jz	 @f
    mov   [error_pointer],file_name
    call start_error_window_thread
    popa
    add  esp,8+4
    ret
@@:
    call delete_dir_1
    jc	.1
.end:
    call  return_delete_path
    dec   [recursive_pointer]
    cmp   [recursive_pointer],0
    jge	  .1
@@:
    mov   ecx,[appl_memory_old]
    cmp   [appl_memory],ecx
    je	  @f
    mov   [appl_memory],ecx
    mcall 64,1
@@:
    popa
    ret
;---------------------------------------------------------------------
delete_dir_1:
    mov  ebp,[appl_memory_old]
    mov  ebp,[ebp+8]
.start:
    mov  ebx,ebp
    dec  ebx
    imul ebx,304
    add  ebx,[appl_memory_old]
    add  ebx,32+40
    cmp  [ebx],byte '.'
    jne  @f
    cmp  [ebx+1],byte 0
    je	 .continue_4
@@:
    cmp  [ebx],word '..'
    jne  .continue
    cmp  [ebx+2],byte 0
    je	 .continue_4
.continue:
    mov  esi,file_name
    inc  [recursive_pointer]
    call copy_path_2
    test [ebx-40],byte 0x10
    jnz  .continue_3
@@:
    inc  [current_progress_value]
    call progress_bar_delete
    call del_file
    test eax,eax
    jz	 .continue_1
    mov   [error_pointer],file_name
    call start_error_window_thread
    add  esp,4
    popa
    add  esp,8+4
    ret
.continue_1:
    dec  [recursive_pointer]
    call return_delete_path
    dec  ebp
    jnz  .start
    
.continue_4:
    inc  [current_progress_value]
    call progress_bar_delete
    call del_file
    test eax,eax
    jz	 .continue_2
    call start_error_window_thread
    add  esp,4
    popa
    add  esp,8+4
    ret
.continue_2:        
    clc
    ret
.continue_3:
    stc
    ret
;---------------------------------------------------------------------
return_delete_path:
    mov  edi,file_name
@@:
    inc  edi
    cmp  [edi],byte 0
    jne  @r
    dec  edi
@@:
    dec  edi
    cmp  [edi],byte '/'
    jne  @r
    cmp  edi,file_name
    jbe  @f
    mov  [edi],byte 0
@@:
    ret
;---------------------------------------------------------------------
copy_path_2:
    xor   eax,eax
@@:
    cld
    lodsb
    test  al,al
    jnz   @b
    mov   edi,esi
    mov   [edi-1],byte '/'
    mov   esi,ebx
@@:
    cld
    lodsb
    stosb
    test  al,al
    jnz   @b
    ret
;---------------------------------------------------------------------