dialog_line:
	    mov [string_x],eax
	    mov [string_y],ebx
	    mov [MaxSizeString],ecx

	    and [position],0
	    mov eax,string_
	    mov ebx,64/4
	    next_byte_cleare:
	    mov [eax],dword 0
	    add eax,4
	    dec ebx
	    jnz next_byte_cleare
	    call print_line
	    call print_cursor

opros:
	mcall SF_SLEEP, 5 ;fix cpu use 100%
	mcall SF_WAIT_EVENT

	cmp eax,1 ;redraw window
	jne @f
		call dialog2_draw

		mov ebx,[string_x]
		shl ebx,16
		add ebx,[string_y]
		mov edx,string_
		mov esi,[MaxSizeString]
		mcall SF_DRAW_TEXT,,0
		jmp opros
	@@:
	cmp eax,3 ;press button
	je exit_cycle

	cmp eax,2 ;press key
	jne opros

	    mcall SF_GET_KEY
	    shr eax,8

	    cmp al,13
	    je exit_cycle
	    cmp al,8
	    je backspace
	    cmp al,176
	    je left
	    cmp al,179
	    je right
	    cmp al,32
	    je probel

	    inc [position]
	    inc [MaxSizeString]
	    call MinMaxCorrect
	    dec [MaxSizeString]
	    test ecx,ecx
	    jz no_maximum_position
	    jmp opros
	    no_maximum_position:


	    mov ebx,[position]
	    dec ebx
	    mov [string_+ebx],al

	    call print_line
	    call print_cursor
	    jmp  opros
  backspace:
	    dec [position]
	    call MinMaxCorrect
	    mov ebx,[position]
	    mov [string_+ebx],byte ' '

	    call print_line
	    call print_cursor
	    jmp opros

       left:
	    dec [position]
	    call MinMaxCorrect
	    call print_line
	    call print_cursor
	    jmp opros

      right:
	    inc [position]
	    call MinMaxCorrect
	    call print_line
	    call print_cursor
	    jmp opros

     probel:
	    mov ebx,[position]
	    mov [string_+ebx],byte ' '
	    inc [position]
	    call MinMaxCorrect
	    call print_line
	    call print_cursor
	    jmp opros

 exit_cycle:
	     inc [position]
	     mov ebx,[position]
	     mov [string_+ebx],byte 13
	     exit_opros:

	     call print_line
	    ret
;---------------------------------------------------------------
print_line:
	mov ebx,[string_x]
	mov ecx,[string_y]
	mov edx,[MaxSizeString]
	shl ebx,16
	shl ecx,16
	imul edx,6
	add ebx,edx
	add ebx,2
	add ecx,10
	mov edx,0xffffff
	mcall SF_DRAW_RECT
	mov ebx,[string_x]
	shl ebx,16
	add ebx,[string_y]
	mov edx,string_
	mov esi,[MaxSizeString]
	mcall SF_DRAW_TEXT,,0
	ret

print_cursor:
	mov ebx,[position]
	mov ecx,[string_y]
	imul ebx,6
	add ebx,[string_x]
	shl ebx,16
	shl ecx,16
	add ebx,2
	add ecx,8
	mcall SF_DRAW_RECT,,,0xff6c58
	ret
;----------------------------------------------------------
MinMaxCorrect:
	    mov ebx,[MaxSizeString]
	    xor ecx,ecx

	    cmp [position],ebx
	    jl no_maximum_length_string
	    mov [position],ebx
	    mov ecx,1	 ;maximul position
	    no_maximum_length_string:

	    cmp [position],0
	    jns no_minimum_length_string
	    and [position],0
	    no_minimum_length_string:

	    ret
;----------------------------------------------------------
string_       rb 65
position      dd 0
MaxSizeString dd 0
string_x      dd 0
string_y      dd 0

;----------------------------------------------------------
;input:
; eax - pointer to string
;output:
; eax - value
str_to_int:
	xor edx,edx
  cycle_value_:
	xor ebx,ebx
	mov bl,byte[eax]

	cmp bl,'0'
	jne no_0
	mov ebx,0
	jmp exit_v
	no_0:
	cmp bl,'1'
	jne no_1
	mov ebx,1
	jmp exit_v
	no_1:
	cmp bl,'2'
	jne no_2
	mov ebx,2
	jmp exit_v
	no_2:
	cmp bl,'3'
	jne no_3
	mov ebx,3
	jmp exit_v
	no_3:
	cmp bl,'4'
	jne no_4
	mov ebx,4
	jmp exit_v
	no_4:
	cmp bl,'5'
	jne no_5
	mov ebx,5
	jmp exit_v
	no_5:
	cmp bl,'6'
	jne no_6
	mov ebx,6
	jmp exit_v
	no_6:
	cmp bl,'7'
	jne no_7
	mov ebx,7
	jmp exit_v
	no_7:
	cmp bl,'8'
	jne no_8
	mov ebx,8
	jmp exit_v
	no_8:
	cmp bl,'9'
	jne no_9
	mov ebx,9
	jmp exit_v
	no_9:
	xor edx,edx
	jmp error
	exit_v:
	mov ecx,[length_number]
	dec ecx
	test ecx,ecx
	jz no_stepen

    next_mul:
	imul ebx,10
	dec ecx
	jne next_mul

	no_stepen:
	add edx,ebx

	inc eax
	dec [length_number]
	jnz cycle_value_
	error:
	mov eax,edx
	ret

;----------------------------------------------------------
align 4
dialog2_draw:
	mov	eax,80
	mov	ebx,100
	mov	ecx,150
	mov	edx,90
	mov esi,1
	call draw_volume_rectangle ; dialog 'file new'

	mov	eax,177
	mov	ebx,115
	mov	ecx,40
	mov	edx,14
	mov esi,4
	call draw_volume_rectangle

	mov	eax,177
	mov	ebx,115+24
	mov	ecx,40
	mov	edx,14
	mov esi,4
	call draw_volume_rectangle

	mov	eax,177
	mov	ebx,170
	mov	ecx,40
	mov	edx,15
	mov	esi,1
	call draw_volume_rectangle ; button [Ok]

	mov	eax,90
	mov	ebx,118
	mov	ecx,0xffffff
	mov	edx,new_text1
	mov	esi,14
	call print_text

	mov	eax,90
	mov	ebx,118+24
	mov	ecx,0xffffff
	mov	edx,new_text2
	mov	esi,14
	call print_text

	mov	eax,185
	mov	ebx,175
	mov	ecx,0xffffff
	mov	edx,ok_text
	mov	esi,2
	call print_text
	ret

length_number	dd 0