Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merged over the ttify branch, which is now dead

  • Loading branch information...
commit 8db4b747718947ea786655aaa9ecb85565703f9c 1 parent 38aa7b0
@petdance authored
Showing with 2,354 additions and 192 deletions.
  1. +7 −0 Makefile
  2. +66 −66 crank
  3. +36 −19 s/pod.pod
  4. BIN  static/images/perl101logo.png
  5. +13 −0 static/theme/css/sidebar/sidebar_hide.css
  6. +12 −0 static/theme/css/sidebar/sidebar_left.css
  7. +3 −0  static/theme/css/sidebar/sidebar_right.css
  8. +43 −0 static/theme/css/styles/green.css
  9. +44 −0 static/theme/css/styles/orange.css
  10. +3 −0  static/theme/css/width/width_1000.css
  11. +3 −0  static/theme/css/width/width_680.css
  12. +4 −0 static/theme/css/width/width_default.css
  13. +8 −0 static/theme/css/width/width_variable.css
  14. +116 −0 static/theme/csshover.htc
  15. +545 −0 static/theme/handheld.css
  16. BIN  static/theme/images/body_bg.png
  17. BIN  static/theme/images/button_over.png
  18. BIN  static/theme/images/footer_bg.png
  19. BIN  static/theme/images/green/button_over.png
  20. BIN  static/theme/images/sidebar_left_bg.png
  21. BIN  static/theme/images/sidebar_right_bg.png
  22. BIN  static/theme/images/sub_button.png
  23. BIN  static/theme/images/sub_button_over.png
  24. BIN  static/theme/images/sub_button_over_trans.png
  25. BIN  static/theme/images/sub_button_trans.png
  26. BIN  static/theme/images/toolbar_bg.png
  27. +443 −0 static/theme/javascript.js
  28. +318 −0 static/theme/print.css
  29. +690 −0 static/theme/styles.css
  30. +0 −28 tt/feedback.tt
  31. +0 −71 tt/main.tt
  32. +0 −8 tt/section.tt
View
7 Makefile
@@ -1,5 +1,6 @@
.PHONY: \
crank \
+ clean
default: crank
@@ -9,8 +10,14 @@ crank:
perl crank 101.pod
rsync -azu --delete \
--exclude=.svn --exclude='*~' \
+ static/ 101/static/
+ rsync -azu --delete \
+ --exclude=.svn --exclude='*~' \
s/ 101/s/
+clean:
+ rm -fr 101/
+
# This is only useful for Andy
rsync:
rsync -azu -e ssh --delete \
View
132 crank
@@ -2,84 +2,67 @@
use strict;
use warnings;
-use Pod::Simple::HTMLBatch 3.02;
-use CGI qw( :standard );
+use Carp::Always;
-use File::Slurp qw( write_file );
+use Template ();
+use Template::Constants qw( :debug :chomp );
+
+use Pod::Simple::HTML;
$/ = "";
-my @sections;
+my %defaults = (
+ INCLUDE_PATH => [ qw( tt ) ],
+ OUTPUT_PATH => '101/',
+ DEBUG => DEBUG_UNDEF,
+ TRIM => CHOMP_ALL,
+ PRE_CHOMP => 1,
+ POST_CHOMP => 1,
+);
+
+my $tt = Template->new( \%defaults );
+my $vars = {};
+
+my @podfiles;
+my @sidelinks;
+push( @sidelinks, {
+ filename => './',
+ text => 'Home',
+} );
+
+push( @podfiles, {
+ section => 'Home',
+ podfile => '101.pod',
+ htmlfile => 'index.html',
+} );
+
while ( my $para = <> ) {
chomp $para;
$para =~ s/=head1 // or next;
- push( @sections, $para );
-}
-
-my $batch= Pod::Simple::HTMLBatch->new;
-$batch->batch_convert( ['s/'] , '101/' );
-
-my @toplinks;
-for my $section ( @sections ) {
- my $section_file = make_filename( $section );
- if ( -s "s/$section.pod" ) {
- push( @toplinks, qq{<a href="$section_file.html">$section</a><br>\n} );
+ my $section = $para;
+ my $sectionfile = make_filename( $section );
+
+ my $podfile = "s/$sectionfile.pod";
+ if ( -s $podfile ) {
+ my $htmlfile = "$sectionfile.html";
+ push( @sidelinks, {
+ filename => $htmlfile,
+ text => $section,
+ } );
+ push( @podfiles, {
+ section => $section,
+ podfile => $podfile,
+ htmlfile => $htmlfile,
+ } );
}
}
-my $header = <<'EOF';
-<html>
- <head>
- <title>101 Things Every Perl Programmer Should Know</title>
- </head>
- <body bgcolor="white">
- <h1>101 Things Every Perl Programmer Should Know</h1>
-EOF
-
-my $footer = <<'EOF';
- </body>
-</html>
-EOF
-
-write_file( '101/index.html', $header, @toplinks, feedback( 'index.html' ), $footer );
-
-sub feedback {
- my $source_page = shift;
-
- my $form = join( '',
- start_form( -method => 'POST', -action => '/cgi-sys/formmail.pl' ),
- hidden( 'subject' => "Feedback: $source_page" ),
- hidden( 'recipient' => 'andy@petdance.com' ),
- hidden( 'return_link_url' => 'http://perl101.org/' ),
- hidden( 'return_link_title' => 'Return to Perl 101' ),
- table(
- Tr(
- th( {align=>'right'}, 'Your name' ),
- td( textfield( 'realname' ) ),
- ),
- Tr(
- th( {align=>'right'}, 'Your email' ),
- td( textfield( 'email' ) ),
- ),
- Tr( {valign=>'top'},
- th( {align=>'right'}, 'Your comment' ),
- td(
- textarea( 'text', '', 10, 70 ), br(),
- submit( -value => 'Send' ),
- ),
- ),
- ), # table
- end_form(),
- );
- return <<"EOF";
- <hr>
- <h3>We want your feedback</h3>
- If we can improve perl101.org in any way, please let us know with this form.
- <p>
- $form
-EOF
+for my $vars ( @podfiles ) {
+ $vars->{pod} = pod2html( $vars->{podfile} );
+ $vars->{sidelinks} = \@sidelinks;
+ $tt->process( 'section.tt', $vars, $vars->{htmlfile} ) || die $tt->error;
}
sub make_filename {
@@ -91,3 +74,20 @@ sub make_filename {
return $name;
}
+
+sub pod2html {
+ my $podfile = shift;
+
+ my $html;
+
+ my $parser = Pod::Simple::HTML->new;
+ $parser->html_header_before_title( '' );
+ $parser->html_header_after_title( '' );
+ $parser->html_footer( '' );
+
+ $parser->complain_stderr( 1 );
+ $parser->output_string( \$html );
+ $parser->parse_file( $podfile );
+
+ return $html;
+}
View
55 s/pod.pod
@@ -5,14 +5,12 @@ Plain Ol' Documentation
=head2 Inline documentation & formatting
POD allows you to create documentation with markup in your Perl code.
-
If you've seen Javadoc or PHPdoc, it's like that.
-
Rather, Javadoc and PHPdoc are like POD.
Except that POD is part of the language, not an add-on spec.
-=head2 Headings
+=head2 Create headings with C<=head1> and C<=head2>
=head1 MOST IMPORTANT
@@ -26,7 +24,7 @@ Except that POD is part of the language, not an add-on spec.
blah blah
-=head2 Lists
+=head2 Create unordered lists
To create this list:
@@ -42,10 +40,6 @@ To create this list:
Use
- =head2 PARAMETERS
-
- You must pass in three parms:
-
=over
=item * Wango
@@ -56,27 +50,50 @@ Use
=back
-=head2 Style markup
+=head2 Create ordered lists
- B<This is bolded>
+To create this list:
- I<This is italics>
+=over
- C<This is code>
+=item 1 Visit perl101.org
-B<bold>
+=item 2 ???
-I<italics>
+=item 3 Profit!
+
+=back
-C<code>
+Use
+
+ =over
+
+ =item 1 Visit perl101.org
+
+ =item 2 ???
+
+ =item 3 Profit!
+
+ =back
+
+=head2 Use inline markup styles
+
+POD uses BE<lt>E<gt>, IE<lt>E<gt> and CE<lt>E<gt> for B<bold>,
+I<italics> and C<code>, respectively.
+
+ B<This is bolded>
+
+ I<This is italics>
+
+ C<This is code>
Your markup formats can nest.
-=head2 Link with C<< L<> >>
+=head2 Link with C<LE<lt>E<gt>>
-The C<< L<> >> links either to keywords in your document, as in
-C<< L<Methods> >>, or to a specific URL, as in
-C<< L<http://search.cpan.org> >>.
+The C<LE<lt>E<gt>> links either to keywords in your document, as in
+C<< LE<lt>MethodsE<gt> >>, or to a specific URL, as in
+C<< LE<lt>http://search.cpan.orgE<gt> >>.
=head2 Paragraph mode vs. literal blocks
View
BIN  static/images/perl101logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
13 static/theme/css/sidebar/sidebar_hide.css
@@ -0,0 +1,13 @@
+#sidebarContainer {
+ display: none;
+}
+
+#container {
+ background-image: none;
+}
+
+#contentContainer {
+ width: 100%;
+ border: none;
+ margin: 0;
+}
View
12 static/theme/css/sidebar/sidebar_left.css
@@ -0,0 +1,12 @@
+#sidebarContainer {
+ float: left;
+}
+
+#container {
+ background: #ffffff repeat-y left url(../../images/sidebar_left_bg.png);
+}
+
+#contentContainer {
+ margin-left: 150px;
+ margin-right: 0px;
+}
View
3  static/theme/css/sidebar/sidebar_right.css
@@ -0,0 +1,3 @@
+#sidebarContainer {
+ float: right;
+}
View
43 static/theme/css/styles/green.css
@@ -0,0 +1,43 @@
+a:link, a:visited {
+ color: #8ecf0b;
+}
+
+#navcontainer #current {
+ background: url(../../images/green/button_over.png) repeat-x left top;
+}
+
+#navcontainer #current:hover {
+}
+
+#navcontainer .currentAncestor {
+ background: url(../../images/green/button_over.png) repeat-x left top;
+}
+
+#navcontainer a:hover {
+ background: url(../../images/green/button_over.png) repeat-x left top;
+}
+
+#navcontainer ul ul {
+ border-bottom: 3px solid #8ecf0b;
+}
+
+#navcontainer ul ul a:hover{
+ color: #8ecf0b;
+}
+
+#navcontainer ul ul .currentAncestor {
+ color: #8ecf0b;
+ background: url(../../images/sub_button.png) repeat;
+}
+
+html>body #navcontainer ul ul .currentAncestor {
+ background: repeat url(../../images/sub_button_trans.png);
+}
+
+.blog-entry-title {
+ color: #313534;
+}
+
+.blog-entry-date {
+ color: #b3b3b3;
+}
View
44 static/theme/css/styles/orange.css
@@ -0,0 +1,44 @@
+a:link, a:visited {
+ color: #e7800e;
+}
+
+a:hover, a:active {
+ color: #000000;
+}
+
+#navcontainer #current {
+ background: url(../../images/button_over.png) repeat-x left top;
+}
+
+#navcontainer .currentAncestor {
+ background: url(../../images/button_over.png) repeat-x left top;
+}
+
+#navcontainer a:hover {
+ background: url(../../images/button_over.png) repeat-x left top;
+}
+
+#navcontainer ul ul {
+ border-bottom: 3px solid #e9932f;
+}
+
+#navcontainer ul ul a:hover{
+ color: #ffd590;
+}
+
+#navcontainer ul ul #current{
+ color: #ffd590;
+}
+
+#navcontainer ul ul .currentAncestor {
+ color: #ffd590;
+ background: url(../../images/sub_button.png) repeat;
+}
+
+html>body #navcontainer ul ul .currentAncestor {
+ background: repeat url(../../images/sub_button_trans.png);
+}
+
+.movie-background {
+ margin: 10px;
+}
View
3  static/theme/css/width/width_1000.css
@@ -0,0 +1,3 @@
+#container {
+ width: 1000px;
+}
View
3  static/theme/css/width/width_680.css
@@ -0,0 +1,3 @@
+#container {
+ width: 680px;
+}
View
4 static/theme/css/width/width_default.css
@@ -0,0 +1,4 @@
+/* This is the default width for this theme. We need this file as we have to set a default css file for the theme variations. */
+#container {
+ width: 780px;
+}
View
8 static/theme/css/width/width_variable.css
@@ -0,0 +1,8 @@
+#container {
+ width: auto;
+}
+
+#sidebarContainer {
+ position: relative;
+ z-index: 100;
+}
View
116 static/theme/csshover.htc
@@ -0,0 +1,116 @@
+<attach event="ondocumentready" handler="parseStylesheets" />
+<script>
+/**
+ * Whatever:hover - V2.01.050927 - hover, active & focus
+ * ------------------------------------------------------------
+ * (c) 2005 - Peter Nederlof
+ * Peterned - http://www.xs4all.nl/~peterned/
+ * License - http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * Whatever:hover is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Whatever:hover 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
+ * Lesser General Public License for more details.
+ *
+ * Credits and thanks to:
+ * Arnoud Berendsen, Martin Reurings, Robert Hanson
+ *
+ * howto: body { behavior:url("csshover.htc"); }
+ * ------------------------------------------------------------
+ */
+
+var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea):unknown)/i,
+currentSheet, doc = window.document, hoverEvents = [], activators = {
+ onhover:{on:'onmouseover', off:'onmouseout'},
+ onactive:{on:'onmousedown', off:'onmouseup'},
+ onunknown:{on:'onfocus', off:'onblur'}
+}
+
+function parseStylesheets() {
+ if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
+ window.attachEvent('onunload', unhookHoverEvents);
+ var sheets = doc.styleSheets, l = sheets.length;
+ for(var i=0; i<l; i++)
+ parseStylesheet(sheets[i]);
+}
+ function parseStylesheet(sheet) {
+ if(sheet.imports) {
+ try {
+ var imports = sheet.imports, l = imports.length;
+ for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
+ } catch(securityException){}
+ }
+
+ try {
+ var rules = (currentSheet = sheet).rules, l = rules.length;
+ for(var j=0; j<l; j++) parseCSSRule(rules[j]);
+ } catch(securityException){}
+ }
+
+ function parseCSSRule(rule) {
+ var select = rule.selectorText, style = rule.style.cssText;
+ if(!csshoverReg.test(select) || !style) return;
+
+ var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
+ var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
+ var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
+ var affected = select.replace(/:(hover|active|unknown).*$/, '');
+ var elements = getElementsBySelect(affected);
+ if(elements.length == 0) return;
+
+ currentSheet.addRule(newSelect, style);
+ for(var i=0; i<elements.length; i++)
+ new HoverElement(elements[i], className, activators[pseudo]);
+ }
+
+function HoverElement(node, className, events) {
+ if(!node.hovers) node.hovers = {};
+ if(node.hovers[className]) return;
+ node.hovers[className] = true;
+ hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
+ hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
+}
+ function hookHoverEvent(node, type, handler) {
+ node.attachEvent(type, handler);
+ hoverEvents[hoverEvents.length] = {
+ node:node, type:type, handler:handler
+ };
+ }
+
+ function unhookHoverEvents() {
+ for(var e,i=0; i<hoverEvents.length; i++) {
+ e = hoverEvents[i];
+ e.node.detachEvent(e.type, e.handler);
+ }
+ }
+
+function getElementsBySelect(rule) {
+ var parts, nodes = [doc];
+ parts = rule.split(' ');
+ for(var i=0; i<parts.length; i++) {
+ nodes = getSelectedNodes(parts[i], nodes);
+ } return nodes;
+}
+ function getSelectedNodes(select, elements) {
+ var result, node, nodes = [];
+ var identify = (/\#([a-z0-9_-]+)/i).exec(select);
+ if(identify) return [doc.getElementById(identify[1])];
+
+ var classname = (/\.([a-z0-9_-]+)/i).exec(select);
+ var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
+ var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
+ for(var i=0; i<elements.length; i++) {
+ result = tagName? elements[i].all.tags(tagName):elements[i].all;
+ for(var j=0; j<result.length; j++) {
+ node = result[j];
+ if(classReg && !classReg.test(node.className)) continue;
+ nodes[nodes.length] = node;
+ }
+ } return nodes;
+ }
+</script>
View
545 static/theme/handheld.css
@@ -0,0 +1,545 @@
+/*<group=General Styles>*/
+
+body {
+ text-align: left;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 0.9em;
+ margin: 0px;
+ padding: 0;
+ white-space: pre;
+}
+
+p {
+}
+
+b, strong {
+
+}
+
+a:link {
+ color: #0000ff;
+ text-decoration: underline;
+}
+
+a:visited {
+ color: #681796;
+}
+
+a:hover, a:active {
+ text-decoration: none;
+ background: #0000ff;
+ color: #ffffff;
+}
+
+img {
+ max-width: 99%;
+}
+
+.image-left {
+
+}
+
+.image-right {
+
+}
+
+/*</group>*/
+
+/*<group=Layout>*/
+
+#container {
+ background: #ffffff;
+ background-image: none;
+ width: 100%;
+}
+
+#pageHeader {
+ height: auto;
+ text-align: left;
+ margin-bottom: 8px;
+ background: #000000;
+ padding: 3px;
+ border-bottom: solid #191919 2px;
+}
+
+#pageHeader img {
+ position: relative;
+ top: auto;
+ right: auto;
+}
+
+#pageHeader h1 {
+ color: #ffffff;
+ font-size: 1.3em;
+ margin: 0 0 5px;
+ padding-top: 0px;
+ font-weight: bold;
+}
+
+#pageHeader h2 {
+ font-size: 1.1em;
+ margin: 0;
+ color: #ffffff;
+ font-weight: normal;
+}
+
+#contentContainer {
+ margin: 0px;
+ display: block;
+ width: auto;
+}
+
+#contentContainer #content {
+ margin: 0;
+ padding: 0;
+}
+
+#sidebarContainer {
+ float: none;
+ width: auto;
+ display: block;
+ margin-bottom: 10px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #808080;
+}
+
+#sidebarContainer #sidebar {
+ margin: 0;
+ padding: 0px;
+}
+
+#sidebarContainer .sideHeader {
+ color: #000000;
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+
+#footer {
+ width: auto;
+ text-align: left;
+ padding: 0px;
+ margin: 0;
+}
+
+#footer p {
+}
+
+#footer a:link, #footer a:visited {
+
+}
+
+#footer a:hover, #footer a:active {
+}
+
+/*</group>*/
+
+/*<group=Bread-crumb>*/
+
+#breadcrumbcontainer {
+ margin-bottom: 5px;
+}
+
+#breadcrumbcontainer ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+#breadcrumbcontainer li {
+ display: inline;
+ padding: 0;
+ margin: 0;
+}
+
+#breadcrumbcontainer a {
+ padding: 0;
+}
+
+#breadcrumbcontainer a:hover {
+
+}
+
+/*</group>*/
+
+/*<group=Toolbar>*/
+
+/* Toolbar Styles */
+
+#navcontainer {
+ color: #000000;
+ margin: 0 0 10px 0;
+ padding: 0;
+}
+
+#navcontainer #current {
+
+}
+
+#navcontainer #current:hover {
+}
+
+#navcontainer .currentAncestor {
+
+}
+
+/* Parent - Level 0 */
+
+#navcontainer ul{
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
+
+#navcontainer li {
+ margin: 0;
+ padding: 0;
+}
+
+#navcontainer a {
+ padding: 0;
+}
+
+#navcontainer a:hover {
+}
+
+#navcontainer a:active {
+}
+
+/* Child - Level 1 */
+
+#navcontainer ul ul {
+ list-style-type: none;
+ margin-left: 2px;
+ padding: 0;
+ color: black;
+}
+
+#navcontainer ul ul li {
+ padding-left: 5px;
+}
+
+#navcontainer ul ul a {
+ padding: 0;
+}
+
+#navcontainer ul ul a:hover{
+}
+
+#navcontainer ul ul #current{
+}
+
+/* Child - Level 2 */
+
+#navcontainer ul ul ul {
+
+}
+
+#navcontainer ul ul ul li {
+ padding-left: 10px;
+}
+
+#navcontainer ul ul ul a{
+}
+
+#navcontainer ul ul ul a:hover{
+
+}
+
+/* Child Level 3 */
+
+#navcontainer ul ul ul {
+
+}
+
+#navcontainer ul ul ul ul li {
+ padding-left: 15px;
+}
+
+#navcontainer ul ul ul ul a{
+}
+
+#navcontainer ul ul ul ul a:hover{
+
+}
+
+/* Child Level 4 */
+
+#navcontainer ul ul ul ul {
+
+}
+
+#navcontainer ul ul ul ul ul li {
+ padding-left: 20px;
+}
+
+#navcontainer ul ul ul ul ul a{
+}
+
+#navcontainer ul ul ul ul ul a:hover{
+
+}
+
+/* Child Level 5 */
+
+#navcontainer ul ul ul ul ul {
+
+}
+
+#navcontainer ul ul ul ul ul ul li {
+}
+
+#navcontainer ul ul ul ul ul ul a{
+}
+
+#navcontainer ul ul ul ul ul ul a:hover{
+
+}
+
+/*</group>*/
+
+/*<group=Global Classes>*/
+
+blockquote, .standout {
+ margin: 0;
+ padding: 5px;
+ font-weight: bold;
+}
+
+h1 {
+}
+
+h2 {
+}
+
+h3 {
+}
+
+h4 {
+}
+
+.imageStyle {
+
+}
+
+/*</group>*/
+
+/*<group=Blog>*/
+
+/*<group=Archive Page>*/
+
+.blog-archive-background {
+}
+
+.blog-archive-headings-wrapper {
+}
+
+.blog-archive-entries-wrapper {
+}
+
+.blog-archive-entries-wrapper .blog-entry {
+}
+
+.blog-archive-month {
+}
+
+.blog-archive-link {
+}
+
+.blog-archive-link a:link, .blog-archive-link a:visited {
+}
+
+/*</group>*/
+
+.blog-entry {
+}
+
+.blog-entry-title {
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+.blog-entry-date {
+ margin-bottom: 8px;
+ font-size: 0.9em;
+ color: #808080;
+}
+
+.blog-entry-body {
+ margin-bottom: 5px;
+ padding-bottom: 5px;
+ border-bottom: 1px solid #cccccc;
+}
+
+.blog-entry-comments {
+ display: none;
+}
+
+.blog-entry-category {
+}
+
+.blog-category-link-enabled {
+}
+
+.blog-category-link-disabled {
+}
+
+/*</group>*/
+
+/*<group=File Sharing>*/
+
+.filesharing-description {
+}
+
+.filesharing-item {
+ margin-bottom: 5px;
+ padding-bottom: 5px;
+ border-bottom: 1px solid #cccccc;
+}
+
+.filesharing-item-title a:link {
+}
+
+.filesharing-item-title a:hover {
+}
+
+.filesharing-item-title a:visited {
+
+}
+
+.filesharing-item-description {
+}
+
+/*</group>*/
+
+/*<group=Photo Album>*/
+
+/*<group=Index Page (Thumbnail view)>*/
+
+.album-title {
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+.album-description {
+ margin-bottom: 8px;
+ font-size: 0.9em;
+ color: #808080;
+}
+
+table.thumbnail-table {
+ width: 99%;
+}
+
+table.thumbnail-table, table.thumbnail-table tr, table.thumbnail-table td {
+ display: block;
+}
+
+.thumbnail-frame {
+}
+
+.thumbnail-frame:hover {
+}
+
+.thumbnail-frame a {
+}
+
+.thumbnail-frame a:hover {
+}
+
+.thumbnail-frame img {
+}
+
+.thumbnail-caption {
+}
+
+/*</group>*/
+
+/*<group=Single Page (Photo view)>*/
+
+.photo-background {
+}
+
+.photo-navigation {
+}
+
+.photo-links {
+}
+
+.photo-navigation a:link, .photo-navigation a:visited {
+
+}
+
+.photo-navigation a:hover {
+
+}
+
+.photo-frame{
+}
+
+.photo-title {
+}
+
+.photo-caption {
+}
+
+/*</group>*/
+
+/*</group>*/
+
+/*<group=Quicktime Page>*/
+
+.movie-description {
+
+}
+
+/*</group>*/
+
+/*<group=Quicktime Album>*/
+
+/*<group=Index Page (Movie Thumbnail view)>*/
+
+.movie-page-title {
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+.movie-page-description {
+ margin-bottom: 8px;
+ font-size: 0.9em;
+ color: #808080;
+}
+
+.movie-thumbnail-frame {
+}
+
+.movie-thumbnail-frame:hover {
+}
+
+.movie-thumbnail-caption {
+}
+
+/*</group>*/
+
+/*<group=Single Page (Movie View)>*/
+
+.movie-background {
+}
+
+.movie-title {
+}
+
+.movie-frame {
+
+}
+
+/*</group>*/
+
+
+/*</group>*/
+
+/*<group=Contact Form>*/
+.message-text {
+}
+
+.required-text {
+}
View
BIN  static/theme/images/body_bg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/button_over.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/footer_bg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/green/button_over.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/sidebar_left_bg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/sidebar_right_bg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/sub_button.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/sub_button_over.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/sub_button_over_trans.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/sub_button_trans.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/theme/images/toolbar_bg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
443 static/theme/javascript.js
@@ -0,0 +1,443 @@
+/*
+ * RapidWeaver 3.5.0 theme functions.
+ * Script Version 2.1
+ * Updated 26 May 2006.
+ */
+
+
+
+/*
+ * Function to generate "open in new window" link as W3C compliant
+ */
+
+function externalLinks() {
+if (!document.getElementsByTagName) return;
+var anchors = document.getElementsByTagName("a");
+for (var i=0; i<anchors.length; i++) {
+var anchor = anchors[i];
+if (anchor.getAttribute("href") &&
+anchor.getAttribute("rel") == "external")
+anchor.target = "_blank";
+}
+}
+window.onload = externalLinks;
+
+
+
+
+/*
+ * Functions to generate OBJECT and EMBED tags for Flash content.
+ * Resource: http://blog.deconcept.com/swfobject/
+ *
+ * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+if(typeof deconcept == "undefined") var deconcept = new Object();
+if(typeof deconcept.util == "undefined") deconcept.util = new Object();
+if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = new Object();
+deconcept.SWFObject = function(swf, id, w, h, ver, c, useExpressInstall, quality, xiRedirectUrl, redirectUrl, detectKey){
+ if (!document.createElement || !document.getElementById) { return; }
+ this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
+ this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
+ this.params = new Object();
+ this.variables = new Object();
+ this.attributes = new Array();
+ if(swf) { this.setAttribute('swf', swf); }
+ if(id) { this.setAttribute('id', id); }
+ if(w) { this.setAttribute('width', w); }
+ if(h) { this.setAttribute('height', h); }
+ if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }
+ this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);
+ if(c) { this.addParam('bgcolor', c); }
+ var q = quality ? quality : 'high';
+ this.addParam('quality', q);
+ this.setAttribute('useExpressInstall', useExpressInstall);
+ this.setAttribute('doExpressInstall', false);
+ var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
+ this.setAttribute('xiRedirectUrl', xir);
+ this.setAttribute('redirectUrl', '');
+ if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }
+}
+deconcept.SWFObject.prototype = {
+ setAttribute: function(name, value){
+ this.attributes[name] = value;
+ },
+ getAttribute: function(name){
+ return this.attributes[name];
+ },
+ addParam: function(name, value){
+ this.params[name] = value;
+ },
+ getParams: function(){
+ return this.params;
+ },
+ addVariable: function(name, value){
+ this.variables[name] = value;
+ },
+ getVariable: function(name){
+ return this.variables[name];
+ },
+ getVariables: function(){
+ return this.variables;
+ },
+ getVariablePairs: function(){
+ var variablePairs = new Array();
+ var key;
+ var variables = this.getVariables();
+ for(key in variables){
+ variablePairs.push(key +"="+ variables[key]);
+ }
+ return variablePairs;
+ },
+ getSWFHTML: function() {
+ var swfNode = "";
+ if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
+ if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "PlugIn");
+ swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
+ swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
+ var params = this.getParams();
+ for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
+ var pairs = this.getVariablePairs().join("&");
+ if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
+ swfNode += '/>';
+ } else { // PC IE
+ if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "ActiveX");
+ swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
+ swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
+ var params = this.getParams();
+ for(var key in params) {
+ swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
+ }
+ var pairs = this.getVariablePairs().join("&");
+ if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
+ swfNode += "</object>";
+ }
+ return swfNode;
+ },
+ write: function(elementId){
+ if(this.getAttribute('useExpressInstall')) {
+ // check to see if we need to do an express install
+ var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
+ if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
+ this.setAttribute('doExpressInstall', true);
+ this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
+ document.title = document.title.slice(0, 47) + " - Flash Player Installation";
+ this.addVariable("MMdoctitle", document.title);
+ }
+ }
+ if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
+ var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
+ n.innerHTML = this.getSWFHTML();
+ return true;
+ }else{
+ if(this.getAttribute('redirectUrl') != "") {
+ document.location.replace(this.getAttribute('redirectUrl'));
+ }
+ }
+ return false;
+ }
+}
+
+/* ---- detection functions ---- */
+deconcept.SWFObjectUtil.getPlayerVersion = function(reqVer, xiInstall){
+ var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
+ if(navigator.plugins && navigator.mimeTypes.length){
+ var x = navigator.plugins["Shockwave Flash"];
+ if(x && x.description) {
+ PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
+ }
+ }else{
+ try{
+ var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
+ for (var i=3; axo!=null; i++) {
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
+ PlayerVersion = new deconcept.PlayerVersion([i,0,0]);
+ }
+ }catch(e){}
+ if (reqVer && PlayerVersion.major > reqVer.major) return PlayerVersion; // version is ok, skip minor detection
+ // this only does the minor rev lookup if the user's major version
+ // is not 6 or we are checking for a specific minor or revision number
+ // see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
+ if (!reqVer || ((reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != 6 || xiInstall) {
+ try{
+ PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
+ }catch(e){}
+ }
+ }
+ return PlayerVersion;
+}
+deconcept.PlayerVersion = function(arrVersion){
+ this.major = parseInt(arrVersion[0]) != null ? parseInt(arrVersion[0]) : 0;
+ this.minor = parseInt(arrVersion[1]) || 0;
+ this.rev = parseInt(arrVersion[2]) || 0;
+}
+deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
+ if(this.major < fv.major) return false;
+ if(this.major > fv.major) return true;
+ if(this.minor < fv.minor) return false;
+ if(this.minor > fv.minor) return true;
+ if(this.rev < fv.rev) return false;
+ return true;
+}
+/* ---- get value of query string param ---- */
+deconcept.util = {
+ getRequestParameter: function(param){
+ var q = document.location.search || document.location.hash;
+ if(q){
+ var startIndex = q.indexOf(param +"=");
+ var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length;
+ if (q.length > 1 && startIndex > -1) {
+ return q.substring(q.indexOf("=", startIndex)+1, endIndex);
+ }
+ }
+ return "";
+ }
+}
+/* fix for video streaming bug */
+deconcept.SWFObjectUtil.cleanupSWFs = function() {
+ var objects = document.getElementsByTagName("OBJECT");
+ for (var i=0; i < objects.length; i++) {
+ for (var x in objects[i]) {
+ if (typeof objects[i][x] == 'function') {
+ objects[i][x] = null;
+ }
+ }
+ }
+}
+if (typeof window.onunload == 'function') {
+ var oldunload = window.onunload;
+ window.onunload = function() {
+ deconcept.SWFObjectUtil.cleanupSWFs();
+ oldunload();
+ }
+} else {
+ window.onunload = deconcept.SWFObjectUtil.cleanupSWFs;
+}
+/* add Array.push if needed (ie5) */
+if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}
+
+/* add some aliases for ease of use/backwards compatibility */
+var getQueryParamValue = deconcept.util.getRequestParameter;
+var FlashObject = deconcept.SWFObject; // for legacy support
+var SWFObject = deconcept.SWFObject;
+
+
+
+
+
+/*
+ * Functions to generate OBJECT and EMBED tags for QuickTime content.
+ * Resource: http://developer.apple.com/internet/ieembedfix.html
+ */
+
+/************** LOCALIZABLE GLOBAL VARIABLES ****************/
+
+var gArgCountErr = 'The "%%" function requires an even number of arguments.'
+ + '\nArguments should be in the form "atttributeName", "attributeValue", ...';
+
+/******************** END LOCALIZABLE **********************/
+
+var gTagAttrs = null;
+var gQTGeneratorVersion = 1.0;
+
+function AC_QuickTimeVersion() { return gQTGeneratorVersion; }
+
+function _QTComplain(callingFcnName, errMsg)
+{
+ errMsg = errMsg.replace("%%", callingFcnName);
+ alert(errMsg);
+}
+
+function _QTAddAttribute(prefix, slotName, tagName)
+{
+ var value;
+
+ value = gTagAttrs[prefix + slotName];
+ if ( null == value )
+ value = gTagAttrs[slotName];
+
+ if ( null != value )
+ {
+ if ( 0 == slotName.indexOf(prefix) && (null == tagName) )
+ tagName = slotName.substring(prefix.length);
+ if ( null == tagName )
+ tagName = slotName;
+ return tagName + '="' + value + '" ';
+ }
+ else
+ return "";
+}
+
+function _QTAddObjectAttr(slotName, tagName)
+{
+ // don't bother if it is only for the embed tag
+ if ( 0 == slotName.indexOf("emb#") )
+ return "";
+
+ if ( 0 == slotName.indexOf("obj#") && (null == tagName) )
+ tagName = slotName.substring(4);
+
+ return _QTAddAttribute("obj#", slotName, tagName);
+}
+
+function _QTAddEmbedAttr(slotName, tagName)
+{
+ // don't bother if it is only for the object tag
+ if ( 0 == slotName.indexOf("obj#") )
+ return "";
+
+ if ( 0 == slotName.indexOf("emb#") && (null == tagName) )
+ tagName = slotName.substring(4);
+
+ return _QTAddAttribute("emb#", slotName, tagName);
+}
+
+
+function _QTAddObjectParam(slotName, generateXHTML)
+{
+ var paramValue;
+ var paramStr = "";
+ var endTagChar = (generateXHTML) ? ' />' : '>';
+
+ if ( -1 == slotName.indexOf("emb#") )
+ {
+ // look for the OBJECT-only param first. if there is none, look for a generic one
+ paramValue = gTagAttrs["obj#" + slotName];
+ if ( null == paramValue )
+ paramValue = gTagAttrs[slotName];
+
+ if ( 0 == slotName.indexOf("obj#") )
+ slotName = slotName.substring(4);
+
+ if ( null != paramValue )
+ paramStr = ' <param name="' + slotName + '" value="' + paramValue + '"' + endTagChar + '\n';
+ }
+
+ return paramStr;
+}
+
+function _QTDeleteTagAttrs()
+{
+ for ( var ndx = 0; ndx < arguments.length; ndx++ )
+ {
+ var attrName = arguments[ndx];
+ delete gTagAttrs[attrName];
+ delete gTagAttrs["emb#" + attrName];
+ delete gTagAttrs["obj#" + attrName];
+ }
+}
+
+
+
+// generate an embed and object tag, return as a string
+function _QTGenerate(callingFcnName, generateXHTML, args)
+{
+ // is the number of optional arguments even?
+ if ( args.length < 4 || (0 != (args.length % 2)) )
+ {
+ _QTComplain(callingFcnName, gArgCountErr);
+ return "";
+ }
+
+ // allocate an array, fill in the required attributes with fixed place params and defaults
+ gTagAttrs = new Array();
+ gTagAttrs["src"] = args[0];
+ gTagAttrs["width"] = args[1];
+ gTagAttrs["height"] = args[2];
+ gTagAttrs["classid"] = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
+ gTagAttrs["pluginspage"] = "http://www.apple.com/quicktime/download/";
+
+ // set up codebase attribute with specified or default version before parsing args so
+ // anything passed in will override
+ var activexVers = args[3]
+ if ( (null == activexVers) || ("" == activexVers) )
+ activexVers = "6,0,2,0";
+ gTagAttrs["codebase"] = "http://www.apple.com/qtactivex/qtplugin.cab#version=" + activexVers;
+
+ var attrName,
+ attrValue;
+
+ // add all of the optional attributes to the array
+ for ( var ndx = 4; ndx < args.length; ndx += 2)
+ {
+ attrName = args[ndx].toLowerCase();
+ attrValue = args[ndx + 1];
+
+ // "name" and "id" should have the same value, the former goes in the embed and the later goes in
+ // the object. use one array slot
+ if ( "name" == attrName || "id" == attrName )
+ gTagAttrs["name"] = attrValue;
+
+ else
+ gTagAttrs[attrName] = attrValue;
+ }
+
+ // init both tags with the required and "special" attributes
+ var objTag = '<object '
+ + _QTAddObjectAttr("classid")
+ + _QTAddObjectAttr("width")
+ + _QTAddObjectAttr("height")
+ + _QTAddObjectAttr("codebase")
+ + _QTAddObjectAttr("name", "id")
+ + _QTAddObjectAttr("tabindex")
+ + _QTAddObjectAttr("hspace")
+ + _QTAddObjectAttr("vspace")
+ + _QTAddObjectAttr("border")
+ + _QTAddObjectAttr("align")
+ + _QTAddObjectAttr("class")
+ + _QTAddObjectAttr("title")
+ + _QTAddObjectAttr("accesskey")
+ + _QTAddObjectAttr("noexternaldata")
+ + '>\n'
+ + _QTAddObjectParam("src", generateXHTML);
+ var embedTag = ' <embed '
+ + _QTAddEmbedAttr("src")
+ + _QTAddEmbedAttr("width")
+ + _QTAddEmbedAttr("height")
+ + _QTAddEmbedAttr("pluginspage")
+ + _QTAddEmbedAttr("name")
+ + _QTAddEmbedAttr("align")
+ + _QTAddEmbedAttr("tabindex");
+
+ // delete the attributes/params we have already added
+ _QTDeleteTagAttrs("src","width","height","pluginspage","classid","codebase","name","tabindex",
+ "hspace","vspace","border","align","noexternaldata","class","title","accesskey");
+
+ // and finally, add all of the remaining attributes to the embed and object
+ for ( var attrName in gTagAttrs )
+ {
+ attrValue = gTagAttrs[attrName];
+ if ( null != attrValue )
+ {
+ embedTag += _QTAddEmbedAttr(attrName);
+ objTag += _QTAddObjectParam(attrName, generateXHTML);
+ }
+ }
+
+ // end both tags, we're done
+ return objTag + embedTag + '> </em' + 'bed>\n</ob' + 'ject' + '>';
+}
+
+// return the object/embed as a string
+function QT_GenerateOBJECTText()
+{
+ return _QTGenerate("QT_GenerateOBJECTText", false, arguments);
+}
+
+function QT_GenerateOBJECTText_XHTML()
+{
+ return _QTGenerate("QT_GenerateOBJECTText_XHTML", true, arguments);
+}
+
+function QT_WriteOBJECT()
+{
+ document.writeln(_QTGenerate("QT_WriteOBJECT", false, arguments));
+}
+
+function QT_WriteOBJECT_XHTML()
+{
+ document.writeln(_QTGenerate("QT_WriteOBJECT_XHTML", true, arguments));
+}
+
+
View
318 static/theme/print.css
@@ -0,0 +1,318 @@
+/*<group=General Styles>*/
+
+body {
+ background: transparent none;
+ margin: 0px 5% 0px 5%;
+ text-align: left;
+ color: #000000;
+ letter-spacing: 0.5px;
+ word-spacing: 1px;
+ padding: 0px;
+ font: 10pt Georgia, Times New Roman, Times, serif;
+}
+
+p {
+}
+
+b, strong {
+ font-weight: bold;
+}
+
+a:link, a:visited {
+}
+
+a:hover, a:active {
+}
+
+/*</group>*/
+
+/*<group=Layout>*/
+
+#container {
+ text-align: left;
+ width: 100%;
+ padding: 0px;
+ margin: 0px;
+}
+
+#pageHeader {
+ text-align: left;
+ background: none;
+ border-bottom: 1px solid #cccccc;
+ padding-bottom: 10px;
+ margin-bottom: 10px;
+}
+
+#pageHeader img {
+ float: right;
+}
+
+#pageHeader h1 {
+ color: #000000;
+ margin: 0px;
+ font-weight: bold;
+ font-size: 16pt;
+ padding: 0px;
+}
+
+#pageHeader h2 {
+ color: #333333;
+ margin: 0px;
+ font-size: 13pt;
+ font-weight: normal;
+ padding: 0px;
+}
+
+#contentContainer {
+ float: none !important;
+ padding: 0px;
+ margin-bottom: 10px;
+}
+
+#contentContainer #content {
+ padding: 0px;
+}
+
+#contentContainer #content img {
+}
+
+#sidebarContainer {
+ float: none;
+ width: auto;
+ border-bottom: 1px solid #cccccc;
+ margin-bottom: 10px;
+ padding-bottom: 10px;
+}
+
+#sidebarContainer .sidebar {
+}
+
+#footer {
+ text-align: center;
+ background: none;
+ color: #000000;
+ font-size: 10pt;
+ border-top: 1px solid #cccccc;
+ margin-top: 10px;
+ padding-top: 10px;
+}
+
+#footer a {
+}
+
+#footer a:hover {
+}
+
+/*</group>*/
+
+/*<group=toolbar>*/
+
+#navcontainer {
+ display: none;
+}
+
+/*</group>*/
+
+/*<group=Bread-crumb>*/
+
+#breadcrumbcontainer {
+ display: none;
+}
+
+/*</group>*/
+
+/*<group=Global Classes>*/
+
+.standout {
+ color: #474747;
+ font-size: 11pt;
+ font-weight: bold;
+ letter-spacing: 1px;
+ word-spacing: 2px;
+ padding: 40px;
+ background-color: #f5f5f5;
+ font-style: italic;
+}
+
+h1 {
+ font-size: 20pt;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+h2 {
+ font-size: 18pt;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+h3 {
+ font-size: 16pt;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+h4 {
+ font-size: 14pt;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+h5 {
+ font-size: 12px;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+.imageStyle {
+}
+
+/*</group>*/
+
+/*<group=Blog>*/
+
+.blog-entry {
+ border-style: none;
+}
+
+.blog-entry-title {
+ font-size: 16pt;
+ font-weight: bold;
+ margin-bottom: 3px;
+ border-style: none;
+}
+
+.blog-entry-date {
+ margin-bottom: 10px;
+ margin-top: 5px;
+ border-style: none;
+ font-size: 10pt;
+ color: #333333;
+}
+
+.blog-entry-body {
+ margin-bottom: 45px;
+ border-style: none;
+}
+
+/*</group>*/
+
+/*<group=File Sharing>*/
+
+.filesharing-description {
+ margin-bottom: 20px;
+ border-bottom: 1px solid #d9d9d9;
+}
+
+.filesharing-item {
+
+}
+
+.filesharing-item-title {
+ font-size: 16pt;
+ font-weight: bold;
+}
+
+.filesharing-item-description {
+ margin-bottom: 10px;
+}
+
+/*</group>*/
+
+/*<group=Photo Album>*/
+
+/*<group=Index Page (Thumbnail view)>*/
+
+.album-title {
+ font-size: 16pt;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+.album-description {
+}
+
+.thumbnail-frame {
+ margin: 0px;
+ padding: 0px;
+}
+
+.thumbnail-frame a {
+}
+
+.thumbnail-frame a:hover {
+ height: 30px;
+}
+
+.thumbnail-frame img {
+ background: repeat url(images/sidebar_bg.png);
+}
+
+.thumbnail-caption {
+ color: #4c4c4c;
+ margin-top: -2px;
+ font-size: 10pt;
+}
+
+/*</group>*/
+
+/*<group=Single Page (Photo view)>*/
+
+.photo-background {
+ text-align: center;
+}
+
+.photo-navigation {
+ background: none;
+ display: none;
+}
+
+.photo-navigation a {
+ display: none;
+}
+
+.photo-navigation a:hover {
+ display: none;
+}
+
+.photo-frame{
+
+}
+
+.photo-links {
+ display: none;
+}
+
+.photo-title {
+ display: none;
+}
+
+.photo-caption {
+ font-size: 11pt;
+ margin: 0px;
+ text-align: center;
+}
+
+/*</group>*/
+
+/*</group>*/
+
+/*<group=Quicktime Page>*/
+
+.movie-title {
+ font-size: 16pt;
+ font-weight: bold;
+ text-align: left;
+}
+
+.movie-description {
+ text-align: center;
+}
+
+.movie-frame {
+ text-align: center;
+ margin-bottom: 10px;
+}
+
+/*</group>*/
+
View
690 static/theme/styles.css
@@ -0,0 +1,690 @@
+/*<group=General Styles>*/
+
+body {
+ color: #333333;
+ font: 0.75em/1.8em Helvetica, Arial, sans-serif;
+ margin: 0 20px 20px;
+ text-align: center;
+ background: repeat url(images/body_bg.png);
+ padding: 0;
+}
+
+p {
+}
+
+b, strong {
+
+}
+
+a:link, a:visited {
+}
+
+a:hover, a:active {
+
+}
+
+img {
+ border: none;
+}
+
+.image-left {
+ float: left;
+ margin: 3px 3px 3px 0;
+ padding: 3px 3px 3px 0;
+ position: relative;
+ z-index: 5;
+}
+
+.image-right {
+ float: right;
+ margin: 3px 0 3px 3px;
+ padding: 3px 0 3px 3px;
+ position: relative;
+ z-index: 5;
+}
+
+/*</group>*/
+
+/*<group=Layout>*/
+
+#container {
+ background: #ffffff repeat-y right url(images/sidebar_left.png); /* This Is The BG Color Of The Main Div */
+ margin: 0px auto; /* Right And Left Margin Widths To Auto */
+ text-align: left; /* Hack To Keep IE5 Windows Happy */
+ border-right: 1px solid #a0a9a7;
+ border-left: 1px solid #a0a9a7;
+ border-bottom: 1px solid #a0a9a7;
+ position: relative;
+}
+
+.clearer {
+ clear: both;
+}
+
+#pageHeader {
+ background: #6b7b91;
+ border-bottom: 2px solid #818fa1;
+ padding: 10px 10px;
+ position: relative;
+ margin-top: -1px;
+ margin-bottom: -1px;
+ z-index: 0;
+}
+
+#pageHeader img {
+ position: absolute;
+ left: 10;
+ top: 0;
+}
+
+#pageHeader h1 {
+ color: #ffffff;
+ font-size: 2.5em;
+ letter-spacing: 1px;
+ margin: 0 0 5px;
+}
+
+#pageHeader h2 {
+ color: #b5bdc8;
+ font-size: 0.9em;
+ margin-top: 25px;
+ margin-bottom: 0px;
+ margin-left: 5px;
+ padding: 0px;
+}
+
+#contentContainer {
+ margin-right: 150px;
+ position: relative;
+ z-index: 99;
+}
+
+#contentContainer #content {
+ padding-top: 10px;
+ padding-right: 40px;
+ padding-left: 10px;
+}
+
+#sidebarContainer {
+ float: right;
+ width: 150px;
+}
+
+#sidebarContainer #sidebar {
+ padding: 10px;
+ color: #505050;
+}
+
+#sidebarContainer .sideHeader {
+ background: #d5dfd6;
+ color: #797f7a;
+ font-weight: bold;
+ height: 20px;
+ padding-left: 10px;
+}
+
+#footer {
+ border-top: 1px solid #eeeeee;
+ margin-top: 20px;
+ color: #909090;
+}
+
+#footer p {
+ margin: 0;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+#footer a:link, #footer a:visited {
+
+}
+
+#footer a:hover, #footer a:active {
+}
+
+/*</group>*/
+
+/*<group=Bread-crumb>*/
+
+#breadcrumbcontainer {
+ background: #97a8bc;
+ font-size: 0.9em;
+ color: #808ea0;
+ font-weight: bold;
+ height: 20px;
+ padding-left: 40px;
+ padding-right: 20px;
+ display: block;
+}
+
+#breadcrumbcontainer ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+#breadcrumbcontainer li {
+ display: inline;
+}
+
+#breadcrumbcontainer a {
+ color: #ffffff;
+}
+
+#breadcrumbcontainer a:hover {
+ color: #6a7a90;
+}
+
+/*</group>*/
+
+/*<group=Toolbar>*/
+
+/* Toolbar Styles */
+#navcontainer {
+ background: repeat-x url(images/toolbar_bg.png);
+ height: 34px;
+ position: relative;
+ z-index: 500;
+}
+
+#navcontainer #current {
+ text-shadow: 0px 1px 1px #666666;
+}
+
+#navcontainer .currentAncestor {
+ text-shadow: 0px 1px 1px #666666;
+}
+/* Parent - Level 0 */
+
+#navcontainer ul {
+ padding: 0;
+ list-style: none;
+ margin: 0px;
+}
+
+#navcontainer li {
+ position: relative;
+ width: 120px;
+ display: inline;
+ float: left;
+}
+
+#navcontainer a {
+ display: block;
+ padding-top: 7px;
+ color: #ffffff;
+ text-shadow: 1px 1px 2px #333333;
+ text-decoration: none;
+ width: 120px;
+ text-align: center;
+ height: 27px;
+}
+
+#navcontainer a:hover {
+ color: #ffffff;
+ text-shadow: 0px 1px 1px #666666;
+ text-decoration: none;
+}
+
+/* Fix IE. Hide from IE Mac \*/
+* html #navcontainer ul li { float: left; height: 1%; }
+* html #navcontainer ul li a { height: 27px; }
+/* End */
+
+/* Child - Level 1 */
+
+#navcontainer ul ul {
+ position: absolute;
+ left: 0;
+ top: 32px;
+ display: none;
+ z-index: 100;
+}
+
+#navcontainer ul ul a {
+ height: 20px;
+ padding-top: 7px;
+ text-shadow: 2px 2px 2px #999999;
+ background: url(images/sub_button.png) repeat;
+ text-align: left;
+ text-indent: 20px;
+}
+
+#navcontainer ul ul a:hover {
+ background: repeat url(images/sub_button_over.png);
+}
+
+
+html>body #navcontainer ul ul a {
+ background: repeat url(images/sub_button_trans.png);
+ height: 23px;
+}
+
+html>body #navcontainer ul ul a:hover {
+ background: repeat url(images/sub_button_over_trans.png);
+}
+
+#navcontainer ul ul #current{
+ background: repeat url(images/sub_button_over.png);
+}
+
+html>body #navcontainer ul ul #current{
+ background: repeat url(images/sub_button_over_trans.png);
+}
+
+/* Child Level 3 */
+
+#navcontainer ul ul ul {
+ position: absolute;
+ left: 120px;
+ top: 0;
+}
+
+#navcontainer ul ul ul ul li {
+}
+
+#navcontainer ul ul ul ul a{
+}
+
+#navcontainer ul ul ul ul a:hover{
+
+}
+
+div#navcontainer ul ul, div#navcontainer ul ul ul, div#navcontainer ul li:hover ul ul, div#navcontainer ul li:hover ul ul ul, div#navcontainer ul li:hover ul ul ul ul, div#navcontainer ul li:hover ul ul ul ul ul{
+display:none;
+}
+
+div#navcontainer ul li:hover ul, div#navcontainer ul ul li:hover ul, div#navcontainer ul ul ul li:hover ul, div#navcontainer ul ul ul ul li:hover ul, div#navcontainer ul ul ul ul ul li:hover ul{
+display:block;
+}
+/*</group>*/
+
+/*<group=Global Classes>*/
+
+blockquote, .standout {
+ color: #96a7bb;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #eeeeee;
+}
+
+h1 {
+}
+
+h2 {
+}
+
+h3 {
+}
+
+h4 {
+}
+
+.imageStyle {
+
+}
+
+/* Main content area unordered list styles */
+#contentContainer #content ul {
+}
+
+#contentContainer #content li {
+}
+
+/* Sidebar area unordered list styles */
+#sidebarContainer #sidebar ul {
+ margin: 0px;
+ padding: 0 10px;
+ list-style: none;
+}
+
+#sidebarContainer #sidebar li {
+}
+
+/* Table Styles */
+table {
+ font-size: 1em;
+}
+
+/*</group>*/
+
+/*<group=Blog>*/
+
+/*<group=Archive Page>*/
+
+.blog-archive-background {
+}
+
+.blog-entry-summary {
+ margin-bottom: 10px;
+}
+
+.blog-archive-headings-wrapper {
+ margin-bottom: 30px;
+ border-bottom: 1px solid #eeeeee;
+ padding-bottom: 15px;
+}
+
+.blog-archive-entries-wrapper {
+
+}
+
+.blog-archive-entries-wrapper .blog-entry {
+
+}
+
+.blog-archive-month {
+ font-size: 1.9em;
+ letter-spacing: 1px;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+.blog-archive-link {
+
+}
+
+.blog-archive-link a:link, .blog-archive-link a:visited {
+}
+
+/*</group>*/
+
+.blog-entry {
+ margin-bottom: 30px;
+ border-bottom: 1px solid #eeeeee;
+ padding-bottom: 15px;
+}
+
+.blog-entry-title {
+ font-size: 1.9em;
+ letter-spacing: 1px;
+ font-weight: bold;
+ margin-bottom: 3px;
+}
+
+.blog-entry-date {
+ color: #b3b3b3;
+ margin-bottom: 10px;
+}
+
+.blog-read-more {
+ display: block;
+ padding-top: 10px;
+ font-style: italic;
+}
+
+.blog-entry-body {
+}
+
+.blog-entry-comments {
+ padding-top: 10px;
+}
+
+/*styles the category link in the main entry */
+.blog-entry-category {
+ color: #6a7a90;
+}
+
+.blog-entry-category a:link, .blog-entry-category a:visited {
+}
+
+/*styles the permalink link in the main entry */
+.blog-entry-permalink {
+ color: #6a7a90;
+}
+
+.blog-entry-permalink a:link, .blog-entry-permalink a:visited {
+}
+
+/* styles the archives in the blog sidebar */
+#blog-archives {
+ margin-bottom: 10px;
+}
+
+.blog-archive-link-enabled {
+}
+
+.blog-archive-link-disabled {
+}
+
+/* Styles the blog categories in the blog sidebar */
+#blog-categories {
+ margin-bottom: 10px;
+}
+
+.blog-category-link-enabled {
+}
+
+.blog-category-link-disabled {
+}
+
+/* Styles the blog RSS feeds in the blog sidebar */
+#blog-rss-feeds {
+ margin-bottom: 10px;
+}
+
+.blog-rss-link {
+}
+
+.blog-comments-rss-link {
+}
+
+/*</group>*/
+
+/*<group=File Sharing>*/
+
+.filesharing-description {
+}
+
+.filesharing-item {
+ background: #f5f5f5;
+ margin-bottom: 10px;
+ padding: 5px;
+}
+
+.filesharing-item-title a:link {
+}
+
+.filesharing-item-title a:hover {
+}
+
+.filesharing-item-title a:visited {
+
+}