Index: CHANGELOG.txt
===================================================================
RCS file: CHANGELOG.txt
diff -N CHANGELOG.txt
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ CHANGELOG.txt	22 Oct 2008 04:10:32 -0000
@@ -0,0 +1,523 @@
+/* $Id$ */
+
+October 1, 2008
+  - Cleanstate completely rewritten w/ Zen and color.module.
+  - Spooner rewritten w/ Zen and color.module
+  - Splender rewritten w/ Zen and color.module
+  - Simpla rewritten w/ Zen and color.module
+  - color_scheme_id_valid now works + will remove old schemes when theme's switch.
+  - Doxy'd up some more code in color.database.inc and removed superfluous arguments.
+  - Fixed bugs with color_user and rewritten parts of the color_page_alter() scheme ID selection.
+  - Cleaned up the doxy where possible. Still trying to work on making code clarity #1.
+  - Changed color_panel_form to color_settings_form. We had to get that done.
+  - #310751 - Fixed PHP 4 compatibility bug with array_combine. http://drupal.org/node/310751
+  - Fixed bug with showing custom_scheme editing, still have a preview functionality bug
+  - Fixed bug with color_user_get_scheme_id() not being found with Color - User is disabled.
+  - Removed old color_get_scheme()
+  - Possibly fixed the preview bug we've been having.
+  - Removed old code from color.generate.inc
+  - Updated form_id in color_user_form_alter() to the new scheme settings form name.
+  - Capitalize first letter of theme in breadcrumb
+
+  New hook_color()
+    Essentially we use hook_color to return the information for colorable material. In the future this could be used for coloring modules and theming stuff.
+    - Updated themes to hook_color() format
+
+  - Fixed black BG's on system admin panels w/ example themes. Themes have had admin panel background colors moved below DO NOT TOUCH declaration.
+
+  (In progress) New color algorithms API
+    When color.module is available there will now be new color processing functions available. Currently we have:
+
+  (In progress) New "extensions" tab panel in color schemes settings.
+
+  Issues
+
+  - #315252 fixed jibberish in documentation
+  - #314591 fixed localization issues with submit buttons. On color_user too.
+
+  To do:
+    - #314568 color_validate()
+
+  On the table:
+    - #315813 extended text fields for hexes
+
+  Bugs:
+  - If webmaster modifies the reference scheme, generation will mess up. Store the reference hex in {color} instead of the reference scheme ID.
+  - Examples themes need to have certain CSS case placed below the DO NOT TOUCH line.
+
+  To do:
+  - (In progress) I want to create a tab in the settings where we can show the current available color.module extensions. :)
+  - (Completed) Move color.inc to a hook_color() in template.php.
+  - (I'm trying, need time!) Module stylesheet manipulation
+  - Theme scheme -> Module scheme linking
+  - (In progress) Make the functions more seeming to an API, particularly with the color changing algorithms.
+  - Take out those PHP notices!
+
+September 17, 2008
+  (Major commit) Polishing, abstracting, extracting, opening, refining.
+
+  Color.inc changes:
+    - 'engine' is now 'replacement methods'
+    - 'schemes' is now 'premade schemes'
+    - 'fill' in images, the first array element will be the image extension to fill with.
+      so far we go 'solid' and 'y-gradient'
+
+  Revamped schema:
+    {color} - Stores theme info
+      |-----------------------------
+      | id  name  type  fields   replacement methods   premade schemes   images   stylesheets ...
+      |  default scheme   reference scheme   blend target   preview
+
+    {color_schemes} - Stores scheme info
+      |-----------------------------
+      | id   name   theme   hex   path   stylesheets   images   screenshot   logo   status
+
+  The idea of keeping an 'extra_attr' and a 'value' to store the lion share of our stuff was getting rather ridiculous.
+
+  Revamped extension system:
+    - You can now add your own custom fill methods!
+    - Files now being included in color/extend/EXTENSIONTYPE/FILE.inc
+      so extend/fill/solid.inc is the solid fill.
+    - The function inside the extension that's used is referred as:
+      _color_extend_EXTENSIONTYPE_EXTENSIONNAME(). So solid.inc is:
+      _color_extend_fill_solid.
+    - Also, if you want to use a dash between words in your ext name,
+      do so, be sure to use dashes in the color.inc fill arg and the
+      extension filename. Inside the function we want undercores.
+    - The markup for fills is now:
+      array('FILLEXTENSION', x, y, width, height, color1, color2...) (you can list
+      unlimited arguments after.
+
+  - User scheme selection has been split into a separate modules
+  - Overhauled cache system
+  - Overhauled color_set_scheme() and color_get_scheme()
+  - Overhauled batch process
+  - Overhauled and simplified color_get_scheme and color_get_theme system to use references
+  - Refined and simplified color_scheme_form() interface and its CSS
+  - New color_get_theme_extras() which only gets called for webmaster's on certain pages to prevent extra queries
+  - Nista has been completely remade. It is now 100% based off Zen, prior to this
+    it was only in some parts. Additionally, we're using the much refreshened Beta 3 release.
+  - Removed unneeded, superfluous functions (such as deprecated color_get_reference())
+  - Changed names of buttons on forms, 'Edit' is now 'Modify'.
+  - Switched position of darken/lighten on scheme editor
+
+  To do:
+    - Open up functions to be more API friendly
+    - Rewrite other themes off Zen theme
+    - Redoxy this code -- much has changed!
+    - Update other variables in code to assure our $scheme and $theme variables are consistent
+      throughout the code. (these variables are arrays of key data, in keys)
+    - TWEAK!
+
+August 30, 2008
+  Gradients and solids are both fills
+
+  - (Clearing ambiguity) 'fill' will now do both gradients and solids. Mention one field if you want a solid color, and 2 field names for a gradient. In accordance with this I have updated the color.inc files on Garland, Minnelli, FriendsElectric and Nista.
+  - (Code stuff) color.database.inc functions split up into color.batch.inc (for batch API) and color.generate.inc (for scheme gen).
+
+August 29, 2008
+  New preview system
+
+  - (Major feature) Previewing. You can now preview schemes before saving (as if it were a node). No more previews.inc.
+    - Removing preview stuff from garland/minnelli.
+    - Updated color.js to remove preview junk
+  - Added (settings) link to the title of the "Scheme options" fieldset in the color scheme panel.
+  - (Setting implementation): status will now work on detecting if scheme is pre-made (0) or admin-made (1)
+  - (User interface) added a .description style to example themes. (Things are much easier to see)
+  - (User interface) moved 'preview' before 'save'
+  - (User interface) 'delete scheme' now 'delete'
+  - (User interface) 'cancel' button available in preview mode
+  - (User interface) 'make default' now 'set as default'
+  - Fixed bug with color.inc snippet scheme names not working
+  - Updated friendselectric schemes. Updated CSS for links.
+
+August 28, 2008
+  - (Bug fix) only give disabled button + text to schemes with a 'status' of 1 (pre-made) where the setting of 'color_modify_premade_schemes' is off.
+  - (Feature) on scheme editing, the theme+scheme will change to the current one you're editing. :)
+  - (Under the hood) Major reworking of scheme generation code. color_add_scheme() has now be made into color_generate_scheme_files(), color_set_scheme() now will work with scheme generation.
+
+  Morning
+  - (Major rehaul) New scheme creation system. Just click "create scheme" and be on your way.
+  - (User experience) Interface changed to fit 'scheme options' inside the square. Consolidating space. :)
+  - (Settings implementation) disabling/enabling of modifying pre-made schemes will now work.
+  - (Bug fixing) color-edit.css: fixed CSS bug in ie6 and ff3
+  - (Polishing) examples/friendselectric/color/color.inc: updated color schemes 'menu-link'
+  - (Polishing) examples/friendselectric/color/page.tpl.php: add pngfix class for pngfix support
+  - (Clearing ambiguity) color_theme_select_submit() is now color_scheme_select_submit
+  - (Clearing ambiguity) color_store_reset() is now color_scheme_reset
+  - (Removing deprecated function) color_check_themes(), color_schemes_generated(), color_theme_generated() removed
+  - (Feature) Users without theme selection enabled (but with color scheme selection) can choose schemes.
+  - (Under the hood) moved variable_set and variable_del to hook_install() and hook_uninstall()
+  - (Under the hood) updated hook_uninstall's color_list_colorable_themes
+  - (Under the hood) color_list_colorable_themes() updated
+  - (Under the hood) updated color.info
+  - (Under the hood) Updated color_set_scheme doxy and removed superflous param
+  - (Under the hood) Scheme 'status' column changed. 0 is default and 1 is webmaster made.
+  - (Documentation) Updated README. It's nice to see I got along to completing some of these ideas. :)
+  - (User experience) Updated drupal_set_messages.
+
+
+  Early hours
+  Polishing + bugfixing
+
+  - (Polishing) System settings menu simplefied
+  - (Polishing) New icon next to colorable themes
+  - (Polishing) Color scheme switching for unregistered users is now officially placed as a demo option.
+  - (Polishing) New friendselectric logo
+  - (Under the hood) Color system form will refresh theme DB and give show compatibility nonn-enabled themes
+  - (Under the hood) /user/{uid}/edit will use cached data
+  - (Under the hood) color_list_themes(), which has been moved to color.database.inc is a function which I kind of want to reccomend for core. It gives an extra param to say if you want to return disabled/enabled themes, you can do a NULL for both.
+
+  I will be beginning the D7 port today.
+
+August 26, 2008
+  Bugfixing for solo-install on a different LAMP installation.
+
+  - (Fixed) bug where batch was ran twice.
+  - (Updated) Garland CSS/inc out of date
+  - (Added) missing farbtastic.js to DRUPAL-6--1
+  - (FriendsElectric) - Removed header corner images which weren't being colored.
+  - (Updated) color.inc examples from 'tag' => '' to 'tag' => TRUE. (makes more sense)
+  - 'default_scheme' is now 'default scheme'
+  - 'reference_scheme' is now 'reference scheme'
+  - 'blend_target' is now 'blend target'
+  - 'transparent_color' is now 'transparent color'
+  - 'img' array is now 'image'
+
+August 25, 2008
+
+  - Was able to get the batch API calls back in color.database.inc
+  - Color picker will now show suggested colors on load
+  - Color picker will now automatically update suggested colors when a new type is picked.
+
+August 24, 2008
+  Midway commit
+
+  - Demonstration theme are being tweaked to look more presentable as colorable themes :)
+  - Updated caching to include "Page compression"
+  - New feature for theme developers, when scheme editing there will be a textfield where devs can have the color.inc code for a scheme to copy and paste right in! Yay! It was simple to do and helpful :)
+  - Updated Nista theme. Updated its schemes. Very nice progress.
+  - Updated Spooner, Cleanstate for text-decoration: none on anchors
+  - Textarea resized for color.inc viewer
+  - Color admin re-factored to conserve space.
+  - (Big improvement) Batch API generation and installer
+  - (System services) Color.module will only attach after it's activated for a theme, or else it will fall back to the default.
+  - Color scheme config panel, admin/settings/schemes
+  - More work is being done to slim the system down and make it more modular.
+
+August 21, 2008
+  - Fixed bug with color.js and Spooner (a base-only scheme)
+  - Updated comments on engine/tag.inc
+  - Updated this README a bit!
+
+August 20, 2008
+  Most of these updates are fixes for the demonstration and documentation.
+  The major exception is the stylesheet engine update.
+
+  - Under the hood: Fixed bug with currenttheme + edit scheme button on color block sending to incorrect theme.
+  - Under the hood: Removed superfluous data from edit_scheme form and submit
+  - Under the hood: Changed permissions around. Color scheme is now available to those with user_access("administer access control")
+  - Under the hood: color_edit_scheme_form() uses $palette instead of $reference to main hue and shift correctly. However, I left a not in the comments to document how $reference and $palette acted with the picker.
+  - Under the hood: color_validate() action to the color_get_theme_info section.
+  - Under the hood: Put spaces around dot's (.) which concatenate
+  - Interface: For intuitive purposes, switching the "select" and "edit" buttons in the color_block_form
+  - Demo Theme -- Simpla: removed extra breadcrumb
+  - Demo Theme -- Friends Electric: Added default logo
+  - Demo Themes -- Fixed font sizes cleanstate and simpla
+  - Demo Users: Including a code of theme's color.inc on theme settings pages so viewers can take a look.
+  - Documentation. On demo themes: Added comments and spruced up the color.inc on the examples more.
+  - Stylesheet changing has been modularized into extensible color replacement engines.
+      - engines/shift.inc - for shift themes, with a 'base' color (Garland)
+      - engines/tag.inc - for custom CSS replacement
+    - In your theme's color.inc, you can use both these engines at once in either order.
+    - Developers can also add custom color replacement algorithms by adding their engines which hook in automatically. Create a engines/yourengine.inc with the function _color_engine_yourengine($style, $info, $palette, $options = NULL). Return the modified $style markup. You can input options in theme schemes (color.inc file) by adding 'yourengine' => array(MYVARS/ARRAY/ETC) to the 'engine' settings. Go crazy. :)
+    - The color.module DON'T TOUCH statement now separates from all engines/modification as expected. The DON'T TOUCH comment is for CSS markup in your stylesheet's you do not want to have colors modified on.
+    - Of course, this means, no more mode-cruft. :)
+
+August 18, 2008 (Firm pencil's down date)
+  Last minute touchups + Code documentation + Demonstration themes
+
+  - markup: fixed bug with extra </div> closing tag in scheme editing caused by preview
+  - block: fixed bug with block on anonymous user scheme block
+  - block: new "edit" button for super-administrator (UID 1), for quick access to scheme
+  - block: "select scheme" is now "select"
+  - block: blocks will no longer show up if scheme info not generated
+  - under the hood: color_find_scheme_by_UID() rewritten
+  - under the hood''fill' now supports unlimited of the same color. markup changed to array(x, y, width, height, color_name)
+  - under the hood: Uninstall and Regenerate will now remove color_theme_* rows in {variable}.
+  - under the hood: fixed bug with incorrect scheme stylesheets being applied to new theme
+  - under the hood: color_validate() check to see if color.inc markup is correct.
+  - under the hood: reworked color_check_themes()
+    - supports array of themes, single theme variable
+    - more efficient algorithm to check
+    - includes support for color_validate()
+  - under the hood: color_theme_scheme_generated() and color_theme_info_generated() return information on if a theme's color has been generated or not
+  - under the hood: functions moved
+    - color_get_theme_info() is now in color.database.inc
+    - color_find_scheme_by_UID() is now color.database.inc
+    - color_store_reset() is now color.database.inc
+    - color_get_ref() is now in color.database.inc. Renamed to color_get_reference()
+    - color_validate() is now in color.misc.inc
+    - Reordered functions in color.module
+  - under the hood: tweaking
+    - color_user() will not include module files if not needed
+  - under the hood: fix theme that show when block view
+  - under the hood: reworked the way logo replacement works. slice or copy a logo.png file for a logo, or mention no logo.png in color.inc and it will use your theme's default logo.png (so you can use it later).
+  - scheme editor: "Previous Colors" is now color history
+  - scheme editor: will now see scheme title. :)
+  - scheme editor: will now see breadcrumb including scheme
+  - scheme editor: "Previous colors" and "Suggested colors" are now in a fieldset with a legend
+  - scheme editor: if no scheme preview CSS or HTML is provided, no preview will be shown
+  - Code: Added doxygen reference to functions
+  - Demonstration themes: Completely redone themes: cleanstate, friendselectric*, nista, simpla, splender, spooner. Upgraded to new color module: Garland, Minnelli. All are featuring full color support and can be used as examples. :)
+
+  * Updated from old 4.7 version (with color support added) -- however this is still bug-prone. There is a width problem in IE7 and button background one in IE6. Just a proof of concept for now. :)
+
+August 8, 2008
+  (#132571) to DRUPAL-6--1
+  - Webmasters can now rename schemes
+  - In theme settings, Edit scheme selectbox will have the default site scheme selected by default.
+  - removed stray console.log() in color.js (was preventing farbtastic from attaching)
+  - Updated the right branch. Apparently the -dev releases haven't updated for a whole month because I was only committing to the HEAD branch.
+  - The "previous colors" (which is our undo function) and suggested colors should be clickable now :)
+
+August 5, 2008
+  (Including Commit #131347)
+  - Now using scheme_id instead of hex values across the module.
+  - Now using an "Official Site Scheme" in the selection.
+  - Base and hybrid schemes will now require a 'reference' scheme.
+    - color_get_palette() is now color_get_theme('ref')
+    - There is now a color_get_theme('fields') for retrieving fields
+  - New theme config option, 'default scheme'
+  - Scheme settings completely renovated.
+    - Interface:
+      - Add scheme fieldset
+      - Default scheme fieldset selection
+      - Edit scheme fieldset selection
+      - Rebuild scheme button
+    - Edit scheme:
+      - Added initial support for last colors, suggested colors -- they are not attached to current focused fields yet.
+      - 'Make default' if scheme isn't site default
+      - Can delete scheme, and save.
+      - Preview is collapsible.
+  - Redoing scheme installation. We will install necessary scheme info to tables before generating them.
+      1.) Populate scheme table with information for generation.
+      2.) Generate schemes one by one
+      3.) For each generated scheme, update row in question
+  - Scheme fields are now placed in an array format.
+  - You can now add schemes -- Remember to press the 'Add scheme' button.
+  - Editing scheme now works
+  - Updated the example files.
+
+July 30, 2008
+  More leaps
+
+  - (Bug) Fixed gradient preview
+  - (Bug) Color locking/hooking functionality.
+  - README updated. We have a documentation page over at
+  - (Improvement - Work in progress) Color scheme UI overhaul in progress
+    - Darken current color
+    - Lighten current color
+    - Select random color
+  - (Improvement - Work in progress) Add/Delete custom, named color schemes from theme configuration page. W/ AJAX
+  - (Improvement) - Schemes changed in theme configuration will now update images and values when submitted.
+  - (Improvement) Image overhaul
+    - Unlimited images
+    - Unlimited gradients
+    - Unlimited solid-color fills
+  - (Improvement) Stylesheet color replacement - We will now offer a Base-shift (garland-type) mode, a Custom mode for just tags, and a Hybrid which is a mix of the two. :) There is an option to automatically pick your mode.
+  - (Minor addition) In the Garland color.inc example, I added the "Majestic" scheme. Looks pretty nice.
+  - (Correcting ambiguity) In the blocks section, the block will be named 'Pick color scheme'.
+  - (Correcting ambiguity) 'Regenerate schemes' button. On the theme config, there will be a new button for this. Previously, you would have to click "Reset to defaults" -- which was confusing and also defaulted other settings.
+  - (Correcting ambiguity) table change
+    `color_picks` is now `color_users`
+  - (Correcting ambiguity) function color_store_theme() to color_add_theme()
+  - (Changed name, same function) color_set_scheme() is now color_set_user_scheme()
+    Function for setting user schemes selections (Table: `color_picks`)
+  - (New function) color_set_scheme()
+    Formerly, this was used for storing users' scheme selections. I am now changing this function to the setting of the schemes themselves (Table: `color_users`).
+
+July 23rd, 2008
+
+  Allow BASE only color change! YES
+    Notes: If only base color is listed in a scheme, only commas will be listed.
+  - Fixed: Fix scheme reset not showing schemes on next pageview
+  - Fixed errors for themes without fields 'base', 'text', 'link'
+  - Fixed errors for themes without $info['copy']
+  - Fixed errors for theme without $info['preview_image'] on preview.inc
+  - Updated README.txt
+
+  Color.js
+    - is being fixed up for the custom preview.inc setup. The preview.css will change ID's matching your fields inside a div#preview. :)
+    - Is being set up to work with instances where certain schemes in a 'base' colorable layout doesn't have the rest/some of the fields setup.
+    - I have worked on reattaching the selectbox behavior for webmasters who want to add/remove custom schemes. (Has been driving me crazy!)
+
+July 9, 2008
+  Performance tweaks!
+  - color_get_schemes(), color_get_theme_info(), color_compatible(), color_get_palette() all use static variables.
+  - removed the extra $themes = list_themes(); in _color_rewrite_styleshet()
+  - moved code around in color_form_alter() to only retrieve themes and include algorithms when needed. (~40-50ms performance fix)
+  - Only taking need columns (id, name, hex) from schemes in color_get_theme_info()
+  - fixed support for garland/minnelli screenshot on /user/{uid}/edit
+  - fixed admin/build/themes/settings/{theme} to correctly set theme name
+  - Cleanstate: fixed up cleanstate a bit.
+  - Fixed default variable_get('cache') variables to fit the "Disabled" mode in admin/settings/performance by default.
+  - Fixed notice with Undefined indexes by using isset()
+
+  Unfinished:
+  - Custom preview.inc option. Currently, if you provide a preview.inc in the theme's /color folder, the default will be overridden.
+
+  Bugs:
+  - Without user_access('select different theme')) and select color scheme users can pick schemes w/ block but not user profile.
+
+June 26, 2008
+  - Bug fixes here and there. I had a list but laptop was left to sleep without saving... Doing best to keep tabs.
+  - make some functions for the _submit user scheme pick updates
+  - Fixed cleanstate theme to replace colors correctly
+  - Cleanstate scheme now has new custom fields + colors!
+  - "Reset to defaults" will now delete schemes for themes in files. It will also delete relevant user color picks. However it may change with:
+  - Fixed system up for clearing scheme_id's that don't exist.
+  - Removed color_legacy function. People will be able to change w/ proper documentation.
+  - Fixed bug On scheme change from Garland->Minelli, scheme won't change/update
+  - Fixed bug on scheme change to cleanstate scheme shows as aquamarine but "Your scheme does not match with your theme!" shows and color_pick row WHERE uid={uid} won't delete..
+  - Fixed bug with {{base}} color not switching!
+  - Fixed bug with switching back to default site theme (scheme will not del)
+
+  TODO: don't pull misc/file info unless necessary (not on page load alone)
+  TODO: Use some static functions to reduce loading the same data twice.
+  TODO: On moving to default theme, scheme select will not reset, unless after reload.
+
+June 20, 2008
+  - admin/build/themes/settings/{theme} will now change default color scheme
+  - Fixed link color with CSS changing on Garland.
+  - Fixed color block would show up on non-color themes
+  - When cache is on, color.module will not change schemes for anonymous users.
+  - "Reset to defaults" on /admin/build/themes/settings/{theme} will now correctly reset color schemes for themes
+  - Updated cleanstate color.inc file
+
+June 19, 2008
+  SQL Tweaking/New DB Functions
+
+  - (Done) INNER/LEFT JOIN more!
+  - (Done) allow color_get_theme_info and work on grabbing specific fields instead of all columns
+  - (Done) change 'default_set' to 'default scheme'. TRY TO USE ID!
+  - (Done) in color_theme_select_submit() before hand use hidden field to include scheme_id
+  - (Todo) Store info on what themes are colorable in {color} table
+
+June 18, 2008
+  Bug fix/Tweaking release
+
+  - (Added) On uninstall, whipe old schemes from dir
+  - (Added) Do a preg_replace('~[^a-z0-9._]+~, '-', drupal_strtolower($string)); to normalize file paths
+  - (Fixed) On block administration page, the theme now changes.
+  - (Fixed) Users can now change schemes w/o 'select different theme' perm.
+  - (Fixed) Bug on garland/minnelli with invalid stylesheet recoloring
+  - (Tweaked) Suppress repeat warnings in certain parts of scripts.
+  - (Updated) Update minnelli color.inc to new version.
+
+  Caching
+    I do not see this module as being very cache-friendly. There will have to be some thinking when it comes to this.
+
+  - Block cache: lags on select boxes on anonymous/registered users
+  - Caching modes 'normal': interrupts scheme changing for anonymous users. works OK w/ logged in ones
+
+June 16, 2008
+  New color replacement methods!
+
+  Changes:
+    - Find and replace fields from color.inc inside stylesheets. /* {{base}} */ #ffffff /* {{/base}} */
+    - Include a 'base' field if you want to change colors of non-tagged color values. (I.e. Garland)
+    - You can keep the above stylesheets in the /color folder by doing: 'css' => array( 'color/style.css',),
+    - Fixed bug w/ blend target storing in DB
+    - Added some more logic for falling back to default themes/color theme changing
+
+  Quirks:
+    - In listthemes(), must check if theme is enabled in system! This shows extra color-enabled themes in user/{uid}/edit
+    - When changing over a theme, the old scheme name may show in selectbox (the module will still correctly move to default scheme for newly selected theme, though)
+
+June 11, 2008
+  We got a color scheme block + anonymous color scheme selection + perms.
+
+  Changes:
+  - Fixed up webmaster theme selection
+  - Users other the uid 1 can choose scheme.
+  - Color scheme changing block. (YES.)
+  - Anonymous users can now pick color schemes
+  - Started applying user permissions to scheme selection. If user is not granted permission they will not be able to see scheme selection and default to default_set scheme for the theme.
+
+  Need to know: You have to set the 'choose color scheme' permissions for the user type if they want to see the block/change schemes.
+
+June 9, 2008
+  Changes:
+
+  - Legacy support code is now in the color_get_theme_info() function.
+  - Updated color.image.inc for some legacy support for gradients without the color field values. (supposed to be listed like x, y, width, height, color1, color2)
+  - Modularized code into color.database.inc, color.stylesheet.inc and color.misc.inc
+  - Now 3 tables: 'color' for theme info, 'color_schemes' for individual name/theme/hex info, and 'color_picks' for user scheme choices.
+  - In color.database.inc, there is now functions to find scheme based on UID, hex, and scheme/theme
+  - color_legacy($info) in color.misc.inc function for checking/changing old scheme .inc files to be compatible with this.
+
+  Known quirks:
+  - Minnelli is having very odd color effects. (http://img338.imageshack.us/img338/8634/picture8no4.png) (With current color.scheme using legacy support code to fix).
+
+
+June 8, 2008
+  Users can now pick color schemes
+
+  Changes:
+    + Color schemes are now in 'color_schemes' table
+    + Instead of every theme having one scheme stored, all schemes are stored for user selection.
+    + Scheme file information stored in 'extra_attr' column
+    + In preparation for user custom schemes, the 'scheme' column will attempt to match with the 'name' column of a pre-made theme. If no match, in the future will assume it is a custom user theme. (Generate graphics/stylesheet)
+    + Users can now pick color schemes for themes on a user basis via user/{uid}/edit. (YES)
+
+  Known Quirks:
+   - Color schemes are installed when color.module is installed.
+   - New individual color themes are added when you go to admin/build/themes/settings/{theme}
+   - When schemes are first installed, esp. after the module installation w/ a few color themes, the set messages list is very long. Need to find a way to quiet that.
+
+
+June 1, 2008
+  We are on our way to allowing users to select their color schemes.
+
+  Changes:
+    - For the moment the inline color scheme selection has been removed from /user/{uid}/edit. Can be placed back at a later time if wanted (it is in 1.6 of color.module)
+    - Fixed bug with color schemer showing on none Color.module themes.
+    - (Second commit today) Fixed bug where color schemes would change across themes. Every chosen theme w/ a scheme should have it's own row.
+    + Users can now store their theme selections (not creations yet) in the DB. It will insert and edit.
+    + New special 'user_scheme' name. Currently stores serialized hexed codes for color schemes. Built to support custom schemes for users.
+    + A form submit checking for when a theme and color scheme is chosen at the same time.
+    + (Second commit today): Used coder.module to brush up a bit.
+
+May 30, 2008
+  This is a commit so my mentors (Konstantin and Dmitri) and anyone else who wants to can see what I've been working on. There is a lot of temporary code in this commit.
+
+  Changes:
+  + Inline color scheme select
+  + Fixed schemer to work with more themes!
+  + Schemer now has some (maybe temporary) support for legacy color.inc files. It will present a warning but still adds to the database all the same.
+  + Split functions up into color.image.inc and color.algorithms.inc
+  - Removed primary key for indexes atm. For now to change this please Uninstall/Reinstall module. It will suppress some duplicate errors from before.
+
+  Known Quirks: I cannot get the values of the select boxes for color schemes on color-enabled themes to all submit seperately on /user/{uid}/edit. It seems as if the last select box overwrites all the previous ones. And the ['colorselectbox'] hex shows up all around the form output with dprint_r($form);
+
+May 28, 2008
+  Changes:
+  + Added the "uid" column. Index in scheme for 'theme', 'uid' for the moment.
+  + Added "Color-enabled" in description of themes with color support (color.inc files present)
+  + Added
+
+  Known quirks:
+  - I just found that current color.module in Drupal 6 may not be handling screenshot preview correctly.
+
+
+May 26, 2008
+  Changes:
+  + Support for unlimited/custom amount of color fields. Fields atm must be declared in color.inc.
+  + Color scheme keys changed to scheme name (was value/hexes). Implemented storage of schemes/other color theme variables in SQL.
+  + Color.module install schema.
+  + "Reset to defaults" can be used to reset the SQL (incase you wanted to try adding new fields/colors).
+  + Gradient colors can now be chosen through field names of your choice.
+
+  Known Quirks:
+  - (Fixed) Blank page on module enable/disable, theme change submit/reset. Try reloading the URL w/o form POST.
Index: README.txt
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/README.txt,v
retrieving revision 1.15.2.31
diff -u -p -r1.15.2.31 README.txt
--- README.txt	2 Oct 2008 01:57:39 -0000	1.15.2.31
+++ README.txt	22 Oct 2008 04:10:32 -0000
@@ -1,550 +1,24 @@
 /* $Id: README.txt,v 1.15.2.31 2008/10/02 01:57:39 skiquel Exp $ */
 
-  TOC -- Table of Contents
 ========================
-  1.) Color.module '08
-  2) Documentation
-    2a.) Installation and usage
-  3.) Change log
+ABOUT COLOR MODULE
+========================
 
+  Color.module enables Drupalers to:
 
-  1) Color.module
-========================
-  Color.module enables Drupaler's to:
-  
     - create versatile, color-customizable themes. (Theme developer's)
     - alter themes to be pertinent to their site. (Webmaster's)
     - choose their own schemes. (User's)
-  
-  2) Documentation
-========================
-    a. Quick-start (Installation and Usage)
-  ==============================
-		1. Backup your current /themes and /modules/color folders. Move them elsewhere temporarily.
-	  2. Place the themes in the /examples folder Drupal theme folder. *Make sure to keep your /themes/engines folder in the theme folder!*.
-	  3. Copy the new color.module in /color. Disable color.module. Now click the "Uninstall" tab and fully uninstall color.module. Re-enable. This will insure the installer is hooked and that the tables are properly created.
-	  4. Then you can choose to enable/generate color schemes on a per theme basis.
 
-  3) Change log
 ========================
-  October 1, 2008
-    - Cleanstate completely rewritten w/ Zen and color.module.
-    - Spooner rewritten w/ Zen and color.module
-    - Splender rewritten w/ Zen and color.module
-    - Simpla rewritten w/ Zen and color.module
-    - color_scheme_id_valid now works + will remove old schemes when theme's switch.
-    - Doxy'd up some more code in color.database.inc and removed superfluous arguments.
-    - Fixed bugs with color_user and rewritten parts of the color_page_alter() scheme ID selection.
-    - Cleaned up the doxy where possible. Still trying to work on making code clarity #1.
-    - Changed color_panel_form to color_settings_form. We had to get that done.
-    - #310751 - Fixed PHP 4 compatibility bug with array_combine. http://drupal.org/node/310751
-    - Fixed bug with showing custom_scheme editing, still have a preview functionality bug
-		- Fixed bug with color_user_get_scheme_id() not being found with Color - User is disabled.
-		- Removed old color_get_scheme()
-		- Possibly fixed the preview bug we've been having.
-		- Removed old code from color.generate.inc
-		- Updated form_id in color_user_form_alter() to the new scheme settings form name.
-		- Capitalize first letter of theme in breadcrumb
-		
-		New hook_color()
-			Essentially we use hook_color to return the information for colorable material. In the future this could be used for coloring modules and theming stuff.
-			- Updated themes to hook_color() format
-			
-		- Fixed black BG's on system admin panels w/ example themes. Themes have had admin panel background colors moved below DO NOT TOUCH declaration.
-		
-		(In progress) New color algorithms API
-			When color.module is available there will now be new color processing functions available. Currently we have:
-			
-		(In progress) New "extensions" tab panel in color schemes settings.
-		
-		Issues
-		
-		- #315252 fixed jibberish in documentation
-		- #314591 fixed localization issues with submit buttons. On color_user too.
-			
-		To do:
-			- #314568 color_validate()
-		
-		On the table:
-			- #315813 extended text fields for hexes
-		
-		Bugs:
-		- If webmaster modifies the reference scheme, generation will mess up. Store the reference hex in {color} instead of the reference scheme ID.
-		- Examples themes need to have certain CSS case placed below the DO NOT TOUCH line.
-    
-    To do:
-    - (In progress) I want to create a tab in the settings where we can show the current available color.module extensions. :)
-    - (Completed) Move color.inc to a hook_color() in template.php.
-    - (I'm trying, need time!) Module stylesheet manipulation
-    - Theme scheme -> Module scheme linking
-    - (In progress) Make the functions more seeming to an API, particularly with the color changing algorithms.
-		- Take out those PHP notices!
-
-  September 17, 2008
-    (Major commit) Polishing, abstracting, extracting, opening, refining.
-  
-    Color.inc changes:
-      - 'engine' is now 'replacement methods'
-      - 'schemes' is now 'premade schemes'
-      - 'fill' in images, the first array element will be the image extension to fill with.
-        so far we go 'solid' and 'y-gradient'
-        
-    Revamped schema:
-      {color} - Stores theme info
-        |-----------------------------
-        | id  name  type  fields 	replacement methods   premade schemes 	images 	stylesheets ...
-        |	default scheme 	reference scheme 	blend target 	preview
-        
-      {color_schemes} - Stores scheme info
-        |-----------------------------
-        | id 	name 	theme 	hex 	path 	stylesheets 	images 	screenshot 	logo 	status
-        
-    The idea of keeping an 'extra_attr' and a 'value' to store the lion share of our stuff was getting rather ridiculous.
-
-    Revamped extension system:
-      - You can now add your own custom fill methods!
-      - Files now being included in color/extend/EXTENSIONTYPE/FILE.inc
-        so extend/fill/solid.inc is the solid fill.
-      - The function inside the extension that's used is referred as:
-        _color_extend_EXTENSIONTYPE_EXTENSIONNAME(). So solid.inc is:
-        _color_extend_fill_solid.
-      - Also, if you want to use a dash between words in your ext name,
-        do so, be sure to use dashes in the color.inc fill arg and the
-        extension filename. Inside the function we want undercores.
-      - The markup for fills is now:
-        array('FILLEXTENSION', x, y, width, height, color1, color2...) (you can list
-        unlimited arguments after.
-        
-    - User scheme selection has been split into a separate modules
-    - Overhauled cache system
-    - Overhauled color_set_scheme() and color_get_scheme()
-    - Overhauled batch process
-    - Overhauled and simplified color_get_scheme and color_get_theme system to use references
-    - Refined and simplified color_scheme_form() interface and its CSS
-    - New color_get_theme_extras() which only gets called for webmaster's on certain pages to prevent extra queries
-    - Nista has been completely remade. It is now 100% based off Zen, prior to this
-      it was only in some parts. Additionally, we're using the much refreshened Beta 3 release.
-    - Removed unneeded, superfluous functions (such as deprecated color_get_reference())
-    - Changed names of buttons on forms, 'Edit' is now 'Modify'.
-    - Switched position of darken/lighten on scheme editor
-    
-    To do:
-      - Open up functions to be more API friendly
-      - Rewrite other themes off Zen theme
-      - Redoxy this code -- much has changed!
-      - Update other variables in code to assure our $scheme and $theme variables are consistent
-        throughout the code. (these variables are arrays of key data, in keys)
-      - TWEAK!
-
-  August 30, 2008
-    Gradients and solids are both fills
-    
-    - (Clearing ambiguity) 'fill' will now do both gradients and solids. Mention one field if you want a solid color, and 2 field names for a gradient. In accordance with this I have updated the color.inc files on Garland, Minnelli, FriendsElectric and Nista.
-    - (Code stuff) color.database.inc functions split up into color.batch.inc (for batch API) and color.generate.inc (for scheme gen).
-
-  August 29, 2008
-    New preview system
-  
-  - (Major feature) Previewing. You can now preview schemes before saving (as if it were a node). No more previews.inc. 
-      - Removing preview stuff from garland/minnelli.
-      - Updated color.js to remove preview junk
-  - Added (settings) link to the title of the "Scheme options" fieldset in the color scheme panel.
-  - (Setting implementation): status will now work on detecting if scheme is pre-made (0) or admin-made (1)
-  - (User interface) added a .description style to example themes. (Things are much easier to see)
-  - (User interface) moved 'preview' before 'save'
-  - (User interface) 'delete scheme' now 'delete'
-  - (User interface) 'cancel' button available in preview mode
-  - (User interface) 'make default' now 'set as default'
-  - Fixed bug with color.inc snippet scheme names not working
-  - Updated friendselectric schemes. Updated CSS for links.
-
-  August 28, 2008
-  - (Bug fix) only give disabled button + text to schemes with a 'status' of 1 (pre-made) where the setting of 'color_modify_premade_schemes' is off.
-  - (Feature) on scheme editing, the theme+scheme will change to the current one you're editing. :)
-  - (Under the hood) Major reworking of scheme generation code. color_add_scheme() has now be made into color_generate_scheme_files(), color_set_scheme() now will work with scheme generation.
-  
-  Morning
-  - (Major rehaul) New scheme creation system. Just click "create scheme" and be on your way.
-  - (User experience) Interface changed to fit 'scheme options' inside the square. Consolidating space. :)
-  - (Settings implementation) disabling/enabling of modifying pre-made schemes will now work.
-  - (Bug fixing) color-edit.css: fixed CSS bug in ie6 and ff3
-  - (Polishing) examples/friendselectric/color/color.inc: updated color schemes 'menu-link'
-  - (Polishing) examples/friendselectric/color/page.tpl.php: add pngfix class for pngfix support
-  - (Clearing ambiguity) color_theme_select_submit() is now color_scheme_select_submit
-  - (Clearing ambiguity) color_store_reset() is now color_scheme_reset
-  - (Removing deprecated function) color_check_themes(), color_schemes_generated(), color_theme_generated() removed
-  - (Feature) Users without theme selection enabled (but with color scheme selection) can choose schemes.
-  - (Under the hood) moved variable_set and variable_del to hook_install() and hook_uninstall()
-  - (Under the hood) updated hook_uninstall's color_list_colorable_themes
-  - (Under the hood) color_list_colorable_themes() updated
-  - (Under the hood) updated color.info
-  - (Under the hood) Updated color_set_scheme doxy and removed superflous param
-  - (Under the hood) Scheme 'status' column changed. 0 is default and 1 is webmaster made.
-  - (Documentation) Updated README. It's nice to see I got along to completing some of these ideas. :)
-  - (User experience) Updated drupal_set_messages.
-  
-  
-  Early hours
-  Polishing + bugfixing
-  
-  - (Polishing) System settings menu simplefied
-  - (Polishing) New icon next to colorable themes
-  - (Polishing) Color scheme switching for unregistered users is now officially placed as a demo option.
-  - (Polishing) New friendselectric logo
-  - (Under the hood) Color system form will refresh theme DB and give show compatibility nonn-enabled themes
-  - (Under the hood) /user/{uid}/edit will use cached data
-  - (Under the hood) color_list_themes(), which has been moved to color.database.inc is a function which I kind of want to reccomend for core. It gives an extra param to say if you want to return disabled/enabled themes, you can do a NULL for both.
-    
-  I will be beginning the D7 port today.
-
-  August 26, 2008
-  Bugfixing for solo-install on a different LAMP installation.
-
-  - (Fixed) bug where batch was ran twice.
-  - (Updated) Garland CSS/inc out of date
-  - (Added) missing farbtastic.js to DRUPAL-6--1
-  - (FriendsElectric) - Removed header corner images which weren't being colored.
-  - (Updated) color.inc examples from 'tag' => '' to 'tag' => TRUE. (makes more sense)
-  - 'default_scheme' is now 'default scheme'
-  - 'reference_scheme' is now 'reference scheme'
-  - 'blend_target' is now 'blend target'
-  - 'transparent_color' is now 'transparent color'
-  - 'img' array is now 'image'
-
-  August 25, 2008
-  
-  - Was able to get the batch API calls back in color.database.inc
-  - Color picker will now show suggested colors on load
-  - Color picker will now automatically update suggested colors when a new type is picked.
-
-  August 24, 2008
-  Midway commit
-  
-  - Demonstration theme are being tweaked to look more presentable as colorable themes :)
-  - Updated caching to include "Page compression"
-  - New feature for theme developers, when scheme editing there will be a textfield where devs can have the color.inc code for a scheme to copy and paste right in! Yay! It was simple to do and helpful :)
-  - Updated Nista theme. Updated its schemes. Very nice progress.
-  - Updated Spooner, Cleanstate for text-decoration: none on anchors
-  - Textarea resized for color.inc viewer
-  - Color admin re-factored to conserve space.
-  - (Big improvement) Batch API generation and installer
-  - (System services) Color.module will only attach after it's activated for a theme, or else it will fall back to the default. 
-  - Color scheme config panel, admin/settings/schemes
-  - More work is being done to slim the system down and make it more modular.
-
-  August 21, 2008
-  - Fixed bug with color.js and Spooner (a base-only scheme)
-  - Updated comments on engine/tag.inc
-  - Updated this README a bit!
-
-  August 20, 2008
-    Most of these updates are fixes for the demonstration and documentation.
-    The major exception is the stylesheet engine update.
-  
-  - Under the hood: Fixed bug with currenttheme + edit scheme button on color block sending to incorrect theme.
-  - Under the hood: Removed superfluous data from edit_scheme form and submit
-  - Under the hood: Changed permissions around. Color scheme is now available to those with user_access("administer access control")
-  - Under the hood: color_edit_scheme_form() uses $palette instead of $reference to main hue and shift correctly. However, I left a not in the comments to document how $reference and $palette acted with the picker.
-  - Under the hood: color_validate() action to the color_get_theme_info section.
-  - Under the hood: Put spaces around dot's (.) which concatenate
-  - Interface: For intuitive purposes, switching the "select" and "edit" buttons in the color_block_form
-  - Demo Theme -- Simpla: removed extra breadcrumb
-  - Demo Theme -- Friends Electric: Added default logo
-  - Demo Themes -- Fixed font sizes cleanstate and simpla
-  - Demo Users: Including a code of theme's color.inc on theme settings pages so viewers can take a look.
-  - Documentation. On demo themes: Added comments and spruced up the color.inc on the examples more.
-  - Stylesheet changing has been modularized into extensible color replacement engines.
-      - engines/shift.inc - for shift themes, with a 'base' color (Garland)
-      - engines/tag.inc - for custom CSS replacement
-    - In your theme's color.inc, you can use both these engines at once in either order.
-    - Developers can also add custom color replacement algorithms by adding their engines which hook in automatically. Create a engines/yourengine.inc with the function _color_engine_yourengine($style, $info, $palette, $options = NULL). Return the modified $style markup. You can input options in theme schemes (color.inc file) by adding 'yourengine' => array(MYVARS/ARRAY/ETC) to the 'engine' settings. Go crazy. :)
-    - The color.module DON'T TOUCH statement now separates from all engines/modification as expected. The DON'T TOUCH comment is for CSS markup in your stylesheet's you do not want to have colors modified on.
-    - Of course, this means, no more mode-cruft. :)
-
-August 18, 2008 (Firm pencil's down date)
-  Last minute touchups + Code documentation + Demonstration themes
-
-  - markup: fixed bug with extra </div> closing tag in scheme editing caused by preview 
-  - block: fixed bug with block on anonymous user scheme block
-  - block: new "edit" button for super-administrator (UID 1), for quick access to scheme
-  - block: "select scheme" is now "select"
-  - block: blocks will no longer show up if scheme info not generated
-  - under the hood: color_find_scheme_by_UID() rewritten
-  - under the hood''fill' now supports unlimited of the same color. markup changed to array(x, y, width, height, color_name)
-  - under the hood: Uninstall and Regenerate will now remove color_theme_* rows in {variable}.
-  - under the hood: fixed bug with incorrect scheme stylesheets being applied to new theme
-  - under the hood: color_validate() check to see if color.inc markup is correct.
-  - under the hood: reworked color_check_themes()
-    - supports array of themes, single theme variable
-    - more efficient algorithm to check
-    - includes support for color_validate()
-  - under the hood: color_theme_scheme_generated() and color_theme_info_generated() return information on if a theme's color has been generated or not
-  - under the hood: functions moved
-    - color_get_theme_info() is now in color.database.inc
-    - color_find_scheme_by_UID() is now color.database.inc
-    - color_store_reset() is now color.database.inc
-    - color_get_ref() is now in color.database.inc. Renamed to color_get_reference()
-    - color_validate() is now in color.misc.inc
-    - Reordered functions in color.module
-  - under the hood: tweaking
-    - color_user() will not include module files if not needed
-  - under the hood: fix theme that show when block view
-  - under the hood: reworked the way logo replacement works. slice or copy a logo.png file for a logo, or mention no logo.png in color.inc and it will use your theme's default logo.png (so you can use it later).
-  - scheme editor: "Previous Colors" is now color history
-  - scheme editor: will now see scheme title. :)
-  - scheme editor: will now see breadcrumb including scheme
-  - scheme editor: "Previous colors" and "Suggested colors" are now in a fieldset with a legend
-  - scheme editor: if no scheme preview CSS or HTML is provided, no preview will be shown
-  - Code: Added doxygen reference to functions
-  - Demonstration themes: Completely redone themes: cleanstate, friendselectric*, nista, simpla, splender, spooner. Upgraded to new color module: Garland, Minnelli. All are featuring full color support and can be used as examples. :)
-  
-  * Updated from old 4.7 version (with color support added) -- however this is still bug-prone. There is a width problem in IE7 and button background one in IE6. Just a proof of concept for now. :)
-
-August 8, 2008
-  (#132571) to DRUPAL-6--1
-  - Webmasters can now rename schemes
-  - In theme settings, Edit scheme selectbox will have the default site scheme selected by default.
-  - removed stray console.log() in color.js (was preventing farbtastic from attaching)
-  - Updated the right branch. Apparently the -dev releases haven't updated for a whole month because I was only committing to the HEAD branch.
-  - The "previous colors" (which is our undo function) and suggested colors should be clickable now :)
-
-August 5, 2008
-  (Including Commit #131347)
-  - Now using scheme_id instead of hex values across the module.
-  - Now using an "Official Site Scheme" in the selection.
-  - Base and hybrid schemes will now require a 'reference' scheme. 
-    - color_get_palette() is now color_get_theme('ref')
-    - There is now a color_get_theme('fields') for retrieving fields
-  - New theme config option, 'default scheme'
-  - Scheme settings completely renovated.
-    - Interface:
-      - Add scheme fieldset
-      - Default scheme fieldset selection
-      - Edit scheme fieldset selection
-      - Rebuild scheme button
-    - Edit scheme:
-      - Added initial support for last colors, suggested colors -- they are not attached to current focused fields yet.
-      - 'Make default' if scheme isn't site default
-      - Can delete scheme, and save.
-      - Preview is collapsible.
-  - Redoing scheme installation. We will install necessary scheme info to tables before generating them.
-      1.) Populate scheme table with information for generation.
-      2.) Generate schemes one by one
-      3.) For each generated scheme, update row in question
-  - Scheme fields are now placed in an array format.
-  - You can now add schemes -- Remember to press the 'Add scheme' button.
-  - Editing scheme now works
-  - Updated the example files.
-  
-July 30, 2008
-  More leaps
-
-  - (Bug) Fixed gradient preview
-  - (Bug) Color locking/hooking functionality.
-  - README updated. We have a documentation page over at 
-  - (Improvement - Work in progress) Color scheme UI overhaul in progress
-    - Darken current color
-    - Lighten current color
-    - Select random color
-  - (Improvement - Work in progress) Add/Delete custom, named color schemes from theme configuration page. W/ AJAX
-  - (Improvement) - Schemes changed in theme configuration will now update images and values when submitted.
-  - (Improvement) Image overhaul
-    - Unlimited images
-    - Unlimited gradients
-    - Unlimited solid-color fills
-  - (Improvement) Stylesheet color replacement - We will now offer a Base-shift (garland-type) mode, a Custom mode for just tags, and a Hybrid which is a mix of the two. :) There is an option to automatically pick your mode.
-  - (Minor addition) In the Garland color.inc example, I added the "Majestic" scheme. Looks pretty nice.
-  - (Correcting ambiguity) In the blocks section, the block will be named 'Pick color scheme'.
-  - (Correcting ambiguity) 'Regenerate schemes' button. On the theme config, there will be a new button for this. Previously, you would have to click "Reset to defaults" -- which was confusing and also defaulted other settings.
-  - (Correcting ambiguity) table change
-    `color_picks` is now `color_users`
-  - (Correcting ambiguity) function color_store_theme() to color_add_theme()
-  - (Changed name, same function) color_set_scheme() is now color_set_user_scheme()
-    Function for setting user schemes selections (Table: `color_picks`)
-  - (New function) color_set_scheme() 
-    Formerly, this was used for storing users' scheme selections. I am now changing this function to the setting of the schemes themselves (Table: `color_users`).
-
-July 23rd, 2008
-
-  Allow BASE only color change! YES
-    Notes: If only base color is listed in a scheme, only commas will be listed.
-  - Fixed: Fix scheme reset not showing schemes on next pageview
-  - Fixed errors for themes without fields 'base', 'text', 'link'
-  - Fixed errors for themes without $info['copy']
-  - Fixed errors for theme without $info['preview_image'] on preview.inc
-  - Updated README.txt
-  
-  Color.js
-    - is being fixed up for the custom preview.inc setup. The preview.css will change ID's matching your fields inside a div#preview. :)
-    - Is being set up to work with instances where certain schemes in a 'base' colorable layout doesn't have the rest/some of the fields setup.
-    - I have worked on reattaching the selectbox behavior for webmasters who want to add/remove custom schemes. (Has been driving me crazy!)
-
-July 9, 2008
-  Performance tweaks!
-  - color_get_schemes(), color_get_theme_info(), color_compatible(), color_get_palette() all use static variables.
-  - removed the extra $themes = list_themes(); in _color_rewrite_styleshet()
-  - moved code around in color_form_alter() to only retrieve themes and include algorithms when needed. (~40-50ms performance fix)
-  - Only taking need columns (id, name, hex) from schemes in color_get_theme_info()
-  - fixed support for garland/minnelli screenshot on /user/{uid}/edit
-  - fixed admin/build/themes/settings/{theme} to correctly set theme name
-  - Cleanstate: fixed up cleanstate a bit.
-  - Fixed default variable_get('cache') variables to fit the "Disabled" mode in admin/settings/performance by default.
-  - Fixed notice with Undefined indexes by using isset()
-  
-  Unfinished:
-  - Custom preview.inc option. Currently, if you provide a preview.inc in the theme's /color folder, the default will be overridden.
-  
-  Bugs:
-  - Without user_access('select different theme')) and select color scheme users can pick schemes w/ block but not user profile.
-  
-June 26, 2008
-  - Bug fixes here and there. I had a list but laptop was left to sleep without saving... Doing best to keep tabs.
-  - make some functions for the _submit user scheme pick updates
-  - Fixed cleanstate theme to replace colors correctly
-  - Cleanstate scheme now has new custom fields + colors!
-  - "Reset to defaults" will now delete schemes for themes in files. It will also delete relevant user color picks. However it may change with:
-  - Fixed system up for clearing scheme_id's that don't exist.
-  - Removed color_legacy function. People will be able to change w/ proper documentation.
-  - Fixed bug On scheme change from Garland->Minelli, scheme won't change/update
-  - Fixed bug on scheme change to cleanstate scheme shows as aquamarine but "Your scheme does not match with your theme!" shows and color_pick row WHERE uid={uid} won't delete..
-  - Fixed bug with {{base}} color not switching!
-  - Fixed bug with switching back to default site theme (scheme will not del)
-  
-  TODO: don't pull misc/file info unless necessary (not on page load alone)
-  TODO: Use some static functions to reduce loading the same data twice.
-  TODO: On moving to default theme, scheme select will not reset, unless after reload.
-  
-June 20, 2008
-  - admin/build/themes/settings/{theme} will now change default color scheme
-  - Fixed link color with CSS changing on Garland.
-  - Fixed color block would show up on non-color themes
-  - When cache is on, color.module will not change schemes for anonymous users.
-  - "Reset to defaults" on /admin/build/themes/settings/{theme} will now correctly reset color schemes for themes
-  - Updated cleanstate color.inc file
-
-June 19, 2008
-  SQL Tweaking/New DB Functions
-  
-  - (Done) INNER/LEFT JOIN more!
-  - (Done) allow color_get_theme_info and work on grabbing specific fields instead of all columns
-  - (Done) change 'default_set' to 'default scheme'. TRY TO USE ID!
-  - (Done) in color_theme_select_submit() before hand use hidden field to include scheme_id
-  - (Todo) Store info on what themes are colorable in {color} table
-    
-June 18, 2008
-  Bug fix/Tweaking release
-    
-  - (Added) On uninstall, whipe old schemes from dir
-  - (Added) Do a preg_replace('~[^a-z0-9._]+~, '-', drupal_strtolower($string)); to normalize file paths
-  - (Fixed) On block administration page, the theme now changes.
-  - (Fixed) Users can now change schemes w/o 'select different theme' perm.
-  - (Fixed) Bug on garland/minnelli with invalid stylesheet recoloring
-  - (Tweaked) Suppress repeat warnings in certain parts of scripts.
-  - (Updated) Update minnelli color.inc to new version.
-
-  Caching
-    I do not see this module as being very cache-friendly. There will have to be some thinking when it comes to this.
-    
-  - Block cache: lags on select boxes on anonymous/registered users
-  - Caching modes 'normal': interrupts scheme changing for anonymous users. works OK w/ logged in ones
-
-June 16, 2008
-  New color replacement methods!
-
-  Changes:
-    - Find and replace fields from color.inc inside stylesheets. /* {{base}} */ #ffffff /* {{/base}} */
-    - Include a 'base' field if you want to change colors of non-tagged color values. (I.e. Garland)
-    - You can keep the above stylesheets in the /color folder by doing: 'css' => array( 'color/style.css',), 
-    - Fixed bug w/ blend target storing in DB
-    - Added some more logic for falling back to default themes/color theme changing
-  
-  Quirks:
-    - In listthemes(), must check if theme is enabled in system! This shows extra color-enabled themes in user/{uid}/edit
-    - When changing over a theme, the old scheme name may show in selectbox (the module will still correctly move to default scheme for newly selected theme, though)
-
-June 11, 2008
-  We got a color scheme block + anonymous color scheme selection + perms.
-
-  Changes:
-  - Fixed up webmaster theme selection
-  - Users other the uid 1 can choose scheme.
-  - Color scheme changing block. (YES.)
-  - Anonymous users can now pick color schemes
-  - Started applying user permissions to scheme selection. If user is not granted permission they will not be able to see scheme selection and default to default_set scheme for the theme.
-  
-  Need to know: You have to set the 'choose color scheme' permissions for the user type if they want to see the block/change schemes.
-
-June 9, 2008
-  Changes:
-  
-  - Legacy support code is now in the color_get_theme_info() function.
-  - Updated color.image.inc for some legacy support for gradients without the color field values. (supposed to be listed like x, y, width, height, color1, color2)
-  - Modularized code into color.database.inc, color.stylesheet.inc and color.misc.inc
-  - Now 3 tables: 'color' for theme info, 'color_schemes' for individual name/theme/hex info, and 'color_picks' for user scheme choices.
-  - In color.database.inc, there is now functions to find scheme based on UID, hex, and scheme/theme
-  - color_legacy($info) in color.misc.inc function for checking/changing old scheme .inc files to be compatible with this.
-  
-  Known quirks:
-  - Minnelli is having very odd color effects. (http://img338.imageshack.us/img338/8634/picture8no4.png) (With current color.scheme using legacy support code to fix).
-
-
-June 8, 2008
-  Users can now pick color schemes
-  
-  Changes:
-    + Color schemes are now in 'color_schemes' table
-    + Instead of every theme having one scheme stored, all schemes are stored for user selection.
-    + Scheme file information stored in 'extra_attr' column
-    + In preparation for user custom schemes, the 'scheme' column will attempt to match with the 'name' column of a pre-made theme. If no match, in the future will assume it is a custom user theme. (Generate graphics/stylesheet)
-    + Users can now pick color schemes for themes on a user basis via user/{uid}/edit. (YES)
-    
-  Known Quirks:
-   - Color schemes are installed when color.module is installed.
-   - New individual color themes are added when you go to admin/build/themes/settings/{theme}
-   - When schemes are first installed, esp. after the module installation w/ a few color themes, the set messages list is very long. Need to find a way to quiet that.
-    
-
-June 1, 2008
-  We are on our way to allowing users to select their color schemes.
-  
-  Changes:
-    - For the moment the inline color scheme selection has been removed from /user/{uid}/edit. Can be placed back at a later time if wanted (it is in 1.6 of color.module)
-    - Fixed bug with color schemer showing on none Color.module themes.
-    - (Second commit today) Fixed bug where color schemes would change across themes. Every chosen theme w/ a scheme should have it's own row.
-    + Users can now store their theme selections (not creations yet) in the DB. It will insert and edit.
-    + New special 'user_scheme' name. Currently stores serialized hexed codes for color schemes. Built to support custom schemes for users.
-    + A form submit checking for when a theme and color scheme is chosen at the same time.
-    + (Second commit today): Used coder.module to brush up a bit.
-
-May 30, 2008
-  This is a commit so my mentors (Konstantin and Dmitri) and anyone else who wants to can see what I've been working on. There is a lot of temporary code in this commit.
-  
-  Changes:
-  + Inline color scheme select
-  + Fixed schemer to work with more themes!
-  + Schemer now has some (maybe temporary) support for legacy color.inc files. It will present a warning but still adds to the database all the same.
-  + Split functions up into color.image.inc and color.algorithms.inc
-  - Removed primary key for indexes atm. For now to change this please Uninstall/Reinstall module. It will suppress some duplicate errors from before.
-  
-  Known Quirks: I cannot get the values of the select boxes for color schemes on color-enabled themes to all submit seperately on /user/{uid}/edit. It seems as if the last select box overwrites all the previous ones. And the ['colorselectbox'] hex shows up all around the form output with dprint_r($form);
+INSTALLATION AND USAGE
+========================
 
-May 28, 2008
-  Changes:
-  + Added the "uid" column. Index in scheme for 'theme', 'uid' for the moment.
-  + Added "Color-enabled" in description of themes with color support (color.inc files present)
-  + Added 
-  
-  Known quirks:
-  - I just found that current color.module in Drupal 6 may not be handling screenshot preview correctly.
-  
-  
-May 26, 2008
-  Changes:
-  + Support for unlimited/custom amount of color fields. Fields atm must be declared in color.inc.
-  + Color scheme keys changed to scheme name (was value/hexes). Implemented storage of schemes/other color theme variables in SQL.
-  + Color.module install schema.
-  + "Reset to defaults" can be used to reset the SQL (incase you wanted to try adding new fields/colors).
-  + Gradient colors can now be chosen through field names of your choice.
-  
-  Known Quirks:
-  - (Fixed) Blank page on module enable/disable, theme change submit/reset. Try reloading the URL w/o form POST.
+  1. Backup your current /themes and /modules/color folders. Move them elsewhere
+     temporarily.
+  2. Place the themes in the /examples folder Drupal theme folder.
+     *Make sure to keep your /themes/engines folder in the theme folder!*.
+  3. Copy the new color.module in /color. Disable color.module. Now click the
+     "Uninstall" tab and fully uninstall color.module. Re-enable. This will
+     insure the installer is hooked and that the tables are properly created.
+  4. Then you can choose to enable/generate color schemes on a per theme basis.
Index: color.algorithms.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.algorithms.inc,v
retrieving revision 1.2.2.3
diff -u -p -r1.2.2.3 color.algorithms.inc
--- color.algorithms.inc	2 Oct 2008 01:57:39 -0000	1.2.2.3
+++ color.algorithms.inc	22 Oct 2008 04:10:32 -0000
@@ -1,5 +1,6 @@
 <?php
 // $Id: color.algorithms.inc,v 1.2.2.3 2008/10/02 01:57:39 skiquel Exp $
+
 /**
  * @file
  * Color manipulation functions
@@ -47,7 +48,7 @@ function _color_blend($img, $hex1, $hex2
 
 /**
  * Convert a hex color into an RGB triplet.
- * 
+ *
  * @param $hex
  *  String of hex value
  * @param $normalize
@@ -85,28 +86,28 @@ function _color_pack($rgb, $normalize = 
 }
 
 function color_find_type($color_value, $return = NULL) {
-  if (is_string($color_value) && preg_match("/^#/", $color_value)) {
-    $this->type =  "hex";
+  if (is_string($color_value) && preg_match('/^#/', $color_value)) {
+    $this->type =  'hex';
   }
   elseif (is_array($color_value)) {
     foreach ($color_value as $value) {
-      
+
       if ($value <= 255 && 1 > $value) {
-        $type = "RGB";
+        $type = 'RGB';
       }
       else {
-        $type = "HSL";
+        $type = 'HSL';
       }
-      
+
     }
-    
+
     $this->type = $type;
 
   }
   else {
-    $this->type = "undef";
+    $this->type = 'undef';
   }
-  
+
   if ($return) {
     return $this->type;
   }
@@ -121,8 +122,8 @@ function darken_hsl($hsl) {
   }
   $hex = hsl2hex($h, $s, $l);
   return $hex;
-}  
-  
+}
+
 function lighten_hsl($hsl) {
   // We need to change back to the HSL
   $h = $hsl[0]; $s = $hsl[1]; $l = $hsl[2];
@@ -134,25 +135,24 @@ function lighten_hsl($hsl) {
   $hex = hsl2hex($h,$s,$l);
   return $hex;
 }
- 
+
 
 /**
-*
-*
-*/
+ * 
+ */
 function hex2rgb($color) {
   if (strlen($color) == 7) {
     $rgb[] = hexdec(substr($color, 1, 2));
     $rgb[] = hexdec(substr($color, 3, 2));
     $rgb[] = hexdec(substr($color, 5, 2));
-    
+
     return $rgb;
   }
   else if (strlen($color) == 4) {
     $rgb[] = hexdec(substr($color, 1, 1) . substr($color, 1, 1));
     $rgb[] = hexdec(substr($color, 2, 1) . substr($color, 2, 1));
     $rgb[] = hexdec(substr($color, 3, 1) . substr($color, 3, 1));
-  
+
     return $rgb;
   }
 }
@@ -173,9 +173,8 @@ function random_hsl($hsl) {
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function hsb2rgb() {
   if ( $S == 0 ) {                      //HSV from 0 to 1
     $R = $V * 255;
@@ -185,7 +184,7 @@ function hsb2rgb() {
   else {
     $var_h = $H * 6;
     if ( $var_h == 6 ) $var_h = 0;      //H must be < 1
-    $var_i = floor( $var_h );             //Or ... $var_i = int( $var_h )
+    $var_i = floor( $var_h );           //Or ... $var_i = int( $var_h )
     $var_1 = $V * ( 1 - S );
     $var_2 = $V * ( 1 - S * ( $var_h - $var_i ) );
     $var_3 = $V * ( 1 - S * ( 1 - ( $var_h - $var_i ) ) );
@@ -195,20 +194,19 @@ function hsb2rgb() {
     else if ( $var_i == 2 ) { $var_r = $var_1 ; $var_g = $V     ; $var_b = $var_3; }
     else if ( $var_i == 3 ) { $var_r = $var_1 ; $var_g = $var_2 ; $var_b = $V    ; }
     else if ( $var_i == 4 ) { $var_r = $var_3 ; $var_g = $var_1 ; $var_b = $V    ; }
-    else                   { $var_r = $V     ; $var_g = $var_1 ; $var_b = $var_2 ; }
+    else                    { $var_r = $V     ; $var_g = $var_1 ; $var_b = $var_2; }
 
     $R = $var_r * 255;                  //RGB results from 0 to 255
     $G = $var_g * 255;
     $B = $var_b * 255;
   }
-    
+
   return array($R, $G, $B);
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function hsl2hex($hsl) {
   $rgb = hsl2rgb($hsl);
   $color = _color_pack($rgb);
@@ -216,9 +214,8 @@ function hsl2hex($hsl) {
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function hsl2rgb($hsl) {
   $h = $hsl[0];
   $s = $hsl[1];
@@ -233,9 +230,8 @@ function hsl2rgb($hsl) {
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function hue2rgb($m1, $m2, $h) {
   $h = ($h < 0) ? $h + 1 : (($h > 1) ? $h - 1 : $h);
   if ($h * 6 < 1) return $m1 + ($m2 - $m1) * $h * 6;
@@ -245,9 +241,8 @@ function hue2rgb($m1, $m2, $h) {
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function rgb2cmy() {
   //RGB values from 0 to 255
   //CMY results from 0 to 1
@@ -255,14 +250,13 @@ function rgb2cmy() {
   $C = 1 - ( $R / 255 );
   $M = 1 - ( $G / 255 );
   $Y = 1 - ( $B / 255 );
-  
+
   return array($C, $M, $Y);
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function rgb2hex($rgb) {
   $r = round($rgb[0] * 255);
   $g = round($rgb[1] * 255);
@@ -298,9 +292,8 @@ function rgb2hsl($rgb) {
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function rgb2hsv() {
   $var_R = ( $R / 255 );                     //RGB from 0 to 255
   $var_G = ( $G / 255 );
@@ -330,14 +323,14 @@ function rgb2hsv() {
     if ( $H < 0 ) ; $H += 1;
     if ( $H > 1 ) ; $H -= 1;
   }
-  
+
   return array($H, $S, $V);
 } // END rgb2hsv
 
 /**
-*
-*	CMYK and CMY values and 0 to 1
-*/
+ *
+ *  CMYK and CMY values and 0 to 1
+ */
 function cmy2cmyk() {
   $var_K = 1;
 
@@ -345,24 +338,23 @@ function cmy2cmyk() {
   if ( $M < $var_K )   $var_K = $M;
   if ( $Y < $var_K )   $var_K = $Y;
   if ( $var_K == 1 ) { //Black
-     $C = 0;
-     $M = 0;
-     $Y = 0;
+    $C = 0;
+    $M = 0;
+    $Y = 0;
   }
   else {
-     $C = ( $C - $var_K ) / ( 1 - $var_K );
-     $M = ( $M - $var_K ) / ( 1 - $var_K );
-     $Y = ( $Y - $var_K ) / ( 1 - $var_K );
+    $C = ( $C - $var_K ) / ( 1 - $var_K );
+    $M = ( $M - $var_K ) / ( 1 - $var_K );
+    $Y = ( $Y - $var_K ) / ( 1 - $var_K );
   }
   $K = $var_K;
-  
+
   return array($C, $M, $Y, $K);
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function cmy2rgb() {
   //CMY values from 0 to 1
   //RGB results from 0 to 255
@@ -375,15 +367,14 @@ function cmy2rgb() {
 }
 
 /**
-*
-*
-*/
+ *
+ */
 function cmyk2cmy($cmyk) {
   //CMYK and CMY values from 0 to 1
 
   $C = ( $C * ( 1 - $K ) + $K );
   $M = ( $M * ( 1 - $K ) + $K );
   $Y = ( $Y * ( 1 - $K ) + $K );
-  
+
   return array($C, $M, $Y);
 }
\ No newline at end of file
Index: color.batch.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/Attic/color.batch.inc,v
retrieving revision 1.1.2.3
diff -u -p -r1.1.2.3 color.batch.inc
--- color.batch.inc	2 Oct 2008 01:57:39 -0000	1.1.2.3
+++ color.batch.inc	22 Oct 2008 04:10:32 -0000
@@ -1,10 +1,11 @@
 <?php
 // $Id: color.batch.inc,v 1.1.2.3 2008/10/02 01:57:39 skiquel Exp $
+
 /**
  * @file
  * Batch stuff
  */
- 
+
 /**
  * Batch progress to generate scheme info
  *
@@ -67,6 +68,7 @@ function color_batch_generate($theme) {
 
 /**
  * Add theme info into {color}
+ *
  * @param $theme: Theme name
  */
 function color_install_theme(&$theme) {
@@ -77,11 +79,11 @@ function color_install_theme(&$theme) {
 
   module_load_include('inc', 'color', 'color.misc');
 
-	$theme += color_get_color_hook($theme['name']);
-  foreach ($theme['premade schemes'] as $name => $hex) {      
+  $theme += color_get_color_hook($theme['name']);
+  foreach ($theme['premade schemes'] as $name => $hex) {
     $theme['premade schemes'][$name]  = explode(',', $hex);
   }
-  
+
   // Add fields to db
   db_query('INSERT INTO {color} (`name`, `type`, `fields`, `replacement methods`) VALUES (\'%s\', \'%s\', \'%s\', \'%s\')', $theme['name'], 'theme', serialize($theme['fields']), serialize($theme['replacement methods']));
 
@@ -95,7 +97,7 @@ function color_install_theme(&$theme) {
       db_query('UPDATE {color} SET `%s` = \'%s\' WHERE id = \'%s\'', $column, $column_data, $theme['id']);
     }
   }
-  
+
   $context['sandbox']['progress']++;
   if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
@@ -112,11 +114,11 @@ function color_batch_populate_schemes(&$
     $context['sandbox']['progress'] = 0;
     $context['sandbox']['max'] = 1;
   }
-  
+
   module_load_include('inc', 'color', 'color.database');
 
   foreach ($theme['premade schemes'] as $name => $hex) {
-    // Add colors to database  
+    // Add colors to database
     db_query('INSERT INTO {color_schemes} (name, theme, hex, status) VALUES (\'%s\', \'%s\', \'%s\', \'%s\')', $name, $theme['id'], serialize($hex), '0');
     $last_id = db_last_insert_id('color_schemes', 'id');
 
@@ -132,9 +134,9 @@ function color_batch_populate_schemes(&$
       $theme['reference scheme'] = color_get_scheme($reference, TRUE);
     }
   }
-  
+
   $context['sandbox']['progress']++;
-  
+
   if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
   }
@@ -142,7 +144,7 @@ function color_batch_populate_schemes(&$
 
 function color_batch_generate_schemes($theme_name, &$context) {
   module_load_include('inc', 'color', 'color.database');
-  
+
   $theme['name'] = $theme_name;
 
   if (!isset($context['sandbox']['progress'])) {
Index: color.database.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.database.inc,v
retrieving revision 1.6.2.22
diff -u -p -r1.6.2.22 color.database.inc
--- color.database.inc	2 Oct 2008 01:57:39 -0000	1.6.2.22
+++ color.database.inc	22 Oct 2008 04:10:33 -0000
@@ -36,7 +36,7 @@ function color_list_themes($refresh = FA
       else {
         $result = db_query("SELECT * FROM {system} WHERE type = '%s'", 'theme');
       }
-      
+
       while ($theme = db_fetch_object($result)) {
         if (file_exists($theme->filename)) {
           $theme->info = unserialize($theme->info);
@@ -81,13 +81,13 @@ function color_list_themes($refresh = FA
 // Takes $scheme, including $scheme['id']
 function color_get_scheme(&$scheme, $return = FALSE) {
   static $static;
-  
+
   if (is_string($scheme)) {
     $scheme_id = $scheme;
     $scheme = array();
     $scheme['id'] = $scheme_id;
   }
-  
+
   if (isset($static[$scheme['id']])) {
     if ($return) {
       return $static[$scheme['id']];
@@ -98,7 +98,7 @@ function color_get_scheme(&$scheme, $ret
       return;
     }
   }
-  
+
   // Check for scheme['id'].
   if (isset($scheme['id'])) {
     $query = db_query("SELECT * FROM {color_schemes} WHERE id = '%s'", $scheme['id']);
@@ -111,18 +111,18 @@ function color_get_scheme(&$scheme, $ret
       $rows[$rowname] = unserialize($rows[$rowname]);
     }
   }
-  
+
   if ($return) {
-      $static[$scheme['id']] = $rows;
+    $static[$scheme['id']] = $rows;
 
     return $rows;
   }
   else {
-    $scheme = $rows;  
+    $scheme = $rows;
     $static[$scheme['id']] = $rows;
 
   }
-  
+
 }
 
 /**
@@ -165,7 +165,7 @@ function color_set_scheme($scheme = NULL
   }
   elseif ($method == 'create') {
     color_generate_scheme_files($scheme, $theme);
-    
+
     db_query('INSERT INTO {color_schemes} (name, theme, hex, images, stylesheets, status) VALUES (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', $scheme['name'], $scheme['theme'], serialize($scheme['hex']), serialize($scheme['images']), serialize($scheme['stylesheets']), $scheme['status']);
 
     $last_id = db_last_insert_id('color_schemes', 'id');
@@ -184,7 +184,7 @@ function color_set_scheme($scheme = NULL
   }
   elseif ($method == 'update') {
     color_generate_scheme_files($scheme, $theme);
-    
+
     if (isset($scheme['logo'])) {
       $extras[] = " `logo` = '" . $scheme['logo'] . "'";
     }
@@ -202,7 +202,7 @@ function color_set_scheme($scheme = NULL
     db_query('UPDATE {color_schemes} SET `path` = \'%s\', `stylesheets` = \'%s\', `images` = \'%s\', `hex` = \'%s\''. $extras . ' WHERE id = \'%s\'', $scheme['path'], serialize($scheme['stylesheets']), serialize($scheme['images']), serialize($scheme['hex']), $scheme['id']);
 
     if (isset($scheme['name'])) {
-        db_query('UPDATE {color_schemes} SET `name` = \'%s\' WHERE id = \'%s\'', $scheme['name']);
+      db_query('UPDATE {color_schemes} SET `name` = \'%s\' WHERE id = \'%s\'', $scheme['name']);
     }
   }
   elseif ($method == 'delete' && isset($scheme['id'])) {
@@ -226,10 +226,10 @@ function color_set_scheme($scheme = NULL
 function color_set_preview(&$scheme, $theme) {
   module_load_include('inc', 'color', 'color.generate');
 
-	// Because this is a color_set_preview (A preview), we're
-	// Going to put a special boolean in the $scheme
-	$theme['set_preview'] = TRUE;
-	
+  // Because this is a color_set_preview (A preview), we're
+  // Going to put a special boolean in the $scheme
+  $theme['set_preview'] = TRUE;
+
   if (isset($scheme['id'])) {
     color_generate_scheme_files($scheme, $theme);
     db_query('UPDATE {color} SET preview = \'%s\' WHERE id = \'%s\'', serialize($scheme), $theme['id']);
@@ -246,7 +246,7 @@ function color_set_preview(&$scheme, $th
 function color_scheme_id_valid($scheme_id, $theme = NULL) {
   $query = db_query("SELECT name, id FROM {color} WHERE id = (SELECT theme FROM {color_schemes} WHERE id = '%s')", $scheme_id);
   $row = db_fetch_array($query);
-  
+
   if ($theme == $row['name'] || $theme == $row['id']) {
     $valid = TRUE;
   }
@@ -283,18 +283,18 @@ function color_get_theme(&$theme) {
   if (!isset($theme['id'])) {
     $theme['id'] = db_result(db_query("SELECT id FROM {color} WHERE name = '%s'", $theme['name']));
   }
-  
+
   if (isset($static[$theme['name']])) {
     $theme = $static[$theme['name']];
     return;
   }
 
-  module_load_include('inc', 'color', 'color.misc');  
+  module_load_include('inc', 'color', 'color.misc');
 
   // Get information regarding theme
   if ($query = db_query("SELECT * FROM {color} WHERE id = '%s'", $theme['id'])) {
     $theme = db_fetch_array($query);
-    
+
     if (isset($theme['default scheme'])) {
       $default['id'] = $theme['default scheme'];
       $theme['default scheme'] = color_get_scheme($default, TRUE);
@@ -304,14 +304,14 @@ function color_get_theme(&$theme) {
       $theme['reference scheme'] = color_get_scheme($reference, TRUE);
     }
   }
-  
+
   $unserialize = array('fields', 'replacement methods', 'premade schemes', 'images', 'stylesheets');
   foreach ($unserialize as $rowname) {
     if (isset($theme[$rowname])) {
       $theme[$rowname] = unserialize($theme[$rowname]);
     }
   }
-  
+
   $static[$theme['name']] = $theme;
 }
 
@@ -328,12 +328,12 @@ function color_get_theme_extras(&$theme)
       $theme['schemes']['hex'][$row['name']] = unserialize($row['hex']);
       $theme['schemes']['id'][$row['name']] = $row['id'];
     }
-    
+
     if (isset($theme['schemes']['id'])) {
       ksort($theme['schemes']['id']);
     }
   }
-  
+
   $static[$theme['name']] = $theme;
 }
 
@@ -351,11 +351,11 @@ function color_scheme_reset($theme_name)
   }
   $theme['name'] = $theme_name;
   $theme['id'] = db_result(db_query("SELECT id FROM {color} WHERE name = '%s'", $theme['name']));
-  
+
   db_query("DELETE FROM {color} WHERE name = '%s'", $theme['name']);
   db_query("DELETE FROM {color_schemes} WHERE theme = '%s'", $theme['id']);
   db_query("DELETE FROM {variable} WHERE name LIKE 'color_%s%'", $theme['name']);
-  
+
   // Check color_users table. Clean out picks that don't match schemes.
   /* save this stuff for color_users
   $result = db_query("SELECT scheme_id FROM {color_users}", $theme);
@@ -370,4 +370,3 @@ function color_scheme_reset($theme_name)
   color_rm_dir(file_directory_path() .'/color', $theme['name']);
   variable_set("theme_color_" . $theme['name'] . "_generated", 0);
 }
-
Index: color.doxy
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/Attic/color.doxy,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 color.doxy
--- color.doxy	18 Aug 2008 18:59:45 -0000	1.1.2.1
+++ color.doxy	22 Oct 2008 04:10:33 -0000
@@ -14,207 +14,207 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
 # by quotes) that should identify the project.
 
 PROJECT_NAME           =  Color
 
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
 # if some version control system is used.
 
 PROJECT_NUMBER         = 2.0
 
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
 # where doxygen was started. If left blank the current directory will be used.
 
 OUTPUT_DIRECTORY       = doc
 
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
 # otherwise cause performance problems for the file system.
 
 CREATE_SUBDIRS         = NO
 
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
 # Swedish, and Ukrainian.
 
 OUTPUT_LANGUAGE        = English
 
-# This tag can be used to specify the encoding used in the generated output. 
-# The encoding is not always determined by the language that is chosen, 
-# but also whether or not the output is meant for Windows or non-Windows users. 
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-# forces the Windows encoding (this is the default for the Windows binary), 
-# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
 # all platforms other than Windows).
 
 USE_WINDOWS_ENCODING   = NO
 
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
 # Set to NO to disable this.
 
 BRIEF_MEMBER_DESC      = YES
 
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
 # brief descriptions will be completely suppressed.
 
 REPEAT_BRIEF           = YES
 
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
 # "represents" "a" "an" "the"
 
-ABBREVIATE_BRIEF       = 
+ABBREVIATE_BRIEF       =
 
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
 # description.
 
 ALWAYS_DETAILED_SEC    = YES
 
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
 # operators of the base classes will not be shown.
 
 INLINE_INHERITED_MEMB  = YES
 
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
 # to NO the shortest path that makes the file name unique will be used.
 
 FULL_PATH_NAMES        = YES
 
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
 # path to strip.
 
-STRIP_FROM_PATH        = 
+STRIP_FROM_PATH        =
 
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
 # are normally passed to the compiler using the -I flag.
 
-STRIP_FROM_INC_PATH    = 
+STRIP_FROM_INC_PATH    =
 
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
 # doesn't support long names like on DOS, Mac, or CD-ROM.
 
 SHORT_NAMES            = NO
 
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like the Qt-style comments (thus requiring an 
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
 # explicit @brief command for a brief description.
 
 JAVADOC_AUTOBRIEF      = YES
 
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
 # description. Set this tag to YES if you prefer the old behaviour instead.
 
 MULTILINE_CPP_IS_BRIEF = NO
 
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
 # will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
+# If set to NO, the detailed description appears after the member
 # documentation.
 
 DETAILS_AT_TOP         = YES
 
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
 # re-implements.
 
 INHERIT_DOCS           = YES
 
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
 # be part of the file/class/namespace that contains it.
 
 SEPARATE_MEMBER_PAGES  = NO
 
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
 # Doxygen uses this value to replace tabs by spaces in code fragments.
 
 TAB_SIZE               = 2
 
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
 # You can put \n's in the value part of an alias to insert newlines.
 
-ALIASES                = 
+ALIASES                =
 
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
 # of all members will be omitted, etc.
 
 OPTIMIZE_OUTPUT_FOR_C  = NO
 
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
-# sources only. Doxygen will then generate output that is more tailored for Java. 
-# For instance, namespaces will be presented as packages, qualified scopes 
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
 # will look different, etc.
 
 OPTIMIZE_OUTPUT_JAVA   = NO
 
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to 
-# include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
+# include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
 # diagrams that involve STL classes more complete and accurate.
 
 BUILTIN_STL_SUPPORT    = NO
 
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
 # all members of a group must be documented explicitly.
 
 DISTRIBUTE_GROUP_DOC   = NO
 
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
 # the \nosubgrouping command.
 
 SUBGROUPING            = YES
@@ -223,326 +223,326 @@ SUBGROUPING            = YES
 # Build related configuration options
 #---------------------------------------------------------------------------
 
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
 
 EXTRACT_ALL            = NO
 
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
 # will be included in the documentation.
 
 EXTRACT_PRIVATE        = NO
 
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
 # will be included in the documentation.
 
 EXTRACT_STATIC         = NO
 
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
 # If set to NO only classes defined in header files are included.
 
 EXTRACT_LOCAL_CLASSES  = YES
 
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
 # If set to NO (the default) only methods in the interface are included.
 
 EXTRACT_LOCAL_METHODS  = NO
 
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
 # This option has no effect if EXTRACT_ALL is enabled.
 
 HIDE_UNDOC_MEMBERS     = NO
 
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
 # overviews. This option has no effect if EXTRACT_ALL is enabled.
 
 HIDE_UNDOC_CLASSES     = NO
 
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
 # documentation.
 
 HIDE_FRIEND_COMPOUNDS  = NO
 
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
 # function's detailed documentation block.
 
 HIDE_IN_BODY_DOCS      = NO
 
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
 # Set it to YES to include the internal documentation.
 
 INTERNAL_DOCS          = NO
 
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
 # and Mac users are advised to set this option to NO.
 
 CASE_SENSE_NAMES       = YES
 
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
 # documentation. If set to YES the scope will be hidden.
 
 HIDE_SCOPE_NAMES       = NO
 
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
 # of that file.
 
 SHOW_INCLUDE_FILES     = YES
 
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
 # is inserted in the documentation for inline members.
 
 INLINE_INFO            = YES
 
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
 # declaration order.
 
 SORT_MEMBER_DOCS       = YES
 
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
 # declaration order.
 
 SORT_BRIEF_DOCS        = NO
 
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
+# Note: This option applies only to the class list, not to the
 # alphabetical list.
 
 SORT_BY_SCOPE_NAME     = NO
 
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
 # commands in the documentation.
 
 GENERATE_TODOLIST      = YES
 
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
 # commands in the documentation.
 
 GENERATE_TESTLIST      = YES
 
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
 # commands in the documentation.
 
 GENERATE_BUGLIST       = YES
 
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
 # \deprecated commands in the documentation.
 
 GENERATE_DEPRECATEDLIST= YES
 
-# The ENABLED_SECTIONS tag can be used to enable conditional 
+# The ENABLED_SECTIONS tag can be used to enable conditional
 # documentation sections, marked by \if sectionname ... \endif.
 
-ENABLED_SECTIONS       = 
+ENABLED_SECTIONS       =
 
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
 # command in the documentation regardless of this setting.
 
 MAX_INITIALIZER_LINES  = 30
 
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
 # list will mention the files that were used to generate the documentation.
 
 SHOW_USED_FILES        = YES
 
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
 # in the documentation. The default is NO.
 
 SHOW_DIRECTORIES       = NO
 
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from the 
-# version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
 # is used as the file version. See the manual for examples.
 
-FILE_VERSION_FILTER    = 
+FILE_VERSION_FILTER    =
 
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
 
-# The QUIET tag can be used to turn on/off the messages that are generated 
+# The QUIET tag can be used to turn on/off the messages that are generated
 # by doxygen. Possible values are YES and NO. If left blank NO is used.
 
 QUIET                  = YES
 
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
 # NO is used.
 
 WARNINGS               = YES
 
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
 # automatically be disabled.
 
 WARN_IF_UNDOCUMENTED   = NO
 
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
 # don't exist or using markup commands wrongly.
 
 WARN_IF_DOC_ERROR      = YES
 
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
 # documentation.
 
 WARN_NO_PARAMDOC       = NO
 
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
 # be obtained via FILE_VERSION_FILTER)
 
 WARN_FORMAT            = "$file:$line: $text"
 
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
 # to stderr.
 
-WARN_LOGFILE           = 
+WARN_LOGFILE           =
 
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
 
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = 
+INPUT                  =
 
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
 
 FILE_PATTERNS          = *.module *.inc *.php
 
 # The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO. 
+# should be searched for input files as well. Possible values are YES and NO.
 # If left blank NO is used.
 
 RECURSIVE              = YES
 
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
 
-EXCLUDE                = 
+EXCLUDE                =
 
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
 # from the input.
 
 EXCLUDE_SYMLINKS       = NO
 
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
 # for example use the pattern */test/*
 
-EXCLUDE_PATTERNS       = 
+EXCLUDE_PATTERNS       =
 
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
 # the \include command).
 
-EXAMPLE_PATH           = 
+EXAMPLE_PATH           =
 
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
 # blank all files are included.
 
-EXAMPLE_PATTERNS       = 
+EXAMPLE_PATTERNS       =
 
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
 # Possible values are YES and NO. If left blank NO is used.
 
 EXAMPLE_RECURSIVE      = NO
 
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
 # the \image command).
 
-IMAGE_PATH             = 
+IMAGE_PATH             =
 
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be
 # ignored.
 
-INPUT_FILTER           = 
+INPUT_FILTER           =
 
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.  Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.  The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
 # is applied to all files.
 
-FILTER_PATTERNS        = 
+FILTER_PATTERNS        =
 
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
 # files to browse (i.e. when SOURCE_BROWSER is set to YES).
 
 FILTER_SOURCE_FILES    = NO
@@ -551,32 +551,32 @@ FILTER_SOURCE_FILES    = NO
 # configuration options related to source browsing
 #---------------------------------------------------------------------------
 
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
 # VERBATIM_HEADERS is set to NO.
 
 SOURCE_BROWSER         = YES
 
-# Setting the INLINE_SOURCES tag to YES will include the body 
+# Setting the INLINE_SOURCES tag to YES will include the body
 # of functions and classes directly in the documentation.
 
 INLINE_SOURCES         = YES
 
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
 # fragments. Normal C and C++ comments will always remain visible.
 
 STRIP_CODE_COMMENTS    = YES
 
-# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-# then for each documented function all documented 
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
 # functions referencing it will be listed.
 
 REFERENCED_BY_RELATION = YES
 
-# If the REFERENCES_RELATION tag is set to YES (the default) 
-# then for each documented function all documented entities 
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
 # called/used by that function will be listed.
 
 REFERENCES_RELATION    = YES
@@ -588,16 +588,16 @@ REFERENCES_RELATION    = YES
 
 REFERENCES_LINK_SOURCE = YES
 
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
 # will need version 4.8.6 or higher.
 
 USE_HTAGS              = NO
 
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
 # which an include is specified. Set to NO to disable this.
 
 VERBATIM_HEADERS       = YES
@@ -606,133 +606,133 @@ VERBATIM_HEADERS       = YES
 # configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
 
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
 # contains a lot of classes, structs, unions or interfaces.
 
 ALPHABETICAL_INDEX     = NO
 
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
 # in which this list will be split (can be a number in the range [1..20])
 
 COLS_IN_ALPHA_INDEX    = 5
 
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
 # should be ignored while generating the index headers.
 
-IGNORE_PREFIX          = 
+IGNORE_PREFIX          =
 
 #---------------------------------------------------------------------------
 # configuration options related to the HTML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
 # generate HTML output.
 
 GENERATE_HTML          = YES
 
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `html' will be used as the default path.
 
 HTML_OUTPUT            = html
 
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
 # doxygen will generate files with .html extension.
 
 HTML_FILE_EXTENSION    = .html
 
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
 # standard header.
 
-HTML_HEADER            = 
+HTML_HEADER            =
 
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
 # standard footer.
 
-HTML_FOOTER            = 
+HTML_FOOTER            =
 
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
 # stylesheet in the HTML output directory as well, or it will be erased!
 
-HTML_STYLESHEET        = 
+HTML_STYLESHEET        =
 
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
 # NO a bullet list will be used.
 
 HTML_ALIGN_MEMBERS     = YES
 
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
 # of the generated HTML documentation.
 
 GENERATE_HTMLHELP      = NO
 
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
 # written to the html output directory.
 
-CHM_FILE               = 
+CHM_FILE               =
 
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
 # the HTML help compiler on the generated index.hhp.
 
-HHC_LOCATION           = 
+HHC_LOCATION           =
 
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
 # it should be included in the master .chm file (NO).
 
 GENERATE_CHI           = NO
 
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
 # normal table of contents (NO) in the .chm file.
 
 BINARY_TOC             = NO
 
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
 # to the contents of the HTML help documentation and to the tree view.
 
 TOC_EXPAND             = NO
 
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
 # the value YES disables it.
 
 DISABLE_INDEX          = NO
 
-# This tag can be used to set the number of enum values (range [1..20]) 
+# This tag can be used to set the number of enum values (range [1..20])
 # that doxygen will group on one line in the generated HTML documentation.
 
 ENUM_VALUES_PER_LINE   = 4
 
 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
 # probably better off using the HTML help feature.
 
 GENERATE_TREEVIEW      = yes
 
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
 # is shown.
 
 TREEVIEW_WIDTH         = 250
@@ -741,74 +741,74 @@ TREEVIEW_WIDTH         = 250
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
 # generate Latex output.
 
 GENERATE_LATEX         = NO
 
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `latex' will be used as the default path.
 
 LATEX_OUTPUT           = latex
 
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
 # invoked. If left blank `latex' will be used as the default command name.
 
 LATEX_CMD_NAME         = latex
 
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
 # default command name.
 
 MAKEINDEX_CMD_NAME     = makeindex
 
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
 # save some trees in general.
 
 COMPACT_LATEX          = NO
 
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
 # executive. If left blank a4wide will be used.
 
 PAPER_TYPE             = a4wide
 
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
 # packages that should be included in the LaTeX output.
 
-EXTRA_PACKAGES         = 
+EXTRA_PACKAGES         =
 
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
 # standard header. Notice: only use this tag if you know what you are doing!
 
-LATEX_HEADER           = 
+LATEX_HEADER           =
 
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
 # This makes the output suitable for online browsing using a pdf viewer.
 
 PDF_HYPERLINKS         = NO
 
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
 # higher quality PDF documentation.
 
 USE_PDFLATEX           = NO
 
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
 # This option is also used when generating formulas in HTML.
 
 LATEX_BATCHMODE        = NO
 
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
 # in the output.
 
 LATEX_HIDE_INDICES     = NO
@@ -817,68 +817,68 @@ LATEX_HIDE_INDICES     = NO
 # configuration options related to the RTF output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
 # other RTF readers or editors.
 
 GENERATE_RTF           = NO
 
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `rtf' will be used as the default path.
 
 RTF_OUTPUT             = rtf
 
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
 # save some trees in general.
 
 COMPACT_RTF            = NO
 
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
 # Note: wordpad (write) and others do not support links.
 
 RTF_HYPERLINKS         = NO
 
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
 # replacements, missing definitions are set to their default value.
 
-RTF_STYLESHEET_FILE    = 
+RTF_STYLESHEET_FILE    =
 
-# Set optional variables used in the generation of an rtf document. 
+# Set optional variables used in the generation of an rtf document.
 # Syntax is similar to doxygen's config file.
 
-RTF_EXTENSIONS_FILE    = 
+RTF_EXTENSIONS_FILE    =
 
 #---------------------------------------------------------------------------
 # configuration options related to the man page output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
 # generate man pages
 
 GENERATE_MAN           = NO
 
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `man' will be used as the default path.
 
 MAN_OUTPUT             = man
 
-# The MAN_EXTENSION tag determines the extension that is added to 
+# The MAN_EXTENSION tag determines the extension that is added to
 # the generated man pages (default is the subroutine's section .3)
 
 MAN_EXTENSION          = .3
 
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
 # would be unable to find the correct page. The default is NO.
 
 MAN_LINKS              = NO
@@ -887,33 +887,33 @@ MAN_LINKS              = NO
 # configuration options related to the XML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
 # the code including all documentation.
 
 GENERATE_XML           = NO
 
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `xml' will be used as the default path.
 
 XML_OUTPUT             = xml
 
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
 # syntax of the XML files.
 
-XML_SCHEMA             = 
+XML_SCHEMA             =
 
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
 # syntax of the XML files.
 
-XML_DTD                = 
+XML_DTD                =
 
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
 # enabling this will significantly increase the size of the XML output.
 
 XML_PROGRAMLISTING     = YES
@@ -922,10 +922,10 @@ XML_PROGRAMLISTING     = YES
 # configuration options for the AutoGen Definitions output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
 # and incomplete at the moment.
 
 GENERATE_AUTOGEN_DEF   = NO
@@ -934,319 +934,319 @@ GENERATE_AUTOGEN_DEF   = NO
 # configuration options related to the Perl module output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
 # moment.
 
 GENERATE_PERLMOD       = NO
 
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
 # to generate PDF and DVI output from the Perl module output.
 
 PERLMOD_LATEX          = NO
 
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.  This is useful
+# if you want to understand what is going on.  On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
 # and Perl will parse it just the same.
 
 PERLMOD_PRETTY         = YES
 
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
 # Makefile don't overwrite each other's variables.
 
-PERLMOD_MAKEVAR_PREFIX = 
+PERLMOD_MAKEVAR_PREFIX =
 
 #---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
+# Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
 # files.
 
 ENABLE_PREPROCESSING   = NO
 
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
 # way by setting EXPAND_ONLY_PREDEF to YES.
 
 MACRO_EXPANSION        = NO
 
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
 # PREDEFINED and EXPAND_AS_DEFINED tags.
 
 EXPAND_ONLY_PREDEF     = NO
 
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
 # in the INCLUDE_PATH (see below) will be search if a #include is found.
 
 SEARCH_INCLUDES        = YES
 
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
 # the preprocessor.
 
-INCLUDE_PATH           = 
+INCLUDE_PATH           =
 
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
 # be used.
 
-INCLUDE_FILE_PATTERNS  = 
+INCLUDE_FILE_PATTERNS  =
 
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
 # instead of the = operator.
 
-PREDEFINED             = 
+PREDEFINED             =
 
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
 # Use the PREDEFINED tag if you want to use a different macro definition.
 
-EXPAND_AS_DEFINED      = 
+EXPAND_AS_DEFINED      =
 
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
 # the parser if not removed.
 
 SKIP_FUNCTION_MACROS   = YES
 
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references   
+# Configuration::additions related to external references
 #---------------------------------------------------------------------------
 
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#   TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#   TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
 # does not have to be run to correct the links.
 # Note that each tag file must have a unique name
 # (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
+# If a tag file is not located in the directory in which doxygen
 # is run, you must also specify the path to the tagfile here.
 
-TAGFILES               = 
+TAGFILES               =
 
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
 # a tag file that is based on the input files it reads.
 
-GENERATE_TAGFILE       = 
+GENERATE_TAGFILE       =
 
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
 # will be listed.
 
 ALLEXTERNALS           = NO
 
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
 # be listed.
 
 EXTERNAL_GROUPS        = YES
 
-# The PERL_PATH should be the absolute path and name of the perl script 
+# The PERL_PATH should be the absolute path and name of the perl script
 # interpreter (i.e. the result of `which perl').
 
 PERL_PATH              = /usr/bin/perl
 
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
+# Configuration options related to the dot tool
 #---------------------------------------------------------------------------
 
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
 # powerful graphs.
 
 CLASS_DIAGRAMS         = YES
 
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
 # or is not a class.
 
 HIDE_UNDOC_RELATIONS   = YES
 
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
 # have no effect if this option is set to NO (the default)
 
 HAVE_DOT               = NO
 
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
 # the CLASS_DIAGRAMS tag to NO.
 
 CLASS_GRAPH            = YES
 
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
 # class references variables) of the class with other documented classes.
 
 COLLABORATION_GRAPH    = YES
 
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
 # will generate a graph for groups, showing the direct groups dependencies
 
 GROUP_GRAPHS           = YES
 
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
 # Language.
 
 UML_LOOK               = NO
 
-# If set to YES, the inheritance and collaboration graphs will show the 
+# If set to YES, the inheritance and collaboration graphs will show the
 # relations between templates and their instances.
 
 TEMPLATE_RELATIONS     = NO
 
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
 # other documented files.
 
 INCLUDE_GRAPH          = YES
 
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
 # indirectly include this file.
 
 INCLUDED_BY_GRAPH      = YES
 
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a call dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable call graphs for selected 
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
 # functions only using the \callgraph command.
 
 CALL_GRAPH             = NO
 
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a caller dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable caller graphs for selected 
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a caller dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
 # functions only using the \callergraph command.
 
 CALLER_GRAPH           = NO
 
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
 # will graphical hierarchy of all classes instead of a textual one.
 
 GRAPHICAL_HIERARCHY    = YES
 
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
 # in a graphical way. The dependency relations are determined by the #include
 # relations between the files in the directories.
 
 DIRECTORY_GRAPH        = YES
 
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
 # generated by dot. Possible values are png, jpg, or gif
 # If left blank png will be used.
 
 DOT_IMAGE_FORMAT       = png
 
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
 # found. If left blank, it is assumed the dot tool can be found in the path.
 
-DOT_PATH               = 
+DOT_PATH               =
 
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
 # \dotfile command).
 
-DOTFILE_DIRS           = 
+DOTFILE_DIRS           =
 
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
 # large images.
 
 MAX_DOT_GRAPH_WIDTH    = 1024
 
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
 # large images.
 
 MAX_DOT_GRAPH_HEIGHT   = 1024
 
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that a graph may be further truncated if the graph's 
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
 # the graph is not depth-constrained.
 
 MAX_DOT_GRAPH_DEPTH    = 0
 
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, which results in a white background. 
-# Warning: Depending on the platform used, enabling this option may lead to 
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
 # read).
 
 DOT_TRANSPARENT        = NO
 
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
 # support this, this feature is disabled by default.
 
 DOT_MULTI_TARGETS      = NO
 
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
 # arrows in the dot generated graphs.
 
 GENERATE_LEGEND        = YES
 
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
 # the various graphs.
 
 DOT_CLEANUP            = YES
 
 #---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
+# Configuration::additions related to the search engine
 #---------------------------------------------------------------------------
 
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# The SEARCHENGINE tag specifies whether or not a search engine should be
 # used. If set to NO the values of all tags below this one will be ignored.
 
 SEARCHENGINE           = NO
Index: color.generate.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/Attic/color.generate.inc,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 color.generate.inc
--- color.generate.inc	21 Sep 2008 09:35:25 -0000	1.1.2.4
+++ color.generate.inc	22 Oct 2008 04:10:33 -0000
@@ -1,10 +1,11 @@
 <?php
 // $Id: color.generate.inc,v 1.1.2.4 2008/09/21 09:35:25 skiquel Exp $
+
 /**
  * @file
  * Function to generate schemes
  */
- 
+
 /**
  * Generate a new scheme, including stylesheet(s) and image(s).
  * Also updates {color_scheme} row generated earlier (immediately after
@@ -22,7 +23,7 @@
  *   Optional string, for modifying scheme name.
  */
 function color_generate_scheme_files(&$scheme, $theme) {
-  module_load_include('inc', 'color', 'color.database');  
+  module_load_include('inc', 'color', 'color.database');
   module_load_include('inc', 'color', 'color.misc');
   module_load_include('inc', 'color', 'color.stylesheet');
 
@@ -52,7 +53,7 @@ function color_generate_scheme_files(&$s
     foreach ($theme['copy'] as $file) {
       $base = basename($file);
       $source = $paths['source'] . $file;
-      
+
       file_copy($source, $paths['target'] . $base);
       $paths['map'][$file] = $base;
       $paths['files'][] = $paths['target'] . $base;
@@ -110,7 +111,7 @@ function color_generate_scheme_files(&$s
       break;
     }
   }
-    
+
   foreach ($paths['map'] as $img => $val) {
     if (strpos('logo.png', $val) !== FALSE) {
       $logo = $val;
@@ -125,9 +126,9 @@ function color_generate_scheme_files(&$s
   else {
     $scheme['logo'] = $paths['source'] . "logo.png";
   }
-  
+
   $scheme['stylesheets'] = $css;
   $scheme['images'] = $paths['images'];
   $scheme['path'] = $paths['target'];
-  
+
 }
\ No newline at end of file
Index: color.image.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.image.inc,v
retrieving revision 1.4.2.10
diff -u -p -r1.4.2.10 color.image.inc
--- color.image.inc	2 Oct 2008 01:57:39 -0000	1.4.2.10
+++ color.image.inc	22 Oct 2008 04:10:33 -0000
@@ -1,10 +1,11 @@
 <?php
 // $Id: color.image.inc,v 1.4.2.10 2008/10/02 01:57:39 skiquel Exp $
+
 /**
  * @file
  * Provides image manipulation functions
  */
- 
+
 /**
  * Generate images
  *
@@ -44,13 +45,13 @@ function _color_render_images($theme, &$
 
         $colors_pre = array_slice($fill, 5);
         $colors = array();
-        
+
         foreach ($colors_pre as $key) {
           if (isset($palette[$key])) {
             $colors[] = $palette[$key];
           }
         }
-        
+
         module_load_include('inc', 'color', 'extend/fill/' . $type);
         $type = str_replace('-', '_', $type);
         if (function_exists('_color_extend_fill_' . $type) == TRUE) {
@@ -87,7 +88,7 @@ function _color_render_images($theme, &$
 
       // Save image.
       if (isset($img['transparent color']) && !empty($img['transparent color'])) {
-        imagecolortransparent($slice, $black); 
+        imagecolortransparent($slice, $black);
       }
       imagepng($slice, $image);
       imagedestroy($slice);
@@ -103,6 +104,6 @@ function _color_render_images($theme, &$
     // Clean up target buffer.
     imagedestroy($target);
   }
-  
+
 //  $paths += $paths;
 }
\ No newline at end of file
Index: color.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.info,v
retrieving revision 1.2.2.1
diff -u -p -r1.2.2.1 color.info
--- color.info	28 Aug 2008 13:05:28 -0000	1.2.2.1
+++ color.info	22 Oct 2008 04:10:33 -0000
@@ -1,6 +1,6 @@
 ; $Id: color.info,v 1.2.2.1 2008/08/28 13:05:28 skiquel Exp $
+
 name = Color
 description = Allows the user to change the color scheme of certain themes.
 package = Core - optional
-version = VERSION
 core = 6.x
Index: color.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.install,v
retrieving revision 1.10.2.8
diff -u -p -r1.10.2.8 color.install
--- color.install	2 Oct 2008 01:57:39 -0000	1.10.2.8
+++ color.install	22 Oct 2008 04:10:33 -0000
@@ -1,6 +1,6 @@
 <?php
 // $Id: color.install,v 1.10.2.8 2008/10/02 01:57:39 skiquel Exp $
- 
+
 function color_requirements($phase) {
   $requirements = array();
 
@@ -51,7 +51,7 @@ function color_install() {
  */
 function color_uninstall() {
   drupal_uninstall_schema('color', 'color_schemes');
-  
+
   module_load_include('inc', 'color', 'color.misc');
   $themes = color_list_colorable_themes(TRUE);
   foreach ($themes as $theme) {
@@ -63,7 +63,7 @@ function color_uninstall() {
   variable_del('color_inc_scheme_snippet');
   variable_del('color_inc_validator');
   variable_del('color_modify_premade_schemes');
-    
+
   color_rm_dir(file_directory_path() .'/color');
 }
 
@@ -152,7 +152,7 @@ function color_schema() {
       'idname' => array('name'),
     ),
   );
-  
+
   $schema['color_schemes'] = array(
     'description' => t('Stores the actual color schemes'),
     'fields' => array(
Index: color.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.js,v
retrieving revision 1.2.2.5
diff -u -p -r1.2.2.5 color.js
--- color.js	29 Aug 2008 19:11:28 -0000	1.2.2.5
+++ color.js	22 Oct 2008 04:10:34 -0000
@@ -44,7 +44,7 @@ Drupal.behaviors.color = function(contex
     $(this).keyup(colorPicker.farb.updateValue).keyup(resetScheme)
       .parent().addClass('item-selected');
   };
-  
+
   var colorSchemeSelect = function () {
     var colors = this.options[this.selectedIndex].value;
     //alert(colors);
@@ -55,14 +55,14 @@ Drupal.behaviors.color = function(contex
       }
     }
   };
-  
+
   var schemeSelector = function () {
     // Extract palette field name
     this.key = this.id.substring(13);
 
     // Link to color picker temporarily to initialize.
     colorPicker.farb.linkTo(function () {}).setColor('#000').linkTo(this);
-    
+
     var i = colorPicker.inputs.length;
 
     // Add lock
@@ -87,7 +87,7 @@ Drupal.behaviors.color = function(contex
           );
         }
       );
-      
+
       var la = $(this);
       $('#palette:not(.locks-processed)').each(function() {
         // alert('1');
@@ -97,16 +97,16 @@ Drupal.behaviors.color = function(contex
       });
 
     };
-    
-  
+
+
 
     var hook = $('<div class="hook"></div>');
     var la = $(this);
     $('#palette:not(.hooks-processed)').each(function() {
       $(la).after(hook);
     });
-    
-    $(la).parent().find('.lock').click(); 
+
+    $(la).parent().find('.lock').click();
 
     colorPicker.hooks.push(hook);
     colorPicker.hook = hook;
@@ -118,8 +118,8 @@ Drupal.behaviors.color = function(contex
   var getLength = function (variable) {
     return variable.length;
   };
-  
-  var callback = function (input, color, propagate, colorscheme) {    
+
+  var callback = function (input, color, propagate, colorscheme) {
     if (color === "") {
       $(input).css("background-color", 'gray').css("color", "black").attr('disabled',true).val('None');
     }
@@ -130,7 +130,7 @@ Drupal.behaviors.color = function(contex
         'color': colorPicker.farb.RGBToHSL(colorPicker.farb.unpack(color))[2] > 0.5 ? '#000' : '#fff'
       }).attr('disabled',false);
 
-  
+
       // Change input value
       if (input.value && input.value != color) {
         input.value = color;
@@ -220,14 +220,14 @@ Drupal.behaviors.color = function(contex
   $('#color-scheme-wrapper .color-form:not(.color-processed)').each(function () {
     $(colorPicker.form).prepend('<div id="placeholder"></div>');
     colorPicker.farb = $.farbtastic('#placeholder');
-    
+
     // Decode reference colors to HSL
     colorPicker.reference = Drupal.settings.color.reference;
     for (i in colorPicker.reference) {
       colorPicker.reference[i] = colorPicker.farb.RGBToHSL(colorPicker.farb.unpack(colorPicker.reference[i]));
     }
     Drupal.settings.color.reference = colorPicker.reference;
-  
+
   });
 
   $('#color-scheme-wrapper .color-form:not(.color-processed)').addClass('color-processed').each(function() {
@@ -235,9 +235,9 @@ Drupal.behaviors.color = function(contex
     .each(schemeSelector).focus(focus);
     $('#palette:not(.locks-processed)').addClass('locks-processed');
     $('#palette:not(.hooks-processed)').addClass('hooks-processed');
-    
+
     $('#palette label', colorPicker.form).focus;
-    
+
     focus.call(colorPicker.inputs[0]);
   });
 
@@ -258,9 +258,9 @@ Drupal.behaviors.color = function(contex
 
   $('#selectsuggestedcolors').change(function() {
     colorPicker.farb.updateCompatibleColors();
-    
+
   });
-    
+
   $('#darken').click(function(){
     colorPicker.hslColor = colorPicker.farb.hsl;
     var h = colorPicker.hslColor[0], s = colorPicker.hslColor[1], l = colorPicker.hslColor[2];
@@ -272,8 +272,8 @@ Drupal.behaviors.color = function(contex
     return false;
 
   });
-  
-  
+
+
   $('#lighten').click(function(){
     colorPicker.hslColor = colorPicker.farb.hsl;
     var h = colorPicker.hslColor[0], s = colorPicker.hslColor[1], l = colorPicker.hslColor[2];
@@ -285,7 +285,7 @@ Drupal.behaviors.color = function(contex
     return false;
 
   });
-  
+
   $('#randomize').click(function(){
     colorPicker.hslColor = colorPicker.farb.hsl;
     var h = colorPicker.hslColor[0], s = colorPicker.hslColor[1], l = colorPicker.hslColor[2];
@@ -295,17 +295,17 @@ Drupal.behaviors.color = function(contex
     // l is luminosity, up to down, 1 to 0 on square. .25 to .75
     l = (.25 + (.50)*Math.random());
     //alert(s);
-    
+
     colorPicker.hex = colorPicker.farb.HSLToHex([Math.random(),s,l]);
     colorPicker.farb.setColor(colorPicker.hex);
     return false;
 
   });
-  
+
   $('#reset').click(function(){
     colorPicker.reference = Drupal.settings.color.reference;
-    
-    
+
+
     for (i in colorPicker.reference) {
       var resetInputs = colorPicker.inputs;
       resetInputs.pop(input);
Index: color.misc.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.misc.inc,v
retrieving revision 1.5.2.11
diff -u -p -r1.5.2.11 color.misc.inc
--- color.misc.inc	2 Oct 2008 01:57:39 -0000	1.5.2.11
+++ color.misc.inc	22 Oct 2008 04:10:34 -0000
@@ -10,7 +10,7 @@ function color_array_combine($keys, $val
   //$vals = array_values($vals);
 
   $combined = array();
-  foreach ($keys as $key) { 
+  foreach ($keys as $key) {
     $combined[$key] = array_shift($vals);
   }
 
@@ -29,18 +29,18 @@ function color_compatible($theme_name) {
   $path = drupal_get_path('theme', $theme_name);
   $file = $path .'/template.php';
   if ($path && file_exists($file)) {
-	  	include_once $file;
-			if (function_exists($theme_name . '_color')) {
-				$static[$theme_name] = TRUE;
-			}
-			else {
-				$static[$theme_name] = FALSE;
-			}
+    include_once $file;
+    if (function_exists($theme_name . '_color')) {
+      $static[$theme_name] = TRUE;
+    }
+    else {
+      $static[$theme_name] = FALSE;
+    }
   }
   else {
       $static[$theme_name] = FALSE;
   }
-  
+
   return $static[$theme_name];
 }
 
@@ -64,7 +64,7 @@ function color_list_colorable_themes($re
   else {
     $lthemes = color_list_themes($refresh);
   }
-  
+
   foreach ($lthemes as $theme) {
     if (color_compatible($theme->name)) {
       $themes[$theme->name] = $theme;
@@ -81,7 +81,7 @@ function color_list_colorable_themes($re
  * @param $theme
  *  Optional string for theme name
  */
-function color_rm_dir($directory, $theme = NULL) {           
+function color_rm_dir($directory, $theme = NULL) {
   if (is_dir($directory)) {
     $directory = (substr($directory, -1) != "/") ? $directory."/" : $directory;
     $open_dir = opendir($directory);
@@ -108,8 +108,8 @@ function color_rm_dir($directory, $theme
  *   Normalizing string.
  */
 function color_normalize($string) {
-   $string = preg_replace('~[^a-z0-9._]+~', '-', drupal_strtolower($string));
-   return $string;
+  $string = preg_replace('~[^a-z0-9._]+~', '-', drupal_strtolower($string));
+  return $string;
 }
 
 /**
@@ -123,7 +123,7 @@ function color_normalize($string) {
 function color_validate($info) {
   $validated = TRUE;
   $theme = $info['theme'];
-  
+
   // Is 'options' set?
   if (isset($info['engine'])) {
     // Are any of the two engine options set?
@@ -131,8 +131,7 @@ function color_validate($info) {
       drupal_set_message("(".$theme.") info[engine]: missing 'shift' and/or 'tag' option.", 'error');
       $validated = FALSE;
     }
-    
-    
+
     // Catch common color.inc error. Not referencing 'shift' mode when base/link/text option stated.
     if (isset($info['engine']['shift']) && array_search('base', $info['engine']['shift']) !== FALSE && array_search('base-only', $info['engine']['shift']) !== FALSE) {
       drupal_set_message("(".$theme.") info[engine][shift]: missing 'base' or 'base-only' option", 'error');
@@ -142,7 +141,7 @@ function color_validate($info) {
     drupal_set_message("(".$theme.") info[engine]: missing.", 'error');
     $validated = FALSE;
   }
-  
+
   if (isset($info['fields'])) {
     $fieldcount = count($info['fields']);
   }
@@ -159,11 +158,11 @@ function color_validate($info) {
       }
     }
     else {
-        drupal_set_message("(".$theme.") info[blend target]: missing.", 'error');
-        $validated = FALSE;
+      drupal_set_message("(".$theme.") info[blend target]: missing.", 'error');
+      $validated = FALSE;
     }
   }
-  
+
   if (isset($info['default scheme'])) {
     if (array_search($info['default scheme'], array_keys($info['schemes'])) === FALSE) {
       $validated = FALSE;
@@ -171,10 +170,10 @@ function color_validate($info) {
     }
   }
   else {
-      drupal_set_message("(".$theme.") info[default scheme]: missing.", 'error');
-      $validated = FALSE;
+    drupal_set_message("(".$theme.") info[default scheme]: missing.", 'error');
+    $validated = FALSE;
   }
-  
+
   if (isset($info['engine']['shift']) && (array_search('base', $info['engine']['shift']) !== FALSE || array_search('base-only', $info['engine']['shift']) !== FALSE)) {
     if (isset($info['reference scheme'])) {
       if (array_search($info['reference scheme'], array_keys($info['schemes'])) === FALSE) {
@@ -183,14 +182,14 @@ function color_validate($info) {
       }
     }
     else {
-        drupal_set_message("(".$theme.") info[reference scheme]: missing.", 'error');
-        $validated = FALSE;
+      drupal_set_message("(".$theme.") info[reference scheme]: missing.", 'error');
+      $validated = FALSE;
     }
   }
-    
+
   if (isset($info['schemes'])) {
     if (isset($info['engine']['shift']) && array_search('base-only', $info['engine']['shift']) === FALSE) {
-      foreach ($info['schemes'] as $key => $v) {      
+      foreach ($info['schemes'] as $key => $v) {
         $commas = count($v);
         foreach ($v as $num => $hex) {
           if (!isset($hex) || empty($hex)) {
@@ -208,15 +207,15 @@ function color_validate($info) {
     }
   }
   elseif (!isset($info['schemes'])) {
-      drupal_set_message("(".$theme.") info[schemes]: missing.", 'error');
-      $validated = FALSE;
+    drupal_set_message("(".$theme.") info[schemes]: missing.", 'error');
+    $validated = FALSE;
   }
   else {
 
   }
-  
+
   if (isset($info['css'])) {
-    foreach ($info['css'] as $val) {    
+    foreach ($info['css'] as $val) {
       // Check for file
       if (!isset($val)) {
         $validated = FALSE;
@@ -232,11 +231,11 @@ function color_validate($info) {
       }
     }
   }
-  
+
   if (isset($info['image'])) {
     // Move through $info['image'] array
     foreach ($info['image'] as $key => $val) {
-      
+
       // Check for file
       if (!isset($val['file'])) {
         $validated = FALSE;
@@ -250,7 +249,7 @@ function color_validate($info) {
             drupal_set_message("(".$theme.") info[img][{$key}][file] - File does not exist.", 'error');
         }
       }
-      
+
       // Fill
       if (isset($val['fill'])) {
         foreach ($val['fill'] as $fill) {
@@ -261,7 +260,7 @@ function color_validate($info) {
           }
         }
       }
-      
+
       // Gradient
       if (isset($val['gradient'])) {
         foreach ($val['gradient'] as $gradient) {
@@ -278,21 +277,21 @@ function color_validate($info) {
       }
     }
   }
-  return $validated;  
+  return $validated;
 }
 
 function color_get_color_hook($theme_name) {
-	$path = drupal_get_path('theme', $theme_name);
+  $path = drupal_get_path('theme', $theme_name);
   $file = $path .'/template.php';
   if ($path && file_exists($file)) {
     include_once $file;
-		if (function_exists($theme_name . '_color')) {
-	    $color = call_user_func($theme_name . '_color');
-		}
-  }
-	else {
-		$color = FALSE;
-	}
+    if (function_exists($theme_name . '_color')) {
+      $color = call_user_func($theme_name . '_color');
+    }
+  }
+  else {
+    $color = FALSE;
+  }
 
-	return $color;
+  return $color;
 }
\ No newline at end of file
Index: color.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.module,v
retrieving revision 1.18.2.27
diff -u -p -r1.18.2.27 color.module
--- color.module	2 Oct 2008 01:57:39 -0000	1.18.2.27
+++ color.module	22 Oct 2008 04:10:34 -0000
@@ -1,14 +1,15 @@
 <?php
 // $Id: color.module,v 1.18.2.27 2008/10/02 01:57:39 skiquel Exp $
+
 /**
  * @file
  * Allows webmasters and themers to create color-customizeable themes.
  * Opens up color API calls
  */
- 
+
 /**
  * Implementation of hook_help().
- */                                                                                                                                                                                                                                                                               
+ */
 function color_help($path, $arg) {
   switch ($path) {
     case 'admin/help#color':
@@ -31,12 +32,12 @@ function color_theme() {
     'color_edit_scheme_form' => array(
       'arguments' => array('form' => NULL),
     ),
-	  'color_settings_colorable' => array(
-	    'arguments' => array('form' => NULL),
-	  ),
-		'color_settings_extensions' => array(
-		  'arguments' => array('extensions' => NULL),
-		),
+    'color_settings_colorable' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'color_settings_extensions' => array(
+      'arguments' => array('extensions' => NULL),
+    ),
   );
 }
 
@@ -63,29 +64,29 @@ function color_menu() {
     'title' => t('Color schemes settings'),
     'description' =>  t('Configure color schemes settings'),
   );
-	$items['admin/settings/schemes/extensions'] = array(
-	  'page callback' => 'color_settings_extensions',
-	  'access arguments' => array('administer site configuration'),
-	  'title' => t('Extensions'),
-	  'description' =>  t('Add-ons for color.module'),
-	  'type' => MENU_LOCAL_TASK,
-	);
-	// We may want to keep this as a dev feature.
-	$items['admin/settings/schemes/colorable'] = array(
-	  'page callback' => 'color_settings_extensions',
-	  'access arguments' => array('administer site configuration'),
-	  'title' => t('Colorable'),
-	  'description' =>  t('Colorable theme elements, themes, modules, and stylesheets.'),
-	  'type' => MENU_LOCAL_TASK,
-	);
-	$items['admin/settings/schemes/list'] = array(
-	  'title' => t('Settings'),
-	  'type' => MENU_DEFAULT_LOCAL_TASK,
-	  'weight' => -10,
-	);
+  $items['admin/settings/schemes/extensions'] = array(
+    'page callback' => 'color_settings_extensions',
+    'access arguments' => array('administer site configuration'),
+    'title' => t('Extensions'),
+    'description' =>  t('Add-ons for color.module'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  // We may want to keep this as a dev feature.
+  $items['admin/settings/schemes/colorable'] = array(
+    'page callback' => 'color_settings_extensions',
+    'access arguments' => array('administer site configuration'),
+    'title' => t('Colorable'),
+    'description' =>  t('Colorable theme elements, themes, modules, and stylesheets.'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/settings/schemes/list'] = array(
+    'title' => t('Settings'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
   foreach (color_list_themes() as $theme) {
     $items['admin/build/themes/settings/'. $theme->name .'/%'] = array(
-      'page callback' => 'color_op', 
+      'page callback' => 'color_op',
       'page arguments' => array(4, 5),
       'title callback' => 'color_get_title',
       'title arguments' => array(5),
@@ -104,17 +105,15 @@ function _color_page_alter(&$vars) {
   $uid = $user->uid;
 
   module_load_include('inc', 'color', 'color.algorithms');
-  
+
   if (variable_get('theme_color_'. $theme_key, 0) == 0) {
     return;
   }
 
-	$scheme = array();
-	$theme = array();
+  $scheme = array();
+  $theme = array();
 
-  /**
-   *  Get the correct theme
-   */
+  // Get the correct theme
   if (isset($theme_key)) {
     $theme['name'] = $theme_key;
   }
@@ -124,10 +123,8 @@ function _color_page_alter(&$vars) {
   else {
     $theme['name'] = empty($vars['user']->theme) ? variable_get('theme_default', 'garland') : $vars['user']->theme;
   }
-  
-  /**
-   *  Get the correct scheme ID
-   */
+
+  // Get the correct scheme ID
   if ($uid == 0 && $_SESSION['scheme_id'] && module_exists('color_user')) {
     $scheme['id'] = $_SESSION['scheme_id'];
   }
@@ -147,13 +144,13 @@ function _color_page_alter(&$vars) {
     }
   }
 
-	// Include our database so we can check if data is valid and pull.
+  // Include our database so we can check if data is valid and pull.
   module_load_include('inc', 'color', 'color.database');
 
   if (!color_scheme_id_valid($scheme['id'], $theme['name'])) {
-    $scheme['id'] = db_result(db_query("SELECT `default scheme` FROM {color} WHERE `name` = '%s'", $theme['name']));
+    $scheme['id'] = db_result(db_query("SELECT `default scheme` FROM {color} WHERE name = '%s'", $theme['name']));
   }
-  
+
   if (isset($preview_scheme)) {
     color_get_preview($theme, $scheme);
   }
@@ -202,7 +199,7 @@ function _color_page_alter(&$vars) {
     $vars['css']['all']['theme'] = $new_theme_css;
     $vars['styles'] = drupal_get_css($vars['css']);
   }
-  
+
   // Override logo.
   if ($logo && $vars['logo'] && preg_match('!'. $theme_key .'/logo.png$!', $vars['logo'])) {
     if (file_exists($_SERVER["DOCUMENT_ROOT"] . base_path() . $logo)) {
@@ -221,7 +218,7 @@ function color_form_alter(&$form, $form_
   // Insert the color changer into the theme settings page.
   if ($form_id == 'system_theme_settings' && arg(4) && color_compatible(arg(4)) && function_exists('gd_info')) {
     module_load_include('inc', 'color', 'color.database');
-    
+
     if (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) != FILE_DOWNLOADS_PUBLIC) {
       // Disables the color changer when the private download method is used.
       // TODO: This should be solved in a different way. See issue #181003.
@@ -240,7 +237,7 @@ function color_form_alter(&$form, $form_
       $form['#submit'][] = 'color_scheme_form_submit';
     }
   }
-  
+
   // For admin/build/themes
   if ($form_id == 'system_themes_form') {
     $themes = color_list_colorable_themes(TRUE);
@@ -253,7 +250,7 @@ function color_form_alter(&$form, $form_
       }
     }
   }
-  
+
 }
 
 /**
@@ -267,7 +264,7 @@ function color_scheme_form(&$form_state,
     '#prefix' => '<div id="color-scheme-wrapper">',
     '#suffix' => '</div>',
   );
-    
+
   if (variable_get('theme_color_'. $theme, 0) == 0) {
     if (variable_get('theme_color_'. $theme .'_generated', 0) == 0) {
       $form['generate'] = array(
@@ -282,7 +279,7 @@ function color_scheme_form(&$form_state,
         '#type' => 'item',
         '#value' => $toggle,
         '#tree' => FALSE,
-      ); 
+      );
       $form['purge'] = array(
         '#type' => 'item',
         '#value' => "You still have leftover schemes. " . l('Free up space', 'admin/build/themes/settings/' . $theme . '/purge') . '.',
@@ -304,21 +301,21 @@ function color_scheme_form(&$form_state,
       '#default_value' => $current,
     );
 
-    $form['default'] = array( 
+    $form['default'] = array(
       '#type' => 'submit',
       '#value' => t('Make default'),
     );
 
-    $form['modify'] = array( 
+    $form['modify'] = array(
       '#type' => 'submit',
       '#value' => t('Modify'),
     );
 
-    $form['create_scheme'] = array( 
+    $form['create_scheme'] = array(
       '#type' => 'submit',
       '#value' => t('Create scheme'),
     );
-    
+
     $form['scheme_settings'] = array(
       '#type' => 'fieldset',
       '#tree' => TRUE,
@@ -326,27 +323,27 @@ function color_scheme_form(&$form_state,
       '#prefix' => '<div id="scheme-settings-wrapper">',
       '#suffix' => '</div>',
     );
-    
+
     $form['scheme_settings']['toggle_color'] = array(
       '#type' => 'item',
       '#value' => t("Color service for this theme is <strong>on</strong>. ". l('Disable', 'admin/build/themes/settings/' . $theme['name'] . '/disable_color') . '.'),
       '#tree' => FALSE,
     );
 
-		$color = color_get_color_hook($theme['name']);
-    
+    $color = color_get_color_hook($theme['name']);
+
     if (variable_get('color_hook_preview', 0) == 1) {
-  
+
       $form['color-inc-scheme-wrapper'] = array(
-        '#type' => 'fieldset',    
+        '#type' => 'fieldset',
         '#prefix' => '<div id="color-inc-wrapper">',
         '#suffix' => '</div>',
         '#weight' => -5,
         '#title' => t('Color.inc viewer (for theme developers)'),
-        '#description' => t('Allows demo users to see the theme\'s color.inc.'),
+        '#description' => t("Allows demo users to see the theme's color.inc."),
       );
-  
-      $form['color-inc-scheme-wrapper']['textfield'] = array( 
+
+      $form['color-inc-scheme-wrapper']['textfield'] = array(
         '#type' => 'textarea',
         '#default_value' => $color,
       );
@@ -363,7 +360,7 @@ function color_scheme_form(&$form_state,
  * @ingroup @themeable
  */
 function theme_color_scheme_form($form) {
-   $base = drupal_get_path('module', 'color');
+  $base = drupal_get_path('module', 'color');
   drupal_add_css($base .'/color.css', 'module', 'all', TRUE);
 }
 
@@ -384,12 +381,12 @@ function color_scheme_form_submit($form,
     return;
   }
   elseif ($form_state['clicked_button']['#id'] == "edit-default") {
-    db_query('UPDATE {color} SET `default scheme` = \'%s\' WHERE id = \'%s\'', $scheme_id, $theme['id']);
+    db_query("UPDATE {color} SET `default scheme` = '%s' WHERE id = '%s'", $scheme_id, $theme['id']);
   }
   elseif ($form_state['clicked_button']['#id'] == "edit-create-scheme") {
     drupal_goto('admin/build/themes/settings/' . $theme['name'] . '/create_scheme/' . $scheme_id);
   }
-  
+
 }
 
 /**
@@ -404,7 +401,7 @@ function color_edit_scheme_form() {
   $scheme_id = arg(5);
 
   module_load_include('inc', 'color', 'color.database');
-  
+
   $custom_scheme = $scheme_id;
   $custom_theme = $theme;
 
@@ -415,7 +412,7 @@ function color_edit_scheme_form() {
 
   $base = drupal_get_path('module', 'color');
   color_get_theme($theme);
-  
+
   // Add Farbtastic color picker
   drupal_add_css('misc/farbtastic/farbtastic.css', 'module', 'all', FALSE);
   drupal_add_js($base .'/farbtastic.js');
@@ -425,7 +422,7 @@ function color_edit_scheme_form() {
   drupal_add_js($base .'/color.js');
 
   init_theme();
-  
+
   $reference = color_array_combine($theme['fields'], $theme['reference scheme']['hex']);
   $scheme['id'] = $scheme_id;
   if (arg(6) == "preview") {
@@ -442,7 +439,7 @@ function color_edit_scheme_form() {
     $scheme_name = "Scheme name";
     $scheme['name'] = $scheme_name;
   }
-  else if ($scheme = color_get_scheme($scheme_id, TRUE)) { 
+  else if ($scheme = color_get_scheme($scheme_id, TRUE)) {
     $palette = $scheme['hex'];
     $palette = color_array_combine($theme['fields'], $palette);
     // status of 0 is pre-made, status of 1 is admin-made
@@ -456,7 +453,7 @@ function color_edit_scheme_form() {
   drupal_add_js(array('color' => array(
     'reference' => $palette,
   )), 'setting');
-  
+
   $breadcrumb = drupal_get_breadcrumb();
   $breadcrumb[] = l(ucfirst($theme['name']), 'admin/build/themes/settings/' . $theme['name']);
   if ($scheme_name == "Scheme name") { // if new scheme form showing
@@ -466,9 +463,9 @@ function color_edit_scheme_form() {
     $breadcrumb[] = $scheme_name . " (Scheme)";
   }
   drupal_set_breadcrumb($breadcrumb);
-    
+
   $current = $theme['default scheme']['id'];
-  
+
   $form = array(
     '#weight' => -1,
     '#prefix' => '<div id="color-scheme-wrapper">',
@@ -476,7 +473,7 @@ function color_edit_scheme_form() {
     '#tree' => TRUE,
     '#theme' => 'color_edit_scheme_form',
   );
- 
+
   $alter_links = "<a href=\"#\" id=\"darken\">darken</a> | <a href=\"#\" id=\"lighten\">lighten</a> | <a href=\"#\" id=\"randomize\">randomize</a>";
 
   $path = drupal_get_path('theme', $theme['name']) .'/';
@@ -491,7 +488,7 @@ function color_edit_scheme_form() {
     '#value' => $alter_links,
     '#type' => "item",
   );
-  
+
   if (variable_get('color_inc_scheme_snippet', 0) == 1) {
     $form['color_scheme_output'] = array(
       '#title' => 'Color.inc input (Theme developers)',
@@ -499,20 +496,20 @@ function color_edit_scheme_form() {
       '#value' => "'" . $scheme_name. "' => '" . implode(',', array_values($palette)) . "',",
     );
   }
-  
+
   $form['options'] = array(
     '#tree' => TRUE,
     '#prefix' => '<div id="options-scheme-wrapper">',
     '#suffix' => '</div>',
   );
-  
+
   $form['options']['save'] = array(
     '#tree' => TRUE,
     '#prefix' => '<div id="save-scheme-wrapper">',
     '#suffix' => '</div>',
   );
-  
-  $form['options']['save']['button'] = array( 
+
+  $form['options']['save']['button'] = array(
     '#type' => 'submit',
     '#value' => t('Save'),
   );
@@ -523,11 +520,11 @@ function color_edit_scheme_form() {
     '#suffix' => '</div>',
   );
 
-  $form['options']['preview']['button'] = array( 
+  $form['options']['preview']['button'] = array(
     '#type' => 'submit',
     '#value' => t('Preview'),
   );
-  
+
   if (arg(6) == "preview") {
     $form['options']['cancel'] = array(
       '#tree' => TRUE,
@@ -535,12 +532,12 @@ function color_edit_scheme_form() {
       '#suffix' => '</div>',
     );
 
-    $form['options']['cancel']['button'] = array( 
+    $form['options']['cancel']['button'] = array(
       '#type' => 'submit',
       '#value' => t('Cancel'),
     );
   }
-  
+
   if (isset($status) && $status == 0 && variable_get('color_modify_premade_schemes', 0) == 0) {
     $form['options']['save']['button']['#disabled'] = TRUE;
     $form['notice'] = array(
@@ -555,17 +552,17 @@ function color_edit_scheme_form() {
       '#suffix' => '</div>',
     );
 
-    $form['options']['default']['button'] = array( 
+    $form['options']['default']['button'] = array(
       '#type' => 'submit',
       '#value' => t('Make default'),
     );
-    
+
     $form['options']['delete'] = array(
       '#tree' => TRUE,
       '#prefix' => '<div id="delete-scheme-wrapper">',
       '#suffix' => '</div>',
     );
-    $form['options']['delete']['button'] = array( 
+    $form['options']['delete']['button'] = array(
       '#type' => 'submit',
       '#value' => t('Delete'),
     );
@@ -590,7 +587,7 @@ function color_edit_scheme_form() {
   );
   foreach ($palette as $name => $value) {
     if (!$value) {
-      drupal_set_message('The colors set in the scheme in the color.inc file doesn\'t correspond with the number of fields.', 'status', FALSE);
+      drupal_set_message("The colors set in the scheme in the color.inc file doesn't correspond with the number of fields.", 'status', FALSE);
     }
     $form['palette'][$name] = array(
       '#type' => 'textfield',
@@ -607,7 +604,7 @@ function color_edit_scheme_form() {
   $form['scheme_data'] = array('#type' => 'hidden', '#value' => serialize($scheme));
   $form['scheme_id'] = array('#type' => 'hidden', '#value' => arg(5));
   $form['theme_data'] = array('#type' => 'hidden', '#value' => serialize($theme));
-  
+
   return $form;
 }
 
@@ -618,16 +615,16 @@ function color_edit_scheme_form() {
  */
  function theme_color_edit_scheme_form($form) {
 
-  // Include stylesheet  
+  // Include stylesheet
   $theme = unserialize($form['theme_data']['#value']);
   $path = drupal_get_path('theme', $theme['name']) .'/';
   drupal_add_css($path . $info['preview']['css']);
   $output = '';
 
   $output .= '<div class="color-form clear-block">';
-  
+
   $output .= '<div id="edit-left-sidebar-wrapper">';
-  $output .= drupal_render($form['scheme_name']);  
+  $output .= drupal_render($form['scheme_name']);
   $output .= drupal_render($form['palette']);
   $output .= drupal_render($form['alter_input']);
   $output .= '</div>';
@@ -635,33 +632,32 @@ function color_edit_scheme_form() {
   $output .= '
   <div style="clear: both">
     <div style="width: 250px; float: left">
-    <fieldset> <legend>Compatible colors</legend> 
-    	<select id="selectsuggestedcolors">
-  			<option value="analogous">Analogous</option>
-  			<option value="complementary">Complementary</option>
-  			<option value="triadic">Triadic</option>
-  			<option value="tetradic">Tetradic</option>
-  			<option value="neutral">Neutral</option>
-  			<option value="split-complementary">Split-complementary</option>
-  			<option value="clash">Clash</option>
-  			<option value="four-tone">Four-tone</option>
-  			<option value="five-tone">Five-tone</option>
-  			<option value="six-tone">Six-tone</option>
-
-  		</select>
-  		<div id="suggestedcolors"></div>
-      <div class="description" style="font-size: 75%">Whip out some <a href="http://www.colormatters.com/colortheory.html">color theory</a> kung-fu.</div>
-    </fieldset>
-  </div>
+      <fieldset> <legend>Compatible colors</legend>
+        <select id="selectsuggestedcolors">
+          <option value="analogous">Analogous</option>
+          <option value="complementary">Complementary</option>
+          <option value="triadic">Triadic</option>
+          <option value="tetradic">Tetradic</option>
+          <option value="neutral">Neutral</option>
+          <option value="split-complementary">Split-complementary</option>
+          <option value="clash">Clash</option>
+          <option value="four-tone">Four-tone</option>
+          <option value="five-tone">Five-tone</option>
+          <option value="six-tone">Six-tone</option>
+        </select>
+        <div id="suggestedcolors"></div>
+        <div class="description" style="font-size: 75%">Whip out some <a href="http://www.colormatters.com/colortheory.html">color theory</a> kung-fu.</div>
+      </fieldset>
+    </div>
 
     <div style="width: 250px; float: left">
       <fieldset>
-        <legend>Color History</legend> 
+        <legend>Color History</legend>
         <div id="prevcolors"></div>
         <div class="description" style="font-size: 75%">Tip: You can also select an input field and hold down Ctrl-Z or Command-Z to undo. Likewise for redo.</div>
       </fieldset>
     </div>
-  </div> 
+  </div>
   <div style="clear: both"></div>';
   $output .= drupal_render($form['preview']);
   $output .= drupal_render($form['options']);
@@ -687,10 +683,10 @@ function color_edit_scheme_form_submit($
   $scheme['name'] = $form_state['values']['scheme_name'];
   $scheme['status'] = isset($form_state['values']['status']) ? $form_state['values']['status'] : NULL;
   $scheme['theme'] = $theme['id'];
-  $palette = $form_state['values']['palette'];    
+  $palette = $form_state['values']['palette'];
 
   if ($form_state['clicked_button']['#id'] == "edit-options-default-button") {
-    db_query('UPDATE {color} SET `default scheme` = \'%s\' WHERE id = \'%s\'', $scheme['id'], $theme['id']);
+    db_query("UPDATE {color} SET `default scheme` = '%s' WHERE id = '%s'", $scheme['id'], $theme['id']);
   }
   elseif ($form_state['clicked_button']['#id'] == "edit-options-delete-button") {
     color_set_scheme($scheme, $theme, 'delete');
@@ -704,7 +700,7 @@ function color_edit_scheme_form_submit($
         $hex[] = $color;
       }
     }
-    
+
     $scheme['hex'] = $hex;
 
     if ($form_state['clicked_button']['#id'] == "edit-options-save-button") {
@@ -726,13 +722,13 @@ function color_edit_scheme_form_submit($
           }
         }
       }
-    
+
       if ($scheme['id'] == "create_scheme") { // admin/build/themes/settings/{theme}/create_scheme (new scheme)
         $scheme['status'] = 1;
         $scheme['id'] = color_set_scheme($scheme, $theme, 'create');
         drupal_goto('admin/build/themes/settings/' . $theme['name'] . '/' . $scheme['id']);
       }
-      else {  // admin/build/themes/settings/{theme}/{scheme_id} (edit themes)        
+      else {  // admin/build/themes/settings/{theme}/{scheme_id} (edit themes)
         $scheme['status'] = 1;
         color_set_scheme($scheme, $theme, 'update');
         drupal_goto('admin/build/themes/settings/' . $theme['name'] . '/' . $scheme['id']);
@@ -761,7 +757,7 @@ function color_get_title($id) {
 
   $scheme['id'] = $id;
   color_get_scheme($scheme);
-  
+
   return $scheme['name'];
 }
 
@@ -802,7 +798,7 @@ function color_op($theme_name, $action, 
       return $page;
     }
     elseif ($action == "enable_color_build") {
-      module_load_include('inc', 'color', 'color.batch');  
+      module_load_include('inc', 'color', 'color.batch');
       color_batch_generate($theme['name']);
     }
     elseif ($action == "disable_color") {
@@ -814,7 +810,7 @@ function color_op($theme_name, $action, 
     else {
       drupal_set_message("Scheme does not exist.", "error", FALSE);
     }
-    
+
     drupal_goto('admin/build/themes/settings/' . $theme['name']);
     return;
   }
@@ -828,33 +824,33 @@ function color_settings_form() {
     '#type' => 'fieldset',
     '#title' => 'Webmaster',
   );
-  
+
   $form['webmaster']['color_modify_premade_schemes'] = array(
     '#type' => 'checkbox',
     '#title' => 'Modification of default schemes',
     '#description' => 'Allow for administrators to modify default schemes.',
     '#default_value' => variable_get('color_modify_premade_schemes', 0),
   );
-  
+
   $form['theme_developers'] = array(
     '#type' => 'fieldset',
     '#title' => 'Theme Developers',
   );
-  
+
   $form['theme_developers']['color_hook_scheme_snippet'] = array(
     '#type' => 'checkbox',
     '#title' => 'Scheme snippets',
     '#description' => 'Show a snippet of code for schemes when editing.',
     '#default_value' => variable_get('color_hook_scheme_snippet', 0),
 
-  );  
-  
+  );
+
   $form['theme_developers']['color_hook_validator'] = array(
     '#type' => 'checkbox',
     '#title' => 'Validate color.inc files',
     '#description' => 'Allow developers to validate color.inc files for consistency.',
     '#default_value' => variable_get('color_hook_validator', 0),
-  );  
+  );
 
   $form['demonstration'] = array(
     '#type' => 'fieldset',
@@ -865,15 +861,14 @@ function color_settings_form() {
   $form['demonstration']['color_hook_preview'] = array(
     '#type' => 'checkbox',
     '#title' => 'Color.inc preview',
-    '#description' => 'Show a textarea of the scheme\'s color.inc.',
+    '#description' => "Show a textarea of the scheme's color.inc.",
     '#default_value' => variable_get('color_hook_preview', 0),
   );
-  
+
   return system_settings_form($form);
 }
 
 function color_settings_colorable() {
-	
 
   return theme('color_settings_colorable', $requirements);
 
@@ -917,10 +912,10 @@ function theme_color_settings_colorable(
 }
 
 function color_settings_extensions() {
-	$extensions = array();
-	
-	$extensions['fill'] = drupal_system_listing('\.inc$', 'modules/color/extend/fill', 'name', 0);
-	$extensions['replace'] = drupal_system_listing('\.inc$', 'modules/color/extend/replace', 'name', 0);
+  $extensions = array();
+
+  $extensions['fill'] = drupal_system_listing('\.inc$', 'modules/color/extend/fill', 'name', 0);
+  $extensions['replace'] = drupal_system_listing('\.inc$', 'modules/color/extend/replace', 'name', 0);
 
   return theme('color_settings_extensions', $extensions);
 }
@@ -933,25 +928,27 @@ function color_settings_extensions() {
  * @ingroup themeable
  */
 function theme_color_settings_extensions($extensions) {
-	// Iterate through each type
-	
-	$form = array(
-		'#type' => 'fieldset',
-		'#title' => 'Extensions'
-	);
-	
+  // Iterate through each type
+
+  $form = array(
+    '#type' => 'fieldset',
+    '#title' => 'Extensions'
+  );
+
+  $output = '';
+
   foreach ($extensions as $key => $type) {
-		$form[$key] = array(
-			'#type' => 'fieldset',
-			'#title' => $key
-		);
-		$i = 0;
+    $form[$key] = array(
+      '#type' => 'fieldset',
+      '#title' => $key
+    );
+    $i = 0;
+
+    $output .= '<table class="color-settings-extensions section-admin">';
 
-  	$output .= '<table class="color-settings-extensions section-admin">';
-		
     $output .= '<tr class=""><th>'. $key .'</th></tr>';
 
-  	foreach ($type as $extension) {
+    foreach ($type as $extension) {
       $class = ++$i % 2 == 0 ? 'even' : 'odd';
 
       $classes = array(
@@ -968,19 +965,19 @@ function theme_color_settings_extensions
         $output .= '<tr class="'. "LA" .' merge-up"><td colspan="2">'. "MOOL" .'</td></tr>';
       }
       else {
-      	$output .= '<tr class="'. $class .' info ok"><td>'. $extension->name .'</td><td>' . $extension->filename . '</td><td>'. "moo" .'</td></tr>';
-				$form[$key][$extension->name] = array(
-					'#title' => $extension->name,
-					'#description' => $extension->filename,
-					'#type' => 'item',
-				);
-      }
-
-		}
-		$output .= '</table>';
-
-  }
-	
-	$output = drupal_render($form);
-	return $output;
-}
\ No newline at end of file
+        $output .= '<tr class="'. $class .' info ok"><td>'. $extension->name .'</td><td>' . $extension->filename . '</td><td>'. "moo" .'</td></tr>';
+        $form[$key][$extension->name] = array(
+          '#title' => $extension->name,
+          '#description' => $extension->filename,
+          '#type' => 'item',
+        );
+      }
+
+    }
+    $output .= '</table>';
+
+  }
+
+  $output = drupal_render($form);
+  return $output;
+}
Index: color.stylesheet.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/color.stylesheet.inc,v
retrieving revision 1.5.2.8
diff -u -p -r1.5.2.8 color.stylesheet.inc
--- color.stylesheet.inc	2 Oct 2008 01:57:39 -0000	1.5.2.8
+++ color.stylesheet.inc	22 Oct 2008 04:10:34 -0000
@@ -1,5 +1,6 @@
 <?php
 // $Id: color.stylesheet.inc,v 1.5.2.8 2008/10/02 01:57:39 skiquel Exp $
+
 /**
  * @file
  * Stylesheet modification functions
@@ -25,8 +26,8 @@ function _color_rewrite_stylesheet($them
   if (strpos($style, $split) !== FALSE) {
     list($style, $fixed) = explode($split, $style);
   }
-  
-//	drupal_set_message(kprint_r($theme, TRUE));
+
+//  drupal_set_message(kprint_r($theme, TRUE));
 
   foreach (array_keys($theme['replacement methods']) as $engine) {
     module_load_include('inc', 'color', 'extend/replace/' . $engine);
@@ -39,7 +40,7 @@ function _color_rewrite_stylesheet($them
   if (isset($fixed)) {
     $style .= $fixed;
   }
-    
+
   // Replace paths to images.
   foreach ($paths['map'] as $before => $after) {
     $before = base_path() . $paths['source'] . $before;
Index: color_user.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/Attic/color_user.info,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 color_user.info
--- color_user.info	17 Sep 2008 08:13:10 -0000	1.1.2.1
+++ color_user.info	22 Oct 2008 04:10:34 -0000
@@ -1,7 +1,7 @@
 ; $Id: color_user.info,v 1.1.2.1 2008/09/17 08:13:10 skiquel Exp $
+
 name = Color - User
-description = Allows users' to pick schemes.
+description = Allows users to pick schemes.
 package = Core - optional
-version = VERSION
 core = 6.x
-dependencies[] = color
\ No newline at end of file
+dependencies[] = color
Index: color_user.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/Attic/color_user.install,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 color_user.install
--- color_user.install	17 Sep 2008 08:13:10 -0000	1.1.2.1
+++ color_user.install	22 Oct 2008 04:10:34 -0000
@@ -1,16 +1,22 @@
 <?php
 // $Id: color_user.install,v 1.1.2.1 2008/09/17 08:13:10 skiquel Exp $
 
+/**
+ * Implementation of hook_install().
+ */
 function color_user_install() {
   drupal_install_schema('color_user');
-  
+
   variable_set('color_unregistered_scheme', 0);
 }
 
+/**
+ * Implementation of hook_uninstall().
+ */
 function color_user_uninstall() {
   drupal_uninstall_schema('color_user');
-  
-  variable_del('color_unregistered_scheme');  
+
+  variable_del('color_unregistered_scheme');
 
   // Refresh blocks.
   cache_clear_all(NULL, 'cache_block');
@@ -21,21 +27,21 @@ function color_user_uninstall() {
  */
 function color_user_schema() {
   $schema['color_user'] = array(
-    'description' => t('Users\'s scheme selection(s).'),
+    'description' => t("Users's scheme selection(s)."),
     'fields' => array(
       'uid' => array(
         'description' => t('The {users}.uid that owns this color set; initially, this is the user that created it.'),
         'type' => 'int',
         'not null' => TRUE,
-        ),
+      ),
       'scheme_id' => array(
         'description' => t('ID of the color scheme user has selected.'),
         'type' => 'int',
         'not null' => TRUE,
-        ),
+      ),
     ),
     'primary key' => array('uid'),
   );
-  
+
   return $schema;
-}
\ No newline at end of file
+}
Index: color_user.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/Attic/color_user.module,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 color_user.module
--- color_user.module	2 Oct 2008 01:57:39 -0000	1.1.2.4
+++ color_user.module	22 Oct 2008 04:10:34 -0000
@@ -1,10 +1,11 @@
 <?php
 // $Id: color_user.module,v 1.1.2.4 2008/10/02 01:57:39 skiquel Exp $
+
 /**
  * @file
- * Lets users' change color schemes
+ * Lets users change color schemes.
  */
- 
+
 /**
  * Implementation of hook_perm().
  */
@@ -16,17 +17,17 @@ function color_user_perm() {
  * Implementation of hook_form_alter()
  */
 function color_user_form_alter(&$form, $form_state, $form_id) {
-	global $base_url;
+  global $base_url;
   module_load_include('inc', 'color', 'color.misc');
 
-  if ($form_id == "color_settings_form") {
+  if ($form_id == 'color_settings_form') {
     if (variable_get('page_compression', 1) == 1 || variable_get('cache', 0) == 1) {
       $unregistered_scheme_disabled = TRUE;
     }
     else {
       $unregistered_scheme_disabled = FALSE;
     }
-    
+
     $form['user'] = array(
       '#type' => 'fieldset',
       '#title' => 'User schemes',
@@ -42,7 +43,7 @@ function color_user_form_alter(&$form, $
     );
   }
 
-	// For user "Theme configuration" at /user/{uid}/edit
+  // For user "Theme configuration" at /user/{uid}/edit
   if (isset($form['color_scheme_select'])) {
     global $user;
     $themes = color_list_colorable_themes(FALSE, 1);
@@ -53,17 +54,17 @@ function color_user_form_alter(&$form, $
 
       module_load_include('inc', 'color', 'color.database');
       $screenshot = NULL;
-      /* KEEP THIS FOR SCHEME UID (COLOR_USER) 
+      /* KEEP THIS FOR SCHEME UID (COLOR_USER)
       if (($scheme = color_get_scheme('uid', $user->uid, array('extra_attr', 'theme'))) && $theme_key == $scheme['theme']) {
 
         $extra_attr = $scheme['extra_attr'];
         $screenshot = isset($extra_attr['screenshot']) ? $extra_attr['screenshot'] : NULL;
       }
       */
-      
+
       // If: Make sure only enabled themes show color description.
       if ($form['theme_select']['themes'][$theme_key]) {
-        $form['theme_select']['themes'][$theme_key]['description']['#title'] .= '<span class="pngfix"><img src="' . $base_url . '/' . drupal_get_path('module', 'color') . '/images/color-icon.png" title="' . t("This theme supports color customization.") . '" alt="' . t("Color configurable") . '"></span>';
+        $form['theme_select']['themes'][$theme_key]['description']['#title'] .= '<span class="pngfix"><img src="' . $base_url . '/' . drupal_get_path('module', 'color') . '/images/color-icon.png" title="' . t('This theme supports color customization.') . '" alt="' . t('Color configurable') . '" /></span>';
       }
 
       if (isset($form['theme_select']['themes'][$theme_key]['screenshot']) && isset($screenshot)) {
@@ -78,29 +79,29 @@ function color_user_form_alter(&$form, $
  */
 function color_user_block($op='list', $delta=0) {
   global $user;
-    
+
   module_load_include('inc', 'color', 'color.misc');
   module_load_include('inc', 'color', 'color.database');
-  
+
   $theme = (!isset($user->theme) || empty($user->theme)) ? variable_get('theme_default', 'garland'): $user->theme;
-  
+
   if ($op == 'list') {
-    $blocks[0]["info"] = t('Pick color scheme');
-    $blocks[0]["description"] = t('User color scheme selection');
+    $blocks[0]['info'] = t('Pick color scheme');
+    $blocks[0]['description'] = t('User color scheme selection');
     return $blocks;
   }
   else if ($op == 'view' && user_access('select different color scheme') && !(($user->uid == 0) && (variable_get('page_compression', 0) != 0) || (variable_get('cache', 0) != 0)) && (variable_get('theme_color_'. $theme, 0) == 1) && (variable_get('theme_color_'. $theme . '_generated', 0) == 1)) {
     if (!((variable_get('page_compression', 1) == 0) || (variable_get('cache', 0) == 0)) && in_array('anonymous user', $user->roles)) {
-      drupal_set_message("Anonymous users cannot change schemes w/ Page Compression or Caching on!", "info", FALSE);
+      drupal_set_message('Anonymous users cannot change schemes w/ Page Compression or Caching on!', 'info', FALSE);
     }
-    
-    $block['content'] = "";
+
+    $block['content'] = '';
     switch ($delta) {
       case 0:
         $block['content'] .= drupal_get_form('color_user_block_form');
-      break;
+        break;
     }
-    
+
     $block['subject'] = t('Choose scheme');
 
     return $block;
@@ -115,15 +116,15 @@ function color_user_block($op='list', $d
  */
 function color_user_get_scheme_id($uid) {
   static $static;
-  
+
   if (isset($static[$uid])) {
     return $static[$uid];
   }
-  
+
   if ($uid != 0) {
     $query = db_query("SELECT scheme_id FROM {color_user} WHERE uid = '%s'", $uid);
     $row = db_fetch_array($query);
-    
+
     if (isset($row['scheme_id'])) {
       $static[$uid] = $row['scheme_id'];
     }
@@ -159,14 +160,14 @@ function color_user_block_form() {
   color_get_theme($theme);
   color_get_theme_extras($theme);
   $current = $scheme['id'];
-  
+
   $theme['schemes']['id'] = array('<Official site scheme>' => 0)+$theme['schemes']['id'];
   $form['color_scheme_select']['color_select'] = array(
     '#type' => 'select',
     '#options' => array_flip($theme['schemes']['id']),
     '#default_value' => $current,
   );
-  
+
   $form['current_theme'] = array(
     '#type' => 'hidden',
     '#value' => $theme['name'],
@@ -191,9 +192,9 @@ function color_user_user($op, &$edit, &$
   global $user;
 
   $theme = !empty($edit['theme']) ? $edit['theme'] : variable_get('theme_default', 'garland');
-  
+
   if ($op == 'form' && $category == 'account' && user_access('select different color scheme')) {
-    
+
     module_load_include('inc', 'color', 'color.database');
     module_load_include('inc', 'color', 'color.misc');
 
@@ -209,15 +210,15 @@ function color_user_user($op, &$edit, &$
       );
 
       $form['color_scheme_select']['#tree'] = TRUE;
-    
+
       $scheme['id'] = color_user_get_scheme_id($uid);
       color_get_scheme($scheme);
       color_get_theme($theme);
       color_get_theme_extras($theme);
       $current = $scheme['id'];
-  
-      $theme['schemes']['id'] = array('<Official site scheme>' => 0)+$theme['schemes']['id'];
-  
+
+      $theme['schemes']['id'] = array('<Official site scheme>' => 0) + $theme['schemes']['id'];
+
       $form['color_scheme_select']['color_select'] = array(
         '#type' => 'select',
         '#title' => t('Scheme'),
@@ -246,19 +247,19 @@ function color_user_scheme_select_submit
   $uid = $user->uid;
   $theme['name'] = empty($form['current_theme']['#value']) ? variable_get('theme_default', 'garland') : $form['current_theme']['#value'];
   $scheme['id'] = $form['#post']['color_scheme_select']['color_select'];
-	
-  if ($form_state['clicked_button']['#value'] == "Modify") {
+
+  if ($form_state['clicked_button']['#value'] == 'Modify') {
     if ($scheme['id'] != 0) {
       drupal_goto('admin/build/themes/settings/' . $theme['name'] . '/' . $scheme['id']);
     }
     return;
   }
-  else {    
+  else {
     module_load_include('inc', 'color', 'color.database');
     // Check for user scheme in table. Place in $userscheme array if exists
     $results = db_fetch_array(db_query("SELECT COUNT(scheme_id) AS count FROM {color_user} WHERE uid = '%s'", $uid));
     $row_count = $results['count'];
-    
+
     if ($uid != 0 && $row_count == 0) {
       color_user_set_scheme($scheme['id'], $uid, 'insert');
     }
@@ -268,7 +269,7 @@ function color_user_scheme_select_submit
     elseif ($uid != 0 && ($row_count['id'] == 0 || !color_scheme_id_valid($scheme['id'], $theme))) {
       color_user_set_scheme($scheme_id, $uid, 'delete');
     }
-    elseif ($uid == 0 && user_access('select different color scheme') && (variable_get("page_compression", 1) == 0) && variable_get('cache', 0) == 0) {
+    elseif ($uid == 0 && user_access('select different color scheme') && (variable_get('page_compression', 1) == 0) && variable_get('cache', 0) == 0) {
       color_user_set_scheme($scheme['id'], $uid);
     }
   }
@@ -277,9 +278,13 @@ function color_user_scheme_select_submit
 
 /**
  * Set UID or anonymous user to a scheme.
- * @param $scheme_id: the scheme ID
- * @param $uid: User's ID
- * @param $method: 'update', 'delete', 'insert'
+ *
+ * @param $scheme_id
+ *   The scheme ID
+ * @param $uid
+ *   User's ID
+ * @param $method
+ *   One of: 'update', 'delete', 'insert'
  */
 function color_user_set_scheme($scheme_id, $uid = 0, $method = NULL) {
   if (!isset($method)) {
@@ -301,14 +306,14 @@ function color_user_set_scheme($scheme_i
   }
   elseif (isset($scheme_id) && $uid != 0) {
     if ($method == 'update') {
-      db_query('UPDATE {color_user} SET scheme_id = \'%s\' WHERE uid = \'%s\'', $scheme_id, $uid);
+      db_query("UPDATE {color_user} SET scheme_id = '%s' WHERE uid = '%s'", $scheme_id, $uid);
     }
     elseif ($method == 'insert') {
-      db_query('INSERT INTO {color_user} (uid, scheme_id) VALUES (\'%s\', \'%s\')', $uid, $scheme_id);
+      db_query("INSERT INTO {color_user} (uid, scheme_id) VALUES ('%s', '%s')", $uid, $scheme_id);
     }
     elseif ($method == 'delete') {
-      db_query('DELETE FROM {color_user} WHERE uid = \'%s\'', $uid);
+      db_query("DELETE FROM {color_user} WHERE uid = '%s'", $uid);
     }
-    drupal_set_message(t('Color scheme updated!'), "status", FALSE);
+    drupal_set_message(t('Color scheme updated!'), 'status', FALSE);
   }
-}
\ No newline at end of file
+}
Index: farbtastic.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/color_soc08/Attic/farbtastic.js,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 farbtastic.js
--- farbtastic.js	26 Aug 2008 15:23:15 -0000	1.1.2.1
+++ farbtastic.js	22 Oct 2008 04:10:34 -0000
@@ -45,17 +45,17 @@ jQuery._farbtastic = function (container
    * NEW: latestColors
    */
   fb.addPrevColor = function (color) {
-    
+
     if (latestColors.length >= 6) {
       latestColors = latestColors.splice(1,5);
     }
     latestColors.push(color);
   }
-  
+
   fb.listPrevColors = function () {
     //alert(latestColors);
     var comboboxes = "", i, element, hsl, hex, color;
-    
+
     for (i = 0; i<latestColors.length; i++) {
       element = "prev"+i;
       hex = latestColors[i];
@@ -63,31 +63,31 @@ jQuery._farbtastic = function (container
       color = hsl[2] > 0.5 ? '#000' : '#fff';
       comboboxes = comboboxes + "<input type=\"text\" id=\"" + element + "\" name=\"" + element + "\" value=\"" + hex + "\" style=\"background-color: "+hex+"; color: " + color + "\" class=\"prevbox\"/>";
     }
-    
+
     $('#prevcolors').html(comboboxes);
-    
+
     $('.prevbox').focus(function(){
       var hex = $(this).val();
       $.farbtastic('#picker').setColor(hex);
     });
-    
+
   }
-  
+
   fb.undoColor = function () {
     fb.setColor(latestColors[latestColors.length]);
   }
-  
+
   /*
    * NEW: updateCompatibleColors
    */
   fb.updateCompatibleColors = function () {
     var hsl, type, element,comboboxes = "", hex;
-      
+
     type = $('#selectsuggestedcolors').val();
-    
+
     hsl = fb.hsl;
     colors = fb.findColors(hsl, type);
-    
+
     for (i = 0; i<colors.length; i++) {
       element = "combo"+i;
       hex = fb.HSLToHex(colors[i]);
@@ -97,7 +97,7 @@ jQuery._farbtastic = function (container
     //comboboxes = comboboxes + '<input id="combo3" class="suggestedbox" type="text" style="background-color: rgb(0, 18, 52); color: rgb(255, 255, 255);" value="#000000" name="combo3"/>';
 
     $('#suggestedcolors').html(comboboxes);
-    
+
     $('input[@class=suggestedbox]').focus(function(){
       var hex = $(this).val();
       $.farbtastic('#picker').setColor(hex);
@@ -113,15 +113,15 @@ jQuery._farbtastic = function (container
     h = hsl[0];
     s = hsl[1];
     l = hsl[2];
-    
+
     $('#debugstuff').html(
       "<b>h</b>ue:" + h + "<br />" +
       "<b>s</b>aturation:" + s + "<br />" +
       "<b>l</b>ightness:" + l + "<br />"
       );
-    
+
   }
-  
+
   /**
    * Find colors
    */
@@ -131,7 +131,7 @@ jQuery._farbtastic = function (container
     var angles;
     var colors = [];
     //alert ("angle: "+angle);
-    
+
     if (kind == "analogous") angles = [0, 30, 330];
     else if (kind == "complementary") angles = [0,180];
     else if (kind == "split-complementary") angles = [0,150,210];
@@ -142,21 +142,21 @@ jQuery._farbtastic = function (container
     else if (kind == "four-tone") angles = [0,60,180,240];
     else if (kind == "five-tone") angles = [0,120,160,210,240];
     else if (kind == "six-tone") angles = [0,30,120,150,240,270];
- 
+
     var currentPos;
     currentPos = baseangle;
     for (i = 0; i<angles.length; i++) {
-      
+
       colors[i] = currentPos + angles[i];
       //currentPos = colors[i];
-      
+
       if (colors[i] > 360) {
         colors[i] = colors[i] - 360;
       }
       colors[i] = 1/(360/colors[i]);
       colors[i] = [colors[i],hsl[1],hsl[2]];
     }
-    
+
     /* for (i = 0; i<angles.length; i++) {
       colors[i] = baseangle + angles[i];
       if (colors[i] > 360) {
@@ -166,26 +166,26 @@ jQuery._farbtastic = function (container
       colors[i] = [colors[i],hsl[1],hsl[2]];
     } */
     return colors;
-    
+
     /*
     color1 = hsl;
-    
+
     color2 = angle + 30;
     if (color2 > 360) {
       color2 = color2 - 360;
     }
     color2 = 1/(360/color2);
     color2 = [color2, hsl[1], hsl[2]];
-    
+
     color3 = angle + 330;
     if (color3 > 360) {
       color3 = color3 - 360;
     }
     color3 = 1/(360/color3);
     color3 = [color3, hsl[1], hsl[2]];
-    
+
   }
-    
+
     return [color1, color2, color3] */
   }
 
@@ -255,14 +255,14 @@ jQuery._farbtastic = function (container
     var x, y;
     var el = event.target || event.srcElement;
     var reference = fb.wheel;
-    
+
     // If the offset from the relative element is undefined calculate it.
     if ( typeof event.offsetX == 'undefined' && typeof event.offsetY == 'undefined' ) {
       var offset = $(event.target).offset(false);
       event.offsetX = event.pageX - offset.left;
       event.offsetY = event.pageY - offset.top;
     }
-    
+
     // Use offset coordinates and find common offsetParent
     var pos = { x: event.offsetX, y: event.offsetY };
 
@@ -418,17 +418,17 @@ jQuery._farbtastic = function (container
    * NEW: latestColors
    */
   fb.addPrevColor = function (color) {
-    
+
     if (latestColors.length >= 6) {
       latestColors = latestColors.splice(1,5);
     }
     latestColors.push(color);
   }
-  
+
   fb.listPrevColors = function () {
     //alert(latestColors);
     var comboboxes = "", i, element, hsl, hex, color;
-    
+
     for (i = 0; i<latestColors.length; i++) {
       element = "prev"+i;
       hex = latestColors[i];
@@ -436,31 +436,31 @@ jQuery._farbtastic = function (container
       color = hsl[2] > 0.5 ? '#000' : '#fff';
       comboboxes = comboboxes + "<input type=\"text\" id=\"" + element + "\" name=\"" + element + "\" value=\"" + hex + "\" style=\"background-color: "+hex+"; color: " + color + "\" class=\"prevbox\"/>";
     }
-    
+
     $('#prevcolors').html(comboboxes);
-    
+
     $('.prevbox').focus(function(){
       var hex = $(this).val();
       $.farbtastic('#placeholder').setColor(hex);
     });
-    
+
   }
-  
+
   fb.undoColor = function () {
     fb.setColor(latestColors[latestColors.length]);
   }
-  
+
   /*
    * NEW: updateCompatibleColors
    */
   fb.updateCompatibleColors = function () {
     var hsl, type, element,comboboxes = "", hex;
-      
+
     type = $('#selectsuggestedcolors').val();
-    
+
     hsl = fb.hsl;
     colors = fb.findColors(hsl, type);
-    
+
     for (i = 0; i<colors.length; i++) {
       element = "combo"+i;
       hex = fb.HSLToHex(colors[i]);
@@ -470,7 +470,7 @@ jQuery._farbtastic = function (container
     //comboboxes = comboboxes + '<input id="combo3" class="suggestedbox" type="text" style="background-color: rgb(0, 18, 52); color: rgb(255, 255, 255);" value="#000000" name="combo3"/>';
 
     $('#suggestedcolors').html(comboboxes);
-    
+
     $('input[@class=suggestedbox]').focus(function(){
       var hex = $(this).val();
       $.farbtastic('#placeholder').setColor(hex);
@@ -481,7 +481,7 @@ jQuery._farbtastic = function (container
 
   fb.roundToNearestFifth = function (number) {
     var nearestFifth, decimal, thevar;
-    
+
     // first we need to see how many .20s are in the number
     // .8 / .2 = 4; .88 / .2 = 4.4
     nearestFifth = number / .20 ;
@@ -492,21 +492,21 @@ jQuery._farbtastic = function (container
     //find remainder after divided by .20
     thevar = number % .20 ;
     //alert ("remainer after %: " + thevar);
-    // we're rounding out of .20, so multiply by 5 so we 
+    // we're rounding out of .20, so multiply by 5 so we
     // can get a decimal out under 1 to round
     thevar = thevar * 5;
     //alert("between 20: " + thevar);
 
     thevar = Math.round(thevar);
-    
+
     decimal = .20 * nearestFifth;
     if (thevar == 1) {
       decimal += .20;
     }
-    
+
     return decimal;
   }
-  
+
   fb.HSLToRGB = function (hsl) {
     var m1, m2, r, g, b;
     var h = hsl[0], s = hsl[1], l = hsl[2];
@@ -516,7 +516,7 @@ jQuery._farbtastic = function (container
         this.hueToRGB(m1, m2, h),
         this.hueToRGB(m1, m2, h-0.33333)];
   };
-  
+
   // new
   fb.HSLToHex = function (hsl) {
     fb.rgb = fb.HSLToRGB(hsl);
@@ -558,9 +558,9 @@ jQuery._farbtastic = function (container
 
     // Init color
   fb.setColor('#000000');
-//    fb.updateCompatibleColors();
-//    fb.listPrevColors();
-    
+//  fb.updateCompatibleColors();
+//  fb.listPrevColors();
+
   // Set linked elements/callback
   if (callback) {
     fb.linkTo(callback);
