// ===========================================================================
//	UAMMain.h 				© 1997 Microsoft Corp. All rights reserved.
// ===========================================================================

#pragma once

#include "ClientUAM.h"

//
//Our type and creator
//
#define UAM_CREATOR		FOUR_CHAR_CODE('NTAM')
#define UAM_TYPE		kUAMFileType
#define UAM_TYPE_CODE	139

#define UAMResourceSignatureSize 	8
#define AFP_IconSize  				128		//Currently no defined icon bigger which AFP client model can handle.

#define	DLOG_Login					12128	//Loging dialog

//
//This is needed to tell the Chooser that the user requests
//to cancel the login operation. This is not defined anywhere,
//this is what Leland Wallace (randall@apple.com) from Apple said to use.
//
#define userCanceledError			-128

//
//Our connection method names for the login dialog
//
#define PSTR_TCPConnection			"\pTCP/IP"
#define PSTR_AppleTalkConnection	"\pAppleTalk"

//
//Password expiration notices occur when within this # of days
//
#define MINIMUM_DAYS_TILL_EXPIRATION	14

//
//The following are constants for the items in the login dialog.
//
#define DITEM_FirstHideItem	9
#define DITEM_LastHideItem	14

#define DITEM_Connect		1
#define DITEM_Line			6
#define DITEM_GuestRadio	7
#define DITEM_RegRadio		8
#define	DITEM_UserName		11
#define DITEM_Password		12
#define DITEM_ChangePwd		14
#define DITEM_Method		16
#define DITEM_Version		17
#define DITEM_Keychain		18
#define DITEM_About			20

#define UAM_ReplaceKeyQuestion		1500

//
//NT specific error codes we use.
//
enum {
	afpNTNewPasswordMismatchErr		= -13000,
	afpNTChangePasswordFailed		= -13001,
	afpNTAccountDisabled			= -13002,
	afpNTInvalidWorkstation			= -13003,
	afpNTInvalidLogonHours			= -13004,
	afpNTPasswordExpired			= -13005,
	afpNTPasswordCantChange			= -13006,
	afpNTPasswordHistConflict		= -13007,
	afpNTPasswordTooShort			= -13008,
	afpNTPasswordTooRecent			= -13009,
	afpNTPasswordRestriction		= -13010,
	afpNTAccountRestriction			= -13011,
	
	uamPasswordExpiresInOneDay		= 1002
};

//
//Prototypes for the main module live here.
//

pascal OSStatus	main(UAMArgs *inUAMArgs);
OSStatus		MS_UAMOpen(UAMArgs *inUAMArgs);
void			MS_UAMClose(void);
pascal void		MS_VersionUserItem(DialogPtr inDialog, DialogItemIndex inItem);
pascal Boolean 	MS_PwdDialogFilter(DialogPtr inDialog, EventRecord *inEvent, short *inItem);
OSStatus 		MS_FindAppleSharePassword(UAMArgs *inUAMArgs);
OSStatus		MS_UAMPwdDialog(UAMArgs *inUAMArgs);
OSStatus		MS_UAMLogin(UAMArgs *inUAMArgs);