From 8698a276f937cb1cd6f67f7f213e2ea438500d7e Mon Sep 17 00:00:00 2001
From: Brandon Mathis
Date: Mon, 30 May 2011 00:30:16 -0400
Subject: Cleaned out public from repository, updated gitignore, added syntax
highlighting tests, improved syntax highlighting and styling of pre blocks.
Overriding dynamic gist styling. Added a plugin for pygments caching which
should speed things up terrifically. added ender.js as a lightweight way of
scripting the DOM, events, etc. Some general typography and semantic html
improvements.
---
.gitignore | 8 +-
Gemfile | 3 +-
Gemfile.lock | 23 +-
Guardfile | 3 +-
Rakefile | 5 +-
_config.yml | 10 +-
_plugins/blockquote.rb | 109 ++
_plugins/category.rb | 65 +
_plugins/custom_filters.rb | 7 +-
_plugins/iterator.rb | 49 +
_plugins/pygments_cache_patch.rb | 30 +
public/2009/11/13/hello-world/index.html | 160 --
public/2011/03/14/test-post/index.html | 149 --
public/2011/04/07/test-of-typography/index.html | 199 ---
public/about/index.html | 154 --
public/atom.xml | 103 --
public/fonts/adellebasic_bold-webfont.eot | Bin 13694 -> 0 bytes
public/fonts/adellebasic_bold-webfont.svg | 139 --
public/fonts/adellebasic_bold-webfont.ttf | Bin 24072 -> 0 bytes
public/fonts/adellebasic_bold-webfont.woff | Bin 15604 -> 0 bytes
public/images/code_bg.png | Bin 239 -> 0 bytes
public/images/rss.png | Bin 504 -> 0 bytes
public/images/search.png | Bin 333 -> 0 bytes
public/index.html | 207 ---
.../javascripts/libs/DOMAssistantCompressed-2.8.js | 4 -
.../libs/ios-viewport-scaling-bug-fix.js | 20 -
public/javascripts/libs/modernizr-1.7.min.js | 2 -
public/javascripts/libs/respond.js | 8 -
public/javascripts/libs/selectivizr-min.js | 5 -
public/javascripts/octopress.js | 0
public/javascripts/pinboard.js | 52 -
public/javascripts/twitter.js | 70 -
public/sitemap.xml | 35 -
public/stylesheets/screen.css | 1 -
sass/themes/classic/_partials.scss | 5 +-
sass/themes/classic/core/_layout.scss | 2 +-
sass/themes/classic/core/_theme.scss | 67 +-
sass/themes/classic/core/_typography.scss | 11 +-
sass/themes/classic/partials/_pinboard.scss | 15 +
sass/themes/classic/partials/_shared.scss | 12 -
sass/themes/classic/partials/_sidebar.scss | 36 +-
sass/themes/classic/partials/_syntax.scss | 432 ++----
sass/themes/classic/partials/_twitter.scss | 60 +-
source/_includes/article.html | 35 +-
source/_includes/footer.html | 6 +-
source/_includes/head.html | 23 +-
source/_includes/sidebar.html | 4 +-
source/_layouts/archive_monthly.html | 19 +
source/_layouts/archive_yearly.html | 25 +
source/_layouts/default.html | 15 +-
source/_layouts/page.html | 3 +
source/_layouts/post.html | 1 +
source/_posts/2009-11-13-hello-world.markdown | 6 +-
source/about.haml | 1 +
source/archive.html | 24 +
source/index.html | 1 -
.../javascripts/libs/DOMAssistantCompressed-2.8.js | 4 -
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 | 28 +-
source/javascripts/libs/jXHR.js | 85 ++
source/javascripts/libs/json2.js | 481 ++++++
source/javascripts/libs/modernizr-1.7.js | 964 ++++++++++++
source/javascripts/libs/modernizr-1.7.min.js | 2 -
source/javascripts/libs/respond.js | 8 -
source/javascripts/libs/selectivizr-min.js | 5 -
source/javascripts/pinboard.js | 8 +-
source/javascripts/syntax-helper.js | 30 +
source/javascripts/twitter.js | 14 +-
source/test/syntax.html | 397 +++++
source/test/syntax.markdown | 228 ---
74 files changed, 6017 insertions(+), 1991 deletions(-)
create mode 100644 _plugins/blockquote.rb
create mode 100644 _plugins/category.rb
create mode 100644 _plugins/iterator.rb
create mode 100644 _plugins/pygments_cache_patch.rb
delete mode 100644 public/2009/11/13/hello-world/index.html
delete mode 100644 public/2011/03/14/test-post/index.html
delete mode 100644 public/2011/04/07/test-of-typography/index.html
delete mode 100644 public/about/index.html
delete mode 100644 public/atom.xml
delete mode 100644 public/fonts/adellebasic_bold-webfont.eot
delete mode 100644 public/fonts/adellebasic_bold-webfont.svg
delete mode 100644 public/fonts/adellebasic_bold-webfont.ttf
delete mode 100644 public/fonts/adellebasic_bold-webfont.woff
delete mode 100644 public/images/code_bg.png
delete mode 100644 public/images/rss.png
delete mode 100644 public/images/search.png
delete mode 100644 public/index.html
delete mode 100644 public/javascripts/libs/DOMAssistantCompressed-2.8.js
delete mode 100644 public/javascripts/libs/ios-viewport-scaling-bug-fix.js
delete mode 100644 public/javascripts/libs/modernizr-1.7.min.js
delete mode 100644 public/javascripts/libs/respond.js
delete mode 100644 public/javascripts/libs/selectivizr-min.js
delete mode 100644 public/javascripts/octopress.js
delete mode 100644 public/javascripts/pinboard.js
delete mode 100644 public/javascripts/twitter.js
delete mode 100644 public/sitemap.xml
delete mode 100644 public/stylesheets/screen.css
create mode 100644 sass/themes/classic/partials/_pinboard.scss
delete mode 100644 sass/themes/classic/partials/_shared.scss
create mode 100644 source/_layouts/archive_monthly.html
create mode 100644 source/_layouts/archive_yearly.html
create mode 100644 source/archive.html
delete mode 100644 source/javascripts/libs/DOMAssistantCompressed-2.8.js
create mode 100644 source/javascripts/libs/ender.js
create mode 100644 source/javascripts/libs/ender.min.js
create mode 100644 source/javascripts/libs/ie/DOMAssistantComplete-2.8.js
create mode 100644 source/javascripts/libs/ie/respond.js
create mode 100644 source/javascripts/libs/ie/selectivizr-1.0.1.js
create mode 100644 source/javascripts/libs/jXHR.js
create mode 100644 source/javascripts/libs/json2.js
create mode 100644 source/javascripts/libs/modernizr-1.7.js
delete mode 100644 source/javascripts/libs/modernizr-1.7.min.js
delete mode 100644 source/javascripts/libs/respond.js
delete mode 100755 source/javascripts/libs/selectivizr-min.js
create mode 100644 source/javascripts/syntax-helper.js
create mode 100644 source/test/syntax.html
delete mode 100644 source/test/syntax.markdown
diff --git a/.gitignore b/.gitignore
index 8642c401..234b7908 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,9 +2,11 @@ site
.bundle
.DS_Store
.sass-cache
-test
source/_stash
source/stylesheets
+source/javascripts/libs/node_modules
+source/javascripts/libs/syntax-highlighter
vendor/ruby
-vendor/ruby
-vendor/ruby
+_cache
+.gist_cache
+public
diff --git a/Gemfile b/Gemfile
index f904d265..b7473d16 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,4 +1,4 @@
-source :rubygems
+source "http://rubygems.org"
gem 'rake'
gem 'jekyll'
@@ -8,6 +8,5 @@ gem 'haml', '>= 3.1'
gem 'compass', '>= 0.11'
gem 'rubypants'
gem 'rb-fsevent'
-gem 'guard-shell'
gem 'guard-livereload'
gem 'serve'
diff --git a/Gemfile.lock b/Gemfile.lock
index e88c8632..e8ce6a80 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -3,7 +3,7 @@ GEM
specs:
RedCloth (4.2.7)
activesupport (3.0.7)
- addressable (2.2.5)
+ addressable (2.2.6)
chunky_png (1.2.0)
classifier (1.3.3)
fast-stemmer (>= 1.0.0)
@@ -24,10 +24,8 @@ GEM
em-websocket (~> 0.2.0)
guard (>= 0.2.2)
json (~> 1.5.1)
- guard-shell (0.1.1)
- guard (>= 0.2.0)
haml (3.1.1)
- i18n (0.4.2)
+ i18n (0.6.0)
jekyll (0.10.0)
classifier (>= 1.3.1)
directory_watcher (>= 1.1.1)
@@ -37,19 +35,21 @@ GEM
liquid (2.2.2)
maruku (0.6.0)
syntax (>= 1.0.0)
- rack (1.2.2)
- rake (0.8.7)
+ rack (1.3.0)
+ rake (0.9.0)
rb-fsevent (0.4.0)
rdiscount (1.6.8)
rubypants (0.2.0)
sass (3.1.1)
- serve (1.0.0)
- activesupport (~> 3.0.1)
- i18n (~> 0.4.1)
- rack (~> 1.2.1)
- tzinfo (~> 0.3.23)
+ serve (1.1.0)
+ activesupport (~> 3.0.7)
+ i18n (~> 0.6.0)
+ rack (~> 1.3.0)
+ tilt (~> 1.3.1)
+ tzinfo (~> 0.3.27)
syntax (1.0.0)
thor (0.14.6)
+ tilt (1.3.2)
tzinfo (0.3.27)
PLATFORMS
@@ -59,7 +59,6 @@ DEPENDENCIES
RedCloth
compass (>= 0.11)
guard-livereload
- guard-shell
haml (>= 3.1)
jekyll
rake
diff --git a/Guardfile b/Guardfile
index 9fe28584..ea16c628 100644
--- a/Guardfile
+++ b/Guardfile
@@ -1,4 +1,3 @@
guard 'livereload', :api_version => '1.6' do
- watch(/public\/stylesheets\/(.*)\.css/);
- watch(/public\/(.*)\.(js|html|png|jpg|gif|jpeg|ttf|otf|woff|svg)/i);
+ watch(/public\/\S[css|js|html|png|jpg|gif]/)
end
diff --git a/Rakefile b/Rakefile
index 6834e4a3..caec0ce8 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,6 +1,5 @@
require "rubygems"
-require "bundler"
-Bundler.setup
+require "bundler/setup"
port = "4000" # preview project port eg. http://localhost:4000
site = "public" # compiled site directory
@@ -104,7 +103,7 @@ end
desc "Watch the site and regenerate when it changes"
task :watch do
- system "trap 'kill $jekyllPid $guardPid $compassPid' Exit; jekyll --auto & jekyllPid=$!; sleep 0.5; compass watch & compassPid=$!; guard & guardPid=$!; wait"
+ system "trap 'kill $jekyllPid $guardPid $compassPid' Exit; jekyll --auto & jekyllPid=$!; compass watch & compassPid=$!; guard & guardPid=$!; wait"
end
desc "generate and deploy website via rsync"
diff --git a/_config.yml b/_config.yml
index 0ee0141b..81c3eb86 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,8 +1,7 @@
source: source
destination: public
markdown: rdiscount
-pygments: false
-permalink: pretty
+pygments: true
url: http://yoursite.com
title: My Octopress Blog
@@ -10,7 +9,7 @@ author: Your Name
email: you@domain.com #Add your email (optional) for the atom feed
simple_search: http://google.com/search
-recent_posts: 10
+recent_posts: 20
twitter_user: imathis
tweet_count: 3
@@ -19,9 +18,8 @@ show_replies: false
delicious_user:
delicious_count: 3
-pinboard_user: designenthusiast
+pinboard_user: imathis
pinboard_count: 3
-disqus_short_name: imathis
-
+#disqus_short_name: designenthusiast
google_analytics_tracking_id:
diff --git a/_plugins/blockquote.rb b/_plugins/blockquote.rb
new file mode 100644
index 00000000..7a885175
--- /dev/null
+++ b/_plugins/blockquote.rb
@@ -0,0 +1,109 @@
+#
+# Author: Josediaz Gonzalez - https://github.com/josegonzalez
+# Source URL: https://github.com/josegonzalez/josediazgonzalez.com/blob/master/_plugins/blockquote.rb
+# Modified by Brandon Mathis
+#
+require './_plugins/titlecase.rb'
+module Jekyll
+
+ # Outputs a string with a given attribution as a quote
+ #
+ # {% blockquote John Paul Jones %}
+ # Monkeys!
+ # {% endblockquote %}
+ # ...
+ #
+ # Monkeys!
+ #
+ # John Paul Jones
+ #
+ #
+ class Blockquote < Liquid::Block
+ FullCiteWithTitle = /([\w\s]+)(https?:\/\/)(\S+\s)([\w\s]+)/i
+ FullCite = /([\w\s]+)(https?:\/\/)(\S+)/i
+ Author = /([\w\s]+)/
+
+ def initialize(tag_name, markup, tokens)
+ @by = nil
+ @source = nil
+ @title = nil
+ if markup =~ FullCiteWithTitle
+ @by = $1
+ @source = $2 + $3
+ @title = $4.titlecase
+ elsif markup =~ FullCite
+ @by = $1
+ @source = $2 + $3
+ elsif markup =~ Author
+ @by = $1
+ end
+ super
+ end
+
+ def render(context)
+ output = super
+ if @by.nil?
+ '' + output.join + '
'
+ elsif !@title.nil?
+ '' + output.join + '
' + '' + @by + ' ' + '' + @title + '
'
+ elsif !@source.nil?
+ '' + output.join + '
' + '' + @by + ' ' + 'source
'
+ else
+ '' + output.join + '
' + '' + @by + '
'
+ end
+ end
+ end
+
+ # Outputs a string with a given attribution as a pullquote
+ #
+ # {% blockquote John Paul Jones %}
+ # Monkeys!
+ # {% endblockquote %}
+ # ...
+ #
+ # Monkeys!
+ #
+ # John Paul Jones
+ #
+ #
+ class Pullquote < Liquid::Block
+ FullCiteWithTitle = /([\w\s]+)(http:\/\/|https:\/\/)(\S+)([\w\s]+)/i
+ FullCite = /([\w\s]+)(http:\/\/|https:\/\/)(\S+)/i
+ Author = /([\w\s]+)/
+
+ def initialize(tag_name, markup, tokens)
+ @by = nil
+ @source = nil
+ @title = nil
+ if markup =~ FullCiteWithTitle
+ @by = $1
+ @source = $2 + $3
+ @title = $4
+ elsif markup =~ FullCite
+ @by = $1
+ @source = $2 + $3
+ elsif markup =~ Author
+ @by = $1
+ end
+ super
+ end
+
+ def render(context)
+ output = super
+ if @by.nil?
+ '' + output.join + '
'
+ elsif @title
+ '' + output.join + '
' + '' + @by + ' ' + ' ' + @title + '
'
+ elsif @source
+ '' + output.join + '
' + '' + @by + ' ' + ' source
'
+ elsif @by
+ '' + output.join + '
' + '' + @by + '
'
+ end
+ end
+ end
+end
+
+Liquid::Template.register_tag('blockquote', Jekyll::Blockquote)
+Liquid::Template.register_tag('pullquote', Jekyll::Pullquote)
+
+
diff --git a/_plugins/category.rb b/_plugins/category.rb
new file mode 100644
index 00000000..b9accdec
--- /dev/null
+++ b/_plugins/category.rb
@@ -0,0 +1,65 @@
+module Jekyll
+
+ class CategoryIndex < Page
+ def initialize(site, base, dir, category)
+ @site = site
+ @base = base
+ @dir = dir
+ @name = 'index.html'
+
+ self.process(@name)
+ self.read_yaml(File.join(base, '_layouts'), 'category_index.html')
+ self.data['category'] = category
+
+ category_title_prefix = site.config['category_title_prefix'] || 'Category: '
+ self.data['title'] = "#{category_title_prefix}#{category}"
+ end
+ end
+
+ class CategoryList < Page
+ def initialize(site, base, dir, categories)
+ @site = site
+ @base = base
+ @dir = dir
+ @name = 'index.html'
+
+ self.process(@name)
+ self.read_yaml(File.join(base, '_layouts'), 'category_list.html')
+ self.data['categories'] = categories
+ end
+ end
+
+ class CategoryGenerator < Generator
+ safe true
+
+ def generate(site)
+ if site.layouts.key? 'category_index'
+ dir = site.config['category_dir'] || 'categories'
+ site.categories.keys.each do |category|
+ write_category_index(site, File.join(dir, category.gsub(/\s/, "-").gsub(/[^\w-]/, '').downcase), category)
+ end
+ end
+
+ if site.layouts.key? 'category_list'
+ dir = site.config['category_dir'] || 'categories'
+ write_category_list(site, dir, site.categories.keys.sort)
+ end
+ end
+
+ def write_category_index(site, dir, category)
+ index = CategoryIndex.new(site, site.source, dir, category)
+ index.render(site.layouts, site.site_payload)
+ index.write(site.dest)
+ site.static_files << index
+ end
+
+ def write_category_list(site, dir, categories)
+ index = CategoryList.new(site, site.source, dir, categories)
+ index.render(site.layouts, site.site_payload)
+ index.write(site.dest)
+ site.static_files << index
+ end
+ end
+
+end
+
diff --git a/_plugins/custom_filters.rb b/_plugins/custom_filters.rb
index 84f1caa0..1ee39fa8 100644
--- a/_plugins/custom_filters.rb
+++ b/_plugins/custom_filters.rb
@@ -50,6 +50,11 @@ module OctopressFilters
end
end
end
+ #YearlyPost = Struct.new('YearlyPost', :year, :posts)
+ def yearly_posts(site)
+ #site.posts.reverse.group_by { |p| p.date.strftime("%Y") }.map { |k,v| YearlyPost.new(k,v) }
+ site
+ end
end
-
Liquid::Template.register_filter OctopressFilters
+
diff --git a/_plugins/iterator.rb b/_plugins/iterator.rb
new file mode 100644
index 00000000..da0b5f0a
--- /dev/null
+++ b/_plugins/iterator.rb
@@ -0,0 +1,49 @@
+##
+## Author: Jose Gonzalez - https://github.com/josegonzalez
+## Source URL: https://github.com/josegonzalez/josediazgonzalez.com/blob/master/_plugins/iterator.rb
+##
+
+#module Jekyll
+ #class Site
+ #alias_method :orig_site_payload, :site_payload
+
+ ## Constuct an array of hashes that will allow the user, using Liquid, to
+ ## iterate through the keys of _kv_hash_ and be able to iterate through the
+ ## elements under each key.
+ ##
+ ## Example:
+ ## categories = { 'Ruby' => [, ] }
+ ## make_iterable(categories, :index => 'name', :items => 'posts')
+ ## Will allow the user to iterate through all categories and then iterate
+ ## though each post in the current category like so:
+ ## {% for category in site.categories %}
+ ## h1. {{ category.name }}
+ ##
+ ## {% for post in category.posts %}
+ ## {{ post.title }}
+ ## {% endfor %}
+ ##
+ ## {% endfor %}
+ ##
+ ## Returns [ { => , => kv_hash[]}, ... ]
+
+ #def make_iterable(kv_hash, options)
+ #options = {:index => 'name', :items => 'items'}.merge(options)
+ #result = []
+ #kv_hash.sort.each do |key, value|
+ #result << { options[:index] => key, options[:items] => value }
+ #end
+ #result
+ #end
+
+ #def site_payload
+ #payload = orig_site_payload
+ #payload['site']['iterable'].merge!({
+ #'categories' => make_iterable(self.categories, :index => 'name', :items => 'posts'),
+ #'tags' => make_iterable(self.tags, :index => 'name', :items => 'posts')
+ #})
+ #payload
+ #end
+
+ #end
+#end
diff --git a/_plugins/pygments_cache_patch.rb b/_plugins/pygments_cache_patch.rb
new file mode 100644
index 00000000..36c78d20
--- /dev/null
+++ b/_plugins/pygments_cache_patch.rb
@@ -0,0 +1,30 @@
+#
+# Author: Raimonds Simanovskis, http://blog.rayapps.com/
+# Source URL: https://github.com/rsim/blog.rayapps.com/blob/master/_plugins/pygments_cache_patch.rb
+#
+
+require 'fileutils'
+require 'digest/md5'
+
+PYGMENTS_CACHE_DIR = File.expand_path('../../_cache', __FILE__)
+FileUtils.mkdir_p(PYGMENTS_CACHE_DIR)
+
+Jekyll::HighlightBlock.class_eval do
+ def render_pygments(context, code)
+ if defined?(PYGMENTS_CACHE_DIR)
+ path = File.join(PYGMENTS_CACHE_DIR, "#{@lang}-#{Digest::MD5.hexdigest(code)}.html")
+ if File.exist?(path)
+ highlighted_code = File.read(path)
+ else
+ highlighted_code = Albino.new(code, @lang).to_s(@options)
+ File.open(path, 'w') {|f| f.print(highlighted_code) }
+ end
+ else
+ highlighted_code = Albino.new(code, @lang).to_s(@options)
+ end
+ output = add_code_tags(highlighted_code, @lang)
+ output = context["pygments_prefix"] + output if context["pygments_prefix"]
+ output = output + context["pygments_suffix"] if context["pygments_suffix"]
+ output
+ end
+end
diff --git a/public/2009/11/13/hello-world/index.html b/public/2009/11/13/hello-world/index.html
deleted file mode 100644
index b67552e1..00000000
--- a/public/2009/11/13/hello-world/index.html
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-
-
-
-
-
-
-
- Hello World! I'm Octopress! - My Octopress Blog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Octopress is a blogging framework designed for hackers , based on Jekyll the blog aware static site generator powering Github pages .
-If you don’t know what Jekyll is, Jack Moffitt wrote a good summary:
-
-
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.
-
-
Jack Moffitt Blogging with Git Emacs and Jekyll
-
-
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
-
-
-
-
-
-
-
-
-
-
- About Me
- Hi, I'm Octopress!
-
-
-
-
-
- Latest Tweets
-
-Follow @imathis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/2011/03/14/test-post/index.html b/public/2011/03/14/test-post/index.html
deleted file mode 100644
index b7aadb05..00000000
--- a/public/2011/03/14/test-post/index.html
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
-
-
-
-
-
- Test Post - My Octopress Blog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- About Me
- Hi, I'm Octopress!
-
-
-
-
-
- Latest Tweets
-
-Follow @imathis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/2011/04/07/test-of-typography/index.html b/public/2011/04/07/test-of-typography/index.html
deleted file mode 100644
index 3aa1d705..00000000
--- a/public/2011/04/07/test-of-typography/index.html
+++ /dev/null
@@ -1,199 +0,0 @@
-
-
-
-
-
-
-
-
-
- Test of Typography - My Octopress Blog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-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 showed off his business cards which he printed through Moo . 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.
-
-
Moo’s MiniCard’s 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
-
-
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.
-
-
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 :
-
-
Every interaction is both precious and an opportunity to delight.
-
-
I pictured sliding a card out of my MiniCard Holder 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
-
-
-
-
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 , but here are some of my favorites. Enjoy:
-
-
-
-
-
-
-
-
-
-
-
-
-
- About Me
- Hi, I'm Octopress!
-
-
-
-
-
- Latest Tweets
-
-Follow @imathis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/about/index.html b/public/about/index.html
deleted file mode 100644
index 9e1cd8cc..00000000
--- a/public/about/index.html
+++ /dev/null
@@ -1,154 +0,0 @@
-
-
-
-
-
-
-
-
-
- About Me - My Octopress Blog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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.
-
-
-
-
-
-
-
-
-
-
- About Me
- Hi, I'm Octopress!
-
-
-
-
-
- Latest Tweets
-
-Follow @imathis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/atom.xml b/public/atom.xml
deleted file mode 100644
index 816a6304..00000000
--- a/public/atom.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- 2011-05-15T18:13:17-04:00
- http://yoursite.com/
-
- Your Name
-
- you@domain.com
-
-
-
-
-
- Test of Typography
-
- 2011-04-07T19:17:00-04:00
- http://yoursite.com/2011/04/07/test-of-typography
- <p>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 <em>professionally</em> 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.</p>
-
-<h2>Why Have Business Cards?</h2>
-
-<p>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.</p>
-
-<p>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?</p>
-
-<!-- more -->
-
-
-<h3>Inspiration Demands Action</h3>
-
-<p>In one of our campfire chats <a href="http://twitter.com/NTalbott">Nathaniel Talbott</a> showed off his business cards which he printed through <a href="http://moo.com">Moo</a>. 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.</p>
-
-<p><img src="http://yoursite.com/content/blog/2010/cards/box.jpg" alt="cards in a box" width="300px" class="right"/> Moo's <a href="http://moo.com/products/minicards.php">MiniCard's</a> 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.</p>
-
-<p>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.</p>
-
-<h3>The Freedom to Fail</h3>
-
-<p><img src="http://yoursite.com/content/blog/2010/cards/concepts.jpg" alt="card concepts" width="270px" class="left"/> 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.</p>
-
-<p><img src="http://yoursite.com/content/blog/2010/cards/handout.jpg" alt="handout cards" width="220px" class="right"/> 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.</p>
-
-<h3>A Second Iteration</h3>
-
-<p>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. <strong>Sidenote:</strong> 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.</p>
-
-<p>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 <a href="http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html">Seth Godin said</a>:</p>
-
-<blockquote><p>Every interaction is both precious and an opportunity to delight.</p></blockquote>
-
-<p><img src="http://yoursite.com/content/blog/2010/cards/holder.jpg" alt="MiniCard Holder" width="220px" class="right"/> I pictured sliding a card out of my <a href="http://moo.com/products/accessories/holders/moo_minicard_holders">MiniCard Holder</a> 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.</p>
-
-<h3>The Final Design</h3>
-
-<p><img src="http://yoursite.com/content/blog/2010/cards/all.jpg" alt="all card designs" width="640px"/></p>
-
-<p>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.</p>
-
-<p><strong>Update:</strong> I thought I'd share some other great uses of Moo's MiniCards. There's a fantastic <a href="http://www.flickr.com/groups/moo/pool/">Flikr pool</a>, but here are some of my favorites. Enjoy:</p>
-
-<ul>
-<li><a href="http://www.flickr.com/photos/lushlampwork/4131018201/in/pool-moo">Product</a> <a href="http://www.flickr.com/photos/lushlampwork/4297224179/in/pool-moo">tags</a></li>
-<li><a href="http://www.flickr.com/photos/thisiswoly/4206576342/in/pool-moo">Photography</a> or <a href="http://www.flickr.com/photos/lesleybarnes/4276368956/in/pool-moo">art</a> <a href="http://www.flickr.com/photos/playinprogress/4158223112/in/pool-moo">portfolios</a></li>
-<li><a href="http://www.flickr.com/photos/polkadotcreations/4167249758/in/pool-moo">Gift</a> <a href="http://www.flickr.com/photos/22338102@N04/4278114745/in/pool-moo">tags</a></li>
-<li><a href="http://www.flickr.com/photos/bcome/4177034036/in/pool-moo">An advent calendar</a></li>
-</ul>
-
-
-
-
-
- Test Post
-
- 2011-03-14T00:00:00-04:00
- http://yoursite.com/2011/03/14/test-post
- <p>This is a test!</p>
-
-
-
-
- Hello World! I'm Octopress!
-
- 2009-11-13T00:00:00-05:00
- http://yoursite.com/2009/11/13/hello-world
- <p><strong>Octopress is a blogging framework designed for hackers</strong>, based on <a href="http://github.com/mojombo/jekyll">Jekyll</a> the blog aware static site generator powering <a href="http://pages.github.com/">Github pages</a>.
-If you don't know what Jekyll is, <a href="http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/">Jack Moffitt</a> wrote a good summary:</p>
-
-<blockquote><p>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.</p></blockquote>
-
-<p><cite><strong>Jack Moffitt</strong> <a href="http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/">Blogging with Git Emacs and Jekyll</a></cite></p>
-
-<p>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.</p>
-
-<p><a href="http://wiki.github.com/imathis/octopress/">Read the wiki to learn more</a></p>
-
-
-
-
diff --git a/public/fonts/adellebasic_bold-webfont.eot b/public/fonts/adellebasic_bold-webfont.eot
deleted file mode 100644
index 5bace32f..00000000
Binary files a/public/fonts/adellebasic_bold-webfont.eot and /dev/null differ
diff --git a/public/fonts/adellebasic_bold-webfont.svg b/public/fonts/adellebasic_bold-webfont.svg
deleted file mode 100644
index c259c24c..00000000
--- a/public/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/public/fonts/adellebasic_bold-webfont.ttf b/public/fonts/adellebasic_bold-webfont.ttf
deleted file mode 100644
index 7e70d0de..00000000
Binary files a/public/fonts/adellebasic_bold-webfont.ttf and /dev/null differ
diff --git a/public/fonts/adellebasic_bold-webfont.woff b/public/fonts/adellebasic_bold-webfont.woff
deleted file mode 100644
index 07ae59a2..00000000
Binary files a/public/fonts/adellebasic_bold-webfont.woff and /dev/null differ
diff --git a/public/images/code_bg.png b/public/images/code_bg.png
deleted file mode 100644
index a57bab56..00000000
Binary files a/public/images/code_bg.png and /dev/null differ
diff --git a/public/images/rss.png b/public/images/rss.png
deleted file mode 100644
index f458e57d..00000000
Binary files a/public/images/rss.png and /dev/null differ
diff --git a/public/images/search.png b/public/images/search.png
deleted file mode 100644
index 1220ff4e..00000000
Binary files a/public/images/search.png and /dev/null differ
diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index 7b80d4e8..00000000
--- a/public/index.html
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
-
-
-
-
-
-
-
- Octopress - My Octopress Blog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-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?
-
-
Continue reading »
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Octopress is a blogging framework designed for hackers , based on Jekyll the blog aware static site generator powering Github pages .
-If you don’t know what Jekyll is, Jack Moffitt wrote a good summary:
-
-
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.
-
-
Jack Moffitt Blogging with Git Emacs and Jekyll
-
-
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
-
-
-
-
-
-
-
-
-
- About Me
- Hi, I'm Octopress!
-
-
-
-
-
- Latest Tweets
-
-Follow @imathis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/javascripts/libs/DOMAssistantCompressed-2.8.js b/public/javascripts/libs/DOMAssistantCompressed-2.8.js
deleted file mode 100644
index ff9ef9e0..00000000
--- a/public/javascripts/libs/DOMAssistantCompressed-2.8.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// Developed by Robert Nyman/DOMAssistant team, code/licensing: http://domassistant.googlecode.com/, documentation: http://www.domassistant.com/documentation, version 2.8
-var DOMAssistant=function(){var j=function(){},o=window,g=o.$,k=o.$$,d=/*@cc_on!@*/false,i=d&&parseFloat(navigator.appVersion)<6,h,c={},q={},a=true,n=Array.prototype.slice,p={accesskey:"accessKey","class":"className",colspan:"colSpan","for":"htmlFor",maxlength:"maxLength",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",valign:"vAlign",cellspacing:"cellSpacing",cellpadding:"cellPadding"},m={rules:/\s*,\s*/g,selector:/^(\w+|\*)?(#[\w\u00C0-\uFFFF\-=$]+)?((\.[\w\u00C0-\uFFFF\-]+)*)?((\[\w+\s*([~^$*|])?(=\s*([-\w\u00C0-\uFFFF\s.]+|"[^"]*"|'[^']*'))?\]+)*)?((:\w[-\w]*(\((odd|even|\-?\d*n?([-+]\d+)?|[:#]?[-\w\u00C0-\uFFFF.]+|"[^"]*"|'[^']*'|((\w*\.[-\w\u00C0-\uFFFF]+)*)?|(\[#?\w+([~^$*|])?=?[-\w\u00C0-\uFFFF\s.'"]+\]+)|(:\w[-\w]*\(.+\)))\))?)*)?([+>~])?/,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/},f=function(t,u,r){var s=t.tagName;while((t=t[u+"Sibling"])&&(t.nodeType!==1||(r?t.tagName!==s:t.tagName==="!"))){}return t},b=function(r){return typeof r!=="undefined"},l=function(r){return(l=r[0].compareDocumentPosition?function(s){return s.sort(function(u,t){return 3-(u.compareDocumentPosition(t)&6)})}:d?function(s){return s.sort(function(u,t){return u.sourceIndex-t.sourceIndex})}:function(s){return s.sort(function(w,u){var v=document.createRange(),t=document.createRange();v.setStart(w,0);v.setEnd(w,0);t.setStart(u,0);t.setEnd(u,0);return v.compareBoundaryPoints(Range.START_TO_END,t)})})(r)};var e=function(s,r){s.push.apply(s,n.apply(r));return s};if(d){e=function(t,s){if(s.slice){return t.concat(s)}var r=0,u;while((u=s[r++])){t[t.length]=u}return t}}return{isIE:d,camel:p,def:b,allMethods:[],publicMethods:["prev","next","hasChild","cssSelect","elmsByClass","elmsByAttribute","elmsByTag"],harmonize:function(){o.$=g;o.$$=k;return this},initCore:function(){this.applyMethod.call(o,"$",this.$);this.applyMethod.call(o,"$$",this.$$);o.DOMAssistant=this;if(d){j=Array}j.prototype=[];(function(r){r.each=function(v,u){for(var t=0,s=this.length;t=u)?(w-u)%u:w}else{if(t[8]){u=t[10]?parseInt(t[10],10):1;w=s=parseInt(t[11],10);while(w>u){w-=u}r=(s>=u)?(s-u)%u:s}}}}return{start:w,add:u,max:s,modVal:r}},cssByDOM:function(v){var aU,I,D,N,av,x,ah,A,K,w,aq,aN,y,aI,at,aB=new j(),aR=aB.indexOf,ap=[],aG=[],aK=v.replace(m.rules,",").split(","),aF={};function aQ(s){s=s||ap;for(var r=s.length;r--;){s[r].added=null;s[r].removeAttribute("added")}}function C(){for(var r=aU.length;r--;){aU[r].childElms=null}}function am(t,r){for(var u=0,aX;(aX=t[u]);u++){var aW=false;for(var s=0,aV;(aV=r[s]);s++){if(aV===aX){aW=true;r.splice(s,1);break}}if(aW){t.splice(u--,1)}}return t}function E(s,r){return(d||m.special.test(r))?s[p[r.toLowerCase()]||r]:s.getAttribute(r,2)}function P(r,s){r=r?r.replace(m.quoted,"$1").replace(/(\.|\[|\])/g,"\\$1"):null;return{"^":"^"+r,"$":r+"$","*":r,"|":"^"+r+"(\\-\\w+)*$","~":"\\b"+r+"\\b"}[s]||(r!==null?"^"+r+"$":r)}function W(r){return(r||this).tagName!=="!"}function S(r,s){return i?(r==="*"?s.all:s.all.tags(r)):s.getElementsByTagName(r)}function aL(r,s){r=r||"*";s=s||document;return(s===document||s.lastModified)?c[r]||(c[r]=S(r,document)):S(r,s)}function ar(aX,bf,u){aU=[];var aV=bf.split("-"),a0=[],a5=0,be=/\-of\-type$/.test(bf),a4,aZ={first:function(bg){return !f(bg,"previous",be)},last:function(bg){return !f(bg,"next",be)},empty:function(bg){return !bg.firstChild},enabled:function(bg){return !bg.disabled&&bg.type!=="hidden"},disabled:function(bg){return bg.disabled},checked:function(bg){return bg.checked},contains:function(bg){return(bg.innerText||bg.textContent||"").indexOf(u.replace(m.quoted,"$1"))>-1},other:function(bg){return E(bg,bf)===u}};function t(bg){while((A=aX[a5++])){if(W(A)&&aZ[bg](A)){a0[a0.length]=A}}return a0}var bb=aV[0]||null;if(bb&&aZ[bb]){return t(bb)}switch(bb){case"only":var a1,aW;while((A=aX[a5++])){K=A.parentNode;var a6=A.nodeName;if(K!==a1||a6!==aW){if(aZ.first(A)&&aZ.last(A)){a0[a0.length]=A}a1=K;aW=a6}}break;case"nth":if(u==="n"){a0=aX}else{var bd=(aV[1]==="last")?["lastChild","previousSibling"]:["firstChild","nextSibling"];aI=DOMAssistant.getSequence(u);if(aI){while((A=aX[a5++])){K=A.parentNode;K.childElms=K.childElms||{};var a7=A.nodeName;if(!K.childElms[a7]){var ba=0;aN=aI.start;y=K[bd[0]];while(y&&(aI.max<0||aN<=aI.max)){var bc=y.nodeName;if((be&&bc===a7)||(!be&&y.nodeType===1&&bc!=="!")){if(++ba===aN){if(bc===a7){a0[a0.length]=y}aN+=aI.add}}y=y[bd[1]]}if(at){h++}K.childElms[a7]=true;aU[aU.length]=K}}C()}}break;case"target":var s=document.location.hash.slice(1);if(s){while((A=aX[a5++])){if(E(A,"name")===s||E(A,"id")===s){a0[a0.length]=A;break}}}break;case"not":if((a4=m.pseudo.exec(u))){a0=am(aX,ar(aX,a4[1]?a4[1].toLowerCase():null,a4[3]||null))}else{for(var a8 in m){if(m[a8].lastIndex){m[a8].lastIndex=0}}u=u.replace(m.id,"[id=$1]");var a3=m.tag.exec(u);var aY=m.classes.exec(u);var a2=m.attribs.exec(u);var r=new RegExp(a2?P(a2[4],a2[2]):"(^|\\s)"+(a3?a3[0]:aY?aY[1]:"")+"(\\s|$)","i");while((w=aX[a5++])){aq=null;if(a3&&!r.test(w.nodeName)||aY&&!r.test(w.className)){aq=w}else{if(a2){var a9=E(w,a2[1]);if(!b(a9)||a9===false||typeof a9==="string"&&!r.test(a9)){aq=w}}}if(aq&&!aq.added){aq.added=true;a0[a0.length]=aq}}}break;default:return t("other")}return a0}function Z(aV,t){var r=0,u=aV,aW;while((aW=t[r++])){if(!u.length||u.indexOf(aW)<0){aV.push(aW)}}return aV}h=-1;for(var ak=0,aJ=[];(I=aK[ak]);ak++){if(!(D=I.match(m.selectorSplit))||ak&&aR.call(aK.slice(0,ak),I)>-1){continue}ap=[this];for(var ai=0,G;(G=D[ai]);ai++){aG=[];if((N=m.relation.exec(G))){var an=null,aS=D[ai+1];if((av=m.tag.exec(aS))){av=av[0];x=new RegExp("(^|\\s)"+av+"(\\s|$)","i")}else{if(m.id.test(aS)){an=DOMAssistant.$(aS)||null}}for(var ag=0,M;(M=ap[ag]);ag++){switch(N[0]){case">":var aD=an||aL(av,M);for(var ae=0,ay;(ay=aD[ae]);ae++){if(ay.parentNode===M){aG[aG.length]=ay}}break;case"+":if((M=f(M,"next"))){if((an&&an[0]===M)||(!an&&(!av||x.test(M.nodeName)))){aG[aG.length]=M}}break;case"~":while((M=M.nextSibling)&&!M.added){if((an&&an[0]===M)||(!an&&(!av||x.test(M.nodeName)))){M.added=true;aG[aG.length]=M}}break}}ap=aG;aQ();G=D[++ai];if(/^\w+$/.test(G)||m.id.test(G)){continue}ap.skipTag=true}var au=m.selector.exec(G);aF={tag:au[1]?au[1]:"*",id:au[2],allClasses:au[3],allAttr:au[5],allPseudos:au[10]};at=(aF.tag==="*");if(aF.id){var O=0,al=document.getElementById(aF.id.slice(1));if(al){while(ap[O]&&!DOMAssistant.hasChild.call(ap[O],al)){O++}aG=(O=0||aR.call(aJ,"*")>=0))?Z:e)(aB,ap);aJ.push(aF.tag);if(d&&at){aB=aB.filter(W)}}return((aB.length>1&&aK.length>1)||h>0)?l(aB):aB},cssByXpath:function(s){var t={xhtml:"http://www.w3.org/1999/xhtml"},u=(document.documentElement.namespaceURI===t.xhtml)?"xhtml:":"",r=function v(w){return t[w]||null};DOMAssistant.cssByXpath=function(N){var R,T,J,z,A,E,B=new j(),C=N.replace(m.rules,",").split(",");function M(W){var X=W?"[":"",V=W?"]":"";return function(Y,ac,ab,aa,Z){Z=(Z||"").replace(m.quoted,"$1");if(ac===Z&&ac==="readonly"){aa=null}return X+({"^":"starts-with(@"+ac+', "'+Z+'")',"$":"substring(@"+ac+", (string-length(@"+ac+") - "+(Z.length-1)+"), "+Z.length+') = "'+Z+'"',"*":'contains(concat(" ", @'+ac+', " "), "'+Z+'")',"|":"@"+ac+'="'+Z+'" or starts-with(@'+ac+', "'+Z+'-")',"~":'contains(concat(" ", @'+ac+', " "), " '+Z+' ")'}[ab]||("@"+ac+(aa?'="'+Z+'"':"")))+V}}function P(W,Y,X){W=/\-child$/.test(Y)?"*":W;var aa=Y.split("-"),V=((aa[1]==="last")?"(count(following-sibling::":"(count(preceding-sibling::")+W+") + 1)",Z,ab;switch(aa[0]){case"nth":return(X!=="n"&&(E=DOMAssistant.getSequence(X)))?((E.start===E.max)?V+" = "+E.start:V+" mod "+E.add+" = "+E.modVal+((E.start>1)?" and "+V+" >= "+E.start:"")+((E.max>0)?" and "+V+" <= "+E.max:"")):"";case"not":return"not("+((Z=m.pseudo.exec(X))?P(W,Z[1]?Z[1].toLowerCase():null,Z[3]||null):X.replace(m.id,"[id=$1]").replace(m.tag,"self::$0").replace(m.classes,'contains(concat(" ", @class, " "), " $1 ")').replace(m.attribs,M()))+")";case"first":return"not(preceding-sibling::"+W+")";case"last":return"not(following-sibling::"+W+")";case"only":return"not(preceding-sibling::"+W+" or following-sibling::"+W+")";case"empty":return"not(child::*) and not(text())";case"contains":return'contains(., "'+X.replace(m.quoted,"$1")+'")';case"enabled":return'not(@disabled) and not(@type="hidden")';case"disabled":return"@disabled";case"target":return'@name="'+(ab=document.location.hash.slice(1))+'" or @id="'+ab+'"';default:return"@"+Y+'="'+X+'"'}}for(var O=0;(R=C[O]);O++){if(!(T=R.match(m.selectorSplit))||O&&B.indexOf.call(C.slice(0,O),R)>-1){continue}J=J?J+" | .":".";for(var L=0,Q=T.length;L":"/","+":"/following-sibling::*[1]/self::","~":"/following-sibling::"}[A.tagRelation]||""):((L>0&&m.relation.test(T[L-1]))?A.tag:("//"+A.tag)))+(A.id||"").replace(m.id,'[@id = "$1"]')+(A.allClasses||"").replace(m.classes,'[contains(concat(" ", @class, " "), " $1 ")]')+(A.allAttr||"").replace(m.attribs,M(true));if(A.allPseudos){var D=A.allPseudos.match(m.pseudos);for(var K=0,x=D.length;K0&&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 a=DOMAssistant.def,b={display:true};return{addClass:function(d){if(!this.hasClass(d)){var c=this.className;this.className=c+(c.length?" ":"")+d}return this},removeClass:function(c){return this.replaceClass(c)},replaceClass:function(d,e){var c=new RegExp(("(^|\\s)"+d+"(\\s|$)"),"i");this.className=this.className.replace(c,function(f,h,g){return e?(h+e+g):" "}).replace(/^\s+|\s+$/g,"");return this},hasClass:function(c){return(" "+this.className+" ").indexOf(" "+c+" ")>-1},setStyle:function(f,g){var e=this.style;if("filters" in this&&(typeof f==="string"?/opacity/i.test(f):a(f.opacity))){e.zoom=1;e.filter=(e.filter||"").replace(/alpha\([^)]*\)/,"")+"alpha(opacity="+(a(f.opacity)?f.opacity:g)*100+")"}if(a(e.cssText)){var c=e.cssText;if(typeof f==="object"){for(var d in f){if(typeof d==="string"){if(b[d]){e[d]=f[d]}c+=";"+d+":"+f[d]}}}else{if(b[f]){e[f]=g}c+=";"+f+":"+g}e.cssText=c}return this},getStyle:function(c){var e="",d;c=c.toLowerCase();if(document.defaultView&&document.defaultView.getComputedStyle){e=document.defaultView.getComputedStyle(this,"").getPropertyValue(c)}else{if(this.currentStyle){if("filters" in this&&c==="opacity"){e=(d=this.style.filter||this.currentStyle.filter)&&d.indexOf("opacity=")>=0?parseFloat(d.match(/opacity=([^)]*)/)[1])/100:1}else{c=c.replace(/^float$/,"styleFloat").replace(/\-(\w)/g,function(f,g){return g.toUpperCase()});e=this.currentStyle[c]}if(e==="auto"&&/^(width|height)$/.test(c)&&this.currentStyle.display!=="none"){e=this["offset"+c.charAt(0).toUpperCase()+c.substr(1)]+"px"}}}return e}}}();DOMAssistant.attach(DOMAssistant.CSS);DOMAssistant.Content=function(){var a=DOMAssistant.$$;return{init:function(){DOMAssistant.setCache(false)},create:function(d,c,b,e){var f=a(document.createElement(d));if(c){f=f.setAttributes(c)}if(DOMAssistant.def(e)){f.addContent(e)}if(b){this.appendChild(f)}return f},setAttributes:function(b){if(DOMAssistant.isIE){var c=function(g,e,f){var d=e.toLowerCase();switch(d){case"name":case"type":case"multiple":return a(document.createElement(g.outerHTML.replace(new RegExp(d+"(=[a-zA-Z]+)?")," ").replace(">"," "+d+"="+f+">")));case"style":g.style.cssText=f;return g;default:g[DOMAssistant.camel[d]||e]=f;return g}};DOMAssistant.Content.setAttributes=function(d){var h=this;var g=this.parentNode;for(var f in d){if(typeof d[f]==="string"||typeof d[f]==="number"){var e=c(h,f,d[f]);if(g&&/(name|type)/i.test(f)){if(h.innerHTML){e.innerHTML=h.innerHTML}g.replaceChild(e,h)}h=e}}return h}}else{DOMAssistant.Content.setAttributes=function(d){for(var e in d){if(/class/i.test(e)){this.className=d[e]}else{this.setAttribute(e,d[e])}}return this}}return DOMAssistant.Content.setAttributes.call(this,b)},addContent:function(f){var d=typeof f;if(d==="string"||d==="number"){if(!this.firstChild){this.innerHTML=f}else{var c=document.createElement("div");c.innerHTML=f;for(var b=c.childNodes.length-1,e=null;b>=0;b--){e=this.insertBefore(c.childNodes[b],e)}}}else{if(d==="object"||(d==="function"&&!!f.nodeName)){this.appendChild(f)}}return this},replaceContent:function(b){DOMAssistant.cleanUp(this);return this.addContent(b)},replace:function(g,b){var f=typeof g;if(f==="string"||f==="number"){var e=this.parentNode;var d=DOMAssistant.Content.create.call(e,"div",null,false,g);for(var c=d.childNodes.length;c--;){e.insertBefore(d.childNodes[c],this.nextSibling)}g=this.nextSibling;e.removeChild(this)}else{if(f==="object"||(f==="function"&&!!g.nodeName)){this.parentNode.replaceChild(g,this)}}return b?g: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 i,g="_events",c=!!document.addEventListener,a={focus:true,blur:true},b=DOMAssistant.isIE?{focus:"activate",blur:"deactivate",mouseenter:"mouseover",mouseleave:"mouseout"}:{mouseenter:"mouseover",mouseleave:"mouseout"},f={special:/^submit|reset|change|select$/i,mouseenterleave:/^mouse(enter|leave)$/i,dom:/^DOM/,on:/^on/i},e=function(j){return DOMAssistant.isIE&&f.special.test(j)},d=function(j){return b[j]||j},h=function(n,k,m){n=n||window.event||{};if(n.event){return n}var l={event:n,type:k||n.type,bubbles:n.bubbles||true,cancelable:n.cancelable||false,target:m||n.target||n.srcElement,clientX:n.clientX||0,clientY:n.clientY||0,altKey:n.altKey||false,ctrlKey:n.ctrlKey||false,shiftKey:n.shiftKey||false,button:n.button||null,timeStamp:+new Date(),preventDefault:function(){if(n.preventDefault){n.preventDefault()}this.returnValue=n.returnValue=false},stopPropagation:function(){if(n.stopPropagation){n.stopPropagation()}this.cancelBubble=n.cancelBubble=true}};if(l.target&&3===l.target.nodeType){l.target=l.target.parentNode}l.currentTarget=l.target;l.relatedTarget=n.relatedTarget||(n.fromElement===l.target?n.toElement:n.fromElement)||null;var o=document.documentElement,j=document.body;l.pageX=DOMAssistant.def(n.pageX)?n.pageX:(l.clientX+(o.scrollLeft||j.scrollLeft)-(o.clientLeft||0));l.pageY=DOMAssistant.def(n.pageY)?n.pageY:(l.clientY+(o.scrollTop||j.scrollTop)-(o.clientTop||0));if("number"===typeof n.which){l.keyCode=n.keyCode;l.charCode=l.which=n.which}else{if(n.keyCode){l.keyCode=l.charCode=n.keyCode}}return l};return{publicMethods:["triggerEvent","addEvent","removeEvent","relayEvent","unrelayEvent","preventDefault","cancelBubble"],init:function(){DOMAssistant.preventDefault=this.preventDefault;DOMAssistant.cancelBubble=this.cancelBubble;i=this.handleEvent},triggerEvent:function(r,o,q){var m=d(r),s=this.retrieve(g),j=q||h(q,m,o||this);j.currentTarget=this;if(s&&s[m]){for(var n=0,l=s[m].length;n<\/script>");document.getElementById("ieScriptLoad").onreadystatechange=function(){if(this.readyState==="complete"){e()}}@end@*/
-if(document.addEventListener){document.addEventListener("DOMContentLoaded",e,false)}if(/KHTML|WebKit|iCab/i.test(navigator.userAgent)){a=setInterval(function(){if(/loaded|complete/i.test(document.readyState)){e();clearInterval(a)}},10)}window.onload=e;return{DOMReady:function(){for(var j=0,h=arguments.length,k;j7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML=" ";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML=" ";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++c=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send()},c=(function(){var v=false,w=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new XMLHttpRequest()}],y=w.length;while(y--){try{v=w[y]()}catch(x){continue}break}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this));
-
diff --git a/public/javascripts/libs/selectivizr-min.js b/public/javascripts/libs/selectivizr-min.js
deleted file mode 100644
index 5adda2fa..00000000
--- a/public/javascripts/libs/selectivizr-min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
- * selectivizr v1.0.2 - (c) Keith Clark, freely distributable under the terms of the MIT license.
- * selectivizr.com
- */
-(function(j){function A(a){return a.replace(B,h).replace(C,function(a,d,b){for(var a=b.split(","),b=0,e=a.length;b0){var a=l,f,e=s.substring(0,e).replace(H,i);if(e==i||e.charAt(e.length-1)==o)e+="*";try{f=t(e)}catch(k){}if(f){e=0;for(c=f.length;e-1&&(a=a.substring(0,l));if(a.charAt(0)==":")switch(a.slice(1)){case "root":c=function(a){return b?a!=p:a==p};break;case "target":if(m==8){c=function(a){function c(){var d=location.hash,e=d.slice(1);return b?d==i||a.id!=e:d!=i&&a.id==e}k(j,"hashchange",function(){g(a,d,c())});return c()};break}return!1;case "checked":c=function(a){J.test(a.type)&&k(a,"propertychange",function(){event.propertyName=="checked"&&g(a,d,a.checked!==b)});return a.checked!==b};break;case "disabled":b=!b;case "enabled":c=function(c){if(K.test(c.tagName))return k(c,"propertychange",function(){event.propertyName=="$disabled"&&g(c,d,c.a===b)}),q.push(c),c.a=c.disabled,c.disabled===b;return a==":enabled"?b:!b};break;case "focus":e="focus",f="blur";case "hover":e||(e="mouseenter",f="mouseleave");c=function(a){k(a,b?f:e,function(){g(a,d,!0)});k(a,b?e:f,function(){g(a,d,!1)});return b};break;default:if(!L.test(a))return!1}return{className:d,b:c}}function w(a){return M+"-"+(m==6&&N?O++:a.replace(P,function(a){return a.charCodeAt(0)}))}function D(a){return a.replace(x,h).replace(Q,o)}function g(a,c,d){var b=a.className,c=u(b,c,d);if(c!=b)a.className=c,a.parentNode.className+=i}function u(a,c,d){var b=RegExp("(^|\\s)"+c+"(\\s|$)"),e=b.test(a);return d?e?a:a+o+c:e?a.replace(b,h).replace(x,h):a}function k(a,c,d){a.attachEvent("on"+c,d)}function r(a,c){if(/^https?:\/\//i.test(a))return c.substring(0,c.indexOf("/",8))==a.substring(0,a.indexOf("/",8))?a:null;if(a.charAt(0)=="/")return c.substring(0,c.indexOf("/",8))+a;var d=c.split(/[?#]/)[0];a.charAt(0)!="?"&&d.charAt(d.length-1)!="/"&&(d=d.substring(0,d.lastIndexOf("/")+1));return d+a}function y(a){if(a)return n.open("GET",a,!1),n.send(),(n.status==200?n.responseText:i).replace(R,i).replace(S,function(c,d,b,e,f){return y(r(b||f,a))}).replace(T,function(c,d,b){d=d||i;return" url("+d+r(b,a)+d+") "});return i}function U(){var a,c;a=f.getElementsByTagName("BASE");for(var d=a.length>0?a[0].href:f.location.href,b=0;b0&&setInterval(function(){for(var a=0,c=q.length;a8||!n)){var z={NW:"*.Dom.select",MooTools:"$$",DOMAssistant:"*.$",Prototype:"$$",YAHOO:"*.util.Selector.query",Sizzle:"*",jQuery:"*",dojo:"*.query"},t,q=[],O=0,N=!0,M="slvzr",R=/(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g,S=/@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g,T=/\burl\(\s*(["']?)(?!data:)([^"')]+)\1\s*\)/g,L=/^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/,B=/:(:first-(?:line|letter))/g,C=/(^|})\s*([^\{]*?[\[:][^{]+)/g,G=/([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g,H=/(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g,P=/[^\w-]/g,K=/^(INPUT|SELECT|TEXTAREA|BUTTON)$/,J=/^(checkbox|radio)$/,v=m>6?/[\$\^*]=(['"])\1/:null,E=/([(\[+~])\s+/g,F=/\s+([)\]+~])/g,Q=/\s+/g,x=/^\s*((?:[\S\s]*\S)?)\s*$/,i="",o=" ",h="$1";(function(a,c){function d(){try{p.doScroll("left")}catch(a){setTimeout(d,50);return}b("poll")}function b(d){if(!(d.type=="readystatechange"&&f.readyState!="complete")&&((d.type=="load"?a:f).detachEvent("on"+d.type,b,!1),!e&&(e=!0)))c.call(a,d.type||d)}var e=!1,g=!0;if(f.readyState=="complete")c.call(a,i);else{if(f.createEventObject&&p.doScroll){try{g=!a.frameElement}catch(h){}g&&d()}k(f,"readystatechange",b);k(a,"load",b)}})(j,function(){for(var a in z){var c,d,b=j;if(j[a]){for(c=z[a].replace("*",a).split(".");(d=c.shift())&&(b=b[d]););if(typeof b=="function"){t=b;U();break}}}})}}})(this);
\ No newline at end of file
diff --git a/public/javascripts/octopress.js b/public/javascripts/octopress.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/public/javascripts/pinboard.js b/public/javascripts/pinboard.js
deleted file mode 100644
index 9a69e0a6..00000000
--- a/public/javascripts/pinboard.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var count = pinboard_count;
-var linkroll = 'pinboard_linkroll';
-function pinboardNS_fetch_script(url) {
- document.writeln(' ');
-}
-
-function pinboardNS_show_bmarks(r) {
- var lr = new Pinboard_Linkroll();
- lr.set_items(r);
- lr.show_bmarks();
-}
-
-var json_URL = "http://feeds.pinboard.in/json/v1/u:"+pinboard_user+"/?cb=pinboardNS_show_bmarks\&count=" + count;
-pinboardNS_fetch_script(json_URL);
-
-function Pinboard_Linkroll() {
- var items;
-
- this.set_items = function(i) {
- this.items = i;
- }
- this.show_bmarks = function() {
- var lines = [];
- for (var i = 0; i < this.items.length; i++) {
- var item = this.items[i];
- var str = this.format_item(item);
- lines.push(str);
- }
- document.getElementById(linkroll).innerHTML = lines.join("\n");
- }
- this.cook = function(v) {
- return v.replace('<', '<').replace('>', '>>');
- }
-
- this.format_item = function(it) {
- var str = "";
- if (!it.d) { return; }
- str += "" + this.cook(it.d) + " ";
- if (it.n) {
- str += "" + this.cook(it.n) + " \n";
- }
- if (it.t.length > 0) {
- for (var i = 0; i < it.t.length; i++) {
- var tag = it.t[i];
- str += " " + this.cook(tag) + " ";
- }
- }
- str += "
\n";
- return str;
- }
-}
-Pinboard_Linkroll.prototype = new Pinboard_Linkroll();
diff --git a/public/javascripts/twitter.js b/public/javascripts/twitter.js
deleted file mode 100644
index d50efe1c..00000000
--- a/public/javascripts/twitter.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/* http://www.JSON.org/json2.js 2009-09-29 Public Domain. NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. See http://www.JSON.org/js.html */
-if(!this.JSON){this.JSON={}}(function(){function l(c){return c<10?'0'+c:c}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(c){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+l(this.getUTCMonth()+1)+'-'+l(this.getUTCDate())+'T'+l(this.getUTCHours())+':'+l(this.getUTCMinutes())+':'+l(this.getUTCSeconds())+'Z':null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(c){return this.valueOf()}}var o=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,p=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,h,m,r={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},j;function q(a){p.lastIndex=0;return p.test(a)?'"'+a.replace(p,function(c){var f=r[c];return typeof f==='string'?f:'\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function n(c,f){var a,e,d,i,k=h,g,b=f[c];if(b&&typeof b==='object'&&typeof b.toJSON==='function'){b=b.toJSON(c)}if(typeof j==='function'){b=j.call(f,c,b)}switch(typeof b){case'string':return q(b);case'number':return isFinite(b)?String(b):'null';case'boolean':case'null':return String(b);case'object':if(!b){return'null'}h+=m;g=[];if(Object.prototype.toString.apply(b)==='[object Array]'){i=b.length;for(a=0;a'+' '+linkifyTweet(tweets[t].text)+''+prettyDate(tweets[t].created_at)+'
'+'';
- }
-}
-function linkifyTweet(text){
- return text.replace(/(https?:\/\/[\w\-:;?&=+.%#\/]+)/gi, '$1 ')
- .replace(/(^|\W)@(\w+)/g, '$1@$2 ')
- .replace(/(^|\W)#(\w+)/g, '$1#$2 ');
-}
-
-function prettyDate(date_str){
- var time_formats = [
- [60, 'just now', 1], // 60
- [120, '1 min', '1 minute from now'], // 60*2
- [3600, 'mins', 60], // 60*60, 60
- [7200, '1 hour', '1 hour from now'], // 60*60*2
- [86400, 'hours', 3600], // 60*60*24, 60*60
- [172800, '1 day', 'tomorrow'], // 60*60*24*2
- [2903040000, 'days', 86400], // 60*60*24*7, 60*60*24
- ];
- var time = ('' + date_str).replace(/-/g,"/").replace(/[TZ]/g," ").replace(/^\s\s*/, '').replace(/\s\s*$/, '');
- if(time.substr(time.length-4,1)==".") time =time.substr(0,time.length-4);
- var seconds = (new Date - new Date(time)) / 1000;
- var token = 'ago', list_choice = 1;
- if (seconds < 0) {
- seconds = Math.abs(seconds);
- token = 'from now';
- list_choice = 2;
- }
- var i = 0, format;
- while (format = time_formats[i++])
- if (seconds < format[0]) {
- if (typeof format[2] == 'string')
- return format[list_choice];
- else
- return Math.floor(seconds / format[2]) + ' ' + format[1];
- }
- return time;
-};
diff --git a/public/sitemap.xml b/public/sitemap.xml
deleted file mode 100644
index 1e1dba0c..00000000
--- a/public/sitemap.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- http://yoursite.com/about.haml
- 2011-05-14
-
-
- http://yoursite.com/atom.xml
- 2011-05-12
-
-
- http://yoursite.com/
- 2011-05-12
-
-
- http://yoursite.com/test/syntax.html
- 2010-04-10
-
-
- http://yoursite.com/test/typography.haml
- 2011-05-14
-
-
- http://yoursite.com/2011/04/07/test-of-typography
- 2011-04-07
-
-
- http://yoursite.com/2011/03/14/test-post
- 2011-03-14
-
-
- http://yoursite.com/2009/11/13/hello-world
- 2009-11-13
-
-
\ No newline at end of file
diff --git a/public/stylesheets/screen.css b/public/stylesheets/screen.css
deleted file mode 100644
index db978ac6..00000000
--- a/public/stylesheets/screen.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}a{color:#165c95}a:hover,a:focus{color:#03345c}a:visited{color:#471069}.group,.inner-wrap,.core-layout > div,body > header > div,body > nav > div,body > footer > div,body > nav + div,body > nav + div > div,body > nav{*zoom:1}.group:after,.inner-wrap:after,.core-layout > div:after,body > header > div:after,body > nav > div:after,body > footer > div:after,body > nav + div:after,body > nav + div > div:after,body > nav:after{content:"\0020";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}body > header,body > nav,body > footer{min-width:320px}@media only screen and (min-width: 320px){body > header > div,body > nav > div,body > footer > div{padding-left:.5em;padding-right:.5em}body > header{font-size:.7em;padding:.5em 0}#articles{font-size:.9em;line-height:1.5em}#articles > article{padding:.5em}#articles + aside{display:none}body > nav > div > div{width:180px}body > nav > div > div .search{width:110px}}@media only screen and (min-width: 768px){.inner-wrap,.core-layout > div,body > header > div,body > nav > div,body > footer > div{padding:0 15px;position:relative;margin:0 auto;max-width:1440px}body > nav + div{padding:0;max-width:1470px;margin:0 auto}body > nav + div > div{margin-right:240px}body > nav > div > div{width:210px}body > nav > div > div .search{width:140px}#articles{float:left;width:100%;padding-top:25px;padding-bottom:25px}#articles > *{padding-right:15px;padding-left:15px}#articles > article{margin-bottom:1.5em;padding-bottom:1.5em;padding-right:15px;padding-left:15px}#articles + aside{display:block;float:left;width:210px;margin:0 -100% 0 0;padding:15px}body > header,body #articles{font-size:.95em}}@media only screen and (min-width: 992px){.inner-wrap,.core-layout > div,body > header > div,body > nav > div,body > footer > div{padding:0 40px;position:relative;margin:0 auto;max-width:1440px}body > nav + div{padding:0;max-width:1520px;margin:0 auto}body > nav + div > div{margin-right:320px}body > nav > div > div{width:250px}body > nav > div > div .search{width:180px}#articles{float:left;width:100%;padding-top:25px;padding-bottom:25px}#articles > *{padding-right:40px;padding-left:40px}#articles > article{margin-bottom:1.5em;padding-bottom:1.5em;padding-right:40px;padding-left:40px}#articles + aside{display:block;float:left;width:260px;margin:0 -100% 0 0;padding:30px}body > header,body #articles{font-size:1.05em}}@font-face{font-family:"Adelle";src:url('/fonts/adellebasic_bold-webfont.eot');src:url('/fonts/adellebasic_bold-webfont.eot?iefix') format('eot'), url('/fonts/adellebasic_bold-webfont.woff') format('woff'), url('/fonts/adellebasic_bold-webfont.ttf') format('truetype'), url('/fonts/adellebasic_bold-webfont.svg#webfontKykxqSyz') format('svg')}.heading-font,body > header h1,h1,h2,h3,h4,h5,h6{font-family:Adelle, "Helvetica Neue", Helvetica, Arial, sans}.sans-font,#articles + aside section{font-family:"Helvetica Neue", Helvetica, Arial, sans}body > header h1{font-size:3em;line-height:1.2em;margin-bottom:0.6667em}body{font-size:1em;line-height:1.5em;color:black;font-family:Georgia, Times, serif}article:last-child{border-bottom:none}article h2{padding-top:0.8em;border-top:3px double #dddddd}article .byline + time:before,article .byline + time + time:before{content:"\2022 ";padding:0 .3em 0 .2em;display:inline-block;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5}article time span{font-size:.7em;line-height:0;position:relative;top:-0.4em}article header p{padding:0 0 1.5em;font-size:.8em;color:#555555;font-family:Palatino, Times, "Times New Roman";margin-top:-1.4em}h1,h2,h3,h4,h5,h6{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 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:-0.5em}sub{bottom:-0.5em}q{font-style:italic}q:before{content:"\201C"}q: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}sub,sup{line-height:0}hr{margin-bottom:0.2em}small{font-size:.8em}big{font-size:1.2em}blockquote{font-style:italic;position:relative;margin-left:2em}blockquote > p:first-child:before{content:"\201C";position:absolute;top:0.1em;left:-0.7em;font-size:3em;color:#dddddd}blockquote > p:last-child:after{content:"\201D";position:relative;top:0.3em;line-height:0;font-size:2em;color:#dddddd}blockquote + p > cite{margin-left:2em;text-align:right}blockquote + p > cite:before{content:'– ';color:#555555}blockquote + p > cite a{font-style:italic}body > header{background-color:#323232;border-bottom:1px solid #181818}body > header h1{display:inline-block;margin:0}body > header h1 a,body > header h1 a:visited{font-weight:normal;color:#dddddd;text-decoration:none}body > nav{position:relative;z-index:1;background-color:#e8e8e8;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fcfcfc), color-stop(30%, #f4f4f4), color-stop(100%, #dddddd));background-image:-webkit-linear-gradient(#fcfcfc,#f4f4f4 30%,#dddddd);background-image:-moz-linear-gradient(#fcfcfc,#f4f4f4 30%,#dddddd);background-image:-o-linear-gradient(#fcfcfc,#f4f4f4 30%,#dddddd);background-image:linear-gradient(#fcfcfc,#f4f4f4 30%,#dddddd);border-top:1px solid white;border-bottom:1px solid #aaaaaa}body > nav > div > div{float:right;position:relative;padding:.45em 0 0 0}body > nav > div > div a{float:right;text-indent:-119988px;overflow:hidden;text-align:left;background-image:url('/images/rss.png?1305289158');background-repeat:no-repeat;background-position:50% 50%;width:24px;height:24px}body > nav > div > div form{margin:0;padding:0;-moz-background-clip:padding;-webkit-background-clip:padding;-o-background-clip:padding-box;-ms-background-clip:padding-box;-khtml-background-clip:padding-box;background-clip:padding-box}body > nav > div > div form input[type='text']{margin:0;-moz-border-radius:1em;-webkit-border-radius:1em;-o-border-radius:1em;-ms-border-radius:1em;-khtml-border-radius:1em;border-radius:1em;float:left;border:1px solid #ccc;color:#888;background:url('/images/search.png?1305288930') no-repeat 0.5em 0.4em #f6f6f6;padding:.4em .8em .1em 1.8em;line-height:1.35em;font-size:.85em}body > nav > div > div form input[type='text']:focus{color:#444;border-color:#80b1df;-moz-box-shadow:#80b1df 0 0 4px, #80b1df 0 0 3px inset;-webkit-box-shadow:#80b1df 0 0 4px, #80b1df 0 0 3px inset;-o-box-shadow:#80b1df 0 0 4px, #80b1df 0 0 3px inset;box-shadow:#80b1df 0 0 4px, #80b1df 0 0 3px inset;background-color:#fff;outline:none}body > nav ul{position:relative;margin:0;padding:0;border:0;overflow:hidden;*zoom:1;margin:0 auto;padding:.5em 0}body > nav ul li{list-style-image:none;list-style-type:none;margin-left:0px;white-space:nowrap;display:inline;float:left;padding-left:4px;padding-right:4px}body > nav ul li:first-child,body > nav ul li.first{padding-left:0}body > nav ul li:last-child{padding-right:0}body > nav ul li.last{padding-right:0}body > nav ul li{padding:0 1em;margin:0;border-left:1px solid #cccccc;border-right:1px solid white}body > nav ul li:first-child{border-left:none;padding-left:0}body > nav ul li:last-child{border-right:0}body > nav ul li a{display:inline-block;color:#555555;line-height:150%;text-decoration:none}body > nav ul li a:hover{color:black}body{background-color:#f2f2f2}body > div > div{background-color:white;border-right:1px solid #d5d5d5}#articles + aside section{font-size:.8em;line-height:1.5em;margin-bottom:1.5em}#articles + aside ul{margin-bottom:0.5em}#articles + aside li{list-style:none;padding:.5em 0;margin:0;border-bottom:1px solid #ddd}#articles + aside li p:last-child{margin-bottom:0}article .title{text-decoration:none}article .title:hover{text-decoration:underline}article .entry{border-bottom:1px solid #eeeeee}article .entry:first-child{padding-top:0}article .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}article .footer{padding-top:15px}footer{background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #252525), color-stop(100%, #323232));background:-webkit-linear-gradient(#252525,#323232);background:-moz-linear-gradient(#252525,#323232);background:-o-linear-gradient(#252525,#323232);background:linear-gradient(#252525,#323232);padding:15px 0;position:relative;z-index:2}footer a{color:#dddddd}footer a:hover{color:white}
diff --git a/sass/themes/classic/_partials.scss b/sass/themes/classic/_partials.scss
index e1e72490..4ca98c0f 100644
--- a/sass/themes/classic/_partials.scss
+++ b/sass/themes/classic/_partials.scss
@@ -1,8 +1,5 @@
//@import "partials/shared";
-//@import "partials/syntax";
//@import "partials/search";
-//@import "partials/sidebar";
-//@import "partials/twitter";
/* layout partials */
@import "partials/header";
@@ -11,3 +8,5 @@
@import "partials/sidebar";
@import "partials/blog";
@import "partials/footer";
+
+@import "partials/syntax";
diff --git a/sass/themes/classic/core/_layout.scss b/sass/themes/classic/core/_layout.scss
index b245fd1f..3c9bbc45 100644
--- a/sass/themes/classic/core/_layout.scss
+++ b/sass/themes/classic/core/_layout.scss
@@ -67,7 +67,7 @@ body {
float: left;
width: $sidebar-width - $sidebar-pad*2;
margin: 0 -100% 0 0;
- padding: $sidebar-pad;
+ padding: 0 $sidebar-pad $sidebar-pad;
}
}
}
diff --git a/sass/themes/classic/core/_theme.scss b/sass/themes/classic/core/_theme.scss
index a69b11d7..b9e67a27 100644
--- a/sass/themes/classic/core/_theme.scss
+++ b/sass/themes/classic/core/_theme.scss
@@ -1,45 +1,44 @@
// Link Colors
-$link_color: lighten(#165b94, 0.3);
+$link-color: lighten(#165b94, 3);
+$link-color-hover: darken(#165b94, 5);
// Main Section Colors
-$body_color: #333333;
-$light_text: #999999;
-$body_bg: #323232;
+$body-color: #333333;
+$light-text: #999999;
+$body-bg: #323232;
-$header_bg: #323232;
-$header_border: #181818;
-$title_color: #dddddd;
+$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;
+$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;
+$sidebar-bg: #f2f2f2;
+$sidebar-border: #d5d5d5;
// Blog
-$article_border: #eeeeee;
-$main_bg: #fff;
+$article-border: #eeeeee;
+$main-bg: #fff;
-$footer_color: #999999;
-$footer_bg: #444444;
+$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;
-
-$twitter_topic: #888888;
+$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
index 5916c82e..61693c7f 100644
--- a/sass/themes/classic/core/_typography.scss
+++ b/sass/themes/classic/core/_typography.scss
@@ -2,16 +2,17 @@ $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 { font-family: Adelle, "Helvetica Neue", Helvetica, Arial, sans; }
-.sans-font { font-family: "Helvetica Neue", Helvetica, Arial, sans; }
+.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-font;
+ @extend .heading;
line-height: 1.2em;
margin-bottom: 0.6667em;
}
@@ -54,7 +55,7 @@ article {
}
#{headings()}{
- @extend .heading-font; font-weight: normal;
+ @extend .heading; font-weight: normal;
line-height: 1em;
text-rendering: optimizelegibility;
}
diff --git a/sass/themes/classic/partials/_pinboard.scss b/sass/themes/classic/partials/_pinboard.scss
new file mode 100644
index 00000000..60fd1ee6
--- /dev/null
+++ b/sass/themes/classic/partials/_pinboard.scss
@@ -0,0 +1,15 @@
+#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/_shared.scss b/sass/themes/classic/partials/_shared.scss
deleted file mode 100644
index a97b6051..00000000
--- a/sass/themes/classic/partials/_shared.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-#collapser {
- display: block;
- cursor: pointer;
- background: #f8f8f8;
- color: #888888;
- padding: 5px 10px;
- font-size: 10px;
- line-height: 150%;
- cursor: pointer;
- position: absolute;
- top: 0;
- right: 0; }
diff --git a/sass/themes/classic/partials/_sidebar.scss b/sass/themes/classic/partials/_sidebar.scss
index faab4152..ecad7a7a 100644
--- a/sass/themes/classic/partials/_sidebar.scss
+++ b/sass/themes/classic/partials/_sidebar.scss
@@ -1,9 +1,21 @@
+.side-shadow-border {
+ @include box-shadow(#fff 0 1px);
+}
#articles + aside {
section {
- @extend .sans-font;
+ @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;
@@ -13,8 +25,30 @@
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
index b06a5a10..5797c28f 100644
--- a/sass/themes/classic/partials/_syntax.scss
+++ b/sass/themes/classic/partials/_syntax.scss
@@ -1,279 +1,167 @@
-.code_window {
- @include border-top-radius(5px);
- @include border-bottom-radius(2px);
- background: #aaaaaa image-url("code_bg.png") top repeat-x;
- position: relative;
- margin: 0.3em 0 1.3em;
- padding: 0 3px 3px;
- font-size: 14px;
- border: 1px solid #898989;
- border-top-color: #cbcbcb;
- border-left-color: #a5a5a5;
- border-right-color: #a5a5a5;
- em {
- text-align: center;
- text-shadow: #cccccc 1px 1px 1px;
- display: block;
- padding: 1px 0;
- color: #333333;
- font-style: normal; }
- .highlight {
- margin: 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;
-pre {
- color: #cccccc;
- font-size: 13px;
- background: #222222;
- line-height: 1.5em;
- border: #aaaaaa 1px solid;
- overflow-x: auto;
- overflow-y: hidden;
- padding: 25px 20px;
- .lineno {
- color: #888888;
- background: #e3e3e3;
- display: inline-block;
- padding: 0 0 0 10px;
- &:first-child {
- padding-top: 15px;
- display: inline-block; } } }
+// 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;
-.highlight {
- position: relative;
- .pre_expander {
- font-size: 10px;
+.gutter {
+ .line-numbers {
text-align: right;
- padding: 4px 8px;
- line-height: 150%;
- position: absolute;
- cursor: pointer;
- top: 2px;
- right: 2px;
- @include border-bottom-left-radius;
- display: block;
- color: #777777;
- background: #333333;
- &:hover {
- background: #444444;
- color: #cccccc; } } }
+ 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; }
-// based on: http://github.com/mojombo/tpw/raw/master/css/syntax.css
-.editor {
- background: rgb(0, 22, 41);
- line-height: 1.25; }
+.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; }
-pre.console {
- background-color: black;
- color: lighten(green, 25);
- letter-spacing: 1px;
- padding: 0.5em;
- .prompt {
- color: lighten(navy, 50);
- &:before {
- color: white;
- content: "["; }
- &:after {
- color: white;
- content: "]"; } }
- .stdin {
- font-weight: bold;
- color: lighten(green, 75); } }
+ .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 {
- padding: 0 0 0.1em;
- color: white;
- // Comment
- .c {
- color: #999988;
- font-style: italic; }
- // Error
- .err {
- color: #a61717;
- background-color: #e3d2d2; }
- // Name
- .n {
- color: white; }
- // Keyword
- .k {
- color: rgb(255, 157, 0); }
- // Paren
- .p {
- color: darken(#ff9d00, 33); }
- // Operator
- .o {
- color: rgb(255, 157, 0); }
- // Comment.Multiline
- .cm {
- color: #999988;
- font-style: italic; }
- // Comment.Preproc
- .cp {
- color: #999999; }
- // Comment.Single
- .c1 {
- color: #999988;
- font-style: italic; }
- // Comment.Special
- .cs {
- color: #999999;
- font-style: italic; }
- // Generic.Deleted
- .gd {
- color: black;
- background-color: #ffdddd; }
- // Generic.Deleted.Specific
- .gd .x {
- color: black;
- background-color: #ffaaaa; }
- // Generic.Emph
- .ge {
- font-style: italic; }
- // Generic.Error
- .gr {
- color: #aa0000; }
- // Generic.Heading
- .gh {
- color: #999999; }
- // Generic.Inserted
- .gi {
- color: black;
- background-color: #ddffdd; }
- // Generic.Inserted.Specific
- .gi .x {
- color: black;
- background-color: #aaffaa; }
- // Generic.Output
- .go {
- color: #888888; }
- // Generic.Prompt
- .gp {
- color: #555555; }
- // Generic.Strong
- .gs {
- color: white; }
- // Generic.Subheading
- .gu {
- color: #aaaaaa; }
- // Generic.Traceback
- .gt {
- color: #aa0000; }
- // Keyword.Constant
- .kc {
- color: white; }
- // Keyword.Declaration
- .kd {
- color: white; }
- // Keyword.Pseudo
- .kp {
- color: white; }
- // Keyword.Reserved
- .kr {
- color: white; }
- // Keyword.Type
- .kt {
- color: #445588; }
- // Literal.Number
- .m {
- color: rgb(255, 98, 140); }
- // Literal.String
- .s {
- color: #dd1144; }
- // Name.Attribute
- .na {
- color: teal; }
- // Name.Builtin
- .nb {
- color: darken(rgb(128, 255, 187), 20); }
- // Name.Class
- .nc {
- color: darken(rgb(128, 255, 187), 20); }
- // Name.Constant
- .no {
- color: rgb(128, 255, 187); }
- // Name.Entity
- .ni {
- color: purple; }
- // Name.Exception
- .ne {
- color: rgb(255, 221, 0); }
- // Name.Function
- .nf {
- color: rgb(255, 221, 0); }
- // Name.Namespace
- .nn {
- color: #555555; }
- // Name.Tag
- .nt {
- color: white; }
- // Name.Variable
- .nv {
- color: teal; }
- // Operator.Word
- .ow {
- color: white; }
- // Text.Whitespace
- .w {
- color: #bbbbbb; }
- // Literal.Number
- .nl {
- color: rgb(255, 98, 140); }
- // Literal.Number.Float
- .mf {
- color: rgb(255, 98, 140); }
- // Literal.Number.Hex
- .mh {
- color: rgb(255, 98, 140); }
- // Literal.Number.Integer
- .mi {
- color: rgb(255, 98, 140); }
- // Literal.Number.Oct
- .mo {
- color: rgb(255, 98, 140); }
- // Literal.String.Backtick
- .sb {
- color: rgb(58, 217, 0); }
- // Literal.String.Char
- .sc {
- color: rgb(58, 217, 0); }
- // Literal.String.Doc
- .sd {
- color: rgb(58, 217, 0); }
- // Literal.String.Double
- .s2 {
- color: rgb(58, 217, 0); }
- // Literal.String.Escape
- .se {
- color: rgb(58, 217, 0); }
- // Literal.String.Heredoc
- .sh {
- color: rgb(58, 217, 0); }
- // Literal.String.Interpol
- .si {
- color: rgb(158, 255, 128); }
- // Literal.String.Other
- .sx {
- color: rgb(58, 217, 0); }
- // Literal.String.Regex
- .sr {
- color: #009926; }
- // Literal.String.Single
- .s1 {
- color: rgb(58, 217, 0); }
- // Literal.String.Symbol
- .ss {
- color: rgb(255, 98, 140); }
- // Name.Builtin.Pseudo
- .bp {
- color: #999999; }
- // Name.Variable.Class
- .vc {
- color: teal; }
- // Name.Variable.Global
- .vg {
- color: teal; }
- // Name.Variable.Instance
- .vi {
- color: teal; }
- // Literal.Number.Integer.Long
- .il {
- color: rgb(255, 98, 140); } }
+ 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
index 5d8b7d97..eabe3477 100644
--- a/sass/themes/classic/partials/_twitter.scss
+++ b/sass/themes/classic/partials/_twitter.scss
@@ -1,15 +1,49 @@
-#twitter {
+#tweets {
+ a {
+ color: #666;
+ text-decoration: none;
+ &:hover { text-decoration: underline; }
+ }
+ li:hover a[href*='status']{
+ color: #666;
+ }
p {
- padding-bottom: 10px;
- a.topic {
- color: $twitter_topic; } }
- .meta {
- color: $light_text;
- font-size: 80%;
- display: block;
- padding: 8px 0 0;
- a {
- color: inherit;
+ 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;
- &:hover {
- text-decoration: underline; } } } }
+ 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/_includes/article.html b/source/_includes/article.html
index 92f06720..3481cf21 100644
--- a/source/_includes/article.html
+++ b/source/_includes/article.html
@@ -1,18 +1,27 @@
+
+ {% if author %}
+ By {{ author }}
+ {% endif %}
+ {% if page.date %}
+ {{ page.date | ordinalize }}
+ {% endif %}
+ {% if page.updated %}
+ Updated {{ page.updated | ordinalize }}
+ {% endif %}
+
+ {% endunless %}
{% if index %}
{{ content | exerpt(content, page.url, 'Continue reading »') | smart_quotes }}
diff --git a/source/_includes/footer.html b/source/_includes/footer.html
index de560edc..5b40083e 100644
--- a/source/_includes/footer.html
+++ b/source/_includes/footer.html
@@ -3,9 +3,9 @@
Powered by Octopress
{% if site.pinboard_user %}
+
-
{% endif %}
diff --git a/source/_includes/head.html b/source/_includes/head.html
index 1d3329ba..b311ca69 100644
--- a/source/_includes/head.html
+++ b/source/_includes/head.html
@@ -1,7 +1,16 @@
+
+
+
+
+
+
-
- {{page.title}} - {{site.title}}
+ {% 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 %}
@@ -10,7 +19,7 @@
-
+
{% if page.keywords %}
@@ -18,8 +27,12 @@
-
-
+
+
+
+
+
+
{% if site.google_analytics_tracking_id %}
{% include google_analytics.html %}
{% endif %}
diff --git a/source/_includes/sidebar.html b/source/_includes/sidebar.html
index c5e3bd01..03890462 100644
--- a/source/_includes/sidebar.html
+++ b/source/_includes/sidebar.html
@@ -2,14 +2,13 @@
About Me
Hi, I'm Octopress!
-{% if site.recent_posts %}
+{% if page.single and site.recent_posts %}
Recent Posts
{% for post in site.posts limit: site.recent_posts %}
{{ post.title }}
- {{ post.date | date: "%B %d, %Y" }}
{% endfor %}
@@ -24,3 +23,4 @@
{% if site.pinboard_user %}
{% include pinboard.html %}
{% endif %}
+
diff --git a/source/_layouts/archive_monthly.html b/source/_layouts/archive_monthly.html
new file mode 100644
index 00000000..85ada6d8
--- /dev/null
+++ b/source/_layouts/archive_monthly.html
@@ -0,0 +1,19 @@
+---
+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
new file mode 100644
index 00000000..dabebebd
--- /dev/null
+++ b/source/_layouts/archive_yearly.html
@@ -0,0 +1,25 @@
+---
+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 %}
+
+ {% endfor %}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endfor %}
+
+
+
diff --git a/source/_layouts/default.html b/source/_layouts/default.html
index f69043b7..06fdbd77 100644
--- a/source/_layouts/default.html
+++ b/source/_layouts/default.html
@@ -1,9 +1,6 @@
-
-
-
-
-
-
+---
+permalink: /blog/:year/:month/:day/:title
+---
{% include head.html %}
@@ -18,9 +15,9 @@
diff --git a/source/_layouts/page.html b/source/_layouts/page.html
index 3b568349..88d6e13a 100644
--- a/source/_layouts/page.html
+++ b/source/_layouts/page.html
@@ -1,5 +1,8 @@
---
layout: default
+no_title_link: true
+permalink: pretty
+single: true
---
diff --git a/source/_layouts/post.html b/source/_layouts/post.html
index 3b568349..d2c87ce3 100644
--- a/source/_layouts/post.html
+++ b/source/_layouts/post.html
@@ -1,5 +1,6 @@
---
layout: default
+single: true
---
diff --git a/source/_posts/2009-11-13-hello-world.markdown b/source/_posts/2009-11-13-hello-world.markdown
index 011368d3..af719856 100644
--- a/source/_posts/2009-11-13-hello-world.markdown
+++ b/source/_posts/2009-11-13-hello-world.markdown
@@ -7,9 +7,9 @@ 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:
-> 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.
-
-**Jack Moffitt** [Blogging with Git Emacs and Jekyll](http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/)
+{% 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.
diff --git a/source/about.haml b/source/about.haml
index b0e9fd60..bbd5a9c6 100644
--- a/source/about.haml
+++ b/source/about.haml
@@ -2,6 +2,7 @@
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
diff --git a/source/archive.html b/source/archive.html
new file mode 100644
index 00000000..98518aa5
--- /dev/null
+++ b/source/archive.html
@@ -0,0 +1,24 @@
+---
+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 }}
+
+ {% endunless %}
+ {% unless month == this_month %}
+ {% assign month = this_month %}
+ {{ month }}
+ {% endunless %}
+
+ {{ post.date | date: "%d"}}
+ {{post.title}}
+
+ {% if forloop.last %} {% endif %}
+{% endfor %}
diff --git a/source/index.html b/source/index.html
index 03b6b9c1..09eb8d13 100644
--- a/source/index.html
+++ b/source/index.html
@@ -1,6 +1,5 @@
---
layout: default
-title: Octopress
---
{% for page in site.posts limit:3 %}
{% assign content = page.content %}
diff --git a/source/javascripts/libs/DOMAssistantCompressed-2.8.js b/source/javascripts/libs/DOMAssistantCompressed-2.8.js
deleted file mode 100644
index ff9ef9e0..00000000
--- a/source/javascripts/libs/DOMAssistantCompressed-2.8.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// Developed by Robert Nyman/DOMAssistant team, code/licensing: http://domassistant.googlecode.com/, documentation: http://www.domassistant.com/documentation, version 2.8
-var DOMAssistant=function(){var j=function(){},o=window,g=o.$,k=o.$$,d=/*@cc_on!@*/false,i=d&&parseFloat(navigator.appVersion)<6,h,c={},q={},a=true,n=Array.prototype.slice,p={accesskey:"accessKey","class":"className",colspan:"colSpan","for":"htmlFor",maxlength:"maxLength",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",valign:"vAlign",cellspacing:"cellSpacing",cellpadding:"cellPadding"},m={rules:/\s*,\s*/g,selector:/^(\w+|\*)?(#[\w\u00C0-\uFFFF\-=$]+)?((\.[\w\u00C0-\uFFFF\-]+)*)?((\[\w+\s*([~^$*|])?(=\s*([-\w\u00C0-\uFFFF\s.]+|"[^"]*"|'[^']*'))?\]+)*)?((:\w[-\w]*(\((odd|even|\-?\d*n?([-+]\d+)?|[:#]?[-\w\u00C0-\uFFFF.]+|"[^"]*"|'[^']*'|((\w*\.[-\w\u00C0-\uFFFF]+)*)?|(\[#?\w+([~^$*|])?=?[-\w\u00C0-\uFFFF\s.'"]+\]+)|(:\w[-\w]*\(.+\)))\))?)*)?([+>~])?/,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/},f=function(t,u,r){var s=t.tagName;while((t=t[u+"Sibling"])&&(t.nodeType!==1||(r?t.tagName!==s:t.tagName==="!"))){}return t},b=function(r){return typeof r!=="undefined"},l=function(r){return(l=r[0].compareDocumentPosition?function(s){return s.sort(function(u,t){return 3-(u.compareDocumentPosition(t)&6)})}:d?function(s){return s.sort(function(u,t){return u.sourceIndex-t.sourceIndex})}:function(s){return s.sort(function(w,u){var v=document.createRange(),t=document.createRange();v.setStart(w,0);v.setEnd(w,0);t.setStart(u,0);t.setEnd(u,0);return v.compareBoundaryPoints(Range.START_TO_END,t)})})(r)};var e=function(s,r){s.push.apply(s,n.apply(r));return s};if(d){e=function(t,s){if(s.slice){return t.concat(s)}var r=0,u;while((u=s[r++])){t[t.length]=u}return t}}return{isIE:d,camel:p,def:b,allMethods:[],publicMethods:["prev","next","hasChild","cssSelect","elmsByClass","elmsByAttribute","elmsByTag"],harmonize:function(){o.$=g;o.$$=k;return this},initCore:function(){this.applyMethod.call(o,"$",this.$);this.applyMethod.call(o,"$$",this.$$);o.DOMAssistant=this;if(d){j=Array}j.prototype=[];(function(r){r.each=function(v,u){for(var t=0,s=this.length;t=u)?(w-u)%u:w}else{if(t[8]){u=t[10]?parseInt(t[10],10):1;w=s=parseInt(t[11],10);while(w>u){w-=u}r=(s>=u)?(s-u)%u:s}}}}return{start:w,add:u,max:s,modVal:r}},cssByDOM:function(v){var aU,I,D,N,av,x,ah,A,K,w,aq,aN,y,aI,at,aB=new j(),aR=aB.indexOf,ap=[],aG=[],aK=v.replace(m.rules,",").split(","),aF={};function aQ(s){s=s||ap;for(var r=s.length;r--;){s[r].added=null;s[r].removeAttribute("added")}}function C(){for(var r=aU.length;r--;){aU[r].childElms=null}}function am(t,r){for(var u=0,aX;(aX=t[u]);u++){var aW=false;for(var s=0,aV;(aV=r[s]);s++){if(aV===aX){aW=true;r.splice(s,1);break}}if(aW){t.splice(u--,1)}}return t}function E(s,r){return(d||m.special.test(r))?s[p[r.toLowerCase()]||r]:s.getAttribute(r,2)}function P(r,s){r=r?r.replace(m.quoted,"$1").replace(/(\.|\[|\])/g,"\\$1"):null;return{"^":"^"+r,"$":r+"$","*":r,"|":"^"+r+"(\\-\\w+)*$","~":"\\b"+r+"\\b"}[s]||(r!==null?"^"+r+"$":r)}function W(r){return(r||this).tagName!=="!"}function S(r,s){return i?(r==="*"?s.all:s.all.tags(r)):s.getElementsByTagName(r)}function aL(r,s){r=r||"*";s=s||document;return(s===document||s.lastModified)?c[r]||(c[r]=S(r,document)):S(r,s)}function ar(aX,bf,u){aU=[];var aV=bf.split("-"),a0=[],a5=0,be=/\-of\-type$/.test(bf),a4,aZ={first:function(bg){return !f(bg,"previous",be)},last:function(bg){return !f(bg,"next",be)},empty:function(bg){return !bg.firstChild},enabled:function(bg){return !bg.disabled&&bg.type!=="hidden"},disabled:function(bg){return bg.disabled},checked:function(bg){return bg.checked},contains:function(bg){return(bg.innerText||bg.textContent||"").indexOf(u.replace(m.quoted,"$1"))>-1},other:function(bg){return E(bg,bf)===u}};function t(bg){while((A=aX[a5++])){if(W(A)&&aZ[bg](A)){a0[a0.length]=A}}return a0}var bb=aV[0]||null;if(bb&&aZ[bb]){return t(bb)}switch(bb){case"only":var a1,aW;while((A=aX[a5++])){K=A.parentNode;var a6=A.nodeName;if(K!==a1||a6!==aW){if(aZ.first(A)&&aZ.last(A)){a0[a0.length]=A}a1=K;aW=a6}}break;case"nth":if(u==="n"){a0=aX}else{var bd=(aV[1]==="last")?["lastChild","previousSibling"]:["firstChild","nextSibling"];aI=DOMAssistant.getSequence(u);if(aI){while((A=aX[a5++])){K=A.parentNode;K.childElms=K.childElms||{};var a7=A.nodeName;if(!K.childElms[a7]){var ba=0;aN=aI.start;y=K[bd[0]];while(y&&(aI.max<0||aN<=aI.max)){var bc=y.nodeName;if((be&&bc===a7)||(!be&&y.nodeType===1&&bc!=="!")){if(++ba===aN){if(bc===a7){a0[a0.length]=y}aN+=aI.add}}y=y[bd[1]]}if(at){h++}K.childElms[a7]=true;aU[aU.length]=K}}C()}}break;case"target":var s=document.location.hash.slice(1);if(s){while((A=aX[a5++])){if(E(A,"name")===s||E(A,"id")===s){a0[a0.length]=A;break}}}break;case"not":if((a4=m.pseudo.exec(u))){a0=am(aX,ar(aX,a4[1]?a4[1].toLowerCase():null,a4[3]||null))}else{for(var a8 in m){if(m[a8].lastIndex){m[a8].lastIndex=0}}u=u.replace(m.id,"[id=$1]");var a3=m.tag.exec(u);var aY=m.classes.exec(u);var a2=m.attribs.exec(u);var r=new RegExp(a2?P(a2[4],a2[2]):"(^|\\s)"+(a3?a3[0]:aY?aY[1]:"")+"(\\s|$)","i");while((w=aX[a5++])){aq=null;if(a3&&!r.test(w.nodeName)||aY&&!r.test(w.className)){aq=w}else{if(a2){var a9=E(w,a2[1]);if(!b(a9)||a9===false||typeof a9==="string"&&!r.test(a9)){aq=w}}}if(aq&&!aq.added){aq.added=true;a0[a0.length]=aq}}}break;default:return t("other")}return a0}function Z(aV,t){var r=0,u=aV,aW;while((aW=t[r++])){if(!u.length||u.indexOf(aW)<0){aV.push(aW)}}return aV}h=-1;for(var ak=0,aJ=[];(I=aK[ak]);ak++){if(!(D=I.match(m.selectorSplit))||ak&&aR.call(aK.slice(0,ak),I)>-1){continue}ap=[this];for(var ai=0,G;(G=D[ai]);ai++){aG=[];if((N=m.relation.exec(G))){var an=null,aS=D[ai+1];if((av=m.tag.exec(aS))){av=av[0];x=new RegExp("(^|\\s)"+av+"(\\s|$)","i")}else{if(m.id.test(aS)){an=DOMAssistant.$(aS)||null}}for(var ag=0,M;(M=ap[ag]);ag++){switch(N[0]){case">":var aD=an||aL(av,M);for(var ae=0,ay;(ay=aD[ae]);ae++){if(ay.parentNode===M){aG[aG.length]=ay}}break;case"+":if((M=f(M,"next"))){if((an&&an[0]===M)||(!an&&(!av||x.test(M.nodeName)))){aG[aG.length]=M}}break;case"~":while((M=M.nextSibling)&&!M.added){if((an&&an[0]===M)||(!an&&(!av||x.test(M.nodeName)))){M.added=true;aG[aG.length]=M}}break}}ap=aG;aQ();G=D[++ai];if(/^\w+$/.test(G)||m.id.test(G)){continue}ap.skipTag=true}var au=m.selector.exec(G);aF={tag:au[1]?au[1]:"*",id:au[2],allClasses:au[3],allAttr:au[5],allPseudos:au[10]};at=(aF.tag==="*");if(aF.id){var O=0,al=document.getElementById(aF.id.slice(1));if(al){while(ap[O]&&!DOMAssistant.hasChild.call(ap[O],al)){O++}aG=(O=0||aR.call(aJ,"*")>=0))?Z:e)(aB,ap);aJ.push(aF.tag);if(d&&at){aB=aB.filter(W)}}return((aB.length>1&&aK.length>1)||h>0)?l(aB):aB},cssByXpath:function(s){var t={xhtml:"http://www.w3.org/1999/xhtml"},u=(document.documentElement.namespaceURI===t.xhtml)?"xhtml:":"",r=function v(w){return t[w]||null};DOMAssistant.cssByXpath=function(N){var R,T,J,z,A,E,B=new j(),C=N.replace(m.rules,",").split(",");function M(W){var X=W?"[":"",V=W?"]":"";return function(Y,ac,ab,aa,Z){Z=(Z||"").replace(m.quoted,"$1");if(ac===Z&&ac==="readonly"){aa=null}return X+({"^":"starts-with(@"+ac+', "'+Z+'")',"$":"substring(@"+ac+", (string-length(@"+ac+") - "+(Z.length-1)+"), "+Z.length+') = "'+Z+'"',"*":'contains(concat(" ", @'+ac+', " "), "'+Z+'")',"|":"@"+ac+'="'+Z+'" or starts-with(@'+ac+', "'+Z+'-")',"~":'contains(concat(" ", @'+ac+', " "), " '+Z+' ")'}[ab]||("@"+ac+(aa?'="'+Z+'"':"")))+V}}function P(W,Y,X){W=/\-child$/.test(Y)?"*":W;var aa=Y.split("-"),V=((aa[1]==="last")?"(count(following-sibling::":"(count(preceding-sibling::")+W+") + 1)",Z,ab;switch(aa[0]){case"nth":return(X!=="n"&&(E=DOMAssistant.getSequence(X)))?((E.start===E.max)?V+" = "+E.start:V+" mod "+E.add+" = "+E.modVal+((E.start>1)?" and "+V+" >= "+E.start:"")+((E.max>0)?" and "+V+" <= "+E.max:"")):"";case"not":return"not("+((Z=m.pseudo.exec(X))?P(W,Z[1]?Z[1].toLowerCase():null,Z[3]||null):X.replace(m.id,"[id=$1]").replace(m.tag,"self::$0").replace(m.classes,'contains(concat(" ", @class, " "), " $1 ")').replace(m.attribs,M()))+")";case"first":return"not(preceding-sibling::"+W+")";case"last":return"not(following-sibling::"+W+")";case"only":return"not(preceding-sibling::"+W+" or following-sibling::"+W+")";case"empty":return"not(child::*) and not(text())";case"contains":return'contains(., "'+X.replace(m.quoted,"$1")+'")';case"enabled":return'not(@disabled) and not(@type="hidden")';case"disabled":return"@disabled";case"target":return'@name="'+(ab=document.location.hash.slice(1))+'" or @id="'+ab+'"';default:return"@"+Y+'="'+X+'"'}}for(var O=0;(R=C[O]);O++){if(!(T=R.match(m.selectorSplit))||O&&B.indexOf.call(C.slice(0,O),R)>-1){continue}J=J?J+" | .":".";for(var L=0,Q=T.length;L":"/","+":"/following-sibling::*[1]/self::","~":"/following-sibling::"}[A.tagRelation]||""):((L>0&&m.relation.test(T[L-1]))?A.tag:("//"+A.tag)))+(A.id||"").replace(m.id,'[@id = "$1"]')+(A.allClasses||"").replace(m.classes,'[contains(concat(" ", @class, " "), " $1 ")]')+(A.allAttr||"").replace(m.attribs,M(true));if(A.allPseudos){var D=A.allPseudos.match(m.pseudos);for(var K=0,x=D.length;K0&&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 a=DOMAssistant.def,b={display:true};return{addClass:function(d){if(!this.hasClass(d)){var c=this.className;this.className=c+(c.length?" ":"")+d}return this},removeClass:function(c){return this.replaceClass(c)},replaceClass:function(d,e){var c=new RegExp(("(^|\\s)"+d+"(\\s|$)"),"i");this.className=this.className.replace(c,function(f,h,g){return e?(h+e+g):" "}).replace(/^\s+|\s+$/g,"");return this},hasClass:function(c){return(" "+this.className+" ").indexOf(" "+c+" ")>-1},setStyle:function(f,g){var e=this.style;if("filters" in this&&(typeof f==="string"?/opacity/i.test(f):a(f.opacity))){e.zoom=1;e.filter=(e.filter||"").replace(/alpha\([^)]*\)/,"")+"alpha(opacity="+(a(f.opacity)?f.opacity:g)*100+")"}if(a(e.cssText)){var c=e.cssText;if(typeof f==="object"){for(var d in f){if(typeof d==="string"){if(b[d]){e[d]=f[d]}c+=";"+d+":"+f[d]}}}else{if(b[f]){e[f]=g}c+=";"+f+":"+g}e.cssText=c}return this},getStyle:function(c){var e="",d;c=c.toLowerCase();if(document.defaultView&&document.defaultView.getComputedStyle){e=document.defaultView.getComputedStyle(this,"").getPropertyValue(c)}else{if(this.currentStyle){if("filters" in this&&c==="opacity"){e=(d=this.style.filter||this.currentStyle.filter)&&d.indexOf("opacity=")>=0?parseFloat(d.match(/opacity=([^)]*)/)[1])/100:1}else{c=c.replace(/^float$/,"styleFloat").replace(/\-(\w)/g,function(f,g){return g.toUpperCase()});e=this.currentStyle[c]}if(e==="auto"&&/^(width|height)$/.test(c)&&this.currentStyle.display!=="none"){e=this["offset"+c.charAt(0).toUpperCase()+c.substr(1)]+"px"}}}return e}}}();DOMAssistant.attach(DOMAssistant.CSS);DOMAssistant.Content=function(){var a=DOMAssistant.$$;return{init:function(){DOMAssistant.setCache(false)},create:function(d,c,b,e){var f=a(document.createElement(d));if(c){f=f.setAttributes(c)}if(DOMAssistant.def(e)){f.addContent(e)}if(b){this.appendChild(f)}return f},setAttributes:function(b){if(DOMAssistant.isIE){var c=function(g,e,f){var d=e.toLowerCase();switch(d){case"name":case"type":case"multiple":return a(document.createElement(g.outerHTML.replace(new RegExp(d+"(=[a-zA-Z]+)?")," ").replace(">"," "+d+"="+f+">")));case"style":g.style.cssText=f;return g;default:g[DOMAssistant.camel[d]||e]=f;return g}};DOMAssistant.Content.setAttributes=function(d){var h=this;var g=this.parentNode;for(var f in d){if(typeof d[f]==="string"||typeof d[f]==="number"){var e=c(h,f,d[f]);if(g&&/(name|type)/i.test(f)){if(h.innerHTML){e.innerHTML=h.innerHTML}g.replaceChild(e,h)}h=e}}return h}}else{DOMAssistant.Content.setAttributes=function(d){for(var e in d){if(/class/i.test(e)){this.className=d[e]}else{this.setAttribute(e,d[e])}}return this}}return DOMAssistant.Content.setAttributes.call(this,b)},addContent:function(f){var d=typeof f;if(d==="string"||d==="number"){if(!this.firstChild){this.innerHTML=f}else{var c=document.createElement("div");c.innerHTML=f;for(var b=c.childNodes.length-1,e=null;b>=0;b--){e=this.insertBefore(c.childNodes[b],e)}}}else{if(d==="object"||(d==="function"&&!!f.nodeName)){this.appendChild(f)}}return this},replaceContent:function(b){DOMAssistant.cleanUp(this);return this.addContent(b)},replace:function(g,b){var f=typeof g;if(f==="string"||f==="number"){var e=this.parentNode;var d=DOMAssistant.Content.create.call(e,"div",null,false,g);for(var c=d.childNodes.length;c--;){e.insertBefore(d.childNodes[c],this.nextSibling)}g=this.nextSibling;e.removeChild(this)}else{if(f==="object"||(f==="function"&&!!g.nodeName)){this.parentNode.replaceChild(g,this)}}return b?g: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 i,g="_events",c=!!document.addEventListener,a={focus:true,blur:true},b=DOMAssistant.isIE?{focus:"activate",blur:"deactivate",mouseenter:"mouseover",mouseleave:"mouseout"}:{mouseenter:"mouseover",mouseleave:"mouseout"},f={special:/^submit|reset|change|select$/i,mouseenterleave:/^mouse(enter|leave)$/i,dom:/^DOM/,on:/^on/i},e=function(j){return DOMAssistant.isIE&&f.special.test(j)},d=function(j){return b[j]||j},h=function(n,k,m){n=n||window.event||{};if(n.event){return n}var l={event:n,type:k||n.type,bubbles:n.bubbles||true,cancelable:n.cancelable||false,target:m||n.target||n.srcElement,clientX:n.clientX||0,clientY:n.clientY||0,altKey:n.altKey||false,ctrlKey:n.ctrlKey||false,shiftKey:n.shiftKey||false,button:n.button||null,timeStamp:+new Date(),preventDefault:function(){if(n.preventDefault){n.preventDefault()}this.returnValue=n.returnValue=false},stopPropagation:function(){if(n.stopPropagation){n.stopPropagation()}this.cancelBubble=n.cancelBubble=true}};if(l.target&&3===l.target.nodeType){l.target=l.target.parentNode}l.currentTarget=l.target;l.relatedTarget=n.relatedTarget||(n.fromElement===l.target?n.toElement:n.fromElement)||null;var o=document.documentElement,j=document.body;l.pageX=DOMAssistant.def(n.pageX)?n.pageX:(l.clientX+(o.scrollLeft||j.scrollLeft)-(o.clientLeft||0));l.pageY=DOMAssistant.def(n.pageY)?n.pageY:(l.clientY+(o.scrollTop||j.scrollTop)-(o.clientTop||0));if("number"===typeof n.which){l.keyCode=n.keyCode;l.charCode=l.which=n.which}else{if(n.keyCode){l.keyCode=l.charCode=n.keyCode}}return l};return{publicMethods:["triggerEvent","addEvent","removeEvent","relayEvent","unrelayEvent","preventDefault","cancelBubble"],init:function(){DOMAssistant.preventDefault=this.preventDefault;DOMAssistant.cancelBubble=this.cancelBubble;i=this.handleEvent},triggerEvent:function(r,o,q){var m=d(r),s=this.retrieve(g),j=q||h(q,m,o||this);j.currentTarget=this;if(s&&s[m]){for(var n=0,l=s[m].length;n<\/script>");document.getElementById("ieScriptLoad").onreadystatechange=function(){if(this.readyState==="complete"){e()}}@end@*/
-if(document.addEventListener){document.addEventListener("DOMContentLoaded",e,false)}if(/KHTML|WebKit|iCab/i.test(navigator.userAgent)){a=setInterval(function(){if(/loaded|complete/i.test(document.readyState)){e();clearInterval(a)}},10)}window.onload=e;return{DOMReady:function(){for(var j=0,h=arguments.length,k;j.+?<\\/" + 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
new file mode 100644
index 00000000..0846b919
--- /dev/null
+++ b/source/javascripts/libs/ie/selectivizr-1.0.1.js
@@ -0,0 +1,5 @@
+/*!
+ * 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/syntax.markdown b/source/test/syntax.markdown
deleted file mode 100644
index ec5bab50..00000000
--- a/source/test/syntax.markdown
+++ /dev/null
@@ -1,228 +0,0 @@
----
-layout: default
-title: Syntax Highlighting Debug
----
-
-Ruby
-{% highlight ruby %}
-def rebuild_site(relative)
- puts ">>> Change Detected to: #{relative} <<<"
- IO.popen('rake generate') do |io|
- print(io.readpartial(512)) until io.eof?
- end
- puts '>>> Update Complete <<<'
-end
-{% endhighlight %}
-
-
-So that's a small example. What about a big one?
-
-
-Ruby
-{% highlight ruby %}
-require 'active_support/core_ext/array'
-require 'active_support/core_ext/hash/except'
-require 'active_support/core_ext/object/metaclass'
-
-module ActiveRecord
- module NamedScope
- extend ActiveSupport::Concern
-
- # All subclasses of ActiveRecord::Base have one named scope:
- # * scoped - which allows for the creation of anonymous \scopes, on the fly: Shirt.scoped(:conditions => {:color => 'red'}).scoped(:include => :washing_instructions)
- #
- # These anonymous \scopes tend to be useful when procedurally generating complex queries, where passing
- # intermediate values (scopes) around as first-class objects is convenient.
- #
- # You can define a scope that applies to all finders using ActiveRecord::Base.default_scope.
- included do
- named_scope :scoped, lambda { |scope| scope }
- end
-
- module ClassMethods
- def scopes
- read_inheritable_attribute(:scopes) || write_inheritable_attribute(:scopes, {})
- end
-
- # Adds a class method for retrieving and querying objects. A scope represents a narrowing of a database query,
- # such as :conditions => {:color => :red}, :select => 'shirts.*', :include => :washing_instructions .
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :red, :conditions => {:color => 'red'}
- # named_scope :dry_clean_only, :joins => :washing_instructions, :conditions => ['washing_instructions.dry_clean_only = ?', true]
- # end
- #
- # The above calls to named_scope define class methods Shirt.red and Shirt.dry_clean_only. Shirt.red,
- # in effect, represents the query Shirt.find(:all, :conditions => {:color => 'red'}) .
- #
- # Unlike Shirt.find(...) , however, the object returned by Shirt.red is not an Array; it resembles the association object
- # constructed by a has_many declaration. For instance, you can invoke Shirt.red.find(:first) , Shirt.red.count ,
- # Shirt.red.find(:all, :conditions => {:size => 'small'}) . Also, just
- # as with the association objects, named \scopes act like an Array, implementing Enumerable; Shirt.red.each(&block) ,
- # Shirt.red.first , and Shirt.red.inject(memo, &block) all behave as if Shirt.red really was an Array.
- #
- # These named \scopes are composable. For instance, Shirt.red.dry_clean_only will produce all shirts that are both red and dry clean only.
- # Nested finds and calculations also work with these compositions: Shirt.red.dry_clean_only.count returns the number of garments
- # for which these criteria obtain. Similarly with Shirt.red.dry_clean_only.average(:thread_count) .
- #
- # All \scopes are available as class methods on the ActiveRecord::Base descendant upon which the \scopes were defined. But they are also available to
- # has_many associations. If,
- #
- # class Person < ActiveRecord::Base
- # has_many :shirts
- # end
- #
- # then elton.shirts.red.dry_clean_only will return all of Elton's red, dry clean
- # only shirts.
- #
- # Named \scopes can also be procedural:
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :colored, lambda { |color|
- # { :conditions => { :color => color } }
- # }
- # end
- #
- # In this example, Shirt.colored('puce') finds all puce shirts.
- #
- # Named \scopes can also have extensions, just as with has_many declarations:
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :red, :conditions => {:color => 'red'} do
- # def dom_id
- # 'red_shirts'
- # end
- # end
- # end
- #
- #
- # For testing complex named \scopes, you can examine the scoping options using the
- # proxy_options method on the proxy itself.
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :colored, lambda { |color|
- # { :conditions => { :color => color } }
- # }
- # end
- #
- # expected_options = { :conditions => { :colored => 'red' } }
- # assert_equal expected_options, Shirt.colored('red').proxy_options
- def named_scope(name, options = {}, &block)
- name = name.to_sym
- scopes[name] = lambda do |parent_scope, *args|
- Scope.new(parent_scope, case options
- when Hash
- options
- when Proc
- options.call(*args)
- end, &block)
- end
- metaclass.instance_eval do
- define_method name do |*args|
- scopes[name].call(self, *args)
- end
- end
- end
- end
-
- class Scope
- attr_reader :proxy_scope, :proxy_options, :current_scoped_methods_when_defined
- NON_DELEGATE_METHODS = %w(nil? send object_id class extend find size count sum average maximum minimum paginate first last empty? any? many? respond_to?).to_set
- [].methods.each do |m|
- unless m =~ /^__/ || NON_DELEGATE_METHODS.include?(m.to_s)
- delegate m, :to => :proxy_found
- end
- end
-
- delegate :scopes, :with_scope, :scoped_methods, :to => :proxy_scope
-
- def initialize(proxy_scope, options, &block)
- options ||= {}
- [options[:extend]].flatten.each { |extension| extend extension } if options[:extend]
- extend Module.new(&block) if block_given?
- unless Scope === proxy_scope
- @current_scoped_methods_when_defined = proxy_scope.send(:current_scoped_methods)
- end
- @proxy_scope, @proxy_options = proxy_scope, options.except(:extend)
- end
-
- def reload
- load_found; self
- end
-
- def first(*args)
- if args.first.kind_of?(Integer) || (@found && !args.first.kind_of?(Hash))
- proxy_found.first(*args)
- else
- find(:first, *args)
- end
- end
-
- def last(*args)
- if args.first.kind_of?(Integer) || (@found && !args.first.kind_of?(Hash))
- proxy_found.last(*args)
- else
- find(:last, *args)
- end
- end
-
- def size
- @found ? @found.length : count
- end
-
- def empty?
- @found ? @found.empty? : count.zero?
- end
-
- def respond_to?(method, include_private = false)
- super || @proxy_scope.respond_to?(method, include_private)
- end
-
- def any?
- if block_given?
- proxy_found.any? { |*block_args| yield(*block_args) }
- else
- !empty?
- end
- end
-
- # Returns true if the named scope has more than 1 matching record.
- def many?
- if block_given?
- proxy_found.many? { |*block_args| yield(*block_args) }
- else
- size > 1
- end
- end
-
- protected
- def proxy_found
- @found || load_found
- end
-
- private
- def method_missing(method, *args, &block)
- if scopes.include?(method)
- scopes[method].call(self, *args)
- else
- with_scope({:find => proxy_options, :create => proxy_options[:conditions].is_a?(Hash) ? proxy_options[:conditions] : {}}, :reverse_merge) do
- method = :new if method == :build
- if current_scoped_methods_when_defined && !scoped_methods.include?(current_scoped_methods_when_defined)
- with_scope current_scoped_methods_when_defined do
- proxy_scope.send(method, *args, &block)
- end
- else
- proxy_scope.send(method, *args, &block)
- end
- end
- end
- end
-
- def load_found
- @found = find(:all)
- end
- end
- end
-end
-{% endhighlight %}
-
\ No newline at end of file
--
cgit v1.2.1