#include "stdafx.h"
#include "N8Process.h"
#include "Markup.h"

namespace N8Process
{
	//////////////////////////////////////////////////////////////////////////
	// CProductList��ʵ��;
	BOOL CProductList::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
	{
		SetXMLPath(lpXMLPath);

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
		{
			return FALSE;
		}

		m_bLoad = TRUE;
		m_AryItems.RemoveAll();

		if ( !xml.FindElem() )
			return FALSE;
		if ( xml.IntoElem() )
		{
			while( xml.FindElem(_T("product")) )
			{
				CItem tagitem;
				xml.FindChildElem(_T("ID"));
				tagitem.m_strProductID = xml.GetChildData();

				xml.FindChildElem(_T("name"));
				tagitem.m_strProductName = xml.GetChildData();

				xml.FindChildElem(_T("width"));
				tagitem.m_strProductWidth = xml.GetChildData();

				xml.FindChildElem(_T("height"));
				tagitem.m_strProductHeight = xml.GetChildData();

				// δ������ͬ��;
				m_AryItems.Add(tagitem);
			}
			xml.OutOfElem();
		}

		return TRUE;
	}

	BOOL CProductList::IsItemExists(IN LPCTSTR lpProductName)
	{
		if ( lpProductName == NULL || lpProductName[0] == _T('\0'))
			return FALSE;

		if ( m_AryItems.GetSize() == 0 )
			return FALSE;

		BOOL bExists = FALSE;
		for ( int i = 0; i < m_AryItems.GetSize(); i++ )
		{
			CItem &tagItem = m_AryItems.ElementAt(i);
			if ( tagItem.m_strProductName.CompareNoCase(lpProductName) == 0)
			{
				bExists = TRUE;
				break;
			}
		}

		return bExists;
	}

	BOOL CProductList::IsItemExists(IN LPCTSTR lpProductID, IN LPCTSTR lpProductName)
	{
		if ( lpProductID == NULL || lpProductID[0] == _T('\0') || lpProductName == NULL || lpProductName[0] == _T('\0'))
			return FALSE;

		if ( m_AryItems.GetSize() == 0 )
			return FALSE;

		BOOL bExists = FALSE;
		for ( int i = 0; i < m_AryItems.GetSize(); i++ )
		{
			CItem &tagItem = m_AryItems.ElementAt(i);
			if ( tagItem.m_strProductID.CompareNoCase(lpProductID) == 0 && tagItem.m_strProductName.CompareNoCase(lpProductName) == 0)
			{
				bExists = TRUE;
				break;
			}
		}

		return bExists;
	}

	BOOL CProductList::InsertItem(IN LPCTSTR lpProductID, IN LPCTSTR lpProductName, IN LPCTSTR lpProductWidth, IN LPCTSTR lpProductHeiht)
	{
		if ( !IsPathExists() )
			return FALSE;

		if ( lpProductID == NULL || lpProductID[0] == _T('\0') || lpProductName == NULL || lpProductName[0] == _T('\0'))
			return FALSE;

		if ( !m_bLoad )
		{
			if( !LoadXML() )
				return FALSE;
		}

		if ( IsItemExists(lpProductID, lpProductName) )
		{
			return FALSE;
		}

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
			return FALSE;
		if ( !xml.FindElem() )
			return FALSE;
		if ( xml.IntoElem() )
		{
			xml.FindElem(_T("product")) ;

			// 1.����Ԫ��;
			xml.AddElem(_T("product"));
			xml.AddChildElem(_T("ID"), lpProductID);
			xml.AddChildElem(_T("name"), lpProductName);

			if ( lpProductWidth )
				xml.AddChildElem(_T("width"), lpProductWidth);
			else 
				xml.AddChildElem(_T("width"), _T("0"));

			if ( lpProductHeiht )
				xml.AddChildElem(_T("height"), lpProductHeiht);
			else
				xml.AddChildElem(_T("height"), _T("0"));

			xml.OutOfElem();

			if ( !xml.Save(GetPath()))
			{
				return FALSE;
			}

			CItem tagItem;
			tagItem.m_strProductID = lpProductID;
			tagItem.m_strProductName = lpProductName;
			if ( lpProductWidth )
				tagItem.m_strProductWidth = lpProductWidth;
			else
				tagItem.m_strProductWidth = _T("0");
			if ( lpProductHeiht )
				tagItem.m_strProductHeight = lpProductHeiht;
			else
				tagItem.m_strProductHeight = _T("0");

			m_AryItems.Add(tagItem);

		}

		return TRUE;
	}

	BOOL CProductList::RemoveItemByID(IN LPCTSTR lpProductID)
	{

		return TRUE;
	}

	BOOL CProductList::RemoveItemByName(IN LPCTSTR lpProductName)
	{

		return TRUE;
	}

	//////////////////////////////////////////////////////////////////////////
	// CStaff��ʵ��;
	BOOL CStaff::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
	{
		SetXMLPath(lpXMLPath);

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
		{
			return FALSE;
		}

		m_bLoad = TRUE;
		m_AryItems.RemoveAll();

		if ( !xml.FindElem() )
			return FALSE;

		if ( xml.IntoElem() )
		{
			while( xml.FindElem(_T("Staff")) )
			{
				CItem tagitem;
				xml.FindChildElem(_T("id"));
				tagitem.m_strStaffID = xml.GetChildData();

				xml.FindChildElem(_T("name"));
				tagitem.m_strStaffName = xml.GetChildData();

				// δ������ͬ��;
				m_AryItems.Add(tagitem);
			}
			xml.OutOfElem();
		}

		return TRUE;
	}

	BOOL CStaff::IsItemExists(IN LPCTSTR lpStaffID)
	{
		if ( lpStaffID == NULL || lpStaffID[0] == _T('\0') )
			return FALSE;

		if ( m_AryItems.GetSize() == 0 )
			return FALSE;

		BOOL bExists = FALSE;
		for ( int i = 0; i < m_AryItems.GetSize(); i++ )
		{
			CItem &tagItem = m_AryItems.ElementAt(i);
			if ( tagItem.m_strStaffID.CompareNoCase(lpStaffID) == 0 )
			{
				bExists = TRUE;
				break;
			}
		}

		return bExists;
	}

	BOOL CStaff::InsertItem(IN LPCTSTR lpStaffID, IN LPCTSTR lpStaffName)
	{
		if ( !IsPathExists() )
			return FALSE;

		if ( lpStaffID == NULL || lpStaffID[0] == _T('\0') || lpStaffName == NULL || lpStaffName[0] == _T('\0'))
			return FALSE;

		if ( !m_bLoad )
		{
			if( !LoadXML() )
				return FALSE;
		}

		if ( IsItemExists(lpStaffID) )
		{
			return FALSE;
		}

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
			return FALSE;
		if ( !xml.FindElem() )
			return FALSE;
		if ( xml.IntoElem() )
		{
			xml.FindElem(_T("product")) ;

			xml.AddElem(_T("Staff"));
			xml.AddChildElem(_T("id"), lpStaffID);
			xml.AddChildElem(_T("name"), lpStaffName);

			xml.OutOfElem();
			if ( !xml.Save(GetPath()))
			{
				return FALSE;
			}

			CItem tagItem;
			tagItem.m_strStaffID = lpStaffID;
			tagItem.m_strStaffName = lpStaffName;

			m_AryItems.Add(tagItem);
		}

		return TRUE;
	}

	BOOL CStaff::RemoveItemByID(IN LPCTSTR lpProductID)
	{

		return TRUE;
	}


	//////////////////////////////////////////////////////////////////////////
	// CResultProduct��ʵ��;
	BOOL CResultProduct::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
	{
		SetXMLPath(lpXMLPath);

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
		{
			return FALSE;
		}

		m_bLoad = TRUE;
		m_AryItems.RemoveAll();

		if ( !xml.FindElem() )
			return FALSE;

		if ( xml.IntoElem() )
		{
			while( xml.FindElem(_T("product")) )
			{
				CItem tagitem;
				xml.FindChildElem(_T("id"));
				tagitem.m_strProductID = xml.GetChildData();

				xml.FindChildElem(_T("comment"));
				tagitem.m_strProductComment = xml.GetChildData();

				xml.FindChildElem(_T("name"));
				tagitem.m_strProductName = xml.GetChildData();

				xml.FindChildElem(_T("width"));
				tagitem.m_strProductWidth = xml.GetChildData();

				xml.FindChildElem(_T("height"));
				tagitem.m_strProductHeight = xml.GetChildData();

				xml.IntoElem();
				xml.FindElem(_T("items"));
				xml.IntoElem();
				while ( xml.FindElem(_T("item")) )
				{
					SubItem tagSubItem;
					xml.FindChildElem(_T("id"));
					tagSubItem.m_strID = xml.GetChildData();

					xml.FindChildElem(_T("comment"));
					tagSubItem.m_strComment = xml.GetChildData();

					xml.FindChildElem(_T("replaces"));
					tagSubItem.m_strReplease = xml.GetChildData();

					tagitem.m_ArySubItems.push_back(tagSubItem);
				}
				xml.OutOfElem();//�˳�item;
				xml.OutOfElem();//�˳�items;

				// δ������ͬ��;
				m_AryItems.Add(tagitem);
			}
			xml.OutOfElem();//�˳�product;
		}

		return TRUE;
	}

	BOOL CResultProduct::IsItemExists(IN LPCTSTR lpID, IN LPCTSTR lpName)
	{
		if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
			return FALSE;

		BOOL bExists = FALSE;
		for ( int i = 0; i < m_AryItems.GetSize(); i++ )
		{
			CItem &tagItem = m_AryItems.ElementAt(i);
			if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 ||
				tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
			{
				bExists = TRUE;
				break;
			}
		}

		return bExists;
	}

	BOOL CResultProduct::InsertItem(IN LPCTSTR lpID, IN LPCTSTR lpComment, IN LPCTSTR lpName, IN LPCTSTR lpWidth, IN LPCTSTR lpHeight)
	{
		if ( !IsPathExists() )
			return FALSE;

		if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
			return FALSE;

		if ( !m_bLoad )
		{
			if( !LoadXML() )
				return FALSE;
		}

		if ( IsItemExists(lpID, lpName) )
		{
			return FALSE;
		}

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
			return FALSE;

		if ( !xml.FindElem() )
			return FALSE;

		if ( xml.IntoElem() )
		{
			xml.FindElem(_T("product")) ;

			xml.AddElem(_T("product"));
			xml.AddChildElem(_T("id"), lpID);
			xml.AddChildElem(_T("comment"), lpComment);
			xml.AddChildElem(_T("name"), lpName);
			if (lpWidth)
				xml.AddChildElem(_T("width"), lpWidth);
			else
				xml.AddChildElem(_T("width"), _T("0"));

			if ( lpHeight)
				xml.AddChildElem(_T("height"), lpHeight);
			else
				xml.AddChildElem(_T("height"), _T("0"));

			xml.AddChildElem(_T("items"));

			xml.OutOfElem();//�˳���Ԫ��;
			if ( !xml.Save(GetPath()))
			{
				return FALSE;
			}

			CItem tagItem;
			tagItem.m_strProductID = lpID;
			tagItem.m_strProductName = lpName;

			if ( lpComment )
				tagItem.m_strProductComment = lpComment;
			else
				tagItem.m_strProductComment = _T("");

			if ( lpWidth )
				tagItem.m_strProductWidth = lpWidth;
			else
				tagItem.m_strProductWidth = _T("0");

			if ( lpHeight )
				tagItem.m_strProductHeight = lpHeight;
			else
				tagItem.m_strProductHeight = _T("0");

			m_AryItems.Add(tagItem);
		}

		return TRUE;
	}

	BOOL CResultProduct::InsertSubItem(IN LPCTSTR lpID, IN LPCTSTR lpName, IN LPCTSTR lpSubID, IN LPCTSTR lpSubComment, IN LPCTSTR lpSubReplease)
	{
		if ( !IsPathExists() )
			return FALSE;

		if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0') || lpSubID == NULL || lpSubID[0] == _T('\0'))
			return FALSE;

		if ( !m_bLoad )
		{
			if( !LoadXML() )
				return FALSE;
		}

		if ( !IsItemExists(lpID, lpName) )
		{
			return FALSE;
		}

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
			return FALSE;

		if ( !xml.FindElem() )
			return FALSE;

		if ( !xml.IntoElem() )
			return FALSE;

		while( xml.FindElem(_T("product")) )
		{
			CString strID;
			CString strName;
			if ( xml.FindChildElem(_T("id")) )
			{
				strID = xml.GetChildData();
			}

			if ( xml.FindChildElem(_T("name")) )
			{
				strName = xml.GetChildData();
			}

			if ( strID.CompareNoCase(lpID) == 0 && strName.CompareNoCase(lpName) == 0 )
			{
				xml.IntoElem();	// ����product;
				xml.FindElem(_T("items"));
				xml.IntoElem();// ����items;

				CString strSubID;
				CString strSubComment;
				CString strSubReplease;

				BOOL bSubItemExists = FALSE;
				while ( xml.FindElem(_T("item")) )
				{
					if ( xml.FindChildElem(_T("id")) )
					{
						strSubID = xml.GetChildData();
						if ( strSubID.CompareNoCase(lpSubID) == 0 )
						{// �����ӽ��;
							bSubItemExists = TRUE;
							break;
						}
					}
				}

				if ( !bSubItemExists )
				{
					xml.AddElem(_T("item"));
					xml.AddChildElem(_T("id"), lpSubID);
					if ( lpSubComment )
						xml.AddChildElem(_T("comment"), lpSubComment);
					else
						xml.AddChildElem(_T("comment"), _T(""));

					if ( lpSubReplease )
						xml.AddChildElem(_T("replaces"), lpSubReplease);
					else
						xml.AddChildElem(_T("replaces"), _T(""));

					int nIndex = -1;
					for ( int i = 0; i < m_AryItems.GetSize(); i++ )
					{
						CItem &tagItem = m_AryItems.ElementAt(i);
						if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 && tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
						{
							nIndex = i;
							break;
						}
					}

					SubItem tagSubItem;
					tagSubItem.m_strID = lpSubID;
					if ( lpSubComment )
						tagSubItem.m_strComment = lpSubComment;
					else
						tagSubItem.m_strComment = _T("");
					if ( lpSubReplease )
						tagSubItem.m_strReplease = lpSubReplease;
					else
						tagSubItem.m_strReplease = _T("");

					if ( nIndex != -1 )
						m_AryItems.ElementAt(nIndex).m_ArySubItems.push_back(tagSubItem);
					else
						AfxMessageBox(_T("���س���"));
				}

				xml.OutOfElem();// �˳�items;
				xml.OutOfElem();// �˳�product;

				break;
			}
		}
		xml.OutOfElem();// �˳������;

		if ( !xml.Save(GetPath()))
		{
			return FALSE;
		}

		return TRUE;
	}

	//////////////////////////////////////////////////////////////////////////
	// CResultVgProduct��ʵ��;
	BOOL CResultVgProduct::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
	{
		SetXMLPath(lpXMLPath);

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
		{
			return FALSE;
		}

		m_bLoad = TRUE;
		m_AryItems.RemoveAll();

		if ( !xml.FindElem() )
			return FALSE;

		if ( !xml.IntoElem() )
			return FALSE;

		while( xml.FindElem(_T("n8vg_product")) )
		{
			CItem tagitem;
			xml.FindChildElem(_T("id"));
			tagitem.m_strProductID = xml.GetChildData();

			xml.FindChildElem(_T("comment"));
			tagitem.m_strProductComment = xml.GetChildData();

			xml.FindChildElem(_T("name"));
			tagitem.m_strProductName = xml.GetChildData();

			xml.FindChildElem(_T("width"));
			tagitem.m_strProductWidth = xml.GetChildData();

			xml.FindChildElem(_T("height"));
			tagitem.m_strProductHeight = xml.GetChildData();

			xml.IntoElem();
			xml.FindElem(_T("items"));
			xml.IntoElem();
			while ( xml.FindElem(_T("item")) )
			{
				CString strSubID;
				xml.FindChildElem(_T("id"));
				strSubID = xml.GetChildData();

				tagitem.m_ArySubItems.push_back(strSubID);
			}
			xml.OutOfElem();//�˳�item;
			xml.OutOfElem();//�˳�items;

			// δ������ͬ��;
			m_AryItems.Add(tagitem);
		}
		xml.OutOfElem();//�˳�product;

		return TRUE;
	}

	BOOL CResultVgProduct::IsItemExists(IN LPCTSTR lpID, IN LPCTSTR lpName)
	{
		if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
			return FALSE;

		BOOL bExists = FALSE;
		for ( int i = 0; i < m_AryItems.GetSize(); i++ )
		{
			CItem &tagItem = m_AryItems.ElementAt(i);
			if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 ||
				tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
			{
				bExists = TRUE;
				break;
			}
		}

		return bExists;
	}

	BOOL CResultVgProduct::InsertItem(IN LPCTSTR lpID, IN LPCTSTR lpComment, IN LPCTSTR lpName, IN LPCTSTR lpWidth, IN LPCTSTR lpHeight)
	{
		if ( !IsPathExists() )
			return FALSE;

		if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
			return FALSE;

		if ( !m_bLoad )
		{
			if( !LoadXML() )
				return FALSE;
		}

		if ( IsItemExists(lpID, lpName) )
		{
			return FALSE;
		}

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
			return FALSE;

		if ( !xml.FindElem() )
			return FALSE;

		if ( !xml.IntoElem() )
			return FALSE;

		xml.FindElem(_T("n8vg_product"));

		xml.AddElem(_T("n8vg_product"));
		xml.AddChildElem(_T("id"), lpID);
		xml.AddChildElem(_T("comment"), lpComment);
		xml.AddChildElem(_T("name"), lpName);
		if (lpWidth)
			xml.AddChildElem(_T("width"), lpWidth);
		else
			xml.AddChildElem(_T("width"), _T("0"));

		if ( lpHeight)
			xml.AddChildElem(_T("height"), lpHeight);
		else
			xml.AddChildElem(_T("height"), _T("0"));

		xml.AddChildElem(_T("items"));

		xml.OutOfElem();//�˳������;
		if ( !xml.Save(GetPath()))
		{
			return FALSE;
		}

		CItem tagItem;
		tagItem.m_strProductID = lpID;
		tagItem.m_strProductName = lpName;

		if ( lpComment )
			tagItem.m_strProductComment = lpComment;
		else
			tagItem.m_strProductComment = _T("");

		if ( lpWidth )
			tagItem.m_strProductWidth = lpWidth;
		else
			tagItem.m_strProductWidth = _T("0");

		if ( lpHeight )
			tagItem.m_strProductHeight = lpHeight;
		else
			tagItem.m_strProductHeight = _T("0");

		m_AryItems.Add(tagItem);

		return TRUE;
	}

	BOOL CResultVgProduct::InsertSubItem(IN LPCTSTR lpID, IN LPCTSTR lpName, IN LPCTSTR lpSubID)
	{
		if ( !IsPathExists() )
			return FALSE;

		if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0') || lpSubID == NULL || lpSubID[0] == _T('\0'))
			return FALSE;

		if ( !m_bLoad )
		{
			if( !LoadXML() )
				return FALSE;
		}

		if ( !IsItemExists(lpID, lpName) )
		{
			return FALSE;
		}

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
			return FALSE;

		if ( !xml.FindElem() )
			return FALSE;

		if ( !xml.IntoElem() )
			return FALSE;

		while( xml.FindElem(_T("n8vg_product")) )
		{
			CString strID;
			CString strName;
			if ( xml.FindChildElem(_T("id")) )
			{
				strID = xml.GetChildData();
			}

			if ( xml.FindChildElem(_T("name")) )
			{
				strName = xml.GetChildData();
			}

			if ( strID.CompareNoCase(lpID) == 0 && strName.CompareNoCase(lpName) == 0 )
			{
				xml.IntoElem();	// ����product;
				xml.FindElem(_T("items"));
				xml.IntoElem();// ����items;

				CString strSubID;
				CString strSubComment;
				CString strSubReplease;

				BOOL bSubItemExists = FALSE;
				while ( xml.FindElem(_T("item")) )
				{
					if ( xml.FindChildElem(_T("id")) )
					{
						strSubID = xml.GetChildData();
						if ( strSubID.CompareNoCase(lpSubID) == 0 )
						{// �����ӽ��;
							bSubItemExists = TRUE;
							break;
						}
					}
				}

				if ( !bSubItemExists )
				{
					xml.AddElem(_T("item"));
					xml.AddChildElem(_T("id"), lpSubID);

					int nIndex = -1;
					for ( int i = 0; i < m_AryItems.GetSize(); i++ )
					{
						CItem &tagItem = m_AryItems.ElementAt(i);
						if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 && tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
						{
							nIndex = i;
							break;
						}
					}

					if ( nIndex != -1 )
						m_AryItems.ElementAt(nIndex).m_ArySubItems.push_back(lpSubID);
					else
						AfxMessageBox(_T("���س���"));
				}

				xml.OutOfElem();// �˳�items;
				xml.OutOfElem();// �˳�product;

				break;
			}
		}
		xml.OutOfElem();// �˳������;

		if ( !xml.Save(GetPath()))
		{
			return FALSE;
		}

		return TRUE;
	}


	//////////////////////////////////////////////////////////////////////////
	// CReusltItem��ʵ��;
	BOOL CResultItem::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ )
	{
		SetXMLPath(lpXMLPath);

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
		{
			return FALSE;
		}

		m_bLoad = TRUE;
		m_AryItems.RemoveAll();

		if ( !xml.FindElem() )
			return FALSE;
		if ( xml.IntoElem() ) 
		{
			while ( xml.FindElem(_T("item")) )
			{
				CItem tagItem;
				xml.FindChildElem(_T("bDel"));
				tagItem.m_strDel = xml.GetChildData();

				xml.FindChildElem(_T("bPage"));
				tagItem.m_strPage = xml.GetChildData();

				xml.FindChildElem(_T("path"));
				tagItem.m_strPath = xml.GetChildData();

				xml.FindChildElem(_T("comment"));
				tagItem.m_strComment = xml.GetChildData();

				xml.FindChildElem(_T("deleted"));
				tagItem.m_strDeleted = xml.GetChildData();

				// δ������ͬ��;
				m_AryItems.Add(tagItem);
			}

			xml.OutOfElem();
		}

		return TRUE;
	}

	BOOL CResultItem::IsItemExists(IN LPCTSTR lpPath)
	{
		if ( lpPath == NULL || lpPath[0] == _T('\0'))
			return FALSE;

		BOOL bExists = FALSE;
		for ( int i = 0; i < m_AryItems.GetSize(); i++ )
		{
			CItem &tagItem = m_AryItems.ElementAt(i);
			if ( tagItem.m_strPath.CompareNoCase(lpPath) == 0 )
			{
				bExists = TRUE;
				break;
			}
		}

		return bExists;
	}

	BOOL CResultItem::InsertItem(IN LPCTSTR lpPath, IN LPCTSTR lpComment, IN LPCTSTR lpDel, IN LPCTSTR lpPage)
	{

		return TRUE;
	}

	//////////////////////////////////////////////////////////////////////////
	// CAlbum��ʵ��;
	BOOL CAlbum::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ )
	{
		SetXMLPath(lpXMLPath);

		CMarkup xml;
		if ( !xml.Load(GetPath()) )
		{
			return FALSE;
		}

		m_bLoad = TRUE;
		m_AryPages.RemoveAll();

		if ( !xml.FindElem() )
			return FALSE;

		if ( !xml.IntoElem() )
			return FALSE;

		if ( xml.FindElem(_T("N8Pages")) )
		{
			xml.IntoElem();// ����N8Pages;
			while( xml.FindElem(_T("N8Page")) )
			{
				CPageItem tagItem;
				tagItem.m_strFileName = xml.GetAttrib(_T("FileName"));
				tagItem.m_strtplid = xml.GetAttrib(_T("tplid"));
				tagItem.m_strtplname = xml.GetAttrib(_T("tplname"));

				xml.IntoElem();
				if ( xml.FindElem(_T("CellList")) )
				{
					while ( xml.FindChildElem(_T("Cell")) )
					{
						CString strImg = xml.GetChildAttrib(_T("FileName"));
						tagItem.m_vtImgs.push_back(strImg);
					}
				}
				xml.OutOfElem();//�˳�CellList;

				// δ������ͬ��;
				m_AryPages.Add(tagItem);
			}
			xml.OutOfElem();// �˳�N8Pages;
		}

		xml.OutOfElem();//�˳������;

		return TRUE;
	}
};