### Eclipse Workspace Patch 1.0
#P pageflip
Index: README.txt
===================================================================
RCS file: README.txt
diff -N README.txt
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ README.txt	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,102 @@
+$Id$
+
+PageFlip: Book, Magazine, Comic Viewer module - http://drupal.org/project/pageflip
+==================================================================================
+
+DESCRIPTION
+-----------
+PageFlip simulates "flipping through the pages" of books, magazines, comics, flyers, or other "book"-like content.
+
+PageFlip includes two viewers: PageFlip MegaZine3 Viewer and PageFlip HTML/JavaScript Viewer. The former uses the open-source Flash-based MegaZine3 page flipping engine while the latter is a custom viewer written with jQuery.
+
+Content is created using three content types:
+
+* PageFlip Page: Represents a page and allows uploading two resolutions of each page.
+* PageFlip Chapter: Represents a chapter or section and acts as a container for PageFlip Pages.
+* PageFlip Book: Represents one full document (e.g. a comic book). Defines the front cover page, inside-front-cover pages, and chapters that comprise the book.
+
+REQUIREMENTS
+------------
+Drupal 6.x
+CCK
+ImageField
+
+INSTALLATION
+------------
+1.  To install the module copy the 'pageflip' folder to your 
+    sites/all/modules directory.
+
+2.  Install the nesscarry libraries.
+
+For the MegaZine3 Viewer, download and extract the library
+from http://www.megazine3.de/ into the sites library directory
+in the subfolder 'mz3'.
+
+The path to the flash file should be:
+
+sites/all/libraries/mz3/megazine/megazine.swf
+
+For the HTML Viewer, download and extract the required JQuery
+libraries:
+
+1. JQuery Cycle Plugin - http://malsup.com/jquery/cycle/
+
+Copy jquery.cycle.all.min.js so that it resides here:
+
+sites/all/libraries/jquery.cycle/jquery.cycle.all.min.js
+
+2. JQuery BBQ - http://benalman.com/projects/jquery-bbq-plugin/
+
+Copy jquery.ba-hashchange.min.js so that it resides here:
+
+sites/all/libraries/jquery.ba-hashchange/jquery.ba-hashchange.min.js
+
+3.  Go to admin/build/modules. Enable the main module and at
+least one of the viewers. It is found in the Others section.
+
+Read more about installing modules at http://drupal.org/node/70151
+
+UPGRADING
+---------
+Any updates should be automatic. Just remember to run update.php!
+
+FEATURES
+--------
+General features:
+
+* Pages are arranged so that chapters always start on the right-hand side.
+
+The HTML/JavaScript viewer
+
+* fades between page pairs when "flipping" pages--not quite as fancy as the MegaZine viewer, but more fun than a page refresh
+* has a drop-down "Front cover/chapter 1/chapter 2..." selector that allows quickly navigating through the book being viewed
+* optionally integrates with ShareThis (provides a place to paste your ShareThis widget code on its settings page)
+* optionally integrates the vote_up_down module for book voting
+
+The MegaZine3 Flash viewer
+
+* provides a setting to customize options sent to MegaZine in the XML <book> tag
+* provides a setting to customize options in each XML <page> tag
+* allows overriding XML generation on any page with completely customized XML
+
+HOWTO / FAQ
+-----------
+
+1 - Creating a book.
+
+TODO
+
+AUTHORS
+-------
+adamdicarlo - http://drupal.org/user/100783.
+
+The following users have contributed to this module.
+
+Alan D. - http://drupal.org/user/198838.
+
+REFERENCES
+----------
+[1] http://drupal.org/project/pageflip
+[2] http://www.megazine3.de/
+[3] http://www.megazine3.de/doc/MegaZine3
+
Index: content_types/pageflip_book.txt
===================================================================
RCS file: content_types/pageflip_book.txt
diff -N content_types/pageflip_book.txt
--- content_types/pageflip_book.txt	18 Jul 2010 16:26:59 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,518 +0,0 @@
-$content['type']  = array (
-  'name' => 'PageFlip Book',
-  'type' => 'pageflip_book',
-  'description' => 'A comic book, magazine, or other type of book.',
-  'title_label' => 'Title',
-  'body_label' => 'Description',
-  'min_word_count' => '0',
-  'help' => '',
-  'node_options' => 
-  array (
-    'status' => true,
-    'revision' => true,
-    'promote' => false,
-    'sticky' => false,
-  ),
-  'upload' => '1',
-  'old_type' => 'pageflip_book',
-  'orig_type' => 'pageflip_book',
-  'module' => 'node',
-  'custom' => '0',
-  'modified' => '1',
-  'locked' => '1',
-  'reset' => 'Reset to defaults',
-  'content_profile_use' => 0,
-  'comment' => 2,
-  'comment_default_mode' => 4,
-  'comment_default_order' => 1,
-  'comment_default_per_page' => 50,
-  'comment_controls' => 3,
-  'comment_anonymous' => 0,
-  'comment_subject_field' => 1,
-  'comment_preview' => 1,
-  'comment_form_location' => 0,
-  'ant' => '0',
-  'ant_pattern' => '',
-  'ant_php' => 0,
-  'better_formats_allowed' => 
-  array (
-    1 => false,
-    2 => false,
-    3 => false,
-  ),
-  'better_formats_defaults' => 
-  array (
-    'node-4' => 
-    array (
-      'format' => '2',
-      'weight' => '-25',
-    ),
-    'node-3' => 
-    array (
-      'format' => '2',
-      'weight' => '-24',
-    ),
-    'node-2' => 
-    array (
-      'format' => '0',
-      'weight' => '-23',
-    ),
-    'node-1' => 
-    array (
-      'format' => '0',
-      'weight' => '-22',
-    ),
-    'comment-4' => 
-    array (
-      'format' => '2',
-      'weight' => '-25',
-    ),
-    'comment-3' => 
-    array (
-      'format' => '2',
-      'weight' => '-24',
-    ),
-    'comment-2' => 
-    array (
-      'format' => '0',
-      'weight' => '-23',
-    ),
-    'comment-1' => 
-    array (
-      'format' => '0',
-      'weight' => '-22',
-    ),
-  ),
-);
-$content['fields']  = array (
-  0 => 
-  array (
-    'label' => 'Icon',
-    'field_name' => 'field_pageflip_icon',
-    'type' => 'filefield',
-    'widget_type' => 'imagefield_widget',
-    'change' => 'Change basic information',
-    'weight' => '-4',
-    'file_extensions' => 'png gif jpg jpeg',
-    'progress_indicator' => 'bar',
-    'file_path' => '',
-    'max_filesize_per_file' => '',
-    'max_filesize_per_node' => '',
-    'max_resolution' => 0,
-    'min_resolution' => 0,
-    'custom_alt' => 0,
-    'alt' => '',
-    'custom_title' => 0,
-    'title_type' => 'textfield',
-    'title' => '',
-    'use_default_image' => 0,
-    'default_image_upload' => '',
-    'default_image' => NULL,
-    'description' => 'An image representing the book.',
-    'group' => false,
-    'conditional_fields' => 
-    array (
-      'field_story_era' => 'conditional_field_no_value',
-    ),
-    'required' => 0,
-    'multiple' => '0',
-    'list_field' => '0',
-    'list_default' => 1,
-    'description_field' => '0',
-    'op' => 'Save field settings',
-    'module' => 'filefield',
-    'widget_module' => 'imagefield',
-    'columns' => 
-    array (
-      'fid' => 
-      array (
-        'type' => 'int',
-        'not null' => false,
-        'views' => true,
-      ),
-      'list' => 
-      array (
-        'type' => 'int',
-        'size' => 'tiny',
-        'not null' => false,
-        'views' => true,
-      ),
-      'data' => 
-      array (
-        'type' => 'text',
-        'serialize' => true,
-        'views' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => '-4',
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'pageflip-book-icon_default',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'pageflip-book-icon_default',
-        'exclude' => 0,
-      ),
-      4 => 
-      array (
-        'format' => 'pageflip-book-icon_default',
-        'exclude' => 0,
-      ),
-      'token' => 
-      array (
-        'format' => 'image_plain',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-  1 => 
-  array (
-    'label' => 'Cover',
-    'field_name' => 'field_pageflip_cover',
-    'type' => 'nodereference',
-    'widget_type' => 'nodereference_select',
-    'change' => 'Change basic information',
-    'weight' => '-2',
-    'autocomplete_match' => 'contains',
-    'size' => 60,
-    'description' => '',
-    'default_value' => 
-    array (
-      0 => 
-      array (
-        'nid' => '',
-      ),
-    ),
-    'default_value_php' => '',
-    'default_value_widget' => 
-    array (
-      'field_pageflip_cover' => 
-      array (
-        0 => 
-        array (
-          'nid' => '',
-        ),
-        'nid' => 
-        array (
-          'nid' => '',
-        ),
-      ),
-    ),
-    'group' => false,
-    'conditional_fields' => 
-    array (
-      'field_story_era' => 'conditional_field_no_value',
-    ),
-    'required' => 1,
-    'multiple' => '0',
-    'referenceable_types' => 
-    array (
-      'pageflip_page' => 'pageflip_page',
-      'ad' => 0,
-      'pageflip_book' => 0,
-      'pageflip_chapter' => 0,
-      'page' => 0,
-      'news_post' => false,
-      'blog_post' => false,
-      'faq' => false,
-      'profile' => false,
-    ),
-    'advanced_view' => '--',
-    'advanced_view_args' => '',
-    'op' => 'Save field settings',
-    'module' => 'nodereference',
-    'widget_module' => 'nodereference',
-    'columns' => 
-    array (
-      'nid' => 
-      array (
-        'type' => 'int',
-        'unsigned' => true,
-        'not null' => false,
-        'index' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => '-2',
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      4 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      'token' => 
-      array (
-        'format' => 'default',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-  2 => 
-  array (
-    'label' => 'Opening Pages',
-    'field_name' => 'field_pageflip_opening_pages',
-    'type' => 'nodereference',
-    'widget_type' => 'nodereference_autocomplete',
-    'change' => 'Change basic information',
-    'weight' => '-1',
-    'autocomplete_match' => 'contains',
-    'size' => 60,
-    'description' => 'Pages inside the front cover before the first chapter, such as credits and title pages.',
-    'default_value' => 
-    array (
-      0 => 
-      array (
-        'nid' => '',
-      ),
-    ),
-    'default_value_php' => '',
-    'default_value_widget' => 
-    array (
-      'field_pageflip_opening_pages' => 
-      array (
-        0 => 
-        array (
-          'nid' => 
-          array (
-            'nid' => '',
-            '_error_element' => 'default_value_widget][field_pageflip_opening_pages][0][nid][nid',
-          ),
-          '_error_element' => 'default_value_widget][field_pageflip_opening_pages][0][nid][nid',
-        ),
-      ),
-    ),
-    'group' => false,
-    'conditional_fields' => 
-    array (
-      'field_story_era' => 'conditional_field_no_value',
-    ),
-    'required' => 0,
-    'multiple' => '1',
-    'referenceable_types' => 
-    array (
-      'pageflip_page' => 'pageflip_page',
-      'ad' => 0,
-      'pageflip_book' => 0,
-      'pageflip_chapter' => 0,
-      'page' => 0,
-      'news_post' => false,
-      'blog_post' => false,
-      'faq' => false,
-      'profile' => false,
-    ),
-    'advanced_view' => '--',
-    'advanced_view_args' => '',
-    'op' => 'Save field settings',
-    'module' => 'nodereference',
-    'widget_module' => 'nodereference',
-    'columns' => 
-    array (
-      'nid' => 
-      array (
-        'type' => 'int',
-        'unsigned' => true,
-        'not null' => false,
-        'index' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => '-1',
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      4 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      'token' => 
-      array (
-        'format' => 'default',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-  3 => 
-  array (
-    'label' => 'Chapters',
-    'field_name' => 'field_pageflip_chapters',
-    'type' => 'nodereference',
-    'widget_type' => 'nodereference_autocomplete',
-    'change' => 'Change basic information',
-    'weight' => 0,
-    'autocomplete_match' => 'contains',
-    'size' => 60,
-    'description' => '',
-    'default_value' => 
-    array (
-      0 => 
-      array (
-        'nid' => '',
-      ),
-    ),
-    'default_value_php' => '',
-    'default_value_widget' => 
-    array (
-      'field_pageflip_chapters' => 
-      array (
-        0 => 
-        array (
-          'nid' => 
-          array (
-            'nid' => '',
-            '_error_element' => 'default_value_widget][field_pageflip_chapters][0][nid][nid',
-          ),
-          '_error_element' => 'default_value_widget][field_pageflip_chapters][0][nid][nid',
-        ),
-      ),
-    ),
-    'group' => false,
-    'conditional_fields' => 
-    array (
-      'field_story_era' => 'conditional_field_no_value',
-    ),
-    'required' => 0,
-    'multiple' => '1',
-    'referenceable_types' => 
-    array (
-      'pageflip_chapter' => 'pageflip_chapter',
-      'ad' => 0,
-      'pageflip_book' => 0,
-      'pageflip_page' => 0,
-      'page' => 0,
-      'news_post' => false,
-      'blog_post' => false,
-      'faq' => false,
-      'profile' => false,
-    ),
-    'advanced_view' => '',
-    'advanced_view_args' => '',
-    'op' => 'Save field settings',
-    'module' => 'nodereference',
-    'widget_module' => 'nodereference',
-    'columns' => 
-    array (
-      'nid' => 
-      array (
-        'type' => 'int',
-        'unsigned' => true,
-        'not null' => false,
-        'index' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => 0,
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      4 => 
-      array (
-        'format' => 'default',
-        'exclude' => 0,
-      ),
-      'token' => 
-      array (
-        'format' => 'default',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-);
-$content['extra']  = array (
-  'title' => '-5',
-  'body_field' => '-3',
-  'revision_information' => '4',
-  'menu' => '3',
-  'path' => '6',
-);
-
Index: content_types/pageflip_chapter.txt
===================================================================
RCS file: content_types/pageflip_chapter.txt
diff -N content_types/pageflip_chapter.txt
--- content_types/pageflip_chapter.txt	18 Jul 2010 16:26:59 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,187 +0,0 @@
-$content['type']  = array (
-  'name' => 'PageFlip Chapter',
-  'type' => 'pageflip_chapter',
-  'description' => 'A chapter in a <em>PageFlip Book</em>.',
-  'title_label' => 'Title',
-  'body_label' => '',
-  'min_word_count' => '0',
-  'help' => '',
-  'node_options' => 
-  array (
-    'status' => true,
-    'revision' => true,
-    'promote' => false,
-    'sticky' => false,
-  ),
-  'upload' => '0',
-  'old_type' => 'pageflip_chapter',
-  'orig_type' => 'pageflip_chapter',
-  'module' => 'node',
-  'custom' => '0',
-  'modified' => '1',
-  'locked' => '1',
-  'reset' => 'Reset to defaults',
-  'content_profile_use' => false,
-  'comment' => 2,
-  'comment_default_mode' => 4,
-  'comment_default_order' => 1,
-  'comment_default_per_page' => 50,
-  'comment_controls' => 3,
-  'comment_anonymous' => 0,
-  'comment_subject_field' => 1,
-  'comment_preview' => 1,
-  'comment_form_location' => 0,
-  'ant' => 0,
-  'ant_pattern' => '',
-  'ant_php' => '',
-  'better_formats_allowed' => 
-  array (
-    1 => false,
-    2 => false,
-    3 => false,
-  ),
-  'better_formats_defaults' => 
-  array (
-    'node-4' => 
-    array (
-      'format' => '2',
-      'weight' => '-25',
-    ),
-    'node-3' => 
-    array (
-      'format' => '2',
-      'weight' => '-24',
-    ),
-    'node-2' => 
-    array (
-      'format' => '0',
-      'weight' => '-23',
-    ),
-    'node-1' => 
-    array (
-      'format' => '0',
-      'weight' => '-22',
-    ),
-    'comment-4' => 
-    array (
-      'format' => '2',
-      'weight' => '-25',
-    ),
-    'comment-3' => 
-    array (
-      'format' => '2',
-      'weight' => '-24',
-    ),
-    'comment-2' => 
-    array (
-      'format' => '0',
-      'weight' => '-23',
-    ),
-    'comment-1' => 
-    array (
-      'format' => '0',
-      'weight' => '-22',
-    ),
-  ),
-);
-$content['fields']  = array (
-  0 => 
-  array (
-    'label' => 'Pages',
-    'field_name' => 'field_pageflip_pages',
-    'type' => 'nodereference',
-    'widget_type' => 'nodereference_autocomplete',
-    'change' => 'Change basic information',
-    'weight' => '-4',
-    'autocomplete_match' => 'contains',
-    'size' => '60',
-    'description' => '',
-    'default_value' => 
-    array (
-      0 => 
-      array (
-        'nid' => NULL,
-        '_error_element' => 'default_value_widget][field_pageflip_pages][0][nid][nid',
-      ),
-    ),
-    'default_value_php' => '',
-    'default_value_widget' => NULL,
-    'group' => false,
-    'required' => 0,
-    'multiple' => '1',
-    'referenceable_types' => 
-    array (
-      'pageflip_page' => 'pageflip_page',
-      'ad' => 0,
-      'pageflip_book' => 0,
-      'pageflip_chapter' => 0,
-      'news_post' => 0,
-      'page' => 0,
-      'blog_post' => false,
-      'faq' => false,
-      'profile' => false,
-    ),
-    'advanced_view' => '--',
-    'advanced_view_args' => '',
-    'op' => 'Save field settings',
-    'module' => 'nodereference',
-    'widget_module' => 'nodereference',
-    'columns' => 
-    array (
-      'nid' => 
-      array (
-        'type' => 'int',
-        'unsigned' => true,
-        'not null' => false,
-        'index' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => '-4',
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      4 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      'token' => 
-      array (
-        'format' => 'default',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-);
-$content['extra']  = array (
-  'title' => '-5',
-  'revision_information' => '-2',
-  'menu' => '-3',
-  'path' => '0',
-  'attachments' => '-1',
-);
-
Index: content_types/pageflip_page.txt
===================================================================
RCS file: content_types/pageflip_page.txt
diff -N content_types/pageflip_page.txt
--- content_types/pageflip_page.txt	18 Jul 2010 16:26:59 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,378 +0,0 @@
-$content['type']  = array (
-  'name' => 'PageFlip Page',
-  'type' => 'pageflip_page',
-  'description' => 'A page in a <em>PageFlip Chapter</em>.',
-  'title_label' => 'Title',
-  'body_label' => '',
-  'min_word_count' => '0',
-  'help' => '',
-  'node_options' => 
-  array (
-    'status' => true,
-    'revision' => true,
-    'promote' => false,
-    'sticky' => false,
-  ),
-  'upload' => '0',
-  'old_type' => 'pageflip_page',
-  'orig_type' => 'pageflip_page',
-  'module' => 'node',
-  'custom' => '0',
-  'modified' => '1',
-  'locked' => '1',
-  'reset' => 'Reset to defaults',
-  'content_profile_use' => false,
-  'comment' => 2,
-  'comment_default_mode' => 4,
-  'comment_default_order' => 1,
-  'comment_default_per_page' => 50,
-  'comment_controls' => 3,
-  'comment_anonymous' => 0,
-  'comment_subject_field' => 1,
-  'comment_preview' => 1,
-  'comment_form_location' => 0,
-  'ant' => 0,
-  'ant_pattern' => '',
-  'ant_php' => '',
-  'better_formats_allowed' => 
-  array (
-    1 => false,
-    2 => false,
-    3 => false,
-  ),
-  'better_formats_defaults' => 
-  array (
-    'node-4' => 
-    array (
-      'format' => '2',
-      'weight' => '-25',
-    ),
-    'node-3' => 
-    array (
-      'format' => '2',
-      'weight' => '-24',
-    ),
-    'node-2' => 
-    array (
-      'format' => '0',
-      'weight' => '-23',
-    ),
-    'node-1' => 
-    array (
-      'format' => '0',
-      'weight' => '-22',
-    ),
-    'comment-4' => 
-    array (
-      'format' => '2',
-      'weight' => '-25',
-    ),
-    'comment-3' => 
-    array (
-      'format' => '2',
-      'weight' => '-24',
-    ),
-    'comment-2' => 
-    array (
-      'format' => '0',
-      'weight' => '-23',
-    ),
-    'comment-1' => 
-    array (
-      'format' => '0',
-      'weight' => '-22',
-    ),
-  ),
-);
-$content['fields']  = array (
-  0 => 
-  array (
-    'label' => 'Image (1080)',
-    'field_name' => 'field_pageflip_page_image_high',
-    'type' => 'filefield',
-    'widget_type' => 'imagefield_widget',
-    'change' => 'Change basic information',
-    'weight' => '-4',
-    'file_extensions' => 'png gif jpg jpeg',
-    'progress_indicator' => 'bar',
-    'file_path' => 'pageflip/pages',
-    'max_filesize_per_file' => '',
-    'max_filesize_per_node' => '',
-    'max_resolution' => 0,
-    'min_resolution' => 0,
-    'custom_alt' => 0,
-    'alt' => '',
-    'custom_title' => 0,
-    'title_type' => 'textfield',
-    'title' => '',
-    'use_default_image' => 0,
-    'default_image_upload' => '',
-    'default_image' => NULL,
-    'description' => '',
-    'group' => false,
-    'required' => 1,
-    'multiple' => '0',
-    'list_field' => '0',
-    'list_default' => 1,
-    'description_field' => '0',
-    'op' => 'Save field settings',
-    'module' => 'filefield',
-    'widget_module' => 'imagefield',
-    'columns' => 
-    array (
-      'fid' => 
-      array (
-        'type' => 'int',
-        'not null' => false,
-        'views' => true,
-      ),
-      'list' => 
-      array (
-        'type' => 'int',
-        'size' => 'tiny',
-        'not null' => false,
-        'views' => true,
-      ),
-      'data' => 
-      array (
-        'type' => 'text',
-        'serialize' => true,
-        'views' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => '-4',
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      4 => 
-      array (
-        'format' => 'image_plain',
-        'exclude' => 1,
-      ),
-      'token' => 
-      array (
-        'format' => 'image_plain',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-  1 => 
-  array (
-    'label' => 'Image (720)',
-    'field_name' => 'field_pageflip_page_image_low',
-    'type' => 'filefield',
-    'widget_type' => 'imagefield_widget',
-    'change' => 'Change basic information',
-    'weight' => '-3',
-    'file_extensions' => 'png gif jpg jpeg',
-    'progress_indicator' => 'bar',
-    'file_path' => 'pageflip/pages',
-    'max_filesize_per_file' => '',
-    'max_filesize_per_node' => '',
-    'max_resolution' => 0,
-    'min_resolution' => 0,
-    'custom_alt' => 0,
-    'alt' => '',
-    'custom_title' => 0,
-    'title_type' => 'textfield',
-    'title' => '',
-    'use_default_image' => 0,
-    'default_image_upload' => '',
-    'default_image' => NULL,
-    'description' => '',
-    'group' => false,
-    'required' => 1,
-    'multiple' => '0',
-    'list_field' => '0',
-    'list_default' => 1,
-    'description_field' => '0',
-    'op' => 'Save field settings',
-    'module' => 'filefield',
-    'widget_module' => 'imagefield',
-    'columns' => 
-    array (
-      'fid' => 
-      array (
-        'type' => 'int',
-        'not null' => false,
-        'views' => true,
-      ),
-      'list' => 
-      array (
-        'type' => 'int',
-        'size' => 'tiny',
-        'not null' => false,
-        'views' => true,
-      ),
-      'data' => 
-      array (
-        'type' => 'text',
-        'serialize' => true,
-        'views' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => '-3',
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      4 => 
-      array (
-        'format' => 'image_plain',
-        'exclude' => 1,
-      ),
-      'token' => 
-      array (
-        'format' => 'image_plain',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-  2 => 
-  array (
-    'label' => 'XML Override',
-    'field_name' => 'field_pageflip_mz3_xml',
-    'type' => 'text',
-    'widget_type' => 'text_textarea',
-    'change' => 'Change basic information',
-    'weight' => '-2',
-    'rows' => '8',
-    'size' => 60,
-    'description' => 'Optional: All MegaZine3 XML code for this page. Leave this empty and the XML will automatically be generated.',
-    'default_value' => 
-    array (
-      0 => 
-      array (
-        'value' => '',
-        '_error_element' => 'default_value_widget][field_pageflip_mz3_xml][0][value',
-      ),
-    ),
-    'default_value_php' => '',
-    'default_value_widget' => 
-    array (
-      'field_pageflip_mz3_xml' => 
-      array (
-        0 => 
-        array (
-          'value' => '',
-          '_error_element' => 'default_value_widget][field_pageflip_mz3_xml][0][value',
-        ),
-      ),
-    ),
-    'group' => false,
-    'required' => 0,
-    'multiple' => '0',
-    'text_processing' => '0',
-    'max_length' => '',
-    'allowed_values' => '',
-    'allowed_values_php' => '',
-    'op' => 'Save field settings',
-    'module' => 'text',
-    'widget_module' => 'text',
-    'columns' => 
-    array (
-      'value' => 
-      array (
-        'type' => 'text',
-        'size' => 'big',
-        'not null' => false,
-        'sortable' => true,
-        'views' => true,
-      ),
-    ),
-    'display_settings' => 
-    array (
-      'weight' => '-2',
-      'parent' => '',
-      'label' => 
-      array (
-        'format' => 'hidden',
-      ),
-      'teaser' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      'full' => 
-      array (
-        'format' => 'hidden',
-        'exclude' => 0,
-      ),
-      2 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      3 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      4 => 
-      array (
-        'format' => 'default',
-        'exclude' => 1,
-      ),
-      'token' => 
-      array (
-        'format' => 'default',
-        'exclude' => 0,
-      ),
-    ),
-  ),
-);
-$content['extra']  = array (
-  'title' => '-5',
-  'revision_information' => '0',
-  'menu' => '-1',
-  'path' => '2',
-  'attachments' => '1',
-);
-
Index: pageflip.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip.admin.inc,v
retrieving revision 1.1
diff -u -r1.1 pageflip.admin.inc
--- pageflip.admin.inc	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip.admin.inc	18 Sep 2010 23:10:29 -0000
@@ -13,7 +13,26 @@
 function pageflip_settings_form($form_state) {
   $form = array();
 
+  $presets = array(0 => t('Do not use an ImageCache preset.'));
+  if (module_exists('imagecache')) {
+    foreach (imagecache_presets() as $preset) {
+      $presets[$preset['presetid']] = $preset['presetname'];
+    }
+  }
+  $form['pageflip_low_resolution_preset'] = array(
+    '#type' => 'select',
+    '#title' => t('Low resolution image preset'),
+    '#options' => $presets,
+    '#default_value' => variable_get('pageflip_low_resolution_preset', 0),
+  );
+  $form['pageflip_high_resolution_preset'] = array(
+    '#type' => 'select',
+    '#title' => t('High resolution image preset'),
+    '#options' => $presets,
+    '#default_value' => variable_get('pageflip_high_resolution_preset', 0),
+  );
+
   // Maximum ad pages inside front cover
   // Maximum ad pages inside back cover
-  return $form;
+  return system_settings_form($form);
 }
Index: pageflip.import.inc
===================================================================
RCS file: pageflip.import.inc
diff -N pageflip.import.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ pageflip.import.inc	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,182 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * This creates the fields required by the PageFlip module.
+ */
+function pageflip_import_page() {
+  _pageflip_import_image(t('Image (1080)'), 'pageflip_page', 'field_pageflip_page_image_high', 1, 'pageflip/pages');
+  _pageflip_import_image(t('Image (720)'), 'pageflip_page', 'field_pageflip_page_image_low', 1, 'pageflip/pages');
+  _pageflip_import_text(t('XML Override'), 'pageflip_page', 'field_pageflip_mz3_xml', 0, t('Optional: All MegaZine3 XML code for this page. Leave this empty and the XML will automatically be generated.'));
+
+}
+function pageflip_import_chapter() {
+  _pageflip_import_reference(t('Pages'), 'pageflip_chapter', 'field_pageflip_pages', array('pageflip_page'));
+}
+function pageflip_import_book() {
+  _pageflip_import_image(t('Icon'), 'pageflip_book', 'field_pageflip_icon', 0, 'pageflip/books');
+  _pageflip_import_reference(t('Cover'), 'pageflip_book', 'field_pageflip_cover', array('pageflip_page'), 'nodereference_select', 1, 0);
+  _pageflip_import_reference(t('Opening Pages'), 'pageflip_book', 'field_pageflip_opening_pages', array('pageflip_page'), 'nodereference_autocomplete', 0, 1, t('Pages inside the front cover before the first chapter, such as credits and title pages.'));
+  _pageflip_import_reference(t('Chapters'), 'pageflip_book', 'field_pageflip_chapters', array('pageflip_chapter'), 'nodereference_autocomplete', 0, 1);
+}
+
+function _pageflip_import_reference($label, $type_name, $field_name, $referenceable_types = array(), $widget_type = 'nodereference_autocomplete', $required = 0, $multiple = 1, $description = '') {
+  $types = array();
+  foreach (node_get_types('names') as $type => $name) {
+    if (in_array($type, $referenceable_types)) {
+      $types[$type] = $type;
+    }
+    else {
+      $types[$type] = 0;
+    }
+  }
+  $field = array(
+    'label' => $label,
+    'field_name' => $field_name,
+    'type_name' => $type_name,
+    'type' => 'nodereference',
+    'widget_type' => $widget_type,
+    'autocomplete_match' => 'contains',
+    'size' => '60',
+    'description' => $description,
+    'required' => $required,
+    'multiple' => $multiple,
+    'referenceable_types' => $types,
+    'module' => 'nodereference',
+    'widget_module' => 'nodereference',
+    'columns' => array(
+      'nid' => array(
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => FALSE,
+        'index' => TRUE,
+      ),
+    ),
+    'display_settings' => array(
+      'label' => array(
+        'format' => 'hidden',
+      ),
+      'teaser' => array(
+        'format' => 'hidden',
+      ),
+      'full' => array(
+        'format' => 'hidden',
+      ),
+      4 => array(
+        'format' => 'hidden',
+      ),
+    ),
+  );
+  $instances = content_field_instance_read(array('field_name' => $field['field_name'], 'type_name' => $field['type_name']));
+  if (count($instances) < 1) {
+    // Only add the field if it doesn't exist. Don't overwrite any changes.
+    content_field_instance_create($field);
+  }
+}
+
+function _pageflip_import_text($label, $type_name, $field_name, $required = 0, $description = '') {
+  $field = array(
+    'label' => $label,
+    'field_name' => $field_name,
+    'type_name' => $type_name,
+    'type' => 'text',
+    'widget_type' => 'text_textarea',
+    'rows' => '8',
+    'size' => 60,
+    'description' => $description,
+    'required' => $required,
+    'multiple' => '0',
+    'text_processing' => '0',
+    'max_length' => '',
+    'allowed_values' => '',
+    'allowed_values_php' => '',
+    'module' => 'text',
+    'widget_module' => 'text',
+    'columns' => array(
+      'value' => array(
+        'type' => 'text',
+        'size' => 'big',
+        'not null' => FALSE,
+        'sortable' => TRUE,
+        'views' => TRUE,
+      ),
+    ),
+    'display_settings' => array(
+      'label' => array(
+        'format' => 'hidden',
+      ),
+      'teaser' => array(
+        'format' => 'hidden',
+      ),
+      'full' => array(
+        'format' => 'hidden',
+      ),
+      4 => array(
+        'format' => 'hidden',
+      ),
+    ),
+  );
+  $instances = content_field_instance_read(array('field_name' => $field['field_name'], 'type_name' => $field['type_name']));
+  if (count($instances) < 1) {
+    // Only add the field if it doesn't exist. Don't overwrite any changes.
+    content_field_instance_create($field);
+  }
+}
+
+function _pageflip_import_image($label, $type_name, $field_name, $required = 0, $path = '') {
+  $field = array(
+    'label' => $label,
+    'type_name' => $type_name,
+    'field_name' => $field_name,
+    'file_path' => $path,
+    'type' => 'filefield',
+    'widget_type' => 'imagefield_widget',
+    'weight' => 0,
+    'file_extensions' => 'gif jpg jpeg png',
+    'custom_alt' => 1,
+    'custom_title' => 1,
+    'description' => '',
+    'required' => $required,
+    'multiple' => '0',
+    'list_field' => '0',
+    'list_default' => 1,
+    'description_field' => '0',
+    'module' => 'filefield',
+    'widget_module' => 'imagefield',
+    'columns' => array(
+      'fid' => array(
+        'type' => 'int',
+        'not null' => FALSE,
+      ),
+      'list' => array(
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => FALSE,
+      ),
+      'data' => array(
+        'type' => 'text',
+        'serialize' => TRUE,
+      ),
+    ),
+    'display_settings' => array(
+      'label' => array(
+        'format' => 'hidden',
+      ),
+      'teaser' => array(
+        'format' => 'hidden',
+      ),
+      'full' => array(
+        'format' => 'hidden',
+      ),
+      4 => array(
+        'format' => 'hidden',
+      ),
+    ),
+  );
+  $instances = content_field_instance_read(array('field_name' => $field['field_name'], 'type_name' => $field['type_name']));
+  if (count($instances) < 1) {
+    // Only add the field if it doesn't exist. Don't overwrite any changes.
+    content_field_instance_create($field);
+  }
+}
Index: pageflip.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip.info,v
retrieving revision 1.1
diff -u -r1.1 pageflip.info
--- pageflip.info	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip.info	18 Sep 2010 23:10:31 -0000
@@ -5,5 +5,6 @@
 dependencies[] = content
 dependencies[] = text
 dependencies[] = number
+dependencies[] = imagefield
 dependencies[] = nodereference
 recommends[] = vote_up_down
Index: pageflip.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip.module,v
retrieving revision 1.1
diff -u -r1.1 pageflip.module
--- pageflip.module	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip.module	18 Sep 2010 23:10:31 -0000
@@ -30,8 +30,6 @@
  */
 function pageflip_menu() {
   $items = array();
-  // future use:
-  /*
   $items['admin/settings/pageflip'] = array(
     'title' => 'PageFlip',
     'page callback' => 'drupal_get_form',
@@ -39,6 +37,9 @@
     'access arguments' => array('administer pageflip'),
     'file' => 'pageflip.admin.inc',
   );
+  // future use:
+  /*
+
   $items['pageflip/prefer-html-player'] = array(
     'title' => 'PageFlip Set HTML player preference',
     'page callback' => 'pageflip_prefer_html_player',
@@ -78,8 +79,8 @@
   // indexing) because book rendering may call exit(). This check probably
   // isn't necessary, but why not.
   global $_SERVER, $_GET;
-  if (strpos($_SERVER['SCRIPT_FILENAME'], 'cron.php') !== false ||
-      strpos($_GET['q'], 'admin/reports/status') !== false) {
+  if (strpos($_SERVER['SCRIPT_FILENAME'], 'cron.php') !== FALSE ||
+      strpos($_GET['q'], 'admin/reports/status') !== FALSE) {
     return;
   }
 
@@ -96,7 +97,7 @@
     $content = pageflip_html_viewer_view($node);
   }
   else {
-    drupal_set_message('Warning: No PageFlip viewer modules are enabled. Please enable a viewer module.</p>', 'error');
+    drupal_set_message(t('Warning: No PageFlip viewer modules are enabled. Please enable a viewer module.'), 'error');
   }
   $node->content['body']['#value'] = $content;
 }
@@ -115,7 +116,7 @@
   if ($node->type !== PAGEFLIP_CHAPTER_CONTENT_TYPE) {
     return NULL;
   }
-  $sql = 'SELECT n.nid FROM node n JOIN content_field_pageflip_chapters c ON n.nid = c.nid WHERE c.field_pageflip_chapters_nid = %d';
+  $sql = db_rewrite_sql('SELECT n.nid FROM {node} n JOIN {content_field_pageflip_chapters} c ON n.nid = c.nid WHERE c.field_pageflip_chapters_nid = %d');
   if ($book_nid = db_result(db_query($sql, $node->nid))) {
     return node_load($book_nid);
   }
@@ -260,4 +261,90 @@
   return $settings;
 }
 
+/**
+ * Implementation of hook_node_info().
+ */
+function pageflip_node_info() {
+  return array(
+    'pageflip_page' => array(
+      'name' => t('PageFlip Page'),
+      'module' => 'node',
+      'description' => t("A page in a %chapter.", array('%chapter' => t('PageFlip Chapter'))),
+      'title_label' => t('Title'),
+      'has_title' => 1,
+      'body_label' => '',
+      'has_body' => 0,
+      'min_word_count' => 0,
+      'locked' => 1,
+    ),
+    'pageflip_chapter' => array(
+      'name' => t('PageFlip Chapter'),
+      'module' => 'node',
+      'description' => t("A page in a %chapter.", array('%chapter' => t('PageFlip Chapter'))),
+      'title_label' => t('Title'),
+      'has_title' => 1,
+      'body_label' => '',
+      'has_body' => 0,
+      'min_word_count' => 0,
+      'locked' => 1,
+    ),
+    'pageflip_book' => array(
+      'name' => t('PageFlip Book'),
+      'module' => 'node',
+      'description' => t('A comic book, magazine, or other type of book.'),
+      'title_label' => t('Title'),
+      'has_title' => 1,
+      'body_label' => '',
+      'has_body' => 0,
+      'min_word_count' => 0,
+      'locked' => 1,
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_enable().
+ */
+function pageflip_enable() {
+  module_load_include('inc', 'pageflip', 'pageflip.import');
+  module_load_include('inc', 'imagefield', 'imagefield_widget');
+  module_load_include('inc', 'filefield', 'filefield_widget');
+  module_load_include('inc', 'content', 'includes/content.crud');
+
+  pageflip_import_page();
+  pageflip_import_chapter();
+  pageflip_import_book();
+}
+
+/**
+ * Implementation of hook_help().
+ */
+function pageflip_help($path, $arg) {
+  switch ($path) {
+    // A simple notification for users if there are no pages created.
+    case 'node/add/pageflip-book':
+      if (!db_result(db_query("SELECT count(*) FROM {node} WHERE type = '%s'", 'pageflip_page'))) {
+        drupal_set_message(t('At least one PageFlip Page needs to be created first to act as the cover of the book.'), 'error');
+      }
+      return '<div>'. t('A page content item must be created first to act as the cover. !link',
+        array('!link' => l('Create a new cover', 'node/add/pageflip-page', array('query' => 'destination=node/add/pageflip-book')))) .'</div>';
+  }
+}
+
+function pageflip_page_image_url($page, $resolution = 'high') {
+  $filepath = $resolution == 'high'
+      ? $page->field_pageflip_page_image_high[0]['filepath']
+      : $page->field_pageflip_page_image_low[0]['filepath'];
+
+  if ($preset = variable_get('pageflip_'. $resolution .'_resolution_preset', 0)) {
+    if (module_exists('imagecache')) {
+      if ($preset = imagecache_preset($preset)) {
+        if ($url = imagecache_create_url($preset['presetname'], $filepath)) {
+          return $url;
+        }
+      }
+    }
+  }
+  return url($filepath, array('absolute' => TRUE));
+}
 
Index: pageflip_html_viewer/pageflip-html-viewer-page-pair.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip_html_viewer/pageflip-html-viewer-page-pair.tpl.php,v
retrieving revision 1.1
diff -u -r1.1 pageflip-html-viewer-page-pair.tpl.php
--- pageflip_html_viewer/pageflip-html-viewer-page-pair.tpl.php	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip_html_viewer/pageflip-html-viewer-page-pair.tpl.php	18 Sep 2010 23:10:32 -0000
@@ -2,7 +2,8 @@
 // $Id: pageflip-html-viewer-page-pair.tpl.php,v 1.1 2010/07/18 16:26:59 bikko Exp $
 
 /**
- * @file Page pair template for PageFlip HTML viewer. Renders one pair of book pages.
+ * @file
+ * Page pair template for PageFlip HTML viewer. Renders one pair of book pages.
  */
 
 /**
Index: pageflip_html_viewer/pageflip_html_viewer.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip_html_viewer/pageflip_html_viewer.module,v
retrieving revision 1.1
diff -u -r1.1 pageflip_html_viewer.module
--- pageflip_html_viewer/pageflip_html_viewer.module	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip_html_viewer/pageflip_html_viewer.module	18 Sep 2010 23:10:33 -0000
@@ -74,8 +74,8 @@
 
   // @todo: don't rely on views_cycle module for jquery.cycle.js
   drupal_add_css(drupal_get_path('module', 'pageflip_html_viewer') .'/pageflip_html_viewer.css');
-  drupal_add_js(drupal_get_path('module', 'views_cycle') .'/jquery.cycle.js');
-  drupal_add_js('sites/all/libraries/jquery.ba-hashchange/jquery.ba-hashchange.js');
+  drupal_add_js('sites/all/libraries/jquery.cycle/jquery.cycle.all.min.js');
+  drupal_add_js('sites/all/libraries/jquery.ba-hashchange/jquery.ba-hashchange.min.js');
   drupal_add_js(drupal_get_path('module', 'pageflip_html_viewer') .'/pageflip_html_viewer.js');
 
   print theme('pageflip_html_viewer_html_document', $node, $chapters);
@@ -268,7 +268,6 @@
  *   which page-pair in this chapter we are (0-based)
  */
 function template_preprocess_pageflip_html_viewer_page_pair(&$vars) {
-  $options = array('absolute' => TRUE);
   foreach (array('left' => $vars['left_page'], 'right' => $vars['right_page']) as $which => $page) {
     $vars[$which] = array();
     if (!$page) {
@@ -281,12 +280,50 @@
     else {
       // a normal book page
       if ($vars['settings']['resolution'] == PAGEFLIP_HTML_VIEWER_HIGH_RES) {
-        $vars[$which]['image'] = url($page->field_pageflip_page_image_high[0]['filepath'], $options);
+        $vars[$which]['image'] = pageflip_page_image_url($page, 'high');
       }
       else {
-        $vars[$which]['image'] = url($page->field_pageflip_page_image_low[0]['filepath'], $options);
+        $vars[$which]['image'] = pageflip_page_image_url($page, 'low');
       }
     }
   }
 }
 
+/**
+ * Implementation of hook_requirements().
+ */
+function pageflip_html_viewer_requirements($phase) {
+  // sites/all/libraries/jquery.cycle/jquery.cycle.all.min.js
+  if ($phase == 'runtime') {
+    $requirements = array();
+    $base_library_dir = 'sites/all/libraries/';
+    $required_jquery_files = array(
+      'jquery.cycle/jquery.cycle.all.min.js' => l(t('JQuery Cycle (All)'), 'http://malsup.com/jquery/cycle/', array('external' => TRUE)),
+      'jquery.ba-hashchange/jquery.ba-hashchange.min.js' => l(t('JQuery BBQ'), 'http://benalman.com/projects/jquery-bbq-plugin/', array('external' => TRUE)),
+    );
+    $warning = '';
+    foreach ($required_jquery_files as $file => $info) {
+      if (!file_exists($base_library_dir . $file)) {
+        $warning .= '<p>'. t('Please download the !link plugin %file into directory %dir.',
+            array('%file' => $file, '%dir' => $base_library_dir,
+                  '!link' => $info)) .'</p>';
+      }
+    }
+    if (!empty($warning)) {
+      $requirements['pageflip_html'] = array(
+        'title' => t('PageFlip HTML Viewer'),
+        'value' => t('Missing one or more JQuery libraries.'),
+        'severity' => REQUIREMENT_ERROR,
+        'description' => $warning,
+      );
+    }
+    else {
+      $requirements['pageflip_html'] = array(
+        'title' => t('PageFlip HTML Viewer'),
+        'value' => t('All JQuery depenencies are set up correctly.'),
+        'severity' => REQUIREMENT_OK,
+      );
+    }
+    return $requirements;
+  }
+}
Index: pageflip_mz3_viewer/pageflip-mz3-viewer-book-xml.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip_mz3_viewer/pageflip-mz3-viewer-book-xml.tpl.php,v
retrieving revision 1.1
diff -u -r1.1 pageflip-mz3-viewer-book-xml.tpl.php
--- pageflip_mz3_viewer/pageflip-mz3-viewer-book-xml.tpl.php	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip_mz3_viewer/pageflip-mz3-viewer-book-xml.tpl.php	18 Sep 2010 23:10:33 -0000
@@ -2,7 +2,8 @@
 // $Id: pageflip-mz3-viewer-book-xml.tpl.php,v 1.1 2010/07/18 16:26:59 bikko Exp $
 
 /**
- * @file PageFlip MegaZine3 Viewer XML document/book template. Renders the
+ * @file
+ * PageFlip MegaZine3 Viewer XML document/book template. Renders the
  * entire XML document (most of which is in $content).
  */
 ?>
Index: pageflip_mz3_viewer/pageflip-mz3-viewer-chapter-xml.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip_mz3_viewer/pageflip-mz3-viewer-chapter-xml.tpl.php,v
retrieving revision 1.1
diff -u -r1.1 pageflip-mz3-viewer-chapter-xml.tpl.php
--- pageflip_mz3_viewer/pageflip-mz3-viewer-chapter-xml.tpl.php	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip_mz3_viewer/pageflip-mz3-viewer-chapter-xml.tpl.php	18 Sep 2010 23:10:33 -0000
@@ -2,7 +2,8 @@
 // $Id: pageflip-mz3-viewer-chapter-xml.tpl.php,v 1.1 2010/07/18 16:26:59 bikko Exp $
 
 /**
- * @file PageFlip MegaZine3 Viewer chapter template. Renders one chapter and
+ * @file
+ * PageFlip MegaZine3 Viewer chapter template. Renders one chapter and
  * its content, in MegaZine's XML format.
  */
 ?>
Index: pageflip_mz3_viewer/pageflip-mz3-viewer-embed.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip_mz3_viewer/pageflip-mz3-viewer-embed.tpl.php,v
retrieving revision 1.1
diff -u -r1.1 pageflip-mz3-viewer-embed.tpl.php
--- pageflip_mz3_viewer/pageflip-mz3-viewer-embed.tpl.php	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip_mz3_viewer/pageflip-mz3-viewer-embed.tpl.php	18 Sep 2010 23:10:33 -0000
@@ -2,7 +2,8 @@
 // $Id: pageflip-mz3-viewer-embed.tpl.php,v 1.1 2010/07/18 16:26:59 bikko Exp $
 
 /**
- * @file PageFlip MegaZine3 Viewer embed template. Renders markup for
+ * @file
+ * PageFlip MegaZine3 Viewer embed template. Renders markup for
  * embedding MegaZine's Flash object. @todo: is this necessary?
  */
 ?>
Index: pageflip_mz3_viewer/pageflip-mz3-viewer-page-xml.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip_mz3_viewer/pageflip-mz3-viewer-page-xml.tpl.php,v
retrieving revision 1.1
diff -u -r1.1 pageflip-mz3-viewer-page-xml.tpl.php
--- pageflip_mz3_viewer/pageflip-mz3-viewer-page-xml.tpl.php	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip_mz3_viewer/pageflip-mz3-viewer-page-xml.tpl.php	18 Sep 2010 23:10:33 -0000
@@ -2,7 +2,8 @@
 // $Id: pageflip-mz3-viewer-page-xml.tpl.php,v 1.1 2010/07/18 16:26:59 bikko Exp $
 
 /**
- * @file PageFlip MegaZine3 Viewer book-page template. Renders a single page
+ * @file
+ * PageFlip MegaZine3 Viewer book-page template. Renders a single page
  * in MegaZine's XML format.
  */
 ?>
@@ -10,7 +11,6 @@
     <!-- overridden page content: -->
     <?php print $content ?>
   <?php else: ?>
-
    <!-- normal page: -->
     <page<?php print $page_attributes ?>>
       <img width="640" height="720" aa="true">
Index: pageflip_mz3_viewer/pageflip_mz3_viewer.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageflip/pageflip_mz3_viewer/pageflip_mz3_viewer.module,v
retrieving revision 1.1
diff -u -r1.1 pageflip_mz3_viewer.module
--- pageflip_mz3_viewer/pageflip_mz3_viewer.module	18 Jul 2010 16:26:59 -0000	1.1
+++ pageflip_mz3_viewer/pageflip_mz3_viewer.module	18 Sep 2010 23:10:35 -0000
@@ -201,9 +201,8 @@
     $vars['content'] = $page->content['body']['#value'];
   } elseif (empty($page->field_pageflip_mz3_xml[0]['value'])) {
     // TODO: are absolute URLs necessary here?
-    $options = array('absolute' => TRUE);
-    $vars['image_high'] = url($page->field_pageflip_page_image_high[0]['filepath'], $options);
-    $vars['image_low'] = url($page->field_pageflip_page_image_low[0]['filepath'], $options);
+    $vars['image_high'] = pageflip_page_image_url($page, 'high');
+    $vars['image_low'] = pageflip_page_image_url($page, 'low');
   }
   else {
     // use the overridden XML
@@ -296,3 +295,31 @@
   exit();
 }
 
+/**
+ * Implementation of hook_requirements().
+ */
+function pageflip_mz3_viewer_requirements($phase) {
+  if ($phase == 'runtime') {
+    $error = FALSE;
+    $requirements = array();
+    $base_path = variable_get('pageflip_mz3_viewer_megazine3_path', 'sites/all/libraries/mz3');
+    if (!file_exists($base_path .'/megazine/megazine.swf')) {
+      $requirements['pageflip_megazine3'] = array(
+        'title' => t('PageFlip MegaZine3 Viewer'),
+        'value' => t('MegaZine3 library is missing.'),
+        'severity' => REQUIREMENT_ERROR,
+        'description' => t('Download MegaZine3 v2 from !link and unzip this into the directory %dir.',
+          array('%dir' => $base_path, '!link' => l(t('here'), 'http://www.megazine3.de/', array('external' => TRUE)))),
+      );
+      $error = TRUE;
+    }
+    if (!$error) {
+      $requirements['pageflip_megazine3'] = array(
+        'title' => t('PageFlip MegaZine3 Viewer'),
+        'value' => t('All depenencies are set up correctly.'),
+        'severity' => REQUIREMENT_OK,
+      );
+    }
+    return $requirements;
+  }
+}
