//BOX_LIB

typedef Dword dword;
typedef unsigned short word;
typedef dword __stdcall dword_func(dword);
//typedef dword __stdcall dword3_func(dword,dword,dword);

dword  am__ = 0x0;
dword  bm__ = 0x0;

char aEdit_box_draw[]   = "edit_box";
char aEdit_box_key[]    = "edit_box_key";
char aEdit_box_mouse[]  = "edit_box_mouse";
char aVersion_ed[]      = "version_ed";

char aCheck_box_draw[]  = "check_box_draw";
char aCheck_box_mouse[] = "check_box_mouse";
char aVersion_ch[]      = "version_ch";

char aOption_box_draw[] = "option_box_draw";
char aVersion_op[]      = "version_op" ;

char aScrollbar_v_draw [] = "scrollbar_v_draw";
char aScrollbar_v_mouse[] = "scrollbar_v_mouse";
char aScrollbar_h_draw [] = "scrollbar_h_draw";
char aScrollbar_h_mouse[] = "scrollbar_h_mouse";
char aVersion_scrollbar[] = "version_scrollbar";

dword_func *edit_box_draw  =(dword_func*) &aEdit_box_draw;
dword_func *edit_box_key   =(dword_func*) &aEdit_box_key;
dword_func *edit_box_mouse =(dword_func*) &aEdit_box_mouse;

dword_func *scrollbar_v_draw  = (dword_func*) &aScrollbar_v_draw;
dword_func *scrollbar_v_mouse = (dword_func*) &aScrollbar_v_mouse;
dword_func *scrollbar_h_draw  = (dword_func*) &aScrollbar_h_draw;
dword_func *scrollbar_h_mouse = (dword_func*) &aScrollbar_h_mouse;


char lib_path[] = "/sys/lib/box_lib.obj";
dword lib_path_addr = (dword)lib_path;
dword dummy = 0;

//editbox flags
#define ed_pass             1
#define ed_focus            2   //focused
#define ed_shift            4   //flag is set when Shift is pressed
#define ed_shift_on         8
#define ed_shift_bac       16   //bit for Shift reset, if set the smth is selected
#define ed_left_fl         32
#define ed_offset_fl       64
#define ed_insert         128
#define ed_mouse_on       256
#define ed_mouse_adn_b    280
#define ed_disabled      2048
#define ed_always_focus 16384
#define ed_figure_only  32768   //numbers only
#define ed_shift_cl     65507
#define ed_shift_mcl    65531
#define ed_shift_off    65531
#define ed_shift_on_off 65527
#define ed_shift_bac_cl 65519
#define ed_right_fl     65503
#define ed_offset_cl    65471
#define ed_insert_cl    65407
#define ed_mouse_on_off 65279

struct edit_box{
dword width, 
	left,
	top, 
	color, 
	shift_color, 
	focus_border_color, 
	blur_border_color,
	text_color,
	max,
	text,
	mouse_variable,
	flags,
	size,
	pos,
	offset,
	cl_curs_x,
	cl_curs_y,
	shift,
	shift_old,
	height,
	ed_char_width;
};

struct scroll_bar{
word w,
	x,
	h,
	y;
	dword btn_height,
	type,
	max_area,
	cur_area,
	position,
	bckg_col,
	frnt_col,
	line_col,
	redraw;
	word delta,
	delta2,
	r_size_x,
	r_start_x,
	r_size_y,
	r_start_y;
	dword m_pos,
	m_pos_2,
	m_keys,
	run_size,
	position2,
	work_size,
	all_redraw,
	ar_offset;
};

void load_edit_box()
{
	kol_struct_import *k = kol_cofflib_load(lib_path);

	if (k == NULL)
	{
		sprintf(debuf, "cannot load library %S", lib_path);
		rtlDebugOutString(debuf);
		return;
	}

	edit_box_draw  = (dword_func*)kol_cofflib_procload(k, aEdit_box_draw);
	edit_box_key   = (dword_func*)kol_cofflib_procload(k, aEdit_box_key);
	edit_box_mouse = (dword_func*)kol_cofflib_procload(k, aEdit_box_mouse);

	scrollbar_v_draw  = (dword_func*)kol_cofflib_procload(k, aScrollbar_v_draw);
	scrollbar_v_mouse = (dword_func*)kol_cofflib_procload(k, aScrollbar_v_mouse);
	scrollbar_h_draw  = (dword_func*)kol_cofflib_procload(k, aScrollbar_h_draw);
	scrollbar_h_mouse = (dword_func*)kol_cofflib_procload(k, aScrollbar_h_mouse);

	if (edit_box_draw == NULL || scrollbar_v_draw == NULL || scrollbar_h_draw == NULL)
		rtlDebugOutString("Some of EDITBOX functions have not been loaded!");
}