#ifndef __LYFZ_SERVERINFO_HEADER__
#define __LYFZ_SERVERINFO_HEADER__

#pragma once
//#include "stdafx.h"
#include "MyLock.h"
#include <wincrypt.h>
#include <Shlwapi.h>
#include <tlhelp32.h>
#include <lm.h>  
#include "SoftKey.h"
//#include "./helper/ffsco.h"
//#include "DBServerDlg.h"

//GDI+k
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
#include ".\\includes\\gdiplus.h"   ////���޸�Ϊ���ͷ�ļ�·��
using namespace Gdiplus;
#pragma comment(lib, ".\\lib\\gdiplus.lib") ////���޸�Ϊ���.lib�ļ�·��

#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
#define KEYLENGTH  0x00800000
#define ENCRYPT_ALGORITHM CALG_RC4
#define ENCRYPT_BLOCK_SIZE 8 

#define JEFF_TEST_ON  1		// ����Jeff���˲��Ա�ʶ;
#define JEFF_TEST_OFF 0		// ����Jeff���˲��Ա�ʶ;

#define USE_NEW_PRO	  1		// ʹ����Э���ʶ;

#define THE_PRIMARY_GLOBAL_VARIABLE 1 // ԭ����ȫ�ֱ���;
#define THE_PRIMARY_GLOBAL_FUNCTION 1 // ԭ����ȫ�ֺ���;

//class CDBServerDlg;
extern TCHAR g_ModulePath[MAX_PATH];			// ����Ŀ¼;
extern TCHAR g_ModuleFileName[MAX_PATH];		// ��������;
extern TCHAR g_szConnectString[MAX_PATH];		// DB���Ӵ�;

// ��������Ϣ;
extern TCHAR g_szDBSource[MAX_PATH];		// ���ݿ�Դ(��������IP��������);
extern TCHAR g_szDBSourcePort[MAX_PATH];	// ���ݿ�Դ�˿�;
extern DWORD g_dwDBServerPort;				// ���ݿ�Դ�˿�;
extern TCHAR g_szDBAccount[MAX_PATH];		// ���ݿ��¼�û�;
extern TCHAR g_szDBPassWord[MAX_PATH];		// ���ݿ��¼����;
extern TCHAR g_szDBName[MAX_PATH];			// ���ݿ�����;	


typedef struct tagresdata2
{
	BOOL bHasBk;
	int  nPicCount;
	int  nPicCount2;
	DWORD nPicBmpCount[50];
	CRect rect[50];
}RESDATA2;

// start+------------------------------------------------------------------
// Jeff:����Ϊԭ������ȫ�ֱ���;
#if THE_PRIMARY_GLOBAL_VARIABLE
extern int g_port;			// Jeff.ͨ�Ŷ˿�;
extern BOOL g_bReg;
extern CString g_strdbpsw;				// ���ݿ��˺š�����;
extern CString g_strdbServrename;		// ���ݿ������(��ַ)
extern CString g_bakinfo;
extern CString g_bakphoto;
extern CString g_mainpath;

extern SoftKey ytSoftKey;
extern CString g_localname;		// ���ؼ������;


extern CDatabase g_db;				// ��Ϊ"db"�����ݿ�,�����ʹ�õ����ݿ�;
extern CArray<int, int>	g_nYearArray;						// ��ݣ�����������ʷ���ݿ⣩
//CArray<CDatabase*,CDatabase*>g_dbArray;				// ��ʷ���ݿ�;
extern CArray<CDatabase*, CDatabase*>g_dbHistoryArray;	// ��ʷ���ݿ�����,��2014,����������ǰ�����ʹ�õ�db.mdf;
extern CArray<CDatabase*, CDatabase*>g_branchdbarray;
extern CArray<CDatabase*, CDatabase*>g_branchdb2array;//����ʷ��ȵķֵ�DB
extern CStringArray g_branchnamearray;
extern CStringArray g_branchname2array;
extern CStringArray g_branchiparray;
extern CStringArray g_branchdomainarray;
extern CDatabase	 *g_curdb;
extern int			 g_conncount;			// Jeff.���ܹ��е���ϯ������;
extern CString g_sdomain;	// Jeff.???
extern CStringArray g_conniparray;
extern CStringArray g_connidarray;
extern BOOL g_bCheckAll;
extern BYTE *g_pSkinData;
extern DWORD  g_SkinLeng;
extern BOOL g_bAutoRun;
extern CStringArray g_filedatearray;
extern CStringArray g_filedatearraynew;
extern CString g_bakdate;
extern CString g_localip;
extern BOOL g_bSteal;
extern CString	g_bakserver1;
extern CString g_bakserver2;
extern CString g_bakserver3;
extern CString g_bakserver4;
extern DWORD g_tisks;
#endif
// endof+------------------------------------------------------------------

extern int GetIniInfo(const char *szPath = NULL, const char *szIniName = NULL);
extern BOOL GetDiskSpaceInfo(IN LPCTSTR lpRootPathName,IN OUT double &dTotalNum, IN OUT double &dFreeNum);
extern BOOL GetNetShareInfo(IN LPCTSTR lpszServer, IN LPCTSTR lpszShare, OUT LPTSTR lpPath);

#if THE_PRIMARY_GLOBAL_FUNCTION

extern BOOL AddConn(CDatabase *m_conndb, CString dbname);
extern void WriteError(CString str);
extern void WritePswWrong(CString str);
extern void WriteNullBalance(CString str);
extern void WriteUnallowIP(CString str);
extern int GetEncoderClsid(const WCHAR* format, CLSID* pClsid);
extern void SaveImageToFile(Image *img, CString path);
extern void SaveImageToFile2(Image *img, CString path, ULONG quality);
extern void RectFitDes(int width, int height, CRect &rc);
extern bool  CheckFolderFileExist(CString &strPath);
extern bool  CheckFileExist(CString &strPath);
extern BOOL EncryptFile2(BYTE *buffer, DWORD leng, PCHAR szPassword);
extern void BakData2(CString savedir, BOOL bToday, BOOL bBakHis);
extern void BakData(CString savedir, BOOL bToday, BOOL bBakHis);
extern DWORD FindAppProcessID(CString path);
extern void WriteLogin(CString str);
extern void GetPathFromNetShareName(CString name, CString &sRet);
extern CString GetModifyTime2(CString path);
extern DWORD GetLastDirTime(CString dir);
extern CString GetModifyTime(CString path);
extern void ErrorExit(CString strDescription, const DWORD &dwError);
extern void MyGetIPByName(CString &name);
extern void EncryptFile3(CString path);
extern int FindArray(CStringArray *pArray, CString Str);
extern BOOL isInnerIP(DWORD a_ip);
extern BOOL CompareIP(CString name1, CString name2);
extern void DeleteDirectory(CString strDir);
extern int GetLengthEx(CString str);
extern CString GetFileSize(CString path);
extern void SortArray(CStringArray &datearray);
extern int CheckPhoneType(CString phoneno);//�ƶ�:0 ��ͨ:1 ����:2 С��ͨ:3 δ֪:-1
extern CTime GetTmFromStr(CString date);
extern void ConvertToPrice(CString &str);
extern void SortArray(CArray<CStringArray, CStringArray>*List1array, int pos);
extern void DeCodelong1(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8);
extern void DeCodelong2(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8);
extern void DeCodelong3(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8);
extern void DeCodelong4(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8);
extern void DeCodePicCount(long &value1, long &value2);
#endif




#endif