diff --git a/wp-content/themes/monotone/404.php b/wp-content/themes/monotone/404.php
new file mode 100755
index 0000000000000000000000000000000000000000..01a8e8a617e65e66fcfb87d1a513ee3dc511fb35
--- /dev/null
+++ b/wp-content/themes/monotone/404.php
@@ -0,0 +1,11 @@
+<?php get_header(); ?>
+
+	<div id="content" class="narrowcolumn">
+
+		<h2 class="center">Error 404 - Not Found</h2>
+
+	</div>
+
+<?php get_sidebar(); ?>
+
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/monotone/_license.txt b/wp-content/themes/monotone/_license.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b5fcfa6e7a5343eec02d2d25805773efbdf65121
--- /dev/null
+++ b/wp-content/themes/monotone/_license.txt
@@ -0,0 +1,280 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
diff --git a/wp-content/themes/monotone/_readme.txt b/wp-content/themes/monotone/_readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..96020832a52fe6ab15211eb79671b2b6000c5ee8
--- /dev/null
+++ b/wp-content/themes/monotone/_readme.txt
@@ -0,0 +1,19 @@
+Monotone Version 1.1
+
+Theme Installation:
+
+1) Copy the folder named "monotone" to your wp-content/themes/ directory.
+2) Login to the Wordpress administration area and click "Design"
+3) Activate the theme!
+
+
+Thumb.php and .htaccess Installation:
+
+1) Move htaccess.txt and thumb.php to your site's root folder (the one where xmlrpc.php and the wp-admin folder live).
+2) Rename htaccess.txt to .htaccess OR copy the lines out of .htaccess and append them to your current .htaccess file.
+3) Make a folder with world writable permissions (probably 0777) called "cache" in your site's root directory. This is so thumb.php can cache the images it generates.
+3) Everything should work.
+
+Monotone was a collaboration between eight6 (http://eight6.com) and Automattic (http://automattic.com).
+
+All future updates to the theme will be available at http://monotonedemo.wordpress.com
\ No newline at end of file
diff --git a/wp-content/themes/monotone/archive.php b/wp-content/themes/monotone/archive.php
new file mode 100755
index 0000000000000000000000000000000000000000..9e96191fd324a3eff0c84d92da48bb7a03f793e8
--- /dev/null
+++ b/wp-content/themes/monotone/archive.php
@@ -0,0 +1,75 @@
+<?php get_header(); rewind_posts(); ?>
+<div class="archive">
+	
+<ul id="filters">
+	<li>Filter by:</li>
+	<li>
+<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> 
+  <option value=""><?php echo attribute_escape(__('Select Month')); ?></option> 
+  <?php wp_get_archives('type=monthly&format=option&show_post_count=1'); ?> </select>
+</li>
+<li>
+<?php wp_dropdown_categories('show_option_none=Select Category'); ?>
+
+<script type="text/javascript"><!--
+    var dropdown = document.getElementById("cat");
+    function onCatChange() {
+		if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
+			location.href = "<?php echo get_option('home');
+?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
+		}
+    }
+    dropdown.onchange = onCatChange;
+--></script>
+</li>
+</ul>
+
+		<?php 
+		query_posts($query_string.'&posts_per_page=24');
+		if (have_posts()) : ?>
+
+ 	  <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
+ 	  <?php /* If this is a category archive */ if (is_category()) { ?>
+		<h2>Archive for the &#8216;<?php single_cat_title(); ?>&#8217; Category</h2>
+ 	  <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
+		<h2>Posts Tagged &#8216;<?php single_tag_title(); ?>&#8217;</h2>
+ 	  <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
+		<h2>Archive for <?php the_time('F jS, Y'); ?></h2>
+ 	  <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
+		<h2>Archive for <?php the_time('F, Y'); ?></h2>
+ 	  <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
+		<h2>Archive for <?php the_time('Y'); ?></h2>
+	  <?php /* If this is an author archive */ } elseif (is_author()) { ?>
+		<h2>Author Archive</h2>
+ 	  <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
+		<h2>Blog Archives</h2>
+ 	  <?php } ?>
+
+
+		<div class="nav">
+			<div class="prev"><?php next_posts_link('&laquo; Older Entries') ?></div>
+			<div class="next"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
+		</div>
+<ul class="thumbnails">
+		<?php while (have_posts()) : the_post(); ?>
+
+					<li id="post-<?php the_ID(); ?>">
+						<a href="<?php the_permalink() ?>" title="Link to <?php the_title_attribute(); ?>"><?php the_thumbnail(); ?></a>
+					</li>
+
+		<?php endwhile; ?>
+</ul>
+<div class="nav">
+	<div class="prev"><?php next_posts_link('&laquo; Older Entries') ?></div>
+	<div class="next"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
+</div>
+
+	<?php else : ?>
+
+		<h2 class="center">Not Found</h2>
+		<?php include (TEMPLATEPATH . '/searchform.php'); ?>
+
+	<?php endif; ?>
+</div>
+
+<?php get_footer(); ?>
diff --git a/wp-content/themes/monotone/comments.php b/wp-content/themes/monotone/comments.php
new file mode 100755
index 0000000000000000000000000000000000000000..e7997fca928d77e1a7ebe14b52030d82b9380bbe
--- /dev/null
+++ b/wp-content/themes/monotone/comments.php
@@ -0,0 +1,114 @@
+<?php // Do not delete these lines
+	if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
+		die ('Please do not load this page directly. Thanks!');
+
+	if (!empty($post->post_password)) { // if there's a password
+		if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
+			?>
+
+			<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
+
+			<?php
+			return;
+		}
+	}
+
+	/* This variable is for alternating comment background */
+	$oddcomment = 'class="alt" ';
+?>
+
+<!-- You can start editing here. -->
+
+<?php if ($comments) : ?>
+	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3>
+
+	<ol class="commentlist">
+	<?php foreach ($comments as $comment) : ?>
+		<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
+		<div class="gravatar"><?php echo get_avatar( $comment, 32 ); ?></div>
+			<div class="metadata">
+				<a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('j M Y') ?> at <?php comment_time() ?></a>
+				<cite><?php comment_author_link() ?></cite>
+				<?php edit_comment_link('edit','<br />',''); ?>
+			</div>
+			<div class="content">
+				
+				<?php if ($comment->comment_approved == '0') : ?>
+				<p><em>Your comment is awaiting moderation.</em></p>
+				<?php endif; ?>
+				<?php comment_text() ?>
+			</div>
+			<div class="clear"></div>
+		</li>
+
+	<?php
+		/* Changes every other comment to a different class */
+		$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
+	?>
+
+	<?php endforeach; /* end for each comment */ ?>
+
+	</ol>
+
+ <?php else : // this is displayed if there are no comments so far ?>
+
+	<?php if ('open' == $post->comment_status) : ?>
+		<!-- If comments are open, but there are no comments. -->
+
+	 <?php else : // comments are closed ?>
+		<!-- If comments are closed. -->
+		<p class="nocomments">Comments are closed.</p>
+
+	<?php endif; ?>
+<?php endif; ?>
+
+
+<?php if ('open' == $post->comment_status) : ?>
+
+<h3 id="respond">Leave a Reply</h3>
+
+<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
+<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
+<?php else : ?>
+
+<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
+
+<?php if ( $user_ID ) : ?>
+
+<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
+
+<?php else : ?>
+
+<p><label for="author"><span><strong>Name</strong> <?php if ($req) echo "<small>(required)</small>"; ?></span></label> <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
+</p>
+
+<p>
+	
+	<label for="email"><span><strong>Mail</strong> <small>(<?php if ($req) echo "required, ";?>not published)</small></span></label>
+	
+	<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
+</p>
+
+<p>
+	<label for="url"><span><strong>Website</strong></span></label>
+	<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
+</p>
+
+<?php endif; ?>
+
+<!--<p><small><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></small></p>-->
+
+<p>
+	<label for="comment"><strong>Comment</strong></label>
+	<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
+
+<div><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
+<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+</div>
+<?php do_action('comment_form', $post->ID); ?>
+
+</form>
+</div>
+<?php endif; // If registration required and not logged in ?>
+
+<?php endif; // if you delete this the sky will fall on your head ?>
diff --git a/wp-content/themes/monotone/csscolor.php b/wp-content/themes/monotone/csscolor.php
new file mode 100755
index 0000000000000000000000000000000000000000..9155b2667e4e9e6f37309d0409f0ab254c6630e7
--- /dev/null
+++ b/wp-content/themes/monotone/csscolor.php
@@ -0,0 +1,423 @@
+<?php
+/*
+ csscolor.php
+ Copyright 2004 Patrick Fitzgerald
+ http://www.barelyfitz.com/projects/csscolor/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+
+define('CSS_COLOR_ERROR', 100);
+
+class CSS_Color
+{
+  //==================================================
+  //==PARAMETERS======================================
+  //==================================================
+
+  // $this->bg = array of CSS color values
+  // $this->bg[0] is the bg color
+  // $this->bg['+1'..'+5'] are lighter colors
+  // $this->bg['-1'..'-5'] are darker colors
+  var $bg = array();
+
+  // $this->fg = array of foreground colors.
+  // Each color corresponds to a background color.
+  var $fg = array();
+
+  // brightDiff is the minimum brightness difference
+  // between the background and the foreground.
+  // Note: you should not change this directly,
+  // instead use setBrightDiff() and getBrightDiff()
+  var $minBrightDiff = 128;
+  
+  // colorDiff is the minimum color difference
+  // between the background and the foreground.
+  // Note: you should not change this directly,
+  // instead use setColorDiff() and getColorDiff()
+  var $minColorDiff = 100;
+
+  //==================================================
+  //==CONSTRUCTOR=====================================
+  //==================================================
+
+  function CSS_Color($bgHex, $fgHex='')
+  {
+    // This is the constructor method for the class,
+    // which is called when a new object is created.
+
+    // Initialize this PEAR object so I can
+    // use the PEAR error return mechanism
+
+    // Initialize the palette
+    $this->setPalette($bgHex, $fgHex);
+  }
+
+  //==================================================
+  //==METHODS=========================================
+  //==================================================
+
+  //--------------------------------------------------
+  function setPalette($bgHex, $fgHex = '')
+  {
+    // Initialize the color palettes
+
+    // If a foreground color was not specified,
+    // just use the background color.
+    if (!$fgHex) {
+      $fgHex = $bgHex;
+    }
+
+    // Clear the existing palette
+    $this->bg = array();
+    $this->fg = array();
+
+    // Make sure we got a valid hex value
+    if (!$this->isHex($bgHex)) {
+      error_log("background color '$bgHex' is not a hex color value");
+      return false;
+    }
+
+    // Set the bg color
+    $this->bg[0] = $bgHex;
+
+    $this->bg['+1'] = $this->lighten($bgHex, .85);
+    $this->bg['+2'] = $this->lighten($bgHex, .75);
+    $this->bg['+3'] = $this->lighten($bgHex, .5);
+    $this->bg['+4'] = $this->lighten($bgHex, .25);
+    $this->bg['+5'] = $this->lighten($bgHex, .1);
+
+    $this->bg['-1'] = $this->darken($bgHex, .85);
+    $this->bg['-2'] = $this->darken($bgHex, .75);
+    $this->bg['-3'] = $this->darken($bgHex, .5);
+    $this->bg['-4'] = $this->darken($bgHex, .25);
+    $this->bg['-5'] = $this->darken($bgHex, .1);
+
+    // Make sure we got a valid hex value
+    if (!$this->isHex($fgHex)) {
+      $this->raiseError("background color '$bgHex' is not a hex color value",
+			__FUNCTION__, __LINE__);
+      return false;
+    }
+
+    // Set up the foreground colors
+    $this->fg[0]    = $this->calcFG( $this->bg[0], $fgHex);
+    $this->fg['+1'] = $this->calcFG( $this->bg['+1'], $fgHex);
+    $this->fg['+2'] = $this->calcFG( $this->bg['+2'], $fgHex);
+    $this->fg['+3'] = $this->calcFG( $this->bg['+3'], $fgHex);
+    $this->fg['+4'] = $this->calcFG( $this->bg['+4'], $fgHex);
+    $this->fg['+5'] = $this->calcFG( $this->bg['+5'], $fgHex);
+    $this->fg['-1'] = $this->calcFG( $this->bg['-1'], $fgHex);
+    $this->fg['-2'] = $this->calcFG( $this->bg['-2'], $fgHex);
+    $this->fg['-3'] = $this->calcFG( $this->bg['-3'], $fgHex);
+    $this->fg['-4'] = $this->calcFG( $this->bg['-4'], $fgHex);
+    $this->fg['-5'] = $this->calcFG( $this->bg['-5'], $fgHex);
+  }
+
+  //--------------------------------------------------
+  function lighten($hex, $percent)
+  {
+    return $this->mix($hex, $percent, 255);
+  }
+
+  //--------------------------------------------------
+  function darken($hex, $percent)
+  {
+    return $this->mix($hex, $percent, 0);
+  }
+
+  //--------------------------------------------------
+  function mix($hex, $percent, $mask)
+  {
+
+    // Make sure inputs are valid
+    if (!is_numeric($percent) || $percent < 0 || $percent > 1) {
+      $this->raiseError("percent=$percent is not valid",
+			__FUNCTION__, __LINE__);
+      return false;
+    }
+
+    if (!is_int($mask) || $mask < 0 || $mask > 255) {
+      $this->raiseError("mask=$mask is not valid",
+			__FUNCTION__, __LINE__);
+      return false;
+    }
+
+    $rgb = $this->hex2RGB($hex);
+    if (!is_array($rgb)) {
+      // hex2RGB will raise an error
+      return false;
+    }
+
+    for ($i=0; $i<3; $i++) {
+      $rgb[$i] = round($rgb[$i] * $percent) + round($mask * (1-$percent));
+
+      // In case rounding up causes us to go to 256
+      if ($rgb[$i] > 255) {
+	$rgb[$i] = 255;
+      }
+
+    }
+    return $this->RGB2Hex($rgb);
+  }
+
+  //--------------------------------------------------
+  function hex2RGB($hex)
+  {
+    //
+    // Given a hex color (rrggbb or rgb),
+    // returns an array (r, g, b) with decimal values
+    // If $hex is not the correct format,
+    // returns false.
+    //
+    // example:
+    // $d = hex2RGB('#abc');
+    // if (!$d) { error }
+
+    // Regexp for a valid hex digit
+    $d = '[a-fA-F0-9]';
+    
+    // Make sure $hex is valid
+    if (preg_match("/^($d$d)($d$d)($d$d)\$/", $hex, $rgb)) {
+      
+      return array(
+		   hexdec($rgb[1]),
+		   hexdec($rgb[2]),
+		   hexdec($rgb[3])
+		   );
+    }
+    if (preg_match("/^($d)($d)($d)$/", $hex, $rgb)) {
+      
+      return array(
+		   hexdec($rgb[1] . $rgb[1]),
+		   hexdec($rgb[2] . $rgb[2]),
+		   hexdec($rgb[3] . $rgb[3])
+		   );
+    }
+
+    $this->raiseError("cannot convert hex '$hex' to RGB", __FUNCTION__, __LINE__);
+    return false;
+  }
+
+  //--------------------------------------------------
+  function RGB2Hex($rgb)
+  {
+    // Given an array(rval,gval,bval) consisting of
+    // decimal color values (0-255), returns a hex string
+    // suitable for use with CSS.
+    // Returns false if the input is not in the correct format.
+    // Example:
+    // $h = RGB2Hex(array(255,0,255));
+    // if (!$h) { error };
+
+    // Make sure the input is valid
+    if(!$this->isRGB($rgb)) {
+      $this->raiseError("RGB value is not valid", __FUNCTION__, __LINE__);
+      return false;
+    }
+
+    $hex = "";
+    for($i=0; $i < 3; $i++) {
+
+      // Convert the decimal digit to hex
+      $hexDigit = dechex($rgb[$i]);
+
+      // Add a leading zero if necessary
+      if(strlen($hexDigit) == 1) {
+	$hexDigit = "0" . $hexDigit;
+      }
+
+      // Append to the hex string
+      $hex .= $hexDigit;
+    }
+
+    // Return the complete hex string
+    return $hex;
+  }
+
+  //--------------------------------------------------
+  function isHex($hex)
+  {
+    // Returns true if $hex is a valid CSS hex color.
+    // The "#" character at the start is optional.
+
+    // Regexp for a valid hex digit
+    $d = '[a-fA-F0-9]';
+    
+    // Make sure $hex is valid
+    if (preg_match("/^#?$d$d$d$d$d$d\$/", $hex) ||
+	preg_match("/^#?$d$d$d\$/", $hex)) {
+      return true;
+    }
+    return false;
+  }
+
+  //--------------------------------------------------
+  function isRGB($rgb)
+  {
+    // Returns true if $rgb is an array with three valid
+    // decimal color digits.
+
+    if (!is_array($rgb) || count($rgb) != 3) {
+      return false;
+    }
+
+    for($i=0; $i < 3; $i++) {
+
+      // Get the decimal digit
+      $dec = intval($rgb[$i]);
+
+      // Make sure the decimal digit is between 0 and 255
+      if (!is_int($dec) || $dec < 0 || $dec > 255) {
+	return false;
+      }
+    }
+
+    return true;
+  }
+
+  //--------------------------------------------------
+  function calcFG($bgHex, $fgHex)
+  {
+    // Given a background color $bgHex and a foreground color $fgHex,
+    // modifies the foreground color so it will have enough contrast
+    // to be seen against the background color.
+    //
+    // The following parameters are used:
+    // $this->minBrightDiff
+    // $this->minColorDiff
+
+    // Loop through brighter and darker versions
+    // of the foreground color.
+    // The numbers here represent the amount of
+    // foreground color to mix with black and white.
+    foreach (array(1, 0.75, 0.5, 0.25, 0) as $percent) {
+
+      $darker = $this->darken($fgHex, $percent);
+      $lighter = $this->lighten($fgHex, $percent);
+
+      $darkerBrightDiff  = $this->brightnessDiff($bgHex, $darker);
+      $lighterBrightDiff = $this->brightnessDiff($bgHex, $lighter);
+
+      if ($lighterBrightDiff > $darkerBrightDiff) {
+	$newFG = $lighter;
+	$newFGBrightDiff = $lighterBrightDiff;
+      } else {
+	$newFG = $darker;
+	$newFGBrightDiff = $darkerBrightDiff;
+      }
+      $newFGColorDiff = $this->colorDiff($bgHex, $newFG);
+
+      if ($newFGBrightDiff >= $this->minBrightDiff &&
+	  $newFGColorDiff >= $this->minColorDiff) {
+	break;
+      }
+    }
+
+    return $newFG;
+  }
+
+  //--------------------------------------------------
+  function getMinBrightDiff()
+  {
+    return $this->minBrightDiff;
+  }
+  function setMinBrightDiff($b, $resetPalette = true)
+  {
+    $this->minBrightDiff = $b;
+    if ($resetPalette) {
+      $this->setPalette($this->bg[0],$this->fg[0]);
+    }
+  }
+
+  //--------------------------------------------------
+  function getMinColorDiff()
+  {
+    return $this->minColorDiff;
+  }
+  function setMinColorDiff($d, $resetPalette = true)
+  {
+    $this->minColorDiff = $d;
+    if ($resetPalette) {
+      $this->setPalette($this->bg[0],$this->fg[0]);
+    }
+  }
+
+  //--------------------------------------------------
+  function brightness($hex)
+  {
+    // Returns the brightness value for a color,
+    // a number between zero and 178.
+    // To allow for maximum readability, the difference between
+    // the background brightness and the foreground brightness
+    // should be greater than 125.
+
+    $rgb = $this->hex2RGB($hex);
+    if (!is_array($rgb)) {
+      // hex2RGB will raise an error
+      return false;
+    }
+
+    return( (($rgb[0] * 299) + ($rgb[1] * 587) + ($rgb[2] * 114)) / 1000 );
+  }
+
+  //--------------------------------------------------
+  function brightnessDiff($hex1, $hex2)
+  {
+    // Returns the brightness value for a color,
+    // a number between zero and 178.
+    // To allow for maximum readability, the difference between
+    // the background brightness and the foreground brightness
+    // should be greater than 125.
+
+    $b1 = $this->brightness($hex1);
+    $b2 = $this->brightness($hex2);
+    if (is_bool($b1) || is_bool($b2)) {
+      return false;
+    }
+    return abs($b1 - $b2);
+  }
+
+  //--------------------------------------------------
+  function colorDiff($hex1, $hex2)
+  {
+    // Returns the contrast between two colors,
+    // an integer between 0 and 675.
+    // To allow for maximum readability, the difference between
+    // the background and the foreground color should be > 500.
+
+    $rgb1 = $this->hex2RGB($hex1);
+    $rgb2 = $this->hex2RGB($hex2);
+
+    if (!is_array($rgb1) || !is_array($rgb2)) {
+      // hex2RGB will raise an error
+      return -1;
+    }
+
+    $r1 = $rgb1[0];
+    $g1 = $rgb1[1];
+    $b1 = $rgb1[2];
+
+    $r2 = $rgb2[0];
+    $g2 = $rgb2[1];
+    $b2 = $rgb2[2];
+
+    return(abs($r1-$r2) + abs($g1-$g2) + abs($b1-$b2));
+  }
+
+}
+
+?>
diff --git a/wp-content/themes/monotone/footer.php b/wp-content/themes/monotone/footer.php
new file mode 100755
index 0000000000000000000000000000000000000000..e8e838a91f97d6797a8096601fc749b255275715
--- /dev/null
+++ b/wp-content/themes/monotone/footer.php
@@ -0,0 +1,18 @@
+			<div id="footer">
+			<?php get_sidebar(); ?>
+			<!-- If you'd like to support WordPress, having the "powered by" link somewhere on your blog is the best way; it's our only promotion or advertising. -->
+			<p class="info">
+					<a href="<?php bloginfo('rss2_url'); ?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/rss.png" alt="RSS" /></a>
+					<a href="http://wordpress.com/" rel="generator">Get a free blog at WordPress.com</a>
+				<!-- <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. -->
+			</p>
+			<?php include (TEMPLATEPATH . '/searchform.php'); ?>
+			</div>
+	
+		</div>
+	</div>
+</div>
+
+<?php wp_footer(); ?>
+</body>
+</html>
diff --git a/wp-content/themes/monotone/functions.php b/wp-content/themes/monotone/functions.php
new file mode 100755
index 0000000000000000000000000000000000000000..5cfcd6135fdd10f6e6ca2ff82799955539c22a89
--- /dev/null
+++ b/wp-content/themes/monotone/functions.php
@@ -0,0 +1,285 @@
+<?php
+
+// define widths
+define('MIN_WIDTH', 560);
+define('MAX_WIDTH', 840);
+
+function partial($file) { include $file.'.php'; }
+
+// filters and actions
+add_action('wp_head', header_function);
+add_filter('the_content',image_scrape);
+add_action('publish_post', image_setup);
+add_action('publish_page', image_setup);
+
+function header_function() {
+	global $vertical;
+	if(!is_single() && is_home() && !is_archive()) query_posts("what_to_show=posts&posts_per_page=1");
+	if(!is_archive() && !is_search()) : ?>
+		<style type="text/css" media="screen">
+		<?php
+		while ( have_posts() ) : the_post();
+			// ececute the specific stylesheet
+			print_stylesheet();
+			// determine if an image is vertical or not
+			if(is_vertical(the_image_url(true))) { $vertical = true; }
+ 		endwhile; rewind_posts(); ?>
+		</style>
+	<?php endif;
+}
+
+// remove image tag from post_content for display
+function image_scrape($entry) {
+	// don't scrape the image for the feed
+	if (is_feed()) { return $entry; }
+	
+	//remove image tag
+	$entry = preg_replace('/<img [^>]*src=(\"|\').+?(\1)[^>]*\/*>/','', $entry);
+	
+	//remove any empty tags left by the scrape.
+	$entry = str_replace('<p> </p>', '', $entry);
+	$entry = preg_replace( '|<([a-z]+)[^>]*>\s*</\1>|i', '', $entry );
+	$entry = preg_replace( '|<([a-z]+)[^>]*>\s*</\1>|i', '', $entry );
+	$entry = preg_replace( '|<([a-z]+)[^>]*>\s*</\1>|i', '', $entry );
+	return $entry;
+}
+
+// this resets post meta
+function reset_colors($post) {
+	delete_post_meta($post->ID, 'image_md5');
+	delete_post_meta($post->ID, 'image_url');
+	delete_post_meta($post->ID, 'image_size');
+	delete_post_meta($post->ID, 'image_tag');
+	
+	delete_post_meta($post->ID, 'image_color_base');
+	delete_post_meta($post->ID, 'image_colors');
+	delete_post_meta($post->ID, 'image_colors_bg');
+	delete_post_meta($post->ID, 'image_colors_fg');
+}
+
+function image_setup($postid) {
+	global $post;
+	$post = get_post($postid);
+	
+	// get url
+	if ( !preg_match('/<img ([^>]*)src=(\"|\')(.+?)(\2)([^>\/]*)\/*>/', $post->post_content, $matches) ) {
+		reset_colors($post);
+		return false;
+	}
+
+	// url setup
+	$post->image_url = $matches[3];
+
+	if ( !$post->image_url = preg_replace('/\?w\=[0-9]+/','', $post->image_url) )
+		return false;
+	
+	$post->image_url = clean_url( $post->image_url, 'raw' );
+	$previous_md5 = get_post_meta($post->ID, 'image_md5', true);
+	$previous_url = get_post_meta($post->ID, 'image_url', true);
+	
+	if ( ( md5($post->image_tag) != $previous_md5 ) or ( $post->image_url != $previous_url ) ) {
+		reset_colors($post);
+
+		add_post_meta($post->ID, 'image_url', $post->image_url);
+		add_post_meta($post->ID, 'image_md5', md5($post->image_tag));
+		
+		//image tag setup
+		$extra = $matches[1].' '.$matches[5];
+		$extra = preg_replace('/width=(\"|\')[0-9]+(\1)/','', $extra);
+		$extra = preg_replace('/height=(\"|\')[0-9]+(\1)/','', $extra);
+		$width = (is_vertical($post->image_url)) ? MIN_WIDTH : MAX_WIDTH;
+		
+
+		delete_post_meta($post->ID, 'image_tag');
+		add_post_meta($post->ID, 'image_tag', '<img src="'.$post->image_url.'?w='.$width.'" '.$extra.' />');
+		
+		// get colors
+		get_all_colors($post);
+		return false;
+	}
+
+	return true;
+}
+
+function is_vertical($url) {
+	if(preg_match('/(jpg|jpeg|jpe|JPEG|JPG|png|PNG|gif|GIF)/',$url)) {
+	global $post;
+	$size = get_post_meta($post->ID, 'image_size', true);
+	if ( !$size ) {
+		$size = getimagesize($url);
+		add_post_meta($post->ID, 'image_size', $size);
+	}
+	$post->image_width = $size[0];
+	if($size) {
+		if($size[0] == $size[1]) return true;
+		if($size[0] < $size[1]) return true;
+		if($size[0] < MIN_WIDTH) return true;
+	}
+	return false;
+	}
+	return false;
+}
+
+function the_image($return = null) {
+	global $post;
+	$tag = get_post_meta($post->ID, 'image_tag', true);
+	if(!$tag) {
+		image_setup($post->ID);
+		$tag = get_post_meta($post->ID, 'image_tag', true);
+	}
+	$tag = preg_replace('/width=(\"|\')[0-9]+(\1)/','', $tag);
+	$tag = preg_replace('/height=(\"|\')[0-9]+(\1)/','', $tag);
+	if($return) return $tag; /*else*/ echo $tag;
+}
+
+function the_image_url($return = null) {
+	global $post;
+	$tag = get_post_meta($post->ID, 'image_url', true);
+	if(!$tag) {
+		image_setup($post->ID);
+		$tag = get_post_meta($post->ID, 'image_url', true);
+	}
+	if($return) return $tag; /*else*/ echo $tag;
+}
+
+function the_thumbnail() {
+	global $post;
+	$src = preg_replace('/\?w\=[0-9]+/','?w=125', the_image(true));
+	$src = '<div class="image thumbnail">'.$src.'</div>';
+	echo $src;
+}
+
+function get_all_colors($post) {
+	//pull from DB
+	$base->bg = get_post_meta($post->ID, 'image_colors_bg',true);
+	$base->fg = get_post_meta($post->ID, 'image_colors_fg',true);
+	
+	// show return variable if full
+	if($base->bg != '' && $base->fg != '') {
+		return $base;
+	} else {
+	// else, get the colors
+		include_once("csscolor.php");
+		$base = new CSS_Color(base_color($post));
+		//set bg
+		$bg = $base->bg;
+		//set fg
+		$fg = $base->fg;
+		if( add_post_meta($post->ID, 'image_colors_bg', $bg, false)
+		&&  add_post_meta($post->ID, 'image_colors_fg', $fg, false)) return $base;
+	}
+}
+
+function print_stylesheet() {
+	global $post;
+	$color = get_all_colors($post);
+	?>
+	#page {
+	  	background-color:#<?php echo $color->bg['-1']; ?>;
+		color:#<?php echo $color->fg['-2']; ?>;
+	}
+	
+	a,a:link, a:visited {
+		color: #<?php echo $color->fg['-3']; ?>;
+	}
+
+  	a:hover, a:active {
+		color: #<?php echo $color->bg['+2']; ?>;
+	}
+	
+		h1, h1 a, h1 a:link, h1 a:visited, h1 a:active {
+		color: #<?php echo $color->fg['0']; ?>;
+		}
+		h1 a:hover {
+			color:#<?php echo $color->bg['+2']; ?>;
+		}
+		.navigation a, .navigation a:link, 
+		.navigation a:visited, .navigation a:active {
+		 
+		  	color: #<?php echo $color->fg['0']; ?>;
+		}
+		h1:hover, h2:hover, h3:hover, h4:hover, h5:hover h6:hover,
+		.navigation a:hover {
+			color:#<?php echo $color->fg['-2']; ?>;
+		}
+		
+	.description,
+	h3#respond,
+	#comments,
+	h2, h2 a, h2 a:link, h2 a:visited, h2 a:active,
+	h3, h3 a, h3 a:link, h3 a:visited, h3 a:active,
+	h4, h4 a, h4 a:link, h4 a:visited, h4 a:active,
+	h5, h5 a, h5 a:link, h5 a:visited, h5 a:active,
+	h6, h6 a, h6 a:link, h6 a:visited, h6 a:active {
+	  	/* Use the corresponding foreground color */
+	  	color: #<?php echo $color->fg['-1']; ?>;
+		border-color: #<?php echo $color->bg['+3']; ?>;
+		border-bottom: #<?php echo $color->bg['+3']; ?>;
+	}
+
+	#postmetadata, #commentform p, .commentlist li, #post, #postmetadata .sleeve, #post .sleeve,
+	#content {
+		color: #<?php echo $color->fg['-2']; ?>;
+		border-color: #<?php echo $color->fg['-2']; ?>;
+	} <?php
+}
+
+function base_color($post) {
+	
+	$url = get_post_meta($post->ID, 'image_url', true);
+
+	// get the image name
+	$imgname = trim($url);
+	
+	// create a working image 
+	$im = imagecreatefromjpeg($imgname);
+	
+	$height = imagesy($im);
+	$top = $height - 400;
+	$width = imagesx($im);
+	
+	// sample five points in the image, based on rule of thirds and center
+	$rgb = array();
+	
+	$topy = round($height / 3);
+	$bottomy = round(($height / 3) * 2);
+	$leftx = round($width / 3);
+	$rightx = round(($width / 3) * 2);
+	$centery = round($height / 2);
+	$centerx = round($width / 2);
+	
+	$rgb[1] = imagecolorat($im, $leftx, $topy);
+	$rgb[2] = imagecolorat($im, $rightx, $topy);
+	$rgb[3] = imagecolorat($im,  $leftx, $bottomy);
+	$rgb[4] = imagecolorat($im,  $rightx, $bottomy);
+	$rgb[5] = imagecolorat($im, $centerx, $centery);
+	
+	// extract each value for r, g, b
+	$r = array();
+	$g = array();
+	$b = array();
+	$hex = array();
+	
+	$ct = 0; $val = 50;
+	
+	// process points
+	for ($i = 1; $i <= 5; $i++) {
+	   $r[$i] = ($rgb[$i] >> 16) & 0xFF;
+	   $g[$i] = ($rgb[$i] >> 8) & 0xFF;
+	   $b[$i] = $rgb[$i] & 0xFF;
+	
+	   // find darkest color
+	   $tmp = $r[$i] + $g[$i] + $b[$i];
+	
+	   	if ($tmp < $val) {
+	       $val = $tmp;
+	       $ct = $i;
+	   	}
+		$hex[$i] = rgbhex($r[$i],$g[$i],$b[$i]);
+	}
+	return $hex[3];
+}
+
+function rgbhex($red, $green, $blue) { return sprintf('%02X%02X%02X', $red, $green, $blue); }
+
+?>
diff --git a/wp-content/themes/monotone/header.php b/wp-content/themes/monotone/header.php
new file mode 100755
index 0000000000000000000000000000000000000000..af2e268e5002f91d3c57fd329092de3cacae0197
--- /dev/null
+++ b/wp-content/themes/monotone/header.php
@@ -0,0 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
+
+<title><?php wp_title('&laquo;', true, 'right'); ?> <?php if ( is_single() ) { ?> Blog Archive &laquo; <?php } ?><?php bloginfo('name'); ?></title>
+
+<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats -->
+
+<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
+<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
+<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
+
+<!--[if IE]>
+<style type="text/css"> 
+	body { font-size:12px; } 
+</style>
+<![endif]-->
+
+<?php wp_head(); ?>
+</head>
+<body<?php
+global $vertical;
+//set vertical class or archive class, if needed
+if($vertical && !is_archive() && !is_search()) { echo ' class="vertical"'; } 
+if(is_archive() or is_search()) echo ' class="archive"';
+?>>
+
+<div id="page">
+
+<div id="header">
+		<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
+		<div class="description"><?php bloginfo('description'); ?></div>
+		
+		<ul id="menu">
+			<li><a href="<?php bloginfo('url'); ?>/<?php echo mysql2date('Y', get_lastpostdate('blog')); ?>/">archive</a></li>
+			<li><a href="<?php bloginfo('url'); ?>/about/">about</a></li>
+		</ul>
+</div>
+
+<div id="content">
+	<div class="sleeve">
diff --git a/wp-content/themes/monotone/htaccess.txt b/wp-content/themes/monotone/htaccess.txt
new file mode 100644
index 0000000000000000000000000000000000000000..40057c36f5cded6a19e32e94e115f682645ef60d
--- /dev/null
+++ b/wp-content/themes/monotone/htaccess.txt
@@ -0,0 +1,14 @@
+RewriteEngine On
+RewriteCond %{QUERY_STRING}	^.*(w|h|f)\=.*$
+RewriteRule ^(wp\-content\/uploads\/.*\.)(jpg|JPG|jpeg|png|PNG|gif|GIF)$ /thumb.php?image=$1$2 [QSA,L]
+
+# BEGIN WordPress
+<IfModule mod_rewrite.c>
+RewriteEngine On
+RewriteBase /
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule . /index.php [L]
+</IfModule>
+
+# END WordPress
diff --git a/wp-content/themes/monotone/images/rss.png b/wp-content/themes/monotone/images/rss.png
new file mode 100755
index 0000000000000000000000000000000000000000..9d8e3e23c8f6eef532efb6046559578b7d8a1103
Binary files /dev/null and b/wp-content/themes/monotone/images/rss.png differ
diff --git a/wp-content/themes/monotone/index.php b/wp-content/themes/monotone/index.php
new file mode 100755
index 0000000000000000000000000000000000000000..1eb22216de1c8bdc98eb71f12c1d6bcfd5027e50
--- /dev/null
+++ b/wp-content/themes/monotone/index.php
@@ -0,0 +1,27 @@
+<?php get_header(); ?>
+
+<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+	<?php $wp_query->is_single = 1;
+	 		if(is_home()) $wp_query->is_single = 0; ?>
+	<div class="image">
+		<div class="nav prev"><?php next_post_link('%link','&lsaquo;') ?></div>
+		<?php the_image(); ?>
+		<div class="nav next"><?php if(is_home()) $wp_query->is_single = 1; previous_post_link('%link','&rsaquo;'); if(is_home()) $wp_query->is_single = 0; ?></div>
+	</div>
+	<?php partial('post'); ?>
+
+<?php endwhile; else : ?>
+
+	<h2>Not Found</h2>
+	<p>Sorry, but you are looking for something that isn't here.</p>
+	<?php include (TEMPLATEPATH . "/searchform.php"); ?>
+<?php endif; ?>
+
+<?php $wp_query->is_single = 1; ?>
+
+<div class="navigation">
+	<div class="prev"><?php next_post_link('%link', '&lsaquo' ) ?></div>
+	<div class="next"><?php previous_post_link('%link','&rsaquo;') ?></div>
+</div>
+
+<?php get_footer(); ?>
diff --git a/wp-content/themes/monotone/page.php b/wp-content/themes/monotone/page.php
new file mode 100755
index 0000000000000000000000000000000000000000..5365aa98bcabe7790ee9d971383b05d8a74a630d
--- /dev/null
+++ b/wp-content/themes/monotone/page.php
@@ -0,0 +1,14 @@
+<?php get_header(); ?>
+<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+	<div class="image">
+		<div class="nav prev"><?php next_post_link('%link','&lsaquo;') ?></div>
+		<?php the_image(); ?>
+		<div class="nav next"><?php if(is_home()) $wp_query->is_single = 1; previous_post_link('%link','&rsaquo;'); if(is_home()) $wp_query->is_single = 0; ?></div>
+	</div>
+	<?php partial('post'); ?>	
+<?php endwhile; else : ?>
+	<h2 class="center">Not Found</h2>
+	<p class="center">Sorry, but you are looking for something that isn't here.</p>
+	<?php include (TEMPLATEPATH . "/searchform.php"); ?>
+<?php endif; ?>
+<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/monotone/post.php b/wp-content/themes/monotone/post.php
new file mode 100755
index 0000000000000000000000000000000000000000..8feccb8ef32a26f93c89bb65ae8d1b3f7bbe1396
--- /dev/null
+++ b/wp-content/themes/monotone/post.php
@@ -0,0 +1,28 @@
+<div id="container">
+<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
+
+<div id="postmetadata">
+	<div class="sleeve">
+		<p>By: <cite><?php the_author(); ?></cite></p>
+		<p><small><a href="<?php echo get_month_link(get_the_time('Y'), get_the_time('m')); ?>"><?php the_time('M d Y') ?></a></small></p>
+		<p><?php the_tags('tags: ', ', ', '<br />'); ?></p>
+    	
+		<p>Category: <?php the_category(', ') ?></p>
+		<p><?php edit_post_link('Edit This Post', '', ''); ?></p>
+		<p><?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></p>
+	</div>
+</div>
+<div id="post">
+	<div class="sleeve">
+	<?php the_content('Read the rest of this entry &raquo;'); ?>
+	</div>
+</div>
+
+<?php if(is_single()) { ?>
+<div class="navigation">
+	<div class="prev"><?php next_post_link('%link', '&lsaquo;') ?></div>
+	<div class="next"><?php previous_post_link('%link', '&rsaquo;') ?></div>
+</div>
+<?php comments_template();
+} ?>
+</div>
\ No newline at end of file
diff --git a/wp-content/themes/monotone/rtl.css b/wp-content/themes/monotone/rtl.css
new file mode 100755
index 0000000000000000000000000000000000000000..daa5bbacf8892901c4a4a390d0af4c0c0be54699
--- /dev/null
+++ b/wp-content/themes/monotone/rtl.css
@@ -0,0 +1,78 @@
+/* Based on Arabic (RTL) version of Kubrick theme, converted by Serdal (Serdal.com) */
+
+.narrowcolumn, .alignleft, .widecolumn .smallattachment { float: right; }
+.alignright, #commentform #submit { float: left; }
+
+#page, .post, #wp-calendar #prev a { text-align: right; }
+
+body, #commentform p { font-family: 'Geeza Pro', Tahoma, 'Lucida Grande', Verdana, Arial, Sans-Serif; }
+
+small { font-family: 'Geeza Pro', Tahoma, Arial, Helvetica, Sans-Serif; }
+
+h1, h2, h3 { font-family: 'Al Bayan', 'Traditional Arabic', 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif; }
+
+#sidebar h2 { font-family: 'Al Bayan', 'Traditional Arabic', 'Lucida Grande', Verdana, Sans-Serif; }
+
+.commentlist li, #commentform input, #commentform textarea { font-family: 'Geeza Pro', Tahoma, 'Lucida Grande', Verdana, Arial, Sans-Serif; }
+
+#sidebar { font-family: 'Geeza Pro', Tahoma, 'Lucida Grande', Verdana, Arial, Sans-Serif; }
+
+#wp-calendar caption { font-family: 'Geeza Pro', Tahoma, 'Lucida Grande', Verdana, Arial, Sans-Serif; }
+
+acronym, abbr, span.caps { letter-spacing: normal; }
+
+#header { margin: 0 1px 0 0; }
+
+.narrowcolumn { padding: 0 45px 20px 0; }
+
+.widecolumn { margin: 5px 150px 0 0; }
+
+.widecolumn .smallattachment { margin: 5px 0px 5px 5px; }
+
+.postmetadata { clear: right; }
+
+img.alignright { margin: 0 7px 2px 0; }
+
+img.alignleft { margin: 0 0 2px 7px; }
+
+.entry ol { padding: 0 35px 0 0; }
+
+#sidebar ul ul, #sidebar ul ol { margin: 5px 10px 0 0; }
+
+#sidebar ul ul ul, #sidebar ul ol { margin: 0 10px 0 0; }
+
+#commentform input { margin: 5px 0 1px 5px; }
+
+.commentlist p { margin: 10px 0 10px 5px; }
+
+html>body .entry li { margin: 7px 10px 8px 0; }
+
+html>body .entry ul {
+	margin-left: auto;
+	margin-right: 0px;
+	padding: 0 30px 0 0;
+}
+
+#sidebar {
+	margin-left: auto;
+	margin-right: 545px;
+}
+
+#wp-calendar #prev a, html>body .entry ul {
+	padding-left: 0;
+	padding-right: 10px;
+}
+
+blockquote {
+	border-left: 0;
+	border-right: 5px solid #ddd;
+	padding-left: 0;
+	padding-right: 20px;
+	margin: 15px 10px 0 30px;
+}
+
+#wp-calendar #next a {
+	padding-right: 0;
+	padding-left: 10px;
+	text-align: left;
+}
diff --git a/wp-content/themes/monotone/screenshot.png b/wp-content/themes/monotone/screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4e8ba243671d2895ad569a03642dcdbed8730f0
Binary files /dev/null and b/wp-content/themes/monotone/screenshot.png differ
diff --git a/wp-content/themes/monotone/search.php b/wp-content/themes/monotone/search.php
new file mode 100755
index 0000000000000000000000000000000000000000..6e39b553eef5c700c2c9326bd6bca2ce3d02df87
--- /dev/null
+++ b/wp-content/themes/monotone/search.php
@@ -0,0 +1,32 @@
+<?php get_header(); rewind_posts(); ?>
+<div class="search">
+		
+		<?php if (have_posts()) : ?>
+		<h2>Search Results</h2>
+				<div class="nav">
+					<div class="prev"><?php next_posts_link('&laquo; Older Entries') ?></div>
+					<div class="next"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
+				</div>
+		<ul class="thumbnails">
+				<?php while (have_posts()) : the_post(); ?>
+
+							<li id="post-<?php the_ID(); ?>">
+								<a href="<?php the_permalink() ?>" title="Link to <?php the_title_attribute(); ?>"><?php the_thumbnail(); ?></a>
+							</li>
+
+				<?php endwhile; ?>
+		</ul>
+		<div class="nav">
+			<div class="prev"><?php next_posts_link('&laquo; Older Entries') ?></div>
+			<div class="next"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
+		</div>
+
+	<?php else : ?>
+
+		<h2>Not Found</h2>
+		<?php include (TEMPLATEPATH . '/searchform.php'); ?>
+
+	<?php endif; ?>
+</div>
+
+<?php get_footer(); ?>
diff --git a/wp-content/themes/monotone/searchform.php b/wp-content/themes/monotone/searchform.php
new file mode 100755
index 0000000000000000000000000000000000000000..22820834f5e45354264f2d78b915192833ee174a
--- /dev/null
+++ b/wp-content/themes/monotone/searchform.php
@@ -0,0 +1,5 @@
+<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
+<div><input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
+<input type="submit" id="searchsubmit" value="Search" />
+</div>
+</form>
diff --git a/wp-content/themes/monotone/sidebar.php b/wp-content/themes/monotone/sidebar.php
new file mode 100755
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/wp-content/themes/monotone/single.php b/wp-content/themes/monotone/single.php
new file mode 100755
index 0000000000000000000000000000000000000000..82391eecf82db68ecfaf6d4fcaac069347b768aa
--- /dev/null
+++ b/wp-content/themes/monotone/single.php
@@ -0,0 +1,15 @@
+<?php get_header(); ?>
+<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+	<div class="image">
+	<div class="nav prev"><?php next_post_link('%link') ?></div>
+	<?php the_image(); ?>
+	<div class="nav next"><?php previous_post_link('%link') ?></div>
+	</div>
+	
+	<?php partial('post'); ?>
+<?php endwhile; else : ?>
+	<h2 class="center">Not Found</h2>
+	<p class="center">Sorry, but you are looking for something that isn't here.</p>
+	<?php include (TEMPLATEPATH . "/searchform.php"); ?>
+<?php endif; ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/monotone/style.css b/wp-content/themes/monotone/style.css
new file mode 100755
index 0000000000000000000000000000000000000000..c48d21b31a8b064e9e836d4133a238d453df4006
--- /dev/null
+++ b/wp-content/themes/monotone/style.css
@@ -0,0 +1,146 @@
+/*
+Theme Name:Monotone
+Theme URI:http://monotonedemo.wordpress.com/
+Description:A photo blogging theme. Colors change to match the photo.
+Version:1.1
+Author:Noel Jackson / eight6
+Author URI:http://eight6.com
+Tags:photoblogging,one column,fixed width,custom colors
+*/
+/* --------------------------------------------------------------
+* Resets default browser CSS.
+Based on work by Eric Meyer:* meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/
+-------------------------------------------------------------- */
+html,body,div,span,applet,object,iframe,
+h1,h2,h3,h4,h5,h6,p,blockquote,pre,
+a,abbr,acronym,address,big,cite,code,
+del,dfn,em,font,img,ins,kbd,q,s,samp,
+small,strike,strong,sub,sup,tt,var,
+dl,dt,dd,ol,ul,li,
+fieldset,form,label,legend,
+table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
+/* remember to define focus styles! */
+:focus{outline:0;}
+body{line-height:1;color:black;background:white;}
+ol,ul{list-style:none;}
+/* tables still need 'cellspacing="0"' in the markup */
+table{border-collapse:separate;border-spacing:0;}
+caption,th,td{text-align:left;font-weight:normal;}
+blockquote:before,blockquote:after,
+q:before,q:after{content:"";}
+blockquote,q{quotes:"" "";}
+/* Tables still need 'cellspacing="0"' in the markup. */
+table{border-collapse:separate;border-spacing:0;}
+caption,th,td{text-align:left;font-weight:400;}
+/* Remove possible quote marks (") from <q>,<blockquote>. */
+blockquote:before,blockquote:after,q:before,q:after{content:"";}
+blockquote,q{quotes:"" "";}
+a img{border:none;}
+/************* END RESET RELOADED *************************/
+body{font:normal 75%/1.6em "Lucida Sans","Lucida Grande","Trebuchet MS",Georgia,Helvetica,sans-serif;color:#444;background-color:white;}
+a,a:link,a:visited,a:active{color:#333;text-decoration:none;}
+a:hover{color:#666;}
+h1,h2,h3,h4,h5,h6{ font-family:"Lucida Fax",Georgia,Helvetica,sans-serif; }
+h2{ font-size:1.5em;line-height:1;font-weight:bold;margin-bottom:.25em;color #333; }
+h2,h2 a,h2 a:link,h2 a:visited,h2 a:active{ color:#6c6c6c;font-weight:bold;text-decoration:none;letter-spacing:-.02em; }
+h2 a:hover{}
+h3{line-height:1em;padding-bottom:5px;font-size:1.2em;font-weight:bold;color:#6e6e6e;}
+h4{}
+ul, dl, ol { margin-left: 20px; }
+li { list-style: square; }
+strong{font-weight:bold;}
+blockquote,em, cite, q {font-style:italic;}
+/* Structure */
+#page{width:840px;margin:0px auto 35px auto;background-color:white;}
+.archive #page{width:820px;}
+.vertical #page{width:560px;}
+/* Header */
+#header{clear:both;}
+h1{font-size:1.5em;line-height:2.666em;float:left;letter-spacing:-.02em;margin-left:10px;}
+h1 a,h1 a:link,h1 a:visited,h1 a:active{color:#333;text-decoration:none;font-weight:bold;}
+h1 a:hover{}
+.archive h1{margin-left:0;}
+.description{float:left;line-height:4em;margin-left:1em;font-style:italic;padding-left:1em;color:#444;}
+#menu{float:right;margin-right:10px;}
+.archive #menu{margin-right:0;}
+#menu li{display:block;float:left;}
+#menu li a,#menu li a:link,#menu li a:visited,#menu li a:active{height:4em;line-height:4em;display:block;float:left;font-weight:normal;letter-spacing:normal;margin-left:10px;text-transform:uppercase;}
+#menu li.first a{border-left:0;}
+
+/* Content */
+#content{clear:both;}
+#content .sleeve{margin:0;}
+.vertical #container{clear:both;margin:0 0 0 10px;}
+#content h2{color:#333;margin-left:210px;margin-top:10px;}
+.archive #content h2{margin-left:0;margin-bottom:10px;}
+.image{float:left;text-align:center;position:relative;width:840px;}
+.image img{margin:0;padding:0 0 10px 0;}
+.vertical .image{width:560px;clear:both;float:none;}
+.thumbnails{margin:0 auto;width:860px;margin-left:-5px;clear:both;}
+.thumbnails li{float:left;display:block;width:133px;height:85px;margin-left:5px;margin-bottom:5px;list-style:none;}
+a .thumbnail,a:link .thumbnail,a:visited .thumbnail,a:active .thumbnail{float:left;display:block;width:133px;height:85px;background:#c4c4c4;text-align:left;}
+a:hover .thumbnail{background:#919191;}
+.thumbnail{float:left;display:block;width:133px;height:85px;}
+.thumbnail img{max-width:123px;margin:5px 5px 0 5px;padding:0 0 5px 0;max-height:75px;border:0;}
+#container{clear:both;margin:0 0 0 10px;padding-top:5px;}
+
+/* Post Layout */
+#post{float:left;margin:0 20px 0 0;width:340px;border-top:1px solid #ccc;font-size:1.1em;}
+.vertical #post{margin:0;}
+#post .sleeve{border-top:2px solid #ccc;padding:10px;display:block;position:none;}
+#postmetadata .sleeve{padding:10px;}
+#postmetadata,.commentlist li .metadata{font-size:.92em;line-height:1.45em;width:200px;float:left;border-top:1px solid #ccc;}
+#postmetadata cite,
+#postmetadata small{clear:both;}
+#post p{margin-bottom:1.5em;}
+.navigation{font-family:"Courier New","Lucida Grande",Tahoma,"Trebuchet MS",sans-serif;width:260px;font-size:100px;line-height:.5em;float:left;}
+.vertical .navigation{margin:0px;width:540px;}
+.navigation div{float:left;display:block;width:50%;}
+.navigation div.prev{text-align:left;}
+.navigation div.next{float:right;text-align:right;}
+.vertical .navigation div.prev{text-align:right;}
+.vertical .navigation div.next{float:right;text-align:left;}
+
+/* Comments list */
+.commentlist{clear:both;width:540px;}
+.commentlist li{border-bottom:1px solid #ccc;}
+.commentlist li .metadata{border:0;margin:10px 0;width:148px;float:left;}
+.commentlist li .gravatar{float:left;width:32px;margin:10px;}
+.commentlist li cite,
+.commentlist li small{font-weight:bold;clear:both;display:block;}
+.commentlist li .content{padding:10px;float:left;clear:right;width:287px;}
+.commentlist li .clear{clear:both;}
+#content .commentlist .comment p{font-weight:normal ;}
+
+/* Comment Form */
+h3#respond,h3#comments{width:530px;margin:0;padding:0 0 5px 10px;clear:both;border-bottom:1px solid #afb1b2;padding-top:20px;}
+#comments{border-bottom:2px solid #afb1b2;}
+#commentform{width:540px;margin-bottom:10px;}
+#commentform p{padding:10px;}
+#commentform small{display:inline;}
+#commentform .sleeve{margin:10px;}
+#commentform label{width:200px;display:block;float:left;font-size:.96em;line-height:2em;}
+#commentform label{margin:0px;margin-bottom:10px;}
+#commentform p input{float:left;margin:0;border:none;width:310px;padding:3px;margin-bottom:10px;}
+#commentform input#submit{width:15em;height:2em;margin-left:10px;}
+#commentform textarea,#commentform input{font-family:"Lucida Grande",Tahoma,"Trebuchet MS";font-size:1.2em;}
+#commentform p{clear:both;border-top:1px solid #ccc;line-height:1.6em;}
+#commentform textarea{:10px;width:520px;}
+
+/* Footer */
+#footer{clear:both;height:42px;padding-top:20px;margin:0px 10px 0px 10px;width:820px;}
+.archive #footer{margin:0;}
+.vertical #footer{width:540px;}
+#footer .info{clear:both;float:left;width:50%;height:32px;display:block;line-height:32px;position:relative;padding-left:42px;}
+#footer .info img{position:absolute;margin-left:-42px;}
+#searchform{float:right;}
+#searchform #s{width:150px;}
+.archive{margin:0 auto;}
+#filters{clear:both;height:2em;margin-bottom:1em; margin-left: 0;}
+#filters li{ list-style: none;  margin-left: 0; float:left;margin-right:2em;}
+a:hover .nav_over{background-color:#afb1b2;}
+.image .nav{position:absolute;width:50%;height:100%;z-index:1000;}
+.image .nav a,.image .nav a:link,.image .nav a:visited,.image .nav a:active{width:100%;height:100%;display:block;position:absolute;text-indent:-1000em;}
+.prev{left:0;width:50%;}
+.next{top:0;left:50%;width:50%;}
+.nav_over{position:absolute;top:50%;margin-top:-1em;display:block;z-index:1000;color:#fff;width:1em;height:1em;line-height:1em;text-align:center;font-size:2em;}
diff --git a/wp-content/themes/monotone/thumb.php b/wp-content/themes/monotone/thumb.php
new file mode 100755
index 0000000000000000000000000000000000000000..a418cb397890408eecfc4f87701e00ce3d7a9b71
--- /dev/null
+++ b/wp-content/themes/monotone/thumb.php
@@ -0,0 +1,183 @@
+<?php
+/*
+Thumby v 0.1, GPL 2, http://eight6.com/projects/thumby/
+
+Created by Noel Jackson (http://eight6.com) for PhotoStack (http://photostack.org).
+
+A simple class that creates and caches a thumbnail of the specified size for the specified image.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$cache = $_SERVER['DOCUMENT_ROOT'].'/cache/';
+
+$image_request = $_REQUEST['image'];
+if(get_magic_quotes_gpc()) $image_request = stripslashes($_REQUEST['image']);
+
+new Thumby($image_request, $cache, (int) $_REQUEST["w"], (int) ($_REQUEST["h"]), isset($_REQUEST['f']) );
+
+class Thumby {
+
+function not_found() {
+	header("HTTP/1.0 404 Not Found");
+	echo 'File not found.';
+	exit;
+}
+	
+function Thumby($image, $pathto_cache, $max_width = 1200, $max_height = 1200, $force_size = 0) {
+	if($force_size = '') $force_size = 0;
+	if($max_width == 0) $max_width = 1200;
+	if($max_height == 0) $max_height = 1200;
+
+	// If you know what you're doing, you can set this to "im" for ImageMagick, make sure to change $convert_path below
+	$software = 'gd';
+	$gal_path = $_SERVER['DOCUMENT_ROOT'];
+	$ext = strtolower(pathinfo($image, PATHINFO_EXTENSION));
+	$extensions = explode(",", 'jpg,jpe,jpeg,png,gif');
+  	$image_path = $gal_path.'/'.$image;
+
+	if( strpos($image, './') or !in_array($ext, $extensions) or !file_exists($image_path))
+  		$this->not_found();
+
+  	$thumb_path = $pathto_cache.$max_width."x".$max_height.($force_size?"f":"").strtr("-$gallery-$image",":/?\\","----");
+  	$imageModified = @filemtime($image_path);
+  	$thumbModified = @filemtime($thumb_path);	
+
+	switch($ext) {
+		case 'gif' : header("Content-type: image/gif"); break;
+		case 'png' : header("Content-type: image/png"); break;
+		default: header("Content-type: image/jpeg"); break;
+	}
+  	//if thumbnail is newer than image then output cached thumbnail and exit
+ 	if($imageModified<$thumbModified) { 
+    	header("Last-Modified: ".gmdate("D, d M Y H:i:s",$thumbModified)." GMT");
+    	readfile($thumb_path);
+    	exit;
+  	} else {
+		$this->make_thumb($image_path, $thumb_path, $max_width, $max_height, $force_size);
+	}
+}
+
+function make_thumb($image_path, $thumb_path, $max_width = 1200, $max_height = 1200, $force_size, $software="gd2", $convert_path = null) {
+
+	$convert_path = '/opt/local/bin/convert';
+		
+	$thumbQuality = 95;
+	list($image_width, $image_height, $image_type) = GetImageSize($image_path);
+	
+	 //if aspect ratio is to be constrained set crop size
+	if($force_size) {
+		$newAspect = $max_width/$max_height;
+	    $oldAspect = $image_width/$image_height;
+	
+	    if($newAspect > $oldAspect) {
+	      $cropWidth = $image_width;
+	      $cropHeight = round($oldAspect/$newAspect * $image_height);
+	    } else {
+	      $cropWidth = round($newAspect/$oldAspect * $image_width);
+	      $cropHeight = $image_height;
+	    }
+	  //else crop size is image size
+	} else {
+		$cropWidth = $image_width;
+		$cropHeight = $image_height;
+	}
+
+	//set cropping offset
+	$cropX = floor(($image_width-$cropWidth)/2);
+	$cropY = floor(($image_height-$cropHeight)/2);
+
+	//compute width and height of thumbnail to create
+	if($cropWidth >= $max_width && ($cropHeight < $max_height || ($cropHeight > $max_height && round($cropWidth/$cropHeight * $max_height) > $max_width))) {
+		$thumbWidth = $max_width;
+	    $thumbHeight = round($cropHeight/$cropWidth * $max_width);
+	} elseif($cropHeight >= $max_height) {
+		$thumbWidth = round($cropWidth/$cropHeight * $max_height);
+	    $thumbHeight = $max_height;
+	} else {
+		//image is smaller than required dimensions so output it and exit
+	    readfile($image_path);
+	    exit;
+	}
+	
+	switch($software) {
+		case "im" : //use ImageMagick
+	  	// hack for square thumbs;
+	  	if(($thumbWidth == $thumbHeight) or $force_size) {
+	  		$thumbsize = $thumbWidth;
+			if($image_height > $image_width) {
+				$cropY = -($thumbsize / 2);
+				$cropX = 0;
+				$thumbcommand = "{$thumbsize}x";
+			} else {
+				$cropY = -($thumbsize / 2);
+				$cropX = 0;
+				$thumbcommand = "x{$thumbsize}";
+			}
+	    } else {
+	    	$thumbcommand = $thumbWidth.'x'.$thumbHeight;
+	    }
+	    $cmd  = '"'.$convert_path.'"';
+	    if($force_size) $cmd .= " -gravity center -crop {$thumbWidth}x{$thumbHeight}!+0+0";
+	    $cmd .= " -resize {$thumbcommand}";
+	    if($image_type == 2) $cmd .= " -quality $thumbQuality";
+	    $cmd .= " -interlace Plane";
+	    $cmd .= ' +profile "*"';
+	    $cmd .= ' '.escapeshellarg($image_path).' '.escapeshellarg($thumb_path);
+	   	exec($cmd);  
+	   	readfile($thumb_path);
+		exit;
+	    break;
+
+	  case "gd2" :
+	  default : //use GD by default
+	    //read in image as appropriate type
+	    switch($image_type) {
+	      case 1 : $image = ImageCreateFromGIF($image_path); break;
+	      case 3 : $image = ImageCreateFromPNG($image_path); break;
+	      case 2 : 
+	      default: $image = ImageCreateFromJPEG($image_path); break;
+	    }
+		
+		//create blank truecolor image
+	    $thumb = ImageCreateTrueColor($thumbWidth,$thumbHeight);
+	    
+		//resize image with resampling
+	    ImageCopyResampled( $thumb, $image, 0, 0, $cropX, $cropY, $thumbWidth, $thumbHeight, $cropWidth, $cropHeight);
+
+	    //set image interlacing
+	    ImageInterlace($thumb, $this->config->progressive_thumbs);
+
+	    //output image of appropriate type
+	    switch($image_type) {
+	      case 1 :
+	        //GIF images are output as PNG
+	      case 3 :
+	        ImagePNG($thumb,$thumb_path);
+	        break;
+	      case 2 :
+	      default: 
+	        ImageJPEG($thumb,$thumb_path,$thumbQuality);
+	        break;
+	    }
+	    ImageDestroy($image);
+	    ImageDestroy($thumb);
+		readfile($thumb_path);
+		
+	  }	
+	}
+}
+?>
\ No newline at end of file