diff --git a/wp-content/themes/monochrome-pro/404.php b/wp-content/themes/monochrome-pro/404.php new file mode 100644 index 0000000000000000000000000000000000000000..1e069358db1bf554b526f78292748eeabea42bfa --- /dev/null +++ b/wp-content/themes/monochrome-pro/404.php @@ -0,0 +1,18 @@ +<?php get_header(); ?> +<div class="column span-17 colborder first" id="maincontent"> + <div class="content"> + <h2>Error 404 - Not Found</h2> + <p> + Yikes. Something went wrong! Either the page you are looking for doesn't exist or you might have mistyped. + </p> + <p> + You can use the search box at the top right to find what you are looking for. + </p> + </div> +</div> +<div class="column span-6 last"> +<?php include (TEMPLATEPATH . '/sidebar_single.php'); ?> +</div> +<hr /> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/archive.php b/wp-content/themes/monochrome-pro/archive.php new file mode 100644 index 0000000000000000000000000000000000000000..c744d1727be572dc2e2700f7e8e2b42868b2d58d --- /dev/null +++ b/wp-content/themes/monochrome-pro/archive.php @@ -0,0 +1,43 @@ +<?php get_header(); ?> +<div class="column span-15 first"> + <div class="content"> +<?php 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 class="category_page"><?php echo single_cat_title(); ?></h2> + <?php /* If this is a monthly archive */ } elseif (is_month()) { ?> + <h2 class="category_page">Entries from <?php the_time('F Y'); ?></h2> + <?php /* If this is a search */ } elseif (is_search()) { ?> + <h2>Search Results</h2> + <?php } ?> +<?php while (have_posts()) : the_post(); ?> +<div class="post" id="post-<?php the_ID(); ?>"> +<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2> +<p class="small"><?php the_time('F jS, Y') ?> by <?php the_author() ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></p> +<?php echo get_the_image_link(array('thumbnail','My Thumbnail'),'thumbnail'); ?> +<div class="entry"> + <?php the_excerpt() ?> + </div> +<hr class="space" /> +</div> + <?php endwhile; ?> + +<div class="navigation"> +<div class="alignleft"><?php next_posts_link('« Older Entries') ?></div> +<div class="alignright"><?php previous_posts_link('Newer Entries »') ?></div> +</div> + <?php else : ?> + <h2>Welp, we couldn't find that...try again?</h2> + <div class="entry"> + <?php include (TEMPLATEPATH . '/searchform.php'); ?> + </div> + <?php endif; ?> + </div> +</div> +<div class="column span-8 prepend-1 last"> +<hr class="space" /> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar') ) : ?> +<?php endif; ?> +</div> +<hr /> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/archives.php b/wp-content/themes/monochrome-pro/archives.php new file mode 100644 index 0000000000000000000000000000000000000000..380aad7f4f3a6c8bd3c96486d9561edc8b66bdd7 --- /dev/null +++ b/wp-content/themes/monochrome-pro/archives.php @@ -0,0 +1,26 @@ +<?php +/* +Template Name: Archives +*/ +?> +<?php get_header(); ?> +<div class="column span-15 first"> + <div class="content"> + <h2>Archives by Month:</h2> + <ul> +<?php wp_get_archives('type=monthly'); ?> + </ul> + <h2>Archives by Subject:</h2> + <ul> +<?php wp_list_categories(); ?> + </ul> + </div> +</div> +<div class="column span-8 prepend-1 last"> +<hr class="space" /> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar') ) : ?> +<?php endif; ?> +</div> +<hr /> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/attachment.php b/wp-content/themes/monochrome-pro/attachment.php new file mode 100644 index 0000000000000000000000000000000000000000..55375f05537758118b2d7f7f61e7f3fa292bc555 --- /dev/null +++ b/wp-content/themes/monochrome-pro/attachment.php @@ -0,0 +1,67 @@ +<?php get_header(); ?> +<div id="content" class="widecolumn"> +<?php if (have_posts()) : while (have_posts()) : the_post(); ?> + <div class="navigation"> + <div class="alignleft"> + + </div> + <div class="alignright"> + + </div> + </div> +<?php $attachment_link = get_the_attachment_link($post->ID, true, array(450, 800)); // This also populates the iconsize for the next line ?> +<?php $_post = &get_post($post->ID); $classname = ($_post->iconsize[0] <= 128 ? 'small' : '') . 'attachment'; // This lets us style narrow icons specially ?> + <div class="post" id="post-<?php the_ID(); ?>"> + <h2><a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment"> +<?php echo get_the_title($post->post_parent); ?> + </a> » <a href="<?php echo get_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"> +<?php the_title(); ?> + </a></h2> + <div class="entry"> + <p class="<?php echo $classname; ?>"> +<?php echo $attachment_link; ?> + <br /> +<?php echo basename($post->guid); ?> + </p> +<?php the_content('<p class="serif">Read the rest of this entry »</p>'); ?> +<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?> + <p class="postmetadata alt"> + <small> This entry was posted +<?php /* This is commented, because it requires a little adjusting sometimes. + You'll need to download this plugin, and follow the instructions: + http://binarybonsai.com/archives/2004/08/17/time-since-plugin/ */ + /* $entry_datetime = abs(strtotime($post->post_date) - (60*120)); echo time_since($entry_datetime); echo ' ago'; */ ?> + on +<?php the_time('l, F jS, Y') ?> + at +<?php the_time() ?> + and is filed under +<?php the_category(', ') ?> + . You can follow any responses to this entry through the +<?php comments_rss_link('RSS 2.0'); ?> + feed. +<?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) { + // Both Comments and Pings are open ?> + You can <a href="#respond">leave a response</a>, or <a href="<?php trackback_url(true); ?>" rel="trackback">trackback</a> from your own site. +<?php } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) { + // Only Pings are Open ?> + Responses are currently closed, but you can <a href="<?php trackback_url(true); ?> " rel="trackback">trackback</a> from your own site. +<?php } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) { + // Comments are open, Pings are not ?> + You can skip to the end and leave a response. Pinging is currently not allowed. +<?php } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) { + // Neither Comments, nor Pings are open ?> + Both comments and pings are currently closed. +<?php } edit_post_link('Edit this entry.','',''); ?> + </small> + </p> + </div> + </div> +<?php comments_template(); ?> +<?php endwhile; else: ?> + <p> + Sorry, no attachments matched your criteria. + </p> +<?php endif; ?> +</div> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/author.php b/wp-content/themes/monochrome-pro/author.php new file mode 100644 index 0000000000000000000000000000000000000000..61f74756167ef09f328994a69457ef5f0de22742 --- /dev/null +++ b/wp-content/themes/monochrome-pro/author.php @@ -0,0 +1,88 @@ +<?php get_header(); ?> +<div class="column span-15 first"> + <div class="content"> +<!-- This sets the $curauth variable --> +<?php +if(isset($_GET['author_name'])) : +$curauth = get_userdatabylogin($author_name); +else : +$curauth = get_userdata(intval($author)); +endif; +?> + <div class="author"> + <h4>About: +<?php echo $curauth->nickname; ?> + </h4> <img src="<?php bloginfo('stylesheet_directory'); ?>/images/authors/<?php echo $curauth->last_name; ?>.jpg" alt="<?php echo $curauth->nickname; ?>" /> <h6>Profile:</h6> + <p class="small"> +<?php echo $curauth->user_description; ?> + </p> + <h6>Website</h6> + <p class="small"> + <a href="<?php echo $curauth->user_url; ?>"> +<?php echo $curauth->user_url; ?> + </a> + </p> + <h6>Contact:</h6> + <p class="small"> + <a href="mailto:<?php echo $curauth->user_email; ?>">Email +<?php echo $curauth->nickname; ?> + </a> + </p> + </div> + <h6 class="alignright">Posts by +<?php echo $curauth->nickname; ?> + </h6> +<!-- The Loop --> +<?php 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()) { ?> + <h6 class="departments"> +<?php echo single_cat_title(); ?> + Department</h6> +<?php /* If this is a monthly archive */ } elseif (is_month()) { ?> + <h6 class="departments">Entries from +<?php the_time('F Y'); ?> + </h6> +<?php /* If this is a search */ } elseif (is_search()) { ?> + <h2>Search Results</h2> +<?php } ?> +<?php while (have_posts()) : the_post(); ?> + <div class="entry"> + <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>" class="title"> +<?php the_title(); ?> + </a></h2> + <div class="column span-2 first"> + <div class="byline"> +<?php the_time('M j, Y') ?> + </div> + </div> + <div class="column span-11 last"> +<?php the_excerpt() ?> + <div class="meta"> + <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">Read</a> | +<?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?> + | <strong>Tags:</strong> +<?php the_category(' · ') ?> + </div> + </div> + </div> + <hr> + </hr> +<?php endwhile; ?> +<?php else : ?> + <h2>Welp, we couldn't find that...try again?</h2> + <div class="entry"> +<?php include (TEMPLATEPATH . '/searchform.php'); ?> + </div> +<?php endif; ?> +<!-- End Loop --> +<?php posts_nav_link(' · ', 'previous page', 'next page'); ?> + </div> +</div> +<div class="column span-8 prepend-1 last"> +<?php include (TEMPLATEPATH . '/sidebar_single.php'); ?> +</div> +<hr> +</hr> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/comments-popup.php b/wp-content/themes/monochrome-pro/comments-popup.php new file mode 100644 index 0000000000000000000000000000000000000000..2e6d9e149aabc2cfbd30f3ed6fafc59fcbf9fbeb --- /dev/null +++ b/wp-content/themes/monochrome-pro/comments-popup.php @@ -0,0 +1,133 @@ +<?php +/* Don't remove these lines. */ +add_filter('comment_text', 'popuplinks'); +while ( have_posts()) : the_post(); +?> +<!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"> +<head> + <title> +<?php echo get_option('blogname'); ?> + - Comments on +<?php the_title(); ?> + </title> + <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" /> +<style type="text/css" media="screen"> + @import url( <?php bloginfo('stylesheet_url'); ?> + ); + body { margin: 3px; } + </style> +</head> +<body id="commentspopup"> +<h1 id="header"><a href="" title="<?php echo get_option('blogname'); ?>"> +<?php echo get_option('blogname'); ?> + </a></h1> <h2 id="comments">Comments</h2> +<p> + <a href="<?php echo get_post_comments_feed_link($post->ID); ?>"><abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.</a> +</p> +<?php if ('open' == $post->ping_status) { ?> +<p> + The <abbr title="Universal Resource Locator">URL</abbr> to TrackBack this entry is: <em> +<?php trackback_url() ?> + </em> +</p> +<?php } ?> +<?php +// this line is WordPress' motor, do not delete it. +$commenter = wp_get_current_commenter(); +extract($commenter); +$comments = get_approved_comments($id); +$post = get_post($id); +if (!empty($post->post_password) && $_COOKIE['wp-postpass_'. COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie + echo(get_the_password_form()); +} else { ?> +<?php if ($comments) { ?> +<ol id="commentlist"> +<?php foreach ($comments as $comment) { ?> + <li id="comment-<?php comment_ID() ?>"> +<?php comment_text() ?> + <p> + <cite> +<?php comment_type('Comment', 'Trackback', 'Pingback'); ?> + by +<?php comment_author_link() ?> + — +<?php comment_date() ?> + @ <a href="#comment-<?php comment_ID() ?>"> +<?php comment_time() ?> + </a></cite> + </p> + </li> +<?php } // end for each comment ?> +</ol> +<?php } else { // this is displayed if there are no comments so far ?> +<p> + No comments yet. +</p> +<?php } ?> +<?php if ('open' == $post->comment_status) { ?> +<h2>Leave a comment</h2> +<p> + Line and paragraph breaks automatic, e-mail address never displayed, <acronym title="Hypertext Markup Language">HTML</acronym> allowed: <code> +<?php echo allowed_tags(); ?> + </code> +</p> +<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 »</a> + </p> +<?php else : ?> + <p> + <input type="text" name="author" id="author" class="textarea" value="<?php echo $comment_author; ?>" size="28" tabindex="1" /> <label for="author">Name</label> <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /> <input type="hidden" name="redirect_to" value="<?php echo attribute_escape($_SERVER[" REQUEST_URI"]); ?>" /> + </p> + <p> + <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="28" tabindex="2" /> <label for="email">E-mail</label> + </p> + <p> + <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="28" tabindex="3" /> <label for="url"><abbr title="Universal Resource Locator">URL</abbr></label> + </p> +<?php endif; ?> + <p> + <label for="comment">Your Comment</label> + <br /> +<textarea name="comment" id="comment" cols="70" rows="4" tabindex="4"></textarea> + </p> + <p> + <input name="submit" type="submit" tabindex="5" value="Say It!" /> + </p> +<?php do_action('comment_form', $post->ID); ?> +</form> +<?php } else { // comments are closed ?> +<p> + Sorry, the comment form is closed at this time. +</p> +<?php } +} // end password check +?> +<div> + <strong><a href="javascript:window.close()">Close this window.</a></strong> +</div> +<?php // if you delete this the sky will fall on your head +endwhile; +?> +<!-- // this is just the end of the motor - don't touch that line either :) --> +<?php //} ?> +<p class="credit"> +<?php timer_stop(1); ?> + <cite>Powered by <a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform"><strong>Wordpress</strong></a></cite> +</p> +<?php // Seen at http://www.mijnkopthee.nl/log2/archive/2003/05/28/esc(18) ?> +<script type="text/javascript"> +<!-- +document.onkeypress = function esc(e) { + if(typeof(e) == "undefined") { e=event; } + if (e.keyCode == 27) { self.close(); } +} +// --> + +</script> +</body> +</html> diff --git a/wp-content/themes/monochrome-pro/comments.php b/wp-content/themes/monochrome-pro/comments.php new file mode 100644 index 0000000000000000000000000000000000000000..ca7ef8e78a5930a311ef2afcf25a4db58054fb55 --- /dev/null +++ b/wp-content/themes/monochrome-pro/comments.php @@ -0,0 +1,107 @@ +<?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="comments-alt" '; +?> +<!-- You can start editing here. --> +<?php if ($comments) : ?> +<h2 id="comments"> +<?php comments_number('No Responses', 'Responses', 'Responses' );?> +</h2> +<div class="small"> + <span class="feedlink"> +<?php comments_rss_link('Feed'); ?> + </span> +<?php if ('open' == $post-> ping_status) { ?> + <span class="trackbacklink"><a href="<?php trackback_url() ?>" title="Copy this URI to trackback this entry.">Trackback Address</a></span> +<?php } ?> +</div> +<ol class="commentlist"> +<?php foreach ($comments as $comment) : ?> + <li +<?php echo $oddcomment; ?> + id="comment- +<?php comment_ID() ?> + "> <cite> +<?php comment_author_link() ?> +</cite> says: +<?php if ($comment->comment_approved == '0') : ?> +<em>Your comment is awaiting moderation.</em> +<?php endif; ?> +<br /> +<p class="small"> +<?php comment_date('F jS, Y') ?> +at +<?php comment_time() ?> +(<a href="#comment-<?php comment_ID() ?>" title="">#</a>) +<?php edit_comment_link('edit',' ',''); ?> +</p> +<?php comment_text() ?> +</li> +<?php + /* Changes every other comment to a different class */ + $oddcomment = ( empty( $oddcomment ) ) ? 'class="comments-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) : ?> +<h2 id="respond">Leave a Response</h2> +<?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 the_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 »</a> + </p> +<?php else : ?> + <p> + <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" /> <label for="author"><small>Name +<?php if ($req) echo "(required)"; ?> + </small></label> + </p> + <p> + <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" /> <label for="email"><small>Email (will not be published) +<?php if ($req) echo "(required)"; ?> + </small></label> + </p> + <p> + <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /> <label for="url"><small>Website</small></label> + </p> +<?php endif; ?> +<!--<p><small><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></small></p>--> + <p> +<textarea name="comment" id="comment" cols="10" rows="20" tabindex="4"></textarea> + </p> + <p> + <input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" /> <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /> + </p> +<?php do_action('comment_form', $post->ID); ?> +</form> +<?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/monochrome-pro/css/blueprint-license.txt b/wp-content/themes/monochrome-pro/css/blueprint-license.txt new file mode 100644 index 0000000000000000000000000000000000000000..96c10fcb8554596542992bcb61d94675c996e74c --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/blueprint-license.txt @@ -0,0 +1 @@ +Copyright (c) 2007 Olav Bjorkoy (http://bjorkoy.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sub-license, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice, and every other copyright notice found in this software, and all the attributions in every file, and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/blueprint-readme.txt b/wp-content/themes/monochrome-pro/css/blueprint-readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..9ca284399bdc3e7f75d6d645077d9a3c5974fa63 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/blueprint-readme.txt @@ -0,0 +1 @@ +Blueprint CSS framework (http://bjorkoy.com/blueprint) ---------------------------------------------------------------- Welcome to Blueprint! This is a CSS framework designed to cut down on your CSS development time. It gives you a solid foundation to build your own CSS on. Here are some of the features BP provides out-of-the-box: * An easily customizable grid * Sensible default typography * A typographic baseline * Perfected browser CSS reset * A stylesheet for printing * Absolutely no bloat Setup instructions ---------------------------------------------------------------- Here's how you set up Blueprint on your site. 1) Upload BP to your server, and place it in whatever folder you'd like. A good choice would be your CSS folder. 2) Add the following lines to every <head> section of your site. Make sure the link path is correct (here, BP is in my CSS folder): <link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection"> <link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print"> 3) That's it! Blueprint is now ready to shine. How to use Blueprint ---------------------------------------------------------------- Here's a quick primer on how to use BP: http://code.google.com/p/blueprintcss/wiki/Tutorial Each file is also heavily commented, so you'll learn a lot by reading through them. Files in Blueprint ---------------------------------------------------------------- The framework has a few files you should check out. Every file contains lots of (hopefully) clarifying comments. * screen.css This is the main file of the framework. It imports other CSS files from the "lib" directory, and should be included on every page. * print.css This file sets some default print rules, so that printed versions of your site looks better than they usually would. It should be included on every page. * lib/grid.css This file sets up the grid (it's true). It has a lot of classes you apply to divs to set up any sort of column-based grid. * lib/typography.css This file sets some default typography. It also has a few methods for some really fancy stuff to do with your text. * lib/reset.css This file resets CSS values that browsers tend to set for you. Credits ---------------------------------------------------------------- Many parts of BP are directly inspired by other peoples work. You may thank them for their brilliance. However, *do not* ask them for support or any kind of help with BP. * Jeff Croft [jeffcroft.com] * Nathan Borror [playgroundblues.com] * Christian Metts [mintchaos.com] * Wilson Miner [wilsonminer.com] * The Typogrify Project [code.google.com/p/typogrify] * Eric Meyer [meyerweb.com/eric] * Angus Turnbull [twinhelix.com] * Khoi Vinh [subtraction.com] Questions, comments, suggestions or bug reports all go to olav at bjorkoy dot com. Thanks for your interest! == By Olav Bjorkoy == http://bjorkoy.com \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/compressed/print.css b/wp-content/themes/monochrome-pro/css/compressed/print.css new file mode 100644 index 0000000000000000000000000000000000000000..8cfb7fa107363bf8d139faa7aa43cbc2d6e5dca4 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/compressed/print.css @@ -0,0 +1 @@ +body { line-height:1.5; font-family:"Helvetica Neue", "Lucida Grande", Arial, Verdana, sans-serif; color:#000; background:none; font-size:10pt; } .container { background:none; } h1,h2,h3,h4,h5,h6 { font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif; } code { font:.9em "Courier New", Monaco, Courier, monospace; } img { float:left; margin:1.5em 1.5em 1.5em 0; } a img { border:none; } p img.top { margin-top:0; } hr { background:#ccc; color:#ccc; width:100%; height:2px; border:none; margin:2em 0; padding:0; } blockquote { font-style:italic; font-size:.9em; margin:1.5em; padding:1em; } .small { font-size:.9em; } .large { font-size:1.1em; } .quiet { color:#999; } .hide { display:none; } a:link,a:visited { background:transparent; font-weight:700; text-decoration:underline; } a:link:after,a:visited:after { content:" (" attr(href) ") "; font-size:90%; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/compressed/screen.css b/wp-content/themes/monochrome-pro/css/compressed/screen.css new file mode 100644 index 0000000000000000000000000000000000000000..b1a83cbd94b30594a45fe395ccdf576c285bc188 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/compressed/screen.css @@ -0,0 +1 @@ +html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td { border:0; font-weight:inherit; font-style:inherit; font-size:100%; font-family:inherit; vertical-align:baseline; margin:0; padding:0; } body { line-height:1.5; background:#fff; font-size:75%; color:#222; font-family:"Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; margin:1.5em 0; } table { border-collapse:separate; border-spacing:0; margin-bottom:1.4em; } caption,th,td { text-align:left; font-weight:400; } blockquote:before,blockquote:after,q:before,q:after { content:""; } blockquote,q { quotes:; } a img { border:none; } h1,h2,h3,h4,h5,h6 { color:#111; font-family:"Helvetica Neue", Helvetica, Arial, sans-serif; font-weight:400; } h1 { font-size:3em; line-height:1; margin-bottom:.5em; } h2 { font-size:2em; margin-bottom:.75em; } h3 { font-size:1.5em; line-height:1; margin-bottom:1em; } h4 { font-size:1.2em; line-height:1.25; margin-bottom:1.25em; } h5 { font-size:1em; font-weight:700; margin-bottom:1.5em; } h6 { font-size:1em; font-weight:700; } p.last { margin-bottom:0; } p img { float:left; margin:1.5em 1.5em 1.5em 0; padding:0; } p img.top { margin-top:0; } ul,ol { margin:0 1.5em 1.5em; } ul { list-style-type:circle; } ol { list-style-type:decimal; } dd { margin-left:1.5em; } abbr,acronym { border-bottom:1px dotted #666; } address { margin-top:1.5em; font-style:italic; } a:focus,a:hover { color:#000; } a { color:#009; text-decoration:underline; } blockquote { color:#666; font-style:italic; margin:1.5em; } em,dfn { font-style:italic; background:#ffc; } pre,code { white-space:pre; margin:1.5em 0; } pre,code,tt { font:1em 'andale mono', monotype.com, 'lucida console', monospace; line-height:1.5; } tt { display:block; line-height:1.5; margin:1.5em 0; } th { border-bottom:2px solid #ccc; font-weight:700; } td { border-bottom:1px solid #ddd; } th,td { padding:4px 10px 4px 0; } tfoot { font-style:italic; } caption { background:#ffc; } table .last { padding-right:0; } .small { font-size:.8em; margin-bottom:1.875em; line-height:1.875em; } .large { font-size:1.2em; line-height:2.5em; margin-bottom:1.25em; } .hide { display:none; } .highlight { background:#ff0; } .added { color:#060; } .removed { color:#900; } .top { margin-top:0; padding-top:0; } .bottom { margin-bottom:0; padding-bottom:0; } .container { width:950px; margin:0 auto; } .column { float:left; margin-right:10px; } .last { margin-right:0; } .span-1 { width:30px; } .span-2 { width:70px; } .span-3 { width:110px; } .span-4 { width:150px; } .span-5 { width:190px; } .span-6 { width:230px; } .span-7 { width:270px; } .span-8 { width:310px; } .span-9 { width:350px; } .span-10 { width:390px; } .span-11 { width:430px; } .span-12 { width:470px; } .span-13 { width:510px; } .span-14 { width:550px; } .span-15 { width:590px; } .span-16 { width:630px; } .span-17 { width:670px; } .span-18 { width:710px; } .span-19 { width:750px; } .span-20 { width:790px; } .span-21 { width:830px; } .span-22 { width:870px; } .span-23 { width:910px; } .span-24 { width:950px; margin:0; } .append-1 { padding-right:40px; } .append-2 { padding-right:80px; } .append-3 { padding-right:120px; } .append-4 { padding-right:160px; } .append-5 { padding-right:200px; } .append-6 { padding-right:240px; } .append-7 { padding-right:280px; } .append-8 { padding-right:320px; } .append-9 { padding-right:360px; } .append-10 { padding-right:400px; } .append-11 { padding-right:440px; } .append-12 { padding-right:480px; } .append-13 { padding-right:520px; } .append-14 { padding-right:560px; } .append-15 { padding-right:600px; } .append-16 { padding-right:640px; } .append-17 { padding-right:680px; } .append-18 { padding-right:720px; } .append-19 { padding-right:760px; } .append-20 { padding-right:800px; } .append-21 { padding-right:840px; } .append-22 { padding-right:880px; } .append-23 { padding-right:920px; } .prepend-1 { padding-left:40px; } .prepend-2 { padding-left:80px; } .prepend-3 { padding-left:120px; } .prepend-4 { padding-left:160px; } .prepend-5 { padding-left:200px; } .prepend-6 { padding-left:240px; } .prepend-7 { padding-left:280px; } .prepend-8 { padding-left:320px; } .prepend-9 { padding-left:360px; } .prepend-10 { padding-left:400px; } .prepend-11 { padding-left:440px; } .prepend-12 { padding-left:480px; } .prepend-13 { padding-left:520px; } .prepend-14 { padding-left:560px; } .prepend-15 { padding-left:600px; } .prepend-16 { padding-left:640px; } .prepend-17 { padding-left:680px; } .prepend-18 { padding-left:720px; } .prepend-19 { padding-left:760px; } .prepend-20 { padding-left:800px; } .prepend-21 { padding-left:840px; } .prepend-22 { padding-left:880px; } .prepend-23 { padding-left:920px; } .border { padding-right:4px; margin-right:5px; border-right:1px solid #eee; } .colborder { padding-right:24px; margin-right:25px; border-right:1px solid #eee; } .pull-1 { margin-left:-40px; } .pull-2 { margin-left:-80px; } .pull-3 { margin-left:-120px; } .pull-4 { margin-left:-160px; } .push-0 { margin:0 0 0 18px; } .push-1 { margin:0 -40px 0 18px; } .push-2 { margin:0 -80px 0 18px; } .push-3 { margin:0 -120px 0 18px; } .push-4 { margin:0 -160px 0 18px; } .push-0,.push-1,.push-2,.push-3,.push-4 { float:right; } .box { margin-bottom:1.5em; background:#eee; padding:1.5em; } hr { background:#ddd; color:#ddd; clear:both; float:none; width:100%; height:.1em; border:none; margin:0 0 1.4em; } hr.space { background:#fff; color:#fff; } .clear { display:block; } .clear:after,.container:after { content:"."; display:block; height:0; clear:both; visibility:hidden; } * html .clear { height:1%; } fieldset { border:1px solid #ccc; margin:0 0 1.5em; padding:1.4em; } legend { font-weight:700; font-size:1.2em; } input.text,input.title { width:300px; border:1px solid #bbb; background:#f6f6f6; margin:.5em .5em .5em 0; padding:5px; } input.title { font-size:1.5em; } textarea { width:400px; height:250px; border:1px solid #bbb; background:#eee; margin:.5em .5em .5em 0; padding:5px; } select { border:1px solid #ccc; background:#f6f6f6; width:200px; } .error,.notice,.success { margin-bottom:1em; border:2px solid #ddd; padding:.8em; } .error { background:#FBE3E4; color:#D12F19; border-color:#FBC2C4; } .notice { background:#FFF6BF; color:#817134; border-color:#FFD324; } .success { background:#E6EFC2; color:#529214; border-color:#C6D880; } .error a { color:#D12F19; } .notice a { color:#817134; } .success a { color:#529214; } p,img,dl { margin:0 0 1.5em; } dl dt,strong,dfn,label { font-weight:700; } del,.quiet { color:#666; } input.text:focus,input.title:focus,textarea:focus,select:focus { background:#fff; border:1px solid #999; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/custom.css b/wp-content/themes/monochrome-pro/css/custom.css new file mode 100644 index 0000000000000000000000000000000000000000..8288512703056e1f8744184a53eb54c4834b722f --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/custom.css @@ -0,0 +1 @@ +/*------------------------------------ Gridline Lite By: Thad Allender/Graph Paper Press [graphpaperpress.com] -------------------------------------*/ body { margin-bottom: 0; margin-top: 30px; background: url('../images/gridline.gif') top repeat-x;} #outside {background: url('../images/get.png') top left no-repeat;} blockquote { font-style: normal; padding: 0 0 0 0; color: #000; background: url('../images/quote.png') .5em top no-repeat; } h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {color: #000;} a {color: #FF3706; text-decoration: none;} a:active, h2 a:active, h3 a:active {color: #8c1b00;text-decoration: none;} a:hover, h2 a:hover, h3 a:hover {color: #464646;text-decoration: none;} blockquote p { padding: 0 20px 0 30px; } hr { background: #CCC; height: 1px; } img { margin: 0; } .photo_align_left {float: left; padding: 0 1.5em 1.5em 0;} a.button { float: left; } /* Fix for buttons */ input { padding-left: 0; border: 1px solid #CCCCCC; } ol { margin-left: 35px; } label { font-weight: normal; } textarea { height: 200px; width: 500px;} .small { font-size: .9em; } .nomargin { margin: 0; } a.button, button { font-weight: normal; } dl.small dd { font-size:.9em; } span.meta_align_right {color: #ccc; font-size: .6em; float: right; } span.meta_align_right a {color: #ccc; } span.meta_align_right a:hover{color: #000; } .linkcat {list-style:none;} .post_first {background: #fff; padding: 1em;} .post_alt {background:#eee; padding: 1em;} .meta {color: #ccc; font-size: .8em; line-height: 1.875em; font-family: Georgia;} .meta a {color: #ccc; } .meta a:hover{color: #000; } .byline {color: #ccc; font-size: .8em; line-height: 1.875em;} .byline a {color: #FF3706; text-decoration: none; line-height: 1.875em;} .byline a:hover{color: #000; } .five_posts h6 a, .five_posts h4 a, .five_posts h3 a {text-decoration: none; margin-bottom: 0; } #maincontent h2 { color: #3B4A25; border-bottom: 1px dotted #AAA; margin-bottom: 15px; } h2 a { color: #3B4A25; text-decoration: none; } #maincontent .post h2 { margin-bottom: 5px; } #maincontent .content { padding: 25px 30px 20px 48px; } #feature h3 {margin-bottom:0; padding:0;} #feature p img {margin: 7px 0 2em 0;} .feature_text {margin-top: 2em;} #home_right {padding:0;} #home_right .entry {padding: 0 0 2em 0;} .author {padding: 1.5em; margin-bottom: 1.5em; background: #eee; } .author img {float:left; padding:0 1em 1em 0;} .author p { margin-left:8em;} .author h6 { margin-left:7em; border-bottom:1px #000 dotted;} .navigation, .navigation a { color: #AAA; } .alignright { float: right; } .alignleft { float: left; } .post { margin-bottom: 25px; } .entry {padding-bottom: 25px; } /* HEADER */ #header { height: 50px; width: 950px; padding: 4px 0 0 0; } #header h1, #header .description { padding:0; margin: 0; line-height: 1em; } /* NAVIGATION IN POSTS */ .entry #nav .content { padding: 0; margin: auto; } .entry #nav { margin-bottom: 15px; background: #FFF; } .entry #nav li a { color: #FFF; border-right: 1px solid #AAA; background: #666; } .entry #nav li.last a { border-right: none; } .entry #nav li a:hover { background: #333; color: #FFF;} /* FOOTER */ #footer { text-align: center; font-size: .9em; margin: 0;} #footer a { text-decoration: none; } /* SEARCH */ #search { float: right; } #search #s { background: transparent url('../images/icons/search_grey.gif') 0px center no-repeat; padding: 2px 0 2px 17px; width: 135px; color: #CCCCCC; font-size: 0.9em; margin-right: 0px; margin-top: 10px;} #search #s:hover { color: #000; } .search-excerpt { margin: 0; } /* COMMENTS */ .commentlist li { padding: 8px 15px; } .comments-alt { background: #EEE;} /* LISTS */ .bottombar {} .bottombar h2 { font-size:1em; font-weight:bold; line-height:1em; margin:1em 0 1em; } ul { list-style-type:none; margin-left: 1em; padding:0; } ul li { list-style-image: url('../images/icons/li.png'); background-repeat:no-repeat; line-height:2em; margin:0; padding: 0; } ul li a { color: #000;} /* COMMENT STYLES */ #comments { width: 100%; } dl#comment_list { margin: 0 0 0 0; } dl#comment_list dt { padding: 0 0 33px 0; background: url('images/comment_top.gif') 0 100% no-repeat; font-size: 1.1em; line-height: 1.8182em; color: #999; } dl#comment_list dt.author { background: url('images/comment_author_top.gif') 0 100% no-repeat; } dl#comment_list dt .comment_num { padding: 0 0.3636em 0 0; } dl#comment_list dt .comment_num a, dl#comment_list dt .comment_num a:visited { color: #999; } dl#comment_list dt .comment_num a:hover { color: #a90000; } dl#comment_list dt strong { font-size: 1.4545em; color: #000; } dl#comment_list dt strong a, dl#comment_list dt strong a:visited { color: #000; border-bottom: 1px dotted #999; } dl#comment_list dt strong a:hover { color: #000; border-bottom: 1px solid #a90000; } dl#comment_list dd {padding: 20px; margin: 0 0 1.5385em; background: #dfdfdf; } dl#comment_list dd.author { background: #0099cc url('images/comment_author_bottom.gif') 0 100% no-repeat; } dl#comment_list dd.entry p, dl#comment_list dd.entry ul, dl#comment_list dd.entry ol, dl#comment_list dd.entry blockquote { margin-bottom: 1.1538em; } /* COMMENT FORM */ #comment_form { width: 46.8em; margin: 0 0 4.0em 0; } #comment_form a:hover { text-decoration: underline; } #comment_form p { padding: 0.7692em 0; } #comment_form label { padding: 0 0 0 0.83333em; font-size: 1.2em; } #comment_form .text_input { width: 15.3846em; padding: 0.23077em; color: #a90000; font: bold 1.3em Verdana, sans-serif; border-top: 0.15385em solid #999; border-left: 0.15385em solid #999; border-right: 0.07692em solid #eee; border-bottom: 0.07692em solid #eee; } #comment_form .text_input:focus { border-top-color: #666; border-left-color: #666; border-right-color: #ddd; border-bottom-color: #ddd; } #comment_form .text_area { width: 32.9231em; } #comment_form p.subscribe-to-comments { font-size: 1.3em; } #comment_form p.subscribe-to-comments label { font-size: 1.0em; } #comment_form .form_submit { padding: 0.5em; background: url('images/submit_bg.gif') repeat-x; color: #000; border: 0.21429em double #999; border-top-color: #ccc; border-left-color: #ccc; font: bold 1.4em/1.0em "Helvetica Neue", Helvetica, Arial, sans-serif; cursor: pointer; } #comment_form .form_submit:hover { color: #0099cc; } /* Root = Horizontal, Secondary = Vertical */ #navmenu-h {background:#000;} #navmenu-h li.alignright {float:right;} ul#navmenu-h { margin: 0 0 1em 0; border: 0 none; padding: 0; width: 950px; /*For KHTML*/ list-style: none; height: 24px; } ul#navmenu-h li { margin: 0; border: 0 none; padding: 0; float: left; /*For Gecko*/ display: inline; list-style: none; position: relative; height: 24px; } ul#navmenu-h ul { margin: 0; border: 0 none; padding: 0; width: 160px; list-style: none; display: none; position: absolute; top: 24px; left: 0; } ul#navmenu-h ul:after /*From IE 7 lack of compliance*/{ clear: both; display: block; font: 1px/0px serif; content: "."; height: 0; visibility: hidden; } ul#navmenu-h ul li { width: 160px; float: left; /*For IE 7 lack of compliance*/ display: block !important; display: inline; /*For IE*/ } /* Root Menu */ ul#navmenu-h a { padding: 2px 20px 0 20px; float: none !important; /*For Opera*/ float: left; /*For IE*/ display: block; background: #000; color: #ccc; font: 11px/22px Helvetica; text-decoration: none; height: auto !important; height: 1%; /*For IE*/ } /* Root Menu Hover Persistence */ ul#navmenu-h a:hover, ul#navmenu-h li:hover a, ul#navmenu-h li.iehover a { background: #333; color: #FFF; } /* 2nd Menu */ ul#navmenu-h li:hover li a, ul#navmenu-h li.iehover li a { float: none; background: #000; color: #ccc; } /* 2nd Menu Hover Persistence */ ul#navmenu-h li:hover li a:hover, ul#navmenu-h li:hover li:hover a, ul#navmenu-h li.iehover li a:hover, ul#navmenu-h li.iehover li.iehover a { background: #333; color: #FFF; } /* 3rd Menu */ ul#navmenu-h li:hover li:hover li a, ul#navmenu-h li.iehover li.iehover li a { background: #000; color: #ccc; } /* 3rd Menu Hover Persistence */ ul#navmenu-h li:hover li:hover li a:hover, ul#navmenu-h li:hover li:hover li:hover a, ul#navmenu-h li.iehover li.iehover li a:hover, ul#navmenu-h li.iehover li.iehover li.iehover a { background: #CCC; color: #FFF; } /* 4th Menu */ ul#navmenu-h li:hover li:hover li:hover li a, ul#navmenu-h li.iehover li.iehover li.iehover li a { background: #EEE; color: #666; } /* 4th Menu Hover */ ul#navmenu-h li:hover li:hover li:hover li a:hover, ul#navmenu-h li.iehover li.iehover li.iehover li a:hover { background: #CCC; color: #FFF; } ul#navmenu-h ul ul, ul#navmenu-h ul ul ul { display: none; position: absolute; top: 0; left: 160px; } /* Do Not Move - Must Come Before display:block for Gecko */ ul#navmenu-h li:hover ul ul, ul#navmenu-h li:hover ul ul ul, ul#navmenu-h li.iehover ul ul, ul#navmenu-h li.iehover ul ul ul { display: none; } ul#navmenu-h li:hover ul, ul#navmenu-h ul li:hover ul, ul#navmenu-h ul ul li:hover ul, ul#navmenu-h li.iehover ul, ul#navmenu-h ul li.iehover ul, ul#navmenu-h ul ul li.iehover ul { display: block; } #themes h6 {float:right; padding-right:1em;} ul#themeswitcher {list-style-type:none; margin:0;padding:0;float:right} ul#themeswitcher li {list-style-image:none;list-style-type:none;margin:0; padding:0;} \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/lib/forms.css b/wp-content/themes/monochrome-pro/css/lib/forms.css new file mode 100644 index 0000000000000000000000000000000000000000..19ffeb6b1f38c3a37ff2ab5f706abf5dcea1bebd --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/lib/forms.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- forms.css * Sets up some default styling for forms * Gives you classes to enhance your forms Usage: * For text fields, use class .title or .text -------------------------------------------------------------- */ label { font-weight: bold; } /* Fieldsets */ fieldset { padding:1.4em; margin: 0 0 1.5em 0; border: 1px solid #ccc; } legend { font-weight: bold; font-size:1.2em; } /* Text fields */ input.text, input.title { width: 300px; margin:0.5em 0.5em 0.5em 0; } input.text, input.title { border:1px solid #bbb; background:#f6f6f6; padding:5px; } input.text:focus, input.title:focus { border:1px solid #999; background:#fff; } input.title { font-size:1.5em; } /* Textareas */ textarea { width: 400px; height: 250px; margin:0.5em 0.5em 0.5em 0; } textarea { border:1px solid #bbb; background:#eee; padding:5px; } textarea:focus { border:1px solid #999; background:#fff; } /* Select fields */ select { border:1px solid #ccc; background:#f6f6f6; width:200px; } select:focus { border:1px solid #999; background:#fff; } /* Success, error & notice boxes for messages and errors. */ .error, .notice, .success { padding: .8em; margin-bottom: 1em; border: 2px solid #ddd; } .error { background: #FBE3E4; color: #D12F19; border-color: #FBC2C4; } .notice { background: #FFF6BF; color: #817134; border-color: #FFD324; } .success { background: #E6EFC2; color: #529214; border-color: #C6D880; } .error a { color: #D12F19; } .notice a { color: #817134; } .success a { color: #529214; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/lib/grid.css b/wp-content/themes/monochrome-pro/css/lib/grid.css new file mode 100644 index 0000000000000000000000000000000000000000..4e3f685e32c0c4298ca8ce50496873a11d8cf87f --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/lib/grid.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- grid.css * Sets up an easy-to-use grid of 24 columns. Based on work by: * Nathan Borror [playgroundblues.com] * Jeff Croft [jeffcroft.com] * Christian Metts [mintchaos.com] * Khoi Vinh [subtraction.com] By default, the grid is 950px wide, with 24 columns spanning 30px, and a 10px margin between columns. If you need fewer or more columns, use this formula to find the new total width: Total width = (columns * 40) - 10 Read more about using a grid here: * subtraction.com/archives/2007/0318_oh_yeeaahh.php -------------------------------------------------------------- */ /* A container should group all your columns. */ .container { width: 950px; margin: 0 auto; } /* Columns -------------------------------------------------------------- */ /* Use this class together with the .span-x classes to create any composition of columns in a layout. */ .column { float: left; margin-right: 10px; } /* The last column in a row needs this class. */ .last { margin-right: 0; } /* Use these classes to set the width of a column. */ .span-1 { width: 30px; } .span-2 { width: 70px; } .span-3 { width: 110px; } .span-4 { width: 150px; } .span-5 { width: 190px; } .span-6 { width: 230px; } .span-7 { width: 270px; } .span-8 { width: 310px; } .span-9 { width: 350px; } .span-10 { width: 390px; } .span-11 { width: 430px; } .span-12 { width: 470px; } .span-13 { width: 510px; } .span-14 { width: 550px; } .span-15 { width: 590px; } .span-16 { width: 630px; } .span-17 { width: 670px; } .span-18 { width: 710px; } .span-19 { width: 750px; } .span-20 { width: 790px; } .span-21 { width: 830px; } .span-22 { width: 870px; } .span-23 { width: 910px; } .span-24 { width: 950px; margin: 0; } /* Add these to a column to append empty cols. */ .append-1 { padding-right: 40px; } .append-2 { padding-right: 80px; } .append-3 { padding-right: 120px; } .append-4 { padding-right: 160px; } .append-5 { padding-right: 200px; } .append-6 { padding-right: 240px; } .append-7 { padding-right: 280px; } .append-8 { padding-right: 320px; } .append-9 { padding-right: 360px; } .append-10 { padding-right: 400px; } .append-11 { padding-right: 440px; } .append-12 { padding-right: 480px; } .append-13 { padding-right: 520px; } .append-14 { padding-right: 560px; } .append-15 { padding-right: 600px; } .append-16 { padding-right: 640px; } .append-17 { padding-right: 680px; } .append-18 { padding-right: 720px; } .append-19 { padding-right: 760px; } .append-20 { padding-right: 800px; } .append-21 { padding-right: 840px; } .append-22 { padding-right: 880px; } .append-23 { padding-right: 920px; } /* Add these to a column to prepend empty cols. */ .prepend-1 { padding-left: 40px; } .prepend-2 { padding-left: 80px; } .prepend-3 { padding-left: 120px; } .prepend-4 { padding-left: 160px; } .prepend-5 { padding-left: 200px; } .prepend-6 { padding-left: 240px; } .prepend-7 { padding-left: 280px; } .prepend-8 { padding-left: 320px; } .prepend-9 { padding-left: 360px; } .prepend-10 { padding-left: 400px; } .prepend-11 { padding-left: 440px; } .prepend-12 { padding-left: 480px; } .prepend-13 { padding-left: 520px; } .prepend-14 { padding-left: 560px; } .prepend-15 { padding-left: 600px; } .prepend-16 { padding-left: 640px; } .prepend-17 { padding-left: 680px; } .prepend-18 { padding-left: 720px; } .prepend-19 { padding-left: 760px; } .prepend-20 { padding-left: 800px; } .prepend-21 { padding-left: 840px; } .prepend-22 { padding-left: 880px; } .prepend-23 { padding-left: 920px; } /* Border on right hand side of a column. */ .border { padding-right: 4px; margin-right: 5px; border-right: 1px solid #eee; } /* Border with more whitespace, spans one column. */ .colborder { padding-right: 24px; margin-right: 25px; border-right: 1px solid #eee; } /* Use these classes on an element to push it into the next column, or to pull it into the previous column. */ .pull-1 { margin-left: -40px; } .pull-2 { margin-left: -80px; } .pull-3 { margin-left: -120px; } .pull-4 { margin-left: -160px; } .push-0 { margin: 0 0 0 18px; } .push-1 { margin: 0 -40px 0 18px; } .push-2 { margin: 0 -80px 0 18px; } .push-3 { margin: 0 -120px 0 18px; } .push-4 { margin: 0 -160px 0 18px; } .push-0, .push-1, .push-2, .push-3, .push-4 { float: right; } /* Misc classes and elements -------------------------------------------------------------- */ /* Use a .box to create a padded box inside a column. */ .box { padding: 1.5em; margin-bottom: 1.5em; background: #eee; } /* Use this to create a horizontal ruler across a column. */ hr { background: #ddd; color: #ddd; clear: both; float: none; width: 100%; height: .1em; margin: 0 0 1.4em; border: none; } hr.space { background: #fff; color: #fff; } /* Clearing floats without extra markup Based on How To Clear Floats Without Structural Markup by PiE [http://www.positioniseverything.net/easyclearing.html] */ .clear { display: inline-block; } .clear:after, .container:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } * html .clear { height: 1%; } .clear { display: block; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/lib/grid.png b/wp-content/themes/monochrome-pro/css/lib/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..129d4a29fbe92688aabed5638e0c4f73a7bca818 Binary files /dev/null and b/wp-content/themes/monochrome-pro/css/lib/grid.png differ diff --git a/wp-content/themes/monochrome-pro/css/lib/ie.css b/wp-content/themes/monochrome-pro/css/lib/ie.css new file mode 100644 index 0000000000000000000000000000000000000000..b5540fab83a23aa5d1ca35f3bc67275033638222 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/lib/ie.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- ie.css Contains every hack for Internet Explorer versions prior to IE7, so that our core files stay sweet and nimble. -------------------------------------------------------------- */ /* Make sure the layout is centered in IE5 */ body { text-align: center; } .container { text-align: left; } /* This fixes the problem where IE6 adds an extra 3px margin to two columns that are floated up against each other. */ * html .column { overflow-x: hidden; } /* IE6 fix */ .pull-1, .pull-2, .pull-3, .pull-4, .push-1, .push-2, .push-3, .push-4, ul, ol { position: relative; /* Keeps IE6 from cutting pulled/pushed images */ } /* Fixes incorrect styling of legend in IE6 fieldsets. */ legend { margin-bottom:1.4em; } /* Fixes incorrect placement of numbers in ol's in IE6/7 */ ol { margin-left:2em; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/lib/reset.css b/wp-content/themes/monochrome-pro/css/lib/reset.css new file mode 100644 index 0000000000000000000000000000000000000000..777f5ac0d956b7b854ce93ca8c4b81ce82c73537 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/lib/reset.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- reset.css * Resets default browser CSS. Based on work by Eric Meyer: * meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ -------------------------------------------------------------- */ html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; } body { line-height: 1.5; background: #fff; margin:1.5em 0; } /* 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; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/lib/typography.css b/wp-content/themes/monochrome-pro/css/lib/typography.css new file mode 100644 index 0000000000000000000000000000000000000000..c6c234ad64e6a4880848126c956c4385e0db00cf --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/lib/typography.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- typography.css * Sets up some sensible default typography. Based on work by: * Nathan Borror [playgroundblues.com] * Jeff Croft [jeffcroft.com] * Christian Metts [mintchaos.com] * Wilson Miner [wilsonminer.com] * Richard Rutter [clagnut.com] Read more about using a baseline here: * alistapart.com/articles/settingtypeontheweb -------------------------------------------------------------- */ /* This is where you set your desired font size. The line-heights and vertical margins are automatically calculated from this. The percentage is of 16px (0.75 * 16px = 12px). */ body { font-size: 75%; } /* Default fonts and colors. If you prefer serif fonts, remove the font-family on the headings, and apply this one to the body: font: 1em Georgia, "lucida bright", "times new roman", serif; */ body { color: #666; font-family: "Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; } h1,h2,h3,h4,h5,h6 { color: #666; font-family: "Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; } /* Headings -------------------------------------------------------------- */ h1,h2,h3,h4,h5,h6 { font-weight: normal; } h1 { font-size: 3em; line-height: 1; margin-bottom: 0.5em; } h2 { font-size: 2em; margin-bottom: 0.75em; } h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; } h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; } h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; } h6 { font-size: 1em; font-weight: bold; } /* Text elements -------------------------------------------------------------- */ p { margin: 0 0 1.5em; } p.last { margin-bottom: 0; } p img { float: left; margin: 1em 1em 1em 0; padding: 0; } p img.top { margin-top: 0; } /* Use this if the image is at the top of the <p>. */ img { margin: 0 0 1.5em; } ul, ol { margin:0 1.5em 1.5em 1.5em; } ul { list-style-type: circle; } ol { list-style-type: decimal; } dl { margin: 0 0 1.5em 0; } dl dt { font-weight: bold; } dd { margin-left: 1.5em;} abbr, acronym { border-bottom: 1px dotted #666; } address { margin-top: 1.5em; font-style: italic; } del { color:#666; } a:focus, a:hover { color: #000; } a { color: #F74343; text-decoration: underline; } blockquote { margin: 1.5em; color: #666; font-style: italic; } strong { font-weight: bold; } em,dfn { font-style: italic; background: #ffc; } dfn { font-weight: bold; } pre,code { margin: 1.5em 0; white-space: pre; } pre,code,tt { font: 1em 'andale mono', 'monotype.com', 'lucida console', monospace; line-height: 1.5; } tt { display: block; margin: 1.5em 0; line-height: 1.5; } /* Tables -------------------------------------------------------------- */ table { margin-bottom: 1.4em; } th { border-bottom: 2px solid #ccc; font-weight: bold; } td { border-bottom: 1px solid #ddd; } th,td { padding: 4px 10px 4px 0; } tfoot { font-style: italic; } caption { background: #ffc; } /* Use this if you use span-x classes on th/td. */ table .last { padding-right: 0; } /* Some default classes -------------------------------------------------------------- */ .small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; } .large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; } .quiet { color: #ccc; } .hide { display: none; } .highlight { background:#ff0; } .added { color:#060; } .removed { color:#900; } .dotted {border-bottom: 1px dotted;} .top { margin-top:0; padding-top:0; } .bottom { margin-bottom:0; padding-bottom:0; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/plugins/buttons/Readme b/wp-content/themes/monochrome-pro/css/plugins/buttons/Readme new file mode 100644 index 0000000000000000000000000000000000000000..dd1cfe44d9fe841835a791db7e0a475595c0dfd5 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/plugins/buttons/Readme @@ -0,0 +1,31 @@ +Buttons +* Gives you great looking CSS buttons, for both <a> and <button>. +* Demo: particletree.com/features/rediscovering-the-button-element + + +Credits +---------------------------------------------------------------- + +* Created by Kevin Hale [particletree.com] +* Adapted for Blueprint by Olav Bjorkoy [bjorkoy.com] + + +Usage +---------------------------------------------------------------- + +1) Add this line to "blueprint/screen.css": + @import 'plugins/buttons/buttons.css'; + +2) Use the following HTML code to place the buttons on your site: + + <button type="submit" class="button positive"> + <img src="css/blueprint/plugins/buttons/icons/tick.png" alt=""/> Save + </button> + + <a class="button" href="/password/reset/"> + <img src="css/blueprint/plugins/buttons/icons/key.png" alt=""/> Change Password + </a> + + <a href="#" class="button negative"> + <img src="css/blueprint/plugins/buttons/icons/cross.png" alt=""/> Cancel + </a> diff --git a/wp-content/themes/monochrome-pro/css/plugins/buttons/buttons.css b/wp-content/themes/monochrome-pro/css/plugins/buttons/buttons.css new file mode 100644 index 0000000000000000000000000000000000000000..12793eca3badfd66e02a9877a21eb9d36fa1b4a8 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/plugins/buttons/buttons.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- buttons.css * Gives you some great CSS-only buttons. Created by Kevin Hale [particletree.com] * particletree.com/features/rediscovering-the-button-element See Readme.txt in this folder for instructions. -------------------------------------------------------------- */ a.button, button { display:block; float:left; margin:0 0.583em 0.667em 0; padding:5px 10px 5px 7px; /* Links */ border:1px solid #dedede; border-top:1px solid #eee; border-left:1px solid #eee; background-color:#f5f5f5; font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; font-size:100%; line-height:130%; text-decoration:none; font-weight:bold; color:#565656; cursor:pointer; } button { width:auto; overflow:visible; padding:4px 10px 3px 7px; /* IE6 */ } button[type] { padding:4px 10px 4px 7px; /* Firefox */ line-height:17px; /* Safari */ } *:first-child+html button[type] { padding:4px 10px 3px 7px; /* IE7 */ } button img, a.button img{ margin:0 3px -3px 0 !important; padding:0; border:none; width:16px; height:16px; float:none; } /* Button colors -------------------------------------------------------------- */ /* Standard */ button:hover, a.button:hover{ background-color:#dff4ff; border:1px solid #c2e1ef; color:#336699; } a.button:active{ background-color:#6299c5; border:1px solid #6299c5; color:#fff; } /* Positive */ body .positive { color:#529214; } a.positive:hover, button.positive:hover { background-color:#E6EFC2; border:1px solid #C6D880; color:#529214; } a.positive:active { background-color:#529214; border:1px solid #529214; color:#fff; } /* Negative */ body .negative { color:#d12f19; } a.negative:hover, button.negative:hover { background:#fbe3e4; border:1px solid #fbc2c4; color:#d12f19; } a.negative:active { background-color:#d12f19; border:1px solid #d12f19; color:#fff; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/cross.png b/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..1514d51a3cf1b67e1c5b9ada36f1fd474e2d214a Binary files /dev/null and b/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/cross.png differ diff --git a/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/key.png b/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/key.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d5e4f8cc75240f6e6bbb9e73466a9e3effb610 Binary files /dev/null and b/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/key.png differ diff --git a/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/tick.png b/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..a9925a06ab02db30c1e7ead9c701c15bc63145cb Binary files /dev/null and b/wp-content/themes/monochrome-pro/css/plugins/buttons/icons/tick.png differ diff --git a/wp-content/themes/monochrome-pro/css/plugins/css-classes/Readme b/wp-content/themes/monochrome-pro/css/plugins/css-classes/Readme new file mode 100644 index 0000000000000000000000000000000000000000..9594e2398acef7172ca0bc8db624cb86b68bebd5 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/plugins/css-classes/Readme @@ -0,0 +1,14 @@ +CSS Development Classes Plugin + +Sets up some classes to use in CSS development + +This is an experimental plugin, and the tools it provides +are not exactly semantically correct, so use with care, +and preferably only in development. :) + + +Usage +---------------------------------------------------------------- + +1) Add this line to "blueprint/screen.css", and you're done: + @import 'plugins/css-classes/css-classes.css'; diff --git a/wp-content/themes/monochrome-pro/css/plugins/css-classes/css-classes.css b/wp-content/themes/monochrome-pro/css/plugins/css-classes/css-classes.css new file mode 100644 index 0000000000000000000000000000000000000000..fc555b54ce59a8aeb18e5d240ccc1338990dcc23 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/plugins/css-classes/css-classes.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- css-classes.css * Classes for CSS development See the Readme file in this directory for further instructions. -------------------------------------------------------------- */ .left { float:left; } .right { float:right; } .hide { display:none; } .reset-margin { margin:0; } .reset-padding { padding:0; } .reset { margin:0; padding:0; } .align-justify { text-align:justify; } .align-left { text-align:left; } .align-center { text-align:center; } .align-right { text-align:right; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/plugins/fancy-type/Readme b/wp-content/themes/monochrome-pro/css/plugins/fancy-type/Readme new file mode 100644 index 0000000000000000000000000000000000000000..7d2474da7fe2a22b221a51c7957dfb5625e3233b --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/plugins/fancy-type/Readme @@ -0,0 +1,22 @@ +Fancy Type +* Gives you classes to use if you'd like some + extra fancy typography. + +Credits and instructions are specified above each class +in the fancy-type.css file in this directory. + + +Usage +---------------------------------------------------------------- + +1) Add this line to "blueprint/screen.css", and you're done: + @import 'plugins/fancy-type/fancy-type-compressed.css'; + +Note that this uses the compressed version of the CSS file, +as the original file contains a lot of instructing comments. + +Remember to re-compress (or change) the compressed file +if you make any changes to the original CSS file. + +Here's a pretty good CSS compressor: +http://teenage.cz/acidofil/tools/cssformat.php diff --git a/wp-content/themes/monochrome-pro/css/plugins/fancy-type/fancy-type-compressed.css b/wp-content/themes/monochrome-pro/css/plugins/fancy-type/fancy-type-compressed.css new file mode 100644 index 0000000000000000000000000000000000000000..f3865148ebfa5bed531c219f29e926bbfb93816a --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/plugins/fancy-type/fancy-type-compressed.css @@ -0,0 +1 @@ +p + p { text-indent:2em; margin-top:-1.5em; } .alt{color:#666;font-family:"Warnock Pro","Goudy Old Style","Palatino","Book Antiqua",Georgia,serif;font-size:1.2em;line-height:80%;font-style:italic;} .dquo{margin-left:-.5em;} p.incr,.incr p{font-size:10px;line-height:1.44em;margin-bottom:1.5em;} .caps{font-variant:small-caps;letter-spacing:1px;text-transform:lowercase;font-size:1.2em;line-height:1%;font-weight:bold;} \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/plugins/fancy-type/fancy-type.css b/wp-content/themes/monochrome-pro/css/plugins/fancy-type/fancy-type.css new file mode 100644 index 0000000000000000000000000000000000000000..955bcb75c4aea5f6b505c18ddb42f99bd86a5689 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/plugins/fancy-type/fancy-type.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- fancy-type.css * Lots of pretty advanced classes for manipulating text. See the Readme file in this folder for additional instructions. -------------------------------------------------------------- */ /* Indentation instead of line shifts for sibling paragraphs. */ p + p { text-indent:2em; margin-top:-1.5em; } /* Ornaments on first paragraph. Commented out by default. Use with care. p:before { content: "\2767"; padding-right: 0.4em; } p + p:before { content: ""; padding:0; } */ /* For great looking type, use this code instead of asdf: <span class="alt">asdf</span> Best used on prepositions and ampersands. */ .alt { color: #666; font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif; font-style: italic; font-weight: normal; } /* For great looking quote marks in titles, replace "asdf" with: <span class="dquo">“</span>asdf” (That is, when the title starts with a quote mark). (You may have to change this value depending on your font size). */ .dquo { margin-left: -.5em; } /* Reduced size type with incremental leading (http://www.markboulton.co.uk/journal/comments/incremental_leading/) This could be used for side notes. For smaller type, you don't necessarily want to follow the 1.5x vertical rhythm -- the line-height is too much. Using this class, it reduces your font size and line-height so that for every four lines of normal sized type, there is five lines of the sidenote. eg: New type size in em's: 10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems) New line-height value: 12px x 1.5 = 18px (old line-height) 18px x 4 = 72px 72px / 5 = 14.4px (new line height) 14.4px / 10px = 1.44 (new line height in em's) */ p.incr, .incr p { font-size: 10px; line-height: 1.44em; margin-bottom: 1.5em; } /* Surround uppercase words and abbreviations with this class. Based on work by Jørgen Arnor GĂ¥rdsø Lom [http://twistedintellect.com/] */ .caps { font-variant: small-caps; letter-spacing: 1px; text-transform: lowercase; font-size:1.2em; line-height:1%; font-weight:bold; padding:0 2px; } \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/print.css b/wp-content/themes/monochrome-pro/css/print.css new file mode 100644 index 0000000000000000000000000000000000000000..b776987977c427f84c172b36fd493adc9acadd30 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/print.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- Blueprint CSS Framework Print Styles * Gives you some sensible styles for printing pages. See Readme file in this directory for further instructions. Some additions you'll want to make, customized to your markup: #header, #footer, #navigation { display:none; } -------------------------------------------------------------- */ body { line-height: 1.5; font-family: "Helvetica Neue", "Lucida Grande", Arial, Verdana, sans-serif; color:#000; background: none; font-size: 10pt; } .container { background: none; } h1,h2,h3,h4,h5,h6 { font-family: "Helvetica Neue", Arial, "Lucida Grande", sans-serif; } code { font:.9em "Courier New", Monaco, Courier, monospace; } img { float:left; margin:1.5em 1.5em 1.5em 0; } a img { border:none; } p img.top { margin-top: 0; } hr { background:#ccc; color:#ccc; width:100%; height:2px; margin:2em 0; padding:0; border:none; } blockquote { margin:1.5em; padding:1em; font-style:italic; font-size:.9em; } .small { font-size: .9em; } .large { font-size: 1.1em; } .quiet { color: #999; } .hide { display:none; } a:link, a:visited { background: transparent; font-weight:700; text-decoration: underline; } a:link:after, a:visited:after { content: " (" attr(href) ") "; font-size: 90%; } /* If you're having trouble printing relative links, uncomment and customize this: (note: This is valid CSS3, but it still won't go through the W3C CSS Validator) */ /* a[href^="/"]:after { content: " (http://www.yourdomain.com" attr(href) ") "; } */ \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/css/screen.css b/wp-content/themes/monochrome-pro/css/screen.css new file mode 100644 index 0000000000000000000000000000000000000000..87aa1f4e3f7d362e5836a109de9b75c4bfd86244 --- /dev/null +++ b/wp-content/themes/monochrome-pro/css/screen.css @@ -0,0 +1 @@ +/* -------------------------------------------------------------- Blueprint CSS Framework Screen Styles * Version: 0.6 (21.9.2007) * Website: http://code.google.com/p/blueprintcss/ See Readme file in this directory for further instructions. -------------------------------------------------------------- */ @import 'lib/reset.css'; @import 'lib/typography.css'; @import 'lib/grid.css'; @import 'lib/forms.css'; /* Plugins: Additional functionality can be found in the plugins directory. See the readme files for each plugin. Example: @import 'plugins/buttons/buttons.css'; */ /* See the grid: Uncomment the line below to see the grid and baseline. .container { background: url(lib/grid.png); } */ \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/footer.php b/wp-content/themes/monochrome-pro/footer.php new file mode 100644 index 0000000000000000000000000000000000000000..e1e72c439807e0aa56549cbc863c1e4d94803bd9 --- /dev/null +++ b/wp-content/themes/monochrome-pro/footer.php @@ -0,0 +1,13 @@ +<hr class="space" /> +<div id="footer"> + © +<?php echo date(Y); ?> + <?php bloginfo('name'); ?> + <br /> + Powered by <a href="http://wordpress.org/">WordPress</a> using the <a href="http://graphpaperpress.com/2008/02/06/monochrome/">Monochrome</a> theme by <a href="http://graphpaperpress.com">Graph Paper Press</a>. +</div> +</div> +</div> +<?php wp_footer(); ?> +</body> +</html> diff --git a/wp-content/themes/monochrome-pro/functions.php b/wp-content/themes/monochrome-pro/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..efc3d5172d7c7276c8d3e9b828964af9aecd54ae --- /dev/null +++ b/wp-content/themes/monochrome-pro/functions.php @@ -0,0 +1,265 @@ +<?php +function getPost($post = NULL) { + include('post.php'); +} + +// Add Menu Theme Support +if ( function_exists( 'add_theme_support' ) ) { + add_theme_support( 'nav-menus' ); + add_action( 'init', 'register_gpp_menus' ); + + function register_gpp_menus() { + register_nav_menus( + array( + 'main-menu' => __( 'Main Menu' ), + 'top-menu' => __( 'Top Menu' ) + ) + ); + } +} + +if ( function_exists('register_sidebar') ) +{ + register_sidebar + ( array + ( + 'name' => 'Sidebar', + 'before_widget' => '<div class="bottombar">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widgettitle">', + 'after_title' => '</h2>', + ) + ); + register_sidebar + ( array + ( + 'name' => 'Sidebar-Home', + 'before_widget' => '<div class="bottombar">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widgettitle">', + 'after_title' => '</h2>', + ) + ); + register_sidebar + ( array + ( + 'name' => 'Bottom-Left', + 'before_widget' => '<div class="bottombar">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widgettitle">', + 'after_title' => '</h2>', + ) + ); + register_sidebar + ( array + ( + 'name' => 'Bottom-Middle', + 'before_widget' => '<div class="bottombar">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widgettitle">', + 'after_title' => '</h2>', + ) + ); + register_sidebar + ( array + ( + 'name' => 'Bottom-Right', + 'before_widget' => '<div class="bottombar">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widgettitle">', + 'after_title' => '</h2>', + ) + ); +} +// THEME OPTIONS - DO NOT EDIT +$themename = "Monochrome"; +$shortname = "dt"; +$options = array ( + array("name" => "Top Left Category", + "id" => $shortname."_top_left_cat", + "std" => "1", + "type" => "text"), + array("name" => "Top Right Category", + "id" => $shortname."_top_right_cat", + "std" => "", + "type" => "text"), + array("name" => "Middle Left Category", + "id" => $shortname."_mid_left_cat", + "std" => "", + "type" => "text"), + array("name" => "Middle Right Category", + "id" => $shortname."_mid_right_cat", + "std" => "", + "type" => "text"), + array("name" => "Bottom 1st Category", + "id" => $shortname."_bot_1st_cat", + "std" => "", + "type" => "text"), + array("name" => "Bottom 2nd Category", + "id" => $shortname."_bot_2nd_cat", + "std" => "", + "type" => "text"), + array("name" => "Bottom 3rd Category", + "id" => $shortname."_bot_3rd_cat", + "std" => "", + "type" => "text"), + array("name" => "Bottom 4th Category", + "id" => $shortname."_bot_4th_cat", + "std" => "", + "type" => "text"), + array("name" => "Bottom 5th Category", + "id" => $shortname."_bot_5th_cat", + "std" => "", + "type" => "text") +); +/* +Plugin Name: Get The Image +Plugin URI: http://justintadlock.com/archives/2008/05/27/get-the-image-wordpress-plugin +Description: This is a highly intuitive script that gets an image either by custom field input or post attachment. +Version: 0.1 Beta +Author: Justin Tadlock +Author URI: http://justintadlock.com +License: GPL +*/ + +/*********************************************************** +Catchall function for getting images +***********************************************************/ +function get_the_image($arr = false, $default_size = 'medium', $default_img = false) { + global $post; + $cf_array = load_the_image($arr, $post, $default_size); + $image = display_the_image($cf_array, $post, $default_size, $default_img); + if($image == false) $image = '<!-- No images were added to this post. -->'; + return $image; +} + +/*********************************************************** +Catchall function for getting images with a link +***********************************************************/ +function get_the_image_link($arr = false, $default_size = 'medium', $default_img = false) { + global $post; + $cf_array = load_the_image($arr, $post, $default_size); + $image = display_the_image($cf_array, $post, $default_size, $default_img); + + if($image == false) : + $image_link = '<!-- No images were added to this post. -->'; + else : + $post_perm = get_permalink($post->ID); + $image_link = "<a href=\"$post_perm\" title=\"$post->post_title\">$image</a>"; + endif; + return $image_link; +} + +/*********************************************************** +Function for loading an image +***********************************************************/ +function load_the_image($custom_fields = false, $en_post, $default_size) { + +// Checks only if there are custom fields to check for + if(isset($custom_fields)) { + + // Loop through the custom fields, checking for images or video + $i = 0; + while(strcmp($image[0],'') == 0 && $i <= sizeof($custom_fields)) { + + // Check custom field values for image, image alt text, and image class + $image = get_post_custom_values($key = $custom_fields[$i]); + $image_alt = get_post_custom_values($key = $custom_fields[$i] . ' Alt'); + $image_class = get_post_custom_values($key = $custom_fields[$i] . ' Class'); + // Convert custom field key name to image class + $img_class = $custom_fields[$i]; + $img_class = strtolower($img_class); + $img_class = str_replace (" ", "-", $img_class); + + // Add space to image class if user inputs an extra class + if($image_class == true) $image_class .= ' '; + + // Add user image class to default image classes + if($default_size == 'thumbnail' && $img_class == 'thumbnail') $image_class .= $default_size; + elseif($default_size == 'medium' && $img_class == 'medium') $image_class .= $default_size; + elseif($default_size == 'full' && $img_class == 'full') $image_class .= $default_size; + else $image_class .= $img_class . ' ' . $default_size; + + $i++; + } // End while loop + } // End check for custom field image + +// If there is no image set through custom fields, check post attachments + if($image == false && $default_size == true) { + $img_att_arr = find_attachment_image($custom_fields[0], $en_post, $default_size); + if(strcmp($image_att_arr[0],'') == 0) : + $image = $img_att_arr[0]; + $image_class = $img_att_arr[1]; + $image_alt = false; + else : + $image = false; $image_alt = false; $image_class = false; + endif; + } + +// Return array with an image, image alt, and image class + return array($image, $image_alt, $image_class); +} + +/*********************************************************** +Function for displaying an image +***********************************************************/ +function display_the_image($cf_array = false, $en_post = false, $default_size = false, $default_img = false) { + +// Set nice names for image info + if($cf_array[0] == false && $default_img == true) : + $image[0] = $default_img; + $image_class = $default_size; + else : + $image = $cf_array[0]; + $image_alt = $cf_array[1]; + $image_class = $cf_array[2]; + endif; + +// If there's any kind of image for this post + if(isset($image[0]) && strcmp($image[0],'') != 0) : + // Open img tag + $output = '<img src="'.$image[0].'"'; + $output .= ' alt="'; + // Image alt text + if(isset($image_alt[0]) && strcmp($image_alt[0],'') != 0) $output .= $image_alt[0]; + else $output .= $en_post->post_title; + // Image class + $output .= '" class="'; + if(isset($image_class[0])) $output .= $image_class; + else $output .= 'left'; + // Close img tag + $output .= '" />'; +// If there's no image + else : + $output = false; + endif; +// Return the image + return $output; +} + +/*********************************************************** +Function for finding an attachment image. +Only called if no custom field images are set. +***********************************************************/ +function find_attachment_image($custom_fields = false, $en_post = false, $default_size = 'medium') { + + $custom = $custom_fields; + $custom = strtolower($custom); + $custom = str_replace (" ", "-", $custom); +// Don't repeat the same class name + if($custom == 'thumbnail' || $custom == 'medium' || $custom == 'full') $img_class = $default_size; + else $img_class = $custom . ' ' . $default_size; + + $attachments = get_children( array('post_parent' => $en_post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') ); + if($attachments == true) : + foreach($attachments as $id => $attachment) : + $img = wp_get_attachment_image_src($id, $default_size); + $img_arr[0] = $img; + endforeach; + $img_arr[1] = $img_class; + else : + $img_arr = false; + endif; + return $img_arr; +} +function theme_add_admin() { global $themename, $shortname, $options; if ( $_GET['page'] == basename(__FILE__) ) { if ( 'save' == $_REQUEST['action'] ) { foreach ($options as $value) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } foreach ($options as $value) { if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } } header("Location: themes.php?page=functions.php&saved=true"); die; } else if( 'reset' == $_REQUEST['action'] ) { foreach ($options as $value) { delete_option( $value['id'] ); } header("Location: themes.php?page=functions.php&reset=true"); die; } } add_theme_page($themename." Options", "Theme Options", 'edit_themes', basename(__FILE__), 'theme_admin'); } function theme_admin() { global $themename, $shortname, $options; if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>'; if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';?><div class="wrap"><h2><?php echo $themename; ?> settings</h2><div id="currenttheme"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/options.jpg" alt"" /></div><form method="post"><table class="optiontable"><?php foreach ($options as $value) { if ($value['type'] == "text") { ?><tr valign="top"><th scope="row"><?php echo $value['name']; ?>:</th><td><input name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" /></td></tr><?php } elseif ($value['type'] == "select") { ?><tr valign="top"><th scope="row"><?php echo $value['name']; ?>:<br /><small><?php echo $value['desc']; ?></small></th><td><select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"><?php foreach ($value['options'] as $option) { ?><option<?php if ( get_settings( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option><?php } ?></select></td></tr><?php } } ?></table><p class="submit"><input name="save" type="submit" value="Save changes" /><input type="hidden" name="action" value="save" /></p></form><form method="post"><p class="submit"><input name="reset" type="submit" value="Reset" /><input type="hidden" name="action" value="reset" /></p></form><?php } function theme_wp_head() { ?> <?php } add_action('wp_head', 'theme_wp_head'); add_action('admin_menu', 'theme_add_admin'); ?> \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/header.php b/wp-content/themes/monochrome-pro/header.php new file mode 100644 index 0000000000000000000000000000000000000000..0641b8cca1e170471b359954c3e838d841b81344 --- /dev/null +++ b/wp-content/themes/monochrome-pro/header.php @@ -0,0 +1,110 @@ +<!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(''); ?><?php if ( !(is_404()) && (is_single()) or (is_page()) or (is_archive()) ) { ?> :: <?php } ?> +<?php bloginfo('name'); ?></title> +<?php +// Do not delete + wp_head(); +// Controls the style through theme options + global $options; + foreach ($options as $value) { + if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } + else { $$value['id'] = get_settings( $value['id'] ); } } + global $style, $show_cats, $show_feature, $feed, $feed_email; + $style = $st_theme_style; + $show_cats = $st_show_tabs_categories; + $show_feature = $st_show_feature; + $feed = $st_feed; + $feed_email = $st_feed_email; ?> + + <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> + <link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/css/screen.css" type="text/css" media="screen, projection" /> + <link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/css/print.css" type="text/css" media="print" /> + <link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/style.css" type="text/css" media="screen, projection" /> +<!--[if IE]><link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/css/lib/ie.css" type="text/css" media="screen, projection" /><![endif]--> +<!-- Javascripts --> +<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/jquery-1.2.3.js"></script> + +<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/jquery.innerfade.js"></script> + +<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/functions.js"></script> + +<!--[if lt IE 7]> + <script defer type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/pngfix.js"></script> + <![endif]--> +<!--[if gte IE 5.5]> + <script language="javaScript" src="<?php bloginfo('stylesheet_directory'); ?>/js/dhtml.js" type="text/javaScript"></script> +<script language="javaScript" src="<?php bloginfo('stylesheet_directory'); ?>/js/dhtml2.js" type="text/javaScript"></script> + <![endif]--> +<!-- Show the grid and baseline --> +<style type="text/css"> +/* .container { background: url(<?php bloginfo('stylesheet_directory'); ?>/css/lib/img/grid.png); }*/ + </style> + <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'); ?>" /> + <script type="text/javascript"> + jQuery(document).ready( + function(){ + jQuery('#news').innerfade({ + animationtype: 'slide', + speed: 750, + timeout: 2000, + type: 'random', + containerheight: '1em' + }); + + jQuery('ul#portfolio').innerfade({ + speed: 1000, + timeout: 5000, + type: 'sequence', + containerheight: '480px' + }); + + jQuery('.fade').innerfade({ + speed: 1000, + timeout: 6000, + type: 'random_start', + containerheight: '1.5em' + }); + + jQuery('.adi').innerfade({ + speed: 'slow', + timeout: 5000, + type: 'random', + containerheight: '150px' + }); + }); + + </script> +</head> +<body> +<div class="container"> +<div class="container-bg"> +<!-- Top Navigation --> +<?php if ( function_exists('wp_nav_menu') ) { + wp_nav_menu( 'sort_column=menu_order&container=&menu_id=navmenu-h-r&theme_location=top-menu' ); + } else { ?> + <ul id="navmenu-h-r"> + <?php wp_list_categories('title_li='); ?> + </ul> +<?php } ?> +<!-- Search --> + <?php include (TEMPLATEPATH . '/searchform.php'); ?> +<!-- Logo --> +<div class="logo"><h1><a href="<?php echo get_settings('home'); ?>/" title="Return to the frontpage"><?php bloginfo('name'); ?></a></h1></div> +<!-- Navigation --> +<div class="column span-24 large" id="nav"> +<div class="content"> +<?php if ( function_exists('wp_nav_menu') ) { + wp_nav_menu( 'sort_column=menu_order&container=&menu_id=navmenu-h&theme_location=main-menu' ); + } else { ?> + <ul id="navmenu-h"> + <li><a href="<?php echo get_settings('home'); ?>">Home</a></li> + <?php wp_list_pages('sort_column=menu_order&depth=2&title_li='); ?> + <li class="alignright"><a href="<?php bloginfo('rss2_url'); ?>">Subscribe via RSS</a></li> + </ul> +<?php } ?> +</div> +</div> diff --git a/wp-content/themes/monochrome-pro/home.php b/wp-content/themes/monochrome-pro/home.php new file mode 100644 index 0000000000000000000000000000000000000000..16ec67725366fc8d9809cae7f0d2dba6453e2ae2 --- /dev/null +++ b/wp-content/themes/monochrome-pro/home.php @@ -0,0 +1,122 @@ +<?php get_header(); ?> +<!--START LEFT SIDE--> +<div id="feature" class="column span-15 first"> +<!--BEGIN FEATURED POSTS--> +<?php +// Controls the categories displayed through the theme options page +global $options; +foreach ($options as $value) { + if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } + else { $$value['id'] = get_settings( $value['id'] ); } + } // endforeach +?> + <?php query_posts('cat='.$dt_top_left_cat.'&showposts=4'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + +<ul id="portfolio"> +<?php while (have_posts()) : the_post(); ?> +<li> +<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <span class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></span></h4> +<?php echo get_the_image_link(array('slideshow','slideshow'),'medium'); ?> + <?php the_excerpt(); ?> +</li> +<?php endwhile; ?> +</ul> +<hr class="space" /> +<!--BEGIN MIDDLE POSTS--> + <div class="column span-7 append-1 news"> + <?php query_posts('cat='.$dt_mid_left_cat.'&showposts=1'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + <h6 class="category_head"><a href="<?php echo get_category_link($dt_mid_left_cat);?>"><?php echo $cat_name; ?></a></h6> + <?php while (have_posts()) : the_post(); ?> + <div class="post-<?php the_ID(); ?>"> + <h6><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h6> + <div class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></div> + <?php the_excerpt(); ?> + </div> + <?php endwhile; ?> + </div> + <div class="column span-7 last news"> + <?php query_posts('cat='.$dt_mid_right_cat.'&showposts=1'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + <h6 class="category_head"><a href="<?php echo get_category_link($dt_mid_right_cat);?>"><?php echo $cat_name; ?></a></h6> + <?php while (have_posts()) : the_post(); ?> + <div class="post-<?php the_ID(); ?>"> + <h6><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h6> + <div class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></div> + <?php the_excerpt(); ?> + </div> + <?php endwhile; ?> + </div> + <hr class="space" /> +</div> +<!--END MIDDLE POSTS--> +<!--BEGIN RIGHT SIDE--> +<div class="column span-8 prepend-1 last news"> + <div id="home_right"> + <div class="news-block"> + <?php query_posts('cat='.$dt_top_right_cat.'&showposts=3'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + <h6 class="category_head"><a href="<?php echo get_category_link($dt_top_right_cat);?>"><?php echo $cat_name; ?></a></h6> + <?php while (have_posts()) : the_post(); ?> + <div class="column span-4 first"> + <?php echo get_the_image_link(array('thumbnail','My Thumbnail'),'thumbnail'); ?> + </div> + <div class="column span-4 last"> + <h6><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h6> + <div class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></div> + <?php the_excerpt(); ?> + </div> +<hr /> +<?php endwhile; ?> + </div> +<!-- ABOUT BOX --> +<div class="box"> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar-Home') ) : ?> +<?php endif; ?> +</div> +</div> +</div> +<hr class="space" /> +<!--END RIGHT SIDE--> +<!-- BOTTOM LEFT FIVE CATEGORY LISTINGS --> +<div id="gray_bg" class="five_posts"> +<?php $i = 0; ?> +<?php +$display_categories = array("$dt_bot_1st_cat","$dt_bot_2nd_cat","$dt_bot_3rd_cat","$dt_bot_4th_cat","$dt_bot_5th_cat"); +foreach ($display_categories as $category) { ?> +<?php query_posts("showposts=1&cat=$category"); ?> +<?php while (have_posts()) : the_post(); $i++; ?> +<div class="column span-4 post-<?php the_ID(); ?><?php if ($i < 5) { ?> append-1<?php } ?><?php if ($i == 5) { ?> last<?php $i = 0; } ?>"> +<h6 class="category_head"><a href="<?php echo get_category_link($category);?>"><?php single_cat_title(); ?></a></h6> +<h6><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title() ?></a></h6> +<?php echo get_the_image_link(array('thumbnail','My Thumbnail'),'thumbnail'); ?> +<div class="excerpt_small"><?php the_excerpt(); ?></div> +<p class="postmetadata"><?php the_time('M d, Y') ?> | <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p> +<?php endwhile; ?> + +<h6 class="category_more"><a href="<?php echo get_category_link($category);?>">More in <?php single_cat_title(); ?></a></h6> +<ul> +<?php query_posts("showposts=5&offset=1&cat=$category"); ?> +<?php while (have_posts()) : the_post(); ?> +<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>" class="title"><?php the_title(); ?></a></li> +<?php endwhile; ?> +</ul> +</div> +<?php } ?> +<div class="clear"></div> +</div> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/images/authors/Allender.jpg b/wp-content/themes/monochrome-pro/images/authors/Allender.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d7a036897b19db1b88bf16e88dfcb0cf5c5c6a1a Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/authors/Allender.jpg differ diff --git a/wp-content/themes/monochrome-pro/images/authors/admin.jpg b/wp-content/themes/monochrome-pro/images/authors/admin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3aa6e9bc4bbf9d55918bf09da864c7005e07618d Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/authors/admin.jpg differ diff --git a/wp-content/themes/monochrome-pro/images/bg.gif b/wp-content/themes/monochrome-pro/images/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1a4b485b603fa4921710633fea82b3fc1ea16df Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/bg.gif differ diff --git a/wp-content/themes/monochrome-pro/images/bg.png b/wp-content/themes/monochrome-pro/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..13bb668b99c654c027aba23aaefdc4894554299e Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/bg.png differ diff --git a/wp-content/themes/monochrome-pro/images/icons/feed.png b/wp-content/themes/monochrome-pro/images/icons/feed.png new file mode 100644 index 0000000000000000000000000000000000000000..315c4f4fa62cb720326ba3f54259666ba3999e42 Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/icons/feed.png differ diff --git a/wp-content/themes/monochrome-pro/images/icons/feed_small.png b/wp-content/themes/monochrome-pro/images/icons/feed_small.png new file mode 100644 index 0000000000000000000000000000000000000000..5de2fb9118165d06f01a02843179381454c5cd21 Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/icons/feed_small.png differ diff --git a/wp-content/themes/monochrome-pro/images/icons/li.png b/wp-content/themes/monochrome-pro/images/icons/li.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b539636e3c94d8e00836e1c69e591798076812 Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/icons/li.png differ diff --git a/wp-content/themes/monochrome-pro/images/icons/li_red.png b/wp-content/themes/monochrome-pro/images/icons/li_red.png new file mode 100644 index 0000000000000000000000000000000000000000..667da7a37a1acd86438a1b167fe786d614384ce4 Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/icons/li_red.png differ diff --git a/wp-content/themes/monochrome-pro/images/icons/search_grey.gif b/wp-content/themes/monochrome-pro/images/icons/search_grey.gif new file mode 100644 index 0000000000000000000000000000000000000000..79a5fcd04ee7d4fa7983b625c568c6383b9563d0 Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/icons/search_grey.gif differ diff --git a/wp-content/themes/monochrome-pro/images/options.jpg b/wp-content/themes/monochrome-pro/images/options.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5b0314e1c3aadf7d6feccd7ebf76beea02826f0 Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/options.jpg differ diff --git a/wp-content/themes/monochrome-pro/images/quote.png b/wp-content/themes/monochrome-pro/images/quote.png new file mode 100644 index 0000000000000000000000000000000000000000..d03ca876d6b1840289131a873c0692d72f3c573d Binary files /dev/null and b/wp-content/themes/monochrome-pro/images/quote.png differ diff --git a/wp-content/themes/monochrome-pro/index.php b/wp-content/themes/monochrome-pro/index.php new file mode 100644 index 0000000000000000000000000000000000000000..fdcf6d11a166ebcf4ce744892fddc6b2459f8fde --- /dev/null +++ b/wp-content/themes/monochrome-pro/index.php @@ -0,0 +1,122 @@ +<?php get_header(); ?> +<!--START LEFT SIDE--> +<div id="feature" class="column span-15 first"> +<!--BEGIN FEATURED POSTS--> +<?php +// Controls the categories displayed through the theme options page +global $options; +foreach ($options as $value) { + if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } + else { $$value['id'] = get_settings( $value['id'] ); } + } // endforeach +?> + <?php query_posts('cat='.$dt_top_left_cat.'&showposts=4'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + +<ul id="portfolio"> +<?php while (have_posts()) : the_post(); ?> +<li> +<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <span class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></span></h4> +<?php echo get_the_image_link(array('slideshow','slideshow'),'photo'); ?> + <?php the_excerpt(); ?> +</li> +<?php endwhile; ?> +</ul> +<hr class="space" /> +<!--BEGIN MIDDLE POSTS--> + <div class="column span-7 append-1 news"> + <?php query_posts('cat='.$dt_mid_left_cat.'&showposts=1'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + <h6 class="category_head"><a href="<?php echo get_category_link($dt_mid_left_cat);?>"><?php echo $cat_name; ?></a></h6> + <?php while (have_posts()) : the_post(); ?> + <div class="post-<?php the_ID(); ?>"> + <h6><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h6> + <div class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></div> + <?php the_excerpt(); ?> + </div> + <?php endwhile; ?> + </div> + <div class="column span-7 last news"> + <?php query_posts('cat='.$dt_mid_right_cat.'&showposts=1'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + <h6 class="category_head"><a href="<?php echo get_category_link($dt_mid_right_cat);?>"><?php echo $cat_name; ?></a></h6> + <?php while (have_posts()) : the_post(); ?> + <div class="post-<?php the_ID(); ?>"> + <h6><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h6> + <div class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></div> + <?php the_excerpt(); ?> + </div> + <?php endwhile; ?> + </div> + <hr class="space" /> +</div> +<!--END MIDDLE POSTS--> +<!--BEGIN RIGHT SIDE--> +<div class="column span-8 prepend-1 last news"> + <div id="home_right"> + <div class="news-block"> + <?php query_posts('cat='.$dt_top_right_cat.'&showposts=3'); ?> + <?php + $category = $wp_query->get_queried_object(); + $cat_name = $category->name; + ?> + <h6 class="category_head"><a href="<?php echo get_category_link($dt_top_right_cat);?>"><?php echo $cat_name; ?></a></h6> + <?php while (have_posts()) : the_post(); ?> + <div class="column span-4 first"> + <?php echo get_the_image_link(array('thumbnail','My Thumbnail'),'thumbnail'); ?> + </div> + <div class="column span-4 last"> + <h6><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h6> + <div class="meta"><?php the_time('M j, Y') ?> | <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?></div> + <?php the_excerpt(); ?> + </div> +<hr /> +<?php endwhile; ?> + </div> +<!-- ABOUT BOX --> + <div class="box"> + <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar-Home') ) : ?> + <?php endif; ?> + </div> +</div> +</div> +<hr class="space" /> +<!--END RIGHT SIDE--> +<!-- BOTTOM LEFT FIVE CATEGORY LISTINGS --> +<div id="gray_bg" class="five_posts"> +<?php $i = 0; ?> +<?php +$display_categories = array("$dt_bot_1st_cat","$dt_bot_2nd_cat","$dt_bot_3rd_cat","$dt_bot_4th_cat","$dt_bot_5th_cat"); +foreach ($display_categories as $category) { ?> +<?php query_posts("showposts=1&cat=$category"); ?> +<?php while (have_posts()) : the_post(); $i++; ?> +<div class="column span-4 post-<?php the_ID(); ?><?php if ($i < 5) { ?> append-1<?php } ?><?php if ($i == 5) { ?> last<?php $i = 0; } ?>"> +<h6 class="category_head"><a href="<?php echo get_category_link($category);?>"><?php single_cat_title(); ?></a></h6> +<h6><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title() ?></a></h6> +<?php echo get_the_image_link(array('thumbnail','My Thumbnail'),'thumbnail'); ?> +<div class="excerpt_small"><?php the_excerpt(); ?></div> +<p class="postmetadata"><?php the_time('M d, Y') ?> | <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p> +<?php endwhile; ?> + +<h6 class="category_more"><a href="<?php echo get_category_link($category);?>">More in <?php single_cat_title(); ?></a></h6> +<ul> +<?php query_posts("showposts=5&offset=1&cat=$category"); ?> +<?php while (have_posts()) : the_post(); ?> +<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>" class="title"><?php the_title(); ?></a></li> +<?php endwhile; ?> +</ul> +</div> +<?php } ?> +<div class="clear"></div> +</div> +<?php get_sidebar(); ?> +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/instructions.html b/wp-content/themes/monochrome-pro/instructions.html new file mode 100644 index 0000000000000000000000000000000000000000..1a5075a3f2d904c87c57c53b2048bc296cf2f56c --- /dev/null +++ b/wp-content/themes/monochrome-pro/instructions.html @@ -0,0 +1,31 @@ +<p>Monochrome is a magazine-style theme for Wordpress packaged with an <strong>AJAX</strong> post <strong>slideshow</strong>, a <strong>custom theme admin page</strong> to easily manage and customize Monochrome, <strong>author archives</strong>, <strong>two page templates</strong>, <strong>multi-tier drop down menus</strong>, utilizes <strong>custom fields options</strong> and a <strong>CSS framework</strong> to aid in customization. Now that's a mouth-full.</p> +<p>With Monochrome, you get:</p> +<ul> +<li>AJAX-enabled post slideshow on the homepage</li> +<li>Multiple entry points to your posts on the homepage</li> +<li>Auto or manual thumbnail control</li> +<li>Two widgetized sidebars, one for homepage content, one for single page views</li> +<li>A widgetized bottombar which includes three widgetized areas</li> +<li>A custom administration panel</li> +<li>Authors archives</li> +<li>Two page templates: One with sidebars and another without</li> +<li>S.E.O. optimized</li> +<li>Valid HTML and CSS</li> +</ul> +<h1 class="alt">INSTALLATION</h1> +<ol> +<li>Unzip the downloaded file</li> +<li>Upload the entire �Monochrome? folder to your �/wp-content/themes/� folder</li> +<li>Log in into your WordPress control panel</li> +<li>Click the Presentation tab</li> +<li>Select the �Monochrome� screenshot</li> +</ol> +<h1 class="alt">CONFIGURATION</h1> +<ol> +<li><b>GETTING STARTED:</b> Monochrome creates a new administration page in the Presentation tab of your Wordpress admin panel to easily manage an update the categories that you want to display on the homepage. <a href='http://graphpaperpress.com/wp-content/uploads/2008/02/theme_options.jpg' title='Theme options page'>View the theme options page.</a> Type in the category id's and you're ready to go! </li> +<li><b>PHOTOS & CUSTOM FIELDS:</b> This theme uses custom fields to manage all photos and thumbnail photos. In your Wordpress settings, you can change the dimensions on both thumbnail and medium sized photos. Change the thumbnail width to 128 px wide by 128px tall. Change the medium photo size to 575 px wide. Save the settings. Wordpress will resize every photo uploaded to the dimensions described above. After uploading the photo into Wordpress using the media uploader, Monochrome Pro automatically generates your thumbnail and slideshow images for your homepage (version 1.1 only). Don't like the thumbnail Wordpress generated for you? Override it, by copying the link to this thumbnail photo and pasting it into the custom field value, with a key called "thumbnail." Similarly, you can copy the link to the medium photo (575 pixels wide maximum) and paste it into the custom field value, with a key called "photo." <a href="http://graphpaperpress.com/wp-content/uploads/2008/02/picture-3.png">Here is a screenshot</a> of all properly filled out fields.</li> +<li><b>YOUR AUTHORS PAGE:</b> Monochrome comes packaged with an author archive (authors.php), which will display some author specific info pulled from the Users page in your Wordpress installation. In order for the author's image to show up, you'll need to place a jpg of the author titled by the author's last name in the wp-content/themes/monochrome_lite/images/authors/ folder. For instance, mine is <a href="http://gridline.thadallender.com/wp-content/themes/gridline/images/authors/Allender.jpg">Allender.jpg</a>, sized at 75px X 75px. Here is an <a href="http://graphpaperpress.com/demo/monochrome/author/admin/">example author page.</a></li> +<li><strong>STYLES.CSS:</strong> Unlike most Wordpress themes which plug all the css in one file called styles.css, Monochrome utilizes the <a href="http://code.google.com/p/blueprintcss/">Blueprint</a> CSS framework to help separate positioning, typography, forms and what I'll refer to as <em>custom</em> or <em>Monochrome</em> specific styles. To edit all <em>custom Monochrome</em> specific styles, you'll need to edit the file style.css in your wp/wp-content/themes/monochrome/ directory.</li> +</ol> +<h1 class="alt">ABOUT BLUEPRINT</h1> +<p>This theme utilizes a CSS framework called <a href="http://code.google.com/p/blueprintcss/">Blueprint</a>. Who is credited for the ideas behind Blueprint? Some of the best designers on the web. They include <a href="http://jeffcroft.com">Jeff Croft</a>, designer for <a href="http://blueflavor.com/">Blue Flavor</a>, <a href="http://subtraction.com">Khoi Vinh</a>, design director for <a href="http://nytimes.com">NYTimes.com</a>, <a href="http://playgroundblues.com/">Nathan Borror</a>, <a href="http://mintchaos.com/">Christian Metts</a>, <a href="http://meyerweb.com/eric">Eric Meyer</a>, <a href="http://wilsonminer.com/">Wilson Minor</a>, <a href="http://twinhelix.com/">Angus Turnbull</a>, <a href="http://bjorkoy.com/">Olav Bjorkoy</a> and a few others. Most major websites use some form of css framework to allow for rapid, consistent development and design. <a href="http://www.blueflavor.com/blog/design/blueprintcss_101.php">Take the Blueprint 101 course</a> to learn about all the possibilities.</p> diff --git a/wp-content/themes/monochrome-pro/js/dhtml.js b/wp-content/themes/monochrome-pro/js/dhtml.js new file mode 100644 index 0000000000000000000000000000000000000000..9834ae25e1f991a63ec2f73a497fe30dbf4946cf --- /dev/null +++ b/wp-content/themes/monochrome-pro/js/dhtml.js @@ -0,0 +1 @@ +navHover = function() { var lis = document.getElementById("navmenu-h-r").getElementsByTagName("LI"); for (var i=0; i<lis.length; i++) { lis[i].onmouseover=function() { this.className+=" iehover"; } lis[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" iehover\\b"), ""); } } } if (window.attachEvent) window.attachEvent("onload", navHover); \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/js/dhtml2.js b/wp-content/themes/monochrome-pro/js/dhtml2.js new file mode 100644 index 0000000000000000000000000000000000000000..5fda7b71fb4b3a4d075b58964f67e559e5b598bc --- /dev/null +++ b/wp-content/themes/monochrome-pro/js/dhtml2.js @@ -0,0 +1 @@ +navHover = function() { var lis = document.getElementById("navmenu-h").getElementsByTagName("LI"); for (var i=0; i<lis.length; i++) { lis[i].onmouseover=function() { this.className+=" iehover"; } lis[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" iehover\\b"), ""); } } } if (window.attachEvent) window.attachEvent("onload", navHover); \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/js/functions.js b/wp-content/themes/monochrome-pro/js/functions.js new file mode 100644 index 0000000000000000000000000000000000000000..bc43216aed1fd5354e1749acc530821d771ced00 --- /dev/null +++ b/wp-content/themes/monochrome-pro/js/functions.js @@ -0,0 +1,20 @@ +/************************************************************ + ** Clears a field + ** By: Joshua Sowin (fireandknowledge.org) + ** HTML: <input type="text" value="Search" name="search" + ** id="search" size="25" + ** onFocus="clearInput('search', 'Search')" + ** onBlur="clearInput('search', 'Search')" /> + ***********************************************************/ +function clearInput(field_id, term_to_clear) { + + // Clear input if it matches default value + if (document.getElementById(field_id).value == term_to_clear ) { + document.getElementById(field_id).value = ''; + } + + // If the value is blank, then put back term + else if (document.getElementById(field_id).value == '' ) { + document.getElementById(field_id).value = term_to_clear; + } +} // end clearSearch() \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/js/jquery-1.2.3.js b/wp-content/themes/monochrome-pro/js/jquery-1.2.3.js new file mode 100644 index 0000000000000000000000000000000000000000..2e43a823581d7efd076dea7d734cf02ad3b91e42 --- /dev/null +++ b/wp-content/themes/monochrome-pro/js/jquery-1.2.3.js @@ -0,0 +1,3408 @@ +(function(){ +/* + * jQuery 1.2.3 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ + * $Rev: 4663 $ + */ + +// Map over jQuery in case of overwrite +if ( window.jQuery ) + var _jQuery = window.jQuery; + +var jQuery = window.jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.prototype.init( selector, context ); +}; + +// Map over the $ in case of overwrite +if ( window.$ ) + var _$ = window.$; + +// Map the jQuery namespace to the '$' one +window.$ = jQuery; + +// A simple way to check for HTML strings or ID strings +// (both of which we optimize for) +var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; + +// Is it a simple selector +var isSimple = /^.[^:#\[\.]*$/; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this[0] = selector; + this.length = 1; + return this; + + // Handle HTML strings + } else if ( typeof selector == "string" ) { + // Are we dealing with HTML string or an ID? + var match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) + selector = jQuery.clean( [ match[1] ], context ); + + // HANDLE: $("#id") + else { + var elem = document.getElementById( match[3] ); + + // Make sure an element was located + if ( elem ) + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id != match[3] ) + return jQuery().find( selector ); + + // Otherwise, we inject the element directly into the jQuery object + else { + this[0] = elem; + this.length = 1; + return this; + } + + else + selector = []; + } + + // HANDLE: $(expr, [context]) + // (which is just equivalent to: $(content).find(expr) + } else + return new jQuery( context ).find( selector ); + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) + return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); + + return this.setArray( + // HANDLE: $(array) + selector.constructor == Array && selector || + + // HANDLE: $(arraylike) + // Watch for when an array-like object, contains DOM nodes, is passed in as the selector + (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || + + // HANDLE: $(*) + [ selector ] ); + }, + + // The current version of jQuery being used + jquery: "1.2.3", + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + // The number of elements contained in the matched element set + length: 0, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == undefined ? + + // Return a 'clean' array + jQuery.makeArray( this ) : + + // Return just the object + this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + // Build a new jQuery matched element set + var ret = jQuery( elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + Array.prototype.push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + var ret = -1; + + // Locate the position of the desired element + this.each(function(i){ + if ( this == elem ) + ret = i; + }); + + return ret; + }, + + attr: function( name, value, type ) { + var options = name; + + // Look for the case where we're accessing a style value + if ( name.constructor == String ) + if ( value == undefined ) + return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined; + + else { + options = {}; + options[ name ] = value; + } + + // Check to see if we're setting style values + return this.each(function(i){ + // Set all the styles + for ( name in options ) + jQuery.attr( + type ? + this.style : + this, + name, jQuery.prop( this, options[ name ], type, i, name ) + ); + }); + }, + + css: function( key, value ) { + // ignore negative width and height values + if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) + value = undefined; + return this.attr( key, value, "curCSS" ); + }, + + text: function( text ) { + if ( typeof text != "object" && text != null ) + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + + var ret = ""; + + jQuery.each( text || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + ret += this.nodeType != 1 ? + this.nodeValue : + jQuery.fn.text( [ this ] ); + }); + }); + + return ret; + }, + + wrapAll: function( html ) { + if ( this[0] ) + // The elements to wrap the target around + jQuery( html, this[0].ownerDocument ) + .clone() + .insertBefore( this[0] ) + .map(function(){ + var elem = this; + + while ( elem.firstChild ) + elem = elem.firstChild; + + return elem; + }) + .append(this); + + return this; + }, + + wrapInner: function( html ) { + return this.each(function(){ + jQuery( this ).contents().wrapAll( html ); + }); + }, + + wrap: function( html ) { + return this.each(function(){ + jQuery( this ).wrapAll( html ); + }); + }, + + append: function() { + return this.domManip(arguments, true, false, function(elem){ + if (this.nodeType == 1) + this.appendChild( elem ); + }); + }, + + prepend: function() { + return this.domManip(arguments, true, true, function(elem){ + if (this.nodeType == 1) + this.insertBefore( elem, this.firstChild ); + }); + }, + + before: function() { + return this.domManip(arguments, false, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + }, + + after: function() { + return this.domManip(arguments, false, true, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + }, + + end: function() { + return this.prevObject || jQuery( [] ); + }, + + find: function( selector ) { + var elems = jQuery.map(this, function(elem){ + return jQuery.find( selector, elem ); + }); + + return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? + jQuery.unique( elems ) : + elems ); + }, + + clone: function( events ) { + // Do the clone + var ret = this.map(function(){ + if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { + // IE copies events bound via attachEvent when + // using cloneNode. Calling detachEvent on the + // clone will also remove the events from the orignal + // In order to get around this, we use innerHTML. + // Unfortunately, this means some modifications to + // attributes in IE that are actually only stored + // as properties will not be copied (such as the + // the name attribute on an input). + var clone = this.cloneNode(true), + container = document.createElement("div"); + container.appendChild(clone); + return jQuery.clean([container.innerHTML])[0]; + } else + return this.cloneNode(true); + }); + + // Need to set the expando to null on the cloned set if it exists + // removeData doesn't work here, IE removes it from the original as well + // this is primarily for IE but the data expando shouldn't be copied over in any browser + var clone = ret.find("*").andSelf().each(function(){ + if ( this[ expando ] != undefined ) + this[ expando ] = null; + }); + + // Copy the events from the original to the clone + if ( events === true ) + this.find("*").andSelf().each(function(i){ + if (this.nodeType == 3) + return; + var events = jQuery.data( this, "events" ); + + for ( var type in events ) + for ( var handler in events[ type ] ) + jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); + }); + + // Return the cloned set + return ret; + }, + + filter: function( selector ) { + return this.pushStack( + jQuery.isFunction( selector ) && + jQuery.grep(this, function(elem, i){ + return selector.call( elem, i ); + }) || + + jQuery.multiFilter( selector, this ) ); + }, + + not: function( selector ) { + if ( selector.constructor == String ) + // test special case where just one selector is passed in + if ( isSimple.test( selector ) ) + return this.pushStack( jQuery.multiFilter( selector, this, true ) ); + else + selector = jQuery.multiFilter( selector, this ); + + var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; + return this.filter(function() { + return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; + }); + }, + + add: function( selector ) { + return !selector ? this : this.pushStack( jQuery.merge( + this.get(), + selector.constructor == String ? + jQuery( selector ).get() : + selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? + selector : [selector] ) ); + }, + + is: function( selector ) { + return selector ? + jQuery.multiFilter( selector, this ).length > 0 : + false; + }, + + hasClass: function( selector ) { + return this.is( "." + selector ); + }, + + val: function( value ) { + if ( value == undefined ) { + + if ( this.length ) { + var elem = this[0]; + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if ( index < 0 ) + return null; + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; + + // We don't need an array for one selects + if ( one ) + return value; + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + + // Everything else, we just grab the value + } else + return (this[0].value || "").replace(/\r/g, ""); + + } + + return undefined; + } + + return this.each(function(){ + if ( this.nodeType != 1 ) + return; + + if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); + + else if ( jQuery.nodeName( this, "select" ) ) { + var values = value.constructor == Array ? + value : + [ value ]; + + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); + + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); + }, + + html: function( value ) { + return value == undefined ? + (this.length ? + this[0].innerHTML : + null) : + this.empty().append( value ); + }, + + replaceWith: function( value ) { + return this.after( value ).remove(); + }, + + eq: function( i ) { + return this.slice( i, i + 1 ); + }, + + slice: function() { + return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function(elem, i){ + return callback.call( elem, i, elem ); + })); + }, + + andSelf: function() { + return this.add( this.prevObject ); + }, + + data: function( key, value ){ + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value == null ) { + var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + if ( data == undefined && this.length ) + data = jQuery.data( this[0], key ); + + return data == null && parts[1] ? + this.data( parts[0] ) : + data; + } else + return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ + jQuery.data( this, key, value ); + }); + }, + + removeData: function( key ){ + return this.each(function(){ + jQuery.removeData( this, key ); + }); + }, + + domManip: function( args, table, reverse, callback ) { + var clone = this.length > 1, elems; + + return this.each(function(){ + if ( !elems ) { + elems = jQuery.clean( args, this.ownerDocument ); + + if ( reverse ) + elems.reverse(); + } + + var obj = this; + + if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) + obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); + + var scripts = jQuery( [] ); + + jQuery.each(elems, function(){ + var elem = clone ? + jQuery( this ).clone( true )[0] : + this; + + // execute all scripts after the elements have been injected + if ( jQuery.nodeName( elem, "script" ) ) { + scripts = scripts.add( elem ); + } else { + // Remove any inner scripts for later evaluation + if ( elem.nodeType == 1 ) + scripts = scripts.add( jQuery( "script", elem ).remove() ); + + // Inject the elements into the document + callback.call( obj, elem ); + } + }); + + scripts.each( evalScript ); + }); + } +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.prototype.init.prototype = jQuery.prototype; + +function evalScript( i, elem ) { + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); +} + +jQuery.extend = jQuery.fn.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( target.constructor == Boolean ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target != "object" && typeof target != "function" ) + target = {}; + + // extend jQuery itself if only one argument is passed + if ( length == 1 ) { + target = this; + i = 0; + } + + for ( ; i < length; i++ ) + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) + // Extend the base object + for ( var name in options ) { + // Prevent never-ending loop + if ( target === options[ name ] ) + continue; + + // Recurse if we're merging object values + if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) + target[ name ] = jQuery.extend( target[ name ], options[ name ] ); + + // Don't bring in undefined values + else if ( options[ name ] != undefined ) + target[ name ] = options[ name ]; + + } + + // Return the modified object + return target; +}; + +var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {}; + +// exclude the following css properties to add px +var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; + +jQuery.extend({ + noConflict: function( deep ) { + window.$ = _$; + + if ( deep ) + window.jQuery = _jQuery; + + return jQuery; + }, + + // See test/unit/core.js for details concerning this function. + isFunction: function( fn ) { + return !!fn && typeof fn != "string" && !fn.nodeName && + fn.constructor != Array && /function/i.test( fn + "" ); + }, + + // check if an element is in a (or is an) XML document + isXMLDoc: function( elem ) { + return elem.documentElement && !elem.body || + elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + data = jQuery.trim( data ); + + if ( data ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + if ( jQuery.browser.msie ) + script.text = data; + else + script.appendChild( document.createTextNode( data ) ); + + head.appendChild( script ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + cache: {}, + + data: function( elem, name, data ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // Compute a unique ID for the element + if ( !id ) + id = elem[ expando ] = ++uuid; + + // Only generate the data cache if we're + // trying to access or manipulate it + if ( name && !jQuery.cache[ id ] ) + jQuery.cache[ id ] = {}; + + // Prevent overriding the named cache with undefined values + if ( data != undefined ) + jQuery.cache[ id ][ name ] = data; + + // Return the named cache data, or the ID for the element + return name ? + jQuery.cache[ id ][ name ] : + id; + }, + + removeData: function( elem, name ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // If we want to remove a specific section of the element's data + if ( name ) { + if ( jQuery.cache[ id ] ) { + // Remove the section of cache data + delete jQuery.cache[ id ][ name ]; + + // If we've removed all the data, remove the element's cache + name = ""; + + for ( name in jQuery.cache[ id ] ) + break; + + if ( !name ) + jQuery.removeData( elem ); + } + + // Otherwise, we want to remove all of the element's data + } else { + // Clean up the element expando + try { + delete elem[ expando ]; + } catch(e){ + // IE has trouble directly removing the expando + // but it's ok with using removeAttribute + if ( elem.removeAttribute ) + elem.removeAttribute( expando ); + } + + // Completely remove the data cache + delete jQuery.cache[ id ]; + } + }, + + // args is for internal usage only + each: function( object, callback, args ) { + if ( args ) { + if ( object.length == undefined ) { + for ( var name in object ) + if ( callback.apply( object[ name ], args ) === false ) + break; + } else + for ( var i = 0, length = object.length; i < length; i++ ) + if ( callback.apply( object[ i ], args ) === false ) + break; + + // A special, fast, case for the most common use of each + } else { + if ( object.length == undefined ) { + for ( var name in object ) + if ( callback.call( object[ name ], name, object[ name ] ) === false ) + break; + } else + for ( var i = 0, length = object.length, value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} + } + + return object; + }, + + prop: function( elem, value, type, i, name ) { + // Handle executable functions + if ( jQuery.isFunction( value ) ) + value = value.call( elem, i ); + + // Handle passing in a number to a CSS property + return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? + value + "px" : + value; + }, + + className: { + // internal only, use addClass("class") + add: function( elem, classNames ) { + jQuery.each((classNames || "").split(/\s+/), function(i, className){ + if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) + elem.className += (elem.className ? " " : "") + className; + }); + }, + + // internal only, use removeClass("class") + remove: function( elem, classNames ) { + if (elem.nodeType == 1) + elem.className = classNames != undefined ? + jQuery.grep(elem.className.split(/\s+/), function(className){ + return !jQuery.className.has( classNames, className ); + }).join(" ") : + ""; + }, + + // internal only, use is(".class") + has: function( elem, className ) { + return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; + } + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var old = {}; + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( var name in options ) + elem.style[ name ] = old[ name ]; + }, + + css: function( elem, name, force ) { + if ( name == "width" || name == "height" ) { + var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; + + function getWH() { + val = name == "width" ? elem.offsetWidth : elem.offsetHeight; + var padding = 0, border = 0; + jQuery.each( which, function() { + padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; + border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; + }); + val -= Math.round(padding + border); + } + + if ( jQuery(elem).is(":visible") ) + getWH(); + else + jQuery.swap( elem, props, getWH ); + + return Math.max(0, val); + } + + return jQuery.curCSS( elem, name, force ); + }, + + curCSS: function( elem, name, force ) { + var ret; + + // A helper method for determining if an element's values are broken + function color( elem ) { + if ( !jQuery.browser.safari ) + return false; + + var ret = document.defaultView.getComputedStyle( elem, null ); + return !ret || ret.getPropertyValue("color") == ""; + } + + // We need to handle opacity special in IE + if ( name == "opacity" && jQuery.browser.msie ) { + ret = jQuery.attr( elem.style, "opacity" ); + + return ret == "" ? + "1" : + ret; + } + // Opera sometimes will give the wrong display answer, this fixes it, see #2037 + if ( jQuery.browser.opera && name == "display" ) { + var save = elem.style.outline; + elem.style.outline = "0 solid black"; + elem.style.outline = save; + } + + // Make sure we're using the right name for getting the float value + if ( name.match( /float/i ) ) + name = styleFloat; + + if ( !force && elem.style && elem.style[ name ] ) + ret = elem.style[ name ]; + + else if ( document.defaultView && document.defaultView.getComputedStyle ) { + + // Only "float" is needed here + if ( name.match( /float/i ) ) + name = "float"; + + name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); + + var getComputedStyle = document.defaultView.getComputedStyle( elem, null ); + + if ( getComputedStyle && !color( elem ) ) + ret = getComputedStyle.getPropertyValue( name ); + + // If the element isn't reporting its values properly in Safari + // then some display: none elements are involved + else { + var swap = [], stack = []; + + // Locate all of the parent display: none elements + for ( var a = elem; a && color(a); a = a.parentNode ) + stack.unshift(a); + + // Go through and make them visible, but in reverse + // (It would be better if we knew the exact display type that they had) + for ( var i = 0; i < stack.length; i++ ) + if ( color( stack[ i ] ) ) { + swap[ i ] = stack[ i ].style.display; + stack[ i ].style.display = "block"; + } + + // Since we flip the display style, we have to handle that + // one special, otherwise get the value + ret = name == "display" && swap[ stack.length - 1 ] != null ? + "none" : + ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || ""; + + // Finally, revert the display styles back + for ( var i = 0; i < swap.length; i++ ) + if ( swap[ i ] != null ) + stack[ i ].style.display = swap[ i ]; + } + + // We should always get a number back from opacity + if ( name == "opacity" && ret == "" ) + ret = "1"; + + } else if ( elem.currentStyle ) { + var camelCase = name.replace(/\-(\w)/g, function(all, letter){ + return letter.toUpperCase(); + }); + + ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { + // Remember the original values + var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + elem.runtimeStyle.left = elem.currentStyle.left; + elem.style.left = ret || 0; + ret = elem.style.pixelLeft + "px"; + + // Revert the changed values + elem.style.left = style; + elem.runtimeStyle.left = runtimeStyle; + } + } + + return ret; + }, + + clean: function( elems, context ) { + var ret = []; + context = context || document; + // !context.createElement fails in IE with an error but returns typeof 'object' + if (typeof context.createElement == 'undefined') + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + + jQuery.each(elems, function(i, elem){ + if ( !elem ) + return; + + if ( elem.constructor == Number ) + elem = elem.toString(); + + // Convert html string into DOM nodes + if ( typeof elem == "string" ) { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? + all : + front + "></" + tag + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); + + var wrap = + // option or optgroup + !tags.indexOf("<opt") && + [ 1, "<select multiple='multiple'>", "</select>" ] || + + !tags.indexOf("<leg") && + [ 1, "<fieldset>", "</fieldset>" ] || + + tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [ 1, "<table>", "</table>" ] || + + !tags.indexOf("<tr") && + [ 2, "<table><tbody>", "</tbody></table>" ] || + + // <thead> matched above + (!tags.indexOf("<td") || !tags.indexOf("<th")) && + [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] || + + !tags.indexOf("<col") && + [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] || + + // IE can't serialize <link> and <script> tags normally + jQuery.browser.msie && + [ 1, "div<div>", "</div>" ] || + + [ 0, "", "" ]; + + // Go to html and back, then peel off extra wrappers + div.innerHTML = wrap[1] + elem + wrap[2]; + + // Move to the right depth + while ( wrap[0]-- ) + div = div.lastChild; + + // Remove IE's autoinserted <tbody> from table fragments + if ( jQuery.browser.msie ) { + + // String was a <table>, *may* have spurious <tbody> + var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ? + div.firstChild && div.firstChild.childNodes : + + // String was a bare <thead> or <tfoot> + wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ? + div.childNodes : + []; + + for ( var j = tbody.length - 1; j >= 0 ; --j ) + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + + // IE completely kills leading whitespace when innerHTML is used + if ( /^\s/.test( elem ) ) + div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild ); + + } + + elem = jQuery.makeArray( div.childNodes ); + } + + if ( elem.length === 0 && (!jQuery.nodeName( elem, "form" ) && !jQuery.nodeName( elem, "select" )) ) + return; + + if ( elem[0] == undefined || jQuery.nodeName( elem, "form" ) || elem.options ) + ret.push( elem ); + + else + ret = jQuery.merge( ret, elem ); + + }); + + return ret; + }, + + attr: function( elem, name, value ) { + // don't set attributes on text and comment nodes + if (!elem || elem.nodeType == 3 || elem.nodeType == 8) + return undefined; + + var fix = jQuery.isXMLDoc( elem ) ? + {} : + jQuery.props; + + // Safari mis-reports the default selected property of a hidden option + // Accessing the parent's selectedIndex property fixes it + if ( name == "selected" && jQuery.browser.safari ) + elem.parentNode.selectedIndex; + + // Certain attributes only work when accessed via the old DOM 0 way + if ( fix[ name ] ) { + if ( value != undefined ) + elem[ fix[ name ] ] = value; + + return elem[ fix[ name ] ]; + + } else if ( jQuery.browser.msie && name == "style" ) + return jQuery.attr( elem.style, "cssText", value ); + + else if ( value == undefined && jQuery.browser.msie && jQuery.nodeName( elem, "form" ) && (name == "action" || name == "method") ) + return elem.getAttributeNode( name ).nodeValue; + + // IE elem.getAttribute passes even for style + else if ( elem.tagName ) { + + if ( value != undefined ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) + throw "type property can't be changed"; + + // convert the value to a string (all browsers do this but IE) see #1070 + elem.setAttribute( name, "" + value ); + } + + if ( jQuery.browser.msie && /href|src/.test( name ) && !jQuery.isXMLDoc( elem ) ) + return elem.getAttribute( name, 2 ); + + return elem.getAttribute( name ); + + // elem is actually elem.style ... set the style + } else { + // IE actually uses filters for opacity + if ( name == "opacity" && jQuery.browser.msie ) { + if ( value != undefined ) { + // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + elem.zoom = 1; + + // Set the alpha filter to set the opacity + elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) + + (parseFloat( value ).toString() == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")"); + } + + return elem.filter && elem.filter.indexOf("opacity=") >= 0 ? + (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100).toString() : + ""; + } + + name = name.replace(/-([a-z])/ig, function(all, letter){ + return letter.toUpperCase(); + }); + + if ( value != undefined ) + elem[ name ] = value; + + return elem[ name ]; + } + }, + + trim: function( text ) { + return (text || "").replace( /^\s+|\s+$/g, "" ); + }, + + makeArray: function( array ) { + var ret = []; + + // Need to use typeof to fight Safari childNodes crashes + if ( typeof array != "array" ) + for ( var i = 0, length = array.length; i < length; i++ ) + ret.push( array[ i ] ); + else + ret = array.slice( 0 ); + + return ret; + }, + + inArray: function( elem, array ) { + for ( var i = 0, length = array.length; i < length; i++ ) + if ( array[ i ] == elem ) + return i; + + return -1; + }, + + merge: function( first, second ) { + // We have to loop this way because IE & Opera overwrite the length + // expando of getElementsByTagName + + // Also, we need to make sure that the correct elements are being returned + // (IE returns comment nodes in a '*' query) + if ( jQuery.browser.msie ) { + for ( var i = 0; second[ i ]; i++ ) + if ( second[ i ].nodeType != 8 ) + first.push( second[ i ] ); + + } else + for ( var i = 0; second[ i ]; i++ ) + first.push( second[ i ] ); + + return first; + }, + + unique: function( array ) { + var ret = [], done = {}; + + try { + + for ( var i = 0, length = array.length; i < length; i++ ) { + var id = jQuery.data( array[ i ] ); + + if ( !done[ id ] ) { + done[ id ] = true; + ret.push( array[ i ] ); + } + } + + } catch( e ) { + ret = array; + } + + return ret; + }, + + grep: function( elems, callback, inv ) { + var ret = []; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) + if ( !inv && callback( elems[ i ], i ) || inv && !callback( elems[ i ], i ) ) + ret.push( elems[ i ] ); + + return ret; + }, + + map: function( elems, callback ) { + var ret = []; + + // Go through the array, translating each of the items to their + // new value (or values). + for ( var i = 0, length = elems.length; i < length; i++ ) { + var value = callback( elems[ i ], i ); + + if ( value !== null && value != undefined ) { + if ( value.constructor != Array ) + value = [ value ]; + + ret = ret.concat( value ); + } + } + + return ret; + } +}); + +var userAgent = navigator.userAgent.toLowerCase(); + +// Figure out what browser is being used +jQuery.browser = { + version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1], + safari: /webkit/.test( userAgent ), + opera: /opera/.test( userAgent ), + msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ), + mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ) +}; + +var styleFloat = jQuery.browser.msie ? + "styleFloat" : + "cssFloat"; + +jQuery.extend({ + // Check to see if the W3C box model is being used + boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat", + + props: { + "for": "htmlFor", + "class": "className", + "float": styleFloat, + cssFloat: styleFloat, + styleFloat: styleFloat, + innerHTML: "innerHTML", + className: "className", + value: "value", + disabled: "disabled", + checked: "checked", + readonly: "readOnly", + selected: "selected", + maxlength: "maxLength", + selectedIndex: "selectedIndex", + defaultValue: "defaultValue", + tagName: "tagName", + nodeName: "nodeName" + } +}); + +jQuery.each({ + parent: function(elem){return elem.parentNode;}, + parents: function(elem){return jQuery.dir(elem,"parentNode");}, + next: function(elem){return jQuery.nth(elem,2,"nextSibling");}, + prev: function(elem){return jQuery.nth(elem,2,"previousSibling");}, + nextAll: function(elem){return jQuery.dir(elem,"nextSibling");}, + prevAll: function(elem){return jQuery.dir(elem,"previousSibling");}, + siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);}, + children: function(elem){return jQuery.sibling(elem.firstChild);}, + contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);} +}, function(name, fn){ + jQuery.fn[ name ] = function( selector ) { + var ret = jQuery.map( this, fn ); + + if ( selector && typeof selector == "string" ) + ret = jQuery.multiFilter( selector, ret ); + + return this.pushStack( jQuery.unique( ret ) ); + }; +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function(name, original){ + jQuery.fn[ name ] = function() { + var args = arguments; + + return this.each(function(){ + for ( var i = 0, length = args.length; i < length; i++ ) + jQuery( args[ i ] )[ original ]( this ); + }); + }; +}); + +jQuery.each({ + removeAttr: function( name ) { + jQuery.attr( this, name, "" ); + if (this.nodeType == 1) + this.removeAttribute( name ); + }, + + addClass: function( classNames ) { + jQuery.className.add( this, classNames ); + }, + + removeClass: function( classNames ) { + jQuery.className.remove( this, classNames ); + }, + + toggleClass: function( classNames ) { + jQuery.className[ jQuery.className.has( this, classNames ) ? "remove" : "add" ]( this, classNames ); + }, + + remove: function( selector ) { + if ( !selector || jQuery.filter( selector, [ this ] ).r.length ) { + // Prevent memory leaks + jQuery( "*", this ).add(this).each(function(){ + jQuery.event.remove(this); + jQuery.removeData(this); + }); + if (this.parentNode) + this.parentNode.removeChild( this ); + } + }, + + empty: function() { + // Remove element nodes and prevent memory leaks + jQuery( ">*", this ).remove(); + + // Remove any remaining nodes + while ( this.firstChild ) + this.removeChild( this.firstChild ); + } +}, function(name, fn){ + jQuery.fn[ name ] = function(){ + return this.each( fn, arguments ); + }; +}); + +jQuery.each([ "Height", "Width" ], function(i, name){ + var type = name.toLowerCase(); + + jQuery.fn[ type ] = function( size ) { + // Get window width or height + return this[0] == window ? + // Opera reports document.body.client[Width/Height] properly in both quirks and standards + jQuery.browser.opera && document.body[ "client" + name ] || + + // Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths) + jQuery.browser.safari && window[ "inner" + name ] || + + // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode + document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || document.body[ "client" + name ] : + + // Get document width or height + this[0] == document ? + // Either scroll[Width/Height] or offset[Width/Height], whichever is greater + Math.max( + Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]), + Math.max(document.body["offset" + name], document.documentElement["offset" + name]) + ) : + + // Get or set width or height on the element + size == undefined ? + // Get width or height on the element + (this.length ? jQuery.css( this[0], type ) : null) : + + // Set the width or height on the element (default to pixels if value is unitless) + this.css( type, size.constructor == String ? size : size + "px" ); + }; +}); + +var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ? + "(?:[\\w*_-]|\\\\.)" : + "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)", + quickChild = new RegExp("^>\\s*(" + chars + "+)"), + quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"), + quickClass = new RegExp("^([#.]?)(" + chars + "*)"); + +jQuery.extend({ + expr: { + "": function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);}, + "#": function(a,i,m){return a.getAttribute("id")==m[2];}, + ":": { + // Position Checks + lt: function(a,i,m){return i<m[3]-0;}, + gt: function(a,i,m){return i>m[3]-0;}, + nth: function(a,i,m){return m[3]-0==i;}, + eq: function(a,i,m){return m[3]-0==i;}, + first: function(a,i){return i==0;}, + last: function(a,i,m,r){return i==r.length-1;}, + even: function(a,i){return i%2==0;}, + odd: function(a,i){return i%2;}, + + // Child Checks + "first-child": function(a){return a.parentNode.getElementsByTagName("*")[0]==a;}, + "last-child": function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;}, + "only-child": function(a){return !jQuery.nth(a.parentNode.lastChild,2,"previousSibling");}, + + // Parent Checks + parent: function(a){return a.firstChild;}, + empty: function(a){return !a.firstChild;}, + + // Text Check + contains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;}, + + // Visibility + visible: function(a){return "hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";}, + hidden: function(a){return "hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";}, + + // Form attributes + enabled: function(a){return !a.disabled;}, + disabled: function(a){return a.disabled;}, + checked: function(a){return a.checked;}, + selected: function(a){return a.selected||jQuery.attr(a,"selected");}, + + // Form elements + text: function(a){return "text"==a.type;}, + radio: function(a){return "radio"==a.type;}, + checkbox: function(a){return "checkbox"==a.type;}, + file: function(a){return "file"==a.type;}, + password: function(a){return "password"==a.type;}, + submit: function(a){return "submit"==a.type;}, + image: function(a){return "image"==a.type;}, + reset: function(a){return "reset"==a.type;}, + button: function(a){return "button"==a.type||jQuery.nodeName(a,"button");}, + input: function(a){return /input|select|textarea|button/i.test(a.nodeName);}, + + // :has() + has: function(a,i,m){return jQuery.find(m[3],a).length;}, + + // :header + header: function(a){return /h\d/i.test(a.nodeName);}, + + // :animated + animated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;} + } + }, + + // The regular expressions that power the parsing engine + parse: [ + // Match: [@value='test'], [@foo] + /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/, + + // Match: :contains('foo') + /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/, + + // Match: :even, :last-chlid, #id, .class + new RegExp("^([:.#]*)(" + chars + "+)") + ], + + multiFilter: function( expr, elems, not ) { + var old, cur = []; + + while ( expr && expr != old ) { + old = expr; + var f = jQuery.filter( expr, elems, not ); + expr = f.t.replace(/^\s*,\s*/, "" ); + cur = not ? elems = f.r : jQuery.merge( cur, f.r ); + } + + return cur; + }, + + find: function( t, context ) { + // Quickly handle non-string expressions + if ( typeof t != "string" ) + return [ t ]; + + // check to make sure context is a DOM element or a document + if ( context && context.nodeType != 1 && context.nodeType != 9) + return [ ]; + + // Set the correct context (if none is provided) + context = context || document; + + // Initialize the search + var ret = [context], done = [], last, nodeName; + + // Continue while a selector expression exists, and while + // we're no longer looping upon ourselves + while ( t && last != t ) { + var r = []; + last = t; + + t = jQuery.trim(t); + + var foundToken = false; + + // An attempt at speeding up child selectors that + // point to a specific element tag + var re = quickChild; + var m = re.exec(t); + + if ( m ) { + nodeName = m[1].toUpperCase(); + + // Perform our own iteration and filter + for ( var i = 0; ret[i]; i++ ) + for ( var c = ret[i].firstChild; c; c = c.nextSibling ) + if ( c.nodeType == 1 && (nodeName == "*" || c.nodeName.toUpperCase() == nodeName) ) + r.push( c ); + + ret = r; + t = t.replace( re, "" ); + if ( t.indexOf(" ") == 0 ) continue; + foundToken = true; + } else { + re = /^([>+~])\s*(\w*)/i; + + if ( (m = re.exec(t)) != null ) { + r = []; + + var merge = {}; + nodeName = m[2].toUpperCase(); + m = m[1]; + + for ( var j = 0, rl = ret.length; j < rl; j++ ) { + var n = m == "~" || m == "+" ? ret[j].nextSibling : ret[j].firstChild; + for ( ; n; n = n.nextSibling ) + if ( n.nodeType == 1 ) { + var id = jQuery.data(n); + + if ( m == "~" && merge[id] ) break; + + if (!nodeName || n.nodeName.toUpperCase() == nodeName ) { + if ( m == "~" ) merge[id] = true; + r.push( n ); + } + + if ( m == "+" ) break; + } + } + + ret = r; + + // And remove the token + t = jQuery.trim( t.replace( re, "" ) ); + foundToken = true; + } + } + + // See if there's still an expression, and that we haven't already + // matched a token + if ( t && !foundToken ) { + // Handle multiple expressions + if ( !t.indexOf(",") ) { + // Clean the result set + if ( context == ret[0] ) ret.shift(); + + // Merge the result sets + done = jQuery.merge( done, ret ); + + // Reset the context + r = ret = [context]; + + // Touch up the selector string + t = " " + t.substr(1,t.length); + + } else { + // Optimize for the case nodeName#idName + var re2 = quickID; + var m = re2.exec(t); + + // Re-organize the results, so that they're consistent + if ( m ) { + m = [ 0, m[2], m[3], m[1] ]; + + } else { + // Otherwise, do a traditional filter check for + // ID, class, and element selectors + re2 = quickClass; + m = re2.exec(t); + } + + m[2] = m[2].replace(/\\/g, ""); + + var elem = ret[ret.length-1]; + + // Try to do a global search by ID, where we can + if ( m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem) ) { + // Optimization for HTML document case + var oid = elem.getElementById(m[2]); + + // Do a quick check for the existence of the actual ID attribute + // to avoid selecting by the name attribute in IE + // also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form + if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2] ) + oid = jQuery('[@id="'+m[2]+'"]', elem)[0]; + + // Do a quick check for node name (where applicable) so + // that div#foo searches will be really fast + ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : []; + } else { + // We need to find all descendant elements + for ( var i = 0; ret[i]; i++ ) { + // Grab the tag name being searched for + var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*" : m[2]; + + // Handle IE7 being really dumb about <object>s + if ( tag == "*" && ret[i].nodeName.toLowerCase() == "object" ) + tag = "param"; + + r = jQuery.merge( r, ret[i].getElementsByTagName( tag )); + } + + // It's faster to filter by class and be done with it + if ( m[1] == "." ) + r = jQuery.classFilter( r, m[2] ); + + // Same with ID filtering + if ( m[1] == "#" ) { + var tmp = []; + + // Try to find the element with the ID + for ( var i = 0; r[i]; i++ ) + if ( r[i].getAttribute("id") == m[2] ) { + tmp = [ r[i] ]; + break; + } + + r = tmp; + } + + ret = r; + } + + t = t.replace( re2, "" ); + } + + } + + // If a selector string still exists + if ( t ) { + // Attempt to filter it + var val = jQuery.filter(t,r); + ret = r = val.r; + t = jQuery.trim(val.t); + } + } + + // An error occurred with the selector; + // just return an empty set instead + if ( t ) + ret = []; + + // Remove the root context + if ( ret && context == ret[0] ) + ret.shift(); + + // And combine the results + done = jQuery.merge( done, ret ); + + return done; + }, + + classFilter: function(r,m,not){ + m = " " + m + " "; + var tmp = []; + for ( var i = 0; r[i]; i++ ) { + var pass = (" " + r[i].className + " ").indexOf( m ) >= 0; + if ( !not && pass || not && !pass ) + tmp.push( r[i] ); + } + return tmp; + }, + + filter: function(t,r,not) { + var last; + + // Look for common filter expressions + while ( t && t != last ) { + last = t; + + var p = jQuery.parse, m; + + for ( var i = 0; p[i]; i++ ) { + m = p[i].exec( t ); + + if ( m ) { + // Remove what we just matched + t = t.substring( m[0].length ); + + m[2] = m[2].replace(/\\/g, ""); + break; + } + } + + if ( !m ) + break; + + // :not() is a special case that can be optimized by + // keeping it out of the expression list + if ( m[1] == ":" && m[2] == "not" ) + // optimize if only one selector found (most common case) + r = isSimple.test( m[3] ) ? + jQuery.filter(m[3], r, true).r : + jQuery( r ).not( m[3] ); + + // We can get a big speed boost by filtering by class here + else if ( m[1] == "." ) + r = jQuery.classFilter(r, m[2], not); + + else if ( m[1] == "[" ) { + var tmp = [], type = m[3]; + + for ( var i = 0, rl = r.length; i < rl; i++ ) { + var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ]; + + if ( z == null || /href|src|selected/.test(m[2]) ) + z = jQuery.attr(a,m[2]) || ''; + + if ( (type == "" && !!z || + type == "=" && z == m[5] || + type == "!=" && z != m[5] || + type == "^=" && z && !z.indexOf(m[5]) || + type == "$=" && z.substr(z.length - m[5].length) == m[5] || + (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not ) + tmp.push( a ); + } + + r = tmp; + + // We can get a speed boost by handling nth-child here + } else if ( m[1] == ":" && m[2] == "nth-child" ) { + var merge = {}, tmp = [], + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( + m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" || + !/\D/.test(m[3]) && "0n+" + m[3] || m[3]), + // calculate the numbers (first)n+(last) including if they are negative + first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0; + + // loop through all the elements left in the jQuery object + for ( var i = 0, rl = r.length; i < rl; i++ ) { + var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode); + + if ( !merge[id] ) { + var c = 1; + + for ( var n = parentNode.firstChild; n; n = n.nextSibling ) + if ( n.nodeType == 1 ) + n.nodeIndex = c++; + + merge[id] = true; + } + + var add = false; + + if ( first == 0 ) { + if ( node.nodeIndex == last ) + add = true; + } else if ( (node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0 ) + add = true; + + if ( add ^ not ) + tmp.push( node ); + } + + r = tmp; + + // Otherwise, find the expression to execute + } else { + var fn = jQuery.expr[ m[1] ]; + if ( typeof fn == "object" ) + fn = fn[ m[2] ]; + + if ( typeof fn == "string" ) + fn = eval("false||function(a,i){return " + fn + ";}"); + + // Execute it against the current filter + r = jQuery.grep( r, function(elem, i){ + return fn(elem, i, m, r); + }, not ); + } + } + + // Return an array of filtered elements (r) + // and the modified expression string (t) + return { r: r, t: t }; + }, + + dir: function( elem, dir ){ + var matched = []; + var cur = elem[dir]; + while ( cur && cur != document ) { + if ( cur.nodeType == 1 ) + matched.push( cur ); + cur = cur[dir]; + } + return matched; + }, + + nth: function(cur,result,dir,elem){ + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) + if ( cur.nodeType == 1 && ++num == result ) + break; + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType == 1 && (!elem || n != elem) ) + r.push( n ); + } + + return r; + } +}); + +/* + * A number of helper functions used for managing events. + * Many of the ideas behind this code orignated from + * Dean Edwards' addEvent library. + */ +jQuery.event = { + + // Bind an event to an element + // Original by Dean Edwards + add: function(elem, types, handler, data) { + if ( elem.nodeType == 3 || elem.nodeType == 8 ) + return; + + // For whatever reason, IE has trouble passing the window object + // around, causing it to be cloned in the process + if ( jQuery.browser.msie && elem.setInterval != undefined ) + elem = window; + + // Make sure that the function being executed has a unique ID + if ( !handler.guid ) + handler.guid = this.guid++; + + // if data is passed, bind to handler + if( data != undefined ) { + // Create temporary function pointer to original handler + var fn = handler; + + // Create unique handler function, wrapped around original handler + handler = function() { + // Pass arguments and context to original handler + return fn.apply(this, arguments); + }; + + // Store data in unique handler + handler.data = data; + + // Set the guid of unique handler to the same of original handler, so it can be removed + handler.guid = fn.guid; + } + + // Init the element's event structure + var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}), + handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){ + // returned undefined or false + var val; + + // Handle the second event of a trigger and when + // an event is called after a page has unloaded + if ( typeof jQuery == "undefined" || jQuery.event.triggered ) + return val; + + val = jQuery.event.handle.apply(arguments.callee.elem, arguments); + + return val; + }); + // Add elem as a property of the handle function + // This is to prevent a memory leak with non-native + // event in IE. + handle.elem = elem; + + // Handle multiple events seperated by a space + // jQuery(...).bind("mouseover mouseout", fn); + jQuery.each(types.split(/\s+/), function(index, type) { + // Namespaced event handlers + var parts = type.split("."); + type = parts[0]; + handler.type = parts[1]; + + // Get the current list of functions bound to this event + var handlers = events[type]; + + // Init the event handler queue + if (!handlers) { + handlers = events[type] = {}; + + // Check for a special event handler + // Only use addEventListener/attachEvent if the special + // events handler returns false + if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false ) { + // Bind the global event handler to the element + if (elem.addEventListener) + elem.addEventListener(type, handle, false); + else if (elem.attachEvent) + elem.attachEvent("on" + type, handle); + } + } + + // Add the function to the element's handler list + handlers[handler.guid] = handler; + + // Keep track of which events have been used, for global triggering + jQuery.event.global[type] = true; + }); + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + guid: 1, + global: {}, + + // Detach an event or set of events from an element + remove: function(elem, types, handler) { + // don't do events on text and comment nodes + if ( elem.nodeType == 3 || elem.nodeType == 8 ) + return; + + var events = jQuery.data(elem, "events"), ret, index; + + if ( events ) { + // Unbind all events for the element + if ( types == undefined || (typeof types == "string" && types.charAt(0) == ".") ) + for ( var type in events ) + this.remove( elem, type + (types || "") ); + else { + // types is actually an event object here + if ( types.type ) { + handler = types.handler; + types = types.type; + } + + // Handle multiple events seperated by a space + // jQuery(...).unbind("mouseover mouseout", fn); + jQuery.each(types.split(/\s+/), function(index, type){ + // Namespaced event handlers + var parts = type.split("."); + type = parts[0]; + + if ( events[type] ) { + // remove the given handler for the given type + if ( handler ) + delete events[type][handler.guid]; + + // remove all handlers for the given type + else + for ( handler in events[type] ) + // Handle the removal of namespaced events + if ( !parts[1] || events[type][handler].type == parts[1] ) + delete events[type][handler]; + + // remove generic event handler if no more handlers exist + for ( ret in events[type] ) break; + if ( !ret ) { + if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false ) { + if (elem.removeEventListener) + elem.removeEventListener(type, jQuery.data(elem, "handle"), false); + else if (elem.detachEvent) + elem.detachEvent("on" + type, jQuery.data(elem, "handle")); + } + ret = null; + delete events[type]; + } + } + }); + } + + // Remove the expando if it's no longer used + for ( ret in events ) break; + if ( !ret ) { + var handle = jQuery.data( elem, "handle" ); + if ( handle ) handle.elem = null; + jQuery.removeData( elem, "events" ); + jQuery.removeData( elem, "handle" ); + } + } + }, + + trigger: function(type, data, elem, donative, extra) { + // Clone the incoming data, if any + data = jQuery.makeArray(data || []); + + if ( type.indexOf("!") >= 0 ) { + type = type.slice(0, -1); + var exclusive = true; + } + + // Handle a global trigger + if ( !elem ) { + // Only trigger if we've ever bound an event for it + if ( this.global[type] ) + jQuery("*").add([window, document]).trigger(type, data); + + // Handle triggering a single element + } else { + // don't do events on text and comment nodes + if ( elem.nodeType == 3 || elem.nodeType == 8 ) + return undefined; + + var val, ret, fn = jQuery.isFunction( elem[ type ] || null ), + // Check to see if we need to provide a fake event, or not + event = !data[0] || !data[0].preventDefault; + + // Pass along a fake event + if ( event ) + data.unshift( this.fix({ type: type, target: elem }) ); + + // Enforce the right trigger type + data[0].type = type; + if ( exclusive ) + data[0].exclusive = true; + + // Trigger the event + if ( jQuery.isFunction( jQuery.data(elem, "handle") ) ) + val = jQuery.data(elem, "handle").apply( elem, data ); + + // Handle triggering native .onfoo handlers + if ( !fn && elem["on"+type] && elem["on"+type].apply( elem, data ) === false ) + val = false; + + // Extra functions don't get the custom event object + if ( event ) + data.shift(); + + // Handle triggering of extra function + if ( extra && jQuery.isFunction( extra ) ) { + // call the extra function and tack the current return value on the end for possible inspection + ret = extra.apply( elem, val == null ? data : data.concat( val ) ); + // if anything is returned, give it precedence and have it overwrite the previous value + if (ret !== undefined) + val = ret; + } + + // Trigger the native events (except for clicks on links) + if ( fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == "click") ) { + this.triggered = true; + try { + elem[ type ](); + // prevent IE from throwing an error for some hidden elements + } catch (e) {} + } + + this.triggered = false; + } + + return val; + }, + + handle: function(event) { + // returned undefined or false + var val; + + // Empty object is for triggered events with no data + event = jQuery.event.fix( event || window.event || {} ); + + // Namespaced event handlers + var parts = event.type.split("."); + event.type = parts[0]; + + var handlers = jQuery.data(this, "events") && jQuery.data(this, "events")[event.type], args = Array.prototype.slice.call( arguments, 1 ); + args.unshift( event ); + + for ( var j in handlers ) { + var handler = handlers[j]; + // Pass in a reference to the handler function itself + // So that we can later remove it + args[0].handler = handler; + args[0].data = handler.data; + + // Filter the functions by class + if ( !parts[1] && !event.exclusive || handler.type == parts[1] ) { + var ret = handler.apply( this, args ); + + if ( val !== false ) + val = ret; + + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + + // Clean up added properties in IE to prevent memory leak + if (jQuery.browser.msie) + event.target = event.preventDefault = event.stopPropagation = + event.handler = event.data = null; + + return val; + }, + + fix: function(event) { + // store a copy of the original event object + // and clone to set read-only properties + var originalEvent = event; + event = jQuery.extend({}, originalEvent); + + // add preventDefault and stopPropagation since + // they will not work on the clone + event.preventDefault = function() { + // if preventDefault exists run it on the original event + if (originalEvent.preventDefault) + originalEvent.preventDefault(); + // otherwise set the returnValue property of the original event to false (IE) + originalEvent.returnValue = false; + }; + event.stopPropagation = function() { + // if stopPropagation exists run it on the original event + if (originalEvent.stopPropagation) + originalEvent.stopPropagation(); + // otherwise set the cancelBubble property of the original event to true (IE) + originalEvent.cancelBubble = true; + }; + + // Fix target property, if necessary + if ( !event.target ) + event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either + + // check if target is a textnode (safari) + if ( event.target.nodeType == 3 ) + event.target = originalEvent.target.parentNode; + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && event.fromElement ) + event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && event.clientX != null ) { + var doc = document.documentElement, body = document.body; + event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0); + event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0); + } + + // Add which for key events + if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) + event.which = event.charCode || event.keyCode; + + // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) + if ( !event.metaKey && event.ctrlKey ) + event.metaKey = event.ctrlKey; + + // Add which for click: 1 == left; 2 == middle; 3 == right + // Note: button is not normalized, so don't use it + if ( !event.which && event.button ) + event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); + + return event; + }, + + special: { + ready: { + setup: function() { + // Make sure the ready event is setup + bindReady(); + return; + }, + + teardown: function() { return; } + }, + + mouseenter: { + setup: function() { + if ( jQuery.browser.msie ) return false; + jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler); + return true; + }, + + teardown: function() { + if ( jQuery.browser.msie ) return false; + jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler); + return true; + }, + + handler: function(event) { + // If we actually just moused on to a sub-element, ignore it + if ( withinElement(event, this) ) return true; + // Execute the right handlers by setting the event type to mouseenter + arguments[0].type = "mouseenter"; + return jQuery.event.handle.apply(this, arguments); + } + }, + + mouseleave: { + setup: function() { + if ( jQuery.browser.msie ) return false; + jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler); + return true; + }, + + teardown: function() { + if ( jQuery.browser.msie ) return false; + jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler); + return true; + }, + + handler: function(event) { + // If we actually just moused on to a sub-element, ignore it + if ( withinElement(event, this) ) return true; + // Execute the right handlers by setting the event type to mouseleave + arguments[0].type = "mouseleave"; + return jQuery.event.handle.apply(this, arguments); + } + } + } +}; + +jQuery.fn.extend({ + bind: function( type, data, fn ) { + return type == "unload" ? this.one(type, data, fn) : this.each(function(){ + jQuery.event.add( this, type, fn || data, fn && data ); + }); + }, + + one: function( type, data, fn ) { + return this.each(function(){ + jQuery.event.add( this, type, function(event) { + jQuery(this).unbind(event); + return (fn || data).apply( this, arguments); + }, fn && data); + }); + }, + + unbind: function( type, fn ) { + return this.each(function(){ + jQuery.event.remove( this, type, fn ); + }); + }, + + trigger: function( type, data, fn ) { + return this.each(function(){ + jQuery.event.trigger( type, data, this, true, fn ); + }); + }, + + triggerHandler: function( type, data, fn ) { + if ( this[0] ) + return jQuery.event.trigger( type, data, this[0], false, fn ); + return undefined; + }, + + toggle: function() { + // Save reference to arguments for access in closure + var args = arguments; + + return this.click(function(event) { + // Figure out which function to execute + this.lastToggle = 0 == this.lastToggle ? 1 : 0; + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[this.lastToggle].apply( this, arguments ) || false; + }); + }, + + hover: function(fnOver, fnOut) { + return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut); + }, + + ready: function(fn) { + // Attach the listeners + bindReady(); + + // If the DOM is already ready + if ( jQuery.isReady ) + // Execute the function immediately + fn.call( document, jQuery ); + + // Otherwise, remember the function for later + else + // Add the function to the wait list + jQuery.readyList.push( function() { return fn.call(this, jQuery); } ); + + return this; + } +}); + +jQuery.extend({ + isReady: false, + readyList: [], + // Handle when the DOM is ready + ready: function() { + // Make sure that the DOM is not already loaded + if ( !jQuery.isReady ) { + // Remember that the DOM is ready + jQuery.isReady = true; + + // If there are functions bound, to execute + if ( jQuery.readyList ) { + // Execute all of them + jQuery.each( jQuery.readyList, function(){ + this.apply( document ); + }); + + // Reset the list of functions + jQuery.readyList = null; + } + + // Trigger any bound ready events + jQuery(document).triggerHandler("ready"); + } + } +}); + +var readyBound = false; + +function bindReady(){ + if ( readyBound ) return; + readyBound = true; + + // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event + if ( document.addEventListener && !jQuery.browser.opera) + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", jQuery.ready, false ); + + // If IE is used and is not in a frame + // Continually check to see if the document is ready + if ( jQuery.browser.msie && window == top ) (function(){ + if (jQuery.isReady) return; + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch( error ) { + setTimeout( arguments.callee, 0 ); + return; + } + // and execute any waiting functions + jQuery.ready(); + })(); + + if ( jQuery.browser.opera ) + document.addEventListener( "DOMContentLoaded", function () { + if (jQuery.isReady) return; + for (var i = 0; i < document.styleSheets.length; i++) + if (document.styleSheets[i].disabled) { + setTimeout( arguments.callee, 0 ); + return; + } + // and execute any waiting functions + jQuery.ready(); + }, false); + + if ( jQuery.browser.safari ) { + var numStyles; + (function(){ + if (jQuery.isReady) return; + if ( document.readyState != "loaded" && document.readyState != "complete" ) { + setTimeout( arguments.callee, 0 ); + return; + } + if ( numStyles === undefined ) + numStyles = jQuery("style, link[rel=stylesheet]").length; + if ( document.styleSheets.length != numStyles ) { + setTimeout( arguments.callee, 0 ); + return; + } + // and execute any waiting functions + jQuery.ready(); + })(); + } + + // A fallback to window.onload, that will always work + jQuery.event.add( window, "load", jQuery.ready ); +} + +jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," + + "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + + "submit,keydown,keypress,keyup,error").split(","), function(i, name){ + + // Handle event binding + jQuery.fn[name] = function(fn){ + return fn ? this.bind(name, fn) : this.trigger(name); + }; +}); + +// Checks if an event happened on an element within another element +// Used in jQuery.event.special.mouseenter and mouseleave handlers +var withinElement = function(event, elem) { + // Check if mouse(over|out) are still within the same parent element + var parent = event.relatedTarget; + // Traverse up the tree + while ( parent && parent != elem ) try { parent = parent.parentNode; } catch(error) { parent = elem; } + // Return true if we actually just moused on to a sub-element + return parent == elem; +}; + +// Prevent memory leaks in IE +// And prevent errors on refresh with events like mouseover in other browsers +// Window isn't included so as not to unbind existing unload events +jQuery(window).bind("unload", function() { + jQuery("*").add(document).unbind(); +}); +jQuery.fn.extend({ + load: function( url, params, callback ) { + if ( jQuery.isFunction( url ) ) + return this.bind("load", url); + + var off = url.indexOf(" "); + if ( off >= 0 ) { + var selector = url.slice(off, url.length); + url = url.slice(0, off); + } + + callback = callback || function(){}; + + // Default to a GET request + var type = "GET"; + + // If the second parameter was provided + if ( params ) + // If it's a function + if ( jQuery.isFunction( params ) ) { + // We assume that it's the callback + callback = params; + params = null; + + // Otherwise, build a param string + } else { + params = jQuery.param( params ); + type = "POST"; + } + + var self = this; + + // Request the remote document + jQuery.ajax({ + url: url, + type: type, + dataType: "html", + data: params, + complete: function(res, status){ + // If successful, inject the HTML into all the matched elements + if ( status == "success" || status == "notmodified" ) + // See if a selector was specified + self.html( selector ? + // Create a dummy div to hold the results + jQuery("<div/>") + // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")) + + // Locate the specified elements + .find(selector) : + + // If not, just inject the full result + res.responseText ); + + self.each( callback, [res.responseText, status, res] ); + } + }); + return this; + }, + + serialize: function() { + return jQuery.param(this.serializeArray()); + }, + serializeArray: function() { + return this.map(function(){ + return jQuery.nodeName(this, "form") ? + jQuery.makeArray(this.elements) : this; + }) + .filter(function(){ + return this.name && !this.disabled && + (this.checked || /select|textarea/i.test(this.nodeName) || + /text|hidden|password/i.test(this.type)); + }) + .map(function(i, elem){ + var val = jQuery(this).val(); + return val == null ? null : + val.constructor == Array ? + jQuery.map( val, function(val, i){ + return {name: elem.name, value: val}; + }) : + {name: elem.name, value: val}; + }).get(); + } +}); + +// Attach a bunch of functions for handling common AJAX events +jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){ + jQuery.fn[o] = function(f){ + return this.bind(o, f); + }; +}); + +var jsc = (new Date).getTime(); + +jQuery.extend({ + get: function( url, data, callback, type ) { + // shift arguments if data argument was ommited + if ( jQuery.isFunction( data ) ) { + callback = data; + data = null; + } + + return jQuery.ajax({ + type: "GET", + url: url, + data: data, + success: callback, + dataType: type + }); + }, + + getScript: function( url, callback ) { + return jQuery.get(url, null, callback, "script"); + }, + + getJSON: function( url, data, callback ) { + return jQuery.get(url, data, callback, "json"); + }, + + post: function( url, data, callback, type ) { + if ( jQuery.isFunction( data ) ) { + callback = data; + data = {}; + } + + return jQuery.ajax({ + type: "POST", + url: url, + data: data, + success: callback, + dataType: type + }); + }, + + ajaxSetup: function( settings ) { + jQuery.extend( jQuery.ajaxSettings, settings ); + }, + + ajaxSettings: { + global: true, + type: "GET", + timeout: 0, + contentType: "application/x-www-form-urlencoded", + processData: true, + async: true, + data: null, + username: null, + password: null, + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + script: "text/javascript, application/javascript", + json: "application/json, text/javascript", + text: "text/plain", + _default: "*/*" + } + }, + + // Last-Modified header cache for next request + lastModified: {}, + + ajax: function( s ) { + var jsonp, jsre = /=\?(&|$)/g, status, data; + + // Extend the settings, but re-extend 's' so that it can be + // checked again later (in the test suite, specifically) + s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s)); + + // convert data if not already a string + if ( s.data && s.processData && typeof s.data != "string" ) + s.data = jQuery.param(s.data); + + // Handle JSONP Parameter Callbacks + if ( s.dataType == "jsonp" ) { + if ( s.type.toLowerCase() == "get" ) { + if ( !s.url.match(jsre) ) + s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?"; + } else if ( !s.data || !s.data.match(jsre) ) + s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"; + s.dataType = "json"; + } + + // Build temporary JSONP function + if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) { + jsonp = "jsonp" + jsc++; + + // Replace the =? sequence both in the query string and the data + if ( s.data ) + s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1"); + s.url = s.url.replace(jsre, "=" + jsonp + "$1"); + + // We need to make sure + // that a JSONP style response is executed properly + s.dataType = "script"; + + // Handle JSONP-style loading + window[ jsonp ] = function(tmp){ + data = tmp; + success(); + complete(); + // Garbage collect + window[ jsonp ] = undefined; + try{ delete window[ jsonp ]; } catch(e){} + if ( head ) + head.removeChild( script ); + }; + } + + if ( s.dataType == "script" && s.cache == null ) + s.cache = false; + + if ( s.cache === false && s.type.toLowerCase() == "get" ) { + var ts = (new Date()).getTime(); + // try replacing _= if it is there + var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2"); + // if nothing was replaced, add timestamp to the end + s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : ""); + } + + // If data is available, append data to url for get requests + if ( s.data && s.type.toLowerCase() == "get" ) { + s.url += (s.url.match(/\?/) ? "&" : "?") + s.data; + + // IE likes to send both get and post data, prevent this + s.data = null; + } + + // Watch for a new set of requests + if ( s.global && ! jQuery.active++ ) + jQuery.event.trigger( "ajaxStart" ); + + // If we're requesting a remote document + // and trying to load JSON or Script with a GET + if ( (!s.url.indexOf("http") || !s.url.indexOf("//")) && s.dataType == "script" && s.type.toLowerCase() == "get" ) { + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement("script"); + script.src = s.url; + if (s.scriptCharset) + script.charset = s.scriptCharset; + + // Handle Script loading + if ( !jsonp ) { + var done = false; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function(){ + if ( !done && (!this.readyState || + this.readyState == "loaded" || this.readyState == "complete") ) { + done = true; + success(); + complete(); + head.removeChild( script ); + } + }; + } + + head.appendChild(script); + + // We handle everything using the script element injection + return undefined; + } + + var requestDone = false; + + // Create the request object; Microsoft failed to properly + // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available + var xml = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); + + // Open the socket + xml.open(s.type, s.url, s.async, s.username, s.password); + + // Need an extra try/catch for cross domain requests in Firefox 3 + try { + // Set the correct header, if data is being sent + if ( s.data ) + xml.setRequestHeader("Content-Type", s.contentType); + + // Set the If-Modified-Since header, if ifModified mode. + if ( s.ifModified ) + xml.setRequestHeader("If-Modified-Since", + jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" ); + + // Set header so the called script knows that it's an XMLHttpRequest + xml.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + + // Set the Accepts header for the server, depending on the dataType + xml.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ? + s.accepts[ s.dataType ] + ", */*" : + s.accepts._default ); + } catch(e){} + + // Allow custom headers/mimetypes + if ( s.beforeSend ) + s.beforeSend(xml); + + if ( s.global ) + jQuery.event.trigger("ajaxSend", [xml, s]); + + // Wait for a response to come back + var onreadystatechange = function(isTimeout){ + // The transfer is complete and the data is available, or the request timed out + if ( !requestDone && xml && (xml.readyState == 4 || isTimeout == "timeout") ) { + requestDone = true; + + // clear poll interval + if (ival) { + clearInterval(ival); + ival = null; + } + + status = isTimeout == "timeout" && "timeout" || + !jQuery.httpSuccess( xml ) && "error" || + s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" || + "success"; + + if ( status == "success" ) { + // Watch for, and catch, XML document parse errors + try { + // process the data (runs the xml through httpData regardless of callback) + data = jQuery.httpData( xml, s.dataType ); + } catch(e) { + status = "parsererror"; + } + } + + // Make sure that the request was successful or notmodified + if ( status == "success" ) { + // Cache Last-Modified header, if ifModified mode. + var modRes; + try { + modRes = xml.getResponseHeader("Last-Modified"); + } catch(e) {} // swallow exception thrown by FF if header is not available + + if ( s.ifModified && modRes ) + jQuery.lastModified[s.url] = modRes; + + // JSONP handles its own success callback + if ( !jsonp ) + success(); + } else + jQuery.handleError(s, xml, status); + + // Fire the complete handlers + complete(); + + // Stop memory leaks + if ( s.async ) + xml = null; + } + }; + + if ( s.async ) { + // don't attach the handler to the request, just poll it instead + var ival = setInterval(onreadystatechange, 13); + + // Timeout checker + if ( s.timeout > 0 ) + setTimeout(function(){ + // Check to see if the request is still happening + if ( xml ) { + // Cancel the request + xml.abort(); + + if( !requestDone ) + onreadystatechange( "timeout" ); + } + }, s.timeout); + } + + // Send the data + try { + xml.send(s.data); + } catch(e) { + jQuery.handleError(s, xml, null, e); + } + + // firefox 1.5 doesn't fire statechange for sync requests + if ( !s.async ) + onreadystatechange(); + + function success(){ + // If a local callback was specified, fire it and pass it the data + if ( s.success ) + s.success( data, status ); + + // Fire the global callback + if ( s.global ) + jQuery.event.trigger( "ajaxSuccess", [xml, s] ); + } + + function complete(){ + // Process result + if ( s.complete ) + s.complete(xml, status); + + // The request was completed + if ( s.global ) + jQuery.event.trigger( "ajaxComplete", [xml, s] ); + + // Handle the global AJAX counter + if ( s.global && ! --jQuery.active ) + jQuery.event.trigger( "ajaxStop" ); + } + + // return XMLHttpRequest to allow aborting the request etc. + return xml; + }, + + handleError: function( s, xml, status, e ) { + // If a local callback was specified, fire it + if ( s.error ) s.error( xml, status, e ); + + // Fire the global callback + if ( s.global ) + jQuery.event.trigger( "ajaxError", [xml, s, e] ); + }, + + // Counter for holding the number of active queries + active: 0, + + // Determines if an XMLHttpRequest was successful or not + httpSuccess: function( r ) { + try { + // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450 + return !r.status && location.protocol == "file:" || + ( r.status >= 200 && r.status < 300 ) || r.status == 304 || r.status == 1223 || + jQuery.browser.safari && r.status == undefined; + } catch(e){} + return false; + }, + + // Determines if an XMLHttpRequest returns NotModified + httpNotModified: function( xml, url ) { + try { + var xmlRes = xml.getResponseHeader("Last-Modified"); + + // Firefox always returns 200. check Last-Modified date + return xml.status == 304 || xmlRes == jQuery.lastModified[url] || + jQuery.browser.safari && xml.status == undefined; + } catch(e){} + return false; + }, + + httpData: function( r, type ) { + var ct = r.getResponseHeader("content-type"); + var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0; + var data = xml ? r.responseXML : r.responseText; + + if ( xml && data.documentElement.tagName == "parsererror" ) + throw "parsererror"; + + // If the type is "script", eval it in global context + if ( type == "script" ) + jQuery.globalEval( data ); + + // Get the JavaScript object, if JSON is used. + if ( type == "json" ) + data = eval("(" + data + ")"); + + return data; + }, + + // Serialize an array of form elements or a set of + // key/values into a query string + param: function( a ) { + var s = []; + + // If an array was passed in, assume that it is an array + // of form elements + if ( a.constructor == Array || a.jquery ) + // Serialize the form elements + jQuery.each( a, function(){ + s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) ); + }); + + // Otherwise, assume that it's an object of key/value pairs + else + // Serialize the key/values + for ( var j in a ) + // If the value is an array then the key names need to be repeated + if ( a[j] && a[j].constructor == Array ) + jQuery.each( a[j], function(){ + s.push( encodeURIComponent(j) + "=" + encodeURIComponent( this ) ); + }); + else + s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) ); + + // Return the resulting serialization + return s.join("&").replace(/%20/g, "+"); + } + +}); +jQuery.fn.extend({ + show: function(speed,callback){ + return speed ? + this.animate({ + height: "show", width: "show", opacity: "show" + }, speed, callback) : + + this.filter(":hidden").each(function(){ + this.style.display = this.oldblock || ""; + if ( jQuery.css(this,"display") == "none" ) { + var elem = jQuery("<" + this.tagName + " />").appendTo("body"); + this.style.display = elem.css("display"); + // handle an edge condition where css is - div { display:none; } or similar + if (this.style.display == "none") + this.style.display = "block"; + elem.remove(); + } + }).end(); + }, + + hide: function(speed,callback){ + return speed ? + this.animate({ + height: "hide", width: "hide", opacity: "hide" + }, speed, callback) : + + this.filter(":visible").each(function(){ + this.oldblock = this.oldblock || jQuery.css(this,"display"); + this.style.display = "none"; + }).end(); + }, + + // Save the old toggle function + _toggle: jQuery.fn.toggle, + + toggle: function( fn, fn2 ){ + return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? + this._toggle( fn, fn2 ) : + fn ? + this.animate({ + height: "toggle", width: "toggle", opacity: "toggle" + }, fn, fn2) : + this.each(function(){ + jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ](); + }); + }, + + slideDown: function(speed,callback){ + return this.animate({height: "show"}, speed, callback); + }, + + slideUp: function(speed,callback){ + return this.animate({height: "hide"}, speed, callback); + }, + + slideToggle: function(speed, callback){ + return this.animate({height: "toggle"}, speed, callback); + }, + + fadeIn: function(speed, callback){ + return this.animate({opacity: "show"}, speed, callback); + }, + + fadeOut: function(speed, callback){ + return this.animate({opacity: "hide"}, speed, callback); + }, + + fadeTo: function(speed,to,callback){ + return this.animate({opacity: to}, speed, callback); + }, + + animate: function( prop, speed, easing, callback ) { + var optall = jQuery.speed(speed, easing, callback); + + return this[ optall.queue === false ? "each" : "queue" ](function(){ + if ( this.nodeType != 1) + return false; + + var opt = jQuery.extend({}, optall); + var hidden = jQuery(this).is(":hidden"), self = this; + + for ( var p in prop ) { + if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden ) + return jQuery.isFunction(opt.complete) && opt.complete.apply(this); + + if ( p == "height" || p == "width" ) { + // Store display property + opt.display = jQuery.css(this, "display"); + + // Make sure that nothing sneaks out + opt.overflow = this.style.overflow; + } + } + + if ( opt.overflow != null ) + this.style.overflow = "hidden"; + + opt.curAnim = jQuery.extend({}, prop); + + jQuery.each( prop, function(name, val){ + var e = new jQuery.fx( self, opt, name ); + + if ( /toggle|show|hide/.test(val) ) + e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop ); + else { + var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/), + start = e.cur(true) || 0; + + if ( parts ) { + var end = parseFloat(parts[2]), + unit = parts[3] || "px"; + + // We need to compute starting value + if ( unit != "px" ) { + self.style[ name ] = (end || 1) + unit; + start = ((end || 1) / e.cur(true)) * start; + self.style[ name ] = start + unit; + } + + // If a +=/-= token was provided, we're doing a relative animation + if ( parts[1] ) + end = ((parts[1] == "-=" ? -1 : 1) * end) + start; + + e.custom( start, end, unit ); + } else + e.custom( start, val, "" ); + } + }); + + // For JS strict compliance + return true; + }); + }, + + queue: function(type, fn){ + if ( jQuery.isFunction(type) || ( type && type.constructor == Array )) { + fn = type; + type = "fx"; + } + + if ( !type || (typeof type == "string" && !fn) ) + return queue( this[0], type ); + + return this.each(function(){ + if ( fn.constructor == Array ) + queue(this, type, fn); + else { + queue(this, type).push( fn ); + + if ( queue(this, type).length == 1 ) + fn.apply(this); + } + }); + }, + + stop: function(clearQueue, gotoEnd){ + var timers = jQuery.timers; + + if (clearQueue) + this.queue([]); + + this.each(function(){ + // go in reverse order so anything added to the queue during the loop is ignored + for ( var i = timers.length - 1; i >= 0; i-- ) + if ( timers[i].elem == this ) { + if (gotoEnd) + // force the next step to be the last + timers[i](true); + timers.splice(i, 1); + } + }); + + // start the next in the queue if the last step wasn't forced + if (!gotoEnd) + this.dequeue(); + + return this; + } + +}); + +var queue = function( elem, type, array ) { + if ( !elem ) + return undefined; + + type = type || "fx"; + + var q = jQuery.data( elem, type + "queue" ); + + if ( !q || array ) + q = jQuery.data( elem, type + "queue", + array ? jQuery.makeArray(array) : [] ); + + return q; +}; + +jQuery.fn.dequeue = function(type){ + type = type || "fx"; + + return this.each(function(){ + var q = queue(this, type); + + q.shift(); + + if ( q.length ) + q[0].apply( this ); + }); +}; + +jQuery.extend({ + + speed: function(speed, easing, fn) { + var opt = speed && speed.constructor == Object ? speed : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && easing.constructor != Function && easing + }; + + opt.duration = (opt.duration && opt.duration.constructor == Number ? + opt.duration : + { slow: 600, fast: 200 }[opt.duration]) || 400; + + // Queueing + opt.old = opt.complete; + opt.complete = function(){ + if ( opt.queue !== false ) + jQuery(this).dequeue(); + if ( jQuery.isFunction( opt.old ) ) + opt.old.apply( this ); + }; + + return opt; + }, + + easing: { + linear: function( p, n, firstNum, diff ) { + return firstNum + diff * p; + }, + swing: function( p, n, firstNum, diff ) { + return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum; + } + }, + + timers: [], + timerId: null, + + fx: function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if ( !options.orig ) + options.orig = {}; + } + +}); + +jQuery.fx.prototype = { + + // Simple function for setting a style value + update: function(){ + if ( this.options.step ) + this.options.step.apply( this.elem, [ this.now, this ] ); + + (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this ); + + // Set display property to block for height/width animations + if ( this.prop == "height" || this.prop == "width" ) + this.elem.style.display = "block"; + }, + + // Get the current size + cur: function(force){ + if ( this.elem[this.prop] != null && this.elem.style[this.prop] == null ) + return this.elem[ this.prop ]; + + var r = parseFloat(jQuery.css(this.elem, this.prop, force)); + return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0; + }, + + // Start an animation from one number to another + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + this.update(); + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + jQuery.timers.push(t); + + if ( jQuery.timerId == null ) { + jQuery.timerId = setInterval(function(){ + var timers = jQuery.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval( jQuery.timerId ); + jQuery.timerId = null; + } + }, 13); + } + }, + + // Simple 'show' function + show: function(){ + // Remember where we started, so that we can go back to it later + this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop ); + this.options.show = true; + + // Begin the animation + this.custom(0, this.cur()); + + // Make sure that we start at a small width/height to avoid any + // flash of content + if ( this.prop == "width" || this.prop == "height" ) + this.elem.style[this.prop] = "1px"; + + // Start by showing the element + jQuery(this.elem).show(); + }, + + // Simple 'hide' function + hide: function(){ + // Remember where we started, so that we can go back to it later + this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop ); + this.options.hide = true; + + // Begin the animation + this.custom(this.cur(), 0); + }, + + // Each step of an animation + step: function(gotoEnd){ + var t = (new Date()).getTime(); + + if ( gotoEnd || t > this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if ( this.options.display != null ) { + // Reset the overflow + this.elem.style.overflow = this.options.overflow; + + // Reset the display + this.elem.style.display = this.options.display; + if ( jQuery.css(this.elem, "display") == "none" ) + this.elem.style.display = "block"; + } + + // Hide the element if the "hide" operation was done + if ( this.options.hide ) + this.elem.style.display = "none"; + + // Reset the properties, if the item has been hidden or shown + if ( this.options.hide || this.options.show ) + for ( var p in this.options.curAnim ) + jQuery.attr(this.elem.style, p, this.options.orig[p]); + } + + // If a callback was provided, execute it + if ( done && jQuery.isFunction( this.options.complete ) ) + // Execute the complete function + this.options.complete.apply( this.elem ); + + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + + // Perform the easing function, defaults to swing + this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + + // Perform the next step of the animation + this.update(); + } + + return true; + } + +}; + +jQuery.fx.step = { + scrollLeft: function(fx){ + fx.elem.scrollLeft = fx.now; + }, + + scrollTop: function(fx){ + fx.elem.scrollTop = fx.now; + }, + + opacity: function(fx){ + jQuery.attr(fx.elem.style, "opacity", fx.now); + }, + + _default: function(fx){ + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + } +}; +// The Offset Method +// Originally By Brandon Aaron, part of the Dimension Plugin +// http://jquery.com/plugins/project/dimensions +jQuery.fn.offset = function() { + var left = 0, top = 0, elem = this[0], results; + + if ( elem ) with ( jQuery.browser ) { + var parent = elem.parentNode, + offsetChild = elem, + offsetParent = elem.offsetParent, + doc = elem.ownerDocument, + safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent), + fixed = jQuery.css(elem, "position") == "fixed"; + + // Use getBoundingClientRect if available + if ( elem.getBoundingClientRect ) { + var box = elem.getBoundingClientRect(); + + // Add the document scroll offsets + add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), + box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop)); + + // IE adds the HTML element's border, by default it is medium which is 2px + // IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; } + // IE 7 standards mode, the border is always 2px + // This border/offset is typically represented by the clientLeft and clientTop properties + // However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS + // Therefore this method will be off by 2px in IE while in quirksmode + add( -doc.documentElement.clientLeft, -doc.documentElement.clientTop ); + + // Otherwise loop through the offsetParents and parentNodes + } else { + + // Initial element offsets + add( elem.offsetLeft, elem.offsetTop ); + + // Get parent offsets + while ( offsetParent ) { + // Add offsetParent offsets + add( offsetParent.offsetLeft, offsetParent.offsetTop ); + + // Mozilla and Safari > 2 does not include the border on offset parents + // However Mozilla adds the border for table or table cells + if ( mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2 ) + border( offsetParent ); + + // Add the document scroll offsets if position is fixed on any offsetParent + if ( !fixed && jQuery.css(offsetParent, "position") == "fixed" ) + fixed = true; + + // Set offsetChild to previous offsetParent unless it is the body element + offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent; + // Get next offsetParent + offsetParent = offsetParent.offsetParent; + } + + // Get parent scroll offsets + while ( parent && parent.tagName && !/^body|html$/i.test(parent.tagName) ) { + // Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug + if ( !/^inline|table.*$/i.test(jQuery.css(parent, "display")) ) + // Subtract parent scroll offsets + add( -parent.scrollLeft, -parent.scrollTop ); + + // Mozilla does not add the border for a parent that has overflow != visible + if ( mozilla && jQuery.css(parent, "overflow") != "visible" ) + border( parent ); + + // Get next parent + parent = parent.parentNode; + } + + // Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild + // Mozilla doubles body offsets with a non-absolutely positioned offsetChild + if ( (safari2 && (fixed || jQuery.css(offsetChild, "position") == "absolute")) || + (mozilla && jQuery.css(offsetChild, "position") != "absolute") ) + add( -doc.body.offsetLeft, -doc.body.offsetTop ); + + // Add the document scroll offsets if position is fixed + if ( fixed ) + add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop)); + } + + // Return an object with top and left properties + results = { top: top, left: left }; + } + + function border(elem) { + add( jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true) ); + } + + function add(l, t) { + left += parseInt(l) || 0; + top += parseInt(t) || 0; + } + + return results; +}; +})(); diff --git a/wp-content/themes/monochrome-pro/js/jquery.innerfade.js b/wp-content/themes/monochrome-pro/js/jquery.innerfade.js new file mode 100644 index 0000000000000000000000000000000000000000..64d34a65b81a473dfd8da218023bbcad9c6fbf29 --- /dev/null +++ b/wp-content/themes/monochrome-pro/js/jquery.innerfade.js @@ -0,0 +1,128 @@ +/* ========================================================= + +// jquery.innerfade.js + +// Datum: 2008-02-14 +// Firma: Medienfreunde Hofmann & Baldes GbR +// Author: Torsten Baldes +// Mail: t.baldes@medienfreunde.com +// Web: http://medienfreunde.com + +// based on the work of Matt Oakes http://portfolio.gizone.co.uk/applications/slideshow/ +// and Ralf S. Engelschall http://trainofthoughts.org/ + + * + * <ul id="news"> + * <li>content 1</li> + * <li>content 2</li> + * <li>content 3</li> + * </ul> + * + * $('#news').innerfade({ + * animationtype: Type of animation 'fade' or 'slide' (Default: 'fade'), + * speed: Fading-/Sliding-Speed in milliseconds or keywords (slow, normal or fast) (Default: 'normal'), + * timeout: Time between the fades in milliseconds (Default: '2000'), + * type: Type of slideshow: 'sequence', 'random' or 'random_start' (Default: 'sequence'), + * containerheight: Height of the containing element in any css-height-value (Default: 'auto'), + * runningclass: CSS-Class which the container get’s applied (Default: 'innerfade'), + * children: optional children selector (Default: null) + * }); + * + +// ========================================================= */ + + +(function($) { + + $.fn.innerfade = function(options) { + return this.each(function() { + $.innerfade(this, options); + }); + }; + + $.innerfade = function(container, options) { + var settings = { + 'animationtype': 'fade', + 'speed': 'normal', + 'type': 'sequence', + 'timeout': 2000, + 'containerheight': 'auto', + 'runningclass': 'innerfade', + 'children': null + }; + if (options) + $.extend(settings, options); + if (settings.children === null) + var elements = $(container).children(); + else + var elements = $(container).children(settings.children); + if (elements.length > 1) { + $(container).css('position', 'relative').css('height', settings.containerheight).addClass(settings.runningclass); + for (var i = 0; i < elements.length; i++) { + $(elements[i]).css('z-index', String(elements.length-i)).css('position', 'absolute').hide(); + }; + if (settings.type == "sequence") { + setTimeout(function() { + $.innerfade.next(elements, settings, 1, 0); + }, settings.timeout); + $(elements[0]).show(); + } else if (settings.type == "random") { + var last = Math.floor ( Math.random () * ( elements.length ) ); + setTimeout(function() { + do { + current = Math.floor ( Math.random ( ) * ( elements.length ) ); + } while (last == current ); + $.innerfade.next(elements, settings, current, last); + }, settings.timeout); + $(elements[last]).show(); + } else if ( settings.type == 'random_start' ) { + settings.type = 'sequence'; + var current = Math.floor ( Math.random () * ( elements.length ) ); + setTimeout(function(){ + $.innerfade.next(elements, settings, (current + 1) % elements.length, current); + }, settings.timeout); + $(elements[current]).show(); + } else { + alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\''); + } + } + }; + + $.innerfade.next = function(elements, settings, current, last) { + if (settings.animationtype == 'slide') { + $(elements[last]).slideUp(settings.speed); + $(elements[current]).slideDown(settings.speed); + } else if (settings.animationtype == 'fade') { + $(elements[last]).fadeOut(settings.speed); + $(elements[current]).fadeIn(settings.speed, function() { + removeFilter($(this)[0]); + }); + } else + alert('Innerfade-animationtype must either be \'slide\' or \'fade\''); + if (settings.type == "sequence") { + if ((current + 1) < elements.length) { + current = current + 1; + last = current - 1; + } else { + current = 0; + last = elements.length - 1; + } + } else if (settings.type == "random") { + last = current; + while (current == last) + current = Math.floor(Math.random() * elements.length); + } else + alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\''); + setTimeout((function() { + $.innerfade.next(elements, settings, current, last); + }), settings.timeout); + }; + +})(jQuery); + +// **** remove Opacity-Filter in ie **** +function removeFilter(element) { + if(element.style.removeAttribute){ + element.style.removeAttribute('filter'); + } +} diff --git a/wp-content/themes/monochrome-pro/js/pngfix.js b/wp-content/themes/monochrome-pro/js/pngfix.js new file mode 100644 index 0000000000000000000000000000000000000000..ac3947ff58e73626b32f7ca062c0e377b2f41fee --- /dev/null +++ b/wp-content/themes/monochrome-pro/js/pngfix.js @@ -0,0 +1,39 @@ +/* + +Correctly handle PNG transparency in Win IE 5.5 & 6. +http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006. + +Use in <HEAD> with DEFER keyword wrapped in conditional comments: +<!--[if lt IE 7]> +<script defer type="text/javascript" src="pngfix.js"></script> +<![endif]--> + +*/ + +var arVersion = navigator.appVersion.split("MSIE") +var version = parseFloat(arVersion[1]) + +if ((version >= 5.5) && (document.body.filters)) +{ + for(var i=0; i<document.images.length; i++) + { + var img = document.images[i] + var imgName = img.src.toUpperCase() + if (imgName.substring(imgName.length-3, imgName.length) == "PNG") + { + var imgID = (img.id) ? "id='" + img.id + "' " : "" + var imgClass = (img.className) ? "class='" + img.className + "' " : "" + var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' " + var imgStyle = "display:inline-block;" + img.style.cssText + if (img.align == "left") imgStyle = "float:left;" + imgStyle + if (img.align == "right") imgStyle = "float:right;" + imgStyle + if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle + var strNewHTML = "<span " + imgID + imgClass + imgTitle + + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" + img.outerHTML = strNewHTML + i = i-1 + } + } +} diff --git a/wp-content/themes/monochrome-pro/js/toggle.js b/wp-content/themes/monochrome-pro/js/toggle.js new file mode 100644 index 0000000000000000000000000000000000000000..d5ab2072ab52f348cc5ca1fb144cc9e762493529 --- /dev/null +++ b/wp-content/themes/monochrome-pro/js/toggle.js @@ -0,0 +1,7 @@ +function toggleDiv(divid){ + if(document.getElementById(divid).style.display == 'none'){ + document.getElementById(divid).style.display = 'block'; + }else{ + document.getElementById(divid).style.display = 'none'; + } +} \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/license.txt b/wp-content/themes/monochrome-pro/license.txt new file mode 100644 index 0000000000000000000000000000000000000000..7e14f3854fa4209e6aebfaf8c2b9f414b3b75b85 --- /dev/null +++ b/wp-content/themes/monochrome-pro/license.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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 + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/links.php b/wp-content/themes/monochrome-pro/links.php new file mode 100644 index 0000000000000000000000000000000000000000..9333daa4e709e2e35728579ba5e67729df436bdf --- /dev/null +++ b/wp-content/themes/monochrome-pro/links.php @@ -0,0 +1,13 @@ +<?php +/* +Template Name: Links +*/ +?> +<?php get_header(); ?> +<div id="content" class="widecolumn"> + <h2>Links:</h2> + <ul> +<?php get_links_list(); ?> + </ul> +</div> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/page-wide.php b/wp-content/themes/monochrome-pro/page-wide.php new file mode 100644 index 0000000000000000000000000000000000000000..b1aa2da57963f187e74111ff63b2ed8eb2b12fa6 --- /dev/null +++ b/wp-content/themes/monochrome-pro/page-wide.php @@ -0,0 +1,23 @@ +<?php +/* +Template Name: Wide Page +*/ +?> +<?php get_header(); ?> +<div class="column span-24 first last content"> +<?php if (have_posts()) : while (have_posts()) : the_post(); ?> + <div class="post" id="post-<?php the_ID(); ?>"> + <h2> +<?php the_title(); ?> + </h2> + <div class="entry"> +<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?> +<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?> + </div> + </div> +<?php endwhile; endif; ?> +<?php edit_post_link('Edit', '<p>[ ', ' ]</p>'); ?> +</div> +<hr /> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/page.php b/wp-content/themes/monochrome-pro/page.php new file mode 100644 index 0000000000000000000000000000000000000000..43faeed6b117aed9a42362d347ad2ae2c39892c5 --- /dev/null +++ b/wp-content/themes/monochrome-pro/page.php @@ -0,0 +1,25 @@ +<?php get_header(); ?> +<div class="column span-15 first"> + <div class="content"> +<?php if (have_posts()) : while (have_posts()) : the_post(); ?> + <div class="post" id="post-<?php the_ID(); ?>"> + <h2> +<?php the_title(); ?> + </h2> + <div class="entry"> +<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?> +<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?> + </div> + </div> +<?php endwhile; endif; ?> +<?php edit_post_link('Edit', '<p>[ ', ' ]</p>'); ?> + </div> +</div> +<div class="column span-8 prepend-1 last"> +<hr class="space" /> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar') ) : ?> +<?php endif; ?> +</div> +<hr /> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/post.php b/wp-content/themes/monochrome-pro/post.php new file mode 100644 index 0000000000000000000000000000000000000000..0ff4a9a7cd1f1aae0c91595037f49a69e148945e --- /dev/null +++ b/wp-content/themes/monochrome-pro/post.php @@ -0,0 +1,17 @@ + <div class="post" id="post-<?php the_ID(); ?>"> + <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2> + <p class="small"> +<?php the_time('F jS, Y') ?> | by <?php the_author_posts_link(); ?> | published in +<?php + the_category(', '); + if($post->comment_count > 0) { + echo ' | '; + comments_popup_link('', '1 Comment', '% Comments'); + } + edit_post_link('Edit', ' | ', ''); + ?> + </p> + <div class="entry"> +<?php the_excerpt('Read the rest of this entry »'); ?> + </div> +</div> diff --git a/wp-content/themes/monochrome-pro/read_me.rtf b/wp-content/themes/monochrome-pro/read_me.rtf new file mode 100644 index 0000000000000000000000000000000000000000..8cb6e458d45fd283a71735c46bee570eaecf7558 --- /dev/null +++ b/wp-content/themes/monochrome-pro/read_me.rtf @@ -0,0 +1,15 @@ +{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\margl1440\margr1440\vieww9000\viewh8400\viewkind0 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 INSTALLATION AND CUSTOMIZATION INSTRUCTIONS\ +\ +Detailed installation instructions can be found here:\ +\ +http://graphpaperpress.com/2008/02/06/monochrome/\ +\ +For Wordpress versions 2.5 and earlier, use Monochrome 1.1\ +\ +For Wordpress versions 2.6 and up, use Monochrome 1.2} \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/screenshot.png b/wp-content/themes/monochrome-pro/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..8a374b57b9f860ab79ddac2a769245fd2dae1e96 Binary files /dev/null and b/wp-content/themes/monochrome-pro/screenshot.png differ diff --git a/wp-content/themes/monochrome-pro/search.php b/wp-content/themes/monochrome-pro/search.php new file mode 100644 index 0000000000000000000000000000000000000000..aecd0caaf0c6cbf70d4fdfdb4e06aea6b40cc9d5 --- /dev/null +++ b/wp-content/themes/monochrome-pro/search.php @@ -0,0 +1,72 @@ +<?php get_header(); ?> +<div class="column span-15 first"> + <div class="content"> +<?php if (have_posts()) : ?> + <h2 class="category_page">Search Results for " +<?php echo $s ?> + "</h2> + <div class="navigation"> + <div class="alignleft"> +<?php next_posts_link('« Previous') ?> + </div> + <div class="alignright"> +<?php previous_posts_link('Next »') ?> + </div> + </div> + <div class="clear"> + </div> +<?php while (have_posts()) : the_post(); ?> + <div class="post" id="post-<?php the_ID(); ?>"> + <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2> +<p class="small"> +<?php the_time('F jS, Y') ?> + | +<!-- by <?php the_author() ?> --> + Published in +<?php the_category(', '); + + if($post->comment_count > 0) { + + echo ' | '; + + comments_popup_link('', '1 Comment', '% Comments'); + + } + + ?> + </p> + +<?php + + // Support for "Search Excerpt" plugin + + // http://fucoder.com/code/search-excerpt/ + + if ( function_exists('the_excerpt') && is_search() ) { + + the_excerpt(); + + } ?> + </div> +<?php endwhile; ?> + <div class="navigation"> + <div class="alignleft"> +<?php next_posts_link('« Previous') ?> + </div> + <div class="alignright"> +<?php previous_posts_link('Next »') ?> + </div> + </div> +<?php else : ?> + <h2 class="center">No posts found. Try a different search?</h2> +<?php include (TEMPLATEPATH . '/searchform.php'); ?> +<?php endif; ?> +</div> +</div> +<div class="column span-8 prepend-1 last"> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar') ) : ?> +<?php endif; ?> +</div> +<hr /> +<?php get_sidebar(); ?> +<?php get_footer(); ?> diff --git a/wp-content/themes/monochrome-pro/searchform.php b/wp-content/themes/monochrome-pro/searchform.php new file mode 100644 index 0000000000000000000000000000000000000000..050818c0a0abd1ce2ac6a2a8446eea3b1a10b490 --- /dev/null +++ b/wp-content/themes/monochrome-pro/searchform.php @@ -0,0 +1,12 @@ +<?php if (!is_search()) { + // Default search text + $search_text = "Search"; + } else { $search_text = "$s"; } +?> +<div id="search"> + <form method="get" id="searchform" action="<?php bloginfo('url'); ?>/"> + <div> + <input type="text" name="s" id="s" value="<?php echo wp_specialchars($search_text, 1); ?>" onfocus="clearInput('s', '<?php echo wp_specialchars($search_text, 1); ?>')" onblur="clearInput('s', '<?php echo wp_specialchars($search_text, 1); ?>')" /> + </div> + </form> +</div> diff --git a/wp-content/themes/monochrome-pro/sidebar.php b/wp-content/themes/monochrome-pro/sidebar.php new file mode 100644 index 0000000000000000000000000000000000000000..5c1957465f860ac98ab69b7897c00fd078eae002 --- /dev/null +++ b/wp-content/themes/monochrome-pro/sidebar.php @@ -0,0 +1,15 @@ +<div id="dark_bg"> +<div class="column span-8"> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Bottom-Left') ) : ?> +<?php endif; ?> +</div> +<div class="column span-7 prepend-1"> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Bottom-Middle') ) : ?> +<?php endif; ?> +</div> +<div class="column span-7 prepend-1 last"> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Bottom-Right') ) : ?> +<?php endif; ?> +</div> +<div class="clear"></div> +</div> diff --git a/wp-content/themes/monochrome-pro/sidebar_home.php b/wp-content/themes/monochrome-pro/sidebar_home.php new file mode 100644 index 0000000000000000000000000000000000000000..c7bc2c38e21150b45331778caa19c9cfff7ac7a9 --- /dev/null +++ b/wp-content/themes/monochrome-pro/sidebar_home.php @@ -0,0 +1,2 @@ +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar_Home') ) : ?> +<?php endif; ?> diff --git a/wp-content/themes/monochrome-pro/sidebar_single.php b/wp-content/themes/monochrome-pro/sidebar_single.php new file mode 100644 index 0000000000000000000000000000000000000000..e06d37b8b7deb26a26ee74a6a5aadde48e3884d8 --- /dev/null +++ b/wp-content/themes/monochrome-pro/sidebar_single.php @@ -0,0 +1,2 @@ +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar-Single') ) : ?> +<?php endif; ?> diff --git a/wp-content/themes/monochrome-pro/single.php b/wp-content/themes/monochrome-pro/single.php new file mode 100644 index 0000000000000000000000000000000000000000..c41fa89cb0874b49fb1cde50a2212eca4263bb47 --- /dev/null +++ b/wp-content/themes/monochrome-pro/single.php @@ -0,0 +1,50 @@ +<?php get_header(); ?> +<div class="column span-15 first"> + <div class="content"> +<?php if (have_posts()) : while (have_posts()) : the_post(); ?> +<!-- <div class="navigation small"> + <div class="alignleft"><?php previous_post_link('« %link') ?></div> + <div class="alignright"><?php next_post_link('%link »') ?></div> + </div> + <div style="padding-bottom: 15px;"></div> --> + <div class="post" id="post-<?php the_ID(); ?>"> + <h2><a href="<?php echo get_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"> <?php the_title(); ?></a></h2> + <p class="small"> +<?php the_time('F jS, Y') ?> + | +<!-- by <?php the_author() ?> --> + Published in +<?php + the_category(', '); + if($post->comment_count > 0) { + echo ' | '; + if($post->comment_count > 1) { + echo '<a href="#comments">' . $post->comment_count . ' Comments</a>'; + } else { + echo '<a href="#comments">1 Comment</a>'; + } + } + edit_post_link('Edit', ' | ', ''); + ?> + </p> + <div class="entry"> +<?php the_content('<p class="serif">Read the rest of this entry »</p>'); ?> +<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?> + </div> + </div> +<?php comments_template(); ?> +<?php endwhile; else: ?> + <p> + Sorry, no posts matched your criteria. + </p> +<?php endif; ?> + </div> +</div> +<div class="column span-8 prepend-1 last"> +<hr class="space" /> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar') ) : ?> +<?php endif; ?> +</div> +<hr /> +<?php get_sidebar(); ?> +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/monochrome-pro/style.css b/wp-content/themes/monochrome-pro/style.css new file mode 100644 index 0000000000000000000000000000000000000000..2615c22ca10bcbe0d4467ad3109f62436c9a7b3e --- /dev/null +++ b/wp-content/themes/monochrome-pro/style.css @@ -0,0 +1,693 @@ +/* +Theme Name: Monochrome +Theme URI: http://www.graphpaperpress.com/ +Description: A Wordpress magazine theme. +Version: 2.0 +Author: Thad Allender for Graph Paper Press +Author URI: http://www.graphpaperpress.com/ +License: GPL +*/ + +body { +background: #eee url(images/bg.gif) repeat-x top; +margin: 0; +padding: 2em 0; +opacity: .999; +color:#000; +} +.container { +background: #fff; +padding: 1em 2em; +} +.container-bg { +background: #fff; +} +blockquote { +background: url('images/quote.png') .5em top no-repeat; +color: #000; +font-style: normal; +padding: 0 0 0 0; +} +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { +color: #000; +} +a { +color: #ff0000; +text-decoration: none; +} +a:active, h2 a:active, h3 a:active { +color: #444130; +text-decoration: none; +} +a:hover, h2 a:hover, h3 a:hover { +color: #444130; +text-decoration: none; +} +.chrome{color:#ff0000;} +blockquote p { +padding: 0 20px 0 30px; +} +hr { +background: #000; +height: 1px; +} +img { +margin: 0; +} +.photo_align_left { +float: left; +padding: .8em; +border:1px solid #ccc; +background:#eee; +margin:0 0 1em 0; +} +.thumbnail {border:5px solid #ccc} +.post .photo_align_left {margin: 0 1.5em 1.5em 0;} +.post img.thumbnail {float:left;margin: 0 1.5em 1.5em 0;} +.logo img { +margin: 0 0 .5em 0; +} +.logo h1 { +text-transform: uppercase; +font-weight: bold; +color: #000; +margin: 12px 0 12px 0; +} +input { +border: 1px solid #CCCCCC; +padding-left: 0; +} +ol { +margin-left: 35px; +} +label { +font-weight: normal; +} +textarea { +height: 200px; +width: 500px; +} +.small { +font-size: .9em; +} +.nomargin { +margin: 0; +} +a.button, button { +font-weight: normal; +} +dl.small dd { +font-size: .9em; +} +.linkcat { +list-style: none; +} +.post_first { +background: #e5e5e5; +padding: 1em; +} +.post_alt { +background: #eee; +padding: 1em; +} +span.meta_align_right { +color: #ccc; +float: right; +font-size: .6em; +} +span.meta_align_right a { +color: #ccc; +} +span.meta_align_right a:hover { +color: #000; +} +.meta { +color: #666; +font-size: .8em; +line-height: 1.875em; +} +.meta a { +color: #666; +} +.meta a:hover { +color: #000; +} +.byline { +color: #666; +font-size: .8em; +line-height: 1.875em; +} +.byline a { +color: #666; +line-height: 1.875em; +text-decoration: none; +} +.byline a:hover { +color: #000; +} +.meta_list, .meta_list a, ul.meta_list { +color: #000; +list-style-image: none; +} +.meta_list li { +border-bottom: 1px dotted #000; +list-style-image: none; +} +h2.widgettitle {color:#000;text-transform:uppercase;border-bottom:1px solid #000;} +.five_posts h3 { +margin-bottom: 0; +padding: .5em 0 .5em 0; +} +.five_posts h3 a { +text-transform: uppercase; +} +.five_posts h4, h6.category_head { +margin: 0 0 1em; +padding: 0; +text-transform: uppercase; +color: #ff0000; +font-size: .9em; +font-weight: normal; +border-bottom: 1px solid #000; +} +.five_posts h4 a, h6.category_head a { +text-transform: uppercase; +color: #ff0000; +} +.five_posts h4 a:hover, h6.category_head a:hover { +color: #fff; +background: #ff0000; +} +h6.category_more a { +color: #000; +background: #eee; +padding: .3em; +font-size: .9em; +text-transform: uppercase; +border: none; +} +h6.category_more a:hover { +background: #333; +color: #fff; +} +#gray_bg { +background:#ddd; +padding:2em; +margin:0 -2em 0 -2em; +float:left; +position: relative; +} +#dark_bg { +background:#000; +padding:2em; +margin:0 -2em 0 -2em; +color: #666; +float:left; +position: relative; +} +#dark_bg ul li { +list-style-image:none; +border-bottom:1px solid #666; +} +#dark_bg a { +color:#ff0000; +} +#dark_bg a:hover { +color:#fff; +} +#dark_bg h2.widgettitle { +margin: 0 0 1em; +padding: 0; +text-transform: uppercase; +color: #666; +border-bottom:1px solid #666; +font-weight: normal; +} +.five_posts ul { +margin:1em; +} +.five_posts ul li { +color: #000; +font-size: .9em; +line-height: 1.8em; +border-bottom: 1px #000 solid; +list-style-image:none; +margin: 0 0 0 -1em; +} +.five_posts ul li a { +color: #000; +} +.five_posts ul li a:hover { +color: #ff0000; +} +.post h2 { +border-bottom: 1px solid #000; +margin-bottom: 15px; +} +h2.category_page { +background:#000; +margin-bottom: 15px; +color:#fff; +text-transform:uppercase; +text-align:center; +padding:10px; +} +.post h2 a { +color: #000; +text-decoration: none; +} +#maincontent .post h2 { +margin-bottom: 5px; +} +#maincontent .content { +padding: 5px 47px 20px 48px; +} +#maincontent h2.pagetitle { +border: none; +text-transform: uppercase; +} +#feature h3 { +margin-bottom: 0; +padding: 0; +} +#feature p img { +margin: 7px 0 2em 0; +} +.feature_text { +margin-top: 2em; +} +#home_right .entry { +padding: 0 0 2em 0; +} +.news h3 { +text-transform: uppercase; +} +.content { +margin: 0 0 1em 0; +} +ul#featurenav { +margin-left: 0; +padding-left: 0; +white-space: nowrap; +} +#featurenav li { +display: inline; +list-style-type: none; +} +#featurenav a { +padding: 1px 5px; +} +#featurenav a:link, #featurenav a:visited { +background-color: #eee; +border: 1px solid #000; +color: #000; +text-decoration: none; +} +#featurenav a:hover { +background-color: #444; +color: #fff; +text-decoration: none; +} +.author { +background: #eee; +margin-bottom: 1.5em; +padding: 1.5em; +} +.author img { +float: left; +padding: 0 1em 1em 0; +} +.author p { +margin-left: 8em; +} +.author h6 { +border-bottom: 1px #000 dotted; +margin-left: 7em; +} +.navigation, +.navigation a { +color: #AAA; +} +.alignright { +float: right; +} +.alignleft { +float: left; +} +.post { +margin-bottom: 25px; +} +.entry { +padding-bottom: 25px; +} +#header { +height: 50px; +padding: 4px 0 0 0; +width: 950px; +} +#header h1, #header .description { +line-height: 1em; +margin: 0; +padding: 0; +} +h1 a.logo { +text-transform: uppercase; +} +.entry #nav .content { +margin: auto; +padding: 0; +} +.entry #nav { +background: #FFF; +margin-bottom: 15px; +} +.entry #nav li a { +background: #666; +border-right: 1px solid #000; +color: #FFF; +} +.entry #nav li.last a { +border-right: none; +} +.entry #nav li a:hover { +background: #333; +color: #FFF; +} +#footer { +font-size: .9em; +margin: 0; +text-align: center; +} +#footer a { +text-decoration: none; +} +#search { +float: right; +} +#search #s { +background: transparent url('images/icons/search_grey.gif') 0px center no-repeat; +color: #CCCCCC; +font-size: 0.9em; +margin-right: 0px; +margin-top: 10px; +padding: 2px 0 2px 17px; +width: 135px; +} +#search #s:hover { +color: #000; +} +.search-excerpt { +margin: 0; +} +.commentlist li { +padding: 8px 15px; +} +.comments-alt { +background: #EEE; +} +.bottombar { +} +.bottombar h2 { +font-size: 1em; +font-weight: bold; +line-height: 1em; +margin: 1em 0 1em; +} +ul { +list-style-type: none; +margin-left: 1em; +padding: 0; +} +ul li { +background-repeat: no-repeat; +line-height: 2em; +list-style-image: url('images/icons/li.png'); +margin: 0; +padding: 0; +} +#top { +margin: 0 auto; +width: 950px; +} +#title { +float: left; +} +#title h1 { +margin: 0; +} +#title h1 a { +color: #fff; +font-weight: bold; +letter-spacing: -.1em; +line-height: 1.3em; +text-transform: uppercase; +} +#title h1 a:hover { +color: #eee; +} +#contents { +background: #fff; +border: 1px solid #ccc; +border-top: none; +clear: both; +margin: 0px; +padding: 15px; +} +/* SECOND TIER PAGE NAVIGATION */ +/* Root = Horizontal, Secondary = Vertical */ +#navmenu-h { +background: #000; +z-index:13; +} +#navmenu-h-r { +background: #eee; +z-index:14; +} +#navmenu-h li.alignright { +float: right; +} +ul#navmenu-h { +margin: 0 0 1em 0; +border: 0 none; +padding: 0; +width: 950px; + /*For KHTML*/ + list-style: none; +height: 34px; +border-top: 1px #222 solid; +z-index:5; +} +#navmenu-h-r { +margin: 0 0 1em 0; +border: 0 none; +padding: 0; +width: 950px; + /*For KHTML*/ + list-style: none; +height: 24px; +} +ul#navmenu-h li { +margin: 0; +border: 0 none; +padding: 0; +float: left; + /*For Gecko*/ + display: inline; +list-style: none; +position: relative; +height: 34px; +border-right: 1px #222 solid; +z-index:6; +} +#navmenu-h-r li { +margin: 0; +border: 0 none; +padding: 0; +float: right; + /*For Gecko*/ + display: inline; +list-style: none; +position: relative; +height: 24px; +} +ul#navmenu-h ul { +margin: 0; +border: 0 none; +padding: 0; +width: 160px; +list-style: none; +display: none; +position: absolute; +top: 34px; +left: 0; +z-index:100; +} +ul#navmenu-h-r ul { +margin: 0; +border: 0 none; +padding: 0; +width: 160px; +list-style: none; +display: none; +position: absolute; +top: 24px; +left: 0; +z-index:111; +} +ul#navmenu-h ul:after,ul#navmenu-h-r ul:after /*From IE 7 lack of compliance*/ { +clear: both; +display: block; +font: 1px/0px serif; +content: "."; +height: 0; +visibility: hidden; +} +ul#navmenu-h ul li, ul#navmenu-h-r ul li { +width: 160px; +float: left; + /*For IE 7 lack of compliance*/ + display: block !important; + /*For IE*/ +} + +/* Root Menu */ +ul#navmenu-h a { +padding: 5px 20px 5px 20px; +float: none !important; + /*For Opera*/ + /*For IE*/ + display: block; +background: #000; +color: #ccc; +font: 12px/24px Helvetica; +text-decoration: none; +text-transform: uppercase; +height: auto !important; + /*For IE*/ +} +ul#navmenu-h-r a { +padding: 2px 20px 0 20px; +float: none !important; + /*For Opera*/ + /*For IE*/ + display: block; +background: #eee; +color: #000; +font: 11px/22px Helvetica; +text-decoration: none; +height: auto !important; + /*For IE*/ +} +/* Root Menu Hover Persistence */ +ul#navmenu-h a:hover, +ul#navmenu-h-r a:hover, +ul#navmenu-h li:hover a, +ul#navmenu-h-r li:hover a, +ul#navmenu-h li.iehover a, +ul#navmenu-h-r li.iehover a { +background: #333; +color: #FFF; +} +/* 2nd Menu */ +ul#navmenu-h li:hover li a, +ul#navmenu-h li.iehover li a, +ul#navmenu-h-r li:hover li a, +ul#navmenu-h-r li.iehover li a { +float: none; +background: #000; +color: #ccc; +} +/* 2nd Menu Hover Persistence */ +ul#navmenu-h li:hover li a:hover, +ul#navmenu-h li:hover li:hover a, +ul#navmenu-h li.iehover li a:hover, +ul#navmenu-h li.iehover li.iehover a, +ul#navmenu-h-r li:hover li a:hover, +ul#navmenu-h-r li:hover li:hover a, +ul#navmenu-h-r li.iehover li a:hover, +ul#navmenu-h-r li.iehover li.iehover a { +background: #333; +color: #FFF; +} +/* 3rd Menu */ +ul#navmenu-h li:hover li:hover li a, +ul#navmenu-h li.iehover li.iehover li a, +ul#navmenu-h-r li:hover li:hover li a, +ul#navmenu-h-r li.iehover li.iehover li a { +background: #000; +color: #ccc; +} +/* 3rd Menu Hover Persistence */ +ul#navmenu-h li:hover li:hover li a:hover, +ul#navmenu-h li:hover li:hover li:hover a, +ul#navmenu-h li.iehover li.iehover li a:hover, +ul#navmenu-h li.iehover li.iehover li.iehover a, +ul#navmenu-h-r li:hover li:hover li a:hover, +ul#navmenu-h-r li:hover li:hover li:hover a, +ul#navmenu-h-r li.iehover li.iehover li a:hover, +ul#navmenu-h-r li.iehover li.iehover li.iehover a { +background: #CCC; +color: #FFF; +} +/* 4th Menu */ +ul#navmenu-h li:hover li:hover li:hover li a, +ul#navmenu-h li.iehover li.iehover li.iehover li a, +ul#navmenu-h-r li:hover li:hover li:hover li a, +ul#navmenu-h-r li.iehover li.iehover li.iehover li a { +background: #EEE; +color: #666; +} +/* 4th Menu Hover */ +ul#navmenu-h li:hover li:hover li:hover li a:hover, +ul#navmenu-h li.iehover li.iehover li.iehover li a:hover, +ul#navmenu-h-r li:hover li:hover li:hover li a:hover, +ul#navmenu-h-r li.iehover li.iehover li.iehover li a:hover { +background: #CCC; +color: #FFF; +} +ul#navmenu-h ul ul, +ul#navmenu-h ul ul ul, +ul#navmenu-h-r ul ul, +ul#navmenu-h-r ul ul ul { +display: none; +position: absolute; +top: 0; +left: 160px; +} +/* Do Not Move - Must Come Before display:block for Gecko */ +ul#navmenu-h li:hover ul ul, +ul#navmenu-h li:hover ul ul ul, +ul#navmenu-h li.iehover ul ul, +ul#navmenu-h li.iehover ul ul ul, +ul#navmenu-h-r li:hover ul ul, +ul#navmenu-h-r li:hover ul ul ul, +ul#navmenu-h-r li.iehover ul ul, +ul#navmenu-h-r li.iehover ul ul ul { +display: none; +} +ul#navmenu-h li:hover ul, +ul#navmenu-h ul li:hover ul, +ul#navmenu-h ul ul li:hover ul, +ul#navmenu-h li.iehover ul, +ul#navmenu-h ul li.iehover ul, +ul#navmenu-h ul ul li.iehover ul, +ul#navmenu-h-r li:hover ul, +ul#navmenu-h-r ul li:hover ul, +ul#navmenu-h-r ul ul li:hover ul, +ul#navmenu-h-r li.iehover ul, +ul#navmenu-h-r ul li.iehover ul, +ul#navmenu-h-r ul ul li.iehover ul { +display: block; +} + +* html ul#navmenu-h ul li a, * html ul#navmenu-h-r ul li a {width: 100%;} + + + +ul#portfolio {padding:0;list-style:none;margin:.5em 0 2em 0;} +ul#portfolio li {list-style:none;background:#eee;border:1px solid #ccc;padding: 1em;} +ul#portfolio li h4 {margin: 0 0 .5em 0;text-transform:uppercase;} +.slideshow { +background:#eee; +margin:0 0 1em 0; +clear:both;}