From d8b796acb9275e74324c3ea04324314ecbe1b664 Mon Sep 17 00:00:00 2001 From: Brandon Mathis Date: Tue, 7 Jun 2011 10:45:01 -0400 Subject: Another massive commit: 1. Major improvements to the responsive styling. 2. Toggleable sidebar 3. Upgraded to modernizr 2.0 which includes Respond.js 4. IE7-9 testing and fixes 5. New theming system which should make forkers happy 6. New rake task for installing Octopress themes 7. Magic --- .gitignore | 10 +- Rakefile | 73 +- _config.yml | 36 +- sass/screen.scss | 17 - sass/themes/classic/_partials.scss | 12 - sass/themes/classic/_style.scss | 4 - sass/themes/classic/core/_layout.scss | 94 -- sass/themes/classic/core/_theme.scss | 44 - sass/themes/classic/core/_typography.scss | 155 -- sass/themes/classic/media/_480.scss | 16 - sass/themes/classic/media/_768.scss | 16 - sass/themes/classic/media/_992.scss | 3 - sass/themes/classic/partials/_blog.scss | 20 - sass/themes/classic/partials/_footer.scss | 11 - sass/themes/classic/partials/_header.scss | 13 - sass/themes/classic/partials/_navigation.scss | 67 - sass/themes/classic/partials/_page.scss | 8 - sass/themes/classic/partials/_pinboard.scss | 15 - sass/themes/classic/partials/_search.scss | 0 sass/themes/classic/partials/_sidebar.scss | 54 - sass/themes/classic/partials/_syntax.scss | 167 --- sass/themes/classic/partials/_twitter.scss | 49 - source | 1 + source/_includes/article.html | 30 - source/_includes/delicious.html | 3 - source/_includes/disqus_thread.html | 7 - source/_includes/footer.html | 11 - source/_includes/google_analytics.html | 12 - source/_includes/head.html | 40 - source/_includes/header.html | 1 - source/_includes/navigation.html | 11 - source/_includes/pinboard.html | 3 - source/_includes/sidebar.html | 26 - source/_includes/twitter.html | 13 - source/_layouts/archive_monthly.html | 19 - source/_layouts/archive_yearly.html | 25 - source/_layouts/default.html | 23 - source/_layouts/page.html | 13 - source/_layouts/post.html | 11 - source/_posts/2009-11-13-hello-world.markdown | 16 - source/_posts/2011-03-14-test-post.markdown | 6 - .../_posts/2011-04-07-test-of-typography.markdown | 50 - source/about.haml | 14 - source/archive.html | 24 - source/atom.xml | 28 - source/fonts/adellebasic_bold-webfont.eot | Bin 13694 -> 0 bytes source/fonts/adellebasic_bold-webfont.svg | 139 -- source/fonts/adellebasic_bold-webfont.ttf | Bin 24072 -> 0 bytes source/fonts/adellebasic_bold-webfont.woff | Bin 15604 -> 0 bytes source/images/code_bg.png | Bin 239 -> 0 bytes source/images/rss.png | Bin 504 -> 0 bytes source/images/search.png | Bin 333 -> 0 bytes source/index.html | 11 - source/javascripts/libs/ender.js | 1497 ------------------- source/javascripts/libs/ender.min.js | 8 - .../libs/ie/DOMAssistantComplete-2.8.js | 1529 -------------------- source/javascripts/libs/ie/respond.js | 292 ---- source/javascripts/libs/ie/selectivizr-1.0.1.js | 5 - .../libs/ios-viewport-scaling-bug-fix.js | 20 - source/javascripts/libs/jXHR.js | 85 -- source/javascripts/libs/json2.js | 481 ------ source/javascripts/libs/modernizr-1.7.js | 964 ------------ source/javascripts/octopress.js | 0 source/javascripts/pinboard.js | 48 - source/javascripts/syntax-helper.js | 30 - source/javascripts/twitter.js | 64 - source/test/syntax.html | 397 ----- source/test/typography.haml | 117 -- 68 files changed, 68 insertions(+), 6890 deletions(-) delete mode 100644 sass/screen.scss delete mode 100644 sass/themes/classic/_partials.scss delete mode 100644 sass/themes/classic/_style.scss delete mode 100644 sass/themes/classic/core/_layout.scss delete mode 100644 sass/themes/classic/core/_theme.scss delete mode 100644 sass/themes/classic/core/_typography.scss delete mode 100644 sass/themes/classic/media/_480.scss delete mode 100644 sass/themes/classic/media/_768.scss delete mode 100644 sass/themes/classic/media/_992.scss delete mode 100644 sass/themes/classic/partials/_blog.scss delete mode 100644 sass/themes/classic/partials/_footer.scss delete mode 100644 sass/themes/classic/partials/_header.scss delete mode 100644 sass/themes/classic/partials/_navigation.scss delete mode 100644 sass/themes/classic/partials/_page.scss delete mode 100644 sass/themes/classic/partials/_pinboard.scss delete mode 100644 sass/themes/classic/partials/_search.scss delete mode 100644 sass/themes/classic/partials/_sidebar.scss delete mode 100644 sass/themes/classic/partials/_syntax.scss delete mode 100644 sass/themes/classic/partials/_twitter.scss create mode 120000 source delete mode 100644 source/_includes/article.html delete mode 100644 source/_includes/delicious.html delete mode 100644 source/_includes/disqus_thread.html delete mode 100644 source/_includes/footer.html delete mode 100644 source/_includes/google_analytics.html delete mode 100644 source/_includes/head.html delete mode 100644 source/_includes/header.html delete mode 100644 source/_includes/navigation.html delete mode 100644 source/_includes/pinboard.html delete mode 100644 source/_includes/sidebar.html delete mode 100644 source/_includes/twitter.html delete mode 100644 source/_layouts/archive_monthly.html delete mode 100644 source/_layouts/archive_yearly.html delete mode 100644 source/_layouts/default.html delete mode 100644 source/_layouts/page.html delete mode 100644 source/_layouts/post.html delete mode 100644 source/_posts/2009-11-13-hello-world.markdown delete mode 100644 source/_posts/2011-03-14-test-post.markdown delete mode 100644 source/_posts/2011-04-07-test-of-typography.markdown delete mode 100644 source/about.haml delete mode 100644 source/archive.html delete mode 100644 source/atom.xml delete mode 100755 source/fonts/adellebasic_bold-webfont.eot delete mode 100755 source/fonts/adellebasic_bold-webfont.svg delete mode 100755 source/fonts/adellebasic_bold-webfont.ttf delete mode 100755 source/fonts/adellebasic_bold-webfont.woff delete mode 100644 source/images/code_bg.png delete mode 100644 source/images/rss.png delete mode 100644 source/images/search.png delete mode 100644 source/index.html delete mode 100644 source/javascripts/libs/ender.js delete mode 100644 source/javascripts/libs/ender.min.js delete mode 100644 source/javascripts/libs/ie/DOMAssistantComplete-2.8.js delete mode 100644 source/javascripts/libs/ie/respond.js delete mode 100644 source/javascripts/libs/ie/selectivizr-1.0.1.js delete mode 100644 source/javascripts/libs/ios-viewport-scaling-bug-fix.js delete mode 100644 source/javascripts/libs/jXHR.js delete mode 100644 source/javascripts/libs/json2.js delete mode 100644 source/javascripts/libs/modernizr-1.7.js delete mode 100644 source/javascripts/octopress.js delete mode 100644 source/javascripts/pinboard.js delete mode 100644 source/javascripts/syntax-helper.js delete mode 100644 source/javascripts/twitter.js delete mode 100644 source/test/syntax.html delete mode 100644 source/test/typography.haml diff --git a/.gitignore b/.gitignore index 234b7908..ede4f232 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,12 @@ -site .bundle .DS_Store .sass-cache +.gist_cache +_cache +source +sass +public source/_stash -source/stylesheets source/javascripts/libs/node_modules source/javascripts/libs/syntax-highlighter vendor/ruby -_cache -.gist_cache -public diff --git a/Rakefile b/Rakefile index caec0ce8..85d7be88 100644 --- a/Rakefile +++ b/Rakefile @@ -29,18 +29,40 @@ def ok_failed(condition) end end +desc "Initial setup for Octopress: copies the default theme into the path of Jekyll's generator. rake install defaults to rake install[classic] to install a different theme run rake install[some_theme_name]" +task :install, :theme do |t, args| + # copy theme into working Jekyll directories + theme = args.theme || 'classic' + puts "## Copying "+theme+" theme to Jekyll paths" + system "cp -R themes/"+theme+"/source source" + system "cp -R themes/"+theme+"/sass sass" + system "cp -R themes/"+theme+"/_plugins/ _plugins/" + + # The directories source and sass are ignored for development, but when Octopress is installed + # Users must be able to commit these directories, so this removes those lines from the gitignore + puts "## Cleaning up..." + new_content = "" + File.read('.gitignore').each_line do |e| + new_content << e unless e.strip == 'source' || e.strip == 'sass' + end + File.open('.gitignore', 'w') do |io| + io << new_content + end +end + ## if you're deploying with github, change the default deploy to push_github desc "default push task" task :push => [:push_rsync] do end desc "Generate and deploy task" -task :deploy => [:integrate, :generate, :clean_debug, :push] do +task :deploy => [:integrate, :generate, :push] do end -desc "generate website in output directory" -task :generate => [:generate_site, :generate_style] do - puts ">>> Site Generating Complete! <<<\n\n>>> Refresh your browser <<<" +desc "Generate jekyll site" +task :generate do + puts "## Generating Site with Jekyll" + system "jekyll" end # usage rake post[my-new-post] or rake post['my new post'] or rake post (defaults to "new-post") @@ -78,29 +100,6 @@ task :list do puts "(type rake -T for more detail)\n\n" end -desc "remove files in output directory" -task :clean do - puts ">>> Removing output <<<" - Dir["#{site}/*"].each { |f| rm_rf(f) } -end - -task :clean_debug do - puts ">>> Removing debug pages <<<" - Dir["#{site}/test"].each { |f| rm_rf(f) } -end - -desc "Generate styles only" -task :generate_style do - puts ">>> Generating styles <<<" - system "compass compile" -end - -desc "Generate site files only" -task :generate_site => [:clean, :generate_style] do - puts "\n\n>>> Generating site files <<<" - system "jekyll" -end - desc "Watch the site and regenerate when it changes" task :watch do system "trap 'kill $jekyllPid $guardPid $compassPid' Exit; jekyll --auto & jekyllPid=$!; compass watch & compassPid=$!; guard & guardPid=$!; wait" @@ -108,35 +107,35 @@ end desc "generate and deploy website via rsync" multitask :push_rsync do - puts ">>> Deploying website via Rsync <<<" + puts "## Deploying website via Rsync" ok_failed system("rsync -avz --delete #{site}/ #{ssh_user}:#{document_root}") end desc "deploy website to github user pages" multitask :push_github do - puts ">>> Deploying #{deploy_branch} branch to Github Pages <<<" + puts "## Deploying #{deploy_branch} branch to Github Pages " require 'git' repo = Git.open('.') - puts "\n>>> Checking out #{deploy_branch} branch <<<\n" + puts "\n## Checking out #{deploy_branch} branch \n" repo.branch("#{deploy_branch}").checkout (Dir["*"] - ["#{site}"]).each { |f| rm_rf(f) } Dir["#{site}/*"].each {|f| mv(f, ".")} rm_rf("#{site}") - puts "\n>>> Moving generated /#{site} files <<<\n" + puts "\n## Moving generated /#{site} files \n" Dir["**/*"].each {|f| repo.add(f) } repo.status.deleted.each {|f, s| repo.remove(f)} - puts "\n>>> Commiting: Site updated at #{Time.now.utc} <<<\n" + puts "\n## Commiting: Site updated at #{Time.now.utc} \n" message = ENV["MESSAGE"] || "Site updated at #{Time.now.utc}" repo.commit(message) - puts "\n>>> Pushing generated /#{site} files to #{deploy_branch} branch <<<\n" + puts "\n## Pushing generated /#{site} files to #{deploy_branch} branch\n" repo.push - puts "\n>>> Github Pages deploy complete <<<\n" + puts "\n## Github Pages deploy complete\n" repo.branch("#{source_branch}").checkout end desc "start up a web server on the output files" task :start_server => :stop_server do - print "Starting serve..." + print "## Starting serve..." system("serve #{site} #{port} > /dev/null 2>&1 &") sleep 1 pid = `ps auxw | awk '/bin\\/serve #{site} #{port}/ { print $2 }'`.strip @@ -148,9 +147,9 @@ desc "stop the web server" task :stop_server do pid = `ps auxw | awk '/bin\\/serve #{site} #{port}/ { print $2 }'`.strip if pid.empty? - puts "Adsf is not running" + puts "## Adsf is not running" else - print "Stoping adsf..." + print "## Stoping adsf..." ok_failed system("kill -9 #{pid}") end end diff --git a/_config.yml b/_config.yml index 81c3eb86..51cdc56c 100644 --- a/_config.yml +++ b/_config.yml @@ -1,25 +1,41 @@ +# Required configuration source: source destination: public -markdown: rdiscount -pygments: true url: http://yoursite.com title: My Octopress Blog author: Your Name -email: you@domain.com #Add your email (optional) for the atom feed +subscribe_rss: /atom.xml +subscribe_email: http://feedburner.com/asdfasdf + +markdown: rdiscount +pygments: true +recent_posts: 1 simple_search: http://google.com/search -recent_posts: 20 +# Optional configurations -twitter_user: imathis -tweet_count: 3 -show_replies: false +# For RSS +email: +# Twitter +#twitter_user: imathis +twitter_tweet_count: 4 +twitter_show_replies: false +twitter_follow_button: true +twitter_show_follower_count: false +twitter_tweet_button: true + +# Pinboard +#pinboard_user: imathis +pinboard_count: 3 + +# Delicious delicious_user: delicious_count: 3 -pinboard_user: imathis -pinboard_count: 3 +# Disqus Comments +disqus_short_name: -#disqus_short_name: designenthusiast +# Google Analytics google_analytics_tracking_id: diff --git a/sass/screen.scss b/sass/screen.scss deleted file mode 100644 index c090c3b5..00000000 --- a/sass/screen.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import "compass"; - - -@include global-reset; - -@include reset-html5; - -/* SASS mixins */ -//@import "library/typography"; - -/* primary SASS */ -//@import "theme"; -//@import "typography"; -@import "themes/classic/style"; - -/* specific SASS */ -//@import "partials"; diff --git a/sass/themes/classic/_partials.scss b/sass/themes/classic/_partials.scss deleted file mode 100644 index 4ca98c0f..00000000 --- a/sass/themes/classic/_partials.scss +++ /dev/null @@ -1,12 +0,0 @@ -//@import "partials/shared"; -//@import "partials/search"; - -/* layout partials */ -@import "partials/header"; -@import "partials/navigation"; -@import "partials/page"; -@import "partials/sidebar"; -@import "partials/blog"; -@import "partials/footer"; - -@import "partials/syntax"; diff --git a/sass/themes/classic/_style.scss b/sass/themes/classic/_style.scss deleted file mode 100644 index 70421360..00000000 --- a/sass/themes/classic/_style.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import "core/theme"; -@import "core/layout"; -@import "core/typography"; -@import "partials"; diff --git a/sass/themes/classic/core/_layout.scss b/sass/themes/classic/core/_layout.scss deleted file mode 100644 index 3c9bbc45..00000000 --- a/sass/themes/classic/core/_layout.scss +++ /dev/null @@ -1,94 +0,0 @@ -a { - color: $link_color; - &:hover, &:focus { - color: saturate(darken($link_color, 15), 20); } - &:visited { - color: darken(adjust_hue($link_color, 70), 10); - } -} - -$min-width: 320px; -$max-width: 1440px; -$default-border-radius: 4px; - -.group { @include pie-clearfix; } -.core-layout { > div { @extend .inner-wrap; } } - -body { - > header, > nav, > footer { - @extend .core-layout; - min-width: $min-width; - } -} - - -@mixin media-layout($page-pad, $sidebar-width, $sidebar-pad) { - $side-nav: $sidebar-width - $page-pad - $sidebar-pad; - - .inner-wrap { - padding: 0 $page-pad; - position: relative; - margin: 0 auto; - max-width: $max-width; - @extend .group; - } - - body > nav + div { - @extend .group; - padding: 0; - max-width: $max-width + $page-pad*2; - margin: 0 auto; - > div { - @extend .group; - margin-right: $sidebar-width; - } - } - body > nav > div > div { width: $side-nav; - .search { width: $side-nav - 70px; } - } - - #articles { - float: left; - width: 100%; - padding-top: 25px; - padding-bottom: 25px; - > * { - padding-right: $page-pad; - padding-left: $page-pad; - } - > article { - margin-bottom: 1.5em; - padding-bottom: 1.5em; - padding-right: $page-pad; - padding-left: $page-pad; - } - + aside { - display: block; - float: left; - width: $sidebar-width - $sidebar-pad*2; - margin: 0 -100% 0 0; - padding: 0 $sidebar-pad $sidebar-pad; - } - } -} - -@media only screen and (min-width: 320px) { - @import "../media/480"; -} - -@media only screen and (min-width: 768px) { - @include media-layout(15px, 240px, 15px); - @import "../media/768"; -} - -@media only screen and (min-width: 992px) { - @include media-layout(40px, 320px, 30px); - @import "../media/992"; -} - - -//*{ - //transition: width .5s; - //-moz-transition: width .5s; - //-webkit-transition: margin .5s; -//} diff --git a/sass/themes/classic/core/_theme.scss b/sass/themes/classic/core/_theme.scss deleted file mode 100644 index b9e67a27..00000000 --- a/sass/themes/classic/core/_theme.scss +++ /dev/null @@ -1,44 +0,0 @@ -// Link Colors -$link-color: lighten(#165b94, 3); -$link-color-hover: darken(#165b94, 5); - -// Main Section Colors -$body-color: #333333; -$light-text: #999999; -$body-bg: #323232; - -$header-bg: #323232; -$header-border: #181818; -$title-color: #dddddd; - -$nav-color: #555555; -$nav-color_hover: black; -$nav-bg: #e8e8e8; -$nav-border_top: white; -$nav-border_bottom: #aaaaaa; -$nav-border_left: #cccccc; -$nav-border_right: white; - -$sidebar-bg: #f2f2f2; -$sidebar-border: #d5d5d5; - -// Blog -$article-border: #eeeeee; -$main-bg: #fff; - -$footer-color: #999999; -$footer-bg: #444444; - -// Form Colors -$fieldset-bg: #ececec; -$fieldset-border: #c3c3c3; - -$textinput-color: #333333; -$textinput-bg: #f4f4f4; -$textinput-bg-focus: #fefeee; - -$textinput-border-top: #aaaaaa; -$textinput-border-bottom: #c6c6c6; -$textinput-border-left: #c3c3c3; -$textinput-border-right: #c3c3c3; -$textinput-border-focus: #989898; diff --git a/sass/themes/classic/core/_typography.scss b/sass/themes/classic/core/_typography.scss deleted file mode 100644 index 61693c7f..00000000 --- a/sass/themes/classic/core/_typography.scss +++ /dev/null @@ -1,155 +0,0 @@ -$type-border: #ddd; -$type-color-light: #555; -$type-color: #000; -$blockquote: $type-border !default; //darken($type-border, 20) !default; -$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace; - -// Fonts -@include font-face("Adelle", font-files("adellebasic_bold-webfont.woff", woff, "adellebasic_bold-webfont.ttf", truetype, "adellebasic_bold-webfont.svg#webfontKykxqSyz", svg), $eot: "adellebasic_bold-webfont.eot" ); -.heading { font-family: Adelle, "Helvetica Neue", Arial, sans-serif; } -.sans { font-family: "Helvetica Neue", Arial, sans-serif; } -.mono { font-family: $mono; } - -body > header h1 { - font-size: 3em; - @extend .heading; - line-height: 1.2em; - margin-bottom: 0.6667em; -} - - -body { - font-size: 1em; - line-height: 1.5em; - color: $type-color; - font-family: Georgia, Times, serif; -} - -article { - &:last-child { border-bottom: none; } - h2 { - padding-top: 0.8em; - border-top: 3px double $type-border; - } - .byline + time:before, .byline + time +time:before { - content: "\2022 "; - padding: 0 .3em 0 .2em; - display: inline-block; - @include opacity(.5); - } - time span { - font-size: .7em; - line-height: 0; - position: relative; - top: -.4em; - } - header { - p { - padding: 0 0 1.5em; - font-size: .8em; - color: $type-color-light; - font-family: Palatino, Times, "Times New Roman"; - margin-top: -1.4em; - } - } -} - -#{headings()}{ - @extend .heading; font-weight: normal; - line-height: 1em; - text-rendering: optimizelegibility; -} -h1 { - font-size: 2.6em; - margin-bottom: 0.6667em; -} -h2, section h1 { - font-size: 1.8em; - margin-bottom: 0.6667em; -} -h3, section h2, section section h1 { - font-size: 1.6em; - margin-bottom: 0.875em; -} -h4, section h3, section section h2, section section section h1 { - font-size: 1.3em; - margin-bottom: 0.875em; -} -h5, section h4, section section h3 { - font-size: 1.1em; - margin-bottom: 0.75em; -} -h6, section h5, section section h4, section section section h3 { - font-size: 1em; - margin-bottom: 0.5em; -} -p, blockquote, ul, ol { margin-bottom: 1.5em; } - -ul{ list-style-type: disc; } - -ol{ list-style-type: decimal; ol { list-style-type: lower-alpha; } } -ul ul, ol ol { margin-left: 1.75em; } - -li { margin-bottom: .5em; } - -strong { font-weight: bold; } - -em { font-style: italic; } - -sup, sub { font-size: 0.8em; position: relative; display: inline-block; } -sup { top: -.5em; } -sub { bottom: -.5em; } - -q { font-style: italic; - &:before { content: "\201C"; } - &:after { content: "\201D"; } -} - -em, dfn { font-style: italic; } - -strong, dfn { font-weight: bold; } - -del, s { text-decoration: line-through; } - -abbr, acronym { border-bottom: 1px dotted; cursor: help; } - -pre, code, tt { @extend .mono-font; } - -sub, sup { line-height: 0; } - -hr { margin-bottom: 0.2em; } - -small { font-size: .8em; } - -big { font-size: 1.2em; } - -blockquote { - $bq-margin: 2em; - font-style: italic; - position: relative; - margin-left: $bq-margin; - > p { - &:first-child:before { - content: "\201C"; - position: absolute; - top: 0.1em; - left: -.7em; - font-size: 3em; - color: $blockquote; - } - &:last-child:after { - content: "\201D"; - position: relative; - top: 0.3em; - line-height: 0; - font-size: 2em; - color: $blockquote; - } - } - + p > cite { - margin-left: $bq-margin; - text-align: right; - &:before { content: '– '; color: $type-color-light; } - a { font-style: italic; } - } -} diff --git a/sass/themes/classic/media/_480.scss b/sass/themes/classic/media/_480.scss deleted file mode 100644 index e6f0613a..00000000 --- a/sass/themes/classic/media/_480.scss +++ /dev/null @@ -1,16 +0,0 @@ -body { - > header, > nav, > footer { - > div { - padding-left: .5em; - padding-right: .5em; - } - } - > header { font-size: .7em; padding: .5em 0; } -} -#articles { font-size: .9em; line-height: 1.5em; - > article { padding: .5em; } - + aside { display: none; } -} -body > nav > div > div { width: 180px; - .search { width: 110px; } -} diff --git a/sass/themes/classic/media/_768.scss b/sass/themes/classic/media/_768.scss deleted file mode 100644 index d8c61d57..00000000 --- a/sass/themes/classic/media/_768.scss +++ /dev/null @@ -1,16 +0,0 @@ -body > header, body #articles { - font-size: .95em; -} - -//body { - //> header, > nav, > footer { - //> div { padding: 0 15px; } - //} -//} -//#page > div { - //margin-right: 0; - //#main { float: none; } - //> aside { margin: 0; float: none; } -//} -//page > div > aside { float: none; } -//#main > * { padding-left: 15px; padding-right: 15px; } diff --git a/sass/themes/classic/media/_992.scss b/sass/themes/classic/media/_992.scss deleted file mode 100644 index f7c643b6..00000000 --- a/sass/themes/classic/media/_992.scss +++ /dev/null @@ -1,3 +0,0 @@ -body > header, body #articles { - font-size: 1.05em; -} diff --git a/sass/themes/classic/partials/_blog.scss b/sass/themes/classic/partials/_blog.scss deleted file mode 100644 index 1dd255dd..00000000 --- a/sass/themes/classic/partials/_blog.scss +++ /dev/null @@ -1,20 +0,0 @@ -article { - .title { - text-decoration: none; - &:hover { - text-decoration: underline; } } - .entry { - border-bottom: 1px solid $article-border; - &:first-child { - padding-top: 0; } } - #disqus_thread { } - .meta { - border-bottom: 1px dashed #dddddd; - text-transform: uppercase; - color: #777777; - padding: 8px 0 5px; - margin-bottom: 1.5em; - font-size: 75%; - letter-spacing: 1px; } - .footer { - padding-top: 15px; } } diff --git a/sass/themes/classic/partials/_footer.scss b/sass/themes/classic/partials/_footer.scss deleted file mode 100644 index 08e6138c..00000000 --- a/sass/themes/classic/partials/_footer.scss +++ /dev/null @@ -1,11 +0,0 @@ -footer { - @include background(linear-gradient(darken($body-bg, 5), $body-bg)); - //color: $footer-color; - //border-top: 10px solid $footer-bg; - padding: 15px 0; - position: relative; - z-index: 2; - a { - color: #dddddd; - &:hover { - color: white; } } } diff --git a/sass/themes/classic/partials/_header.scss b/sass/themes/classic/partials/_header.scss deleted file mode 100644 index ba7993a8..00000000 --- a/sass/themes/classic/partials/_header.scss +++ /dev/null @@ -1,13 +0,0 @@ -body > header { - background-color: $header_bg; - border-bottom: 1px solid $header_border; - h1 { - display: inline-block; - margin: 0; - a, a:visited { - font-weight: normal; - color: $title_color; - text-decoration: none; - } - } -} diff --git a/sass/themes/classic/partials/_navigation.scss b/sass/themes/classic/partials/_navigation.scss deleted file mode 100644 index 30685034..00000000 --- a/sass/themes/classic/partials/_navigation.scss +++ /dev/null @@ -1,67 +0,0 @@ -body > nav { - > div > div { - float: right; - position: relative; - padding: .45em 0 0 0; - a { - float: right; - @include replace-text-with-dimensions('rss.png'); - } - form { - margin: 0; padding: 0; - @include background-clip(padding-box); - input[type='text']{ - margin: 0; - @include border-radius(1em); - float: left; - border: 1px solid #ccc; - color: #888; - background: image-url('search.png') no-repeat .5em .4em #f6f6f6; - padding: .4em .8em .1em 1.8em; - line-height: 1.35em; - font-size: .85em; - &:focus { - color: #444; - border-color: #80b1df; - @include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset); - background-color: #fff; - outline: none; - } - } - } - } - @extend .group; - position: relative; - z-index: 1; - background-color: $nav-bg; - @include background-image(linear-gradient(#fcfcfc, #f4f4f4 0.3, #dddddd)); - border: { - top: 1px solid $nav-border-top; - bottom: 1px solid $nav-border-bottom; }; - ul { - position: relative; - @include horizontal-list; - margin: 0 auto; - padding: .5em 0; - } - ul li { - padding: 0 1em; - margin: 0; - border-left: 1px solid $nav-border-left; - border-right: 1px solid $nav-border-right; - &:first-child { - border-left: none; - padding-left: 0; } - &:last-child { - border-right: 0; } - a { - display: inline-block; - color: $nav-color; - line-height: 150%; - text-decoration: none; - &:hover { - color: $nav-color-hover; - } - } - } -} diff --git a/sass/themes/classic/partials/_page.scss b/sass/themes/classic/partials/_page.scss deleted file mode 100644 index 414a37e9..00000000 --- a/sass/themes/classic/partials/_page.scss +++ /dev/null @@ -1,8 +0,0 @@ -body { - background-color: $sidebar_bg; -} - -body > div > div { - background-color: $main_bg; border-right: 1px solid $sidebar_border; - //@include box-shadow(rgba(#000, .1) 0 0 18px); -} diff --git a/sass/themes/classic/partials/_pinboard.scss b/sass/themes/classic/partials/_pinboard.scss deleted file mode 100644 index 60fd1ee6..00000000 --- a/sass/themes/classic/partials/_pinboard.scss +++ /dev/null @@ -1,15 +0,0 @@ -#pinboard_linkroll { - .pin-title, .pin-description { - display: block; - margin-bottom: .5em; - } - .pin-tag { - @extend .aside-alt-link; - &:after { - content: ','; - } - &:last-child:after { - content: ''; - } - } -} diff --git a/sass/themes/classic/partials/_search.scss b/sass/themes/classic/partials/_search.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/sass/themes/classic/partials/_sidebar.scss b/sass/themes/classic/partials/_sidebar.scss deleted file mode 100644 index ecad7a7a..00000000 --- a/sass/themes/classic/partials/_sidebar.scss +++ /dev/null @@ -1,54 +0,0 @@ -.side-shadow-border { - @include box-shadow(#fff 0 1px); -} -#articles + aside { - section { - @extend .sans; - font-size: .8em; - line-height: 1.5em; - margin-bottom: 1.5em; - h1 { - margin: 1.5em 0 0; - padding-bottom: .2em; - border-bottom: 1px solid #ddd; - @extend .side-shadow-border; - + p { - padding-top: .4em; - } - } - } - ul { - margin-bottom: 0.5em; - } - li { - list-style: none; - padding: .5em 0; - margin: 0; - border-bottom: 1px solid #ddd; - @extend .side-shadow-border; - p:last-child { - margin-bottom: 0; - } - } - a { - color: inherit; - @include transition(color, .5s); - } - &:hover a, &:hover #tweets a { color: $link-color; } - @import "twitter"; - @import "pinboard"; - #recent_posts { - time { - text-transform: uppercase; - font-size: .9em; - color: #666; - } - } -} -.aside-alt-link { - color: #999; - text-decoration: none; - &:hover { - color: #555; - } -} diff --git a/sass/themes/classic/partials/_syntax.scss b/sass/themes/classic/partials/_syntax.scss deleted file mode 100644 index 5797c28f..00000000 --- a/sass/themes/classic/partials/_syntax.scss +++ /dev/null @@ -1,167 +0,0 @@ -$base03: #002b36; //darkest blue -$base02: #073642; //dark blue -$base01: #586e75; //darkest gray -$base00: #657b83; //dark gray -$base0: #839496; //medium gray -$base1: #93a1a1; //medium light gray -$base2: #eee8d5; //cream -$base3: #fdf6e3; //white -$yellow: #b58900; -$orange: #cb4b16; -$red: #dc322f; -$magenta: #d33682; -$violet: #6c71c4; -$blue: #268bd2; -$cyan: #2aa198; -$green: #859900; - -// If you prefer light colors, uncomment the following block to change themes -//$base03: $base3; -//$base02: $base2; -//$base01: $base1; -//$base00: $base0; -//$base0: $base00; -//$base1: $base01; -//$base2: $base02; -//$base3: $base03; - -.gutter { - .line-numbers { - text-align: right; - background: $base02 !important; - border-right: 1px solid darken($base03, 2); - @include box-shadow(lighten($base02, 2) -1px 0 inset); - text-shadow: darken($base02, 10) 0 -1px; - span { color: $base01 !important; } - } -} -html .gist .gist-file { - margin-bottom: 1.5em; - border: none; - .gist-syntax { - border-bottom: 1px solid #515151 !important; - .gist-highlight{ - background: $base03 !important; - pre { - @extend .pre; - overflow-y: hidden; - overflow-x: auto; - } - } - } - .gist-meta { - @include background(linear-gradient(#b0b0b0, #a7a7a7)); - padding: 0.5em; - background-color: #bababa !important; - border: 1px solid #9c9c9c; - border-top: 1px solid #d0d0d0; - border-bottom: 1px solid #777777; - font-size: .7em !important; - font-family: "Helvetica Neue", Arial, sans-serif !important; - color: #464646 !important; - line-height: 1.4em; - } -} -pre { @extend .pre; } - -.pre { - @extend .mono; - font-size: .8em; - line-height: 1.45em; - padding: 1em 1.2em !important; - background: $base03 !important; - color: $base1 !important; - span { color: $base1 !important; } - span { font-style: normal !important; font-weight: normal !important; } - - .c { color: $base01 !important; font-style: italic !important; } /* Comment */ - .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ - .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ - .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ - .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ - .err { color: $red !important; background: none !important; } /* Error */ - .k { color: $orange !important; } /* Keyword */ - .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ - .p { color: $base1 !important; } /* Operator */ - .ow { color: $cyan !important; font-weight: bold !important; } /* Operator.Word */ - .gd { color: $base1 !important; background-color: mix($red, $base03, 25%) !important; display: block; } /* Generic.Deleted */ - .gd .x { color: $base1 !important; background-color: mix($red, $base03, 35%) !important; display: block; } /* Generic.Deleted.Specific */ - .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ - //.gr { color: #aa0000 } /* Generic.Error */ - .gh { color: $base01 !important; } /* Generic.Heading */ - .gi { color: $base1 !important; background-color: mix($green, $base03, 20%) !important; display: block; } /* Generic.Inserted */ - .gi .x { color: $base1 !important; background-color: mix($green, $base03, 40%) !important; display: block; } /* Generic.Inserted.Specific */ - //.go { color: #888888 } /* Generic.Output */ - //.gp { color: #555555 } /* Generic.Prompt */ - .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ - .gu { color: $violet !important; } /* Generic.Subheading */ - //.gt { color: #aa0000 } /* Generic.Traceback */ - .kc { color: $green !important; font-weight: bold !important; } /* Keyword.Constant */ - .kd { color: $blue !important; } /* Keyword.Declaration */ - .kp { color: $orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ - .kr { color: $magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ - .kt { color: $cyan !important; } /* Keyword.Type */ - .n { color: $blue !important; } - .na { color: $blue !important; } /* Name.Attribute */ - .nb { color: $green !important; } /* Name.Builtin */ - //.nc { color: #445588; font-weight: bold } /* Name.Class */ - .no { color: $yellow !important; } /* Name.Constant */ - //.ni { color: #800080 } /* Name.Entity */ - .ne { color: $blue !important; font-weight: bold !important; } /* Name.Exception */ - .nf { color: $blue !important; font-weight: bold !important; } /* Name.Function */ - .nn { color: $yellow !important; } /* Name.Namespace */ - .nt { color: $blue !important; font-weight: bold !important; } /* Name.Tag */ - .nx { color: $yellow !Important; } - //.bp { color: #999999 } /* Name.Builtin.Pseudo */ - //.vc { color: #008080 } /* Name.Variable.Class */ - .vg { color: $blue !important; } /* Name.Variable.Global */ - .vi { color: $blue !important; } /* Name.Variable.Instance */ - .nv { color: $blue !important; } /* Name.Variable */ - //.w { color: #bbbbbb } /* Text.Whitespace */ - .mf { color: $cyan !important; } /* Literal.Number.Float */ - .m { color: $cyan !important; } /* Literal.Number */ - .mh { color: $cyan !important; } /* Literal.Number.Hex */ - .mi { color: $cyan !important; } /* Literal.Number.Integer */ - //.mo { color: #009999 } /* Literal.Number.Oct */ - .s { color: $cyan !important; } /* Literal.String */ - //.sb { color: #d14 } /* Literal.String.Backtick */ - //.sc { color: #d14 } /* Literal.String.Char */ - .sd { color: $cyan !important; } /* Literal.String.Doc */ - .s2 { color: $cyan !important; } /* Literal.String.Double */ - .se { color: $red !important; } /* Literal.String.Escape */ - //.sh { color: #d14 } /* Literal.String.Heredoc */ - .si { color: $blue !important; } /* Literal.String.Interpol */ - //.sx { color: #d14 } /* Literal.String.Other */ - .sr { color: $cyan !important; } /* Literal.String.Regex */ - .s1 { color: $cyan !important; } /* Literal.String.Single */ - //.ss { color: #990073 } /* Literal.String.Symbol */ - //.il { color: #009999 } /* Literal.Number.Integer.Long */ -} - -.highlight { - margin-bottom: 1.5em; - overflow-y: hidden; - .gutter pre { - padding-left: .8em !important; - padding-right: .8em !important; - } -} - -h3.filename { - font-size: 13px; - line-height: 2em; - text-align: center; - text-shadow: #cbcccc 0 1px 0; - color: #474747; - font-style: normal; - margin-bottom: 0; - - @include border-top-radius(5px); - font-family: "Helvetica Neue",Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; - background: #aaaaaa image-url("code_bg.png") top repeat-x; - border: 1px solid #565656; - border-top-color: #cbcbcb; - border-left-color: #a5a5a5; - border-right-color: #a5a5a5; - border-bottom: 0; -} diff --git a/sass/themes/classic/partials/_twitter.scss b/sass/themes/classic/partials/_twitter.scss deleted file mode 100644 index eabe3477..00000000 --- a/sass/themes/classic/partials/_twitter.scss +++ /dev/null @@ -1,49 +0,0 @@ -#tweets { - a { - color: #666; - text-decoration: none; - &:hover { text-decoration: underline; } - } - li:hover a[href*='status']{ - color: #666; - } - p { - position: relative; - padding-right: 1.4em; - } - a[href*='status']{ - color: #ccc; - position: absolute; - top: 0; - right: -.5em; - text-decoration: none; - padding: 0 .5em .1em; - text-shadow: #fff 0 1px; - span:last-child { - display: none; - font-size: .7em; - } - span:first-child { - font-size: 1.1em; - } - &:hover { - span:first-child{ display: none; } - span:last-child{ display: inline-block; } - background: #e5e5e5; - @include box-shadow($sidebar-bg -2px 2px 8px 8px); - @include border-radius(1em); - text-decoration: none; - line-height: 1.2em; - span:last-child { - color: #444; - //text-shadow: #eee 0 1px; - } - } - } - a[href*='twitter.com/search']{ - @extend .aside-alt-link; - &:hover { - text-decoration: underline; - } - } -} diff --git a/source b/source new file mode 120000 index 00000000..eac5b341 --- /dev/null +++ b/source @@ -0,0 +1 @@ +themes/classic/source \ No newline at end of file diff --git a/source/_includes/article.html b/source/_includes/article.html deleted file mode 100644 index 3481cf21..00000000 --- a/source/_includes/article.html +++ /dev/null @@ -1,30 +0,0 @@ -
- {% if index %} -

{{ page.title }}

- {% else %} -

{{ page.title }}

- {% endif %} - {% unless page.nometa %} - {% if page.author %} - {% assign author = page.author %} - {% else %} - {% assign author = site.author %} - {% endif %} -

- {% if author %} - - {% endif %} - {% if page.date %} - - {% endif %} - {% if page.updated %} - - {% endif %} -

- {% endunless %} -
-{% if index %} -
{{ content | exerpt(content, page.url, 'Continue reading »') | smart_quotes }}
-{% else %} -
{{ content | smart_quotes }}
-{% endif %} diff --git a/source/_includes/delicious.html b/source/_includes/delicious.html deleted file mode 100644 index 02b9e6bd..00000000 --- a/source/_includes/delicious.html +++ /dev/null @@ -1,3 +0,0 @@ -

On Delicious

- -

My Delicious Bookmarks »

diff --git a/source/_includes/disqus_thread.html b/source/_includes/disqus_thread.html deleted file mode 100644 index 036b9d7b..00000000 --- a/source/_includes/disqus_thread.html +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/source/_includes/footer.html b/source/_includes/footer.html deleted file mode 100644 index 5b40083e..00000000 --- a/source/_includes/footer.html +++ /dev/null @@ -1,11 +0,0 @@ -

- Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} - - Powered by Octopress -

-{% if site.pinboard_user %} - - -{% endif %} diff --git a/source/_includes/google_analytics.html b/source/_includes/google_analytics.html deleted file mode 100644 index b659a634..00000000 --- a/source/_includes/google_analytics.html +++ /dev/null @@ -1,12 +0,0 @@ - - diff --git a/source/_includes/head.html b/source/_includes/head.html deleted file mode 100644 index b311ca69..00000000 --- a/source/_includes/head.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - {% if page.title %} - {{site.title}}: {{page.title}}{% if site.author %} - {{ site.author }}{% endif %} - {% else %} - {{site.title}}{% if site.author %} - {{ site.author }}{% endif %} - {% endif %} - - {% if page.description %} - - {% endif %} - - - - - - - {% if page.keywords %} - - {% endif %} - - - - - - - - - - {% if site.google_analytics_tracking_id %} - {% include google_analytics.html %} - {% endif %} - - diff --git a/source/_includes/header.html b/source/_includes/header.html deleted file mode 100644 index 4e0519e6..00000000 --- a/source/_includes/header.html +++ /dev/null @@ -1 +0,0 @@ -

{{ site.title }}

diff --git a/source/_includes/navigation.html b/source/_includes/navigation.html deleted file mode 100644 index 23f594eb..00000000 --- a/source/_includes/navigation.html +++ /dev/null @@ -1,11 +0,0 @@ -
- Subscribe -
- - -
-
- diff --git a/source/_includes/pinboard.html b/source/_includes/pinboard.html deleted file mode 100644 index 3cd269d0..00000000 --- a/source/_includes/pinboard.html +++ /dev/null @@ -1,3 +0,0 @@ -

My Pinboard

- -

My Pinboard Bookmarks »

diff --git a/source/_includes/sidebar.html b/source/_includes/sidebar.html deleted file mode 100644 index 03890462..00000000 --- a/source/_includes/sidebar.html +++ /dev/null @@ -1,26 +0,0 @@ -
-

About Me

-

Hi, I'm Octopress!

-
-{% if page.single and site.recent_posts %} -
-

Recent Posts

- -
-{% endif %} -{% if site.twitter_user %} -
{% include twitter.html %}
-{% endif %} -{% if site.delicious_user %} -
{% include delicious.html %}
-{% endif %} -{% if site.pinboard_user %} -
{% include pinboard.html %}
-{% endif %} - diff --git a/source/_includes/twitter.html b/source/_includes/twitter.html deleted file mode 100644 index 81f2cebd..00000000 --- a/source/_includes/twitter.html +++ /dev/null @@ -1,13 +0,0 @@ -

Latest Tweets

- -

Follow @{{ site.twitter_user }}

-{% if site.twitter_user %} - - -{% endif %} diff --git a/source/_layouts/archive_monthly.html b/source/_layouts/archive_monthly.html deleted file mode 100644 index 85ada6d8..00000000 --- a/source/_layouts/archive_monthly.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default ---- -
-
-

{{ page.month | date_to_month }} {{ page.year }}

-

Posts from {{ page.month | date_to_month }}, {{ page.year }}

-
    - {% for d in (1..31) reversed %} - {% if page.collated_posts[page.year][page.month][d] %} - {% for p in page.collated_posts[page.year][page.month][d] reversed %} -
  • {{ p.title }}
  • - {% endfor %} - {% endif %} - {% endfor %} -
-
-
- diff --git a/source/_layouts/archive_yearly.html b/source/_layouts/archive_yearly.html deleted file mode 100644 index dabebebd..00000000 --- a/source/_layouts/archive_yearly.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: default ---- -
-
-

{{ page.year }}

-

Posts from the year {{ page.year }}

- {% for m in (1..12) reversed %} - {% if page.collated_posts[page.year][m] %} -

{{ m | date_to_month }}

- {% for d in (1..31) reversed %} - {% if page.collated_posts[page.year][m][d] %} - {% for p in page.collated_posts[page.year][m][d] reversed %} -
- {{ p.date | date: "%d" }} - {{ p.title }} -
- {% endfor %} - {% endif %} - {% endfor %} - {% endif %} - {% endfor %} -
-
- diff --git a/source/_layouts/default.html b/source/_layouts/default.html deleted file mode 100644 index 06fdbd77..00000000 --- a/source/_layouts/default.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /blog/:year/:month/:day/:title ---- -{% include head.html %} - -
{% include header.html %}
- -
-
-
{{ content }}
- {% unless page.no_sidebar %} - - {% endunless %} -
-
- - - - diff --git a/source/_layouts/page.html b/source/_layouts/page.html deleted file mode 100644 index 88d6e13a..00000000 --- a/source/_layouts/page.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: default -no_title_link: true -permalink: pretty -single: true ---- - -
- {% include article.html %} - {% if site.disqus_short_name %} -
{% include disqus_thread.html %}
- {% endif %} -
diff --git a/source/_layouts/post.html b/source/_layouts/post.html deleted file mode 100644 index d2c87ce3..00000000 --- a/source/_layouts/post.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -single: true ---- - -
- {% include article.html %} - {% if site.disqus_short_name %} -
{% include disqus_thread.html %}
- {% endif %} -
diff --git a/source/_posts/2009-11-13-hello-world.markdown b/source/_posts/2009-11-13-hello-world.markdown deleted file mode 100644 index af719856..00000000 --- a/source/_posts/2009-11-13-hello-world.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Hello World! I'm Octopress! -layout: post -updated: March 10th, 2010 ---- - -**Octopress is a blogging framework designed for hackers**, based on [Jekyll](http://github.com/mojombo/jekyll) the blog aware static site generator powering [Github pages](http://pages.github.com/). -If you don't know what Jekyll is, [Jack Moffitt](http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/) wrote a good summary: - -{% blockquote Jack Moffitt http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/ Blogging with Git Emacs and Jekyll %} - Jekyll is a static blog generator; it transforms a directory of input files into another directory of files suitable for a blog. The management of the blog is handled by standard, familiar tools like creating and renaming files, the text editor of your choice, and version control. -{% endblockquote %} - -There's no database to set up, and you get to use tools like Emacs, Vim, or TextMate to write your posts, not some lame in-browser text editor. Just write, generate, deploy, using the same tools and patterns you already use for your daily work. - -[Read the wiki to learn more](http://wiki.github.com/imathis/octopress/) diff --git a/source/_posts/2011-03-14-test-post.markdown b/source/_posts/2011-03-14-test-post.markdown deleted file mode 100644 index 5fd45b8f..00000000 --- a/source/_posts/2011-03-14-test-post.markdown +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Test Post -layout: post ---- - -This is a test! diff --git a/source/_posts/2011-04-07-test-of-typography.markdown b/source/_posts/2011-04-07-test-of-typography.markdown deleted file mode 100644 index 5ae332c5..00000000 --- a/source/_posts/2011-04-07-test-of-typography.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Test of Typography" -date: 2011-04-07 19:17 -layout: post ---- - -In the past I've always designed my own business cards, printed them on expensive card stock, and hand-cut them with an X-Acto knife. My cards were way nicer than those my clients had gotten *professionally* printed with bubbly ink, no-bleed designs, and cheap paper. Though I put tremendous care into my cards, I never was happy with the design. - -## Why Have Business Cards? -I'm rarely asked for my business card except when I attend conferences, of which I attend one or two each year. As a freelance contractor, I leave work by walking twenty-five feet from my office to the couch. Many of the -people I work for I've never met in-person. - -When someone gives me their business card, I read it, pocket it, and eventually throw it out — sometimes before I remember to copy the information to my address book (sorry, just being honest). The reality is, with the ubiquity of the internet and with frictionless social networks like Twitter, I can connect with people immediately. So why have business cards? - - - -### Inspiration Demands Action -In one of our campfire chats [Nathaniel Talbott](http://twitter.com/NTalbott) showed off his business cards which he printed through [Moo](http://moo.com). They were half the size of regular business cards featuring the company logo on the front, and the url on the back. The unique size of the card intrigued me, and days later I couldn't stop thinking about designing a set of mini-cards for myself. - -cards in a box Moo's [MiniCard's](http://moo.com/products/minicards.php) are very unique. You can print 100 cards, each with a totally different back. With a typical printing service this would be prohibitively expensive, but with Moo the rules are different. This freedom encourages us to go beyond nicely styled contact information and branding. Some clever uses involve offering unique invite codes for a web application, or sharing a photography portfolio with Moo's Flickr import feature. - -I realized that I could print several design iterations and decide later which worked best. Without the pressure to choose a single design, I felt the freedom to create. - -### The Freedom to Fail -card concepts I could be cheeky and print up half of my cards with my logo on one side and only my Twitter name on the other. For less than $20 for 100 cards, I wasn't even concerned about possibly screwing up a whole batch. So that's what I did. I designed cards that were good enough and I printed them. If the cards did't turn out how I wanted them to, I could improve and print again. - -handout cards The process was fun and simple, and as soon as I finished, I wanted to do it again. When my cards arrived, I was absolutely delighted by the print quality and the care put into their presentation. Smartly Moo even included some beautiful promotional cards to hand out when people inevitably ask about mine. - -### A Second Iteration -After holding the finished product, I began to see how my design could be improved. I learned that Gill Sans is harder to read at a small size in a high contrast print, so I switched to Futura. I showed my cards to some far-sighted friends and adjusted my font size accordingly. I discarded a background gradient (which I should have known wouldn't translate well to print) in favor of a solid color. **Sidenote:** On screen, gradients emulate the subtleties of a natural light source, but on a real object it doesn't make sense and generally looks bad. - -I changed my approach choosing a single design with multiple color variations. In the promotional cards Moo sent me, I learned that they do a fantastic job with bright colors and I wanted to use that boldness in my design. I was inspired by what [Seth Godin said](http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html): - -> Every interaction is both precious and an opportunity to delight. - -MiniCard Holder I pictured sliding a card out of my [MiniCard Holder](http://moo.com/products/accessories/holders/moo_minicard_holders) and revealing another brightly-colored card beneath. As I hand someone a card they'll see the flash of color and realize that their card was special, and different from my other cards. That's what I want my clients and future clients to feel. - -### The Final Design - -all card designs - -The MiniCard's unique constraints inspired me with a fresh challenge and their pricing model encouraged me to experiment. Instead of treating business cards like a necessary design task, I saw them as a opportunity to release quickly, fail cheaply, and improve. Now when I give someone a business card, it's something valuable to me, and I hope they're delighted. - -**Update:** I thought I'd share some other great uses of Moo's MiniCards. There's a fantastic [Flikr pool](http://www.flickr.com/groups/moo/pool/), but here are some of my favorites. Enjoy: - -- [Product](http://www.flickr.com/photos/lushlampwork/4131018201/in/pool-moo) [tags](http://www.flickr.com/photos/lushlampwork/4297224179/in/pool-moo) -- [Photography](http://www.flickr.com/photos/thisiswoly/4206576342/in/pool-moo) or [art](http://www.flickr.com/photos/lesleybarnes/4276368956/in/pool-moo) [portfolios](http://www.flickr.com/photos/playinprogress/4158223112/in/pool-moo) -- [Gift](http://www.flickr.com/photos/polkadotcreations/4167249758/in/pool-moo) [tags](http://www.flickr.com/photos/22338102@N04/4278114745/in/pool-moo) -- [An advent calendar](http://www.flickr.com/photos/bcome/4177034036/in/pool-moo) - diff --git a/source/about.haml b/source/about.haml deleted file mode 100644 index bbd5a9c6..00000000 --- a/source/about.haml +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: About Me -layout: page -description: this is about me -date: May 14 2011 ---- -/ use the :mardown filter if you want to write pages with Markdown -:markdown - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum. - - Ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt. - - Dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent. diff --git a/source/archive.html b/source/archive.html deleted file mode 100644 index 98518aa5..00000000 --- a/source/archive.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: Blog Archive -nometa: true ---- -{% for post in site.posts reverse %} - {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} - {% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %} - {% unless year == this_year %} - {% unless forloop.first %}{% endunless %} - {% assign year = this_year %} -

{{ year }}

- {% endif %} -{% endfor %} diff --git a/source/atom.xml b/source/atom.xml deleted file mode 100644 index 3b4e6613..00000000 --- a/source/atom.xml +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: nil ---- - - - - {{ site.blog_title }} - - - {{ site.time | date_to_xmlschema }} - {{ site.url }}/ - - {{ site.author }} - {% if site.email %} - {{ site.email }} - {% endif %} - - - {% for post in site.posts %} - - {{ post.title }} - - {{ post.date | date_to_xmlschema }} - {{ site.url }}{{ post.id }} - {{ post.content | full_urls: site.url | xml_escape }} - - {% endfor %} - diff --git a/source/fonts/adellebasic_bold-webfont.eot b/source/fonts/adellebasic_bold-webfont.eot deleted file mode 100755 index 5bace32f..00000000 Binary files a/source/fonts/adellebasic_bold-webfont.eot and /dev/null differ diff --git a/source/fonts/adellebasic_bold-webfont.svg b/source/fonts/adellebasic_bold-webfont.svg deleted file mode 100755 index c259c24c..00000000 --- a/source/fonts/adellebasic_bold-webfont.svg +++ /dev/null @@ -1,139 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright c 2009 by TypeTogether All rights reserved -Designer : Veronika Burian Jos Scaglione -Foundry : TypeTogether -Foundry URL : wwwtypetogethercom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/source/fonts/adellebasic_bold-webfont.ttf b/source/fonts/adellebasic_bold-webfont.ttf deleted file mode 100755 index 7e70d0de..00000000 Binary files a/source/fonts/adellebasic_bold-webfont.ttf and /dev/null differ diff --git a/source/fonts/adellebasic_bold-webfont.woff b/source/fonts/adellebasic_bold-webfont.woff deleted file mode 100755 index 07ae59a2..00000000 Binary files a/source/fonts/adellebasic_bold-webfont.woff and /dev/null differ diff --git a/source/images/code_bg.png b/source/images/code_bg.png deleted file mode 100644 index a57bab56..00000000 Binary files a/source/images/code_bg.png and /dev/null differ diff --git a/source/images/rss.png b/source/images/rss.png deleted file mode 100644 index f458e57d..00000000 Binary files a/source/images/rss.png and /dev/null differ diff --git a/source/images/search.png b/source/images/search.png deleted file mode 100644 index 1220ff4e..00000000 Binary files a/source/images/search.png and /dev/null differ diff --git a/source/index.html b/source/index.html deleted file mode 100644 index 09eb8d13..00000000 --- a/source/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default ---- -{% for page in site.posts limit:3 %} -{% assign content = page.content %} -{% assign index = true %} -
- {% include article.html %} -
-{% endfor %} - diff --git a/source/javascripts/libs/ender.js b/source/javascripts/libs/ender.js deleted file mode 100644 index 5e56fd89..00000000 --- a/source/javascripts/libs/ender.js +++ /dev/null @@ -1,1497 +0,0 @@ -/*! - * Ender: open module JavaScript framework - * copyright Dustin Diaz & Jacob Thornton 2011 (@ded @fat) - * https://ender.no.de - * License MIT - * Build: ender -b jeesh - */ -!function (context) { - - function aug(o, o2) { - for (var k in o2) { - k != 'noConflict' && k != '_VERSION' && (o[k] = o2[k]); - } - return o; - } - - function boosh(s, r) { - var els; - if (ender._select && typeof s == 'string' || s.nodeName || s.length && 'item' in s || s == window) { //string || node || nodelist || window - els = ender._select(s, r); - els.selector = s; - } else { - els = isFinite(s.length) ? s : [s]; - } - return aug(els, boosh); - } - - function ender(s, r) { - return boosh(s, r); - } - - aug(ender, { - _VERSION: '0.2.0', - ender: function (o, chain) { - aug(chain ? boosh : ender, o); - } - }); - - aug(boosh, { - forEach: function (fn, scope) { - // opt out of native forEach so we can intentionally call our own scope - // defaulting to the current item - for (var i = 0, l = this.length; i < l; ++i) { - i in this && fn.call(scope || this[i], this[i], i, this); - } - // return self for chaining - return this; - } - }); - - var old = context.$; - ender.noConflict = function () { - context.$ = old; - return this; - }; - - (typeof module !== 'undefined') && module.exports && (module.exports = ender); - // use subscript notation as extern for Closure compilation - context['ender'] = context['$'] = ender; - -}(this); -/*! - * bean.js - copyright Jacob Thornton 2011 - * https://github.com/fat/bean - * MIT License - * special thanks to: - * dean edwards: http://dean.edwards.name/ - * dperini: https://github.com/dperini/nwevents - * the entire mootools team: github.com/mootools/mootools-core - */ -!function (context) { - var __uid = 1, registry = {}, collected = {}, - overOut = /over|out/, - namespace = /[^\.]*(?=\..*)\.|.*/, - stripName = /\..*/, - addEvent = 'addEventListener', - attachEvent = 'attachEvent', - removeEvent = 'removeEventListener', - detachEvent = 'detachEvent', - doc = context.document || {}, - root = doc.documentElement || {}, - W3C_MODEL = root[addEvent], - eventSupport = W3C_MODEL ? addEvent : attachEvent, - - isDescendant = function (parent, child) { - var node = child.parentNode; - while (node != null) { - if (node == parent) { - return true; - } - node = node.parentNode; - } - }, - - retrieveUid = function (obj, uid) { - return (obj.__uid = uid || obj.__uid || __uid++); - }, - - retrieveEvents = function (element) { - var uid = retrieveUid(element); - return (registry[uid] = registry[uid] || {}); - }, - - listener = W3C_MODEL ? function (element, type, fn, add) { - element[add ? addEvent : removeEvent](type, fn, false); - } : function (element, type, fn, add, custom) { - custom && add && (element['_on' + custom] = element['_on' + custom] || 0); - element[add ? attachEvent : detachEvent]('on' + type, fn); - }, - - nativeHandler = function (element, fn, args) { - return function (event) { - event = fixEvent(event || ((this.ownerDocument || this.document || this).parentWindow || context).event); - return fn.apply(element, [event].concat(args)); - }; - }, - - customHandler = function (element, fn, type, condition, args) { - return function (event) { - if (condition ? condition.call(this, event) : W3C_MODEL ? true : event && event.propertyName == '_on' + type || !event) { - fn.apply(element, [event].concat(args)); - } - }; - }, - - addListener = function (element, orgType, fn, args) { - var type = orgType.replace(stripName, ''), - events = retrieveEvents(element), - handlers = events[type] || (events[type] = {}), - uid = retrieveUid(fn, orgType.replace(namespace, '')); - if (handlers[uid]) { - return element; - } - var custom = customEvents[type]; - if (custom) { - fn = custom.condition ? customHandler(element, fn, type, custom.condition) : fn; - type = custom.base || type; - } - var isNative = nativeEvents[type]; - fn = isNative ? nativeHandler(element, fn, args) : customHandler(element, fn, type, false, args); - isNative = W3C_MODEL || isNative; - if (type == 'unload') { - var org = fn; - fn = function () { - removeListener(element, type, fn) && org(); - }; - } - element[eventSupport] && listener(element, isNative ? type : 'propertychange', fn, true, !isNative && type); - handlers[uid] = fn; - fn.__uid = uid; - return type == 'unload' ? element : (collected[retrieveUid(element)] = element); - }, - - removeListener = function (element, orgType, handler) { - var uid, names, uids, i, events = retrieveEvents(element), type = orgType.replace(stripName, ''); - if (!events || !events[type]) { - return element; - } - names = orgType.replace(namespace, ''); - uids = names ? names.split('.') : [handler.__uid]; - for (i = uids.length; i--;) { - uid = uids[i]; - handler = events[type][uid]; - delete events[type][uid]; - if (element[eventSupport]) { - type = customEvents[type] ? customEvents[type].base : type; - var isNative = W3C_MODEL || nativeEvents[type]; - listener(element, isNative ? type : 'propertychange', handler, false, !isNative && type); - } - } - return element; - }, - - del = function (selector, fn, $) { - return function (e) { - var array = typeof selector == 'string' ? $(selector, this) : selector; - for (var target = e.target; target && target != this; target = target.parentNode) { - for (var i = array.length; i--;) { - if (array[i] == target) { - return fn.apply(target, arguments); - } - } - } - }; - }, - - add = function (element, events, fn, delfn, $) { - if (typeof events == 'object' && !fn) { - for (var type in events) { - events.hasOwnProperty(type) && add(element, type, events[type]); - } - } else { - var isDel = typeof fn == 'string', types = (isDel ? fn : events).split(' '); - fn = isDel ? del(events, delfn, $) : fn; - for (var i = types.length; i--;) { - addListener(element, types[i], fn, Array.prototype.slice.call(arguments, isDel ? 4 : 3)); - } - } - return element; - }, - - remove = function (element, orgEvents, fn) { - var k, type, events, - isString = typeof(orgEvents) == 'string', - names = isString && orgEvents.replace(namespace, ''), - rm = removeListener, - attached = retrieveEvents(element); - if (isString && /\s/.test(orgEvents)) { - orgEvents = orgEvents.split(' '); - var i = orgEvents.length - 1; - while (remove(element, orgEvents[i]) && i--) {} - return element; - } - events = isString ? orgEvents.replace(stripName, '') : orgEvents; - if (!attached || (isString && !attached[events])) { - return element; - } - if (typeof fn == 'function') { - rm(element, events, fn); - } else if (names) { - rm(element, orgEvents); - } else { - rm = events ? rm : remove; - type = isString && events; - events = events ? (fn || attached[events] || events) : attached; - for (k in events) { - events.hasOwnProperty(k) && rm(element, type || k, events[k]); - } - } - return element; - }, - - fire = function (element, type, args) { - var evt, k, i, types = type.split(' '); - for (i = types.length; i--;) { - type = types[i].replace(stripName, ''); - var isNative = nativeEvents[type], - isNamespace = types[i].replace(namespace, ''), - handlers = retrieveEvents(element)[type]; - if (isNamespace) { - isNamespace = isNamespace.split('.'); - for (k = isNamespace.length; k--;) { - handlers[isNamespace[k]] && handlers[isNamespace[k]].apply(element, args); - } - } else if (!args && element[eventSupport]) { - fireListener(isNative, type, element); - } else { - for (k in handlers) { - handlers.hasOwnProperty(k) && handlers[k].apply(element, args); - } - } - } - return element; - }, - - fireListener = W3C_MODEL ? function (isNative, type, element) { - evt = document.createEvent(isNative ? "HTMLEvents" : "UIEvents"); - evt[isNative ? 'initEvent' : 'initUIEvent'](type, true, true, context, 1); - element.dispatchEvent(evt); - } : function (isNative, type, element) { - isNative ? element.fireEvent('on' + type, document.createEventObject()) : element['_on' + type]++; - }, - - clone = function (element, from, type) { - var events = retrieveEvents(from), obj, k; - obj = type ? events[type] : events; - for (k in obj) { - obj.hasOwnProperty(k) && (type ? add : clone)(element, type || from, type ? obj[k] : k); - } - return element; - }, - - fixEvent = function (e) { - var result = {}; - if (!e) { - return result; - } - var type = e.type, target = e.target || e.srcElement; - result.preventDefault = fixEvent.preventDefault(e); - result.stopPropagation = fixEvent.stopPropagation(e); - result.target = target && target.nodeType == 3 ? target.parentNode : target; - if (~type.indexOf('key')) { - result.keyCode = e.which || e.keyCode; - } else if ((/click|mouse|menu/i).test(type)) { - result.rightClick = e.which == 3 || e.button == 2; - result.pos = { x: 0, y: 0 }; - if (e.pageX || e.pageY) { - result.clientX = e.pageX; - result.clientY = e.pageY; - } else if (e.clientX || e.clientY) { - result.clientX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; - result.clientY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; - } - overOut.test(type) && (result.relatedTarget = e.relatedTarget || e[(type == 'mouseover' ? 'from' : 'to') + 'Element']); - } - for (var k in e) { - if (!(k in result)) { - result[k] = e[k]; - } - } - return result; - }; - - fixEvent.preventDefault = function (e) { - return function () { - if (e.preventDefault) { - e.preventDefault(); - } - else { - e.returnValue = false; - } - }; - }; - - fixEvent.stopPropagation = function (e) { - return function () { - if (e.stopPropagation) { - e.stopPropagation(); - } else { - e.cancelBubble = true; - } - }; - }; - - var nativeEvents = { click: 1, dblclick: 1, mouseup: 1, mousedown: 1, contextmenu: 1, //mouse buttons - mousewheel: 1, DOMMouseScroll: 1, //mouse wheel - mouseover: 1, mouseout: 1, mousemove: 1, selectstart: 1, selectend: 1, //mouse movement - keydown: 1, keypress: 1, keyup: 1, //keyboard - orientationchange: 1, // mobile - touchstart: 1, touchmove: 1, touchend: 1, touchcancel: 1, // touch - gesturestart: 1, gesturechange: 1, gestureend: 1, // gesture - focus: 1, blur: 1, change: 1, reset: 1, select: 1, submit: 1, //form elements - load: 1, unload: 1, beforeunload: 1, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window - error: 1, abort: 1, scroll: 1 }; //misc - - function check(event) { - var related = event.relatedTarget; - if (!related) { - return related == null; - } - return (related != this && related.prefix != 'xul' && !/document/.test(this.toString()) && !isDescendant(this, related)); - } - - var customEvents = { - mouseenter: { base: 'mouseover', condition: check }, - mouseleave: { base: 'mouseout', condition: check }, - mousewheel: { base: /Firefox/.test(navigator.userAgent) ? 'DOMMouseScroll' : 'mousewheel' } - }; - - var bean = { add: add, remove: remove, clone: clone, fire: fire }; - - var clean = function (el) { - var uid = remove(el).__uid; - if (uid) { - delete collected[uid]; - delete registry[uid]; - } - }; - - if (context[attachEvent]) { - add(context, 'unload', function () { - for (var k in collected) { - collected.hasOwnProperty(k) && clean(collected[k]); - } - context.CollectGarbage && CollectGarbage(); - }); - } - - var oldBean = context.bean; - bean.noConflict = function () { - context.bean = oldBean; - return this; - }; - - (typeof module !== 'undefined' && module.exports) ? - (module.exports = bean) : - (context['bean'] = bean); - -}(this);!function ($) { - var b = bean.noConflict(), - integrate = function (method, type, method2) { - var _args = type ? [type] : []; - return function () { - for (var args, i = 0, l = this.length; i < l; i++) { - args = [this[i]].concat(_args, Array.prototype.slice.call(arguments, 0)); - args.length == 4 && args.push($); - !arguments.length && method == 'add' && type && (method = 'fire'); - b[method].apply(this, args); - } - return this; - }; - }; - - var add = integrate('add'), - remove = integrate('remove'), - fire = integrate('fire'); - - var methods = { - - on: add, - addListener: add, - bind: add, - listen: add, - delegate: add, - - unbind: remove, - unlisten: remove, - removeListener: remove, - undelegate: remove, - - emit: fire, - trigger: fire, - - cloneEvents: integrate('clone'), - - hover: function (enter, leave) { - for (var i = 0, l = this.length; i < l; i++) { - b.add.call(this, this[i], 'mouseenter', enter); - b.add.call(this, this[i], 'mouseleave', leave); - } - return this; - } - }; - - var shortcuts = [ - 'blur', 'change', 'click', 'dblclick', 'error', 'focus', 'focusin', - 'focusout', 'keydown', 'keypress', 'keyup', 'load', 'mousedown', - 'mouseenter', 'mouseleave', 'mouseout', 'mouseover', 'mouseup', - 'resize', 'scroll', 'select', 'submit', 'unload' - ]; - - for (var i = shortcuts.length; i--;) { - var shortcut = shortcuts[i]; - methods[shortcut] = integrate('add', shortcut); - } - - $.ender(methods, true); -}(ender); -/*! - * bonzo.js - copyright @dedfat 2011 - * https://github.com/ded/bonzo - * Follow our software http://twitter.com/dedfat - * MIT License - */ -!function (context) { - - var doc = context.document, - html = doc.documentElement, - query = null, - byTag = 'getElementsByTagName', - specialAttributes = /^checked|value|selected$/, - specialTags = /select|map|fieldset|table|tbody|tr|colgroup/i, - tagMap = { select: 'option', table: 'tbody', tr: 'td' }, - stateAttributes = /^checked|selected$/, - ie = /msie/i.test(navigator.userAgent), - uidList = [], - uuids = 0, - digit = /^-?[\d\.]+$/, - px = 'px', - // commonly used methods - setAttribute = 'setAttribute', - getAttribute = 'getAttribute', - trimReplace = /(^\s*|\s*$)/g, - unitless = { lineHeight: 1, zoom: 1, zIndex: 1, opacity: 1 }; - - function classReg(c) { - return new RegExp("(^|\\s+)" + c + "(\\s+|$)"); - } - - function each(ar, fn, scope) { - for (var i = 0, l = ar.length; i < l; i++) { - fn.call(scope || ar[i], ar[i], i, ar); - } - return ar; - } - - var trim = String.prototype.trim ? - function (s) { - return s.trim(); - } : - function (s) { - return s.replace(trimReplace, ''); - }; - - function camelize(s) { - return s.replace(/-(.)/g, function (m, m1) { - return m1.toUpperCase(); - }); - } - - function is(node) { - return node && node.nodeName && node.nodeType == 1; - } - - function some(ar, fn, scope) { - for (var i = 0, j = ar.length; i < j; ++i) { - if (fn.call(scope, ar[i], i, ar)) { - return true; - } - } - return false; - } - - var getStyle = doc.defaultView && doc.defaultView.getComputedStyle ? - function (el, property) { - var value = null; - if (property == 'float') { - property = 'cssFloat'; - } - var computed = doc.defaultView.getComputedStyle(el, ''); - computed && (value = computed[camelize(property)]); - return el.style[property] || value; - - } : (ie && html.currentStyle) ? - - function (el, property) { - property = camelize(property); - property = property == 'float' ? 'styleFloat' : property; - - if (property == 'opacity') { - var val = 100; - try { - val = el.filters['DXImageTransform.Microsoft.Alpha'].opacity; - } catch (e1) { - try { - val = el.filters('alpha').opacity; - } catch (e2) {} - } - return val / 100; - } - var value = el.currentStyle ? el.currentStyle[property] : null; - return el.style[property] || value; - } : - - function (el, property) { - return el.style[camelize(property)]; - }; - - function insert(target, host, fn) { - var i = 0, self = host || this, r = []; - each(normalize(query ? query(target) : target), function (t) { - each(self, function (el) { - var n = el.cloneNode(true); - fn(t, n); - r[i] = n; - i++; - }); - }, this); - each(r, function (e, i) { - self[i] = e; - }); - self.length = i; - return self; - } - - function xy(el, x, y) { - var $el = bonzo(el), - style = $el.css('position'), - offset = $el.offset(), - rel = 'relative', - isRel = style == rel, - delta = [parseInt($el.css('left'), 10), parseInt($el.css('top'), 10)]; - - if (style == 'static') { - $el.css('position', rel); - style = rel; - } - - isNaN(delta[0]) && (delta[0] = isRel ? 0 : el.offsetLeft); - isNaN(delta[1]) && (delta[1] = isRel ? 0 : el.offsetTop); - - x !== null && (el.style.left = x - offset.left + delta[0] + 'px'); - y !== null && (el.style.top = y - offset.top + delta[1] + 'px'); - - } - - function Bonzo(elements) { - this.length = 0; - this.original = elements; - if (elements) { - elements = typeof elements !== 'string' && - !elements.nodeType && - typeof elements.length !== 'undefined' ? - elements : - [elements]; - this.length = elements.length; - for (var i = 0; i < elements.length; i++) { - this[i] = elements[i]; - } - } - } - - Bonzo.prototype = { - - each: function (fn, scope) { - return each(this, fn, scope); - }, - - map: function (fn, reject) { - var m = [], n, i; - for (i = 0; i < this.length; i++) { - n = fn.call(this, this[i]); - reject ? (reject(n) && m.push(n)) : m.push(n); - } - return m; - }, - - first: function () { - return bonzo(this[0]); - }, - - last: function () { - return bonzo(this[this.length - 1]); - }, - - html: function (h, text) { - var method = text ? - html.textContent == null ? - 'innerText' : - 'textContent' : - 'innerHTML', m; - function append(el, tag) { - while (el.firstChild) { - el.removeChild(el.firstChild); - } - each(normalize(h, tag), function (node) { - el.appendChild(node); - }); - } - return typeof h !== 'undefined' ? - this.each(function (el) { - (m = el.tagName.match(specialTags)) ? - append(el, m[0]) : - (el[method] = h); - }) : - this[0] ? this[0][method] : ''; - }, - - text: function (text) { - return this.html(text, 1); - }, - - addClass: function (c) { - return this.each(function (el) { - this.hasClass(el, c) || (el.className = trim(el.className + ' ' + c)); - }, this); - }, - - removeClass: function (c) { - return this.each(function (el) { - this.hasClass(el, c) && (el.className = trim(el.className.replace(classReg(c), ' '))); - }, this); - }, - - hasClass: function (el, c) { - return typeof c == 'undefined' ? - some(this, function (i) { - return classReg(el).test(i.className); - }) : - classReg(c).test(el.className); - }, - - toggleClass: function (c, condition) { - if (typeof condition !== 'undefined' && !condition) { - return this; - } - return this.each(function (el) { - this.hasClass(el, c) ? - (el.className = trim(el.className.replace(classReg(c), ' '))) : - (el.className = trim(el.className + ' ' + c)); - }, this); - }, - - show: function (type) { - return this.each(function (el) { - el.style.display = type || ''; - }); - }, - - hide: function (elements) { - return this.each(function (el) { - el.style.display = 'none'; - }); - }, - - append: function (node) { - return this.each(function (el) { - each(normalize(node), function (i) { - el.appendChild(i); - }); - }); - }, - - prepend: function (node) { - return this.each(function (el) { - var first = el.firstChild; - each(normalize(node), function (i) { - el.insertBefore(i, first); - }); - }); - }, - - appendTo: function (target, host) { - return insert.call(this, target, host, function (t, el) { - t.appendChild(el); - }); - }, - - prependTo: function (target, host) { - return insert.call(this, target, host, function (t, el) { - t.insertBefore(el, t.firstChild); - }); - }, - - next: function () { - return this.related('nextSibling'); - }, - - previous: function () { - return this.related('previousSibling'); - }, - - related: function (method) { - return this.map( - function (el) { - el = el[method]; - while (el && el.nodeType !== 1) { - el = el[method]; - } - return el || 0; - }, - function (el) { - return el; - } - ); - }, - - before: function (node) { - return this.each(function (el) { - each(bonzo.create(node), function (i) { - el.parentNode.insertBefore(i, el); - }); - }); - }, - - after: function (node) { - return this.each(function (el) { - each(bonzo.create(node), function (i) { - el.parentNode.insertBefore(i, el.nextSibling); - }); - }); - }, - - insertBefore: function (target, host) { - return insert.call(this, target, host, function (t, el) { - t.parentNode.insertBefore(el, t); - }); - }, - - insertAfter: function (target, host) { - return insert.call(this, target, host, function (t, el) { - var sibling = t.nextSibling; - if (sibling) { - t.parentNode.insertBefore(el, sibling); - } - else { - t.parentNode.appendChild(el); - } - }); - }, - - css: function (o, v) { - // is this a request for just getting a style? - if (v === undefined && typeof o == 'string') { - return getStyle(this[0], o); - } - var iter = o; - if (typeof o == 'string') { - iter = {}; - iter[o] = v; - } - - if (ie && iter.opacity) { - // oh this 'ol gamut - iter.filter = 'alpha(opacity=' + (iter.opacity * 100) + ')'; - // give it layout - iter.zoom = o.zoom || 1; - delete iter.opacity; - } - - if (v = iter['float']) { - // float is a reserved style word. w3 uses cssFloat, ie uses styleFloat - ie ? (iter.styleFloat = v) : (iter.cssFloat = v); - delete iter['float']; - } - - var fn = function (el, p, v) { - for (var k in iter) { - if (iter.hasOwnProperty(k)) { - v = iter[k]; - // change "5" to "5px" - unless you're line-height, which is allowed - (p = camelize(k)) && digit.test(v) && !(p in unitless) && (v += px); - el.style[p] = v; - } - } - }; - return this.each(fn); - }, - - offset: function (x, y) { - if (x || y) { - return this.each(function (el) { - xy(el, x, y); - }); - } - var el = this[0]; - var width = el.offsetWidth; - var height = el.offsetHeight; - var top = el.offsetTop; - var left = el.offsetLeft; - while (el = el.offsetParent) { - top = top + el.offsetTop; - left = left + el.offsetLeft; - } - - return { - top: top, - left: left, - height: height, - width: width - }; - }, - - attr: function (k, v) { - var el = this[0]; - return typeof v == 'undefined' ? - specialAttributes.test(k) ? - stateAttributes.test(k) && typeof el[k] == 'string' ? - true : el[k] : el[getAttribute](k) : - this.each(function (el) { - k == 'value' ? (el.value = v) : el[setAttribute](k, v); - }); - }, - - val: function (s) { - return (typeof s == 'string') ? this.attr('value', s) : this[0].value; - }, - - removeAttr: function (k) { - return this.each(function (el) { - el.removeAttribute(k); - }); - }, - - data: function (k, v) { - var el = this[0]; - if (typeof v === 'undefined') { - el[getAttribute]('data-node-uid') || el[setAttribute]('data-node-uid', ++uuids); - var uid = el[getAttribute]('data-node-uid'); - uidList[uid] || (uidList[uid] = {}); - return uidList[uid][k]; - } else { - return this.each(function (el) { - el[getAttribute]('data-node-uid') || el[setAttribute]('data-node-uid', ++uuids); - var uid = el[getAttribute]('data-node-uid'); - var o = {}; - o[k] = v; - uidList[uid] = o; - }); - } - }, - - remove: function () { - return this.each(function (el) { - el.parentNode && el.parentNode.removeChild(el); - }); - }, - - empty: function () { - return this.each(function (el) { - while (el.firstChild) { - el.removeChild(el.firstChild); - } - }); - }, - - detach: function () { - return this.map(function (el) { - return el.parentNode.removeChild(el); - }); - }, - - scrollTop: function (y) { - return scroll.call(this, null, y, 'y'); - }, - - scrollLeft: function (x) { - return scroll.call(this, x, null, 'x'); - } - }; - - function normalize(node, tag) { - return typeof node == 'string' ? bonzo.create(node, tag) : is(node) ? [node] : node; - } - - function scroll(x, y, type) { - var el = this[0]; - if (x == null && y == null) { - return (isBody(el) ? getWindowScroll() : { x: el.scrollLeft, y: el.scrollTop })[type]; - } - if (isBody(el)) { - window.scrollTo(x, y); - } else { - x != null && (el.scrollLeft = x); - y != null && (el.scrollTop = y); - } - return this; - } - - function isBody(element) { - return element === window || (/^(?:body|html)$/i).test(element.tagName); - } - - function getWindowScroll() { - return { x: window.pageXOffset || html.scrollLeft, y: window.pageYOffset || html.scrollTop }; - } - - function bonzo(els, host) { - return new Bonzo(els, host); - } - - bonzo.setQueryEngine = function (q) { - query = q; - delete bonzo.setQueryEngine; - }; - - bonzo.aug = function (o, target) { - for (var k in o) { - o.hasOwnProperty(k) && ((target || Bonzo.prototype)[k] = o[k]); - } - }; - - bonzo.create = function (node, tag) { - return typeof node == 'string' ? - function () { - var t = tag ? tagMap[tag.toLowerCase()] : null; - var el = doc.createElement(t || 'div'), els = []; - if (tag) { - var bitches = node.match(new RegExp("<" + t + ">.+?<\\/" + t + ">", "g")); - each(bitches, function (m) { - m = m.replace(/<(.+)>(.+?)<\/\1>/, '$2'); - var bah = doc.createElement(t); - bah.appendChild(doc.createDocumentFragment(m)); - el.appendChild(bah); - }); - } else { - el.innerHTML = node; - } - var nodes = el.childNodes; - el = el.firstChild; - els.push(el); - while (el = el.nextSibling) { - (el.nodeType == 1) && els.push(el); - } - return els; - - }() : is(node) ? [node.cloneNode(true)] : []; - }; - - bonzo.doc = function () { - var w = html.scrollWidth, - h = html.scrollHeight, - vp = this.viewport(); - return { - width: Math.max(w, vp.width), - height: Math.max(h, vp.height) - }; - }; - - bonzo.firstChild = function (el) { - for (var c = el.childNodes, i = 0, j = (c && c.length) || 0, e; i < j; i++) { - if (c[i].nodeType === 1) { - e = c[j = i]; - } - } - return e; - }; - - bonzo.viewport = function () { - var h = self.innerHeight, - w = self.innerWidth; - ie && (h = html.clientHeight) && (w = html.clientWidth); - return { - width: w, - height: h - }; - }; - - bonzo.isAncestor = 'compareDocumentPosition' in html ? - function (container, element) { - return (container.compareDocumentPosition(element) & 16) == 16; - } : 'contains' in html ? - function (container, element) { - return container !== element && container.contains(element); - } : - function (container, element) { - while (element = element.parentNode) { - if (element === container) { - return true; - } - } - return false; - }; - - var old = context.bonzo; - bonzo.noConflict = function () { - context.bonzo = old; - return this; - }; - context['bonzo'] = bonzo; - -}(this);!function ($) { - - var b = bonzo; - b.setQueryEngine($); - $.ender(b); - $.ender(b(), true); - $.ender({ - create: function (node) { - return $(b.create(node)); - } - }); - - $.id = function (id) { - return $([document.getElementById(id)]); - }; - - function indexOf(ar, val) { - for (var i = 0; i < ar.length; i++) { - if (ar[i] === val) { - return i; - } - } - return -1; - } - - function uniq(ar) { - var a = [], i, j; - label: - for (i = 0; i < ar.length; i++) { - for (j = 0; j < a.length; j++) { - if (a[j] == ar[i]) { - continue label; - } - } - a[a.length] = ar[i]; - } - return a; - } - - $.ender({ - parents: function (selector, closest) { - var collection = $(selector), j, k, p, r = []; - for (j = 0, k = this.length; j < k; j++) { - p = this[j]; - while (p = p.parentNode) { - if (indexOf(collection, p) !== -1) { - r.push(p); - if (closest) break; - } - } - } - return $(uniq(r)); - }, - - closest: function (selector) { - return this.parents(selector, true); - }, - - first: function () { - return $(this[0]); - }, - - last: function () { - return $(this[this.length - 1]); - }, - - next: function () { - return $(b(this).next()); - }, - - previous: function () { - return $(b(this).previous()); - }, - - appendTo: function (t) { - return b(this.selector).appendTo(t, this); - }, - - prependTo: function (t) { - return b(this.selector).prependTo(t, this); - }, - - insertAfter: function (t) { - return b(this.selector).insertAfter(t, this); - }, - - insertBefore: function (t) { - return b(this.selector).insertBefore(t, this); - }, - - siblings: function () { - var i, l, p, r = []; - for (i = 0, l = this.length; i < l; i++) { - p = this[i]; - while (p = p.previousSibling) { - p.nodeType == 1 && r.push(p); - } - p = this[i]; - while (p = p.nextSibling) { - p.nodeType == 1 && r.push(p); - } - } - return $(r); - }, - - children: function () { - var el, r = []; - for (i = 0, l = this.length; i < l; i++) { - if (!(el = b.firstChild(this[i]))) { - continue; - } - r.push(el); - while (el = el.nextSibling) { - el.nodeType == 1 && r.push(el); - } - } - return $(uniq(r)); - }, - - height: function (v) { - return v ? this.css('height', v) : parseInt(this.css('height'), 10); - }, - - width: function (v) { - return v ? this.css('width', v) : parseInt(this.css('width'), 10); - } - }, true); - -}(ender || $); - -!function () { var exports = {}, module = { exports: exports }; !function (doc) { - var loaded = 0, fns = [], ol, f = false, - testEl = doc.createElement('a'), - domContentLoaded = 'DOMContentLoaded', - addEventListener = 'addEventListener', - onreadystatechange = 'onreadystatechange'; - - /^loade|c/.test(doc.readyState) && (loaded = 1); - - function flush() { - loaded = 1; - for (var i = 0, l = fns.length; i < l; i++) { - fns[i](); - } - } - doc[addEventListener] && doc[addEventListener](domContentLoaded, function fn() { - doc.removeEventListener(domContentLoaded, fn, f); - flush(); - }, f); - - - testEl.doScroll && doc.attachEvent(onreadystatechange, (ol = function ol() { - if (/^c/.test(doc.readyState)) { - doc.detachEvent(onreadystatechange, ol); - flush(); - } - })); - - var domReady = testEl.doScroll ? - function (fn) { - self != top ? - !loaded ? - fns.push(fn) : - fn() : - !function () { - try { - testEl.doScroll('left'); - } catch (e) { - return setTimeout(function() { - domReady(fn); - }, 50); - } - fn(); - }(); - } : - function (fn) { - loaded ? fn() : fns.push(fn); - }; - - (typeof module !== 'undefined') && module.exports ? - (module.exports = {domReady: domReady}) : - (window.domReady = domReady); - -}(document); $.ender(module.exports); }.call($); -/*! - * qwery.js - copyright @dedfat - * https://github.com/ded/qwery - * Follow our software http://twitter.com/dedfat - * MIT License - */ - -!function (context, doc) { - - var c, i, j, k, l, m, o, p, r, v, - el, node, len, found, classes, item, items, token, - id = /#([\w\-]+)/, - clas = /\.[\w\-]+/g, - idOnly = /^#([\w\-]+$)/, - classOnly = /^\.([\w\-]+)$/, - tagOnly = /^([\w\-]+)$/, - tagAndOrClass = /^([\w]+)?\.([\w\-]+)$/, - html = doc.documentElement, - tokenizr = /\s(?![\s\w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^'"]*\])/, - specialChars = /([.*+?\^=!:${}()|\[\]\/\\])/g, - simple = /^([a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/, - attr = /\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/, - chunker = new RegExp(simple.source + '(' + attr.source + ')?'); - - function array(ar) { - r = []; - for (i = 0, len = ar.length; i < len; i++) { - r[i] = ar[i]; - } - return r; - } - - var cache = function () { - this.c = {}; - }; - cache.prototype = { - g: function (k) { - return this.c[k] || undefined; - }, - s: function (k, v) { - this.c[k] = v; - return v; - } - }; - - var classCache = new cache(), - cleanCache = new cache(), - attrCache = new cache(), - tokenCache = new cache(); - - function q(query) { - return query.match(chunker); - } - - function interpret(whole, tag, idsAndClasses, wholeAttribute, attribute, qualifier, value) { - var m, c, k; - if (tag && this.tagName.toLowerCase() !== tag) { - return false; - } - if (idsAndClasses && (m = idsAndClasses.match(id)) && m[1] !== this.id) { - return false; - } - if (idsAndClasses && (classes = idsAndClasses.match(clas))) { - for (i = classes.length; i--;) { - c = classes[i].slice(1); - if (!(classCache.g(c) || classCache.s(c, new RegExp('(^|\\s+)' + c + '(\\s+|$)'))).test(this.className)) { - return false; - } - } - } - if (wholeAttribute && !value) { - o = this.attributes; - for (k in o) { - if (Object.prototype.hasOwnProperty.call(o, k) && (o[k].name || k) == attribute) { - return this; - } - } - } - if (wholeAttribute && !checkAttr(qualifier, this.getAttribute(attribute) || '', value)) { - return false; - } - return this; - } - - function loopAll(tokens) { - var r = [], token = tokens.pop(), intr = q(token), tag = intr[1] || '*', i, l, els, - root = tokens.length && (m = tokens[0].match(idOnly)) ? doc.getElementById(m[1]) : doc; - if (!root) { - return r; - } - els = root.getElementsByTagName(tag); - for (i = 0, l = els.length; i < l; i++) { - el = els[i]; - if (item = interpret.apply(el, intr)) { - r.push(item); - } - } - return r; - } - - function clean(s) { - return cleanCache.g(s) || cleanCache.s(s, s.replace(specialChars, '\\$1')); - } - - function checkAttr(qualify, actual, val) { - switch (qualify) { - case '=': - return actual == val; - case '^=': - return actual.match(attrCache.g('^=' + val) || attrCache.s('^=' + val, new RegExp('^' + clean(val)))); - case '$=': - return actual.match(attrCache.g('$=' + val) || attrCache.s('$=' + val, new RegExp(clean(val) + '$'))); - case '*=': - return actual.match(attrCache.g(val) || attrCache.s(val, new RegExp(clean(val)))); - case '~=': - return actual.match(attrCache.g('~=' + val) || attrCache.s('~=' + val, new RegExp('(?:^|\\s+)' + clean(val) + '(?:\\s+|$)'))); - case '|=': - return actual.match(attrCache.g('|=' + val) || attrCache.s('|=' + val, new RegExp('^' + clean(val) + '(-|$)'))); - } - return false; - } - - function _qwery(selector) { - var r = [], ret = [], i, l, - tokens = tokenCache.g(selector) || tokenCache.s(selector, selector.split(tokenizr)); - tokens = tokens.slice(0); - if (!tokens.length) { - return r; - } - r = loopAll(tokens); - if (!tokens.length) { - return r; - } - // loop through all descendent tokens - for (j = 0, l = r.length, k = 0; j < l; j++) { - node = r[j]; - p = node; - // loop through each token - for (i = tokens.length; i--;) { - z: // loop through parent nodes - while (p !== html && (p = p.parentNode)) { - if (found = interpret.apply(p, q(tokens[i]))) { - break z; - } - } - } - found && (ret[k++] = node); - } - return ret; - } - - function boilerPlate(selector, _root, fn) { - var root = (typeof _root == 'string') ? fn(_root)[0] : (_root || doc); - if (selector === window || isNode(selector)) { - return !_root || (selector !== window && isNode(root) && isAncestor(selector, root)) ? [selector] : []; - } - if (selector && typeof selector === 'object' && isFinite(selector.length)) { - return array(selector); - } - if (m = selector.match(idOnly)) { - return (el = doc.getElementById(m[1])) ? [el] : []; - } - if (m = selector.match(tagOnly)) { - return array(root.getElementsByTagName(m[1])); - } - return false; - } - - function isNode(el) { - return (el && el.nodeType && (el.nodeType == 1 || el.nodeType == 9)); - } - - function uniq(ar) { - var a = [], i, j; - label: - for (i = 0; i < ar.length; i++) { - for (j = 0; j < a.length; j++) { - if (a[j] == ar[i]) { - continue label; - } - } - a[a.length] = ar[i]; - } - return a; - } - - function qwery(selector, _root) { - var root = (typeof _root == 'string') ? qwery(_root)[0] : (_root || doc); - if (!root || !selector) { - return []; - } - if (m = boilerPlate(selector, _root, qwery)) { - return m; - } - return select(selector, root); - } - - var isAncestor = 'compareDocumentPosition' in html ? - function (element, container) { - return (container.compareDocumentPosition(element) & 16) == 16; - } : 'contains' in html ? - function (element, container) { - container = container == doc || container == window ? html : container; - return container !== element && container.contains(element); - } : - function (element, container) { - while (element = element.parentNode) { - if (element === container) { - return 1; - } - } - return 0; - }, - - select = (doc.querySelector && doc.querySelectorAll) ? - function (selector, root) { - if (doc.getElementsByClassName && (m = selector.match(classOnly))) { - return array((root).getElementsByClassName(m[1])); - } - return array((root).querySelectorAll(selector)); - } : - function (selector, root) { - var result = [], collection, collections = [], i; - if (m = selector.match(tagAndOrClass)) { - items = root.getElementsByTagName(m[1] || '*'); - r = classCache.g(m[2]) || classCache.s(m[2], new RegExp('(^|\\s+)' + m[2] + '(\\s+|$)')); - for (i = 0, l = items.length, j = 0; i < l; i++) { - r.test(items[i].className) && (result[j++] = items[i]); - } - return result; - } - for (i = 0, items = selector.split(','), l = items.length; i < l; i++) { - collections[i] = _qwery(items[i]); - } - for (i = 0, l = collections.length; i < l && (collection = collections[i]); i++) { - var ret = collection; - if (root !== doc) { - ret = []; - for (j = 0, m = collection.length; j < m && (element = collection[j]); j++) { - // make sure element is a descendent of root - isAncestor(element, root) && ret.push(element); - } - } - result = result.concat(ret); - } - return uniq(result); - }; - - qwery.uniq = uniq; - var oldQwery = context.qwery; - qwery.noConflict = function () { - context.qwery = oldQwery; - return this; - }; - context['qwery'] = qwery; - -}(this, document);!function (doc) { - var q = qwery.noConflict(); - function create(node, root) { - var el = (root || doc).createElement('div'), els = []; - el.innerHTML = node; - var nodes = el.childNodes; - el = el.firstChild; - els.push(el); - while (el = el.nextSibling) { - (el.nodeType == 1) && els.push(el); - } - return els; - }; - $._select = function (s, r) { - return /^\s*.+?<\\/"+d+">","g"));t(g,function(a){a=a.replace(/<(.+)>(.+?)<\/\1>/,"$2");var c=b.createElement(d);c.appendChild(b.createDocumentFragment(a)),e.appendChild(c)})}else e.innerHTML=a;var i=e.childNodes;e=e.firstChild,f.push(e);while(e=e.nextSibling)e.nodeType==1&&f.push(e);return f}():w(a)?[a.cloneNode(!0)]:[]},G.doc=function(){var a=c.scrollWidth,b=c.scrollHeight,d=this.viewport();return{width:Math.max(a,d.width),height:Math.max(b,d.height)}},G.firstChild=function(a){for(var b=a.childNodes,c=0,d=b&&b.length||0,e;c\{\}\$\*\^'"]*\])/,C=/([.*+?\^=!:${}()|\[\]\/\\])/g,D=/^([a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/,E=/\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/,F=new RegExp(D.source+"("+E.source+")?"),H=function(){this.c={}};H.prototype={g:function(a){return this.c[a]||undefined},s:function(a,b){this.c[a]=b;return b}};var I=new H,J=new H,K=new H,L=new H,W="compareDocumentPosition"in A?function(a,b){return(b.compareDocumentPosition(a)&16)==16}:"contains"in A?function(a,c){c=c==b||c==window?A:c;return c!==a&&c.contains(a)}:function(a,b){while(a=a.parentNode)if(a===b)return 1;return 0},X=b.querySelector&&b.querySelectorAll?function(a,c){if(b.getElementsByClassName&&(h=a.match(x)))return G(c.getElementsByClassName(h[1]));return G(c.querySelectorAll(a))}:function(a,c){var d=[],f,i=[],j;if(h=a.match(z)){s=c.getElementsByTagName(h[1]||"*"),k=I.g(h[2])||I.s(h[2],new RegExp("(^|\\s+)"+h[2]+"(\\s+|$)"));for(j=0,g=s.length,e=0;j~])?/, - selectorSplit: /(?:\[.*\]|\(.*\)|[^\s+>~[(])+|[+>~]/g, - id: /^#([-\w\u00C0-\uFFFF=$]+)$/, - tag: /^\w+/, - relation: /^[+>~]$/, - pseudo: /^:(\w[-\w]*)(\((.+)\))?$/, - pseudos: /:(\w[-\w]*)(\((([^(]+)|([^(]+\([^(]+)\))\))?/g, - attribs: /\[(\w+)\s*([~^$*|])?(=)?\s*([^\[\]]*|"[^"]*"|'[^']*')?\](?=$|\[|:|\s)/g, - classes: /\.([-\w\u00C0-\uFFFF]+)/g, - quoted: /^["'](.*)["']$/, - nth: /^((odd|even)|([1-9]\d*)|((([1-9]\d*)?)n([-+]\d+)?)|(-(([1-9]\d*)?)n\+(\d+)))$/, - special: /(:check|:enabl|\bselect)ed\b/ - }, - navigate = function (node, direction, checkTagName) { - var oldName = node.tagName; - while ((node = node[direction + "Sibling"]) && (node.nodeType !== 1 || (checkTagName? node.tagName !== oldName : node.tagName === "!"))) {} - return node; - }, - def = function (obj) { - return typeof obj !== "undefined"; - }, - sortDocumentOrder = function (elmArray) { - return (sortDocumentOrder = elmArray[0].compareDocumentPosition? function (elmArray) { return elmArray.sort( function (a, b) { return 3 - (a.compareDocumentPosition(b) & 6); } ); } : - isIE? function (elmArray) { return elmArray.sort( function (a, b) { return a.sourceIndex - b.sourceIndex; } ); } : - function (elmArray) { return elmArray.sort( function (a, b) { - var range1 = document.createRange(), range2 = document.createRange(); - range1.setStart(a, 0); - range1.setEnd(a, 0); - range2.setStart(b, 0); - range2.setEnd(b, 0); - return range1.compareBoundaryPoints(Range.START_TO_END, range2); - } ); })(elmArray); - }; - var pushAll = function (set1, set2) { - set1.push.apply(set1, slice.apply(set2)); - return set1; - }; - if (isIE) { - pushAll = function (set1, set2) { - if (set2.slice) { - return set1.concat(set2); - } - var i=0, item; - while ((item = set2[i++])) { - set1[set1.length] = item; - } - return set1; - }; - } - return { - isIE : isIE, - camel : camel, - def : def, - allMethods : [], - publicMethods : [ - "prev", - "next", - "hasChild", - "cssSelect", - "elmsByClass", - "elmsByAttribute", - "elmsByTag" - ], - - harmonize : function () { - w.$ = _$; - w.$$ = _$$; - return this; - }, - - initCore : function () { - this.applyMethod.call(w, "$", this.$); - this.applyMethod.call(w, "$$", this.$$); - w.DOMAssistant = this; - if (isIE) { - HTMLArray = Array; - } - HTMLArray.prototype = []; - (function (H) { - H.each = function (fn, context) { - for (var i=0, il=this.length; i= add)? (start - add) % add : start; - } - else if (pseudoVal[8]) { // -an+b - add = pseudoVal[10]? parseInt(pseudoVal[10], 10) : 1; - start = max = parseInt(pseudoVal[11], 10); - while (start > add) { - start -= add; - } - modVal = (max >= add)? (max - add) % add : max; - } - return { start: start, add: add, max: max, modVal: modVal }; - }, - - cssByDOM : function (cssRule) { - var prevParents, currentRule, cssSelectors, childOrSiblingRef, nextTag, nextRegExp, current, previous, prevParent, notElm, addElm, iteratorNext, childElm, sequence, anyTag, - elm = new HTMLArray(), index = elm.indexOf, prevElm = [], matchingElms = [], cssRules = cssRule.replace(regex.rules, ",").split(","), splitRule = {}; - function clearAdded (elm) { - elm = elm || prevElm; - for (var n=elm.length; n--;) { - elm[n].added = null; - elm[n].removeAttribute("added"); - } - } - function clearChildElms () { - for (var n=prevParents.length; n--;) { - prevParents[n].childElms = null; - } - } - function subtractArray (arr1, arr2) { - for (var i=0, src1; (src1=arr1[i]); i++) { - var found = false; - for (var j=0, src2; (src2=arr2[j]); j++) { - if (src2 === src1) { - found = true; - arr2.splice(j, 1); - break; - } - } - if (found) { - arr1.splice(i--, 1); - } - } - return arr1; - } - function getAttr (elm, attr) { - return (isIE || regex.special.test(attr))? elm[camel[attr.toLowerCase()] || attr] : elm.getAttribute(attr, 2); - } - function attrToRegExp (attrVal, substrOperator) { - attrVal = attrVal? attrVal.replace(regex.quoted, "$1").replace(/(\.|\[|\])/g, "\\$1") : null; - return { - "^": "^" + attrVal, - "$": attrVal + "$", - "*": attrVal, - "|": "^" + attrVal + "(\\-\\w+)*$", - "~": "\\b" + attrVal + "\\b" - }[substrOperator] || (attrVal !== null? "^" + attrVal + "$" : attrVal); - } - function notComment(el) { - return (el || this).tagName !== "!"; - } - function getTags (tag, context) { - return isIE5? (tag === "*"? context.all : context.all.tags(tag)) : context.getElementsByTagName(tag); - } - function getElementsByTagName (tag, parent) { - tag = tag || "*"; - parent = parent || document; - return (parent === document || parent.lastModified)? tagCache[tag] || (tagCache[tag] = getTags(tag, document)) : getTags(tag, parent); - } - function getElementsByPseudo (previousMatch, pseudoClass, pseudoValue) { - prevParents = []; - var pseudo = pseudoClass.split("-"), matchingElms = [], idx = 0, checkNodeName = /\-of\-type$/.test(pseudoClass), recur, - match = { - first: function(el) { return !navigate(el, "previous", checkNodeName); }, - last: function(el) { return !navigate(el, "next", checkNodeName); }, - empty: function(el) { return !el.firstChild; }, - enabled: function(el) { return !el.disabled && el.type !== "hidden"; }, - disabled: function(el) { return el.disabled; }, - checked: function(el) { return el.checked; }, - contains: function(el) { return (el.innerText || el.textContent || "").indexOf(pseudoValue.replace(regex.quoted, "$1")) > -1; }, - other: function(el) { return getAttr(el, pseudoClass) === pseudoValue; } - }; - function basicMatch(key) { - while ((previous=previousMatch[idx++])) { - if (notComment(previous) && match[key](previous)) { - matchingElms[matchingElms.length] = previous; - } - } - return matchingElms; - } - var word = pseudo[0] || null; - if (word && match[word]) { - return basicMatch(word); - } - switch (word) { - case "only": - var kParent, kTag; - while ((previous=previousMatch[idx++])) { - prevParent = previous.parentNode; - var q = previous.nodeName; - if (prevParent !== kParent || q !== kTag) { - if (match.first(previous) && match.last(previous)) { - matchingElms[matchingElms.length] = previous; - } - kParent = prevParent; - kTag = q; - } - } - break; - case "nth": - if (pseudoValue === "n") { - matchingElms = previousMatch; - } - else { - var direction = (pseudo[1] === "last")? ["lastChild", "previousSibling"] : ["firstChild", "nextSibling"]; - sequence = DOMAssistant.getSequence(pseudoValue); - if (sequence) { - while ((previous=previousMatch[idx++])) { - prevParent = previous.parentNode; - prevParent.childElms = prevParent.childElms || {}; - var p = previous.nodeName; - if (!prevParent.childElms[p]) { - var childCount = 0; - iteratorNext = sequence.start; - childElm = prevParent[direction[0]]; - while (childElm && (sequence.max < 0 || iteratorNext <= sequence.max)) { - var c = childElm.nodeName; - if ((checkNodeName && c === p) || (!checkNodeName && childElm.nodeType === 1 && c !== "!")) { - if (++childCount === iteratorNext) { - if (c === p) { matchingElms[matchingElms.length] = childElm; } - iteratorNext += sequence.add; - } - } - childElm = childElm[direction[1]]; - } - if (anyTag) { sort++; } - prevParent.childElms[p] = true; - prevParents[prevParents.length] = prevParent; - } - } - clearChildElms(); - } - } - break; - case "target": - var hash = document.location.hash.slice(1); - if (hash) { - while ((previous=previousMatch[idx++])) { - if (getAttr(previous, "name") === hash || getAttr(previous, "id") === hash) { - matchingElms[matchingElms.length] = previous; - break; - } - } - } - break; - case "not": - if ((recur = regex.pseudo.exec(pseudoValue))) { - matchingElms = subtractArray(previousMatch, getElementsByPseudo(previousMatch, recur[1]? recur[1].toLowerCase() : null, recur[3] || null)); - } - else { - for (var re in regex) { - if (regex[re].lastIndex) { - regex[re].lastIndex = 0; - } - } - pseudoValue = pseudoValue.replace(regex.id, "[id=$1]"); - var notTag = regex.tag.exec(pseudoValue); - var notClass = regex.classes.exec(pseudoValue); - var notAttr = regex.attribs.exec(pseudoValue); - var notRegExp = new RegExp(notAttr? attrToRegExp(notAttr[4], notAttr[2]) : "(^|\\s)" + (notTag? notTag[0] : notClass? notClass[1] : "") + "(\\s|$)", "i"); - while ((notElm=previousMatch[idx++])) { - addElm = null; - if (notTag && !notRegExp.test(notElm.nodeName) || notClass && !notRegExp.test(notElm.className)) { - addElm = notElm; - } - else if (notAttr) { - var att = getAttr(notElm, notAttr[1]); - if (!def(att) || att === false || typeof att === "string" && !notRegExp.test(att)) { - addElm = notElm; - } - } - if (addElm && !addElm.added) { - addElm.added = true; - matchingElms[matchingElms.length] = addElm; - } - } - } - break; - default: return basicMatch("other"); - } - return matchingElms; - } - function pushUnique(set1, set2) { - var i=0, s=set1, item; - while ((item = set2[i++])) { - if (!s.length || s.indexOf(item) < 0) { - set1.push(item); - } - } - return set1; - } - sort = -1; - for (var a=0, tagBin=[]; (currentRule=cssRules[a]); a++) { - if (!(cssSelectors = currentRule.match(regex.selectorSplit)) || a && index.call(cssRules.slice(0, a), currentRule) > -1) { continue; } - prevElm = [this]; - for (var i=0, rule; (rule=cssSelectors[i]); i++) { - matchingElms = []; - if ((childOrSiblingRef = regex.relation.exec(rule))) { - var idElm = null, nextWord = cssSelectors[i+1]; - if ((nextTag = regex.tag.exec(nextWord))) { - nextTag = nextTag[0]; - nextRegExp = new RegExp("(^|\\s)" + nextTag + "(\\s|$)", "i"); - } - else if (regex.id.test(nextWord)) { - idElm = DOMAssistant.$(nextWord) || null; - } - for (var j=0, prevRef; (prevRef=prevElm[j]); j++) { - switch (childOrSiblingRef[0]) { - case ">": - var children = idElm || getElementsByTagName(nextTag, prevRef); - for (var k=0, child; (child=children[k]); k++) { - if (child.parentNode === prevRef) { - matchingElms[matchingElms.length] = child; - } - } - break; - case "+": - if ((prevRef = navigate(prevRef, "next"))) { - if ((idElm && idElm[0] === prevRef) || (!idElm && (!nextTag || nextRegExp.test(prevRef.nodeName)))) { - matchingElms[matchingElms.length] = prevRef; - } - } - break; - case "~": - while ((prevRef = prevRef.nextSibling) && !prevRef.added) { - if ((idElm && idElm[0] === prevRef) || (!idElm && (!nextTag || nextRegExp.test(prevRef.nodeName)))) { - prevRef.added = true; - matchingElms[matchingElms.length] = prevRef; - } - } - break; - } - } - prevElm = matchingElms; - clearAdded(); - rule = cssSelectors[++i]; - if (/^\w+$/.test(rule) || regex.id.test(rule)) { - continue; - } - prevElm.skipTag = true; - } - var cssSelector = regex.selector.exec(rule); - splitRule = { - tag : cssSelector[1]? cssSelector[1] : "*", - id : cssSelector[2], - allClasses : cssSelector[3], - allAttr : cssSelector[5], - allPseudos : cssSelector[10] - }; - anyTag = (splitRule.tag === "*"); - if (splitRule.id) { - var u = 0, DOMElm = document.getElementById(splitRule.id.slice(1)); - if (DOMElm) { - while (prevElm[u] && !DOMAssistant.hasChild.call(prevElm[u], DOMElm)) { u++; } - matchingElms = (u < prevElm.length && (anyTag || splitRule.tag === DOMElm.tagName.toLowerCase()))? [DOMElm] : []; - } - prevElm = matchingElms; - } - else if (splitRule.tag && !prevElm.skipTag) { - if (i===0 && !matchingElms.length && prevElm.length === 1) { - prevElm = matchingElms = pushAll([], getElementsByTagName(splitRule.tag, prevElm[0])); - } - else { - for (var l=0, ll=prevElm.length, tagCollectionMatches, tagMatch; l= 0 || index.call(tagBin, "*") >= 0))? pushUnique : pushAll)(elm, prevElm); - tagBin.push(splitRule.tag); - if (isIE && anyTag) { elm = elm.filter(notComment); } - } - return ((elm.length > 1 && cssRules.length > 1) || sort > 0)? sortDocumentOrder(elm) : elm; - }, - - cssByXpath : function (cssRule) { - var ns = { xhtml: "http://www.w3.org/1999/xhtml" }, - prefix = (document.documentElement.namespaceURI === ns.xhtml)? "xhtml:" : "", - nsResolver = function lookupNamespaceURI (prefix) { - return ns[prefix] || null; - }; - DOMAssistant.cssByXpath = function (cssRule) { - var currentRule, cssSelectors, xPathExpression, cssSelector, splitRule, sequence, - elm = new HTMLArray(), cssRules = cssRule.replace(regex.rules, ",").split(","); - function attrToXPath (wrap) { - var pre = wrap? "[" : "", post = wrap? "]" : ""; - return function (match, p1, p2, p3, p4) { - p4 = (p4 || "").replace(regex.quoted, "$1"); - if (p1 === p4 && p1 === "readonly") { p3 = null; } - return pre + ({ - "^": "starts-with(@" + p1 + ", \"" + p4 + "\")", - "$": "substring(@" + p1 + ", (string-length(@" + p1 + ") - " + (p4.length - 1) + "), " + p4.length + ") = \"" + p4 + "\"", - "*": "contains(concat(\" \", @" + p1 + ", \" \"), \"" + p4 + "\")", - "|": "@" + p1 + "=\"" + p4 + "\" or starts-with(@" + p1 + ", \"" + p4 + "-\")", - "~": "contains(concat(\" \", @" + p1 + ", \" \"), \" " + p4 + " \")" - }[p2] || ("@" + p1 + (p3? "=\"" + p4 + "\"" : ""))) + post; - }; - } - function pseudoToXPath (tag, pseudoClass, pseudoValue) { - tag = /\-child$/.test(pseudoClass)? "*" : tag; - var pseudo = pseudoClass.split("-"), position = ((pseudo[1] === "last")? "(count(following-sibling::" : "(count(preceding-sibling::") + tag + ") + 1)", recur, hash; - switch (pseudo[0]) { - case "nth": return (pseudoValue !== "n" && (sequence = DOMAssistant.getSequence(pseudoValue)))? ((sequence.start === sequence.max)? position + " = " + sequence.start : position + " mod " + sequence.add + " = " + sequence.modVal + ((sequence.start > 1)? " and " + position + " >= " + sequence.start : "") + ((sequence.max > 0)? " and " + position + " <= " + sequence.max: "")) : ""; - case "not": return "not(" + ((recur = regex.pseudo.exec(pseudoValue))? pseudoToXPath(tag, recur[1]? recur[1].toLowerCase() : null, recur[3] || null) : pseudoValue.replace(regex.id, "[id=$1]").replace(regex.tag, "self::$0").replace(regex.classes, "contains(concat(\" \", @class, \" \"), \" $1 \")").replace(regex.attribs, attrToXPath())) + ")"; - case "first": return "not(preceding-sibling::" + tag + ")"; - case "last": return "not(following-sibling::" + tag + ")"; - case "only": return "not(preceding-sibling::" + tag + " or following-sibling::" + tag + ")"; - case "empty": return "not(child::*) and not(text())"; - case "contains": return "contains(., \"" + pseudoValue.replace(regex.quoted, "$1") + "\")"; - case "enabled": return "not(@disabled) and not(@type=\"hidden\")"; - case "disabled": return "@disabled"; - case "target": return "@name=\"" + (hash = document.location.hash.slice(1)) + "\" or @id=\"" + hash + "\""; - default: return "@" + pseudoClass + "=\"" + pseudoValue + "\""; - } - } - for (var i=0; (currentRule=cssRules[i]); i++) { - if (!(cssSelectors = currentRule.match(regex.selectorSplit)) || i && elm.indexOf.call(cssRules.slice(0, i), currentRule) > -1) { continue; } - xPathExpression = xPathExpression? xPathExpression + " | ." : "."; - for (var j=0, jl=cssSelectors.length; j": "/", "+": "/following-sibling::*[1]/self::", "~": "/following-sibling::" }[splitRule.tagRelation] || "") : ((j > 0 && regex.relation.test(cssSelectors[j-1]))? splitRule.tag : ("//" + splitRule.tag))) + - (splitRule.id || "").replace(regex.id, "[@id = \"$1\"]") + - (splitRule.allClasses || "").replace(regex.classes, "[contains(concat(\" \", @class, \" \"), \" $1 \")]") + - (splitRule.allAttr || "").replace(regex.attribs, attrToXPath(true)); - if (splitRule.allPseudos) { - var allPseudos = splitRule.allPseudos.match(regex.pseudos); - for (var k=0, kl=allPseudos.length; k 0 && ajaxObj.params)? ("&" + ajaxObj.params) : ""); - } - return DOMAssistant.AJAX.makeCall.call(this, ajaxObj); - }, - - get : function (url, callback, addToContent) { - return DOMAssistant.AJAX.makeCall.call(this, createAjaxObj(url, "GET", callback, addToContent)); - }, - - post : function (url, callback) { - return DOMAssistant.AJAX.makeCall.call(this, createAjaxObj(url, "POST", callback)); - }, - - load : function (url, addToContent) { - this.get(url, DOMAssistant.AJAX.replaceWithAJAXContent, addToContent); - }, - - makeCall : function (ajaxObj) { - var XMLHttp = DOMAssistant.AJAX.initRequest(); - if (XMLHttp) { - globalXMLHttp = XMLHttp; - (function (elm) { - var url = ajaxObj.url, - method = ajaxObj.method || "GET", - callback = ajaxObj.callback, - params = ajaxObj.params, - headers = ajaxObj.headers, - responseType = ajaxObj.responseType || "text", - addToContent = ajaxObj.addToContent, - timeout = ajaxObj.timeout || null, - ex = ajaxObj.exception, - timeoutId = null, - done = false; - XMLHttp.open(method, url, true); - XMLHttp.setRequestHeader("AJAX", "true"); - XMLHttp.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - if (method === "POST") { - XMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - XMLHttp.setRequestHeader("Content-length", params? params.length : 0); - if (XMLHttp.overrideMimeType) { - XMLHttp.setRequestHeader("Connection", "close"); - } - } - if (responseType === "json") { - XMLHttp.setRequestHeader("Accept", "application/json, text/javascript, */*"); - } - for (var i in headers) { - if (typeof i === "string") { - XMLHttp.setRequestHeader(i, headers[i]); - } - } - if (typeof callback === "function") { - XMLHttp.onreadystatechange = function () { - try { - if (XMLHttp.readyState === 4 && !done) { - window.clearTimeout(timeoutId); - done = true; - status = XMLHttp.status; - statusText = XMLHttp.statusText; - readyState = 4; - if ((status || location.protocol !== "file:") && (status < 200 || status >= 300)) { - throw new Error(statusText); - } - var response = /xml/i.test(responseType)? XMLHttp.responseXML : XMLHttp.responseText; - if (/json/i.test(responseType) && !!response) { - response = (typeof JSON === "object" && typeof JSON.parse === "function")? JSON.parse(response) : eval("(" + response + ")"); - } - globalXMLHttp = null; - XMLHttp.onreadystatechange = function () {}; - requestPool.push(XMLHttp); - callback.call(elm, response, addToContent); - } - } - catch (e) { - globalXMLHttp = XMLHttp = null; - if (typeof ex === "function") { - ex.call(elm, e); - ex = null; - } - } - }; - } - XMLHttp.send(params); - if (timeout) { - timeoutId = window.setTimeout( function () { - if (!done) { - XMLHttp.abort(); - done = true; - if (typeof ex === "function") { - readyState = 0; - status = 408; - statusText = "Request timeout"; - globalXMLHttp = XMLHttp = null; - ex.call(elm, new Error(statusText)); - ex = null; - } - } - }, timeout); - } - })(this); - } - return this; - }, - - replaceWithAJAXContent : function (content, add) { - if (add) { - this.innerHTML += content; - } - else { - DOMAssistant.cleanUp(this); - this.innerHTML = content; - } - }, - - getReadyState : function () { - return (globalXMLHttp && DOMAssistant.def(globalXMLHttp.readyState))? globalXMLHttp.readyState : readyState; - }, - - getStatus : function () { - return status; - }, - - getStatusText : function () { - return statusText; - } - }; -}(); -DOMAssistant.attach(DOMAssistant.AJAX); -DOMAssistant.CSS = function () { - var def = DOMAssistant.def, - direct = { display: true }; - return { - addClass : function (className) { - if (!this.hasClass(className)) { - var currentClass = this.className; - this.className = currentClass + (currentClass.length? " " : "") + className; - } - return this; - }, - - removeClass : function (className) { - return this.replaceClass(className); - }, - - replaceClass : function (className, newClass) { - var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i"); - this.className = this.className.replace(classToRemove, function (match, p1, p2) { - return newClass? (p1 + newClass + p2) : " "; - }).replace(/^\s+|\s+$/g, ""); - return this; - }, - - hasClass : function (className) { - return (" " + this.className + " ").indexOf(" " + className + " ") > -1; - }, - - setStyle : function (style, value) { - var css = this.style; - if ("filters" in this && (typeof style === "string"? /opacity/i.test(style) : def(style.opacity))) { - css.zoom = 1; - css.filter = (css.filter || "").replace(/alpha\([^)]*\)/, "") + "alpha(opacity=" + (def(style.opacity)? style.opacity : value) * 100 + ")"; - } - if (def(css.cssText)) { - var styleToSet = css.cssText; - if (typeof style === "object") { - for (var i in style) { - if (typeof i === "string") { - if (direct[i]) { css[i] = style[i]; } - styleToSet += ";" + i + ":" + style[i]; - } - } - } - else { - if (direct[style]) { css[style] = value; } - styleToSet += ";" + style + ":" + value; - } - css.cssText = styleToSet; - } - return this; - }, - - getStyle : function (cssRule) { - var val = "", f; - cssRule = cssRule.toLowerCase(); - if (document.defaultView && document.defaultView.getComputedStyle) { - val = document.defaultView.getComputedStyle(this, "").getPropertyValue(cssRule); - } - else if (this.currentStyle) { - if ("filters" in this && cssRule === "opacity") { - val = (f = this.style.filter || this.currentStyle.filter) && f.indexOf("opacity=") >= 0? parseFloat(f.match(/opacity=([^)]*)/)[1]) / 100 : 1; - } - else { - cssRule = cssRule.replace(/^float$/, "styleFloat").replace(/\-(\w)/g, function (match, p1) { - return p1.toUpperCase(); - }); - val = this.currentStyle[cssRule]; - } - if (val === "auto" && /^(width|height)$/.test(cssRule) && this.currentStyle.display !== "none") { - val = this["offset" + cssRule.charAt(0).toUpperCase() + cssRule.substr(1)] + "px"; - } - } - return val; - } - }; -}(); -DOMAssistant.attach(DOMAssistant.CSS); -DOMAssistant.Content = function () { - var D$ = DOMAssistant.$$; - return { - init : function () { - DOMAssistant.setCache(false); - }, - - create : function (name, attr, append, content) { - var elm = D$(document.createElement(name)); - if (attr) { - elm = elm.setAttributes(attr); - } - if (DOMAssistant.def(content)) { - elm.addContent(content); - } - if (append) { - this.appendChild(elm); - } - return elm; - }, - - setAttributes : function (attr) { - if (DOMAssistant.isIE) { - var setAttr = function (elm, att, val) { - var attLower = att.toLowerCase(); - switch (attLower) { - case "name": - case "type": - case "multiple": - return D$(document.createElement(elm.outerHTML.replace(new RegExp(attLower + "(=[a-zA-Z]+)?"), " ").replace(">", " " + attLower + "=" + val + ">"))); - case "style": - elm.style.cssText = val; - return elm; - default: - elm[DOMAssistant.camel[attLower] || att] = val; - return elm; - } - }; - DOMAssistant.Content.setAttributes = function (attr) { - var elem = this; - var parent = this.parentNode; - for (var i in attr) { - if (typeof attr[i] === "string" || typeof attr[i] === "number") { - var newElem = setAttr(elem, i, attr[i]); - if (parent && /(name|type)/i.test(i)) { - if (elem.innerHTML) { - newElem.innerHTML = elem.innerHTML; - } - parent.replaceChild(newElem, elem); - } - elem = newElem; - } - } - return elem; - }; - } - else { - DOMAssistant.Content.setAttributes = function (attr) { - for (var i in attr) { - if (/class/i.test(i)) { - this.className = attr[i]; - } - else { - this.setAttribute(i, attr[i]); - } - } - return this; - }; - } - return DOMAssistant.Content.setAttributes.call(this, attr); - }, - - addContent : function (content) { - var type = typeof content; - if (type === "string" || type === "number") { - if (!this.firstChild) { - this.innerHTML = content; - } - else { - var tmp = document.createElement("div"); - tmp.innerHTML = content; - for (var i=tmp.childNodes.length-1, last=null; i>=0; i--) { - last = this.insertBefore(tmp.childNodes[i], last); - } - } - } - else if (type === "object" || (type === "function" && !!content.nodeName)) { - this.appendChild(content); - } - return this; - }, - - replaceContent : function (content) { - DOMAssistant.cleanUp(this); - return this.addContent(content); - }, - - replace : function (content, returnNew) { - var type = typeof content; - if (type === "string" || type === "number") { - var parent = this.parentNode; - var tmp = DOMAssistant.Content.create.call(parent, "div", null, false, content); - for (var i=tmp.childNodes.length; i--;) { - parent.insertBefore(tmp.childNodes[i], this.nextSibling); - } - content = this.nextSibling; - parent.removeChild(this); - } - else if (type === "object" || (type === "function" && !!content.nodeName)) { - this.parentNode.replaceChild(content, this); - } - return returnNew? content : this; - }, - - remove : function () { - DOMAssistant.cleanUp(this); - if (this.hasData()) { - if (this.removeEvent) { this.removeEvent(); } - this.unstore(); - } - this.parentNode.removeChild(this); - return null; - } - }; -}(); -DOMAssistant.attach(DOMAssistant.Content); -DOMAssistant.Events = function () { - var handler, - key = "_events", - w3cMode = !!document.addEventListener, - useCapture = { focus: true, blur: true }, - translate = DOMAssistant.isIE? { focus: "activate", blur: "deactivate", mouseenter: "mouseover", mouseleave: "mouseout" } : { mouseenter: "mouseover", mouseleave: "mouseout" }, - regex = { - special: /^submit|reset|change|select$/i, - mouseenterleave: /^mouse(enter|leave)$/i, - dom: /^DOM/, - on: /^on/i - }, - special = function (e) { - return DOMAssistant.isIE && regex.special.test(e); - }, - fix = function (e) { - return translate[e] || e; - }, - createEvent = function (e, type, target) { - e = e || window.event || {}; - if (e.event) { return e; } - var event = { - event: e, - type: type || e.type, - bubbles: e.bubbles || true, - cancelable: e.cancelable || false, - target: target || e.target || e.srcElement, - clientX: e.clientX || 0, - clientY: e.clientY || 0, - altKey: e.altKey || false, - ctrlKey: e.ctrlKey || false, - shiftKey: e.shiftKey || false, - button: e.button || null, - timeStamp: +new Date(), - preventDefault: function() { - if (e.preventDefault) { e.preventDefault(); } - this.returnValue = e.returnValue = false; - }, - stopPropagation: function() { - if (e.stopPropagation) { e.stopPropagation(); } - this.cancelBubble = e.cancelBubble = true; - } - }; - if (event.target && 3 === event.target.nodeType) { // Safari textnode bug - event.target = event.target.parentNode; - } - event.currentTarget = event.target; - event.relatedTarget = e.relatedTarget || (e.fromElement === event.target? e.toElement : e.fromElement) || null; - var de = document.documentElement, b = document.body; - event.pageX = DOMAssistant.def(e.pageX)? e.pageX : (event.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0)); - event.pageY = DOMAssistant.def(e.pageY)? e.pageY : (event.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0)); - if ("number" === typeof e.which) { - event.keyCode = e.keyCode; - event.charCode = event.which = e.which; - } - else if (e.keyCode) { - event.keyCode = event.charCode = e.keyCode; - } - return event; - }; - - return { - publicMethods : [ - "triggerEvent", - "addEvent", - "removeEvent", - "relayEvent", - "unrelayEvent", - "preventDefault", - "cancelBubble" - ], - - init : function () { - DOMAssistant.preventDefault = this.preventDefault; - DOMAssistant.cancelBubble = this.cancelBubble; - handler = this.handleEvent; - }, - - triggerEvent : function (evt, target, e) { - var fevt = fix(evt), - events = this.retrieve(key), - event = e || createEvent(e, fevt, target || this); - event.currentTarget = this; - if (events && events[fevt]) { - for (var i=0, iL=events[fevt].length; i<\/script>"); - document.getElementById("ieScriptLoad").onreadystatechange = function() { - if (this.readyState === "complete") { - DOMHasLoaded(); - } - }; - @end @*/ - /* Mozilla, Chrome, Opera */ - if (document.addEventListener) { - document.addEventListener("DOMContentLoaded", DOMHasLoaded, false); - } - /* Safari, iCab, Konqueror */ - if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) { - DOMLoadTimer = setInterval(function () { - if (/loaded|complete/i.test(document.readyState)) { - DOMHasLoaded(); - clearInterval(DOMLoadTimer); - } - }, 10); - } - /* Other web browsers */ - window.onload = DOMHasLoaded; - - return { - DOMReady : function () { - for (var i=0, il=arguments.length, funcRef; i= thisstyle.minw ) && - (!thisstyle.maxw || thisstyle.maxw && currWidth <= thisstyle.maxw ) ){ - if( !styleBlocks[ thisstyle.media ] ){ - styleBlocks[ thisstyle.media ] = []; - } - styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); - } - } - - //remove any existing respond style element(s) - for( var i in appendedEls ){ - if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){ - head.removeChild( appendedEls[ i ] ); - } - } - - //inject active styles, grouped by media type - for( var i in styleBlocks ){ - var ss = doc.createElement( "style" ), - css = styleBlocks[ i ].join( "\n" ); - - ss.type = "text/css"; - ss.media = i; - - if ( ss.styleSheet ){ - ss.styleSheet.cssText = css; - } - else { - ss.appendChild( doc.createTextNode( css ) ); - } - dFrag.appendChild( ss ); - appendedEls.push( ss ); - } - - //append to DOM at once - head.insertBefore( dFrag, lastLink.nextSibling ); - }, - //tweaked Ajax functions from Quirksmode - ajax = function( url, callback ) { - var req = xmlHttp(); - if (!req){ - return; - } - req.open( "GET", url, true ); - req.onreadystatechange = function () { - if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){ - return; - } - callback( req.responseText ); - } - if ( req.readyState == 4 ){ - return; - } - req.send(); - }, - //define ajax obj - xmlHttp = (function() { - var xmlhttpmethod = false, - attempts = [ - function(){ return new ActiveXObject("Microsoft.XMLHTTP") }, - function(){ return new XMLHttpRequest() } - ], - al = attempts.length; - - while( al-- ){ - try { - xmlhttpmethod = attempts[ al ](); - } - catch(e) { - continue; - } - break; - } - return function(){ - return xmlhttpmethod; - }; - })(); - - //translate CSS - ripCSS(); - - //expose update for re-running respond later on - respond.update = ripCSS; - - //adjust on resize - function callMedia(){ - applyMedia( true ); - } - if( win.addEventListener ){ - win.addEventListener( "resize", callMedia, false ); - } - else if( win.attachEvent ){ - win.attachEvent( "onresize", callMedia ); - } -})( - this, - (function( win ){ - - //for speed, flag browsers with window.matchMedia support and IE 9 as supported - if( win.matchMedia ){ return true; } - - var bool, - doc = document, - docElem = doc.documentElement, - refNode = docElem.firstElementChild || docElem.firstChild, - // fakeBody required for - fakeUsed = !doc.body, - fakeBody = doc.body || doc.createElement( "body" ), - div = doc.createElement( "div" ), - q = "only all"; - - div.id = "mq-test-1"; - div.style.cssText = "position:absolute;top:-99em"; - fakeBody.appendChild( div ); - - div.innerHTML = '_'; - if( fakeUsed ){ - docElem.insertBefore( fakeBody, refNode ); - } - div.removeChild( div.firstChild ); - bool = div.offsetWidth == 9; - if( fakeUsed ){ - docElem.removeChild( fakeBody ); - } - else{ - fakeBody.removeChild( div ); - } - return bool; - })( this ) -); - diff --git a/source/javascripts/libs/ie/selectivizr-1.0.1.js b/source/javascripts/libs/ie/selectivizr-1.0.1.js deleted file mode 100644 index 0846b919..00000000 --- a/source/javascripts/libs/ie/selectivizr-1.0.1.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * selectivizr v1.0.1 - (c) Keith Clark, freely distributable under the terms of the MIT license. - * selectivizr.com - */ -var k=true,p=false;(function(A){function N(a){return a.replace(O,q).replace(P,function(b,e,c){b=c.split(",");c=0;for(var g=b.length;c0){d=f;var x;i=h.substring(0,i).replace(U,o);if(i==o||i.charAt(i.length-1)==w)i+="*";try{x=y(i)}catch(ha){}if(x){i=0;for(m=x.length;i-1)a=a.substring(0,f);if(a.charAt(0)==":")switch(a.slice(1)){case "root":b=function(d){return c?d!=H:d==H};break;case "target":if(s==8){b=function(d){function l(){var m=location.hash,j=m.slice(1);return c?m==""||d.id!=j:m!=""&&d.id==j}t(A,"hashchange",function(){u(d,e,l())});return l()};break}return p;case "checked":b=function(d){X.test(d.type)&&t(d,"propertychange",function(){event.propertyName=="checked"&&u(d,e,d.checked!==c)});return d.checked!==c};break;case "disabled":c=!c;case "enabled":b=function(d){if(Y.test(d.tagName)){t(d,"propertychange",function(){event.propertyName=="$disabled"&&u(d,e,d.a===c)});z.push(d);d.a=d.disabled;return d.disabled===c}return a==":enabled"?c:!c};break;case "focus":g="focus";h="blur";case "hover":if(!g){g="mouseenter";h="mouseleave"}b=function(d){t(d,c?h:g,function(){u(d,e,k)});t(d,c?g:h,function(){u(d,e,p)});return c};break;default:if(!Z.test(a))return p}return{className:e,b:b}}function G(a){return I+"-"+(s==6&&$?aa++:a.replace(ba,function(b){return b.charCodeAt(0)}))}function Q(a){return a.replace(J,q).replace(ca,w)}function u(a,b,e){var c=a.className;b=E(c,b,e);if(b!=c){a.className=b;a.parentNode.className+=o}}function E(a,b,e){var c=RegExp("(^|\\s)"+b+"(\\s|$)"),g=c.test(a);return e?g?a:a+w+b:g?a.replace(c,q).replace(J,q):a}function t(a,b,e){a.attachEvent("on"+b,e)}function D(a,b){if(/^https?:\/\//i.test(a))return b.substring(0,b.indexOf("/",8))==a.substring(0,a.indexOf("/",8))?a:null;if(a.charAt(0)=="/")return b.substring(0,b.indexOf("/",8))+a;var e=b.split("?")[0];if(a.charAt(0)!="?"&&e.charAt(e.length-1)!="/")e=e.substring(0,e.lastIndexOf("/")+1);return e+a}function K(a){if(a){v.open("GET",a,p);v.send();return(v.status==200?v.responseText:o).replace(da,o).replace(ea,function(b,e,c,g,h){return K(D(c||h,a))}).replace(fa,function(b,e,c){e=e||"";return" url("+e+D(c,a)+e+") "})}return o}function ga(){var a,b;a=n.getElementsByTagName("BASE");for(var e=a.length>0?a[0].href:n.location.href,c=0;c0&&setInterval(function(){for(var g=0,h=z.length;g8||!v)){var L={NW:"*.Dom.select",DOMAssistant:"*.$",Prototype:"$$",YAHOO:"*.util.Selector.query",MooTools:"$$",Sizzle:"*",jQuery:"*",dojo:"*.query"},y,z=[],aa=0,$=k,I="slvzr",M=I+"DOMReady",da=/(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g,ea=/@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g,fa=/\burl\(\s*(["']?)([^"')]+)\1\s*\)/g,Z=/^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/,O=/:(:first-(?:line|letter))/g,P=/(^|})\s*([^\{]*?[\[:][^{]+)/g,T=/([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g,U=/(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g,ba=/[^\w-]/g,Y=/^(INPUT|SELECT|TEXTAREA|BUTTON)$/,X=/^(checkbox|radio)$/,F=s>6?/[\$\^*]=(['"])\1/:null,R=/([(\[+~])\s+/g,S=/\s+([)\]+~])/g,ca=/\s+/g,J=/^\s*((?:[\S\s]*\S)?)\s*$/,o="",w=" ",q="$1";n.write(" -

abc

-

def

-

Testing page

- -{% endhighlight %} - -

syntax_test.js

-{% highlight js %} - -/** -sample javascript from xui -*/ - -var undefined, - xui, - window = this, - string = new String('string'), - document = window.document, - simpleExpr = /^#?([\w-]+)$/, - idExpr = /^#/, - tagExpr = /<([\w:]+)/, - slice = function (e) { return [].slice.call(e, 0); }; - try { var a = slice(document.documentElement.childNodes)[0].nodeType; } - catch(e){ slice = function (e) { var ret=[]; for (var i=0; e[i]; i++) - ret.push(e[i]); return ret; }; } - -window.x$ = window.xui = xui = function(q, context) { - return new xui.fn.find(q, context); -}; - - -{% endhighlight %} - -

syntax_test.rb

-{% highlight ruby %} - -include Enumerable - -def initialize(rbconfig) -@rbconfig = rbconfig -@no_harm = false -end - -def load_savefile -begin - File.foreach(savefile()) do |line| - k, v = *line.split(/=/, 2) - self[k] = v.strip - end -rescue Errno::ENOENT - setup_rb_error $!.message + "\n#{File.basename($0)} config first" -end -end - -if c['rubylibdir'] - # V > 1.6.3 - libruby = "#{c['prefix']}/lib/ruby" - siterubyverarch = c['sitearchdir'] -end -parameterize = lambda {|path| - path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix') -} - -if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg } - makeprog = arg.sub(/'/, '').split(/=/, 2)[1] -else - makeprog = 'make' -end - -def setup_rb_error(msg) - raise SetupError, msg -end - -if $0 == __FILE__ - begin - ToplevelInstaller.invoke - rescue SetupError - raise if $DEBUG - $stderr.puts $!.message - $stderr.puts "Try 'ruby #{$0} --help' for detailed usage." - exit 1 - end -end -{% endhighlight %} - -

syntax_test.php

-{% highlight php %} - - -hasPermission("ManageCountries")) { ?> - - - - -
-{% endhighlight %} - - -

syntax_test.hs

-{% highlight hs %} -{-# LANGUAGE OverloadedStrings #-} -module Main where - ---import Prelude hiding (id) ---import Control.Category (id) -import Control.Arrow ((>>>), (***), arr) -import Control.Monad (forM_) --- import Data.Monoid (mempty, mconcat) - --- import System.FilePath - -import Hakyll - - -main :: IO () -main = hakyll $ do - - route "css/*" $ setExtension "css" - compile "css/*" $ byExtension (error "Not a (S)CSS file") - [ (".css", compressCssCompiler) - , (".scss", sass) - ] - - route "js/**" idRoute - compile "js/**" copyFileCompiler - - route "img/*" idRoute - compile "img/*" copyFileCompiler - - compile "templates/*" templateCompiler - - forM_ ["test.md", "index.md"] $ \page -> do - route page $ setExtension "html" - compile page $ pageCompiler - >>> applyTemplateCompiler "templates/default.html" - >>> relativizeUrlsCompiler - -sass :: Compiler Resource String -sass = getResourceString >>> unixFilter "sass" ["-s", "--scss"] - >>> arr compressCss - -{% endhighlight %} - -

syntax_test.sh

-{% highlight sh %} -#!/bin/bash - -cd $ROOT_DIR -DOT_FILES="lastpass weechat ssh Xauthority" -for dotfile in $DOT_FILES; do conform_link "$DATA_DIR/$dotfile" ".$dotfile"; done - -# TODO: refactor with suffix variables (or common cron values) - -case "$PLATFORM" in - linux) - #conform_link "$CONF_DIR/shell/zshenv" ".zshenv" - crontab -l > $ROOT_DIR/tmp/crontab-conflict-arch - cd $ROOT_DIR/$CONF_DIR/cron - if [[ "$(diff ~/tmp/crontab-conflict-arch crontab-current-arch)" == "" - ]]; - then # no difference with current backup - logger "$LOG_PREFIX: crontab live settings match stored "\ - "settings; no restore required" - rm ~/tmp/crontab-conflict-arch - else # current crontab settings in file do not match live settings - crontab $ROOT_DIR/$CONF_DIR/cron/crontab-current-arch - logger "$LOG_PREFIX: crontab stored settings conflict with "\ - "live settings; stored settings restored. "\ - "Previous settings recorded in ~/tmp/crontab-conflict-arch." - fi - ;; - -{% endhighlight %} - -

syntax_test.py

-{% highlight py %} -# test python (sample from offlineimap) - -class ExitNotifyThread(Thread): - """This class is designed to alert a "monitor" to the fact that a thread has - exited and to provide for the ability for it to find out why.""" - def run(self): - global exitthreads, profiledir - self.threadid = thread.get_ident() - try: - if not profiledir: # normal case - Thread.run(self) - else: - try: - import cProfile as profile - except ImportError: - import profile - prof = profile.Profile() - try: - prof = prof.runctx("Thread.run(self)", globals(), locals()) - except SystemExit: - pass - prof.dump_stats( \ - profiledir + "/" + str(self.threadid) + "_" + \ - self.getName() + ".prof") - except: - self.setExitCause('EXCEPTION') - if sys: - self.setExitException(sys.exc_info()[1]) - tb = traceback.format_exc() - self.setExitStackTrace(tb) - else: - self.setExitCause('NORMAL') - if not hasattr(self, 'exitmessage'): - self.setExitMessage(None) - - if exitthreads: - exitthreads.put(self, True) - - def setExitCause(self, cause): - self.exitcause = cause - def getExitCause(self): - """Returns the cause of the exit, one of: - 'EXCEPTION' -- the thread aborted because of an exception - 'NORMAL' -- normal termination.""" - return self.exitcause - def setExitException(self, exc): - self.exitexception = exc - def getExitException(self): - """If getExitCause() is 'EXCEPTION', holds the value from - sys.exc_info()[1] for this exception.""" - return self.exitexception - def setExitStackTrace(self, st): - self.exitstacktrace = st - def getExitStackTrace(self): - """If getExitCause() is 'EXCEPTION', returns a string representing - the stack trace for this exception.""" - return self.exitstacktrace - def setExitMessage(self, msg): - """Sets the exit message to be fetched by a subsequent call to - getExitMessage. This message may be any object or type except - None.""" - self.exitmessage = msg - def getExitMessage(self): - """For any exit cause, returns the message previously set by - a call to setExitMessage(), or None if there was no such message - set.""" - return self.exitmessage - -{% endhighlight %} - -

syntax_test.pl

-{% highlight perl %} -#!perl -w - -# Time-stamp: <2002/04/06, 13:12:13 (EST), maverick, csvformat.pl> -# Two pass CSV file to table formatter - -$delim = $#ARGV >= 1 ? $ARGV[1] : ','; -print STDERR "Split pattern: $delim\n"; - -# first pass -open F, "<$ARGV[0]" or die; -while() -{ - chomp; - $i = 0; - map { $max[$_->[1]] = $_->[0] if $_->[0] > ($max[$_->[1]] || 0) } - (map {[length $_, $i++]} split($delim)); -} -close F; - -print STDERR 'Field width: ', join(', ', @max), "\n"; -print STDERR join(' ', map {'-' x $_} @max); - -# second pass -open F, "<$ARGV[0]" or die; -while() - { - chomp; - $i = 0; - map { printf("%-$max[$_->[1]]s ", $_->[0]) } - (map {[$_, $i++]} split($delim)); - print "\n"; -} -close F; - -{% endhighlight %} - -

syntax_test.java

-{% highlight java %} -import java.util.Map; -import java.util.TreeSet; - -public class GetEnv { - /** - * let's test generics - * @param args the command line arguments - */ - public static void main(String[] args) { - // get a map of environment variables - Map env = System.getenv(); - // build a sorted set out of the keys and iterate - for(String k: new TreeSet(env.keySet())) { - System.out.printf("%s = %s\n", k, env.get(k)); - } - } } -{% endhighlight %} - -

syntax_test.c

-{% highlight c %} -#define UNICODE -#include - -int main(int argc, char **argv) { - int speed = 0, speed1 = 0, speed2 = 0; // 1-20 - printf("Set Mouse Speed by Maverick\n"); - - SystemParametersInfo(SPI_GETMOUSESPEED, 0, &speed, 0); - printf("Current speed: %2d\n", speed); - - if (argc == 1) return 0; - if (argc >= 2) sscanf(argv[1], "%d", &speed1); - if (argc >= 3) sscanf(argv[2], "%d", &speed2); - - if (argc == 2) // set speed to first value - speed = speed1; - else if (speed == speed1 || speed == speed2) // alternate - speed = speed1 + speed2 - speed; - else - speed = speed1; // start with first value - - SystemParametersInfo(SPI_SETMOUSESPEED, 0, speed, 0); - SystemParametersInfo(SPI_GETMOUSESPEED, 0, &speed, 0); - printf("New speed: %2d\n", speed); - return 0; -} - -{% endhighlight %} - diff --git a/source/test/typography.haml b/source/test/typography.haml deleted file mode 100644 index bc524620..00000000 --- a/source/test/typography.haml +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: page -title: Typography Testing -no_sidebar: true ---- - -%h1 Level 01 Heading -%h2 Level 02 Heading -%h3 Level 03 Heading -%h4 Level 04 Heading -%h5 Level 05 Heading -%h6 Level 06 Heading - -%p - Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce sodales ligula sed urna. Aliquam posuere arcu - viverra erat. Pellentesque et enim dapibus ante facilisis bibendum. Nam congue dapibus urna. Vestibulum consequat - arcu at magna. Nunc faucibus mollis lacus. Nulla tempor luctus tellus. Donec blandit lobortis pede. Vestibulum - vel pede ut urna eleifend lacinia. -%p - Maecenas ligula nibh, imperdiet at, interdum eget, sagittis eu, enim. Vivamus vel urna. Donec fringilla - ullamcorper sem. In risus arcu, pellentesque cursus, faucibus cursus, consequat quis, est. Aliquam id erat. - Aliquam arcu. Phasellus vulputate. Integer sem diam, mattis vel, viverra ullamcorper, ultricies quis, nisl. Sed - sollicitudin quam ut nisi. Vivamus velit sapien, volutpat eu, faucibus id, nonummy id, urna. -%p - Take it2 to the power of3 - Praesent iaculis pellentesque est. Nulla facilisi. Etiam fringilla vehicula orci. Aliquam fermentum ipsum id - nulla. Aliquam interdum laoreet leo. Cras accumsan. Nam pharetra diam id nunc. Integer blandit tellus vulputate - felis. Cras aliquam, eros in euismod aliquam, enim nisl mollis metus, quis fringilla ipsum diam ut pede. Mauris a - libero ac velit interdum pulvinar. Nunc ipsum mauris, semper rhoncus, feugiat ut, egestas id, diam. Nullam - porttitor condimentum risus. Vivamus nec enim eget nisi commodo euismod. Ut turpis. Nullam malesuada rutrum - neque. Nam sodales porta elit. Mauris mollis nisl vel augue. - -%p - And we were like Woah, and he was like Woah, and they were like WOAH! - -%p - %abbr(title="For The Win!") FTW! -%p - -%h3 Unordered lists -%ul - %li Lorem ipsum dolor sit amet - %li Consectetur adipisicing elit - %li Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua - %li Ut enim ad minim veniam - -%h3 Ordered lists -%ol - %li Consectetur adipisicing elit - %li Sed do eiusmod tempor incididunt ut labore - %li Et dolore magna aliqua - -%h3 Blockquotes -%blockquote - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore - magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo - consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. - Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - -%h3 Tables -%table - %caption - Jimi Hendrix - albums - %thead - %tr - %th Album - %th Year - %th Price - %tfoot - %tr - %td Album - %td Year - %td Price - %tbody - %tr - %td Are You Experienced - %td 1967 - %td $10.00 - %tr - %td Axis: Bold as Love - %td 1967 - %td $12.00 - %tr - %td Electric Ladyland - %td 1968 - %td $10.00 - %tr - %td Band of Gypsys - %td 1970 - %td $12.00 -%p - %a(href="#")Link - %br/ - %strong <strong> - %br/ - %del <del> deleted - %br/ - %dfn <dfn> dfn - %br/ - %em <em> emphasis - %br/ - -%pre - %code - <html> - <head> - </head> - <body> - <div class = "main"> <div> - </body> - </html> - -%tt - <tt> - Pellentesque tempor, dui ut ultrices viverra, neque urna blandit nisi, id accumsan dolor est vitae risus. -%hr -- cgit v1.2.1