/*
**	PhonePanelUI.c
**
**	The phonebook user interface creation routines
**
**	Copyright © 1990-1995 by Olaf `Olsen' Barthel
**		All Rights Reserved
**
**	:ts=4
*/

#include "termGlobal.h"

	// The gadget IDs are in there

#include "PhonePanel.h"

LayoutHandle * __regargs
CreateEditorHandle(struct Window *Parent,struct List *PhoneList,ULONG Count,struct PhoneNode *Node,BOOL Activate,struct MsgPort *UserPort)
{
	STATIC LONG LabelTable1[] =
	{
		MSG_PHONEBOOK_SETTINGS_SERIAL_TXT,
		MSG_PHONEBOOK_SETTINGS_MODEM_TXT,
		MSG_PHONEBOOK_SETTINGS_SCREEN_TXT,
		MSG_PHONEBOOK_SETTINGS_TERMINAL_TXT,
		MSG_PHONEBOOK_SETTINGS_EMULATION_TXT,
		MSG_PHONEBOOK_SETTINGS_CLIPBOARD_TXT,
		MSG_PHONEBOOK_SETTINGS_CAPTURE_TXT,
		MSG_PHONEBOOK_SETTINGS_COMMANDS_TXT,
		-1
	};

	STATIC LONG LabelTable2[] =
	{
		MSG_PHONEBOOK_SETTINGS_MISCELLANEOUS_TXT,
		MSG_PHONEBOOK_SETTINGS_PATHS_TXT,
		MSG_PHONEBOOK_SETTINGS_TRANSFER_TXT,
		MSG_PHONEBOOK_SETTINGS_TRANSLATION_TXT,
		MSG_PHONEBOOK_SETTINGS_FUNCTION_KEYS_TXT,
		MSG_PHONEBOOK_SETTINGS_CURSOR_KEYS_TXT,
		MSG_PHONEBOOK_SETTINGS_FAST_MACROS_TXT,
		MSG_PHONEBOOK_SETTINGS_RATES_TXT,
		-1
	};

	LayoutHandle			*Handle;
	BOOL					 IsFirst,IsLast,Disabled,RatesValid;
	WORD					 LabelLen1,LabelLen2;
	struct Configuration	*LocalConfig;
	struct IBox				 Bounds;
	LONG					 i,Len;

	if(Node)
	{
		IsFirst			= (Node -> Entry -> Count == -1 || Node -> Entry -> Count == 0);
		IsLast			= (Node -> Entry -> Count == -1 || Node -> Entry -> Count == Count - 1);
		Disabled		= FALSE;
		LocalConfig		= Node -> Entry -> Config;
		RatesValid		= (Node -> Entry -> TimeDateList . mlh_Head -> mln_Succ != NULL && !Node -> Entry -> Header -> NoRates);
	}
	else
	{
		IsFirst			= TRUE;
		IsLast			= TRUE;
		Disabled		= TRUE;
		LocalConfig		= NULL;
		RatesValid		= FALSE;
	}

	if(Handle = LT_CreateHandleTags(Parent -> WScreen,
		LH_LocaleHook,&LocaleHook,
	TAG_DONE))
	{
		for(i = LabelLen1 = 0 ; LabelTable1[i] != -1 ; i++)
		{
			Len = LT_LabelChars(Handle,LocaleString(LabelTable1[i]));

			if(Len > LabelLen1)
				LabelLen1 = Len;
		}

		for(i = LabelLen2 = 0 ; LabelTable2[i] != -1 ; i++)
		{
			Len = LT_LabelChars(Handle,LocaleString(LabelTable2[i]));

			if(Len > LabelLen2)
				LabelLen2 = Len;
		}

		LT_New(Handle,
			LA_Type,	VERTICAL_KIND,
		TAG_DONE);
		{
			LT_New(Handle,
				LA_Type,	HORIZONTAL_KIND,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,		VERTICAL_KIND,
					LA_LabelID,		MSG_PHONEBOOK_ENTRY_DATA_TXT,
				TAG_DONE);
				{
					LT_New(Handle,
						LA_Type,		STRING_KIND,
						LA_LabelID,		MSG_PHONEBOOK_SYSTEM_NAME_TXT,
						LA_Chars,		30,
						LA_ID,			GAD_SYSTEM_NAME,
						GTST_String,	Node ? Node -> Entry -> Header -> Name : (STRPTR)"",
						GTST_MaxChars,	39,
						GA_Disabled,	Disabled,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		STRING_KIND,
						LA_LabelID,		MSG_PHONEBOOK_COMMENT_TXT,
						LA_ID,			GAD_COMMENT,
						GTST_String,	Node ? Node -> Entry -> Header -> Comment : (STRPTR)"",
						GTST_MaxChars,	99,
						GA_Disabled,	Disabled,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		STRING_KIND,
						LA_LabelID,		MSG_PHONEBOOK_NUMBERS_TXT,
						LA_ID,			GAD_NUMBERS,
						GTST_String,	Node ? Node -> Entry -> Header -> Number : (STRPTR)"",
						GTST_MaxChars,	99,
						GA_Disabled,	Disabled,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		CHECKBOX_KIND,
						LA_LabelID,		MSG_PHONEBOOK_QUICK_MENU_TXT,
						LA_ID,			GAD_QUICK_MENU,
						GTCB_Checked,	Node ? Node -> Entry -> Header -> QuickMenu : FALSE,
						GA_Disabled,	Disabled,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		CHECKBOX_KIND,
						LA_LabelID,		MSG_PHONEPANEL_AUTO_DIAL_TXT,
						LA_ID,			GAD_AUTODIAL,
						GTCB_Checked,	Node ? Node -> Entry -> Header -> AutoDial : FALSE,
						GA_Disabled,	Disabled,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		XBAR_KIND,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		CHECKBOX_KIND,
						LA_LabelID,		MSG_HIDE_TXT,
						LA_ID,			GAD_HIDE_USERNAME_PASSWORD,
						GTCB_Checked,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		STRING_KIND,
						LA_LabelID,		MSG_PHONEBOOK_USER_NAME_TXT,
						LA_ID,			GAD_USER_NAME,
						GTST_String,	"",
						GTST_MaxChars,	99,
						GA_Disabled,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		STRING_KIND,
						LA_LabelID,		MSG_PHONEBOOK_LOGIN_PASSWORD_TXT,
						LA_ID,			GAD_USER_PASSWORD,
						LAST_LastGadget,TRUE,
						GTST_String,	"",
						GTST_MaxChars,	99,
						GA_Disabled,	TRUE,
					TAG_DONE);

					LT_EndGroup(Handle);
				}

				LT_New(Handle,
					LA_Type,		HORIZONTAL_KIND,
					LA_LabelID,		MSG_PHONEBOOK_SETTINGS_TXT,
				TAG_DONE);
				{
					LT_New(Handle,
						LA_Type,		VERTICAL_KIND,
					TAG_DONE);
					{
						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_SERIAL_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> SerialConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_SERIAL_TXT,
								LA_ID,			GAD_SERIAL_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> SerialConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_MODEM_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> ModemConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_MODEM_TXT,
								LA_ID,			GAD_MODEM_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> ModemConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_SCREEN_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> ScreenConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_SCREEN_TXT,
								LA_ID,			GAD_SCREEN_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> ScreenConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_TERMINAL_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> TerminalConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_TERMINAL_TXT,
								LA_ID,			GAD_TERMINAL_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> TerminalConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_EMULATION_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> EmulationConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_EMULATION_TXT,
								LA_ID,			GAD_EMULATION_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> EmulationConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_CLIPBOARD_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> ClipConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_CLIPBOARD_TXT,
								LA_ID,			GAD_CLIPBOARD_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> ClipConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_CAPTURE_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> CaptureConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_CAPTURE_TXT,
								LA_ID,			GAD_CAPTURE_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> CaptureConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_COMMAND_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> CommandConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen1,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_COMMANDS_TXT,
								LA_ID,			GAD_COMMAND_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> CommandConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_EndGroup(Handle);
					}

					LT_New(Handle,
						LA_Type,		VERTICAL_KIND,
					TAG_DONE);
					{
						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_MISC_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> MiscConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_MISCELLANEOUS_TXT,
								LA_ID,			GAD_MISC_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> MiscConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_PATH_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> PathConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_PATHS_TXT,
								LA_ID,			GAD_PATH_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> PathConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_TRANSFER_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> TransferConfig != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_TRANSFER_TXT,
								LA_ID,			GAD_TRANSFER_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> TransferConfig),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_TRANSLATION_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> TranslationFileName != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_TRANSLATION_TXT,
								LA_ID,			GAD_TRANSLATION_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> TranslationFileName),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_MACRO_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> MacroFileName != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_FUNCTION_KEYS_TXT,
								LA_ID,			GAD_MACRO_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> MacroFileName),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_CURSOR_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> CursorFileName != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_CURSOR_KEYS_TXT,
								LA_ID,			GAD_CURSOR_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> CursorFileName),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_FASTMACRO_STATE,
								GTCB_Checked,	LocalConfig ? (LocalConfig -> FastMacroFileName != NULL) : FALSE,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_FAST_MACROS_TXT,
								LA_ID,			GAD_FASTMACRO_EDIT,
								GA_Disabled,	Disabled || (LocalConfig && !LocalConfig -> FastMacroFileName),
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_New(Handle,
							LA_Type,		HORIZONTAL_KIND,
						TAG_DONE);
						{
							LT_New(Handle,
								LA_Type,		CHECKBOX_KIND,
								LA_ID,			GAD_RATE_STATE,
								GTCB_Checked,	RatesValid,
								GA_Disabled,	Disabled,
							TAG_DONE);

							LT_New(Handle,
								LA_Type,		BUTTON_KIND,
								LA_Chars,		LabelLen2,
								LA_LabelID,		MSG_PHONEBOOK_SETTINGS_RATES_TXT,
								LA_ID,			GAD_RATE_EDIT,
								GA_Disabled,	Disabled || !RatesValid,
								LABT_Smaller,	TRUE,
							TAG_DONE);

							LT_EndGroup(Handle);
						}

						LT_EndGroup(Handle);
					}

					LT_EndGroup(Handle);
				}

				LT_EndGroup(Handle);
			}

			LT_New(Handle,
				LA_Type,		VERTICAL_KIND,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,		XBAR_KIND,
					LAXB_FullSize,	TRUE,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_New(Handle,
				LA_Type,		HORIZONTAL_KIND,
				LAGR_SameSize,	TRUE,
				LAGR_Spread,	TRUE,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,			TAPEDECK_KIND,
					LATD_ButtonType,	TDBT_PREVIOUS,
					LATD_Smaller,		TRUE,
					LA_ID,				GAD_FIRST_ENTRY,
					GA_Disabled,		Disabled || IsFirst,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			TAPEDECK_KIND,
					LATD_ButtonType,	TDBT_REWIND,
					LATD_Smaller,		TRUE,
					LA_ID,				GAD_PREVIOUS_ENTRY,
					GA_Disabled,		Disabled || IsFirst,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			TAPEDECK_KIND,
					LATD_ButtonType,	TDBT_PLAY,
					LATD_Smaller,		TRUE,
					LA_ID,				GAD_NEXT_ENTRY,
					GA_Disabled,		Disabled || IsLast,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			TAPEDECK_KIND,
					LATD_ButtonType,	TDBT_NEXT,
					LATD_Smaller,		TRUE,
					LA_ID,				GAD_LAST_ENTRY,
					GA_Disabled,		Disabled || IsLast,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_LabelID,			MSG_GLOBAL_CLOSE_TXT,
					LABT_EscKey,		TRUE,
					LABT_ExtraFat,		TRUE,
					LA_ID,				GAD_CLOSE,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_EndGroup(Handle);
		}

		if(Parent == Window)
		{
			Bounds . Left	= WindowLeft	+ Window -> LeftEdge;
			Bounds . Top	= WindowTop		+ Window -> TopEdge;
			Bounds . Width	= WindowWidth;
			Bounds . Height	= WindowHeight;
		}

		if(LT_Build(Handle,
			LAWN_TitleID,		MSG_PHONEBOOK_EDIT_TXT,
			LAWN_IDCMP, 		IDCMP_CLOSEWINDOW,
			LAWN_UserPort,		UserPort,
			LAWN_HelpHook,		&GuideHook,
			WA_DepthGadget, 	TRUE,
			WA_DragBar, 		TRUE,
			WA_RMBTrap, 		TRUE,
			WA_Activate,		Activate,
			WA_CloseGadget, 	TRUE,
			WA_SimpleRefresh,	TRUE,

			Parent == Window ? LAWN_Bounds : TAG_IGNORE,&Bounds,
			Parent == Window ? TAG_IGNORE : LAWN_Parent,Parent,
		TAG_DONE))
		{
			if(Activate)
			{
				LT_ShowWindow(Handle,TRUE);

				if(!Disabled)
					LT_Activate(Handle,GAD_SYSTEM_NAME);
			}

			return(Handle);
		}
		else
			LT_DeleteHandle(Handle);
	}

	return(NULL);
}

LayoutHandle * __regargs
CreateManagerHandle(struct Window *Parent,struct List *PhoneList,ULONG Count,ULONG *Grouper,STRPTR *Labels,struct MsgPort *UserPort,STRPTR WindowTitle)
{
	STATIC LONG LabelTable[] =
	{
		MSG_PHONEBOOK_TAG_ALL_TXT,
		MSG_PHONEBOOK_TOGGLE_ALL_TXT,
		MSG_PHONEBOOK_UNTAG_ALL_TXT,
		MSG_PHONEBOOK_TAG_BY_PATTERN_TXT,

		MSG_PHONEBOOK_EDIT_ENTRY_TXT,
		MSG_PHONEBOOK_COPY_ENTRY_TXT,
		MSG_PHONEBOOK_ADD_ENTRY_TXT,
		MSG_PHONEBOOK_MAKE_GROUP_TXT,

		MSG_PHONEBOOK_DIAL_TXT,
		MSG_PHONEBOOK_USE_ENTRY_TXT,
		MSG_PHONEBOOK_DELETE_ENTRY_TXT,
		MSG_PHONEBOOK_SPLIT_GROUP_TXT,

		-1
	};

	LayoutHandle *Handle;

	if(Handle = LT_CreateHandleTags(Parent -> WScreen,
		LH_LocaleHook,&LocaleHook,
	TAG_DONE))
	{
		STATIC struct Hook ListViewHook = { {NULL},(HOOKFUNC)PhoneListViewRender };

		UWORD		MaxPen;
		LONG		i,Max,Size;
		UBYTE		SmallString[2];
		struct IBox	Bounds;
		LONG		Len,LabelLen;

		for(i = LabelLen = 0 ; LabelTable[i] != -1 ; i++)
		{
			Len = LT_LabelChars(Handle,LocaleString(LabelTable[i]));

			if(Len > LabelLen)
				LabelLen = Len;
		}

		MaxPen = MAX(Handle -> DrawInfo -> dri_Pens[BLOCKPEN],MAX(Handle -> DrawInfo -> dri_Pens[TEXTPEN],MAX(Handle -> DrawInfo -> dri_Pens[BACKGROUNDPEN],MAX(Handle -> DrawInfo -> dri_Pens[FILLTEXTPEN],MAX(Handle -> DrawInfo -> dri_Pens[FILLPEN],Handle -> DrawInfo -> dri_Pens[HIGHLIGHTTEXTPEN])))));

		SmallString[1]	= 0;
		Max				= 0;

		for(i = '0' ; i <= '9' ; i++)
		{
			SmallString[0] = i;

			if((Size = LT_LabelWidth(Handle,SmallString)) > Max)
				Max = Size;
		}

		ListViewHook . h_Data = (APTR)Max;

		LT_New(Handle,
			LA_Type,	VERTICAL_KIND,
		TAG_DONE);
		{
			LT_New(Handle,
				LA_Type,		HORIZONTAL_KIND,
				LAGR_NoIndent,	TRUE,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,	VERTICAL_KIND,
				TAG_DONE);
				{
					BOOL HasEntries;
					LONG NumEntries;
					LONG NumColumns;

					if(PhoneList && PhoneList -> lh_Head -> ln_Succ)
					{
						struct Node	*Node;
						LONG		 Len;

						HasEntries = TRUE;

						for(Node = PhoneList -> lh_Head, NumEntries = NumColumns = 0 ; Node -> ln_Succ ; Node = Node -> ln_Succ)
						{
							NumEntries++;

							Len = strlen(&Node -> ln_Name[6]);

							if(Len > NumColumns)
								NumColumns = Len;
						}

						if(NumEntries < 6)
							NumEntries = 6;
						else
						{
							if(NumEntries > 46)
								NumEntries = 46;
						}

						if(NumColumns < 46)
							NumColumns = 46;
					}
					else
					{
						HasEntries = FALSE;
						NumEntries = 6;
						NumColumns = 46;
					}

					LT_New(Handle,
						LA_Type,		CycleType,
						LACY_TabKey,	TRUE,
						GTCY_Labels,	Labels,
						LA_ID,			GAD_GROUPID,
						LA_ULONG,		Grouper,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		LISTVIEW_KIND,
						LA_ID,			GAD_NAMELIST,
						LALV_Columns,	46,
						LALV_Lines, 	6,
						LALV_CursorKey, TRUE,
						LALV_ResizeX,	TRUE,
						LALV_ResizeY,	TRUE,
						LALV_MaxGrowX,	NumColumns,
						LALV_MaxGrowY,	NumEntries,
						LALV_Link,		NIL_LINK,
						GTLV_CallBack,	&ListViewHook,
						GTLV_MaxPen,	MaxPen,
						GTLV_Labels,	PhoneList,

//						Kick30 ? LALV_Link :	TAG_IGNORE,		NIL_LINK,
						Kick30 ? TAG_IGNORE :	LALV_TextAttr,	~0,
						Kick30 ? GA_Disabled :	TAG_IGNORE,		!HasEntries,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		TEXT_KIND,
						LA_ID,			GAD_COMMENTLINE,
						GTTX_Border,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		HORIZONTAL_KIND,
						LAGR_Spread,	TRUE,
						LAGR_SameSize,	TRUE,
						LAGR_Spread,	TRUE,
					TAG_DONE);
					{
						LT_New(Handle,
							LA_Type,			TAPEDECK_KIND,
							LATD_ButtonType,	TDBT_PREVIOUS,
							LATD_Smaller,		TRUE,
							LA_Chars,			LabelLen,
							LA_ID,				GAD_MOVE_FIRST,
							GA_Disabled,		TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,			TAPEDECK_KIND,
							LATD_ButtonType,	TDBT_REWIND,
							LATD_Smaller,		TRUE,
							LA_ID,				GAD_MOVE_UP,
							GA_Disabled,		TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,			TAPEDECK_KIND,
							LATD_ButtonType,	TDBT_PLAY,
							LATD_Smaller,		TRUE,
							LA_ID,				GAD_MOVE_DOWN,
							GA_Disabled,		TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,			TAPEDECK_KIND,
							LATD_ButtonType,	TDBT_NEXT,
							LATD_Smaller,		TRUE,
							LA_ID,				GAD_MOVE_LAST,
							GA_Disabled,		TRUE,
						TAG_DONE);

						LT_EndGroup(Handle);
					}

					LT_New(Handle,
						LA_Type,		HORIZONTAL_KIND,
						LAGR_NoIndent,	TRUE,
						LAGR_SameSize,	TRUE,
						LAGR_Spread,	TRUE,
					TAG_DONE);
					{
						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_TAG_ALL_TXT,
							LA_ID,			GAD_SELECT_ALL,
							GA_Disabled,	!NumPhoneEntries || Count == NumPhoneEntries,
							LA_Chars,		LabelLen,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_TOGGLE_ALL_TXT,
							LA_ID,			GAD_TOGGLE_ALL,
							GA_Disabled,	TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_UNTAG_ALL_TXT,
							LA_ID,			GAD_CLEAR_ALL,
							GA_Disabled,	!Count,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_TAG_BY_PATTERN_TXT,
							LA_ID,			GAD_PATTERN,
							GA_Disabled,	!NumPhoneEntries,
						TAG_DONE);

						LT_EndGroup(Handle);
					}

					LT_New(Handle,
						LA_Type,		XBAR_KIND,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		HORIZONTAL_KIND,
						LAGR_NoIndent,	TRUE,
						LAGR_SameSize,	TRUE,
						LAGR_Spread,	TRUE,
					TAG_DONE);
					{
						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_EDIT_ENTRY_TXT,
							LA_Chars,		LabelLen,
							LA_ID,			GAD_EDIT,
							GA_Disabled,	TRUE,
							LABT_DefaultCorrection,	TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_COPY_ENTRY_TXT,
							LA_ID,			GAD_COPY,
							GA_Disabled,	TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_ADD_ENTRY_TXT,
							LA_ID,			GAD_ADD,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_MAKE_GROUP_TXT,
							LA_ID,			GAD_MAKE_GROUP,
							GA_Disabled,	!Count,
						TAG_DONE);

						LT_EndGroup(Handle);
					}

					LT_New(Handle,
						LA_Type,		HORIZONTAL_KIND,
						LAGR_NoIndent,	TRUE,
						LAGR_SameSize,	TRUE,
						LAGR_Spread,	TRUE,
					TAG_DONE);
					{
						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_DIAL_TXT,
							LA_ID,			GAD_DIAL,
							GA_Disabled,	!Count || (Online && !Config -> MiscConfig -> ProtectiveMode),
							LABT_ReturnKey, TRUE,
							LA_Chars,		LabelLen,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_USE_ENTRY_TXT,
							LA_ID,			GAD_USE,
							GA_Disabled,	TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_DELETE_ENTRY_TXT,
							LA_ID,			GAD_DELETE,
							GA_Disabled,	TRUE,
						TAG_DONE);

						LT_New(Handle,
							LA_Type,		BUTTON_KIND,
							LA_LabelID,		MSG_PHONEBOOK_SPLIT_GROUP_TXT,
							LA_ID,			GAD_SPLIT_GROUP,
							GA_Disabled,	*Grouper == 0,
						TAG_DONE);

						LT_EndGroup(Handle);
					}

					LT_EndGroup(Handle);
				}

				LT_New(Handle,
					LA_Type,		VERTICAL_KIND,
				TAG_DONE);
				{
					LT_New(Handle,
						LA_Type,	YBAR_KIND,
					TAG_DONE);

					LT_EndGroup(Handle);
				}

				LT_New(Handle,
					LA_Type,		VERTICAL_KIND,
					LAGR_SameSize,	TRUE,
				TAG_DONE);
				{
					LT_New(Handle,
						LA_Type,		CHECKBOX_KIND,
						LA_LabelID,		MSG_PHONEPANEL_AUTO_DIAL_TXT,
						LA_ID,			GAD_MAIN_AUTODIAL,
						LA_BYTE,		&PhonebookAutoDial,
						LA_LabelPlace,	PLACE_RIGHT,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		CHECKBOX_KIND,
						LA_LabelID,		MSG_PHONEPANEL_EXIT_WHEN_FINISHED_TXT,
						LA_ID,			GAD_MAIN_EXIT_WHEN_FINISHED,
						LA_BYTE,		&PhonebookAutoExit,
						GA_Disabled,	!PhonebookAutoDial,
						LA_LabelPlace,	PLACE_RIGHT,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		XBAR_KIND,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		BUTTON_KIND,
						LA_LabelID,		MSG_PHONEBOOK_PASSWORD_TXT,
						LA_ID,			GAD_PASSWORD,
						LABT_Smaller,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		XBAR_KIND,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		BUTTON_KIND,
						LA_LabelID,		MSG_PHONEBOOK_LOAD_TXT,
						LA_ID,			GAD_LOAD,
						GA_Disabled,	ChosenEntry != NULL,
						LABT_Smaller,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		BUTTON_KIND,
						LA_LabelID,		MSG_PHONEBOOK_MERGE_TXT,
						LA_ID,			GAD_MERGE,
						GA_Disabled,	!NumPhoneEntries,
						LABT_Smaller,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		BUTTON_KIND,
						LA_LabelID,		MSG_PHONEBOOK_SAVE_TXT,
						LA_ID,			GAD_SAVE,
						GA_Disabled,	!NumPhoneEntries,
						LABT_Smaller,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		BUTTON_KIND,
						LA_LabelID,		MSG_PHONEBOOK_PRINT_TXT,
						LA_ID,			GAD_PRINT,
						GA_Disabled,	!NumPhoneEntries,
						LABT_Smaller,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		BUTTON_KIND,
						LA_LabelID,		MSG_PHONEBOOK_SORT_TXT,
						LA_ID,			GAD_SORT,
						GA_Disabled,	!NumPhoneEntries,
						LABT_Smaller,	TRUE,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		XBAR_KIND,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		BUTTON_KIND,
						LA_LabelID,		MSG_PHONEBOOK_COPY_CONFIG_TXT,
						LA_ID,			GAD_COPY_CONFIG,
						LABT_Smaller,	TRUE,
						GA_Disabled,	!NumPhoneEntries,
					TAG_DONE);

					LT_EndGroup(Handle);
				}

				LT_EndGroup(Handle);
			}

			LT_EndGroup(Handle);
		}

		if(Parent == Window)
		{
			Bounds . Left	= WindowLeft	+ Window -> LeftEdge;
			Bounds . Top	= WindowTop		+ Window -> TopEdge;
			Bounds . Width	= WindowWidth;
			Bounds . Height	= WindowHeight;
		}

		if(LT_Build(Handle,
			LAWN_TitleText,		WindowTitle ? WindowTitle : LocaleString(MSG_PHONEPANEL_PHONEBOOK_TXT),
			LAWN_IDCMP, 		IDCMP_CLOSEWINDOW,
			LAWN_Bounds,		&Bounds,
			LAWN_HelpHook,		&GuideHook,
			LAWN_Show,			TRUE,
			LAWN_UserPort,		UserPort,
			WA_DepthGadget,		TRUE,
			WA_DragBar,			TRUE,
			WA_RMBTrap, 		TRUE,
			WA_Activate,		TRUE,
			WA_CloseGadget, 	TRUE,
//			WA_SimpleRefresh,	TRUE,

			Parent == Window ? LAWN_Bounds : TAG_IGNORE,&Bounds,
			Parent == Window ? TAG_IGNORE : LAWN_Parent,Parent,
		TAG_DONE))
			return(Handle);
		else
			LT_DeleteHandle(Handle);
	}

	return(NULL);
}

LayoutHandle * __regargs
CreateSelectorHandle(struct Window *Parent,STRPTR Name,STRPTR Number,STRPTR Comment,BYTE *Mode)
{
	LayoutHandle *Handle;

	if(Handle = LT_CreateHandleTags(Parent -> WScreen,
		LH_LocaleHook,&LocaleHook,
	TAG_DONE))
	{
		LT_New(Handle,
			LA_Type,	VERTICAL_KIND,
		TAG_DONE);
		{
			LT_New(Handle,
				LA_Type,		VERTICAL_KIND,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,		CYCLE_KIND,
					LA_ID,			GAD_SELECT_MODE,
					LA_Chars,		40,
					LA_BYTE,		Mode,
					LACY_TabKey,	TRUE,
					LACY_FirstLabel,MSG_PHONEBOOK_TAG_ENTRIES1_TXT,
					LACY_LastLabel,	MSG_PHONEBOOK_TAG_ENTRIES2_TXT,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,		STRING_KIND,
					LA_ID,			GAD_SELECT_NAME,
					LA_LabelID,		MSG_PHONEBOOK_SYSTEM_NAME_TXT,
					LA_STRPTR,		Name,
					GTST_MaxChars,	63,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,		STRING_KIND,
					LA_ID,			GAD_SELECT_COMMENT,
					LA_LabelID,		MSG_PHONEBOOK_COMMENT_TXT,
					LA_STRPTR,		Comment,
					LAST_LastGadget,TRUE,
					GTST_MaxChars,	63,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,		STRING_KIND,
					LA_ID,			GAD_SELECT_NUMBER,
					LA_LabelID,		MSG_PHONEBOOK_NUMBERS_TXT,
					LA_STRPTR,		Number,
					GTST_MaxChars,	63,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,		XBAR_KIND,
					LAXB_FullWidth,	TRUE,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_New(Handle,
				LA_Type,		HORIZONTAL_KIND,
				LAGR_SameSize,	TRUE,
				LAGR_Spread,	TRUE,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_SELECT_APPLY,
					LA_LabelID,			MSG_PHONEBOOK_APPLY_TXT,
					LABT_ExtraFat,		TRUE,
					LABT_ReturnKey,		TRUE,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_SELECT_APPLY_AND_CLOSE,
					LA_LabelID,			MSG_PHONEBOOK_APPLY_AND_CLOSE_TXT,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_SELECT_CLOSE,
					LA_LabelID,			MSG_GLOBAL_CLOSE_TXT,
					LABT_EscKey,		TRUE,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_EndGroup(Handle);
		}

		if(LT_Build(Handle,
			LAWN_TitleID,		MSG_PHONEBOOK_EDIT_PATTERNS_TXT,
			LAWN_IDCMP, 		IDCMP_CLOSEWINDOW,
			LAWN_HelpHook,		&GuideHook,
			LAWN_Show,			TRUE,
			LAWN_Parent,		Parent,
			LAWN_UserPort,		Parent -> UserPort,
			WA_DepthGadget,		TRUE,
			WA_DragBar,			TRUE,
			WA_RMBTrap, 		TRUE,
			WA_Activate,		TRUE,
			WA_CloseGadget, 	TRUE,
			WA_SimpleRefresh,	TRUE,
		TAG_DONE))
			return(Handle);
		else
			LT_DeleteHandle(Handle);
	}

	return(NULL);
}

LayoutHandle * __regargs
CreateGroupHandle(struct Window *Parent,STRPTR *Labels,ULONG Group)
{
	LayoutHandle *Handle;

	if(Handle = LT_CreateHandleTags(Parent -> WScreen,
		LH_LocaleHook,&LocaleHook,
	TAG_DONE))
	{
		LT_New(Handle,
			LA_Type,	VERTICAL_KIND,
		TAG_DONE);
		{
			LT_New(Handle,
				LA_Type,		VERTICAL_KIND,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,		CycleType,
					LA_ID,			GAD_GROUP_LIST,
					GTCY_Labels,	Labels,
					GTCY_Active,	Group,
					LACY_TabKey,	TRUE,
					LA_LabelID,		MSG_PHONEBOOK_PICK_GROUP_TXT,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,		STRING_KIND,
					LA_ID,			GAD_GROUP_NAME,
					LA_LabelID,		MSG_PHONEBOOK_OR_ENTER_NAME_TXT,
					LA_Chars,		30,
					GTST_MaxChars,	39,
					GTST_String,	Labels[Group],
				TAG_DONE);

				LT_New(Handle,
					LA_Type,		XBAR_KIND,
					LAXB_FullWidth,	TRUE,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_New(Handle,
				LA_Type,		HORIZONTAL_KIND,
				LAGR_SameSize,	TRUE,
				LAGR_Spread,	TRUE,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_GROUP_OK,
					LA_LabelID,			MSG_GLOBAL_USE_GAD,
					LABT_ExtraFat,		TRUE,
					LABT_ReturnKey,		TRUE,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_GROUP_CANCEL,
					LA_LabelID,			MSG_GLOBAL_CANCEL_GAD,
					LABT_EscKey,		TRUE,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_EndGroup(Handle);
		}

		if(LT_Build(Handle,
			LAWN_TitleID,		MSG_PHONEBOOK_SELECT_GROUP_TXT,
			LAWN_IDCMP, 		IDCMP_CLOSEWINDOW,
			LAWN_HelpHook,		&GuideHook,
			LAWN_Show,			TRUE,
			LAWN_Parent,		Parent,
			LAWN_UserPort,		Parent -> UserPort,
			WA_DepthGadget,		TRUE,
			WA_DragBar,			TRUE,
			WA_RMBTrap, 		TRUE,
			WA_Activate,		TRUE,
			WA_CloseGadget, 	TRUE,
//			WA_SimpleRefresh,	TRUE,
		TAG_DONE))
		{
			LT_Activate(Handle,GAD_GROUP_NAME);

			return(Handle);
		}
		else
			LT_DeleteHandle(Handle);
	}

	return(NULL);
}

LayoutHandle * __regargs
CreateSortHandle(struct Window *Parent,WORD *Criteria,BOOL *Reverse)
{
	LayoutHandle *Handle;

	if(Handle = LT_CreateHandleTags(Parent -> WScreen,
		LH_LocaleHook,&LocaleHook,
	TAG_DONE))
	{
		LT_New(Handle,
			LA_Type,	HORIZONTAL_KIND,
		TAG_DONE);
		{
			LT_New(Handle,
				LA_Type,		VERTICAL_KIND,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,		VERTICAL_KIND,
				TAG_DONE);
				{
					LT_New(Handle,
						LA_Type,		MX_KIND,
						LA_ID,			GAD_SORT_CRITERIA,
						LAMX_FirstLabel,MSG_PHONEBOOK_SORTORDER1_TXT,
						LAMX_LastLabel,	MSG_PHONEBOOK_SORTORDER4_TXT,
						LAMX_TabKey,	TRUE,
						LA_WORD,		Criteria,
						LA_LabelID,		MSG_SORT_CRITERIA_TXT,
					TAG_DONE);

					LT_New(Handle,
						LA_Type,		XBAR_KIND,
					TAG_DONE);

					LT_EndGroup(Handle);
				}

				LT_New(Handle,
					LA_Type,		VERTICAL_KIND,
				TAG_DONE);
				{
					LT_New(Handle,
						LA_Type,		CHECKBOX_KIND,
						LA_ID,			GAD_SORT_REVERSE,
						LA_LabelID,		MSG_REVERSE_ORDER_TXT,
						LA_BOOL,		Reverse,
					TAG_DONE);

					LT_EndGroup(Handle);
				}

				LT_EndGroup(Handle);
			}

			LT_New(Handle,
				LA_Type,		VERTICAL_KIND,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,		YBAR_KIND,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_New(Handle,
				LA_Type,		VERTICAL_KIND,
				LAGR_SameSize,	TRUE,
				LAGR_Spread,	TRUE,
			TAG_DONE);
			{
				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_SORT_IT,
					LA_LabelID,			MSG_JUST_SORT_TXT,
					LABT_ReturnKey,		TRUE,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_SORT_AND_CLOSE,
					LA_LabelID,			MSG_SORT_AND_CLOSE_TXT,
				TAG_DONE);

				LT_New(Handle,
					LA_Type,			BUTTON_KIND,
					LA_ID,				GAD_SORT_JUST_CLOSE,
					LA_LabelID,			MSG_GLOBAL_CLOSE_TXT,
					LABT_EscKey,		TRUE,
				TAG_DONE);

				LT_EndGroup(Handle);
			}

			LT_EndGroup(Handle);
		}

		if(LT_Build(Handle,
			LAWN_TitleID,		MSG_SORT_PHONEBOOK_TXT,
			LAWN_IDCMP, 		IDCMP_CLOSEWINDOW,
			LAWN_HelpHook,		&GuideHook,
			LAWN_Show,			TRUE,
			LAWN_Parent,		Parent,
			LAWN_UserPort,		Parent -> UserPort,
			WA_DepthGadget,		TRUE,
			WA_DragBar,			TRUE,
			WA_RMBTrap, 		TRUE,
			WA_Activate,		TRUE,
			WA_CloseGadget, 	TRUE,
			WA_SimpleRefresh,	TRUE,
		TAG_DONE))
			return(Handle);
		else
			LT_DeleteHandle(Handle);
	}

	return(NULL);
}
