#ifndef  LIBRARY_ITEM_CLASS_
#define LIBRARY_ITEM_CLASS_
	
class Library_Item : public Identity
	{
	 public:
		//Member Data
		static const int PUBLISHER_LENGTH = 12;
		typedef Text Publisher;

		static const int TITLE_LENGTH = 24;
		typedef Text Title;

		enum Status{NON_EXISTENT, CHECKED_OUT, LOST,ON_SHELF, STATUS_SIZE} ;
		const static char *statusName[STATUS_SIZE];
		static const int STATUS_NAME_LENGTH = 12;

		void printSummary(int number) const;
		virtual void printDetails(int number) const;

		Status getStatus() const;
		//Constructor/Destructor		
		Library_Item();
		~Library_Item();
		//Member functions
		void setLost() ;
		void setOnShelf() ;
		void setNonExistent() ;
		void setCheckedOut() ;

		const char *getItemName() const;

		const char *getTitle() const;
		void setTitle(Title &title) ;
		void setPublisher(Text &publisher);

		Text::Comparison compareTitle(const Library_Item *item) const;
	protected:
		//Member data
		Publisher publisher;
		Title title;
		Status status;
		static const Text CLASS_NAME ;
	};
#endif
