This revision includes the following changes:
 - [1] the inappropriate-background-large.jpg, inappropriate-background-small.jpg, pending-background-large.jpg, pending-background-small.jpg, unavailable-background-large.jpg, unavailable-background-small.jpg images have been removed since the small images are no longer used, but the large ones are still in use, the *-large suffix was dropped.
 - [2] book.png was removed since it is the same as ratings.png, and book.png was not used.
 - [3] book/index.php had the position of the sidebar moved to the left to be more consistent with the browse/index.php page. There also a few links additional links in the sidebar to go back to the list of courses and to sell a book.
 - [4] browse/index.php was updated to disallow users to visit pages for courses or course sections which do not exist. The user will now also get a friendly message whenever an existing course does not contain any books, instead of the ArborJS with a single node on the graph flying around wildly.
 - [5] purchase.php no longer includes a trailing new line at the end of the script.
 - [6] the FFI_BE_Buy jQuery plugin will now have better performance on the book/index.php page. It will no longer allow the user to (presumably, but not really) buy the same book twice by click on the purchase button once, clicking on the confrim button in the dialog, and clicking the purchase button again. This purchase button will now appear to be disabled after the user has purchased a book, and will no longer trigger the dialog to appear, should the user click it again.
 - [7] the FFI_BE_Sell_Books_Assistant will now auto select a newly suggested book cover if only one suggestion is returned.
 - [8] buy.min.js reflects the changes made to FFI_BE_Buy.js.
 - [9] sell.js had an extraneous new line removed.
 - [10] sell.superpackage.min.js includes the changed made to FFI_BE_Sell_Books_Assistant.js.
 - [11] book.css contains a number of enhancements to re-position and re-style the sidebar for greater consistency with the sidebar on other pages. It also corrects the contents of the page to be more responsive on mobile devices with smaller screens.
 - [12] course.css was updated to include CSS styles to display whenever an existing course does not have any books. For Safari, the sidebar is now floated to the left.
 - [13] course.min.css reflects the changes made to course.css.
 - [14] the Cloudinary class no longer includes the backgroundSmall() method, since the site no longer uses these for advertising recent books in a course. The backgroundLarge() method has been renamed to background(). This method creates a larger image size to fit the new design of the header on the book/index.php page.
 - [15] the Book class has been updated to be able to count the number of available books in a course, even if it is "0". Empty courses were not displaying that it had "0" books (likely because 0 was treated as a boolean), so now this number is explicitly cast to an "int" so that "0" will display. It also will be able to suggest a default "unavailable" book cover image, in the event a new book cover cannot be located. The URLPurify() method will remove trailing "-" at the end of a purified URL.
 - [16] the Course class has its URLPurify() method updated to remove trailing "-" at the end of a purified URL.
 - [17] the Email_Merchant class was updated to better detect if a user has really left a comment for the merchant to see, or if they had accidently pressed enter to create a new paragraph or space without leaving an actual comment.
 - [18] the Restore_Process class will add expired books back into the IndexDen index when a user restores a book.
 - [19] inappropriate-background.jpg, pending-background.jpg, and unavailable-background.jpg have been added to replace the old ones with the *-large suffix. These have also been scaled to a slightly larger size to fit the new design of the header on the book/index.php page.
 - [20] book.min.css has been added as a minified version of book.css.