connections(initialize) :- 
	current_conzone(1),
	feedback(connections_sel).

feedback(connections_sel, novice) :-
	chat_usr([
		'This button switches the focus of discussion to',
		'the CONNECTIONS option.',
		'']).


current_conzone(_Curr_Zone) :-
	asserta(current_zc(_Curr_Zone)),
	uset(current_zc,_Curr_Zone),
	tell_usr(cur_surf_con,1),!,
	cur_surf_con(1),!.


cur_surf_con(_Surface):-
	current_zc(_Curr_Zone),!,
	asserta(con_zs(_Curr_Zone,_Surface)),
	uset(con_zs,_Curr_Zone,_Surface),!,
	(
	con_t(_Curr_Zone,_Surface,_Type_con),!,
	load_connection(_Curr_Zone,_Surface,_Type_con)
	),
	tell_usr(con_type,_Type_con);
	tell_usr(con_type,to_exterior),!.


load_connection(_Curr_Zone,_Surface,to_another_zone_in_model) :-
	unask_usr(z_temp),
	unask_usr(temp_off),
	unask_usr(radn),
	ask_usr(conz),
	ask_usr(conzs),
	load_conz(_Curr_Zone,_Surface),
	load_conzs(_Curr_Zone,_Surface).

load_connection(_Curr_Zone,_Surface,to_ficticious_zone_relative) :-
	unask_usr(conz),
	unask_usr(conzs),
	unask_usr(z_temp_off),
	ask_usr(z_temp),
	ask_usr(radn),
	load_temp(_Curr_Zone,_Surface),
	load_radn(_Curr_Zone,_Surface).

load_connection(_Curr_Zone,_Surface,to_ficticious_zone_constant) :-
	unask_usr(conz),
	unask_usr(conzs),
	unask_usr(z_temp),
	ask_usr(z_temp_off),
	ask_usr(radn),
	load_tempoff(_Curr_Zone,_Surface),
	load_radn(_Curr_Zone,_Surface).

load_connection(_Curr_Zone,_Surface,_Type_con) :-
	unask_usr(conz),
	unask_usr(conzs),
	unask_usr(z_temp),
	unask_usr(z_temp_off),
	unask_usr(radn).


con_type(to_another_zone_in_model) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	unask_usr(z_temp),
	unask_usr(z_temp_off),
	unask_usr(radn),
	ask_usr(conz),
	ask_usr(conzs),
	asserta(con_t(_Curr_Zone,_Surface,to_another_zone_in_model)),
	uset(con_t,[_Curr_Zone,_Surface],to_another_zone_in_model),!,
	tell_usr(['surf_con_type$',_Surface],to_another_zone_in_model),
	load_conz(_Curr_Zone,_Surface),!,
	load_conzs(_Curr_Zone,_Surface).


con_type(to_ficticious_zone_relative) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	unask_usr(conz),
	unask_usr(conzs),
	unask_usr(z_temp_off),
	ask_usr(z_temp),
	ask_usr(radn),
	asserta(con_t(_Curr_Zone,_Surface,to_ficticious_zone_relative)),
	uset(con_t,[_Curr_Zone,_Surface],to_ficticious_zone_relative),!,
	tell_usr(['surf_con_type$',_Surface],to_ficticious_zone_relative),
	load_temp(_Curr_Zone,_Surface),!,
	load_radn(_Curr_Zone,_Surface).

con_type(to_ficticious_zone_constant) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	unask_usr(conz),
	unask_usr(conzs),
	unask_usr(z_temp),
	ask_usr(z_temp_off),
	ask_usr(radn),
	asserta(con_t(_Curr_Zone,_Surface,to_ficticious_zone_constant)),
	uset(con_t,[_Curr_Zone,_Surface],to_ficticious_zone_constant),!,
	tell_usr(['surf_con_type$',_Surface],to_ficticious_zone_constant),
	load_tempoff(_Curr_Zone,_Surface),!,
	load_radn(_Curr_Zone,_Surface).


con_type(_Con_Type) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	unask_usr(conz),
	unask_usr(conzs),
	unask_usr(z_temp),
	unask_usr(z_temp_off),
	unask_usr(radn),
	asserta(con_t(_Curr_Zone,_Surface,_Con_Type)),
	uset(con_t,[_Curr_Zone,_Surface],_Con_Type),
	tell_usr(['surf_con_type$',_Surface],_Con_Type).

load_conz(_Curr_Zone,_Surface) :-
	connect_zone_nu(_Curr_Zone,_Surface,_Czone),!,
	tell_usr(conz,_Czone);
	tell_usr(conz,1).

conz(_Czone) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	asserta(connect_zone_nu(_Curr_Zone,_Surface,_Czone)),
	uset(connect_zone_nu,[_Curr_Zone,_Surface],_Czone),!,
	tell_usr(['disp_con_z$',_Surface],_Czone).

load_conzs(_Curr_Zone,_Surface) :-
	connect_zone_surf(_Curr_Zone,_Surface,_Czones),!,
	tell_usr(conzs,_Czones);
	tell_usr(conzs,1).


conzs(_Czones) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	asserta(connect_zone_surf(_Curr_Zone,_Surface,_Czones)),
	uset(connect_zone_surf,[_Curr_Zone,_Surface],_Czones),!,
	tell_usr(['disp_con_zs$',_Surface],_Czones).


load_temp(_Curr_Zone,_Surface) :-
	connect_zone_temp(_Curr_Zone,_Surface,_T),!,
	tell_usr(z_temp,_T);
	tell_usr(z_temp,0).


z_temp(_T) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	asserta(connect_zone_temp(_Curr_Zone,_Surface,_T)),
	uset(connect_zone_temp,[_Curr_Zone,_Surface],_T),!,
	tell_usr(['disp_temp$',_Surface],_T).

load_tempoff(_Curr_Zone,_Surface) :-
	connect_zone_toff(_Curr_Zone,_Surface,_Toff),!,
	tell_usr(z_temp_off,_Toff);
	tell_usr(z_temp_off,0).


z_temp_off(_Toff) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	asserta(connect_zone_toff(_Curr_Zone,_Surface,_Toff)),
	uset(connect_zone_toff,[_Curr_Zone,_Surface],_Toff),!,
	tell_usr(['disp_temp$',_Surface],_Toff).


load_radn(_Curr_Zone,_Surface) :-
	connect_zone_radn(_Curr_Zone,_Surface,_Radn),!,
	tell_usr(radn,_Radn);
	tell_usr(radn,0).


radn(_Radn) :-
	current_zc(_Curr_Zone),
	con_zs(_Curr_Zone,_Surface),!,
	asserta(connect_zone_radn(_Curr_Zone,_Surface,_Radn)),
	uset(connect_zone_radn,[_Curr_Zone,_Surface],_Radn),!,
	tell_usr(['disp_radn$',_Surface],_Radn).


connect_finish(on) :-
	to_bb(new_client,ct,con_test, x).
