mirror of
				https://github.com/capistrano/capistrano
				synced 2023-03-27 23:21:18 -04:00 
			
		
		
		
	Pushing all the WIP documentation
This commit is contained in:
		
							parent
							
								
									61aec364b2
								
							
						
					
					
						commit
						d084817029
					
				
					 45 changed files with 22275 additions and 194 deletions
				
			
		| 
						 | 
				
			
			@ -1,28 +1,26 @@
 | 
			
		|||
<div class="bottom-menu">
 | 
			
		||||
  <div class="container">
 | 
			
		||||
    <div class="row">
 | 
			
		||||
      <div class="span2 brand">
 | 
			
		||||
        <a href="http://capistranorb.com/" class="capistrano-logo"></a>
 | 
			
		||||
      </div>
 | 
			
		||||
<div class="row">
 | 
			
		||||
  <div class="large-4 columns">
 | 
			
		||||
    <ul>
 | 
			
		||||
    <li><a href="/about">About Capistrano</a></li>
 | 
			
		||||
    <li><a href="https://github.com/capistrano/capistrano/blob/master/CONTRIBUTING">Contributing</a></li>
 | 
			
		||||
    <li><a href="https://rubygems.org/gems/capistrano/versions">Releases</a></li>
 | 
			
		||||
    <li><a href="/upgrading">Upgrading</a></li>
 | 
			
		||||
    <li><a href="/security">Security</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
      <div class="span8">
 | 
			
		||||
        <ul class="bottom-links">
 | 
			
		||||
          <li><a href="#fakelink">About Capistrano</a></li>
 | 
			
		||||
          <li><a href="#fakelink">Contributing</a></li>
 | 
			
		||||
          <li><a href="#fakelink">Releases</a></li>
 | 
			
		||||
          <li><a href="#fakelink">Upgrading</a></li>
 | 
			
		||||
          <li><a href="#fakelink">StackOverflow</a></li>
 | 
			
		||||
          <li><a href="#fakelink">Mailing List</a></li>
 | 
			
		||||
          <li><a href="#fakelink">Support</a></li>
 | 
			
		||||
          <li><a href="#fakelink">Links</a></li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </div>
 | 
			
		||||
  <div class="large-4 columns">
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="http://stackoverflow.com/questions/tagged/capistrano">StackOverflow</a></li>
 | 
			
		||||
      <li><a href="https://groups.google.com/forum/#!forum/capistrano">Mailing List</a></li>
 | 
			
		||||
      <li><a href=".... ">Commercial Support</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
      <div class="span2">
 | 
			
		||||
        <ul class="bottom-icons">
 | 
			
		||||
          <li><a href="#fakelink" class="fui-twitter"></a></li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  <div class="large-4 columns">
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li><a href="//twitter.com/capistranorb"><i class="foundicon-twitter"></i></a></li>
 | 
			
		||||
      <li><a href="//github.com/capistrano"><i class="foundicon-github"></i></a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
<div class="header pure-u-1-1">
 | 
			
		||||
<div class="top-bar">
 | 
			
		||||
  <a href="/" class="brand">
 | 
			
		||||
    <img src="/images/CapistranoLogo.png" />
 | 
			
		||||
  </a>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,31 +1,35 @@
 | 
			
		|||
<div class="pure-menu pure-menu-open">
 | 
			
		||||
  <ul class="nav nav-list">
 | 
			
		||||
    <li><a href="http://www.harrow.io/" class="advertisment"><span class="label label-important">New</span> Hosted Capistrano for Teams</a></li>
 | 
			
		||||
    <li class="pure-menu-heading">Overview</li>
 | 
			
		||||
    <li><a href="/documentation/overview/what-is-capistrano/">What is Capistrano?</a></li>
 | 
			
		||||
    <li><a href="/documentation/overview/introductory-demo-video/">Introductory Demo Video</a></li>
 | 
			
		||||
    <li class="pure-menu-heading">Getting Started</li>
 | 
			
		||||
    <li><a href="/documentation/getting-started/installation/">Installation</a></li>
 | 
			
		||||
    <li><a href="/documentation/getting-started/preparing-your-application/">Preparing Your Application</a></li>
 | 
			
		||||
    <li><a href="/documentation/getting-started/authentication-and-authorisation/">Authentication & Authorisation</a></li>
 | 
			
		||||
    <li><a href="/documentation/getting-started/cold-start/">Cold Start</a></li>
 | 
			
		||||
    <li><a href="/documentation/getting-started/rollbacks/">Rollbacks</a></li>
 | 
			
		||||
    <li class="pure-menu-heading">Troubleshooting</li>
 | 
			
		||||
    <li><a href="/documentation/troubleshooting/authentication/">SCM (Git, SVN, etc) Authentication</a></li>
 | 
			
		||||
    <li><a href="/documentation/troubleshooting/connectivity/">Connectivity</a></li>
 | 
			
		||||
    <li><a href="/documentation/troubleshooting/gateway-servers/">Gateway Servers</a></li>
 | 
			
		||||
    <li><a href="/documentation/troubleshooting/agent-forwarding/">Agent Forwarding</a></li>
 | 
			
		||||
    <li><a href="/documentation/troubleshooting/sudo-password/">`sudo` Password</a></li>
 | 
			
		||||
    <li><a href="/documentation/troubleshooting/rvm-rbenv-nvm/">RVM, `rbenv` And `nvm`</a></li>
 | 
			
		||||
    <li class="pure-menu-heading">FAQ</li>
 | 
			
		||||
    <li><a href="/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/">Why Does Something Work In An SSH Session, But Not In Capistrano</a></li>
 | 
			
		||||
    <li><a href="/documentation/faq/should-i-use-capistrano-to-provision-my-servers/">Should I Use Capistrano To Provision My Servers?</a></li>
 | 
			
		||||
    <li class="pure-menu-heading">Power Use-Cases</li>
 | 
			
		||||
    <li><a href="/documentation/power-use-cases/integration-with-rake/">Integration With Rake</a></li>
 | 
			
		||||
    <li><a href="/documentation/power-use-cases/driving-tools-such-as-chef-solo/">Driving Tools Such As <em>Chef Solo</em></a></li>
 | 
			
		||||
    <li class="pure-menu-heading">Recent Announcements</li>
 | 
			
		||||
    {% for post in site.posts %}
 | 
			
		||||
      <li><a href="{{ post.url }}"><span class="post-date">{{ post.date | date_to_string }}</span> {{ post.title }}</a></li>
 | 
			
		||||
    {% endfor %}
 | 
			
		||||
  </ul>
 | 
			
		||||
</div>
 | 
			
		||||
<ul class="side-nav">
 | 
			
		||||
  <li><a href="http://www.harrow.io/" class="advertisment"><span class="label label-important">New</span> Hosted Capistrano for Teams</a></li>
 | 
			
		||||
  <li class="divider"></li>
 | 
			
		||||
  <h5>Overview</h5>
 | 
			
		||||
  <li><a href="/documentation/overview/what-is-capistrano/">What is Capistrano?</a></li>
 | 
			
		||||
  <li><a href="/documentation/overview/introductory-demo-video/">Introductory Demo Video</a></li>
 | 
			
		||||
  <li class="divider"></li>
 | 
			
		||||
  <h5>Getting Started</h5>
 | 
			
		||||
  <li><a href="/documentation/getting-started/installation/">Installation</a></li>
 | 
			
		||||
  <li><a href="/documentation/getting-started/preparing-your-application/">Preparing Your Application</a></li>
 | 
			
		||||
  <li><a href="/documentation/getting-started/authentication-and-authorisation/">Authentication & Authorisation</a></li>
 | 
			
		||||
  <li><a href="/documentation/getting-started/cold-start/">Cold Start</a></li>
 | 
			
		||||
  <li><a href="/documentation/getting-started/rollbacks/">Rollbacks</a></li>
 | 
			
		||||
  <li class="divider"></li>
 | 
			
		||||
  <h5>Troubleshooting</h5>
 | 
			
		||||
  <li><a href="/documentation/troubleshooting/authentication/">SCM (Git, SVN, etc) Authentication</a></li>
 | 
			
		||||
  <li><a href="/documentation/troubleshooting/connectivity/">Connectivity</a></li>
 | 
			
		||||
  <li><a href="/documentation/troubleshooting/gateway-servers/">Gateway Servers</a></li>
 | 
			
		||||
  <li><a href="/documentation/troubleshooting/agent-forwarding/">Agent Forwarding</a></li>
 | 
			
		||||
  <li><a href="/documentation/troubleshooting/sudo-password/">`sudo` Password</a></li>
 | 
			
		||||
  <li><a href="/documentation/troubleshooting/rvm-rbenv-nvm/">RVM, `rbenv` And `nvm`</a></li>
 | 
			
		||||
  <li class="divider"></li>
 | 
			
		||||
  <h5>FAQ</h5>
 | 
			
		||||
  <li><a href="/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/">Why Does Something Work In An SSH Session, But Not In Capistrano</a></li>
 | 
			
		||||
  <li><a href="/documentation/faq/should-i-use-capistrano-to-provision-my-servers/">Should I Use Capistrano To Provision My Servers?</a></li>
 | 
			
		||||
  <li class="divider"></li>
 | 
			
		||||
  <h5>Power Use-Cases</h5>
 | 
			
		||||
  <li><a href="/documentation/power-use-cases/integration-with-rake/">Integration With Rake</a></li>
 | 
			
		||||
  <li><a href="/documentation/power-use-cases/driving-tools-such-as-chef-solo/">Driving Tools Such As <em>Chef Solo</em></a></li>
 | 
			
		||||
  <li class="divider"></li>
 | 
			
		||||
  <h5>Recent Announcements</h5>
 | 
			
		||||
  {% for post in site.posts %}
 | 
			
		||||
    <li><a href="{{ post.url }}"><span class="post-date">{{ post.date | date_to_string }}</span> {{ post.title }}</a></li>
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
</ul>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,26 +5,24 @@
 | 
			
		|||
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
			
		||||
    <title>{{ page.title }}</title>
 | 
			
		||||
    <link href='http://fonts.googleapis.com/css?family=Enriqueta' rel='stylesheet' type='text/css'>
 | 
			
		||||
    <script type="text/javascript" src="//use.typekit.net/itm5ubu.js"></script>
 | 
			
		||||
    <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
 | 
			
		||||
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300' rel='stylesheet' type='text/css'>
 | 
			
		||||
    <link href='http://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>
 | 
			
		||||
    <link href='http://fonts.googleapis.com/css?family=Enriqueta' rel='stylesheet' type='text/css'>
 | 
			
		||||
    <link href="http://vjs.zencdn.net/4.0.2/video-js.css" rel="stylesheet">
 | 
			
		||||
    <script src="http://vjs.zencdn.net/4.0.2/video.js"></script>
 | 
			
		||||
    <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.1.0/pure-min.css">
 | 
			
		||||
    <link rel="stylesheet" href="/css/syntax.css">
 | 
			
		||||
    <link rel="stylesheet" href="/css/foundation.css" />
 | 
			
		||||
    <link rel="stylesheet" href="/css/capistrano.css">
 | 
			
		||||
    <link rel="stylesheet" href="/css/social_foundicons.css" />
 | 
			
		||||
    <link rel="stylesheet" href="/css/okaidia.css">
 | 
			
		||||
    <script src="/js/vendor/custom.modernizr.js"></script>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
 | 
			
		||||
    {% include header.html %}
 | 
			
		||||
 | 
			
		||||
    <div class="pure-g-r">
 | 
			
		||||
      <div class="pure-u-1-3">
 | 
			
		||||
    <div class="row">
 | 
			
		||||
      <div class="large-4 columns">
 | 
			
		||||
        {% include navigation.html %}
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="pure-u-2-3">
 | 
			
		||||
      <div class="large-8 column">
 | 
			
		||||
        <div class="content">
 | 
			
		||||
          <h2>{{ page.title }}</h2>
 | 
			
		||||
          {{ content }}
 | 
			
		||||
| 
						 | 
				
			
			@ -33,15 +31,17 @@
 | 
			
		|||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!--<div class="container">                                     -->
 | 
			
		||||
    <!--      <h1 class="title"><a href="/">{{ site.name }}</a></h1>-->
 | 
			
		||||
    <!--      <a class="extra" href="/">home</a>                    -->
 | 
			
		||||
    <!--    </div>                                                  -->
 | 
			
		||||
      <!--      <h1 class="title"><a href="/">{{ site.name }}</a></h1>-->
 | 
			
		||||
      <!--      <a class="extra" href="/">home</a>                    -->
 | 
			
		||||
      <!--    </div>                                                  -->
 | 
			
		||||
 | 
			
		||||
    <!--    {{ content }}                                           -->
 | 
			
		||||
 | 
			
		||||
    <!--</div> [> /container <]                                     -->
 | 
			
		||||
 | 
			
		||||
    {% include footer.html %}
 | 
			
		||||
  {% include footer.html %}
 | 
			
		||||
 | 
			
		||||
  </body>
 | 
			
		||||
  <script src="/js/prism.js"></script>
 | 
			
		||||
  <script src="/js/prism-ruby-language.js"></script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										47
									
								
								_plugins/prism.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								_plugins/prism.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
module Jekyll
 | 
			
		||||
 | 
			
		||||
  class PrismBlock < Liquid::Block
 | 
			
		||||
    include Liquid::StandardFilters
 | 
			
		||||
 | 
			
		||||
    OPTIONS_SYNTAX = %r{^([a-zA-Z0-9.+#-]+)((\s+\w+(=[0-9,-]+)?)*)$}
 | 
			
		||||
 | 
			
		||||
    def initialize(tag_name, markup, tokens)
 | 
			
		||||
      super
 | 
			
		||||
      if markup.strip =~ OPTIONS_SYNTAX
 | 
			
		||||
        @lang = $1
 | 
			
		||||
        if defined?($2) && $2 != ''
 | 
			
		||||
          tmp_options = {}
 | 
			
		||||
          $2.split.each do |opt|
 | 
			
		||||
            key, value = opt.split('=')
 | 
			
		||||
            if value.nil?
 | 
			
		||||
              value = true
 | 
			
		||||
            end
 | 
			
		||||
            tmp_options[key] = value
 | 
			
		||||
          end
 | 
			
		||||
          @options = tmp_options
 | 
			
		||||
        else
 | 
			
		||||
          @options = { "linenos" => "" }
 | 
			
		||||
        end
 | 
			
		||||
      else
 | 
			
		||||
        raise SyntaxError.new("Syntax Error in 'prism' - Valid syntax: prism <lang> [linenos(='1-5')]")
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def render(context)
 | 
			
		||||
      code = h(super).strip
 | 
			
		||||
 | 
			
		||||
      if @options["linenos"] == true
 | 
			
		||||
        @options["linenos"] = "1-#{code.lines.count}"
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      <<-HTML
 | 
			
		||||
<div>
 | 
			
		||||
  <pre data-line='#{@options["linenos"]}'><code class='language-#{@lang}'>#{code}</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
      HTML
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Liquid::Template.register_tag('prism', Jekyll::PrismBlock)
 | 
			
		||||
| 
						 | 
				
			
			@ -120,8 +120,7 @@ documentation if you want to explore that any further.
 | 
			
		|||
The guiding principle is dependency resolution, and interoperability with
 | 
			
		||||
other tools, for example:
 | 
			
		||||
 | 
			
		||||
{% highlight ruby %}
 | 
			
		||||
# No description, this is an internal method
 | 
			
		||||
{% prism ruby %}
 | 
			
		||||
task :notify do
 | 
			
		||||
  this_release_tag = sh("git describe --abbrev=0 --tags")
 | 
			
		||||
  last_ten_commits = sh("git log #{this_release_tag}~10..#{this_release_tag}")
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +134,7 @@ end
 | 
			
		|||
namespace :deploy
 | 
			
		||||
  task default: :notify
 | 
			
		||||
end
 | 
			
		||||
{% endhighlight %}
 | 
			
		||||
{% endprism %}
 | 
			
		||||
 | 
			
		||||
The last three lines rely on Rake's additive task declaration, by redefining the
 | 
			
		||||
`deploy:default` task by adding another dependency. Rake will automatically
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,66 +1,21 @@
 | 
			
		|||
a {
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
  color: #52C1DB;
 | 
			
		||||
body {
 | 
			
		||||
  font-family: "proxima-nova",sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body, p, a {
 | 
			
		||||
  font-family: 'Open-Sans', sans-serif;
 | 
			
		||||
  -webkit-font-smoothing: antialiased;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
p, h1, h2, h3, h4, h5, h6 {
 | 
			
		||||
  color: #1C1B39;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header {
 | 
			
		||||
  height: 195px;
 | 
			
		||||
.top-bar {
 | 
			
		||||
  background-color: #1C1B39;
 | 
			
		||||
  background-image: url('/images/CapistranoGraphicWireframe.png');
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
  background-size: 275px;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  height: 170px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header a {
 | 
			
		||||
  color: #52C1DB;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
  margin: 1.3em 0 1em;
 | 
			
		||||
  padding: 1.3em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
code, kbd, pre, samp {
 | 
			
		||||
  font-family: 'droid-sans-mono', monospace, serif;
 | 
			
		||||
  background-color: rgb(250, 250, 250);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header a.brand img {
 | 
			
		||||
  margin: 6.5em auto auto 7em;
 | 
			
		||||
  width: 300px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1, h2, h3, h4, h5 h6 {
 | 
			
		||||
h1, h2, h3, h4, h5, h6 {
 | 
			
		||||
  font-family: 'Enriqueta', serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.post-date {
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
  font-size: 36pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
  font-size: 18pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.nav.nav-list {
 | 
			
		||||
  border-top: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.content {
 | 
			
		||||
  margin: 1.3em 0 1em;
 | 
			
		||||
  padding: 1.3em;
 | 
			
		||||
p code, li code {
 | 
			
		||||
  padding: 3px;
 | 
			
		||||
  background-color: #E6E6E6;
 | 
			
		||||
	font-family: "droid-sans-mono", Consolas, Monaco, 'Andale Mono', monospace;
 | 
			
		||||
  font-size: 0.9em;
 | 
			
		||||
  color: #222;
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										109
									
								
								css/dreamweaver.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								css/dreamweaver.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,109 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Dreamweaver theme
 | 
			
		||||
 *
 | 
			
		||||
 * @author Sean Coker
 | 
			
		||||
 * @url http://seancoker.com
 | 
			
		||||
 * @version 1.0
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    /* original is white background with no border */
 | 
			
		||||
    background-color: #fff;
 | 
			
		||||
    word-wrap: break-word;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
    padding: 10px;
 | 
			
		||||
    color: #000;
 | 
			
		||||
    font-size: 13px;
 | 
			
		||||
    line-height: 16px;
 | 
			
		||||
    margin-bottom: 20px
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre, code {
 | 
			
		||||
    font-family: monospace;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .comment {
 | 
			
		||||
    color: #888;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .support {
 | 
			
		||||
    color: #cd57d5;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .constant.numeric, pre .php.embedded {
 | 
			
		||||
    color: #fa0002;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .keyword, pre .constant.language {
 | 
			
		||||
    color: #000789;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .selector, pre .support.property, pre .entity.name.function {
 | 
			
		||||
    color: #000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .storage.function, pre .variable.self, pre .support.function, pre .constant.language {
 | 
			
		||||
    color: #000;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .string {
 | 
			
		||||
    color: #0d43fa;
 | 
			
		||||
    font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .css-property + span, pre .keyword.unit, pre .support.css-value {
 | 
			
		||||
    color: #0d43fa !important;
 | 
			
		||||
    font-weight: normal !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .entity.tag.style + .string, pre .php.embedded .constant.language, pre .php.embedded .keyword {
 | 
			
		||||
    color: #37a348 !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .support.method {
 | 
			
		||||
    color: #2bd5bb;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .entity.name {
 | 
			
		||||
    color: #fd74e0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .support.css-property, pre .support.tag-name, pre .support.tag, pre .support.attribute, pre .support.attribute + .operator {
 | 
			
		||||
    color: #000789;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .storage.module, pre .storage.class {
 | 
			
		||||
    color: #122573;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .css.embedded .support.tag, pre .css.embedded .style.tag {
 | 
			
		||||
    color: #cd57d5;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .keyword.operator {
 | 
			
		||||
    color: #2852eb;
 | 
			
		||||
    font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .php.embedded .variable, pre .php.embedded .storage.function {
 | 
			
		||||
     color: #0d43fa;
 | 
			
		||||
     font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .php.embedded .string, pre .js.embedded .tag.script {
 | 
			
		||||
     color: #c4001e;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .php.embedded .comment {
 | 
			
		||||
     color: #f4b441;
 | 
			
		||||
     font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .php.embedded .function.name {
 | 
			
		||||
     color: #000;
 | 
			
		||||
     font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4257
									
								
								css/foundation.css
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4257
									
								
								css/foundation.css
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										1
									
								
								css/foundation.min.css
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								css/foundation.min.css
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										88
									
								
								css/github.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								css/github.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,88 @@
 | 
			
		|||
/**
 | 
			
		||||
 * GitHub theme
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig Campbell
 | 
			
		||||
 * @version 1.0.4
 | 
			
		||||
 */
 | 
			
		||||
pre {
 | 
			
		||||
    border: 1px solid #ccc;
 | 
			
		||||
    word-wrap: break-word;
 | 
			
		||||
    padding: 6px 10px;
 | 
			
		||||
    line-height: 19px;
 | 
			
		||||
    margin-bottom: 20px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
code {
 | 
			
		||||
    border: 1px solid #eaeaea;
 | 
			
		||||
    margin: 0px 2px;
 | 
			
		||||
    padding: 0px 5px;
 | 
			
		||||
    font-size: 12px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre code {
 | 
			
		||||
    border: 0px;
 | 
			
		||||
    padding: 0px;
 | 
			
		||||
    margin: 0px;
 | 
			
		||||
    -moz-border-radius: 0px;
 | 
			
		||||
    -webkit-border-radius: 0px;
 | 
			
		||||
    border-radius: 0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre, code {
 | 
			
		||||
    font-family: Consolas, 'Liberation Mono', Courier, monospace;
 | 
			
		||||
    color: #333;
 | 
			
		||||
    background: #f8f8f8;
 | 
			
		||||
    -moz-border-radius: 3px;
 | 
			
		||||
    -webkit-border-radius: 3px;
 | 
			
		||||
    border-radius: 3px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre, pre code {
 | 
			
		||||
    font-size: 13px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .comment {
 | 
			
		||||
    color: #998;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .support {
 | 
			
		||||
    color: #0086B3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .tag, pre .tag-name {
 | 
			
		||||
    color: navy;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .keyword, pre .css-property, pre .vendor-prefix, pre .sass, pre .class, pre .id, pre .css-value, pre .entity.function, pre .storage.function {
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .css-property, pre .css-value, pre .vendor-prefix, pre .support.namespace {
 | 
			
		||||
    color: #333;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .constant.numeric, pre .keyword.unit, pre .hex-color {
 | 
			
		||||
    font-weight: normal;
 | 
			
		||||
    color: #099;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .entity.class {
 | 
			
		||||
    color: #458;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .entity.id, pre .entity.function {
 | 
			
		||||
    color: #900;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .attribute, pre .variable {
 | 
			
		||||
    color: teal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .string, pre .support.value  {
 | 
			
		||||
    font-weight: normal;
 | 
			
		||||
    color: #d14;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre .regexp {
 | 
			
		||||
    color: #009926;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										402
									
								
								css/normalize.css
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										402
									
								
								css/normalize.css
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,402 @@
 | 
			
		|||
/*! normalize.css v2.1.1 | MIT License | git.io/normalize */
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   HTML5 display definitions
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct `block` display not defined in IE 8/9.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
article,
 | 
			
		||||
aside,
 | 
			
		||||
details,
 | 
			
		||||
figcaption,
 | 
			
		||||
figure,
 | 
			
		||||
footer,
 | 
			
		||||
header,
 | 
			
		||||
hgroup,
 | 
			
		||||
main,
 | 
			
		||||
nav,
 | 
			
		||||
section,
 | 
			
		||||
summary {
 | 
			
		||||
    display: block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct `inline-block` display not defined in IE 8/9.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
audio,
 | 
			
		||||
canvas,
 | 
			
		||||
video {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Prevent modern browsers from displaying `audio` without controls.
 | 
			
		||||
 * Remove excess height in iOS 5 devices.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
audio:not([controls]) {
 | 
			
		||||
    display: none;
 | 
			
		||||
    height: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address styling not present in IE 8/9.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[hidden] {
 | 
			
		||||
    display: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Base
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Prevent system color scheme's background color being used in Firefox, IE,
 | 
			
		||||
 *    and Opera.
 | 
			
		||||
 * 2. Prevent system color scheme's text color being used in Firefox, IE, and
 | 
			
		||||
 *    Opera.
 | 
			
		||||
 * 3. Set default font family to sans-serif.
 | 
			
		||||
 * 4. Prevent iOS text size adjust after orientation change, without disabling
 | 
			
		||||
 *    user zoom.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
html {
 | 
			
		||||
    background: #fff; /* 1 */
 | 
			
		||||
    color: #000; /* 2 */
 | 
			
		||||
    font-family: sans-serif; /* 3 */
 | 
			
		||||
    -ms-text-size-adjust: 100%; /* 4 */
 | 
			
		||||
    -webkit-text-size-adjust: 100%; /* 4 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove default margin.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    margin: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Links
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address `outline` inconsistency between Chrome and other browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
a:focus {
 | 
			
		||||
    outline: thin dotted;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Improve readability when focused and also mouse hovered in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
a:active,
 | 
			
		||||
a:hover {
 | 
			
		||||
    outline: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Typography
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address variable `h1` font-size and margin within `section` and `article`
 | 
			
		||||
 * contexts in Firefox 4+, Safari 5, and Chrome.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
    font-size: 2em;
 | 
			
		||||
    margin: 0.67em 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address styling not present in IE 8/9, Safari 5, and Chrome.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
abbr[title] {
 | 
			
		||||
    border-bottom: 1px dotted;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
b,
 | 
			
		||||
strong {
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address styling not present in Safari 5 and Chrome.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
dfn {
 | 
			
		||||
    font-style: italic;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address differences between Firefox and other browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
hr {
 | 
			
		||||
    -moz-box-sizing: content-box;
 | 
			
		||||
    box-sizing: content-box;
 | 
			
		||||
    height: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address styling not present in IE 8/9.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
mark {
 | 
			
		||||
    background: #ff0;
 | 
			
		||||
    color: #000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct font family set oddly in Safari 5 and Chrome.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
code,
 | 
			
		||||
kbd,
 | 
			
		||||
pre,
 | 
			
		||||
samp {
 | 
			
		||||
    font-family: monospace, serif;
 | 
			
		||||
    font-size: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Improve readability of pre-formatted text in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    white-space: pre-wrap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Set consistent quote types.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
q {
 | 
			
		||||
    quotes: "\201C" "\201D" "\2018" "\2019";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address inconsistent and variable font size in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
small {
 | 
			
		||||
    font-size: 80%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
sub,
 | 
			
		||||
sup {
 | 
			
		||||
    font-size: 75%;
 | 
			
		||||
    line-height: 0;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    vertical-align: baseline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sup {
 | 
			
		||||
    top: -0.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub {
 | 
			
		||||
    bottom: -0.25em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Embedded content
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove border when inside `a` element in IE 8/9.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
img {
 | 
			
		||||
    border: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct overflow displayed oddly in IE 9.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
svg:not(:root) {
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Figures
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address margin not present in IE 8/9 and Safari 5.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
figure {
 | 
			
		||||
    margin: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Forms
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Define consistent border, margin, and padding.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
fieldset {
 | 
			
		||||
    border: 1px solid #c0c0c0;
 | 
			
		||||
    margin: 0 2px;
 | 
			
		||||
    padding: 0.35em 0.625em 0.75em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct `color` not being inherited in IE 8/9.
 | 
			
		||||
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
legend {
 | 
			
		||||
    border: 0; /* 1 */
 | 
			
		||||
    padding: 0; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct font family not being inherited in all browsers.
 | 
			
		||||
 * 2. Correct font size not being inherited in all browsers.
 | 
			
		||||
 * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
input,
 | 
			
		||||
select,
 | 
			
		||||
textarea {
 | 
			
		||||
    font-family: inherit; /* 1 */
 | 
			
		||||
    font-size: 100%; /* 2 */
 | 
			
		||||
    margin: 0; /* 3 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 | 
			
		||||
 * the UA stylesheet.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
input {
 | 
			
		||||
    line-height: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 | 
			
		||||
 * All other form control elements do not inherit `text-transform` values.
 | 
			
		||||
 * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
 | 
			
		||||
 * Correct `select` style inheritance in Firefox 4+ and Opera.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
select {
 | 
			
		||||
    text-transform: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 | 
			
		||||
 *    and `video` controls.
 | 
			
		||||
 * 2. Correct inability to style clickable `input` types in iOS.
 | 
			
		||||
 * 3. Improve usability and consistency of cursor style between image-type
 | 
			
		||||
 *    `input` and others.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
html input[type="button"], /* 1 */
 | 
			
		||||
input[type="reset"],
 | 
			
		||||
input[type="submit"] {
 | 
			
		||||
    -webkit-appearance: button; /* 2 */
 | 
			
		||||
    cursor: pointer; /* 3 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Re-set default cursor for disabled elements.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button[disabled],
 | 
			
		||||
html input[disabled] {
 | 
			
		||||
    cursor: default;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Address box sizing set to `content-box` in IE 8/9.
 | 
			
		||||
 * 2. Remove excess padding in IE 8/9.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
input[type="checkbox"],
 | 
			
		||||
input[type="radio"] {
 | 
			
		||||
    box-sizing: border-box; /* 1 */
 | 
			
		||||
    padding: 0; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
 | 
			
		||||
 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
 | 
			
		||||
 *    (include `-moz` to future-proof).
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
input[type="search"] {
 | 
			
		||||
    -webkit-appearance: textfield; /* 1 */
 | 
			
		||||
    -moz-box-sizing: content-box;
 | 
			
		||||
    -webkit-box-sizing: content-box; /* 2 */
 | 
			
		||||
    box-sizing: content-box;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove inner padding and search cancel button in Safari 5 and Chrome
 | 
			
		||||
 * on OS X.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
input[type="search"]::-webkit-search-cancel-button,
 | 
			
		||||
input[type="search"]::-webkit-search-decoration {
 | 
			
		||||
    -webkit-appearance: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove inner padding and border in Firefox 4+.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button::-moz-focus-inner,
 | 
			
		||||
input::-moz-focus-inner {
 | 
			
		||||
    border: 0;
 | 
			
		||||
    padding: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Remove default vertical scrollbar in IE 8/9.
 | 
			
		||||
 * 2. Improve readability and alignment in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
textarea {
 | 
			
		||||
    overflow: auto; /* 1 */
 | 
			
		||||
    vertical-align: top; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Tables
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove most spacing between table cells.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
table {
 | 
			
		||||
    border-collapse: collapse;
 | 
			
		||||
    border-spacing: 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										109
									
								
								css/okaidia.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								css/okaidia.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,109 @@
 | 
			
		|||
/**
 | 
			
		||||
 * okaidia theme for JavaScript, CSS and HTML
 | 
			
		||||
 * Loosely based on Monokai textmate theme by http://www.monokai.nl/
 | 
			
		||||
 * @author ocodia
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
code[class*="language-"],
 | 
			
		||||
pre[class*="language-"] {
 | 
			
		||||
	color: #f8f8f2;
 | 
			
		||||
  font-size: 0.9em;
 | 
			
		||||
	text-shadow: 0px 1px rgba(0,0,0,0.3);
 | 
			
		||||
	font-family: "droid-sans-mono", Consolas, Monaco, 'Andale Mono', monospace;
 | 
			
		||||
	direction: ltr;
 | 
			
		||||
	text-align: left;
 | 
			
		||||
	white-space: pre;
 | 
			
		||||
	word-spacing: normal;
 | 
			
		||||
 | 
			
		||||
	-moz-tab-size: 4;
 | 
			
		||||
	-o-tab-size: 4;
 | 
			
		||||
	tab-size: 4;
 | 
			
		||||
 | 
			
		||||
	-webkit-hyphens: none;
 | 
			
		||||
	-moz-hyphens: none;
 | 
			
		||||
	-ms-hyphens: none;
 | 
			
		||||
	hyphens: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Code blocks */
 | 
			
		||||
pre[class*="language-"] {
 | 
			
		||||
	padding: 1em;
 | 
			
		||||
	margin: .5em 0;
 | 
			
		||||
	overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
:not(pre) > code[class*="language-"],
 | 
			
		||||
pre[class*="language-"] {
 | 
			
		||||
	background: #272822;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Inline code */
 | 
			
		||||
:not(pre) > code[class*="language-"] {
 | 
			
		||||
	padding: .1em;
 | 
			
		||||
	border-radius: .3em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.comment,
 | 
			
		||||
.token.prolog,
 | 
			
		||||
.token.doctype,
 | 
			
		||||
.token.cdata {
 | 
			
		||||
	color: slategray;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.punctuation {
 | 
			
		||||
	color: #f8f8f2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.namespace {
 | 
			
		||||
	opacity: .7;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.property,
 | 
			
		||||
.token.tag {
 | 
			
		||||
	color: #f92672;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.boolean,
 | 
			
		||||
.token.number{
 | 
			
		||||
	color: #ae81ff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.symbol,
 | 
			
		||||
.token.selector,
 | 
			
		||||
.token.attr-name,
 | 
			
		||||
.token.string {
 | 
			
		||||
	color: #a6e22e;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.token.operator,
 | 
			
		||||
.token.entity,
 | 
			
		||||
.token.url,
 | 
			
		||||
.language-css .token.string,
 | 
			
		||||
.style .token.string {
 | 
			
		||||
	color: #f8f8f2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.atrule,
 | 
			
		||||
.token.attr-value
 | 
			
		||||
{
 | 
			
		||||
	color: #e6db74;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.token.keyword{
 | 
			
		||||
color: #f92672;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.regex,
 | 
			
		||||
.token.important {
 | 
			
		||||
	color: #fd971f;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.important {
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.entity {
 | 
			
		||||
	cursor: help;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										117
									
								
								css/prism.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								css/prism.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,117 @@
 | 
			
		|||
/**
 | 
			
		||||
 * prism.js default theme for JavaScript, CSS and HTML
 | 
			
		||||
 * Based on dabblet (http://dabblet.com)
 | 
			
		||||
 * @author Lea Verou
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
code[class*="language-"],
 | 
			
		||||
pre[class*="language-"] {
 | 
			
		||||
	color: black;
 | 
			
		||||
	text-shadow: 0 1px white;
 | 
			
		||||
	font-family: Consolas, Monaco, 'Andale Mono', monospace;
 | 
			
		||||
	direction: ltr;
 | 
			
		||||
	text-align: left;
 | 
			
		||||
	white-space: pre;
 | 
			
		||||
	word-spacing: normal;
 | 
			
		||||
 | 
			
		||||
	-moz-tab-size: 4;
 | 
			
		||||
	-o-tab-size: 4;
 | 
			
		||||
	tab-size: 4;
 | 
			
		||||
 | 
			
		||||
	-webkit-hyphens: none;
 | 
			
		||||
	-moz-hyphens: none;
 | 
			
		||||
	-ms-hyphens: none;
 | 
			
		||||
	hyphens: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::-moz-selection {
 | 
			
		||||
	text-shadow: none;
 | 
			
		||||
	background: #b3d4fc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::selection {
 | 
			
		||||
	text-shadow: none;
 | 
			
		||||
	background: #b3d4fc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media print {
 | 
			
		||||
	code[class*="language-"],
 | 
			
		||||
	pre[class*="language-"] {
 | 
			
		||||
		text-shadow: none;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Code blocks */
 | 
			
		||||
pre[class*="language-"] {
 | 
			
		||||
	padding: 1em;
 | 
			
		||||
	margin: .5em 0;
 | 
			
		||||
	overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
:not(pre) > code[class*="language-"],
 | 
			
		||||
pre[class*="language-"] {
 | 
			
		||||
	background: #f5f2f0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Inline code */
 | 
			
		||||
:not(pre) > code[class*="language-"] {
 | 
			
		||||
	padding: .1em;
 | 
			
		||||
	border-radius: .3em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.comment,
 | 
			
		||||
.token.prolog,
 | 
			
		||||
.token.doctype,
 | 
			
		||||
.token.cdata {
 | 
			
		||||
	color: slategray;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.punctuation {
 | 
			
		||||
	color: #999;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.namespace {
 | 
			
		||||
	opacity: .7;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.property,
 | 
			
		||||
.token.tag,
 | 
			
		||||
.token.boolean,
 | 
			
		||||
.token.number {
 | 
			
		||||
	color: #905;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.selector,
 | 
			
		||||
.token.attr-name,
 | 
			
		||||
.token.string {
 | 
			
		||||
	color: #690;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.operator,
 | 
			
		||||
.token.entity,
 | 
			
		||||
.token.url,
 | 
			
		||||
.language-css .token.string,
 | 
			
		||||
.style .token.string {
 | 
			
		||||
	color: #a67f59;
 | 
			
		||||
	background: hsla(0,0%,100%,.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.atrule,
 | 
			
		||||
.token.attr-value,
 | 
			
		||||
.token.keyword {
 | 
			
		||||
	color: #07a;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.token.regex,
 | 
			
		||||
.token.important {
 | 
			
		||||
	color: #e90;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.important {
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token.entity {
 | 
			
		||||
	cursor: help;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										148
									
								
								css/social_foundicons.css
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										148
									
								
								css/social_foundicons.css
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,148 @@
 | 
			
		|||
/* font-face */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: "SocialFoundicons";
 | 
			
		||||
  src: url("../fonts/social_foundicons.eot");
 | 
			
		||||
  src: url("../fonts/social_foundicons.eot?#iefix") format("embedded-opentype"), url("../fonts/social_foundicons.woff") format("woff"), url("../fonts/social_foundicons.ttf") format("truetype"), url("../fonts/social_foundicons.svg#SocialFoundicons") format("svg");
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* global foundicon styles */
 | 
			
		||||
[class*="foundicon-"] {
 | 
			
		||||
  display: inline;
 | 
			
		||||
  width: auto;
 | 
			
		||||
  height: auto;
 | 
			
		||||
  line-height: inherit;
 | 
			
		||||
  vertical-align: baseline;
 | 
			
		||||
  background-image: none;
 | 
			
		||||
  background-position: 0 0;
 | 
			
		||||
  background-repeat: repeat;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[class*="foundicon-"]:before {
 | 
			
		||||
  font-family: "SocialFoundicons";
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  text-decoration: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* icons */
 | 
			
		||||
.foundicon-thumb-up:before {
 | 
			
		||||
  content: "\f000";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-thumb-down:before {
 | 
			
		||||
  content: "\f001";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-rss:before {
 | 
			
		||||
  content: "\f002";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-facebook:before {
 | 
			
		||||
  content: "\f003";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-twitter:before {
 | 
			
		||||
  content: "\f004";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-pinterest:before {
 | 
			
		||||
  content: "\f005";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-github:before {
 | 
			
		||||
  content: "\f006";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-path:before {
 | 
			
		||||
  content: "\f007";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-linkedin:before {
 | 
			
		||||
  content: "\f008";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-dribbble:before {
 | 
			
		||||
  content: "\f009";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-stumble-upon:before {
 | 
			
		||||
  content: "\f00a";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-behance:before {
 | 
			
		||||
  content: "\f00b";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-reddit:before {
 | 
			
		||||
  content: "\f00c";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-google-plus:before {
 | 
			
		||||
  content: "\f00d";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-youtube:before {
 | 
			
		||||
  content: "\f00e";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-vimeo:before {
 | 
			
		||||
  content: "\f00f";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-flickr:before {
 | 
			
		||||
  content: "\f010";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-slideshare:before {
 | 
			
		||||
  content: "\f011";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-picassa:before {
 | 
			
		||||
  content: "\f012";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-skype:before {
 | 
			
		||||
  content: "\f013";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-steam:before {
 | 
			
		||||
  content: "\f014";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-instagram:before {
 | 
			
		||||
  content: "\f015";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-foursquare:before {
 | 
			
		||||
  content: "\f016";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-delicious:before {
 | 
			
		||||
  content: "\f017";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-chat:before {
 | 
			
		||||
  content: "\f018";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-torso:before {
 | 
			
		||||
  content: "\f019";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-tumblr:before {
 | 
			
		||||
  content: "\f01a";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-video-chat:before {
 | 
			
		||||
  content: "\f01b";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-digg:before {
 | 
			
		||||
  content: "\f01c";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-wordpress:before {
 | 
			
		||||
  content: "\f01d";
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										126
									
								
								css/social_foundicons_ie7.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								css/social_foundicons_ie7.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,126 @@
 | 
			
		|||
/* general icons for IE7 */
 | 
			
		||||
[class*="foundicon-"] {
 | 
			
		||||
  font-family: "SocialFoundicons";
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-thumb-up {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-thumb-down {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-rss {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-facebook {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-twitter {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-pinterest {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-github {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-path {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-linkedin {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-dribbble {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-stumble-upon {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-behance {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-reddit {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-google-plus {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-youtube {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-vimeo {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-flickr {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-slideshare {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-picassa {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-skype {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-steam {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-instagram {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-foursquare {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-delicious {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-chat {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-torso {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-tumblr {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-video-chat {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-digg {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.foundicon-wordpress {
 | 
			
		||||
  *zoom: expression(this.runtimeStyle['zoom'] = "1", this.innerHTML = "");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,60 +0,0 @@
 | 
			
		|||
.highlight  { background: #ffffff; }
 | 
			
		||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
 | 
			
		||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
 | 
			
		||||
.highlight .k { font-weight: bold } /* Keyword */
 | 
			
		||||
.highlight .o { font-weight: bold } /* Operator */
 | 
			
		||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
 | 
			
		||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
 | 
			
		||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
 | 
			
		||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
 | 
			
		||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
 | 
			
		||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
 | 
			
		||||
.highlight .ge { font-style: italic } /* Generic.Emph */
 | 
			
		||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
 | 
			
		||||
.highlight .gh { color: #999999 } /* Generic.Heading */
 | 
			
		||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
 | 
			
		||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
 | 
			
		||||
.highlight .go { color: #888888 } /* Generic.Output */
 | 
			
		||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
 | 
			
		||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
 | 
			
		||||
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
 | 
			
		||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
 | 
			
		||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
 | 
			
		||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
 | 
			
		||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
 | 
			
		||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
 | 
			
		||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
 | 
			
		||||
.highlight .m { color: #009999 } /* Literal.Number */
 | 
			
		||||
.highlight .s { color: #d14 } /* Literal.String */
 | 
			
		||||
.highlight .na { color: #008080 } /* Name.Attribute */
 | 
			
		||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
 | 
			
		||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
 | 
			
		||||
.highlight .no { color: #008080 } /* Name.Constant */
 | 
			
		||||
.highlight .ni { color: #800080 } /* Name.Entity */
 | 
			
		||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
 | 
			
		||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
 | 
			
		||||
.highlight .nn { color: #555555 } /* Name.Namespace */
 | 
			
		||||
.highlight .nt { color: #000080 } /* Name.Tag */
 | 
			
		||||
.highlight .nv { color: #008080 } /* Name.Variable */
 | 
			
		||||
.highlight .ow { font-weight: bold } /* Operator.Word */
 | 
			
		||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
 | 
			
		||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
 | 
			
		||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
 | 
			
		||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
 | 
			
		||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
 | 
			
		||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
 | 
			
		||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
 | 
			
		||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
 | 
			
		||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
 | 
			
		||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
 | 
			
		||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
 | 
			
		||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
 | 
			
		||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
 | 
			
		||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
 | 
			
		||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
 | 
			
		||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
 | 
			
		||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
 | 
			
		||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
 | 
			
		||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
 | 
			
		||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
 | 
			
		||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								fonts/.DS_Store
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fonts/.DS_Store
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fonts/social_foundicons.eot
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fonts/social_foundicons.eot
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										15
									
								
								fonts/social_foundicons.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								fonts/social_foundicons.svg
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
 | 
			
		||||
<defs >
 | 
			
		||||
<font id="socialfoundicons" horiz-adv-x="933" ><font-face
 | 
			
		||||
    font-family="Social Foundicons"
 | 
			
		||||
    units-per-em="1000"
 | 
			
		||||
    panose-1="0 0 0 0 0 0 0 0 0 0"
 | 
			
		||||
    ascent="1000"
 | 
			
		||||
    descent="0"
 | 
			
		||||
    alphabetic="0" />
 | 
			
		||||
<missing-glyph horiz-adv-x="250" />
 | 
			
		||||
<glyph unicode=" " glyph-name="space" horiz-adv-x="250" />
 | 
			
		||||
<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="1000" />
 | 
			
		||||
</font>
 | 
			
		||||
</defs>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 614 B  | 
							
								
								
									
										
											BIN
										
									
								
								fonts/social_foundicons.ttf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fonts/social_foundicons.ttf
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fonts/social_foundicons.woff
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fonts/social_foundicons.woff
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -5,15 +5,15 @@ title: A remote server automation and deployment tool written in Ruby.
 | 
			
		|||
 | 
			
		||||
### A Simple Task
 | 
			
		||||
 | 
			
		||||
{% highlight ruby %}
 | 
			
		||||
role :demo, %{example.com example.org, example.net}
 | 
			
		||||
{% prism ruby %}
 | 
			
		||||
role :demo, %w{example.com example.org, example.net}
 | 
			
		||||
task :uptime do |host|
 | 
			
		||||
  on :demo, in: :parallel do
 | 
			
		||||
    uptime = capture(:uptime)
 | 
			
		||||
    puts "#{host.hostname} reports: #{uptime}"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
{% endhighlight %}
 | 
			
		||||
{% endprism %}
 | 
			
		||||
 | 
			
		||||
Capistrano extends the *Rake* DSL with methods specific to running commands
 | 
			
		||||
`on()` servers.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										15
									
								
								js/foundation.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								js/foundation.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										52
									
								
								js/foundation/foundation.alerts.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								js/foundation/foundation.alerts.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,52 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.alerts = {
 | 
			
		||||
    name : 'alerts',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      speed: 300, // fade out speed
 | 
			
		||||
      callback: function (){}
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      this.scope = scope || this.scope;
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        if (!this.settings.init) { this.events(); }
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope).on('click.fndtn.alerts', '[data-alert] a.close', function (e) {
 | 
			
		||||
        e.preventDefault();
 | 
			
		||||
        $(this).closest("[data-alert]").fadeOut(self.speed, function () {
 | 
			
		||||
          $(this).remove();
 | 
			
		||||
          self.settings.callback();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      this.settings.init = true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.alerts');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										516
									
								
								js/foundation/foundation.clearing.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										516
									
								
								js/foundation/foundation.clearing.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,516 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.clearing = {
 | 
			
		||||
    name : 'clearing',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      templates : {
 | 
			
		||||
        viewing : '<a href="#" class="clearing-close">×</a>' +
 | 
			
		||||
          '<div class="visible-img" style="display: none"><img src="//:0">' +
 | 
			
		||||
          '<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
 | 
			
		||||
          '<a href="#" class="clearing-main-next"><span></span></a></div>'
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      // comma delimited list of selectors that, on click, will close clearing,
 | 
			
		||||
      // add 'div.clearing-blackout, div.visible-img' to close on background click
 | 
			
		||||
      close_selectors : '.clearing-close',
 | 
			
		||||
 | 
			
		||||
      // event initializers and locks
 | 
			
		||||
      init : false,
 | 
			
		||||
      locked : false
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      Foundation.inherit(this, 'set_data get_data remove_data throttle data_options');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        options = $.extend(true, this.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        $(this.scope).find('ul[data-clearing]').each(function () {
 | 
			
		||||
          var $el = $(this),
 | 
			
		||||
              options = options || {},
 | 
			
		||||
              lis = $el.find('li'),
 | 
			
		||||
              settings = self.get_data($el);
 | 
			
		||||
 | 
			
		||||
          if (!settings && lis.length > 0) {
 | 
			
		||||
            options.$parent = $el.parent();
 | 
			
		||||
 | 
			
		||||
            self.set_data($el, $.extend({}, self.settings, options, self.data_options($el)));
 | 
			
		||||
 | 
			
		||||
            self.assemble($el.find('li'));
 | 
			
		||||
 | 
			
		||||
            if (!self.settings.init) {
 | 
			
		||||
              self.events().swipe_events();
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        // fire method
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // event binding and initial setup
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .on('click.fndtn.clearing', 'ul[data-clearing] li',
 | 
			
		||||
          function (e, current, target) {
 | 
			
		||||
            var current = current || $(this),
 | 
			
		||||
                target = target || current,
 | 
			
		||||
                next = current.next('li'),
 | 
			
		||||
                settings = self.get_data(current.parent()),
 | 
			
		||||
                image = $(e.target);
 | 
			
		||||
 | 
			
		||||
            e.preventDefault();
 | 
			
		||||
            if (!settings) self.init();
 | 
			
		||||
 | 
			
		||||
            // if clearing is open and the current image is
 | 
			
		||||
            // clicked, go to the next image in sequence
 | 
			
		||||
            if (target.hasClass('visible') && 
 | 
			
		||||
              current[0] === target[0] && 
 | 
			
		||||
              next.length > 0 && self.is_open(current)) {
 | 
			
		||||
              target = next;
 | 
			
		||||
              image = target.find('img');
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // set current and target to the clicked li if not otherwise defined.
 | 
			
		||||
            self.open(image, current, target);
 | 
			
		||||
            self.update_paddles(target);
 | 
			
		||||
          })
 | 
			
		||||
 | 
			
		||||
        .on('click.fndtn.clearing', '.clearing-main-next',
 | 
			
		||||
          function (e) { this.nav(e, 'next') }.bind(this))
 | 
			
		||||
        .on('click.fndtn.clearing', '.clearing-main-prev',
 | 
			
		||||
          function (e) { this.nav(e, 'prev') }.bind(this))
 | 
			
		||||
        .on('click.fndtn.clearing', this.settings.close_selectors,
 | 
			
		||||
          function (e) { Foundation.libs.clearing.close(e, this) })
 | 
			
		||||
        .on('keydown.fndtn.clearing',
 | 
			
		||||
          function (e) { this.keydown(e) }.bind(this));
 | 
			
		||||
 | 
			
		||||
      $(window).on('resize.fndtn.clearing',
 | 
			
		||||
        function () { this.resize() }.bind(this));
 | 
			
		||||
 | 
			
		||||
      this.settings.init = true;
 | 
			
		||||
      return this;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    swipe_events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .on('touchstart.fndtn.clearing', '.visible-img', function(e) {
 | 
			
		||||
          if (!e.touches) { e = e.originalEvent; }
 | 
			
		||||
          var data = {
 | 
			
		||||
                start_page_x: e.touches[0].pageX,
 | 
			
		||||
                start_page_y: e.touches[0].pageY,
 | 
			
		||||
                start_time: (new Date()).getTime(),
 | 
			
		||||
                delta_x: 0,
 | 
			
		||||
                is_scrolling: undefined
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
          $(this).data('swipe-transition', data);
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
        })
 | 
			
		||||
        .on('touchmove.fndtn.clearing', '.visible-img', function(e) {
 | 
			
		||||
          if (!e.touches) { e = e.originalEvent; }
 | 
			
		||||
          // Ignore pinch/zoom events
 | 
			
		||||
          if(e.touches.length > 1 || e.scale && e.scale !== 1) return;
 | 
			
		||||
 | 
			
		||||
          var data = $(this).data('swipe-transition');
 | 
			
		||||
 | 
			
		||||
          if (typeof data === 'undefined') {
 | 
			
		||||
            data = {};
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          data.delta_x = e.touches[0].pageX - data.start_page_x;
 | 
			
		||||
 | 
			
		||||
          if ( typeof data.is_scrolling === 'undefined') {
 | 
			
		||||
            data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (!data.is_scrolling && !data.active) {
 | 
			
		||||
            e.preventDefault();
 | 
			
		||||
            var direction = (data.delta_x < 0) ? 'next' : 'prev';
 | 
			
		||||
            data.active = true;
 | 
			
		||||
            self.nav(e, direction);
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('touchend.fndtn.clearing', '.visible-img', function(e) {
 | 
			
		||||
          $(this).data('swipe-transition', {});
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
        });
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    assemble : function ($li) {
 | 
			
		||||
      var $el = $li.parent();
 | 
			
		||||
      $el.after('<div id="foundationClearingHolder"></div>');
 | 
			
		||||
 | 
			
		||||
      var holder = $('#foundationClearingHolder'),
 | 
			
		||||
          settings = this.get_data($el),
 | 
			
		||||
          grid = $el.detach(),
 | 
			
		||||
          data = {
 | 
			
		||||
            grid: '<div class="carousel">' + this.outerHTML(grid[0]) + '</div>',
 | 
			
		||||
            viewing: settings.templates.viewing
 | 
			
		||||
          },
 | 
			
		||||
          wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
 | 
			
		||||
            data.grid + '</div></div>';
 | 
			
		||||
 | 
			
		||||
      return holder.after(wrapper).remove();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // event callbacks
 | 
			
		||||
 | 
			
		||||
    open : function ($image, current, target) {
 | 
			
		||||
      var root = target.closest('.clearing-assembled'),
 | 
			
		||||
          container = root.find('div').first(),
 | 
			
		||||
          visible_image = container.find('.visible-img'),
 | 
			
		||||
          image = visible_image.find('img').not($image);
 | 
			
		||||
 | 
			
		||||
      if (!this.locked()) {
 | 
			
		||||
        // set the image to the selected thumbnail
 | 
			
		||||
        image
 | 
			
		||||
          .attr('src', this.load($image))
 | 
			
		||||
          .css('visibility', 'hidden');
 | 
			
		||||
 | 
			
		||||
        this.loaded(image, function () {
 | 
			
		||||
          image.css('visibility', 'visible');
 | 
			
		||||
          // toggle the gallery
 | 
			
		||||
          root.addClass('clearing-blackout');
 | 
			
		||||
          container.addClass('clearing-container');
 | 
			
		||||
          visible_image.show();
 | 
			
		||||
          this.fix_height(target)
 | 
			
		||||
            .caption(visible_image.find('.clearing-caption'), $image)
 | 
			
		||||
            .center(image)
 | 
			
		||||
            .shift(current, target, function () {
 | 
			
		||||
              target.siblings().removeClass('visible');
 | 
			
		||||
              target.addClass('visible');
 | 
			
		||||
            });
 | 
			
		||||
        }.bind(this));
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    close : function (e, el) {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
 | 
			
		||||
      var root = (function (target) {
 | 
			
		||||
            if (/blackout/.test(target.selector)) {
 | 
			
		||||
              return target;
 | 
			
		||||
            } else {
 | 
			
		||||
              return target.closest('.clearing-blackout');
 | 
			
		||||
            }
 | 
			
		||||
          }($(el))), container, visible_image;
 | 
			
		||||
 | 
			
		||||
      if (el === e.target && root) {
 | 
			
		||||
        container = root.find('div').first();
 | 
			
		||||
        visible_image = container.find('.visible-img');
 | 
			
		||||
        this.settings.prev_index = 0;
 | 
			
		||||
        root.find('ul[data-clearing]')
 | 
			
		||||
          .attr('style', '').closest('.clearing-blackout')
 | 
			
		||||
          .removeClass('clearing-blackout');
 | 
			
		||||
        container.removeClass('clearing-container');
 | 
			
		||||
        visible_image.hide();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    is_open : function (current) {
 | 
			
		||||
      return current.parent().attr('style').length > 0;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    keydown : function (e) {
 | 
			
		||||
      var clearing = $('.clearing-blackout').find('ul[data-clearing]');
 | 
			
		||||
 | 
			
		||||
      if (e.which === 39) this.go(clearing, 'next');
 | 
			
		||||
      if (e.which === 37) this.go(clearing, 'prev');
 | 
			
		||||
      if (e.which === 27) $('a.clearing-close').trigger('click');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    nav : function (e, direction) {
 | 
			
		||||
      var clearing = $('.clearing-blackout').find('ul[data-clearing]');
 | 
			
		||||
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      this.go(clearing, direction);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    resize : function () {
 | 
			
		||||
      var image = $('.clearing-blackout .visible-img').find('img');
 | 
			
		||||
 | 
			
		||||
      if (image.length) {
 | 
			
		||||
        this.center(image);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // visual adjustments
 | 
			
		||||
    fix_height : function (target) {
 | 
			
		||||
      var lis = target.parent().children(),
 | 
			
		||||
          self = this;
 | 
			
		||||
 | 
			
		||||
      lis.each(function () {
 | 
			
		||||
          var li = $(this),
 | 
			
		||||
              image = li.find('img');
 | 
			
		||||
 | 
			
		||||
          if (li.height() > self.outerHeight(image)) {
 | 
			
		||||
            li.addClass('fix-height');
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .closest('ul')
 | 
			
		||||
        .width(lis.length * 100 + '%');
 | 
			
		||||
 | 
			
		||||
      return this;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    update_paddles : function (target) {
 | 
			
		||||
      var visible_image = target
 | 
			
		||||
        .closest('.carousel')
 | 
			
		||||
        .siblings('.visible-img');
 | 
			
		||||
 | 
			
		||||
      if (target.next().length > 0) {
 | 
			
		||||
        visible_image
 | 
			
		||||
          .find('.clearing-main-next')
 | 
			
		||||
          .removeClass('disabled');
 | 
			
		||||
      } else {
 | 
			
		||||
        visible_image
 | 
			
		||||
          .find('.clearing-main-next')
 | 
			
		||||
          .addClass('disabled');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (target.prev().length > 0) {
 | 
			
		||||
        visible_image
 | 
			
		||||
          .find('.clearing-main-prev')
 | 
			
		||||
          .removeClass('disabled');
 | 
			
		||||
      } else {
 | 
			
		||||
        visible_image
 | 
			
		||||
          .find('.clearing-main-prev')
 | 
			
		||||
          .addClass('disabled');
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    center : function (target) {
 | 
			
		||||
      if (!this.rtl) {
 | 
			
		||||
        target.css({
 | 
			
		||||
          marginLeft : -(this.outerWidth(target) / 2),
 | 
			
		||||
          marginTop : -(this.outerHeight(target) / 2)
 | 
			
		||||
        });
 | 
			
		||||
      } else {
 | 
			
		||||
        target.css({
 | 
			
		||||
          marginRight : -(this.outerWidth(target) / 2),
 | 
			
		||||
          marginTop : -(this.outerHeight(target) / 2)
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      return this;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // image loading and preloading
 | 
			
		||||
 | 
			
		||||
    load : function ($image) {
 | 
			
		||||
      if ($image[0].nodeName === "A") {
 | 
			
		||||
        var href = $image.attr('href');
 | 
			
		||||
      } else {
 | 
			
		||||
        var href = $image.parent().attr('href');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.preload($image);
 | 
			
		||||
 | 
			
		||||
      if (href) return href;
 | 
			
		||||
      return $image.attr('src');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    preload : function ($image) {
 | 
			
		||||
      this
 | 
			
		||||
        .img($image.closest('li').next())
 | 
			
		||||
        .img($image.closest('li').prev());
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    loaded : function (image, callback) {
 | 
			
		||||
      // based on jquery.imageready.js
 | 
			
		||||
      // @weblinc, @jsantell, (c) 2012
 | 
			
		||||
 | 
			
		||||
      function loaded () {
 | 
			
		||||
        callback();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      function bindLoad () {
 | 
			
		||||
        this.one('load', loaded);
 | 
			
		||||
 | 
			
		||||
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
 | 
			
		||||
          var src = this.attr( 'src' ),
 | 
			
		||||
              param = src.match( /\?/ ) ? '&' : '?';
 | 
			
		||||
 | 
			
		||||
          param += 'random=' + (new Date()).getTime();
 | 
			
		||||
          this.attr('src', src + param);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!image.attr('src')) {
 | 
			
		||||
        loaded();
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (image[0].complete || image[0].readyState === 4) {
 | 
			
		||||
        loaded();
 | 
			
		||||
      } else {
 | 
			
		||||
        bindLoad.call(image);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    img : function (img) {
 | 
			
		||||
      if (img.length) {
 | 
			
		||||
        var new_img = new Image(),
 | 
			
		||||
            new_a = img.find('a');
 | 
			
		||||
 | 
			
		||||
        if (new_a.length) {
 | 
			
		||||
          new_img.src = new_a.attr('href');
 | 
			
		||||
        } else {
 | 
			
		||||
          new_img.src = img.find('img').attr('src');
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return this;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // image caption
 | 
			
		||||
 | 
			
		||||
    caption : function (container, $image) {
 | 
			
		||||
      var caption = $image.data('caption');
 | 
			
		||||
 | 
			
		||||
      if (caption) {
 | 
			
		||||
        container
 | 
			
		||||
          .html(caption)
 | 
			
		||||
          .show();
 | 
			
		||||
      } else {
 | 
			
		||||
        container
 | 
			
		||||
          .text('')
 | 
			
		||||
          .hide();
 | 
			
		||||
      }
 | 
			
		||||
      return this;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // directional methods
 | 
			
		||||
 | 
			
		||||
    go : function ($ul, direction) {
 | 
			
		||||
      var current = $ul.find('.visible'),
 | 
			
		||||
          target = current[direction]();
 | 
			
		||||
 | 
			
		||||
      if (target.length) {
 | 
			
		||||
        target
 | 
			
		||||
          .find('img')
 | 
			
		||||
          .trigger('click', [current, target]);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    shift : function (current, target, callback) {
 | 
			
		||||
      var clearing = target.parent(),
 | 
			
		||||
          old_index = this.settings.prev_index || target.index(),
 | 
			
		||||
          direction = this.direction(clearing, current, target),
 | 
			
		||||
          left = parseInt(clearing.css('left'), 10),
 | 
			
		||||
          width = this.outerWidth(target),
 | 
			
		||||
          skip_shift;
 | 
			
		||||
 | 
			
		||||
      // we use jQuery animate instead of CSS transitions because we
 | 
			
		||||
      // need a callback to unlock the next animation
 | 
			
		||||
      if (target.index() !== old_index && !/skip/.test(direction)){
 | 
			
		||||
        if (/left/.test(direction)) {
 | 
			
		||||
          this.lock();
 | 
			
		||||
          clearing.animate({left : left + width}, 300, this.unlock());
 | 
			
		||||
        } else if (/right/.test(direction)) {
 | 
			
		||||
          this.lock();
 | 
			
		||||
          clearing.animate({left : left - width}, 300, this.unlock());
 | 
			
		||||
        }
 | 
			
		||||
      } else if (/skip/.test(direction)) {
 | 
			
		||||
        // the target image is not adjacent to the current image, so
 | 
			
		||||
        // do we scroll right or not
 | 
			
		||||
        skip_shift = target.index() - this.settings.up_count;
 | 
			
		||||
        this.lock();
 | 
			
		||||
 | 
			
		||||
        if (skip_shift > 0) {
 | 
			
		||||
          clearing.animate({left : -(skip_shift * width)}, 300, this.unlock());
 | 
			
		||||
        } else {
 | 
			
		||||
          clearing.animate({left : 0}, 300, this.unlock());
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      callback();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    direction : function ($el, current, target) {
 | 
			
		||||
      var lis = $el.find('li'),
 | 
			
		||||
          li_width = this.outerWidth(lis) + (this.outerWidth(lis) / 4),
 | 
			
		||||
          up_count = Math.floor(this.outerWidth($('.clearing-container')) / li_width) - 1,
 | 
			
		||||
          target_index = lis.index(target),
 | 
			
		||||
          response;
 | 
			
		||||
 | 
			
		||||
      this.settings.up_count = up_count;
 | 
			
		||||
 | 
			
		||||
      if (this.adjacent(this.settings.prev_index, target_index)) {
 | 
			
		||||
        if ((target_index > up_count)
 | 
			
		||||
          && target_index > this.settings.prev_index) {
 | 
			
		||||
          response = 'right';
 | 
			
		||||
        } else if ((target_index > up_count - 1)
 | 
			
		||||
          && target_index <= this.settings.prev_index) {
 | 
			
		||||
          response = 'left';
 | 
			
		||||
        } else {
 | 
			
		||||
          response = false;
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        response = 'skip';
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.settings.prev_index = target_index;
 | 
			
		||||
 | 
			
		||||
      return response;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    adjacent : function (current_index, target_index) {
 | 
			
		||||
      for (var i = target_index + 1; i >= target_index - 1; i--) {
 | 
			
		||||
        if (i === current_index) return true;
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // lock management
 | 
			
		||||
 | 
			
		||||
    lock : function () {
 | 
			
		||||
      this.settings.locked = true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    unlock : function () {
 | 
			
		||||
      this.settings.locked = false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    locked : function () {
 | 
			
		||||
      return this.settings.locked;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // plugin management/browser quirks
 | 
			
		||||
 | 
			
		||||
    outerHTML : function (el) {
 | 
			
		||||
      // support FireFox < 11
 | 
			
		||||
      return el.outerHTML || new XMLSerializer().serializeToString(el);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.clearing');
 | 
			
		||||
      $(window).off('.fndtn.clearing');
 | 
			
		||||
      this.remove_data(); // empty settings cache
 | 
			
		||||
      this.settings.init = false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {
 | 
			
		||||
      this.init();
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										74
									
								
								js/foundation/foundation.cookie.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								js/foundation/foundation.cookie.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
/*!
 | 
			
		||||
 * jQuery Cookie Plugin v1.3
 | 
			
		||||
 * https://github.com/carhartl/jquery-cookie
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2011, Klaus Hartl
 | 
			
		||||
 * Dual licensed under the MIT or GPL Version 2 licenses.
 | 
			
		||||
 * http://www.opensource.org/licenses/mit-license.php
 | 
			
		||||
 * http://www.opensource.org/licenses/GPL-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Modified to work with Zepto.js by ZURB
 | 
			
		||||
 */
 | 
			
		||||
(function ($, document, undefined) {
 | 
			
		||||
 | 
			
		||||
  var pluses = /\+/g;
 | 
			
		||||
 | 
			
		||||
  function raw(s) {
 | 
			
		||||
    return s;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function decoded(s) {
 | 
			
		||||
    return decodeURIComponent(s.replace(pluses, ' '));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var config = $.cookie = function (key, value, options) {
 | 
			
		||||
 | 
			
		||||
    // write
 | 
			
		||||
    if (value !== undefined) {
 | 
			
		||||
      options = $.extend({}, config.defaults, options);
 | 
			
		||||
 | 
			
		||||
      if (value === null) {
 | 
			
		||||
        options.expires = -1;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof options.expires === 'number') {
 | 
			
		||||
        var days = options.expires, t = options.expires = new Date();
 | 
			
		||||
        t.setDate(t.getDate() + days);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      value = config.json ? JSON.stringify(value) : String(value);
 | 
			
		||||
 | 
			
		||||
      return (document.cookie = [
 | 
			
		||||
        encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),
 | 
			
		||||
        options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
 | 
			
		||||
        options.path    ? '; path=' + options.path : '',
 | 
			
		||||
        options.domain  ? '; domain=' + options.domain : '',
 | 
			
		||||
        options.secure  ? '; secure' : ''
 | 
			
		||||
      ].join(''));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // read
 | 
			
		||||
    var decode = config.raw ? raw : decoded;
 | 
			
		||||
    var cookies = document.cookie.split('; ');
 | 
			
		||||
    for (var i = 0, l = cookies.length; i < l; i++) {
 | 
			
		||||
      var parts = cookies[i].split('=');
 | 
			
		||||
      if (decode(parts.shift()) === key) {
 | 
			
		||||
        var cookie = decode(parts.join('='));
 | 
			
		||||
        return config.json ? JSON.parse(cookie) : cookie;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return null;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config.defaults = {};
 | 
			
		||||
 | 
			
		||||
  $.removeCookie = function (key, options) {
 | 
			
		||||
    if ($.cookie(key) !== null) {
 | 
			
		||||
      $.cookie(key, null, options);
 | 
			
		||||
      return true;
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
})(Foundation.zj, document);
 | 
			
		||||
							
								
								
									
										178
									
								
								js/foundation/foundation.dropdown.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								js/foundation/foundation.dropdown.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,178 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.dropdown = {
 | 
			
		||||
    name : 'dropdown',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.0',
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      activeClass: 'open',
 | 
			
		||||
      is_hover: false,
 | 
			
		||||
      opened: function(){},
 | 
			
		||||
      closed: function(){}
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      this.scope = scope || this.scope;
 | 
			
		||||
      Foundation.inherit(this, 'throttle scrollLeft data_options');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
 | 
			
		||||
        if (!this.settings.init) {
 | 
			
		||||
          this.events();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .on('click.fndtn.dropdown', '[data-dropdown]', function (e) {
 | 
			
		||||
          var settings = $.extend({}, self.settings, self.data_options($(this)));
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
 | 
			
		||||
          if (!settings.is_hover) self.toggle($(this));
 | 
			
		||||
        })
 | 
			
		||||
        .on('mouseenter', '[data-dropdown]', function (e) {
 | 
			
		||||
          var settings = $.extend({}, self.settings, self.data_options($(this)));
 | 
			
		||||
          if (settings.is_hover) self.toggle($(this));
 | 
			
		||||
        })
 | 
			
		||||
        .on('mouseleave', '[data-dropdown-content]', function (e) {
 | 
			
		||||
          var target = $('[data-dropdown="' + $(this).attr('id') + '"]'),
 | 
			
		||||
              settings = $.extend({}, self.settings, self.data_options(target));
 | 
			
		||||
          if (settings.is_hover) self.close.call(self, $(this));
 | 
			
		||||
        })
 | 
			
		||||
        .on('opened.fndtn.dropdown', '[data-dropdown-content]', this.settings.opened)
 | 
			
		||||
        .on('closed.fndtn.dropdown', '[data-dropdown-content]', this.settings.closed);
 | 
			
		||||
 | 
			
		||||
      $('body').on('click.fndtn.dropdown', function (e) {
 | 
			
		||||
        var parent = $(e.target).closest('[data-dropdown-content]');
 | 
			
		||||
 | 
			
		||||
        if ($(e.target).data('dropdown')) {
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
        if (parent.length > 0 && ($(e.target).is('[data-dropdown-content]') || $.contains(parent.first()[0], e.target))) {
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        self.close.call(self, $('[data-dropdown-content]'));
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      $(window).on('resize.fndtn.dropdown', self.throttle(function () {
 | 
			
		||||
        self.resize.call(self);
 | 
			
		||||
      }, 50)).trigger('resize');
 | 
			
		||||
 | 
			
		||||
      this.settings.init = true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    close: function (dropdown) {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      dropdown.each(function () {
 | 
			
		||||
        if ($(this).hasClass(self.settings.activeClass)) {
 | 
			
		||||
          $(this)
 | 
			
		||||
            .css(Foundation.rtl ? 'right':'left', '-99999px')
 | 
			
		||||
            .removeClass(self.settings.activeClass);
 | 
			
		||||
          $(this).trigger('closed');
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    open: function (dropdown, target) {
 | 
			
		||||
        this
 | 
			
		||||
          .css(dropdown
 | 
			
		||||
            .addClass(this.settings.activeClass), target);
 | 
			
		||||
        dropdown.trigger('opened');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    toggle : function (target) {
 | 
			
		||||
      var dropdown = $('#' + target.data('dropdown'));
 | 
			
		||||
 | 
			
		||||
      this.close.call(this, $('[data-dropdown-content]').not(dropdown));
 | 
			
		||||
 | 
			
		||||
      if (dropdown.hasClass(this.settings.activeClass)) {
 | 
			
		||||
        this.close.call(this, dropdown);
 | 
			
		||||
      } else {
 | 
			
		||||
        this.close.call(this, $('[data-dropdown-content]'))
 | 
			
		||||
        this.open.call(this, dropdown, target);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    resize : function () {
 | 
			
		||||
      var dropdown = $('[data-dropdown-content].open'),
 | 
			
		||||
          target = $("[data-dropdown='" + dropdown.attr('id') + "']");
 | 
			
		||||
 | 
			
		||||
      if (dropdown.length && target.length) {
 | 
			
		||||
        this.css(dropdown, target);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    css : function (dropdown, target) {
 | 
			
		||||
      var offset_parent = dropdown.offsetParent();
 | 
			
		||||
      // temporary workaround until 4.2
 | 
			
		||||
      if (offset_parent.length > 0 && /body/i.test(dropdown.offsetParent()[0].nodeName)) {
 | 
			
		||||
        var position = target.offset();
 | 
			
		||||
        position.top -= dropdown.offsetParent().offset().top;
 | 
			
		||||
        position.left -= dropdown.offsetParent().offset().left;
 | 
			
		||||
      } else {
 | 
			
		||||
        var position = target.position();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.small()) {
 | 
			
		||||
        dropdown.css({
 | 
			
		||||
          position : 'absolute',
 | 
			
		||||
          width: '95%',
 | 
			
		||||
          left: '2.5%',
 | 
			
		||||
          'max-width': 'none',
 | 
			
		||||
          top: position.top + this.outerHeight(target)
 | 
			
		||||
        });
 | 
			
		||||
      } else {
 | 
			
		||||
        if (!Foundation.rtl && $(window).width() > this.outerWidth(dropdown) + target.offset().left) {
 | 
			
		||||
          var left = position.left;
 | 
			
		||||
          if (dropdown.hasClass('right')) {
 | 
			
		||||
            dropdown.removeClass('right');
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          if (!dropdown.hasClass('right')) {
 | 
			
		||||
            dropdown.addClass('right');
 | 
			
		||||
          }
 | 
			
		||||
          var left = position.left - (this.outerWidth(dropdown) - this.outerWidth(target));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        dropdown.attr('style', '').css({
 | 
			
		||||
          position : 'absolute',
 | 
			
		||||
          top: position.top + this.outerHeight(target),
 | 
			
		||||
          left: left
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return dropdown;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    small : function () {
 | 
			
		||||
      return $(window).width() < 768 || $('html').hasClass('lt-ie9');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off: function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.dropdown');
 | 
			
		||||
      $('html, body').off('.fndtn.dropdown');
 | 
			
		||||
      $(window).off('.fndtn.dropdown');
 | 
			
		||||
      $('[data-dropdown-content]').off('.fndtn.dropdown');
 | 
			
		||||
      this.settings.init = false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										525
									
								
								js/foundation/foundation.forms.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										525
									
								
								js/foundation/foundation.forms.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,525 @@
 | 
			
		|||
(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.forms = {
 | 
			
		||||
    name: 'forms',
 | 
			
		||||
 | 
			
		||||
    version: '4.2.2',
 | 
			
		||||
 | 
			
		||||
    cache: {},
 | 
			
		||||
 | 
			
		||||
    settings: {
 | 
			
		||||
      disable_class: 'no-custom',
 | 
			
		||||
      last_combo : null
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init: function (scope, method, options) {
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        if (!this.settings.init) {
 | 
			
		||||
          this.events();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.assemble();
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    assemble: function () {
 | 
			
		||||
      $('form.custom input[type="radio"]', $(this.scope))
 | 
			
		||||
        .not('[data-customforms="disabled"]')
 | 
			
		||||
        .not('.' + this.settings.disable_class)
 | 
			
		||||
        .each(this.append_custom_markup);
 | 
			
		||||
      $('form.custom input[type="checkbox"]', $(this.scope))
 | 
			
		||||
        .not('[data-customforms="disabled"]')
 | 
			
		||||
        .not('.' + this.settings.disable_class)
 | 
			
		||||
        .each(this.append_custom_markup);
 | 
			
		||||
      $('form.custom select', $(this.scope))
 | 
			
		||||
        .not('[data-customforms="disabled"]')
 | 
			
		||||
        .not('.' + this.settings.disable_class)
 | 
			
		||||
        .not('[multiple=multiple]')
 | 
			
		||||
        .each(this.append_custom_select);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events: function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .on('click.fndtn.forms', 'form.custom span.custom.checkbox', function (e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
          self.toggle_checkbox($(this));
 | 
			
		||||
        })
 | 
			
		||||
        .on('click.fndtn.forms', 'form.custom span.custom.radio', function (e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
          self.toggle_radio($(this));
 | 
			
		||||
        })
 | 
			
		||||
        .on('change.fndtn.forms', 'form.custom select', function (e, force_refresh) {
 | 
			
		||||
          if (!$(this).not('[data-customforms="disabled"])')) return;
 | 
			
		||||
          self.refresh_custom_select($(this), force_refresh);
 | 
			
		||||
        })
 | 
			
		||||
        .on('click.fndtn.forms', 'form.custom label', function (e) {
 | 
			
		||||
          if ($(e.target).is('label')) {
 | 
			
		||||
            var $associatedElement = $('#' + self.escape($(this).attr('for'))).not('[data-customforms="disabled"]'),
 | 
			
		||||
              $customCheckbox,
 | 
			
		||||
              $customRadio;
 | 
			
		||||
 | 
			
		||||
            if ($associatedElement.length !== 0) {
 | 
			
		||||
              if ($associatedElement.attr('type') === 'checkbox') {
 | 
			
		||||
                e.preventDefault();
 | 
			
		||||
                $customCheckbox = $(this).find('span.custom.checkbox');
 | 
			
		||||
                //the checkbox might be outside after the label or inside of another element
 | 
			
		||||
                if ($customCheckbox.length === 0) {
 | 
			
		||||
                  $customCheckbox = $associatedElement.add(this).siblings('span.custom.checkbox').first();
 | 
			
		||||
                }
 | 
			
		||||
                self.toggle_checkbox($customCheckbox);
 | 
			
		||||
              } else if ($associatedElement.attr('type') === 'radio') {
 | 
			
		||||
                e.preventDefault();
 | 
			
		||||
                $customRadio = $(this).find('span.custom.radio');
 | 
			
		||||
                //the radio might be outside after the label or inside of another element
 | 
			
		||||
                if ($customRadio.length === 0) {
 | 
			
		||||
                  $customRadio = $associatedElement.add(this).siblings('span.custom.radio').first();
 | 
			
		||||
                }
 | 
			
		||||
                self.toggle_radio($customRadio);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('mousedown.fndtn.forms', 'form.custom div.custom.dropdown', function () {
 | 
			
		||||
          return false;
 | 
			
		||||
        })
 | 
			
		||||
        .on('click.fndtn.forms', 'form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector', function (e) {
 | 
			
		||||
          var $this = $(this),
 | 
			
		||||
              $dropdown = $this.closest('div.custom.dropdown'),
 | 
			
		||||
              $select = getFirstPrevSibling($dropdown, 'select');
 | 
			
		||||
 | 
			
		||||
          // make sure other dropdowns close
 | 
			
		||||
          if (!$dropdown.hasClass('open')) $(self.scope).trigger('click');
 | 
			
		||||
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          if (false === $select.is(':disabled')) {
 | 
			
		||||
            $dropdown.toggleClass('open');
 | 
			
		||||
 | 
			
		||||
            if ($dropdown.hasClass('open')) {
 | 
			
		||||
              $(self.scope).on('click.fndtn.forms.customdropdown', function () {
 | 
			
		||||
                $dropdown.removeClass('open');
 | 
			
		||||
                $(self.scope).off('.fndtn.forms.customdropdown');
 | 
			
		||||
              });
 | 
			
		||||
            } else {
 | 
			
		||||
              $(self.scope).on('.fndtn.forms.customdropdown');
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('click.fndtn.forms touchend.fndtn.forms', 'form.custom div.custom.dropdown li', function (e) {
 | 
			
		||||
          var $this = $(this),
 | 
			
		||||
              $customDropdown = $this.closest('div.custom.dropdown'),
 | 
			
		||||
              $select = getFirstPrevSibling($customDropdown, 'select'),
 | 
			
		||||
              selectedIndex = 0;
 | 
			
		||||
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
 | 
			
		||||
          if (!$(this).hasClass('disabled')) {
 | 
			
		||||
            $('div.dropdown').not($customDropdown).removeClass('open');
 | 
			
		||||
 | 
			
		||||
            var $oldThis = $this.closest('ul')
 | 
			
		||||
              .find('li.selected');
 | 
			
		||||
            $oldThis.removeClass('selected');
 | 
			
		||||
 | 
			
		||||
            $this.addClass('selected');
 | 
			
		||||
 | 
			
		||||
            $customDropdown.removeClass('open')
 | 
			
		||||
              .find('a.current')
 | 
			
		||||
              .text($this.text());
 | 
			
		||||
 | 
			
		||||
            $this.closest('ul').find('li').each(function (index) {
 | 
			
		||||
              if ($this[0] === this) {
 | 
			
		||||
                selectedIndex = index;
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
            $select[0].selectedIndex = selectedIndex;
 | 
			
		||||
 | 
			
		||||
            //store the old value in data
 | 
			
		||||
            $select.data('prevalue', $oldThis.html());
 | 
			
		||||
            $select.trigger('change');
 | 
			
		||||
          }
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      $(window).on('keydown', function (e) {
 | 
			
		||||
        var focus = document.activeElement,
 | 
			
		||||
            self = Foundation.libs.forms,
 | 
			
		||||
            dropdown = $('.custom.dropdown.open');
 | 
			
		||||
 | 
			
		||||
        if (dropdown.length > 0) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
 | 
			
		||||
          if (e.which === 13) {
 | 
			
		||||
            dropdown.find('li.selected').trigger('click');
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (e.which === 27) {
 | 
			
		||||
            dropdown.removeClass('open');
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (e.which >= 65 && e.which <= 90) {
 | 
			
		||||
            var next = self.go_to(dropdown, e.which),
 | 
			
		||||
                current = dropdown.find('li.selected');
 | 
			
		||||
 | 
			
		||||
            if (next) {
 | 
			
		||||
              current.removeClass('selected');
 | 
			
		||||
              self.scrollTo(next.addClass('selected'), 300);
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (e.which === 38) {
 | 
			
		||||
            var current = dropdown.find('li.selected'),
 | 
			
		||||
                prev = current.prev(':not(.disabled)');
 | 
			
		||||
 | 
			
		||||
            if (prev.length > 0) {
 | 
			
		||||
              prev.parent()[0].scrollTop = prev.parent().scrollTop() - self.outerHeight(prev);
 | 
			
		||||
              current.removeClass('selected');
 | 
			
		||||
              prev.addClass('selected');
 | 
			
		||||
            }
 | 
			
		||||
          } else if (e.which === 40) {
 | 
			
		||||
            var current = dropdown.find('li.selected'),
 | 
			
		||||
                next = current.next(':not(.disabled)');
 | 
			
		||||
 | 
			
		||||
            if (next.length > 0) {
 | 
			
		||||
              next.parent()[0].scrollTop = next.parent().scrollTop() + self.outerHeight(next);
 | 
			
		||||
              current.removeClass('selected');
 | 
			
		||||
              next.addClass('selected');
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      this.settings.init = true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    go_to: function (dropdown, character) {
 | 
			
		||||
      var lis = dropdown.find('li'),
 | 
			
		||||
          count = lis.length;
 | 
			
		||||
 | 
			
		||||
      if (count > 0) {
 | 
			
		||||
        for (var i = 0; i < count; i++) {
 | 
			
		||||
          var first_letter = lis.eq(i).text().charAt(0).toLowerCase();
 | 
			
		||||
          if (first_letter === String.fromCharCode(character).toLowerCase()) return lis.eq(i);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    scrollTo: function (el, duration) {
 | 
			
		||||
      if (duration < 0) return;
 | 
			
		||||
      var parent = el.parent();
 | 
			
		||||
      var li_height = this.outerHeight(el);
 | 
			
		||||
      var difference = (li_height * (el.index())) - parent.scrollTop();
 | 
			
		||||
      var perTick = difference / duration * 10;
 | 
			
		||||
 | 
			
		||||
      this.scrollToTimerCache = setTimeout(function () {
 | 
			
		||||
        if (!isNaN(parseInt(perTick, 10))) {
 | 
			
		||||
          parent[0].scrollTop = parent.scrollTop() + perTick;
 | 
			
		||||
          this.scrollTo(el, duration - 10);
 | 
			
		||||
        }
 | 
			
		||||
      }.bind(this), 10);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    append_custom_markup: function (idx, sel) {
 | 
			
		||||
      var $this = $(sel),
 | 
			
		||||
          type = $this.attr('type'),
 | 
			
		||||
          $span = $this.next('span.custom.' + type);
 | 
			
		||||
          
 | 
			
		||||
      if (!$this.parent().hasClass('switch')) {
 | 
			
		||||
        $this.addClass('hidden-field');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if ($span.length === 0) {
 | 
			
		||||
        $span = $('<span class="custom ' + type + '"></span>').insertAfter($this);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      $span.toggleClass('checked', $this.is(':checked'));
 | 
			
		||||
      $span.toggleClass('disabled', $this.is(':disabled'));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    append_custom_select: function (idx, sel) {
 | 
			
		||||
        var self = Foundation.libs.forms,
 | 
			
		||||
            $this = $(sel),
 | 
			
		||||
            $customSelect = $this.next('div.custom.dropdown'),
 | 
			
		||||
            $customList = $customSelect.find('ul'),
 | 
			
		||||
            $selectCurrent = $customSelect.find(".current"),
 | 
			
		||||
            $selector = $customSelect.find(".selector"),
 | 
			
		||||
            $options = $this.find('option'),
 | 
			
		||||
            $selectedOption = $options.filter(':selected'),
 | 
			
		||||
            copyClasses = $this.attr('class') ? $this.attr('class').split(' ') : [],
 | 
			
		||||
            maxWidth = 0,
 | 
			
		||||
            liHtml = '',
 | 
			
		||||
            $listItems,
 | 
			
		||||
            $currentSelect = false;
 | 
			
		||||
 | 
			
		||||
        if ($customSelect.length === 0) {
 | 
			
		||||
          var customSelectSize = $this.hasClass('small') ? 'small' : $this.hasClass('medium') ? 'medium' : $this.hasClass('large') ? 'large' : $this.hasClass('expand') ? 'expand' : '';
 | 
			
		||||
 | 
			
		||||
          $customSelect = $('<div class="' + ['custom', 'dropdown', customSelectSize].concat(copyClasses).filter(function (item, idx, arr) {
 | 
			
		||||
            if (item === '') return false;
 | 
			
		||||
            return arr.indexOf(item) === idx;
 | 
			
		||||
          }).join(' ') + '"><a href="#" class="selector"></a><ul /></div>');
 | 
			
		||||
 | 
			
		||||
          $selector = $customSelect.find(".selector");
 | 
			
		||||
          $customList = $customSelect.find("ul");
 | 
			
		||||
 | 
			
		||||
          liHtml = $options.map(function () {
 | 
			
		||||
            var copyClasses = $(this).attr('class') ? $(this).attr('class') : '';
 | 
			
		||||
            return "<li class='" + copyClasses + "'>" + $(this).html() + "</li>";
 | 
			
		||||
          }).get().join('');
 | 
			
		||||
 | 
			
		||||
          $customList.append(liHtml);
 | 
			
		||||
 | 
			
		||||
          $currentSelect = $customSelect
 | 
			
		||||
            .prepend('<a href="#" class="current">' + $selectedOption.html() + '</a>')
 | 
			
		||||
            .find(".current");
 | 
			
		||||
 | 
			
		||||
          $this.after($customSelect)
 | 
			
		||||
            .addClass('hidden-field');
 | 
			
		||||
        } else {
 | 
			
		||||
          liHtml = $options.map(function () {
 | 
			
		||||
              return "<li>" + $(this).html() + "</li>";
 | 
			
		||||
            })
 | 
			
		||||
            .get().join('');
 | 
			
		||||
 | 
			
		||||
          $customList.html('')
 | 
			
		||||
            .append(liHtml);
 | 
			
		||||
 | 
			
		||||
        } // endif $customSelect.length === 0
 | 
			
		||||
 | 
			
		||||
        self.assign_id($this, $customSelect);
 | 
			
		||||
        $customSelect.toggleClass('disabled', $this.is(':disabled'));
 | 
			
		||||
        $listItems = $customList.find('li');
 | 
			
		||||
 | 
			
		||||
        // cache list length
 | 
			
		||||
        self.cache[$customSelect.data('id')] = $listItems.length;
 | 
			
		||||
 | 
			
		||||
        $options.each(function (index) {
 | 
			
		||||
          if (this.selected) {
 | 
			
		||||
            $listItems.eq(index).addClass('selected');
 | 
			
		||||
 | 
			
		||||
            if ($currentSelect) {
 | 
			
		||||
              $currentSelect.html($(this).html());
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          if ($(this).is(':disabled')) {
 | 
			
		||||
            $listItems.eq(index).addClass('disabled');
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //
 | 
			
		||||
        // If we're not specifying a predetermined form size.
 | 
			
		||||
        //
 | 
			
		||||
        if (!$customSelect.is('.small, .medium, .large, .expand')) {
 | 
			
		||||
 | 
			
		||||
          // ------------------------------------------------------------------------------------
 | 
			
		||||
          // This is a work-around for when elements are contained within hidden parents.
 | 
			
		||||
          // For example, when custom-form elements are inside of a hidden reveal modal.
 | 
			
		||||
          //
 | 
			
		||||
          // We need to display the current custom list element as well as hidden parent elements
 | 
			
		||||
          // in order to properly calculate the list item element's width property.
 | 
			
		||||
          // -------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
          $customSelect.addClass('open');
 | 
			
		||||
          //
 | 
			
		||||
          // Quickly, display all parent elements.
 | 
			
		||||
          // This should help us calcualate the width of the list item's within the drop down.
 | 
			
		||||
          //
 | 
			
		||||
          var self = Foundation.libs.forms;
 | 
			
		||||
          self.hidden_fix.adjust($customList);
 | 
			
		||||
 | 
			
		||||
          maxWidth = (self.outerWidth($listItems) > maxWidth) ? self.outerWidth($listItems) : maxWidth;
 | 
			
		||||
 | 
			
		||||
          Foundation.libs.forms.hidden_fix.reset();
 | 
			
		||||
 | 
			
		||||
          $customSelect.removeClass('open');
 | 
			
		||||
 | 
			
		||||
        } // endif
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    assign_id: function ($select, $customSelect) {
 | 
			
		||||
      var id = [+new Date(), Foundation.random_str(5)].join('-');
 | 
			
		||||
      $select.attr('data-id', id);
 | 
			
		||||
      $customSelect.attr('data-id', id);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    refresh_custom_select: function ($select, force_refresh) {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      var maxWidth = 0,
 | 
			
		||||
          $customSelect = $select.next(),
 | 
			
		||||
          $options = $select.find('option'),
 | 
			
		||||
          $listItems = $customSelect.find('li');
 | 
			
		||||
 | 
			
		||||
      if ($listItems.length !== this.cache[$customSelect.data('id')] || force_refresh) {
 | 
			
		||||
        $customSelect.find('ul').html('');
 | 
			
		||||
 | 
			
		||||
        $options.each(function () {
 | 
			
		||||
          var $li = $('<li>' + $(this).html() + '</li>');
 | 
			
		||||
          $customSelect.find('ul').append($li);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // re-populate
 | 
			
		||||
        $options.each(function (index) {
 | 
			
		||||
          if (this.selected) {
 | 
			
		||||
            $customSelect.find('li').eq(index).addClass('selected');
 | 
			
		||||
            $customSelect.find('.current').html($(this).html());
 | 
			
		||||
          }
 | 
			
		||||
          if ($(this).is(':disabled')) {
 | 
			
		||||
            $customSelect.find('li').eq(index).addClass('disabled');
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // fix width
 | 
			
		||||
        $customSelect.removeAttr('style')
 | 
			
		||||
          .find('ul').removeAttr('style');
 | 
			
		||||
        $customSelect.find('li').each(function () {
 | 
			
		||||
          $customSelect.addClass('open');
 | 
			
		||||
          if (self.outerWidth($(this)) > maxWidth) {
 | 
			
		||||
            maxWidth = self.outerWidth($(this));
 | 
			
		||||
          }
 | 
			
		||||
          $customSelect.removeClass('open');
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        $listItems = $customSelect.find('li');
 | 
			
		||||
        // cache list length
 | 
			
		||||
        this.cache[$customSelect.data('id')] = $listItems.length;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    toggle_checkbox: function ($element) {
 | 
			
		||||
      var $input = $element.prev(),
 | 
			
		||||
          input = $input[0];
 | 
			
		||||
 | 
			
		||||
      if (false === $input.is(':disabled')) {
 | 
			
		||||
        input.checked = ((input.checked) ? false : true);
 | 
			
		||||
        $element.toggleClass('checked');
 | 
			
		||||
 | 
			
		||||
        $input.trigger('change');
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    toggle_radio: function ($element) {
 | 
			
		||||
        var $input = $element.prev(),
 | 
			
		||||
            $form = $input.closest('form.custom'),
 | 
			
		||||
            input = $input[0];
 | 
			
		||||
 | 
			
		||||
        if (false === $input.is(':disabled')) {
 | 
			
		||||
          $form.find('input[type="radio"][name="' + this.escape($input.attr('name')) + '"]')
 | 
			
		||||
            .next().not($element).removeClass('checked');
 | 
			
		||||
 | 
			
		||||
          if (!$element.hasClass('checked')) {
 | 
			
		||||
            $element.toggleClass('checked');
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          input.checked = $element.hasClass('checked');
 | 
			
		||||
 | 
			
		||||
          $input.trigger('change');
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    escape: function (text) {
 | 
			
		||||
      if (!text) return '';
 | 
			
		||||
      return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    hidden_fix: {
 | 
			
		||||
        /**
 | 
			
		||||
         * Sets all hidden parent elements and self to visibile.
 | 
			
		||||
         *
 | 
			
		||||
         * @method adjust
 | 
			
		||||
         * @param {jQuery Object} $child
 | 
			
		||||
         */
 | 
			
		||||
 | 
			
		||||
        // We'll use this to temporarily store style properties.
 | 
			
		||||
        tmp: [],
 | 
			
		||||
 | 
			
		||||
        // We'll use this to set hidden parent elements.
 | 
			
		||||
        hidden: null,
 | 
			
		||||
 | 
			
		||||
        adjust: function ($child) {
 | 
			
		||||
          // Internal reference.
 | 
			
		||||
          var _self = this;
 | 
			
		||||
 | 
			
		||||
          // Set all hidden parent elements, including this element.
 | 
			
		||||
          _self.hidden = $child.parents();
 | 
			
		||||
          _self.hidden = _self.hidden.add($child).filter(":hidden");
 | 
			
		||||
 | 
			
		||||
          // Loop through all hidden elements.
 | 
			
		||||
          _self.hidden.each(function () {
 | 
			
		||||
 | 
			
		||||
            // Cache the element.
 | 
			
		||||
            var $elem = $(this);
 | 
			
		||||
 | 
			
		||||
            // Store the style attribute.
 | 
			
		||||
            // Undefined if element doesn't have a style attribute.
 | 
			
		||||
            _self.tmp.push($elem.attr('style'));
 | 
			
		||||
 | 
			
		||||
            // Set the element's display property to block,
 | 
			
		||||
            // but ensure it's visibility is hidden.
 | 
			
		||||
            $elem.css({
 | 
			
		||||
                'visibility': 'hidden',
 | 
			
		||||
                'display': 'block'
 | 
			
		||||
            });
 | 
			
		||||
          });
 | 
			
		||||
 | 
			
		||||
        }, // end adjust
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Resets the elements previous state.
 | 
			
		||||
         *
 | 
			
		||||
         * @method reset
 | 
			
		||||
         */
 | 
			
		||||
        reset: function () {
 | 
			
		||||
          // Internal reference.
 | 
			
		||||
          var _self = this;
 | 
			
		||||
          // Loop through our hidden element collection.
 | 
			
		||||
          _self.hidden.each(function (i) {
 | 
			
		||||
            // Cache this element.
 | 
			
		||||
            var $elem = $(this),
 | 
			
		||||
                _tmp = _self.tmp[i]; // Get the stored 'style' value for this element.
 | 
			
		||||
 | 
			
		||||
            // If the stored value is undefined.
 | 
			
		||||
            if (_tmp === undefined)
 | 
			
		||||
            // Remove the style attribute.
 | 
			
		||||
            $elem.removeAttr('style');
 | 
			
		||||
            else
 | 
			
		||||
            // Otherwise, reset the element style attribute.
 | 
			
		||||
            $elem.attr('style', _tmp);
 | 
			
		||||
          });
 | 
			
		||||
          // Reset the tmp array.
 | 
			
		||||
          _self.tmp = [];
 | 
			
		||||
          // Reset the hidden elements variable.
 | 
			
		||||
          _self.hidden = null;
 | 
			
		||||
 | 
			
		||||
        } // end reset
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off: function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.forms');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  var getFirstPrevSibling = function($el, selector) {
 | 
			
		||||
    var $el = $el.prev();
 | 
			
		||||
    while ($el.length) {
 | 
			
		||||
      if ($el.is(selector)) return $el;
 | 
			
		||||
      $el = $el.prev();
 | 
			
		||||
    }
 | 
			
		||||
    return $();
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										271
									
								
								js/foundation/foundation.interchange.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										271
									
								
								js/foundation/foundation.interchange.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,271 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.interchange = {
 | 
			
		||||
    name : 'interchange',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    cache : {},
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      load_attr : 'interchange',
 | 
			
		||||
 | 
			
		||||
      named_queries : {
 | 
			
		||||
        'default' : 'only screen and (min-width: 1px)',
 | 
			
		||||
        small : 'only screen and (min-width: 768px)',
 | 
			
		||||
        medium : 'only screen and (min-width: 1280px)',
 | 
			
		||||
        large : 'only screen and (min-width: 1440px)',
 | 
			
		||||
        landscape : 'only screen and (orientation: landscape)',
 | 
			
		||||
        portrait : 'only screen and (orientation: portrait)',
 | 
			
		||||
        retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 
 | 
			
		||||
          'only screen and (min--moz-device-pixel-ratio: 2),' + 
 | 
			
		||||
          'only screen and (-o-min-device-pixel-ratio: 2/1),' + 
 | 
			
		||||
          'only screen and (min-device-pixel-ratio: 2),' + 
 | 
			
		||||
          'only screen and (min-resolution: 192dpi),' + 
 | 
			
		||||
          'only screen and (min-resolution: 2dppx)'
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      directives : {
 | 
			
		||||
        replace : function (el, path) {
 | 
			
		||||
          if (/IMG/.test(el[0].nodeName)) {
 | 
			
		||||
            var path_parts = path.split('/'),
 | 
			
		||||
                path_file = path_parts[path_parts.length - 1],
 | 
			
		||||
                orig_path = el[0].src;
 | 
			
		||||
 | 
			
		||||
            if (new RegExp(path_file, 'i').test(el[0].src)) return;
 | 
			
		||||
 | 
			
		||||
            el[0].src = path;
 | 
			
		||||
 | 
			
		||||
            return el.trigger('replace', [el[0].src, orig_path]);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      Foundation.inherit(this, 'throttle');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.events();
 | 
			
		||||
      this.images();
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(window).on('resize.fndtn.interchange', self.throttle(function () {
 | 
			
		||||
        self.resize.call(self);
 | 
			
		||||
      }, 50));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    resize : function () {
 | 
			
		||||
      var cache = this.cache;
 | 
			
		||||
 | 
			
		||||
      for (var uuid in cache) {
 | 
			
		||||
        if (cache.hasOwnProperty(uuid)) {
 | 
			
		||||
          var passed = this.results(uuid, cache[uuid]);
 | 
			
		||||
 | 
			
		||||
          if (passed) {
 | 
			
		||||
            this.settings.directives[passed
 | 
			
		||||
              .scenario[1]](passed.el, passed.scenario[0]);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    results : function (uuid, scenarios) {
 | 
			
		||||
      var count = scenarios.length,
 | 
			
		||||
          results_arr = [];
 | 
			
		||||
 | 
			
		||||
      if (count > 0) {
 | 
			
		||||
        var el = $('[data-uuid="' + uuid + '"]');
 | 
			
		||||
 | 
			
		||||
        for (var i = count - 1; i >= 0; i--) {
 | 
			
		||||
          var rule = scenarios[i][2];
 | 
			
		||||
          if (this.settings.named_queries.hasOwnProperty(rule)) {
 | 
			
		||||
            var mq = matchMedia(this.settings.named_queries[rule]);
 | 
			
		||||
          } else {
 | 
			
		||||
            var mq = matchMedia(scenarios[i][2]);
 | 
			
		||||
          }
 | 
			
		||||
          if (mq.matches) {
 | 
			
		||||
            return {el: el, scenario: scenarios[i]};
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    images : function (force_update) {
 | 
			
		||||
      if (typeof this.cached_images === 'undefined' || force_update) {
 | 
			
		||||
        return this.update_images();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return this.cached_images;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    update_images : function () {
 | 
			
		||||
      var images = document.getElementsByTagName('img'),
 | 
			
		||||
          count = images.length,
 | 
			
		||||
          data_attr = 'data-' + this.settings.load_attr;
 | 
			
		||||
 | 
			
		||||
      this.cached_images = [];
 | 
			
		||||
 | 
			
		||||
      for (var i = count - 1; i >= 0; i--) {
 | 
			
		||||
        this.loaded($(images[i]), (i === 0), function (image, last) {
 | 
			
		||||
          if (image) {
 | 
			
		||||
            var str = image.getAttribute(data_attr) || '';
 | 
			
		||||
 | 
			
		||||
            if (str.length > 0) {
 | 
			
		||||
              this.cached_images.push(image);
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (last) this.enhance();
 | 
			
		||||
 | 
			
		||||
        }.bind(this));
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return 'deferred';
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // based on jquery.imageready.js
 | 
			
		||||
    // @weblinc, @jsantell, (c) 2012
 | 
			
		||||
 | 
			
		||||
    loaded : function (image, last, callback) {
 | 
			
		||||
      function loaded () {
 | 
			
		||||
        callback(image[0], last);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      function bindLoad () {
 | 
			
		||||
        this.one('load', loaded);
 | 
			
		||||
 | 
			
		||||
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
 | 
			
		||||
          var src = this.attr( 'src' ),
 | 
			
		||||
              param = src.match( /\?/ ) ? '&' : '?';
 | 
			
		||||
 | 
			
		||||
          param += 'random=' + (new Date()).getTime();
 | 
			
		||||
          this.attr('src', src + param);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!image.attr('src')) {
 | 
			
		||||
        loaded();
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (image[0].complete || image[0].readyState === 4) {
 | 
			
		||||
        loaded();
 | 
			
		||||
      } else {
 | 
			
		||||
        bindLoad.call(image);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    enhance : function () {
 | 
			
		||||
      var count = this.images().length;
 | 
			
		||||
 | 
			
		||||
      for (var i = count - 1; i >= 0; i--) {
 | 
			
		||||
        this._object($(this.images()[i]));
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return $(window).trigger('resize');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    parse_params : function (path, directive, mq) {
 | 
			
		||||
      return [this.trim(path), this.convert_directive(directive), this.trim(mq)];
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    convert_directive : function (directive) {
 | 
			
		||||
      var trimmed = this.trim(directive);
 | 
			
		||||
 | 
			
		||||
      if (trimmed.length > 0) {
 | 
			
		||||
        return trimmed;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return 'replace';
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _object : function(el) {
 | 
			
		||||
      var raw_arr = this.parse_data_attr(el),
 | 
			
		||||
          scenarios = [], count = raw_arr.length;
 | 
			
		||||
 | 
			
		||||
      if (count > 0) {
 | 
			
		||||
        for (var i = count - 1; i >= 0; i--) {
 | 
			
		||||
          var split = raw_arr[i].split(/\((.*?)(\))$/);
 | 
			
		||||
 | 
			
		||||
          if (split.length > 1) {
 | 
			
		||||
            var cached_split = split[0].split(','),
 | 
			
		||||
                params = this.parse_params(cached_split[0],
 | 
			
		||||
                  cached_split[1], split[1]);
 | 
			
		||||
 | 
			
		||||
            scenarios.push(params);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return this.store(el, scenarios);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    uuid : function (separator) {
 | 
			
		||||
      var delim = separator || "-";
 | 
			
		||||
 | 
			
		||||
      function S4() {
 | 
			
		||||
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return (S4() + S4() + delim + S4() + delim + S4()
 | 
			
		||||
        + delim + S4() + delim + S4() + S4() + S4());
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    store : function (el, scenarios) {
 | 
			
		||||
      var uuid = this.uuid(),
 | 
			
		||||
          current_uuid = el.data('uuid');
 | 
			
		||||
 | 
			
		||||
      if (current_uuid) return this.cache[current_uuid];
 | 
			
		||||
 | 
			
		||||
      el.attr('data-uuid', uuid);
 | 
			
		||||
 | 
			
		||||
      return this.cache[uuid] = scenarios;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    trim : function(str) {
 | 
			
		||||
      if (typeof str === 'string') {
 | 
			
		||||
        return $.trim(str);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return str;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    parse_data_attr : function (el) {
 | 
			
		||||
      var raw = el.data(this.settings.load_attr).split(/\[(.*?)\]/),
 | 
			
		||||
          count = raw.length, output = [];
 | 
			
		||||
 | 
			
		||||
      for (var i = count - 1; i >= 0; i--) {
 | 
			
		||||
        if (raw[i].replace(/[\W\d]+/, '').length > 4) {
 | 
			
		||||
          output.push(raw[i]);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return output;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {
 | 
			
		||||
      this.images(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										844
									
								
								js/foundation/foundation.joyride.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										844
									
								
								js/foundation/foundation.joyride.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,844 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.joyride = {
 | 
			
		||||
    name: 'joyride',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    defaults : {
 | 
			
		||||
      expose               : false,      // turn on or off the expose feature
 | 
			
		||||
      modal                : false,      // Whether to cover page with modal during the tour
 | 
			
		||||
      tipLocation          : 'bottom',  // 'top' or 'bottom' in relation to parent
 | 
			
		||||
      nubPosition          : 'auto',    // override on a per tooltip bases
 | 
			
		||||
      scrollSpeed          : 300,       // Page scrolling speed in milliseconds, 0 = no scroll animation
 | 
			
		||||
      timer                : 0,         // 0 = no timer , all other numbers = timer in milliseconds
 | 
			
		||||
      startTimerOnClick    : true,      // true or false - true requires clicking the first button start the timer
 | 
			
		||||
      startOffset          : 0,         // the index of the tooltip you want to start on (index of the li)
 | 
			
		||||
      nextButton           : true,      // true or false to control whether a next button is used
 | 
			
		||||
      tipAnimation         : 'fade',    // 'pop' or 'fade' in each tip
 | 
			
		||||
      pauseAfter           : [],        // array of indexes where to pause the tour after
 | 
			
		||||
      exposed              : [],        // array of expose elements
 | 
			
		||||
      tipAnimationFadeSpeed: 300,       // when tipAnimation = 'fade' this is speed in milliseconds for the transition
 | 
			
		||||
      cookieMonster        : false,     // true or false to control whether cookies are used
 | 
			
		||||
      cookieName           : 'joyride', // Name the cookie you'll use
 | 
			
		||||
      cookieDomain         : false,     // Will this cookie be attached to a domain, ie. '.notableapp.com'
 | 
			
		||||
      cookieExpires        : 365,       // set when you would like the cookie to expire.
 | 
			
		||||
      tipContainer         : 'body',    // Where will the tip be attached
 | 
			
		||||
      postRideCallback     : function (){},    // A method to call once the tour closes (canceled or complete)
 | 
			
		||||
      postStepCallback     : function (){},    // A method to call after each step
 | 
			
		||||
      preStepCallback      : function (){},    // A method to call before each step
 | 
			
		||||
      preRideCallback      : function (){},    // A method to call before the tour starts (passed index, tip, and cloned exposed element)
 | 
			
		||||
      postExposeCallback   : function (){},    // A method to call after an element has been exposed
 | 
			
		||||
      template : { // HTML segments for tip layout
 | 
			
		||||
        link    : '<a href="#close" class="joyride-close-tip">×</a>',
 | 
			
		||||
        timer   : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
 | 
			
		||||
        tip     : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
 | 
			
		||||
        wrapper : '<div class="joyride-content-wrapper"></div>',
 | 
			
		||||
        button  : '<a href="#" class="small button joyride-next-tip"></a>',
 | 
			
		||||
        modal   : '<div class="joyride-modal-bg"></div>',
 | 
			
		||||
        expose  : '<div class="joyride-expose-wrapper"></div>',
 | 
			
		||||
        exposeCover: '<div class="joyride-expose-cover"></div>'
 | 
			
		||||
      },
 | 
			
		||||
      exposeAddClass  	: ''		// One or more space-separated class names to be added to exposed element
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    settings : {},
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      this.scope = scope || this.scope;
 | 
			
		||||
      Foundation.inherit(this, 'throttle data_options scrollTo scrollLeft delay');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, this.defaults, method);
 | 
			
		||||
      } else {
 | 
			
		||||
        $.extend(true, this.settings, this.defaults, options);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        if (!this.settings.init) this.events();
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .on('click.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
 | 
			
		||||
          if (this.settings.$li.next().length < 1) {
 | 
			
		||||
            this.end();
 | 
			
		||||
          } else if (this.settings.timer > 0) {
 | 
			
		||||
            clearTimeout(this.settings.automate);
 | 
			
		||||
            this.hide();
 | 
			
		||||
            this.show();
 | 
			
		||||
            this.startTimer();
 | 
			
		||||
          } else {
 | 
			
		||||
            this.hide();
 | 
			
		||||
            this.show();
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
        }.bind(this))
 | 
			
		||||
 | 
			
		||||
        .on('click.joyride', '.joyride-close-tip', function (e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          this.end();
 | 
			
		||||
        }.bind(this));
 | 
			
		||||
 | 
			
		||||
      $(window).on('resize.fndtn.joyride', self.throttle(function () {
 | 
			
		||||
        if ($('[data-joyride]').length > 0 && self.settings.$next_tip) {
 | 
			
		||||
          if (self.settings.exposed.length > 0) {
 | 
			
		||||
            var $els = $(self.settings.exposed);
 | 
			
		||||
 | 
			
		||||
            $els.each(function () {
 | 
			
		||||
              var $this = $(this);
 | 
			
		||||
              self.un_expose($this);
 | 
			
		||||
              self.expose($this);
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (self.is_phone()) {
 | 
			
		||||
            self.pos_phone();
 | 
			
		||||
          } else {
 | 
			
		||||
            self.pos_default(false, true);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }, 100));
 | 
			
		||||
 | 
			
		||||
      this.settings.init = true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    start : function () {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $this = $(this.scope).find('[data-joyride]'),
 | 
			
		||||
          integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
 | 
			
		||||
          int_settings_count = integer_settings.length;
 | 
			
		||||
 | 
			
		||||
      if (!this.settings.init) this.init();
 | 
			
		||||
 | 
			
		||||
      // non configureable settings
 | 
			
		||||
      this.settings.$content_el = $this;
 | 
			
		||||
      this.settings.$body = $(this.settings.tipContainer);
 | 
			
		||||
      this.settings.body_offset = $(this.settings.tipContainer).position();
 | 
			
		||||
      this.settings.$tip_content = this.settings.$content_el.find('> li');
 | 
			
		||||
      this.settings.paused = false;
 | 
			
		||||
      this.settings.attempts = 0;
 | 
			
		||||
 | 
			
		||||
      this.settings.tipLocationPatterns = {
 | 
			
		||||
        top: ['bottom'],
 | 
			
		||||
        bottom: [], // bottom should not need to be repositioned
 | 
			
		||||
        left: ['right', 'top', 'bottom'],
 | 
			
		||||
        right: ['left', 'top', 'bottom']
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      // can we create cookies?
 | 
			
		||||
      if (typeof $.cookie !== 'function') {
 | 
			
		||||
        this.settings.cookieMonster = false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // generate the tips and insert into dom.
 | 
			
		||||
      if (!this.settings.cookieMonster || this.settings.cookieMonster && $.cookie(this.settings.cookieName) === null) {
 | 
			
		||||
        this.settings.$tip_content.each(function (index) {
 | 
			
		||||
          var $this = $(this);
 | 
			
		||||
          $.extend(true, self.settings, self.data_options($this));
 | 
			
		||||
          // Make sure that settings parsed from data_options are integers where necessary
 | 
			
		||||
          for (var i = int_settings_count - 1; i >= 0; i--) {
 | 
			
		||||
            self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
 | 
			
		||||
          }
 | 
			
		||||
          self.create({$li : $this, index : index});
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // show first tip
 | 
			
		||||
        if (!this.settings.startTimerOnClick && this.settings.timer > 0) {
 | 
			
		||||
          this.show('init');
 | 
			
		||||
          this.startTimer();
 | 
			
		||||
        } else {
 | 
			
		||||
          this.show('init');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    resume : function () {
 | 
			
		||||
      this.set_li();
 | 
			
		||||
      this.show();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    tip_template : function (opts) {
 | 
			
		||||
      var $blank, content;
 | 
			
		||||
 | 
			
		||||
      opts.tip_class = opts.tip_class || '';
 | 
			
		||||
 | 
			
		||||
      $blank = $(this.settings.template.tip).addClass(opts.tip_class);
 | 
			
		||||
      content = $.trim($(opts.li).html()) +
 | 
			
		||||
        this.button_text(opts.button_text) +
 | 
			
		||||
        this.settings.template.link +
 | 
			
		||||
        this.timer_instance(opts.index);
 | 
			
		||||
 | 
			
		||||
      $blank.append($(this.settings.template.wrapper));
 | 
			
		||||
      $blank.first().attr('data-index', opts.index);
 | 
			
		||||
      $('.joyride-content-wrapper', $blank).append(content);
 | 
			
		||||
 | 
			
		||||
      return $blank[0];
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    timer_instance : function (index) {
 | 
			
		||||
      var txt;
 | 
			
		||||
 | 
			
		||||
      if ((index === 0 && this.settings.startTimerOnClick && this.settings.timer > 0) || this.settings.timer === 0) {
 | 
			
		||||
        txt = '';
 | 
			
		||||
      } else {
 | 
			
		||||
        txt = this.outerHTML($(this.settings.template.timer)[0]);
 | 
			
		||||
      }
 | 
			
		||||
      return txt;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    button_text : function (txt) {
 | 
			
		||||
      if (this.settings.nextButton) {
 | 
			
		||||
        txt = $.trim(txt) || 'Next';
 | 
			
		||||
        txt = this.outerHTML($(this.settings.template.button).append(txt)[0]);
 | 
			
		||||
      } else {
 | 
			
		||||
        txt = '';
 | 
			
		||||
      }
 | 
			
		||||
      return txt;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    create : function (opts) {
 | 
			
		||||
      var buttonText = opts.$li.attr('data-button') || opts.$li.attr('data-text'),
 | 
			
		||||
        tipClass = opts.$li.attr('class'),
 | 
			
		||||
        $tip_content = $(this.tip_template({
 | 
			
		||||
          tip_class : tipClass,
 | 
			
		||||
          index : opts.index,
 | 
			
		||||
          button_text : buttonText,
 | 
			
		||||
          li : opts.$li
 | 
			
		||||
        }));
 | 
			
		||||
 | 
			
		||||
      $(this.settings.tipContainer).append($tip_content);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    show : function (init) {
 | 
			
		||||
      var $timer = null;
 | 
			
		||||
 | 
			
		||||
      // are we paused?
 | 
			
		||||
      if (this.settings.$li === undefined
 | 
			
		||||
        || ($.inArray(this.settings.$li.index(), this.settings.pauseAfter) === -1)) {
 | 
			
		||||
 | 
			
		||||
        // don't go to the next li if the tour was paused
 | 
			
		||||
        if (this.settings.paused) {
 | 
			
		||||
          this.settings.paused = false;
 | 
			
		||||
        } else {
 | 
			
		||||
          this.set_li(init);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.settings.attempts = 0;
 | 
			
		||||
 | 
			
		||||
        if (this.settings.$li.length && this.settings.$target.length > 0) {
 | 
			
		||||
          if (init) { //run when we first start
 | 
			
		||||
            this.settings.preRideCallback(this.settings.$li.index(), this.settings.$next_tip);
 | 
			
		||||
            if (this.settings.modal) {
 | 
			
		||||
              this.show_modal();
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.settings.preStepCallback(this.settings.$li.index(), this.settings.$next_tip);
 | 
			
		||||
 | 
			
		||||
          if (this.settings.modal && this.settings.expose) {
 | 
			
		||||
            this.expose();
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.settings.tipSettings = $.extend(this.settings, this.data_options(this.settings.$li));
 | 
			
		||||
 | 
			
		||||
          this.settings.timer = parseInt(this.settings.timer, 10);
 | 
			
		||||
 | 
			
		||||
          this.settings.tipSettings.tipLocationPattern = this.settings.tipLocationPatterns[this.settings.tipSettings.tipLocation];
 | 
			
		||||
 | 
			
		||||
          // scroll if not modal
 | 
			
		||||
          if (!/body/i.test(this.settings.$target.selector)) {
 | 
			
		||||
            this.scroll_to();
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (this.is_phone()) {
 | 
			
		||||
            this.pos_phone(true);
 | 
			
		||||
          } else {
 | 
			
		||||
            this.pos_default(true);
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          $timer = this.settings.$next_tip.find('.joyride-timer-indicator');
 | 
			
		||||
 | 
			
		||||
          if (/pop/i.test(this.settings.tipAnimation)) {
 | 
			
		||||
 | 
			
		||||
            $timer.width(0);
 | 
			
		||||
 | 
			
		||||
            if (this.settings.timer > 0) {
 | 
			
		||||
 | 
			
		||||
              this.settings.$next_tip.show();
 | 
			
		||||
 | 
			
		||||
              this.delay(function () {
 | 
			
		||||
                $timer.animate({
 | 
			
		||||
                  width: $timer.parent().width()
 | 
			
		||||
                }, this.settings.timer, 'linear');
 | 
			
		||||
              }.bind(this), this.settings.tipAnimationFadeSpeed);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
              this.settings.$next_tip.show();
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          } else if (/fade/i.test(this.settings.tipAnimation)) {
 | 
			
		||||
 | 
			
		||||
            $timer.width(0);
 | 
			
		||||
 | 
			
		||||
            if (this.settings.timer > 0) {
 | 
			
		||||
 | 
			
		||||
              this.settings.$next_tip
 | 
			
		||||
                .fadeIn(this.settings.tipAnimationFadeSpeed)
 | 
			
		||||
                .show();
 | 
			
		||||
 | 
			
		||||
              this.delay(function () {
 | 
			
		||||
                $timer.animate({
 | 
			
		||||
                  width: $timer.parent().width()
 | 
			
		||||
                }, this.settings.timer, 'linear');
 | 
			
		||||
              }.bind(this), this.settings.tipAnimationFadeSpeed);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
              this.settings.$next_tip.fadeIn(this.settings.tipAnimationFadeSpeed);
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.settings.$current_tip = this.settings.$next_tip;
 | 
			
		||||
 | 
			
		||||
        // skip non-existant targets
 | 
			
		||||
        } else if (this.settings.$li && this.settings.$target.length < 1) {
 | 
			
		||||
 | 
			
		||||
          this.show();
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
 | 
			
		||||
          this.end();
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
 | 
			
		||||
        this.settings.paused = true;
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    is_phone : function () {
 | 
			
		||||
      if (Modernizr) {
 | 
			
		||||
        return Modernizr.mq('only screen and (max-width: 767px)') || $('.lt-ie9').length > 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return (this.settings.$window.width() < 767);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    hide : function () {
 | 
			
		||||
      if (this.settings.modal && this.settings.expose) {
 | 
			
		||||
        this.un_expose();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.settings.modal) {
 | 
			
		||||
        $('.joyride-modal-bg').hide();
 | 
			
		||||
      }
 | 
			
		||||
      this.settings.$current_tip.hide();
 | 
			
		||||
      this.settings.postStepCallback(this.settings.$li.index(),
 | 
			
		||||
        this.settings.$current_tip);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    set_li : function (init) {
 | 
			
		||||
      if (init) {
 | 
			
		||||
        this.settings.$li = this.settings.$tip_content.eq(this.settings.startOffset);
 | 
			
		||||
        this.set_next_tip();
 | 
			
		||||
        this.settings.$current_tip = this.settings.$next_tip;
 | 
			
		||||
      } else {
 | 
			
		||||
        this.settings.$li = this.settings.$li.next();
 | 
			
		||||
        this.set_next_tip();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.set_target();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    set_next_tip : function () {
 | 
			
		||||
      this.settings.$next_tip = $(".joyride-tip-guide[data-index='" + this.settings.$li.index() + "']");
 | 
			
		||||
      this.settings.$next_tip.data('closed', '');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    set_target : function () {
 | 
			
		||||
      var cl = this.settings.$li.attr('data-class'),
 | 
			
		||||
          id = this.settings.$li.attr('data-id'),
 | 
			
		||||
          $sel = function () {
 | 
			
		||||
            if (id) {
 | 
			
		||||
              return $(document.getElementById(id));
 | 
			
		||||
            } else if (cl) {
 | 
			
		||||
              return $('.' + cl).first();
 | 
			
		||||
            } else {
 | 
			
		||||
              return $('body');
 | 
			
		||||
            }
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
      this.settings.$target = $sel();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    scroll_to : function () {
 | 
			
		||||
      var window_half, tipOffset;
 | 
			
		||||
 | 
			
		||||
      window_half = $(window).height() / 2;
 | 
			
		||||
      tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.outerHeight(this.settings.$next_tip));
 | 
			
		||||
      if (tipOffset > 0) {
 | 
			
		||||
        this.scrollTo($('html, body'), tipOffset, this.settings.scrollSpeed);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    paused : function () {
 | 
			
		||||
      return ($.inArray((this.settings.$li.index() + 1), this.settings.pauseAfter) === -1);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    restart : function () {
 | 
			
		||||
      this.hide();
 | 
			
		||||
      this.settings.$li = undefined;
 | 
			
		||||
      this.show('init');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    pos_default : function (init, resizing) {
 | 
			
		||||
      var half_fold = Math.ceil($(window).height() / 2),
 | 
			
		||||
          tip_position = this.settings.$next_tip.offset(),
 | 
			
		||||
          $nub = this.settings.$next_tip.find('.joyride-nub'),
 | 
			
		||||
          nub_width = Math.ceil(this.outerWidth($nub) / 2),
 | 
			
		||||
          nub_height = Math.ceil(this.outerHeight($nub) / 2),
 | 
			
		||||
          toggle = init || false;
 | 
			
		||||
 | 
			
		||||
      // tip must not be "display: none" to calculate position
 | 
			
		||||
      if (toggle) {
 | 
			
		||||
        this.settings.$next_tip.css('visibility', 'hidden');
 | 
			
		||||
        this.settings.$next_tip.show();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof resizing === 'undefined') {
 | 
			
		||||
        resizing = false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!/body/i.test(this.settings.$target.selector)) {
 | 
			
		||||
 | 
			
		||||
          if (this.bottom()) {
 | 
			
		||||
            var leftOffset = this.settings.$target.offset().left;
 | 
			
		||||
            if (Foundation.rtl) {
 | 
			
		||||
              leftOffset = this.settings.$target.offset().width - this.settings.$next_tip.width() + leftOffset;
 | 
			
		||||
            }
 | 
			
		||||
            this.settings.$next_tip.css({
 | 
			
		||||
              top: (this.settings.$target.offset().top + nub_height + this.outerHeight(this.settings.$target)),
 | 
			
		||||
              left: leftOffset});
 | 
			
		||||
 | 
			
		||||
            this.nub_position($nub, this.settings.tipSettings.nubPosition, 'top');
 | 
			
		||||
 | 
			
		||||
          } else if (this.top()) {
 | 
			
		||||
            var leftOffset = this.settings.$target.offset().left;
 | 
			
		||||
            if (Foundation.rtl) {
 | 
			
		||||
              leftOffset = this.settings.$target.offset().width - this.settings.$next_tip.width() + leftOffset;
 | 
			
		||||
            }
 | 
			
		||||
            this.settings.$next_tip.css({
 | 
			
		||||
              top: (this.settings.$target.offset().top - this.outerHeight(this.settings.$next_tip) - nub_height),
 | 
			
		||||
              left: leftOffset});
 | 
			
		||||
 | 
			
		||||
            this.nub_position($nub, this.settings.tipSettings.nubPosition, 'bottom');
 | 
			
		||||
 | 
			
		||||
          } else if (this.right()) {
 | 
			
		||||
 | 
			
		||||
            this.settings.$next_tip.css({
 | 
			
		||||
              top: this.settings.$target.offset().top,
 | 
			
		||||
              left: (this.outerWidth(this.settings.$target) + this.settings.$target.offset().left + nub_width)});
 | 
			
		||||
 | 
			
		||||
            this.nub_position($nub, this.settings.tipSettings.nubPosition, 'left');
 | 
			
		||||
 | 
			
		||||
          } else if (this.left()) {
 | 
			
		||||
 | 
			
		||||
            this.settings.$next_tip.css({
 | 
			
		||||
              top: this.settings.$target.offset().top,
 | 
			
		||||
              left: (this.settings.$target.offset().left - this.outerWidth(this.settings.$next_tip) - nub_width)});
 | 
			
		||||
 | 
			
		||||
            this.nub_position($nub, this.settings.tipSettings.nubPosition, 'right');
 | 
			
		||||
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tipSettings.tipLocationPattern.length) {
 | 
			
		||||
 | 
			
		||||
            $nub.removeClass('bottom')
 | 
			
		||||
              .removeClass('top')
 | 
			
		||||
              .removeClass('right')
 | 
			
		||||
              .removeClass('left');
 | 
			
		||||
 | 
			
		||||
            this.settings.tipSettings.tipLocation = this.settings.tipSettings.tipLocationPattern[this.settings.attempts];
 | 
			
		||||
 | 
			
		||||
            this.settings.attempts++;
 | 
			
		||||
 | 
			
		||||
            this.pos_default();
 | 
			
		||||
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
      } else if (this.settings.$li.length) {
 | 
			
		||||
 | 
			
		||||
        this.pos_modal($nub);
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (toggle) {
 | 
			
		||||
        this.settings.$next_tip.hide();
 | 
			
		||||
        this.settings.$next_tip.css('visibility', 'visible');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    pos_phone : function (init) {
 | 
			
		||||
      var tip_height = this.outerHeight(this.settings.$next_tip),
 | 
			
		||||
          tip_offset = this.settings.$next_tip.offset(),
 | 
			
		||||
          target_height = this.outerHeight(this.settings.$target),
 | 
			
		||||
          $nub = $('.joyride-nub', this.settings.$next_tip),
 | 
			
		||||
          nub_height = Math.ceil(this.outerHeight($nub) / 2),
 | 
			
		||||
          toggle = init || false;
 | 
			
		||||
 | 
			
		||||
      $nub.removeClass('bottom')
 | 
			
		||||
        .removeClass('top')
 | 
			
		||||
        .removeClass('right')
 | 
			
		||||
        .removeClass('left');
 | 
			
		||||
 | 
			
		||||
      if (toggle) {
 | 
			
		||||
        this.settings.$next_tip.css('visibility', 'hidden');
 | 
			
		||||
        this.settings.$next_tip.show();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!/body/i.test(this.settings.$target.selector)) {
 | 
			
		||||
 | 
			
		||||
        if (this.top()) {
 | 
			
		||||
 | 
			
		||||
            this.settings.$next_tip.offset({top: this.settings.$target.offset().top - tip_height - nub_height});
 | 
			
		||||
            $nub.addClass('bottom');
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
 | 
			
		||||
          this.settings.$next_tip.offset({top: this.settings.$target.offset().top + target_height + nub_height});
 | 
			
		||||
          $nub.addClass('top');
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      } else if (this.settings.$li.length) {
 | 
			
		||||
        this.pos_modal($nub);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (toggle) {
 | 
			
		||||
        this.settings.$next_tip.hide();
 | 
			
		||||
        this.settings.$next_tip.css('visibility', 'visible');
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    pos_modal : function ($nub) {
 | 
			
		||||
      this.center();
 | 
			
		||||
      $nub.hide();
 | 
			
		||||
 | 
			
		||||
      this.show_modal();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    show_modal : function () {
 | 
			
		||||
      if (!this.settings.$next_tip.data('closed')) {
 | 
			
		||||
        var joyridemodalbg =  $('.joyride-modal-bg');
 | 
			
		||||
        if (joyridemodalbg.length < 1) {
 | 
			
		||||
          $('body').append(this.settings.template.modal).show();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (/pop/i.test(this.settings.tipAnimation)) {
 | 
			
		||||
            joyridemodalbg.show();
 | 
			
		||||
        } else {
 | 
			
		||||
            joyridemodalbg.fadeIn(this.settings.tipAnimationFadeSpeed);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    expose : function () {
 | 
			
		||||
      var expose,
 | 
			
		||||
          exposeCover,
 | 
			
		||||
          el,
 | 
			
		||||
          origCSS,
 | 
			
		||||
          origClasses,
 | 
			
		||||
          randId = 'expose-'+Math.floor(Math.random()*10000);
 | 
			
		||||
 | 
			
		||||
      if (arguments.length > 0 && arguments[0] instanceof $) {
 | 
			
		||||
        el = arguments[0];
 | 
			
		||||
      } else if(this.settings.$target && !/body/i.test(this.settings.$target.selector)){
 | 
			
		||||
        el = this.settings.$target;
 | 
			
		||||
      }  else {
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if(el.length < 1){
 | 
			
		||||
        if(window.console){
 | 
			
		||||
          console.error('element not valid', el);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      expose = $(this.settings.template.expose);
 | 
			
		||||
      this.settings.$body.append(expose);
 | 
			
		||||
      expose.css({
 | 
			
		||||
        top: el.offset().top,
 | 
			
		||||
        left: el.offset().left,
 | 
			
		||||
        width: this.outerWidth(el, true),
 | 
			
		||||
        height: this.outerHeight(el, true)
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      exposeCover = $(this.settings.template.exposeCover);
 | 
			
		||||
 | 
			
		||||
      origCSS = {
 | 
			
		||||
        zIndex: el.css('z-index'),
 | 
			
		||||
        position: el.css('position')
 | 
			
		||||
      };
 | 
			
		||||
      
 | 
			
		||||
      origClasses = el.attr('class') == null ? '' : el.attr('class');
 | 
			
		||||
 | 
			
		||||
      el.css('z-index',parseInt(expose.css('z-index'))+1);
 | 
			
		||||
 | 
			
		||||
      if (origCSS.position == 'static') {
 | 
			
		||||
        el.css('position','relative');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      el.data('expose-css',origCSS);
 | 
			
		||||
      el.data('orig-class', origClasses);
 | 
			
		||||
      el.attr('class', origClasses + ' ' + this.settings.exposeAddClass);
 | 
			
		||||
 | 
			
		||||
      exposeCover.css({
 | 
			
		||||
        top: el.offset().top,
 | 
			
		||||
        left: el.offset().left,
 | 
			
		||||
        width: this.outerWidth(el, true),
 | 
			
		||||
        height: this.outerHeight(el, true)
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      this.settings.$body.append(exposeCover);
 | 
			
		||||
      expose.addClass(randId);
 | 
			
		||||
      exposeCover.addClass(randId);
 | 
			
		||||
      el.data('expose', randId);
 | 
			
		||||
      this.settings.postExposeCallback(this.settings.$li.index(), this.settings.$next_tip, el);
 | 
			
		||||
      this.add_exposed(el);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    un_expose : function () {
 | 
			
		||||
      var exposeId,
 | 
			
		||||
          el,
 | 
			
		||||
          expose ,
 | 
			
		||||
          origCSS,
 | 
			
		||||
          origClasses,
 | 
			
		||||
          clearAll = false;
 | 
			
		||||
 | 
			
		||||
      if (arguments.length > 0 && arguments[0] instanceof $) {
 | 
			
		||||
        el = arguments[0];
 | 
			
		||||
      } else if(this.settings.$target && !/body/i.test(this.settings.$target.selector)){
 | 
			
		||||
        el = this.settings.$target;
 | 
			
		||||
      }  else {
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if(el.length < 1){
 | 
			
		||||
        if (window.console) {
 | 
			
		||||
          console.error('element not valid', el);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      exposeId = el.data('expose');
 | 
			
		||||
      expose = $('.' + exposeId);
 | 
			
		||||
 | 
			
		||||
      if (arguments.length > 1) {
 | 
			
		||||
        clearAll = arguments[1];
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (clearAll === true) {
 | 
			
		||||
        $('.joyride-expose-wrapper,.joyride-expose-cover').remove();
 | 
			
		||||
      } else {
 | 
			
		||||
        expose.remove();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      origCSS = el.data('expose-css');
 | 
			
		||||
 | 
			
		||||
      if (origCSS.zIndex == 'auto') {
 | 
			
		||||
        el.css('z-index', '');
 | 
			
		||||
      } else {
 | 
			
		||||
        el.css('z-index', origCSS.zIndex);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (origCSS.position != el.css('position')) {
 | 
			
		||||
        if(origCSS.position == 'static') {// this is default, no need to set it.
 | 
			
		||||
          el.css('position', '');
 | 
			
		||||
        } else {
 | 
			
		||||
          el.css('position', origCSS.position);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      origClasses = el.data('orig-class');
 | 
			
		||||
      el.attr('class', origClasses);
 | 
			
		||||
      el.removeData('orig-classes');
 | 
			
		||||
 | 
			
		||||
      el.removeData('expose');
 | 
			
		||||
      el.removeData('expose-z-index');
 | 
			
		||||
      this.remove_exposed(el);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    add_exposed: function(el){
 | 
			
		||||
      this.settings.exposed = this.settings.exposed || [];
 | 
			
		||||
      if (el instanceof $ || typeof el === 'object') {
 | 
			
		||||
        this.settings.exposed.push(el[0]);
 | 
			
		||||
      } else if (typeof el == 'string') {
 | 
			
		||||
        this.settings.exposed.push(el);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    remove_exposed: function(el){
 | 
			
		||||
      var search, count;
 | 
			
		||||
      if (el instanceof $) {
 | 
			
		||||
        search = el[0]
 | 
			
		||||
      } else if (typeof el == 'string'){
 | 
			
		||||
        search = el;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.settings.exposed = this.settings.exposed || [];
 | 
			
		||||
      count = this.settings.exposed.length;
 | 
			
		||||
 | 
			
		||||
      for (var i=0; i < count; i++) {
 | 
			
		||||
        if (this.settings.exposed[i] == search) {
 | 
			
		||||
          this.settings.exposed.splice(i, 1);
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    center : function () {
 | 
			
		||||
      var $w = $(window);
 | 
			
		||||
 | 
			
		||||
      this.settings.$next_tip.css({
 | 
			
		||||
        top : ((($w.height() - this.outerHeight(this.settings.$next_tip)) / 2) + $w.scrollTop()),
 | 
			
		||||
        left : ((($w.width() - this.outerWidth(this.settings.$next_tip)) / 2) + this.scrollLeft($w))
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      return true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    bottom : function () {
 | 
			
		||||
      return /bottom/i.test(this.settings.tipSettings.tipLocation);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    top : function () {
 | 
			
		||||
      return /top/i.test(this.settings.tipSettings.tipLocation);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    right : function () {
 | 
			
		||||
      return /right/i.test(this.settings.tipSettings.tipLocation);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    left : function () {
 | 
			
		||||
      return /left/i.test(this.settings.tipSettings.tipLocation);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    corners : function (el) {
 | 
			
		||||
      var w = $(window),
 | 
			
		||||
          window_half = w.height() / 2,
 | 
			
		||||
          //using this to calculate since scroll may not have finished yet.
 | 
			
		||||
          tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
 | 
			
		||||
          right = w.width() + this.scrollLeft(w),
 | 
			
		||||
          offsetBottom =  w.height() + tipOffset,
 | 
			
		||||
          bottom = w.height() + w.scrollTop(),
 | 
			
		||||
          top = w.scrollTop();
 | 
			
		||||
 | 
			
		||||
      if (tipOffset < top) {
 | 
			
		||||
        if (tipOffset < 0) {
 | 
			
		||||
          top = 0;
 | 
			
		||||
        } else {
 | 
			
		||||
          top = tipOffset;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (offsetBottom > bottom) {
 | 
			
		||||
        bottom = offsetBottom;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return [
 | 
			
		||||
        el.offset().top < top,
 | 
			
		||||
        right < el.offset().left + el.outerWidth(),
 | 
			
		||||
        bottom < el.offset().top + el.outerHeight(),
 | 
			
		||||
        this.scrollLeft(w) > el.offset().left
 | 
			
		||||
      ];
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    visible : function (hidden_corners) {
 | 
			
		||||
      var i = hidden_corners.length;
 | 
			
		||||
 | 
			
		||||
      while (i--) {
 | 
			
		||||
        if (hidden_corners[i]) return false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    nub_position : function (nub, pos, def) {
 | 
			
		||||
      if (pos === 'auto') {
 | 
			
		||||
        nub.addClass(def);
 | 
			
		||||
      } else {
 | 
			
		||||
        nub.addClass(pos);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    startTimer : function () {
 | 
			
		||||
      if (this.settings.$li.length) {
 | 
			
		||||
        this.settings.automate = setTimeout(function () {
 | 
			
		||||
          this.hide();
 | 
			
		||||
          this.show();
 | 
			
		||||
          this.startTimer();
 | 
			
		||||
        }.bind(this), this.settings.timer);
 | 
			
		||||
      } else {
 | 
			
		||||
        clearTimeout(this.settings.automate);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    end : function () {
 | 
			
		||||
      if (this.settings.cookieMonster) {
 | 
			
		||||
        $.cookie(this.settings.cookieName, 'ridden', { expires: this.settings.cookieExpires, domain: this.settings.cookieDomain });
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.settings.timer > 0) {
 | 
			
		||||
        clearTimeout(this.settings.automate);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.settings.modal && this.settings.expose) {
 | 
			
		||||
        this.un_expose();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.settings.$next_tip.data('closed', true);
 | 
			
		||||
 | 
			
		||||
      $('.joyride-modal-bg').hide();
 | 
			
		||||
      this.settings.$current_tip.hide();
 | 
			
		||||
      this.settings.postStepCallback(this.settings.$li.index(), this.settings.$current_tip);
 | 
			
		||||
      this.settings.postRideCallback(this.settings.$li.index(), this.settings.$current_tip);
 | 
			
		||||
      $('.joyride-tip-guide').remove();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    outerHTML : function (el) {
 | 
			
		||||
      // support FireFox < 11
 | 
			
		||||
      return el.outerHTML || new XMLSerializer().serializeToString(el);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.joyride');
 | 
			
		||||
      $(window).off('.joyride');
 | 
			
		||||
      $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
 | 
			
		||||
      $('.joyride-tip-guide, .joyride-modal-bg').remove();
 | 
			
		||||
      clearTimeout(this.settings.automate);
 | 
			
		||||
      this.settings = {};
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										447
									
								
								js/foundation/foundation.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										447
									
								
								js/foundation/foundation.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,447 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Foundation Responsive Library
 | 
			
		||||
 * http://foundation.zurb.com
 | 
			
		||||
 * Copyright 2013, ZURB
 | 
			
		||||
 * Free to use under the MIT license.
 | 
			
		||||
 * http://www.opensource.org/licenses/mit-license.php
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
// Accommodate running jQuery or Zepto in noConflict() mode by
 | 
			
		||||
// using an anonymous function to redefine the $ shorthand name.
 | 
			
		||||
// See http://docs.jquery.com/Using_jQuery_with_Other_Libraries
 | 
			
		||||
// and http://zeptojs.com/
 | 
			
		||||
var libFuncName = null;
 | 
			
		||||
 | 
			
		||||
if (typeof jQuery === "undefined" &&
 | 
			
		||||
    typeof Zepto === "undefined" &&
 | 
			
		||||
    typeof $ === "function") {
 | 
			
		||||
  libFuncName = $;
 | 
			
		||||
} else if (typeof jQuery === "function") {
 | 
			
		||||
  libFuncName = jQuery;
 | 
			
		||||
} else if (typeof Zepto === "function") {
 | 
			
		||||
  libFuncName = Zepto;
 | 
			
		||||
} else {
 | 
			
		||||
  throw new TypeError();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
    matchMedia() polyfill - Test a CSS media 
 | 
			
		||||
    type/query in JS. Authors & copyright (c) 2012: 
 | 
			
		||||
    Scott Jehl, Paul Irish, Nicholas Zakas. 
 | 
			
		||||
    Dual MIT/BSD license
 | 
			
		||||
 | 
			
		||||
    https://github.com/paulirish/matchMedia.js
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
  window.matchMedia = window.matchMedia || (function( doc, undefined ) {
 | 
			
		||||
 | 
			
		||||
    "use strict";
 | 
			
		||||
 | 
			
		||||
    var bool,
 | 
			
		||||
        docElem = doc.documentElement,
 | 
			
		||||
        refNode = docElem.firstElementChild || docElem.firstChild,
 | 
			
		||||
        // fakeBody required for <FF4 when executed in <head>
 | 
			
		||||
        fakeBody = doc.createElement( "body" ),
 | 
			
		||||
        div = doc.createElement( "div" );
 | 
			
		||||
 | 
			
		||||
    div.id = "mq-test-1";
 | 
			
		||||
    div.style.cssText = "position:absolute;top:-100em";
 | 
			
		||||
    fakeBody.style.background = "none";
 | 
			
		||||
    fakeBody.appendChild(div);
 | 
			
		||||
 | 
			
		||||
    return function(q){
 | 
			
		||||
 | 
			
		||||
      div.innerHTML = "­<style media=\"" + q + "\"> #mq-test-1 { width: 42px; }</style>";
 | 
			
		||||
 | 
			
		||||
      docElem.insertBefore( fakeBody, refNode );
 | 
			
		||||
      bool = div.offsetWidth === 42;
 | 
			
		||||
      docElem.removeChild( fakeBody );
 | 
			
		||||
 | 
			
		||||
      return {
 | 
			
		||||
        matches: bool,
 | 
			
		||||
        media: q
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  }( document ));
 | 
			
		||||
 | 
			
		||||
  // add dusty browser stuff
 | 
			
		||||
  if (!Array.prototype.filter) {
 | 
			
		||||
    Array.prototype.filter = function(fun /*, thisp */) {
 | 
			
		||||
      "use strict";
 | 
			
		||||
   
 | 
			
		||||
      if (this == null) {
 | 
			
		||||
        throw new TypeError();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      var t = Object(this),
 | 
			
		||||
          len = t.length >>> 0;
 | 
			
		||||
      if (typeof fun !== "function") {
 | 
			
		||||
          return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      var res = [],
 | 
			
		||||
          thisp = arguments[1];
 | 
			
		||||
      for (var i = 0; i < len; i++) {
 | 
			
		||||
        if (i in t) {
 | 
			
		||||
          var val = t[i]; // in case fun mutates this
 | 
			
		||||
          if (fun && fun.call(thisp, val, i, t)) {
 | 
			
		||||
            res.push(val);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return res;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!Function.prototype.bind) {
 | 
			
		||||
    Function.prototype.bind = function (oThis) {
 | 
			
		||||
      if (typeof this !== "function") {
 | 
			
		||||
        // closest thing possible to the ECMAScript 5 internal IsCallable function
 | 
			
		||||
        throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
 | 
			
		||||
      }
 | 
			
		||||
   
 | 
			
		||||
      var aArgs = Array.prototype.slice.call(arguments, 1), 
 | 
			
		||||
          fToBind = this, 
 | 
			
		||||
          fNOP = function () {},
 | 
			
		||||
          fBound = function () {
 | 
			
		||||
            return fToBind.apply(this instanceof fNOP && oThis
 | 
			
		||||
               ? this
 | 
			
		||||
               : oThis,
 | 
			
		||||
             aArgs.concat(Array.prototype.slice.call(arguments)));
 | 
			
		||||
          };
 | 
			
		||||
   
 | 
			
		||||
      fNOP.prototype = this.prototype;
 | 
			
		||||
      fBound.prototype = new fNOP();
 | 
			
		||||
   
 | 
			
		||||
      return fBound;
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!Array.prototype.indexOf) {
 | 
			
		||||
    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
 | 
			
		||||
      "use strict";
 | 
			
		||||
      if (this == null) {
 | 
			
		||||
        throw new TypeError();
 | 
			
		||||
      }
 | 
			
		||||
      var t = Object(this);
 | 
			
		||||
      var len = t.length >>> 0;
 | 
			
		||||
      if (len === 0) {
 | 
			
		||||
        return -1;
 | 
			
		||||
      }
 | 
			
		||||
      var n = 0;
 | 
			
		||||
      if (arguments.length > 1) {
 | 
			
		||||
        n = Number(arguments[1]);
 | 
			
		||||
        if (n != n) { // shortcut for verifying if it's NaN
 | 
			
		||||
          n = 0;
 | 
			
		||||
        } else if (n != 0 && n != Infinity && n != -Infinity) {
 | 
			
		||||
          n = (n > 0 || -1) * Math.floor(Math.abs(n));
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      if (n >= len) {
 | 
			
		||||
          return -1;
 | 
			
		||||
      }
 | 
			
		||||
      var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
 | 
			
		||||
      for (; k < len; k++) {
 | 
			
		||||
        if (k in t && t[k] === searchElement) {
 | 
			
		||||
          return k;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return -1;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // fake stop() for zepto.
 | 
			
		||||
  $.fn.stop = $.fn.stop || function() {
 | 
			
		||||
    return this;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  window.Foundation = {
 | 
			
		||||
    name : 'Foundation',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    cache : {},
 | 
			
		||||
 | 
			
		||||
    init : function (scope, libraries, method, options, response, /* internal */ nc) {
 | 
			
		||||
      var library_arr,
 | 
			
		||||
          args = [scope, method, options, response],
 | 
			
		||||
          responses = [],
 | 
			
		||||
          nc = nc || false;
 | 
			
		||||
 | 
			
		||||
      // disable library error catching,
 | 
			
		||||
      // used for development only
 | 
			
		||||
      if (nc) this.nc = nc;
 | 
			
		||||
 | 
			
		||||
      // check RTL
 | 
			
		||||
      this.rtl = /rtl/i.test($('html').attr('dir'));
 | 
			
		||||
 | 
			
		||||
      // set foundation global scope
 | 
			
		||||
      this.scope = scope || this.scope;
 | 
			
		||||
 | 
			
		||||
      if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
 | 
			
		||||
        if (/off/i.test(libraries)) return this.off();
 | 
			
		||||
 | 
			
		||||
        library_arr = libraries.split(' ');
 | 
			
		||||
 | 
			
		||||
        if (library_arr.length > 0) {
 | 
			
		||||
          for (var i = library_arr.length - 1; i >= 0; i--) {
 | 
			
		||||
            responses.push(this.init_lib(library_arr[i], args));
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        if (/reflow/i.test(libraries)) args[1] = 'reflow';
 | 
			
		||||
 | 
			
		||||
        for (var lib in this.libs) {
 | 
			
		||||
          responses.push(this.init_lib(lib, args));
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // if first argument is callback, add to args
 | 
			
		||||
      if (typeof libraries === 'function') {
 | 
			
		||||
        args.unshift(libraries);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return this.response_obj(responses, args);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    response_obj : function (response_arr, args) {
 | 
			
		||||
      for (var i = 0, len = args.length; i < len; i++) {
 | 
			
		||||
        if (typeof args[i] === 'function') {
 | 
			
		||||
          return args[i]({
 | 
			
		||||
            errors: response_arr.filter(function (s) {
 | 
			
		||||
              if (typeof s === 'string') return s;
 | 
			
		||||
            })
 | 
			
		||||
          });
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return response_arr;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init_lib : function (lib, args) {
 | 
			
		||||
      return this.trap(function () {
 | 
			
		||||
        if (this.libs.hasOwnProperty(lib)) {
 | 
			
		||||
          this.patch(this.libs[lib]);
 | 
			
		||||
          return this.libs[lib].init.apply(this.libs[lib], args);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
          return function () {};
 | 
			
		||||
        }
 | 
			
		||||
      }.bind(this), lib);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    trap : function (fun, lib) {
 | 
			
		||||
      if (!this.nc) {
 | 
			
		||||
        try {
 | 
			
		||||
          return fun();
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
          return this.error({name: lib, message: 'could not be initialized', more: e.name + ' ' + e.message});
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return fun();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    patch : function (lib) {
 | 
			
		||||
      this.fix_outer(lib);
 | 
			
		||||
      lib.scope = this.scope;
 | 
			
		||||
      lib.rtl = this.rtl;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    inherit : function (scope, methods) {
 | 
			
		||||
      var methods_arr = methods.split(' ');
 | 
			
		||||
 | 
			
		||||
      for (var i = methods_arr.length - 1; i >= 0; i--) {
 | 
			
		||||
        if (this.lib_methods.hasOwnProperty(methods_arr[i])) {
 | 
			
		||||
          this.libs[scope.name][methods_arr[i]] = this.lib_methods[methods_arr[i]];
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    random_str : function (length) {
 | 
			
		||||
      var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
 | 
			
		||||
 | 
			
		||||
      if (!length) {
 | 
			
		||||
        length = Math.floor(Math.random() * chars.length);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      var str = '';
 | 
			
		||||
      for (var i = 0; i < length; i++) {
 | 
			
		||||
        str += chars[Math.floor(Math.random() * chars.length)];
 | 
			
		||||
      }
 | 
			
		||||
      return str;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    libs : {},
 | 
			
		||||
 | 
			
		||||
    // methods that can be inherited in libraries
 | 
			
		||||
    lib_methods : {
 | 
			
		||||
      set_data : function (node, data) {
 | 
			
		||||
        // this.name references the name of the library calling this method
 | 
			
		||||
        var id = [this.name,+new Date(),Foundation.random_str(5)].join('-');
 | 
			
		||||
 | 
			
		||||
        Foundation.cache[id] = data;
 | 
			
		||||
        node.attr('data-' + this.name + '-id', id);
 | 
			
		||||
        return data;
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      get_data : function (node) {
 | 
			
		||||
        return Foundation.cache[node.attr('data-' + this.name + '-id')];
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      remove_data : function (node) {
 | 
			
		||||
        if (node) {
 | 
			
		||||
          delete Foundation.cache[node.attr('data-' + this.name + '-id')];
 | 
			
		||||
          node.attr('data-' + this.name + '-id', '');
 | 
			
		||||
        } else {
 | 
			
		||||
          $('[data-' + this.name + '-id]').each(function () {
 | 
			
		||||
            delete Foundation.cache[$(this).attr('data-' + this.name + '-id')];
 | 
			
		||||
            $(this).attr('data-' + this.name + '-id', '');
 | 
			
		||||
          });
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      throttle : function(fun, delay) {
 | 
			
		||||
        var timer = null;
 | 
			
		||||
        return function () {
 | 
			
		||||
          var context = this, args = arguments;
 | 
			
		||||
          clearTimeout(timer);
 | 
			
		||||
          timer = setTimeout(function () {
 | 
			
		||||
            fun.apply(context, args);
 | 
			
		||||
          }, delay);
 | 
			
		||||
        };
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      // parses data-options attribute on nodes and turns
 | 
			
		||||
      // them into an object
 | 
			
		||||
      data_options : function (el) {
 | 
			
		||||
        var opts = {}, ii, p,
 | 
			
		||||
            opts_arr = (el.attr('data-options') || ':').split(';'),
 | 
			
		||||
            opts_len = opts_arr.length;
 | 
			
		||||
 | 
			
		||||
        function isNumber (o) {
 | 
			
		||||
          return ! isNaN (o-0) && o !== null && o !== "" && o !== false && o !== true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function trim(str) {
 | 
			
		||||
          if (typeof str === 'string') return $.trim(str);
 | 
			
		||||
          return str;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // parse options
 | 
			
		||||
        for (ii = opts_len - 1; ii >= 0; ii--) {
 | 
			
		||||
          p = opts_arr[ii].split(':');
 | 
			
		||||
 | 
			
		||||
          if (/true/i.test(p[1])) p[1] = true;
 | 
			
		||||
          if (/false/i.test(p[1])) p[1] = false;
 | 
			
		||||
          if (isNumber(p[1])) p[1] = parseInt(p[1], 10);
 | 
			
		||||
 | 
			
		||||
          if (p.length === 2 && p[0].length > 0) {
 | 
			
		||||
            opts[trim(p[0])] = trim(p[1]);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return opts;
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      delay : function (fun, delay) {
 | 
			
		||||
        return setTimeout(fun, delay);
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      // animated scrolling
 | 
			
		||||
      scrollTo : function (el, to, duration) {
 | 
			
		||||
        if (duration < 0) return;
 | 
			
		||||
        var difference = to - $(window).scrollTop();
 | 
			
		||||
        var perTick = difference / duration * 10;
 | 
			
		||||
 | 
			
		||||
        this.scrollToTimerCache = setTimeout(function() {
 | 
			
		||||
          if (!isNaN(parseInt(perTick, 10))) {
 | 
			
		||||
            window.scrollTo(0, $(window).scrollTop() + perTick);
 | 
			
		||||
            this.scrollTo(el, to, duration - 10);
 | 
			
		||||
          }
 | 
			
		||||
        }.bind(this), 10);
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      // not supported in core Zepto
 | 
			
		||||
      scrollLeft : function (el) {
 | 
			
		||||
        if (!el.length) return;
 | 
			
		||||
        return ('scrollLeft' in el[0]) ? el[0].scrollLeft : el[0].pageXOffset;
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      // test for empty object or array
 | 
			
		||||
      empty : function (obj) {
 | 
			
		||||
        if (obj.length && obj.length > 0)    return false;
 | 
			
		||||
        if (obj.length && obj.length === 0)  return true;
 | 
			
		||||
 | 
			
		||||
        for (var key in obj) {
 | 
			
		||||
          if (hasOwnProperty.call(obj, key))    return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    fix_outer : function (lib) {
 | 
			
		||||
      lib.outerHeight = function (el, bool) {
 | 
			
		||||
        if (typeof Zepto === 'function') {
 | 
			
		||||
          return el.height();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (typeof bool !== 'undefined') {
 | 
			
		||||
          return el.outerHeight(bool);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return el.outerHeight();
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      lib.outerWidth = function (el) {
 | 
			
		||||
        if (typeof Zepto === 'function') {
 | 
			
		||||
          return el.width();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (typeof bool !== 'undefined') {
 | 
			
		||||
          return el.outerWidth(bool);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return el.outerWidth();
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    error : function (error) {
 | 
			
		||||
      return error.name + ' ' + error.message + '; ' + error.more;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // remove all foundation events.
 | 
			
		||||
    off: function () {
 | 
			
		||||
      $(this.scope).off('.fndtn');
 | 
			
		||||
      $(window).off('.fndtn');
 | 
			
		||||
      return true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    zj : function () {
 | 
			
		||||
      if (typeof Zepto !== 'undefined') {
 | 
			
		||||
        return Zepto;
 | 
			
		||||
      } else {
 | 
			
		||||
        return jQuery;
 | 
			
		||||
      }
 | 
			
		||||
    }()
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  $.fn.foundation = function () {
 | 
			
		||||
    var args = Array.prototype.slice.call(arguments, 0);
 | 
			
		||||
 | 
			
		||||
    return this.each(function () {
 | 
			
		||||
      Foundation.init.apply(Foundation, [this].concat(args));
 | 
			
		||||
      return this;
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}(libFuncName, this, this.document));
 | 
			
		||||
							
								
								
									
										134
									
								
								js/foundation/foundation.magellan.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								js/foundation/foundation.magellan.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,134 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.magellan = {
 | 
			
		||||
    name : 'magellan',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      activeClass: 'active'
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      this.scope = scope || this.scope;
 | 
			
		||||
      Foundation.inherit(this, 'data_options');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        if (!this.settings.init) {
 | 
			
		||||
          this.fixed_magellan = $("[data-magellan-expedition]");
 | 
			
		||||
          this.set_threshold();
 | 
			
		||||
          this.last_destination = $('[data-magellan-destination]').last();
 | 
			
		||||
          this.events();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      $(this.scope).on('arrival.fndtn.magellan', '[data-magellan-arrival]', function (e) {
 | 
			
		||||
        var $destination = $(this),
 | 
			
		||||
            $expedition = $destination.closest('[data-magellan-expedition]'),
 | 
			
		||||
            activeClass = $expedition.attr('data-magellan-active-class') 
 | 
			
		||||
              || self.settings.activeClass;
 | 
			
		||||
 | 
			
		||||
          $destination
 | 
			
		||||
            .closest('[data-magellan-expedition]')
 | 
			
		||||
            .find('[data-magellan-arrival]')
 | 
			
		||||
            .not($destination)
 | 
			
		||||
            .removeClass(activeClass);
 | 
			
		||||
          $destination.addClass(activeClass);
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      this.fixed_magellan
 | 
			
		||||
        .on('update-position.fndtn.magellan', function(){
 | 
			
		||||
          var $el = $(this);
 | 
			
		||||
          // $el.data("magellan-fixed-position","");
 | 
			
		||||
          // $el.data("magellan-top-offset", "");
 | 
			
		||||
        })
 | 
			
		||||
        .trigger('update-position');
 | 
			
		||||
 | 
			
		||||
      $(window)
 | 
			
		||||
        .on('resize.fndtn.magellan', function() {
 | 
			
		||||
          this.fixed_magellan.trigger('update-position');
 | 
			
		||||
        }.bind(this))
 | 
			
		||||
 | 
			
		||||
        .on('scroll.fndtn.magellan', function() {
 | 
			
		||||
          var windowScrollTop = $(window).scrollTop();
 | 
			
		||||
          self.fixed_magellan.each(function() {
 | 
			
		||||
            var $expedition = $(this);
 | 
			
		||||
            if (typeof $expedition.data('magellan-top-offset') === 'undefined') {
 | 
			
		||||
              $expedition.data('magellan-top-offset', $expedition.offset().top);
 | 
			
		||||
            }
 | 
			
		||||
            if (typeof $expedition.data('magellan-fixed-position') === 'undefined') {
 | 
			
		||||
              $expedition.data('magellan-fixed-position', false)
 | 
			
		||||
            }
 | 
			
		||||
            var fixed_position = (windowScrollTop + self.settings.threshold) > $expedition.data("magellan-top-offset");
 | 
			
		||||
            var attr = $expedition.attr('data-magellan-top-offset');
 | 
			
		||||
 | 
			
		||||
            if ($expedition.data("magellan-fixed-position") != fixed_position) {
 | 
			
		||||
              $expedition.data("magellan-fixed-position", fixed_position);
 | 
			
		||||
              if (fixed_position) {
 | 
			
		||||
                $expedition.addClass('fixed');
 | 
			
		||||
                $expedition.css({position:"fixed", top:0});
 | 
			
		||||
              } else {
 | 
			
		||||
                $expedition.removeClass('fixed');
 | 
			
		||||
                $expedition.css({position:"", top:""});
 | 
			
		||||
              }
 | 
			
		||||
              if (fixed_position && typeof attr != 'undefined' && attr != false) {
 | 
			
		||||
                $expedition.css({position:"fixed", top:attr + "px"});
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      if (this.last_destination.length > 0) {
 | 
			
		||||
        $(window).on('scroll.fndtn.magellan', function (e) {
 | 
			
		||||
          var windowScrollTop = $(window).scrollTop(),
 | 
			
		||||
              scrolltopPlusHeight = windowScrollTop + $(window).height(),
 | 
			
		||||
              lastDestinationTop = Math.ceil(self.last_destination.offset().top);
 | 
			
		||||
 | 
			
		||||
          $('[data-magellan-destination]').each(function () {
 | 
			
		||||
            var $destination = $(this),
 | 
			
		||||
                destination_name = $destination.attr('data-magellan-destination'),
 | 
			
		||||
                topOffset = $destination.offset().top - windowScrollTop;
 | 
			
		||||
 | 
			
		||||
            if (topOffset <= self.settings.threshold) {
 | 
			
		||||
              $("[data-magellan-arrival='" + destination_name + "']").trigger('arrival');
 | 
			
		||||
            }
 | 
			
		||||
            // In large screens we may hit the bottom of the page and dont reach the top of the last magellan-destination, so lets force it
 | 
			
		||||
            if (scrolltopPlusHeight >= $(self.scope).height() && lastDestinationTop > windowScrollTop && lastDestinationTop < scrolltopPlusHeight) {
 | 
			
		||||
              $('[data-magellan-arrival]').last().trigger('arrival');
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.settings.init = true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    set_threshold : function () {
 | 
			
		||||
      if (!this.settings.threshold) {
 | 
			
		||||
        this.settings.threshold = (this.fixed_magellan.length > 0) ? 
 | 
			
		||||
          this.outerHeight(this.fixed_magellan, true) : 0;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.magellan');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										390
									
								
								js/foundation/foundation.orbit.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										390
									
								
								js/foundation/foundation.orbit.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,390 @@
 | 
			
		|||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs = Foundation.libs || {};
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.orbit = {
 | 
			
		||||
    name: 'orbit',
 | 
			
		||||
 | 
			
		||||
    version: '4.2.0',
 | 
			
		||||
 | 
			
		||||
    settings: {
 | 
			
		||||
      timer_speed: 10000,
 | 
			
		||||
      pause_on_hover: true,
 | 
			
		||||
      resume_on_mouseout: false,
 | 
			
		||||
      animation_speed: 500,
 | 
			
		||||
      bullets: true,
 | 
			
		||||
      stack_on_small: true,
 | 
			
		||||
      navigation_arrows: true,
 | 
			
		||||
      slide_number: true,
 | 
			
		||||
      container_class: 'orbit-container',
 | 
			
		||||
      stack_on_small_class: 'orbit-stack-on-small',
 | 
			
		||||
      next_class: 'orbit-next',
 | 
			
		||||
      prev_class: 'orbit-prev',
 | 
			
		||||
      timer_container_class: 'orbit-timer',
 | 
			
		||||
      timer_paused_class: 'paused',
 | 
			
		||||
      timer_progress_class: 'orbit-progress',
 | 
			
		||||
      slides_container_class: 'orbit-slides-container',
 | 
			
		||||
      bullets_container_class: 'orbit-bullets',
 | 
			
		||||
      bullets_active_class: 'active',
 | 
			
		||||
      slide_number_class: 'orbit-slide-number',
 | 
			
		||||
      caption_class: 'orbit-caption',
 | 
			
		||||
      active_slide_class: 'active',
 | 
			
		||||
      orbit_transition_class: 'orbit-transitioning'
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init: function (scope, method, options) {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      Foundation.inherit(self, 'data_options');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, self.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if ($(scope).is('[data-orbit]')) {
 | 
			
		||||
        var scoped_self = $.extend(true, {}, self);
 | 
			
		||||
        scoped_self._init(idx, el);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      $('[data-orbit]', scope).each(function(idx, el) {
 | 
			
		||||
        var scoped_self = $.extend(true, {}, self);
 | 
			
		||||
        scoped_self._init(idx, el);
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _container_html: function() {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      return '<div class="' + self.settings.container_class + '"></div>';
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _bullets_container_html: function($slides) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $list = $('<ol class="' + self.settings.bullets_container_class + '"></ol>');
 | 
			
		||||
      $slides.each(function(idx, slide) {
 | 
			
		||||
        var $item = $('<li data-orbit-slide-number="' + (idx+1) + '" class=""></li>');
 | 
			
		||||
        if (idx === 0) {
 | 
			
		||||
          $item.addClass(self.settings.bullets_active_class);
 | 
			
		||||
        }
 | 
			
		||||
        $list.append($item);
 | 
			
		||||
      });
 | 
			
		||||
      return $list;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _slide_number_html: function(slide_number, total_slides) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $container = $('<div class="' + self.settings.slide_number_class + '"></div>');
 | 
			
		||||
      $container.append('<span>' + slide_number + '</span> of <span>' + total_slides + '</span>');
 | 
			
		||||
      return $container;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _timer_html: function() {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      if (typeof self.settings.timer_speed === 'number' && self.settings.timer_speed > 0) {
 | 
			
		||||
        return '<div class="' + self.settings.timer_container_class
 | 
			
		||||
          + '"><span></span><div class="' + self.settings.timer_progress_class
 | 
			
		||||
          + '"></div></div>';
 | 
			
		||||
      } else {
 | 
			
		||||
        return '';
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _next_html: function() {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      return '<a href="#" class="' + self.settings.next_class + '">Next <span></span></a>';
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _prev_html: function() {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      return '<a href="#" class="' + self.settings.prev_class + '">Prev <span></span></a>';
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _init: function (idx, slider) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $slides_container = $(slider),
 | 
			
		||||
          $container = $slides_container.wrap(self._container_html()).parent(),
 | 
			
		||||
          $slides = $slides_container.children();
 | 
			
		||||
      
 | 
			
		||||
      $.extend(true, self.settings, self.data_options($slides_container));
 | 
			
		||||
 | 
			
		||||
      if (self.settings.navigation_arrows) {
 | 
			
		||||
          $container.append(self._prev_html());
 | 
			
		||||
          $container.append(self._next_html());
 | 
			
		||||
      }
 | 
			
		||||
      $slides_container.addClass(self.settings.slides_container_class);
 | 
			
		||||
      if (self.settings.stack_on_small) {
 | 
			
		||||
        $container.addClass(self.settings.stack_on_small_class);
 | 
			
		||||
      }
 | 
			
		||||
      if (self.settings.slide_number) {
 | 
			
		||||
        $container.append(self._slide_number_html(1, $slides.length));
 | 
			
		||||
      }
 | 
			
		||||
      $container.append(self._timer_html());
 | 
			
		||||
      if (self.settings.bullets) {
 | 
			
		||||
        $container.after(self._bullets_container_html($slides));
 | 
			
		||||
      }
 | 
			
		||||
      // To better support the "sliding" effect it's easier
 | 
			
		||||
      // if we just clone the first and last slides
 | 
			
		||||
      $slides_container.append($slides.first().clone().attr('data-orbit-slide',''));
 | 
			
		||||
      $slides_container.prepend($slides.last().clone().attr('data-orbit-slide',''));
 | 
			
		||||
      // Make the first "real" slide active
 | 
			
		||||
      $slides_container.css(Foundation.rtl ? 'marginRight' : 'marginLeft', '-100%');
 | 
			
		||||
      $slides.first().addClass(self.settings.active_slide_class);
 | 
			
		||||
 | 
			
		||||
      self._init_events($slides_container);
 | 
			
		||||
      self._init_dimensions($slides_container);
 | 
			
		||||
      self._start_timer($slides_container);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _init_events: function ($slides_container) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $container = $slides_container.parent();
 | 
			
		||||
 | 
			
		||||
      $(window)
 | 
			
		||||
        .on('load.fndtn.orbit', function() {
 | 
			
		||||
          $slides_container.height('');
 | 
			
		||||
          $slides_container.height($slides_container.height($container.height()));
 | 
			
		||||
          $slides_container.trigger('orbit:ready');
 | 
			
		||||
        })
 | 
			
		||||
        .on('resize.fndtn.orbit', function() {
 | 
			
		||||
          $slides_container.height('');
 | 
			
		||||
          $slides_container.height($slides_container.height($container.height()));
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      $(document).on('click.fndtn.orbit', '[data-orbit-link]', function(e) {
 | 
			
		||||
        e.preventDefault();
 | 
			
		||||
        var id = $(e.currentTarget).attr('data-orbit-link'),
 | 
			
		||||
            $slide = $slides_container.find('[data-orbit-slide=' + id + ']').first();
 | 
			
		||||
 | 
			
		||||
        if ($slide.length === 1) {
 | 
			
		||||
          self._reset_timer($slides_container, true);
 | 
			
		||||
          self._goto($slides_container, $slide.index(), function() {});
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      $container.siblings('.' + self.settings.bullets_container_class)
 | 
			
		||||
        .on('click.fndtn.orbit', '[data-orbit-slide-number]', function(e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          self._reset_timer($slides_container, true);
 | 
			
		||||
          self._goto($slides_container, $(e.currentTarget).data('orbit-slide-number'),function() {});
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      $container
 | 
			
		||||
        .on('mouseenter.fndtn.orbit', function(e) {
 | 
			
		||||
          if (self.settings.pause_on_hover) {
 | 
			
		||||
            self._stop_timer($slides_container);
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('mouseleave.fndtn.orbit', function(e) {
 | 
			
		||||
          if (self.settings.resume_on_mouseout) {
 | 
			
		||||
            self._start_timer($slides_container);
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('orbit:after-slide-change.fndtn.orbit', function(e, orbit) {
 | 
			
		||||
          var $slide_number = $container.find('.' + self.settings.slide_number_class);
 | 
			
		||||
 | 
			
		||||
          if ($slide_number.length === 1) {
 | 
			
		||||
            $slide_number.replaceWith(self._slide_number_html(orbit.slide_number, orbit.total_slides));
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('orbit:next-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.next_class.split(" ").join("."), function(e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          self._reset_timer($slides_container, true);
 | 
			
		||||
          self._goto($slides_container, 'next', function() {});
 | 
			
		||||
        })
 | 
			
		||||
        .on('orbit:prev-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.prev_class.split(" ").join("."), function(e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          self._reset_timer($slides_container, true);
 | 
			
		||||
          self._goto($slides_container, 'prev', function() {});
 | 
			
		||||
        })
 | 
			
		||||
        .on('orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit', '.' + self.settings.timer_container_class, function(e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          var $timer = $(e.currentTarget).toggleClass(self.settings.timer_paused_class),
 | 
			
		||||
              $slides_container = $timer.closest('.' + self.settings.container_class)
 | 
			
		||||
                .find('.' + self.settings.slides_container_class);
 | 
			
		||||
 | 
			
		||||
          if ($timer.hasClass(self.settings.timer_paused_class)) {
 | 
			
		||||
            self._stop_timer($slides_container);
 | 
			
		||||
          } else {
 | 
			
		||||
            self._start_timer($slides_container);
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('touchstart.fndtn.orbit', function(e) {
 | 
			
		||||
          if (!e.touches) { e = e.originalEvent; }
 | 
			
		||||
          var data = {
 | 
			
		||||
            start_page_x: e.touches[0].pageX,
 | 
			
		||||
            start_page_y: e.touches[0].pageY,
 | 
			
		||||
            start_time: (new Date()).getTime(),
 | 
			
		||||
            delta_x: 0,
 | 
			
		||||
            is_scrolling: undefined
 | 
			
		||||
          };
 | 
			
		||||
          $container.data('swipe-transition', data);
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
        })
 | 
			
		||||
        .on('touchmove.fndtn.orbit', function(e) {
 | 
			
		||||
          if (!e.touches) { e = e.originalEvent; }
 | 
			
		||||
          // Ignore pinch/zoom events
 | 
			
		||||
          if(e.touches.length > 1 || e.scale && e.scale !== 1) return;
 | 
			
		||||
 | 
			
		||||
          var data = $container.data('swipe-transition');
 | 
			
		||||
          if (typeof data === 'undefined') {
 | 
			
		||||
            data = {};
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          data.delta_x = e.touches[0].pageX - data.start_page_x;
 | 
			
		||||
 | 
			
		||||
          if ( typeof data.is_scrolling === 'undefined') {
 | 
			
		||||
            data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (!data.is_scrolling && !data.active) {
 | 
			
		||||
            e.preventDefault();
 | 
			
		||||
            self._stop_timer($slides_container);
 | 
			
		||||
            var direction = (data.delta_x < 0) ? 'next' : 'prev';
 | 
			
		||||
            data.active = true;
 | 
			
		||||
            self._goto($slides_container, direction, function() {});
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('touchend.fndtn.orbit', function(e) {
 | 
			
		||||
          $container.data('swipe-transition', {});
 | 
			
		||||
          e.stopPropagation();
 | 
			
		||||
        });
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _init_dimensions: function ($slides_container) {
 | 
			
		||||
      var $container = $slides_container.parent(),
 | 
			
		||||
          $slides = $slides_container.children();
 | 
			
		||||
 | 
			
		||||
      $slides_container.css('width', $slides.length * 100 + '%');
 | 
			
		||||
      $slides.css('width', 100 / $slides.length + '%');
 | 
			
		||||
      $slides_container.height($container.height());
 | 
			
		||||
      $slides_container.css('width', $slides.length * 100 + '%');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _start_timer: function ($slides_container) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $container = $slides_container.parent();
 | 
			
		||||
 | 
			
		||||
      var callback = function() {
 | 
			
		||||
        self._reset_timer($slides_container, false);
 | 
			
		||||
        self._goto($slides_container, 'next', function() {
 | 
			
		||||
          self._start_timer($slides_container);
 | 
			
		||||
        });
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      var $timer = $container.find('.' + self.settings.timer_container_class),
 | 
			
		||||
          $progress = $timer.find('.' + self.settings.timer_progress_class),
 | 
			
		||||
          progress_pct = ($progress.width() / $timer.width()),
 | 
			
		||||
          delay = self.settings.timer_speed - (progress_pct * self.settings.timer_speed);
 | 
			
		||||
 | 
			
		||||
      $progress.animate({'width': '100%'}, delay, 'linear', callback);
 | 
			
		||||
      $slides_container.trigger('orbit:timer-started');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _stop_timer: function ($slides_container) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $container = $slides_container.parent(),
 | 
			
		||||
          $timer = $container.find('.' + self.settings.timer_container_class),
 | 
			
		||||
          $progress = $timer.find('.' + self.settings.timer_progress_class),
 | 
			
		||||
          progress_pct = $progress.width() / $timer.width();
 | 
			
		||||
      self._rebuild_timer($container, progress_pct * 100 + '%');
 | 
			
		||||
      // $progress.stop();
 | 
			
		||||
      $slides_container.trigger('orbit:timer-stopped');
 | 
			
		||||
      $timer = $container.find('.' + self.settings.timer_container_class);
 | 
			
		||||
      $timer.addClass(self.settings.timer_paused_class);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _reset_timer: function($slides_container, is_paused) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $container = $slides_container.parent();
 | 
			
		||||
      self._rebuild_timer($container, '0%');
 | 
			
		||||
      if (typeof is_paused === 'boolean' && is_paused) {
 | 
			
		||||
        var $timer = $container.find('.' + self.settings.timer_container_class);
 | 
			
		||||
        $timer.addClass(self.settings.timer_paused_class);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _rebuild_timer: function ($container, width_pct) {
 | 
			
		||||
      // Zepto is unable to stop animations since they
 | 
			
		||||
      // are css-based. This is a workaround for that
 | 
			
		||||
      // limitation, which rebuilds the dom element
 | 
			
		||||
      // thus stopping the animation
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $timer = $container.find('.' + self.settings.timer_container_class),
 | 
			
		||||
          $new_timer = $(self._timer_html()),
 | 
			
		||||
          $new_timer_progress = $new_timer.find('.' + self.settings.timer_progress_class);
 | 
			
		||||
 | 
			
		||||
      if (typeof Zepto === 'function') {
 | 
			
		||||
        $timer.remove();
 | 
			
		||||
        $container.append($new_timer);
 | 
			
		||||
        $new_timer_progress.css('width', width_pct);
 | 
			
		||||
      } else if (typeof jQuery === 'function') {
 | 
			
		||||
        var $progress = $timer.find('.' + self.settings.timer_progress_class);
 | 
			
		||||
        $progress.css('width', width_pct);
 | 
			
		||||
        $progress.stop();
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _goto: function($slides_container, index_or_direction, callback) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          $container = $slides_container.parent(),
 | 
			
		||||
          $slides = $slides_container.children(),
 | 
			
		||||
          $active_slide = $slides_container.find('.' + self.settings.active_slide_class),
 | 
			
		||||
          active_index = $active_slide.index(),
 | 
			
		||||
          margin_position = Foundation.rtl ? 'marginRight' : 'marginLeft';
 | 
			
		||||
 | 
			
		||||
      if ($container.hasClass(self.settings.orbit_transition_class)) {
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (index_or_direction === 'prev') {
 | 
			
		||||
        if (active_index === 0) {
 | 
			
		||||
          active_index = $slides.length - 1;
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
          active_index--;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      else if (index_or_direction === 'next') {
 | 
			
		||||
        active_index = (active_index+1) % $slides.length;
 | 
			
		||||
      }
 | 
			
		||||
      else if (typeof index_or_direction === 'number') {
 | 
			
		||||
        active_index = (index_or_direction % $slides.length);
 | 
			
		||||
      }
 | 
			
		||||
      if (active_index === ($slides.length - 1) && index_or_direction === 'next') {
 | 
			
		||||
        $slides_container.css(margin_position, '0%');
 | 
			
		||||
        active_index = 1;
 | 
			
		||||
      }
 | 
			
		||||
      else if (active_index === 0 && index_or_direction === 'prev') {
 | 
			
		||||
        $slides_container.css(margin_position, '-' + ($slides.length - 1) * 100 + '%');
 | 
			
		||||
        active_index = $slides.length - 2;
 | 
			
		||||
      }
 | 
			
		||||
      // Start transition, make next slide active
 | 
			
		||||
      $container.addClass(self.settings.orbit_transition_class);
 | 
			
		||||
      $active_slide.removeClass(self.settings.active_slide_class);
 | 
			
		||||
      $($slides[active_index]).addClass(self.settings.active_slide_class);
 | 
			
		||||
      // Make next bullet active
 | 
			
		||||
      var $bullets = $container.siblings('.' + self.settings.bullets_container_class);
 | 
			
		||||
      if ($bullets.length === 1) {
 | 
			
		||||
        $bullets.children().removeClass(self.settings.bullets_active_class);
 | 
			
		||||
        $($bullets.children()[active_index-1]).addClass(self.settings.bullets_active_class);
 | 
			
		||||
      }
 | 
			
		||||
      var new_margin_left = '-' + (active_index * 100) + '%';
 | 
			
		||||
      // Check to see if animation will occur, otherwise perform
 | 
			
		||||
      // callbacks manually
 | 
			
		||||
      $slides_container.trigger('orbit:before-slide-change');
 | 
			
		||||
      if ($slides_container.css(margin_position) === new_margin_left) {
 | 
			
		||||
        $container.removeClass(self.settings.orbit_transition_class);
 | 
			
		||||
        $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]);
 | 
			
		||||
        callback();
 | 
			
		||||
      } else {
 | 
			
		||||
        var properties = {};
 | 
			
		||||
        properties[margin_position] = new_margin_left;
 | 
			
		||||
 | 
			
		||||
        $slides_container.animate(properties, self.settings.animation_speed, 'linear', function() {
 | 
			
		||||
          $container.removeClass(self.settings.orbit_transition_class);
 | 
			
		||||
          $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]);
 | 
			
		||||
          callback();
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										179
									
								
								js/foundation/foundation.placeholder.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								js/foundation/foundation.placeholder.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,179 @@
 | 
			
		|||
/*! http://mths.be/placeholder v2.0.7 by @mathias 
 | 
			
		||||
	Modified to work with Zepto.js by ZURB
 | 
			
		||||
*/
 | 
			
		||||
;(function(window, document, $) {
 | 
			
		||||
 | 
			
		||||
	var isInputSupported = 'placeholder' in document.createElement('input'),
 | 
			
		||||
	    isTextareaSupported = 'placeholder' in document.createElement('textarea'),
 | 
			
		||||
	    prototype = $.fn,
 | 
			
		||||
	    valHooks = $.valHooks,
 | 
			
		||||
	    hooks,
 | 
			
		||||
	    placeholder;
 | 
			
		||||
 | 
			
		||||
	if (isInputSupported && isTextareaSupported) {
 | 
			
		||||
 | 
			
		||||
		placeholder = prototype.placeholder = function() {
 | 
			
		||||
			return this;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		placeholder.input = placeholder.textarea = true;
 | 
			
		||||
 | 
			
		||||
	} else {
 | 
			
		||||
 | 
			
		||||
		placeholder = prototype.placeholder = function() {
 | 
			
		||||
			var $this = this;
 | 
			
		||||
			$this
 | 
			
		||||
				.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
 | 
			
		||||
				.not('.placeholder')
 | 
			
		||||
				.bind({
 | 
			
		||||
					'focus.placeholder': clearPlaceholder,
 | 
			
		||||
					'blur.placeholder': setPlaceholder
 | 
			
		||||
				})
 | 
			
		||||
				.data('placeholder-enabled', true)
 | 
			
		||||
				.trigger('blur.placeholder');
 | 
			
		||||
			return $this;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		placeholder.input = isInputSupported;
 | 
			
		||||
		placeholder.textarea = isTextareaSupported;
 | 
			
		||||
 | 
			
		||||
		hooks = {
 | 
			
		||||
			'get': function(element) {
 | 
			
		||||
				var $element = $(element);
 | 
			
		||||
				return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
 | 
			
		||||
			},
 | 
			
		||||
			'set': function(element, value) {
 | 
			
		||||
				var $element = $(element);
 | 
			
		||||
				if (!$element.data('placeholder-enabled')) {
 | 
			
		||||
					return element.value = value;
 | 
			
		||||
				}
 | 
			
		||||
				if (value == '') {
 | 
			
		||||
					element.value = value;
 | 
			
		||||
					// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
 | 
			
		||||
					if (element != document.activeElement) {
 | 
			
		||||
						// We can't use `triggerHandler` here because of dummy text/password inputs :(
 | 
			
		||||
						setPlaceholder.call(element);
 | 
			
		||||
					}
 | 
			
		||||
				} else if ($element.hasClass('placeholder')) {
 | 
			
		||||
					clearPlaceholder.call(element, true, value) || (element.value = value);
 | 
			
		||||
				} else {
 | 
			
		||||
					element.value = value;
 | 
			
		||||
				}
 | 
			
		||||
				// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
 | 
			
		||||
				return $element;
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		isInputSupported || (valHooks.input = hooks);
 | 
			
		||||
		isTextareaSupported || (valHooks.textarea = hooks);
 | 
			
		||||
 | 
			
		||||
		$(function() {
 | 
			
		||||
			// Look for forms
 | 
			
		||||
			$(document).delegate('form', 'submit.placeholder', function() {
 | 
			
		||||
				// Clear the placeholder values so they don't get submitted
 | 
			
		||||
				var $inputs = $('.placeholder', this).each(clearPlaceholder);
 | 
			
		||||
				setTimeout(function() {
 | 
			
		||||
					$inputs.each(setPlaceholder);
 | 
			
		||||
				}, 10);
 | 
			
		||||
			});
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		// Clear placeholder values upon page reload
 | 
			
		||||
		$(window).bind('beforeunload.placeholder', function() {
 | 
			
		||||
			$('.placeholder').each(function() {
 | 
			
		||||
				this.value = '';
 | 
			
		||||
			});
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function args(elem) {
 | 
			
		||||
		// Return an object of element attributes
 | 
			
		||||
		var newAttrs = {},
 | 
			
		||||
		    rinlinejQuery = /^jQuery\d+$/;
 | 
			
		||||
		$.each(elem.attributes, function(i, attr) {
 | 
			
		||||
			if (attr.specified && !rinlinejQuery.test(attr.name)) {
 | 
			
		||||
				newAttrs[attr.name] = attr.value;
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		return newAttrs;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function clearPlaceholder(event, value) {
 | 
			
		||||
		var input = this,
 | 
			
		||||
		    $input = $(input);
 | 
			
		||||
		if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
 | 
			
		||||
			if ($input.data('placeholder-password')) {
 | 
			
		||||
				$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
 | 
			
		||||
				// If `clearPlaceholder` was called from `$.valHooks.input.set`
 | 
			
		||||
				if (event === true) {
 | 
			
		||||
					return $input[0].value = value;
 | 
			
		||||
				}
 | 
			
		||||
				$input.focus();
 | 
			
		||||
			} else {
 | 
			
		||||
				input.value = '';
 | 
			
		||||
				$input.removeClass('placeholder');
 | 
			
		||||
				input == document.activeElement && input.select();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function setPlaceholder() {
 | 
			
		||||
		var $replacement,
 | 
			
		||||
		    input = this,
 | 
			
		||||
		    $input = $(input),
 | 
			
		||||
		    $origInput = $input,
 | 
			
		||||
		    id = this.id;
 | 
			
		||||
		if (input.value == '') {
 | 
			
		||||
			if (input.type == 'password') {
 | 
			
		||||
				if (!$input.data('placeholder-textinput')) {
 | 
			
		||||
					try {
 | 
			
		||||
						$replacement = $input.clone().attr({ 'type': 'text' });
 | 
			
		||||
					} catch(e) {
 | 
			
		||||
						$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
 | 
			
		||||
					}
 | 
			
		||||
					$replacement
 | 
			
		||||
						.removeAttr('name')
 | 
			
		||||
						.data({
 | 
			
		||||
							'placeholder-password': true,
 | 
			
		||||
							'placeholder-id': id
 | 
			
		||||
						})
 | 
			
		||||
						.bind('focus.placeholder', clearPlaceholder);
 | 
			
		||||
					$input
 | 
			
		||||
						.data({
 | 
			
		||||
							'placeholder-textinput': $replacement,
 | 
			
		||||
							'placeholder-id': id
 | 
			
		||||
						})
 | 
			
		||||
						.before($replacement);
 | 
			
		||||
				}
 | 
			
		||||
				$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
 | 
			
		||||
				// Note: `$input[0] != input` now!
 | 
			
		||||
			}
 | 
			
		||||
			$input.addClass('placeholder');
 | 
			
		||||
			$input[0].value = $input.attr('placeholder');
 | 
			
		||||
		} else {
 | 
			
		||||
			$input.removeClass('placeholder');
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}(this, document, Foundation.zj));
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.placeholder = {
 | 
			
		||||
    name : 'placeholder',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      this.scope = scope || this.scope;
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        window.onload = function () {
 | 
			
		||||
        	$('input, textarea').placeholder();
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										330
									
								
								js/foundation/foundation.reveal.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										330
									
								
								js/foundation/foundation.reveal.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,330 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.reveal = {
 | 
			
		||||
    name: 'reveal',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    locked : false,
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      animation: 'fadeAndPop',
 | 
			
		||||
      animationSpeed: 250,
 | 
			
		||||
      closeOnBackgroundClick: true,
 | 
			
		||||
      closeOnEsc: true,
 | 
			
		||||
      dismissModalClass: 'close-reveal-modal',
 | 
			
		||||
      bgClass: 'reveal-modal-bg',
 | 
			
		||||
      open: function(){},
 | 
			
		||||
      opened: function(){},
 | 
			
		||||
      close: function(){},
 | 
			
		||||
      closed: function(){},
 | 
			
		||||
      bg : $('.reveal-modal-bg'),
 | 
			
		||||
      css : {
 | 
			
		||||
        open : {
 | 
			
		||||
          'opacity': 0,
 | 
			
		||||
          'visibility': 'visible',
 | 
			
		||||
          'display' : 'block'
 | 
			
		||||
        },
 | 
			
		||||
        close : {
 | 
			
		||||
          'opacity': 1,
 | 
			
		||||
          'visibility': 'hidden',
 | 
			
		||||
          'display': 'none'
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      Foundation.inherit(this, 'data_options delay');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      } else if (typeof options !== 'undefined') {
 | 
			
		||||
        $.extend(true, this.settings, options);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        this.events();
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .off('.fndtn.reveal')
 | 
			
		||||
        .on('click.fndtn.reveal', '[data-reveal-id]', function (e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
 | 
			
		||||
          if (!self.locked) {
 | 
			
		||||
            var element = $(this),
 | 
			
		||||
                ajax = element.data('reveal-ajax');
 | 
			
		||||
 | 
			
		||||
            self.locked = true;
 | 
			
		||||
 | 
			
		||||
            if (typeof ajax === 'undefined') {
 | 
			
		||||
              self.open.call(self, element);
 | 
			
		||||
            } else {
 | 
			
		||||
              var url = ajax === true ? element.attr('href') : ajax;
 | 
			
		||||
 | 
			
		||||
              self.open.call(self, element, {url: url});
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('click.fndtn.reveal', this.close_targets(), function (e) {
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
          if (!self.locked) {
 | 
			
		||||
            var settings = $.extend({}, self.settings, self.data_options($('.reveal-modal.open')));
 | 
			
		||||
            if ($(e.target)[0] === $('.' + settings.bgClass)[0] && !settings.closeOnBackgroundClick) {
 | 
			
		||||
              return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            self.locked = true;
 | 
			
		||||
            self.close.call(self, $(this).closest('.reveal-modal'));
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .on('open.fndtn.reveal', '.reveal-modal', this.settings.open)
 | 
			
		||||
        .on('opened.fndtn.reveal', '.reveal-modal', this.settings.opened)
 | 
			
		||||
        .on('opened.fndtn.reveal', '.reveal-modal', this.open_video)
 | 
			
		||||
        .on('close.fndtn.reveal', '.reveal-modal', this.settings.close)
 | 
			
		||||
        .on('closed.fndtn.reveal', '.reveal-modal', this.settings.closed)
 | 
			
		||||
        .on('closed.fndtn.reveal', '.reveal-modal', this.close_video);
 | 
			
		||||
 | 
			
		||||
      $( 'body' ).bind( 'keyup.reveal', function ( event ) {
 | 
			
		||||
        var open_modal = $('.reveal-modal.open'),
 | 
			
		||||
            settings = $.extend({}, self.settings, self.data_options(open_modal));
 | 
			
		||||
        if ( event.which === 27  && settings.closeOnEsc) { // 27 is the keycode for the Escape key
 | 
			
		||||
          open_modal.foundation('reveal', 'close');
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      return true;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    open : function (target, ajax_settings) {
 | 
			
		||||
      if (target) {
 | 
			
		||||
        if (typeof target.selector !== 'undefined') {
 | 
			
		||||
          var modal = $('#' + target.data('reveal-id'));
 | 
			
		||||
        } else {
 | 
			
		||||
          var modal = $(this.scope);
 | 
			
		||||
 | 
			
		||||
          ajax_settings = target;
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        var modal = $(this.scope);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!modal.hasClass('open')) {
 | 
			
		||||
        var open_modal = $('.reveal-modal.open');
 | 
			
		||||
 | 
			
		||||
        if (typeof modal.data('css-top') === 'undefined') {
 | 
			
		||||
          modal.data('css-top', parseInt(modal.css('top'), 10))
 | 
			
		||||
            .data('offset', this.cache_offset(modal));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        modal.trigger('open');
 | 
			
		||||
 | 
			
		||||
        if (open_modal.length < 1) {
 | 
			
		||||
          this.toggle_bg(modal);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
 | 
			
		||||
          this.hide(open_modal, this.settings.css.close);
 | 
			
		||||
          this.show(modal, this.settings.css.open);
 | 
			
		||||
        } else {
 | 
			
		||||
          var self = this,
 | 
			
		||||
              old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
 | 
			
		||||
 | 
			
		||||
          $.extend(ajax_settings, {
 | 
			
		||||
            success: function (data, textStatus, jqXHR) {
 | 
			
		||||
              if ( $.isFunction(old_success) ) {
 | 
			
		||||
                old_success(data, textStatus, jqXHR);
 | 
			
		||||
              }
 | 
			
		||||
 | 
			
		||||
              modal.html(data);
 | 
			
		||||
              $(modal).foundation('section', 'reflow');
 | 
			
		||||
 | 
			
		||||
              self.hide(open_modal, self.settings.css.close);
 | 
			
		||||
              self.show(modal, self.settings.css.open);
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
 | 
			
		||||
          $.ajax(ajax_settings);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    close : function (modal) {
 | 
			
		||||
 | 
			
		||||
      var modal = modal && modal.length ? modal : $(this.scope),
 | 
			
		||||
          open_modals = $('.reveal-modal.open');
 | 
			
		||||
 | 
			
		||||
      if (open_modals.length > 0) {
 | 
			
		||||
        this.locked = true;
 | 
			
		||||
        modal.trigger('close');
 | 
			
		||||
        this.toggle_bg(modal);
 | 
			
		||||
        this.hide(open_modals, this.settings.css.close);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    close_targets : function () {
 | 
			
		||||
      var base = '.' + this.settings.dismissModalClass;
 | 
			
		||||
 | 
			
		||||
      if (this.settings.closeOnBackgroundClick) {
 | 
			
		||||
        return base + ', .' + this.settings.bgClass;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return base;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    toggle_bg : function (modal) {
 | 
			
		||||
      if ($('.reveal-modal-bg').length === 0) {
 | 
			
		||||
        this.settings.bg = $('<div />', {'class': this.settings.bgClass})
 | 
			
		||||
          .appendTo('body');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.settings.bg.filter(':visible').length > 0) {
 | 
			
		||||
        this.hide(this.settings.bg);
 | 
			
		||||
      } else {
 | 
			
		||||
        this.show(this.settings.bg);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    show : function (el, css) {
 | 
			
		||||
      // is modal
 | 
			
		||||
      if (css) {
 | 
			
		||||
        if (/pop/i.test(this.settings.animation)) {
 | 
			
		||||
          css.top = $(window).scrollTop() - el.data('offset') + 'px';
 | 
			
		||||
          var end_css = {
 | 
			
		||||
            top: $(window).scrollTop() + el.data('css-top') + 'px',
 | 
			
		||||
            opacity: 1
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          return this.delay(function () {
 | 
			
		||||
            return el
 | 
			
		||||
              .css(css)
 | 
			
		||||
              .animate(end_css, this.settings.animationSpeed, 'linear', function () {
 | 
			
		||||
                this.locked = false;
 | 
			
		||||
                el.trigger('opened');
 | 
			
		||||
              }.bind(this))
 | 
			
		||||
              .addClass('open');
 | 
			
		||||
          }.bind(this), this.settings.animationSpeed / 2);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (/fade/i.test(this.settings.animation)) {
 | 
			
		||||
          var end_css = {opacity: 1};
 | 
			
		||||
 | 
			
		||||
          return this.delay(function () {
 | 
			
		||||
            return el
 | 
			
		||||
              .css(css)
 | 
			
		||||
              .animate(end_css, this.settings.animationSpeed, 'linear', function () {
 | 
			
		||||
                this.locked = false;
 | 
			
		||||
                el.trigger('opened');
 | 
			
		||||
              }.bind(this))
 | 
			
		||||
              .addClass('open');
 | 
			
		||||
          }.bind(this), this.settings.animationSpeed / 2);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // should we animate the background?
 | 
			
		||||
      if (/fade/i.test(this.settings.animation)) {
 | 
			
		||||
        return el.fadeIn(this.settings.animationSpeed / 2);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return el.show();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    hide : function (el, css) {
 | 
			
		||||
      // is modal
 | 
			
		||||
      if (css) {
 | 
			
		||||
        if (/pop/i.test(this.settings.animation)) {
 | 
			
		||||
          var end_css = {
 | 
			
		||||
            top: - $(window).scrollTop() - el.data('offset') + 'px',
 | 
			
		||||
            opacity: 0
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          return this.delay(function () {
 | 
			
		||||
            return el
 | 
			
		||||
              .animate(end_css, this.settings.animationSpeed, 'linear', function () {
 | 
			
		||||
                this.locked = false;
 | 
			
		||||
                el.css(css).trigger('closed');
 | 
			
		||||
              }.bind(this))
 | 
			
		||||
              .removeClass('open');
 | 
			
		||||
          }.bind(this), this.settings.animationSpeed / 2);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (/fade/i.test(this.settings.animation)) {
 | 
			
		||||
          var end_css = {opacity: 0};
 | 
			
		||||
 | 
			
		||||
          return this.delay(function () {
 | 
			
		||||
            return el
 | 
			
		||||
              .animate(end_css, this.settings.animationSpeed, 'linear', function () {
 | 
			
		||||
                this.locked = false;
 | 
			
		||||
                el.css(css).trigger('closed');
 | 
			
		||||
              }.bind(this))
 | 
			
		||||
              .removeClass('open');
 | 
			
		||||
          }.bind(this), this.settings.animationSpeed / 2);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return el.hide().css(css).removeClass('open').trigger('closed');
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // should we animate the background?
 | 
			
		||||
      if (/fade/i.test(this.settings.animation)) {
 | 
			
		||||
        return el.fadeOut(this.settings.animationSpeed / 2);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return el.hide();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    close_video : function (e) {
 | 
			
		||||
      var video = $(this).find('.flex-video'),
 | 
			
		||||
          iframe = video.find('iframe');
 | 
			
		||||
 | 
			
		||||
      if (iframe.length > 0) {
 | 
			
		||||
        iframe.attr('data-src', iframe[0].src);
 | 
			
		||||
        iframe.attr('src', 'about:blank');
 | 
			
		||||
        video.hide();
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    open_video : function (e) {
 | 
			
		||||
      var video = $(this).find('.flex-video'),
 | 
			
		||||
          iframe = video.find('iframe');
 | 
			
		||||
 | 
			
		||||
      if (iframe.length > 0) {
 | 
			
		||||
        var data_src = iframe.attr('data-src');
 | 
			
		||||
        if (typeof data_src === 'string') {
 | 
			
		||||
          iframe[0].src = iframe.attr('data-src');
 | 
			
		||||
        } else {
 | 
			
		||||
          var src = iframe[0].src;
 | 
			
		||||
          iframe[0].src = undefined;
 | 
			
		||||
          iframe[0].src = src;
 | 
			
		||||
        }
 | 
			
		||||
        video.show();
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    cache_offset : function (modal) {
 | 
			
		||||
      var offset = modal.show().height() + parseInt(modal.css('top'), 10);
 | 
			
		||||
 | 
			
		||||
      modal.hide();
 | 
			
		||||
 | 
			
		||||
      return offset;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.reveal');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										417
									
								
								js/foundation/foundation.section.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										417
									
								
								js/foundation/foundation.section.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,417 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.section = {
 | 
			
		||||
    name: 'section',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      deep_linking: false,
 | 
			
		||||
      small_breakpoint: 768,
 | 
			
		||||
      one_up: true,
 | 
			
		||||
      section_selector : '[data-section]',
 | 
			
		||||
      region_selector : 'section, .section, [data-section-region]',
 | 
			
		||||
      title_selector : '.title, [data-section-title]',
 | 
			
		||||
      active_region_selector : 'section.active, .section.active, .active[data-section-region]',
 | 
			
		||||
      content_selector : '.content, [data-section-content]',
 | 
			
		||||
      nav_selector : '[data-section="vertical-nav"], [data-section="horizontal-nav"]',
 | 
			
		||||
      callback: function (){}
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      Foundation.inherit(this, 'throttle data_options position_right offset_right');
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, self.settings, method);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        this.set_active_from_hash();
 | 
			
		||||
        this.events();
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .on('click.fndtn.section', '[data-section] .title, [data-section] [data-section-title]', function (e) {
 | 
			
		||||
          var $this = $(this),
 | 
			
		||||
              section = $this.closest(self.settings.region_selector);
 | 
			
		||||
 | 
			
		||||
          if (section.children(self.settings.content_selector).length > 0) {
 | 
			
		||||
            self.toggle_active.call(this, e, self);
 | 
			
		||||
            self.reflow();
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      $(window)
 | 
			
		||||
        .on('resize.fndtn.section', self.throttle(function () {
 | 
			
		||||
          self.resize.call(this);
 | 
			
		||||
        }, 30))
 | 
			
		||||
        .on('hashchange', function () {
 | 
			
		||||
          if (!self.settings.toggled){
 | 
			
		||||
            self.set_active_from_hash();
 | 
			
		||||
            $(this).trigger('resize');
 | 
			
		||||
          }
 | 
			
		||||
        }).trigger('resize');
 | 
			
		||||
 | 
			
		||||
      $(document)
 | 
			
		||||
        .on('click.fndtn.section', function (e) {
 | 
			
		||||
          if ($(e.target).closest(self.settings.title_selector).length < 1) {
 | 
			
		||||
            $(self.settings.nav_selector)
 | 
			
		||||
              .children(self.settings.region_selector)
 | 
			
		||||
              .removeClass('active')
 | 
			
		||||
              .attr('style', '');
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    toggle_active : function (e, self) {
 | 
			
		||||
      var $this = $(this),
 | 
			
		||||
          self = Foundation.libs.section,
 | 
			
		||||
          region = $this.closest(self.settings.region_selector),
 | 
			
		||||
          content = $this.siblings(self.settings.content_selector),
 | 
			
		||||
          parent = region.parent(),
 | 
			
		||||
          settings = $.extend({}, self.settings, self.data_options(parent)),
 | 
			
		||||
          prev_active_section = parent
 | 
			
		||||
            .children(self.settings.active_region_selector);
 | 
			
		||||
 | 
			
		||||
      self.settings.toggled = true;
 | 
			
		||||
 | 
			
		||||
      if (!settings.deep_linking && content.length > 0) {
 | 
			
		||||
        e.preventDefault();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (region.hasClass('active')) {
 | 
			
		||||
        // this is causing the style flash.
 | 
			
		||||
        if (self.small(parent)
 | 
			
		||||
          || self.is_vertical_nav(parent)
 | 
			
		||||
          || self.is_horizontal_nav(parent)
 | 
			
		||||
          || self.is_accordion(parent)) {
 | 
			
		||||
            if (prev_active_section[0] !== region[0]
 | 
			
		||||
              || (prev_active_section[0] === region[0] && !settings.one_up)) {
 | 
			
		||||
              region
 | 
			
		||||
                .removeClass('active')
 | 
			
		||||
                .attr('style', '');
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        var prev_active_section = parent
 | 
			
		||||
              .children(self.settings.active_region_selector),
 | 
			
		||||
            title_height = self.outerHeight(region
 | 
			
		||||
              .children(self.settings.title_selector));
 | 
			
		||||
 | 
			
		||||
        if (self.small(parent) || settings.one_up) {
 | 
			
		||||
 | 
			
		||||
          if (self.small(parent)) {
 | 
			
		||||
            prev_active_section.attr('style', '');
 | 
			
		||||
          } else {
 | 
			
		||||
            prev_active_section.attr('style',
 | 
			
		||||
              'visibility: hidden; padding-top: '+title_height+'px;');
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (self.small(parent)) {
 | 
			
		||||
          region.attr('style', '');
 | 
			
		||||
        } else {
 | 
			
		||||
          region.css('padding-top', title_height);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        region.addClass('active');
 | 
			
		||||
 | 
			
		||||
        if (prev_active_section.length > 0) {
 | 
			
		||||
          prev_active_section
 | 
			
		||||
            .removeClass('active')
 | 
			
		||||
            .attr('style', '');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Toggle the content display attribute. This is done to
 | 
			
		||||
        // ensure accurate outerWidth measurements that account for
 | 
			
		||||
        // the scrollbar.
 | 
			
		||||
        if (self.is_vertical_tabs(parent)) {
 | 
			
		||||
          content.css('display', 'block');
 | 
			
		||||
 | 
			
		||||
          if (prev_active_section !== null) {
 | 
			
		||||
            prev_active_section
 | 
			
		||||
              .children(self.settings.content_selector)
 | 
			
		||||
              .css('display', 'none');
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      setTimeout(function () {
 | 
			
		||||
        self.settings.toggled = false;
 | 
			
		||||
      }, 300);
 | 
			
		||||
 | 
			
		||||
      settings.callback();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    resize : function () {
 | 
			
		||||
      var self = Foundation.libs.section,
 | 
			
		||||
          sections = $(self.settings.section_selector);
 | 
			
		||||
 | 
			
		||||
      sections.each(function() {
 | 
			
		||||
        var $this = $(this),
 | 
			
		||||
            active_section = $this
 | 
			
		||||
              .children(self.settings.active_region_selector),
 | 
			
		||||
            settings = $.extend({}, self.settings, self.data_options($this));
 | 
			
		||||
 | 
			
		||||
        if (active_section.length > 1) {
 | 
			
		||||
          active_section
 | 
			
		||||
            .not(':first')
 | 
			
		||||
            .removeClass('active')
 | 
			
		||||
            .attr('style', '');
 | 
			
		||||
        } else if (active_section.length < 1
 | 
			
		||||
          && !self.is_vertical_nav($this)
 | 
			
		||||
          && !self.is_horizontal_nav($this)
 | 
			
		||||
          && !self.is_accordion($this)) {
 | 
			
		||||
 | 
			
		||||
          var first = $this.children(self.settings.region_selector).first();
 | 
			
		||||
 | 
			
		||||
          if (settings.one_up || !self.small($this)) {
 | 
			
		||||
            first.addClass('active');
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (self.small($this)) {
 | 
			
		||||
            first.attr('style', '');
 | 
			
		||||
          } else {
 | 
			
		||||
            first.css('padding-top', self.outerHeight(first
 | 
			
		||||
              .children(self.settings.title_selector)));
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (self.small($this)) {
 | 
			
		||||
          active_section.attr('style', '');
 | 
			
		||||
        } else {
 | 
			
		||||
          active_section.css('padding-top', self.outerHeight(active_section
 | 
			
		||||
            .children(self.settings.title_selector)));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        self.position_titles($this);
 | 
			
		||||
 | 
			
		||||
        if ( (self.is_horizontal_nav($this) && !self.small($this))
 | 
			
		||||
          || self.is_vertical_tabs($this) && !self.small($this)) {
 | 
			
		||||
          self.position_content($this);
 | 
			
		||||
        } else {
 | 
			
		||||
          self.position_content($this, false);
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    is_vertical_nav : function (el) {
 | 
			
		||||
      return /vertical-nav/i.test(el.data('section'));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    is_horizontal_nav : function (el) {
 | 
			
		||||
      return /horizontal-nav/i.test(el.data('section'));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    is_accordion : function (el) {
 | 
			
		||||
      return /accordion/i.test(el.data('section'));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    is_horizontal_tabs : function (el) {
 | 
			
		||||
      return /^tabs$/i.test(el.data('section'));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    is_vertical_tabs : function (el) {
 | 
			
		||||
      return /vertical-tabs/i.test(el.data('section'));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    set_active_from_hash : function () {
 | 
			
		||||
      var hash = window.location.hash.substring(1),
 | 
			
		||||
          sections = $('[data-section]'),
 | 
			
		||||
          self = this;
 | 
			
		||||
      sections.each(function () {
 | 
			
		||||
        var section = $(this),
 | 
			
		||||
            settings = $.extend({}, self.settings, self.data_options(section));
 | 
			
		||||
 | 
			
		||||
        if (hash.length > 0 && settings.deep_linking) {
 | 
			
		||||
          var regions = section
 | 
			
		||||
            .children(self.settings.region_selector)
 | 
			
		||||
            .attr('style', '')
 | 
			
		||||
            .removeClass('active');
 | 
			
		||||
 | 
			
		||||
          var hash_regions = regions.map(function () {
 | 
			
		||||
              var content = $(self.settings.content_selector, this),
 | 
			
		||||
                  content_slug = content.data('slug');
 | 
			
		||||
 | 
			
		||||
              if (new RegExp(content_slug, 'i').test(hash)) 
 | 
			
		||||
                return content;
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          var count = hash_regions.length;
 | 
			
		||||
 | 
			
		||||
          for (var i = count - 1; i >= 0; i--) {
 | 
			
		||||
            $(hash_regions[i]).parent().addClass('active');
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    position_titles : function (section, off) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          titles = section
 | 
			
		||||
            .children(this.settings.region_selector)
 | 
			
		||||
            .map(function () {
 | 
			
		||||
              return $(this).children(self.settings.title_selector);
 | 
			
		||||
            }),
 | 
			
		||||
          previous_width = 0,
 | 
			
		||||
          previous_height = 0,
 | 
			
		||||
          self = this;
 | 
			
		||||
 | 
			
		||||
      if (typeof off === 'boolean') {
 | 
			
		||||
        titles.attr('style', '');
 | 
			
		||||
 | 
			
		||||
      } else {
 | 
			
		||||
        titles.each(function () {
 | 
			
		||||
          if (self.is_vertical_tabs(section)) {
 | 
			
		||||
            $(this).css('top', previous_height);
 | 
			
		||||
            previous_height += self.outerHeight($(this));
 | 
			
		||||
          } else {
 | 
			
		||||
            if (!self.rtl) {
 | 
			
		||||
              $(this).css('left', previous_width);
 | 
			
		||||
            } else {
 | 
			
		||||
              $(this).css('right', previous_width);
 | 
			
		||||
            }
 | 
			
		||||
            previous_width += self.outerWidth($(this));
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    position_content : function (section, off) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          regions = section.children(self.settings.region_selector),
 | 
			
		||||
          titles = regions
 | 
			
		||||
            .map(function () {
 | 
			
		||||
              return $(this).children(self.settings.title_selector);
 | 
			
		||||
            }),
 | 
			
		||||
          content = regions
 | 
			
		||||
            .map(function () {
 | 
			
		||||
              return $(this).children(self.settings.content_selector);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
      if (typeof off === 'boolean') {
 | 
			
		||||
        content.attr('style', '');
 | 
			
		||||
        section.attr('style', '');
 | 
			
		||||
      } else {
 | 
			
		||||
        if (self.is_vertical_tabs(section)
 | 
			
		||||
            && !self.small(section)) {
 | 
			
		||||
          var content_min_height = 0,
 | 
			
		||||
              content_min_width = Number.MAX_VALUE,
 | 
			
		||||
              title_width = null;
 | 
			
		||||
 | 
			
		||||
          regions.each(function () {
 | 
			
		||||
            var region = $(this),
 | 
			
		||||
                title = region.children(self.settings.title_selector),
 | 
			
		||||
                content = region.children(self.settings.content_selector),
 | 
			
		||||
                content_width = 0;
 | 
			
		||||
 | 
			
		||||
            title_width = self.outerWidth(title);
 | 
			
		||||
            content_width = self.outerWidth(section) - title_width;
 | 
			
		||||
 | 
			
		||||
            if (content_width < content_min_width) {
 | 
			
		||||
              content_min_width = content_width;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Increment the minimum height of the content region
 | 
			
		||||
            // to align with the height of the titles.
 | 
			
		||||
            content_min_height += self.outerHeight(title);
 | 
			
		||||
 | 
			
		||||
            // Set all of the inactive tabs to 'display: none'
 | 
			
		||||
            // The CSS sets all of the tabs as 'display: block'
 | 
			
		||||
            // in order to account for scrollbars when measuring the width
 | 
			
		||||
            // of the content regions.
 | 
			
		||||
            if (!$(this).hasClass('active')) {
 | 
			
		||||
              content.css('display', 'none');
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
 | 
			
		||||
          regions.each(function () {
 | 
			
		||||
            var content = $(this).children(self.settings.content_selector);
 | 
			
		||||
            content.css('minHeight', content_min_height);
 | 
			
		||||
 | 
			
		||||
            // Remove 2 pixels to account for the right-shift in the CSS
 | 
			
		||||
            content.css('maxWidth', content_min_width - 2);
 | 
			
		||||
          });
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
          regions.each(function () {
 | 
			
		||||
            var region = $(this),
 | 
			
		||||
                title = region.children(self.settings.title_selector),
 | 
			
		||||
                content = region.children(self.settings.content_selector);
 | 
			
		||||
            if (!self.rtl) {
 | 
			
		||||
              content
 | 
			
		||||
                .css({left: title.position().left - 1,
 | 
			
		||||
                  top: self.outerHeight(title) - 2});
 | 
			
		||||
            } else {
 | 
			
		||||
              content
 | 
			
		||||
                .css({right: self.position_right(title) + 1,
 | 
			
		||||
                  top: self.outerHeight(title) - 2});
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
 | 
			
		||||
          // temporary work around for Zepto outerheight calculation issues.
 | 
			
		||||
          if (typeof Zepto === 'function') {
 | 
			
		||||
            section.height(this.outerHeight($(titles[0])));
 | 
			
		||||
          } else {
 | 
			
		||||
            section.height(this.outerHeight($(titles[0])) - 2);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    position_right : function (el) {
 | 
			
		||||
      var self = this,
 | 
			
		||||
          section = el.closest(this.settings.section_selector),
 | 
			
		||||
          regions = section.children(this.settings.region_selector),
 | 
			
		||||
          section_width = el.closest(this.settings.section_selector).width(),
 | 
			
		||||
          offset = regions
 | 
			
		||||
            .map(function () {
 | 
			
		||||
              return $(this).children(self.settings.title_selector);
 | 
			
		||||
            }).length;
 | 
			
		||||
      return (section_width - el.position().left - el.width() * (el.index() + 1) - offset);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function (scope) {
 | 
			
		||||
      var scope = scope || document;
 | 
			
		||||
      $(this.settings.section_selector, scope).trigger('resize');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    small : function (el) {
 | 
			
		||||
      var settings = $.extend({}, this.settings, this.data_options(el));
 | 
			
		||||
 | 
			
		||||
      if (this.is_horizontal_tabs(el)) {
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
      if (el && this.is_accordion(el)) {
 | 
			
		||||
        return true;
 | 
			
		||||
      }
 | 
			
		||||
      if ($('html').hasClass('lt-ie9')) {
 | 
			
		||||
        return true;
 | 
			
		||||
      }
 | 
			
		||||
      if ($('html').hasClass('ie8compat')) {
 | 
			
		||||
        return true;
 | 
			
		||||
      }
 | 
			
		||||
      return $(this.scope).width() < settings.small_breakpoint;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.section');
 | 
			
		||||
      $(window).off('.fndtn.section');
 | 
			
		||||
      $(document).off('.fndtn.section')
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										208
									
								
								js/foundation/foundation.tooltips.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										208
									
								
								js/foundation/foundation.tooltips.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,208 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.tooltips = {
 | 
			
		||||
    name: 'tooltips',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      selector : '.has-tip',
 | 
			
		||||
      additionalInheritableClasses : [],
 | 
			
		||||
      tooltipClass : '.tooltip',
 | 
			
		||||
      appendTo: 'body',
 | 
			
		||||
      'disable-for-touch': false,
 | 
			
		||||
      tipTemplate : function (selector, content) {
 | 
			
		||||
        return '<span data-selector="' + selector + '" class="' 
 | 
			
		||||
          + Foundation.libs.tooltips.settings.tooltipClass.substring(1) 
 | 
			
		||||
          + '">' + content + '<span class="nub"></span></span>';
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    cache : {},
 | 
			
		||||
 | 
			
		||||
    init : function (scope, method, options) {
 | 
			
		||||
      Foundation.inherit(this, 'data_options');
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      } else if (typeof options !== 'undefined') {
 | 
			
		||||
        $.extend(true, this.settings, options);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
        if (Modernizr.touch) {
 | 
			
		||||
          $(this.scope)
 | 
			
		||||
            .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 
 | 
			
		||||
              '[data-tooltip]', function (e) {
 | 
			
		||||
              var settings = $.extend({}, self.settings, self.data_options($(this)));
 | 
			
		||||
              if (!settings['disable-for-touch']) {
 | 
			
		||||
                e.preventDefault();
 | 
			
		||||
                $(settings.tooltipClass).hide();
 | 
			
		||||
                self.showOrCreateTip($(this));
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
            .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 
 | 
			
		||||
              this.settings.tooltipClass, function (e) {
 | 
			
		||||
              e.preventDefault();
 | 
			
		||||
              $(this).fadeOut(150);
 | 
			
		||||
            });
 | 
			
		||||
        } else {
 | 
			
		||||
          $(this.scope)
 | 
			
		||||
            .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip', 
 | 
			
		||||
              '[data-tooltip]', function (e) {
 | 
			
		||||
              var $this = $(this);
 | 
			
		||||
 | 
			
		||||
              if (/enter|over/i.test(e.type)) {
 | 
			
		||||
                self.showOrCreateTip($this);
 | 
			
		||||
              } else if (e.type === 'mouseout' || e.type === 'mouseleave') {
 | 
			
		||||
                self.hide($this);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // $(this.scope).data('fndtn-tooltips', true);
 | 
			
		||||
      } else {
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    showOrCreateTip : function ($target) {
 | 
			
		||||
      var $tip = this.getTip($target);
 | 
			
		||||
 | 
			
		||||
      if ($tip && $tip.length > 0) {
 | 
			
		||||
        return this.show($target);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return this.create($target);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getTip : function ($target) {
 | 
			
		||||
      var selector = this.selector($target),
 | 
			
		||||
          tip = null;
 | 
			
		||||
 | 
			
		||||
      if (selector) {
 | 
			
		||||
        tip = $('span[data-selector="' + selector + '"]' + this.settings.tooltipClass);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return (typeof tip === 'object') ? tip : false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    selector : function ($target) {
 | 
			
		||||
      var id = $target.attr('id'),
 | 
			
		||||
          dataSelector = $target.attr('data-tooltip') || $target.attr('data-selector');
 | 
			
		||||
 | 
			
		||||
      if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
 | 
			
		||||
        dataSelector = 'tooltip' + Math.random().toString(36).substring(7);
 | 
			
		||||
        $target.attr('data-selector', dataSelector);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return (id && id.length > 0) ? id : dataSelector;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    create : function ($target) {
 | 
			
		||||
      var $tip = $(this.settings.tipTemplate(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
 | 
			
		||||
          classes = this.inheritable_classes($target);
 | 
			
		||||
 | 
			
		||||
      $tip.addClass(classes).appendTo(this.settings.appendTo);
 | 
			
		||||
      if (Modernizr.touch) {
 | 
			
		||||
        $tip.append('<span class="tap-to-close">tap to close </span>');
 | 
			
		||||
      }
 | 
			
		||||
      $target.removeAttr('title').attr('title','');
 | 
			
		||||
      this.show($target);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reposition : function (target, tip, classes) {
 | 
			
		||||
      var width, nub, nubHeight, nubWidth, column, objPos;
 | 
			
		||||
 | 
			
		||||
      tip.css('visibility', 'hidden').show();
 | 
			
		||||
 | 
			
		||||
      width = target.data('width');
 | 
			
		||||
      nub = tip.children('.nub');
 | 
			
		||||
      nubHeight = this.outerHeight(nub);
 | 
			
		||||
      nubWidth = this.outerHeight(nub);
 | 
			
		||||
 | 
			
		||||
      objPos = function (obj, top, right, bottom, left, width) {
 | 
			
		||||
        return obj.css({
 | 
			
		||||
          'top' : (top) ? top : 'auto',
 | 
			
		||||
          'bottom' : (bottom) ? bottom : 'auto',
 | 
			
		||||
          'left' : (left) ? left : 'auto',
 | 
			
		||||
          'right' : (right) ? right : 'auto',
 | 
			
		||||
          'width' : (width) ? width : 'auto'
 | 
			
		||||
        }).end();
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', target.offset().left, width);
 | 
			
		||||
 | 
			
		||||
      if ($(window).width() < 767) {
 | 
			
		||||
        objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', 12.5, $(this.scope).width());
 | 
			
		||||
        tip.addClass('tip-override');
 | 
			
		||||
        objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);
 | 
			
		||||
      } else {
 | 
			
		||||
        var left = target.offset().left;
 | 
			
		||||
        if (Foundation.rtl) {
 | 
			
		||||
          left = target.offset().left + target.offset().width - this.outerWidth(tip);
 | 
			
		||||
        }
 | 
			
		||||
        objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', left, width);
 | 
			
		||||
        tip.removeClass('tip-override');
 | 
			
		||||
        if (classes && classes.indexOf('tip-top') > -1) {
 | 
			
		||||
          objPos(tip, (target.offset().top - this.outerHeight(tip)), 'auto', 'auto', left, width)
 | 
			
		||||
            .removeClass('tip-override');
 | 
			
		||||
        } else if (classes && classes.indexOf('tip-left') > -1) {
 | 
			
		||||
          objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left - this.outerWidth(tip) - nubHeight), width)
 | 
			
		||||
            .removeClass('tip-override');
 | 
			
		||||
        } else if (classes && classes.indexOf('tip-right') > -1) {
 | 
			
		||||
          objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left + this.outerWidth(target) + nubHeight), width)
 | 
			
		||||
            .removeClass('tip-override');
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      tip.css('visibility', 'visible').hide();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    inheritable_classes : function (target) {
 | 
			
		||||
      var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'noradius'].concat(this.settings.additionalInheritableClasses),
 | 
			
		||||
          classes = target.attr('class'),
 | 
			
		||||
          filtered = classes ? $.map(classes.split(' '), function (el, i) {
 | 
			
		||||
            if ($.inArray(el, inheritables) !== -1) {
 | 
			
		||||
              return el;
 | 
			
		||||
            }
 | 
			
		||||
          }).join(' ') : '';
 | 
			
		||||
 | 
			
		||||
      return $.trim(filtered);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    show : function ($target) {
 | 
			
		||||
      var $tip = this.getTip($target);
 | 
			
		||||
 | 
			
		||||
      this.reposition($target, $tip, $target.attr('class'));
 | 
			
		||||
      $tip.fadeIn(150);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    hide : function ($target) {
 | 
			
		||||
      var $tip = this.getTip($target);
 | 
			
		||||
 | 
			
		||||
      $tip.fadeOut(150);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // deprecate reload
 | 
			
		||||
    reload : function () {
 | 
			
		||||
      var $self = $(this);
 | 
			
		||||
 | 
			
		||||
      return ($self.data('fndtn-tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.tooltip');
 | 
			
		||||
      $(this.settings.tooltipClass).each(function (i) {
 | 
			
		||||
        $('[data-tooltip]').get(i).attr('title', $(this).text());
 | 
			
		||||
      }).remove();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										297
									
								
								js/foundation/foundation.topbar.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										297
									
								
								js/foundation/foundation.topbar.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,297 @@
 | 
			
		|||
/*jslint unparam: true, browser: true, indent: 2 */
 | 
			
		||||
 | 
			
		||||
;(function ($, window, document, undefined) {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Foundation.libs.topbar = {
 | 
			
		||||
    name : 'topbar',
 | 
			
		||||
 | 
			
		||||
    version : '4.2.2',
 | 
			
		||||
 | 
			
		||||
    settings : {
 | 
			
		||||
      index : 0,
 | 
			
		||||
      stickyClass : 'sticky',
 | 
			
		||||
      custom_back_text: true,
 | 
			
		||||
      back_text: 'Back',
 | 
			
		||||
      is_hover: true,
 | 
			
		||||
      scrolltop : true, // jump to top when sticky nav menu toggle is clicked
 | 
			
		||||
      init : false
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    init : function (section, method, options) {
 | 
			
		||||
      Foundation.inherit(this, 'data_options');
 | 
			
		||||
      var self = this;
 | 
			
		||||
 | 
			
		||||
      if (typeof method === 'object') {
 | 
			
		||||
        $.extend(true, this.settings, method);
 | 
			
		||||
      } else if (typeof options !== 'undefined') {
 | 
			
		||||
        $.extend(true, this.settings, options);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof method !== 'string') {
 | 
			
		||||
 | 
			
		||||
        $('.top-bar, [data-topbar]').each(function () {
 | 
			
		||||
          $.extend(true, self.settings, self.data_options($(this)));
 | 
			
		||||
          self.settings.$w = $(window);
 | 
			
		||||
          self.settings.$topbar = $(this);
 | 
			
		||||
          self.settings.$section = self.settings.$topbar.find('section');
 | 
			
		||||
          self.settings.$titlebar = self.settings.$topbar.children('ul').first();
 | 
			
		||||
          self.settings.$topbar.data('index', 0);
 | 
			
		||||
 | 
			
		||||
          var breakpoint = $("<div class='top-bar-js-breakpoint'/>").insertAfter(self.settings.$topbar);
 | 
			
		||||
          self.settings.breakPoint = breakpoint.width();
 | 
			
		||||
          breakpoint.remove();
 | 
			
		||||
 | 
			
		||||
          self.assemble();
 | 
			
		||||
 | 
			
		||||
          if (self.settings.$topbar.parent().hasClass('fixed')) {
 | 
			
		||||
            $('body').css('padding-top', self.outerHeight(self.settings.$topbar));
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        if (!self.settings.init) {
 | 
			
		||||
          this.events();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this.settings.init;
 | 
			
		||||
      } else {
 | 
			
		||||
        // fire method
 | 
			
		||||
        return this[method].call(this, options);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    events : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      var offst = this.outerHeight($('.top-bar, [data-topbar]'));
 | 
			
		||||
      $(this.scope)
 | 
			
		||||
        .off('.fndtn.topbar')
 | 
			
		||||
        .on('click.fndtn.topbar', '.top-bar .toggle-topbar, [data-topbar] .toggle-topbar', function (e) {
 | 
			
		||||
          var topbar = $(this).closest('.top-bar, [data-topbar]'),
 | 
			
		||||
              section = topbar.find('section, .section'),
 | 
			
		||||
              titlebar = topbar.children('ul').first();
 | 
			
		||||
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
 | 
			
		||||
          if (self.breakpoint()) {
 | 
			
		||||
            if (!self.rtl) {
 | 
			
		||||
              section.css({left: '0%'});
 | 
			
		||||
              section.find('>.name').css({left: '100%'});
 | 
			
		||||
            } else {
 | 
			
		||||
              section.css({right: '0%'});
 | 
			
		||||
              section.find('>.name').css({right: '100%'});
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            section.find('li.moved').removeClass('moved');
 | 
			
		||||
            topbar.data('index', 0);
 | 
			
		||||
 | 
			
		||||
            topbar
 | 
			
		||||
              .toggleClass('expanded')
 | 
			
		||||
              .css('max-height', '');
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (!topbar.hasClass('expanded')) {
 | 
			
		||||
            if (topbar.hasClass('fixed')) {
 | 
			
		||||
              topbar.parent().addClass('fixed');
 | 
			
		||||
              topbar.removeClass('fixed');
 | 
			
		||||
              $('body').css('padding-top',offst);
 | 
			
		||||
            }
 | 
			
		||||
          } else if (topbar.parent().hasClass('fixed')) {
 | 
			
		||||
            topbar.parent().removeClass('fixed');
 | 
			
		||||
            topbar.addClass('fixed');
 | 
			
		||||
            $('body').css('padding-top','0');
 | 
			
		||||
 | 
			
		||||
            if (self.settings.scrolltop) {
 | 
			
		||||
              window.scrollTo(0,0);
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        .on('mouseenter mouseleave', '.top-bar li', function (e) {
 | 
			
		||||
          if (!self.settings.is_hover) return;
 | 
			
		||||
 | 
			
		||||
          if (/enter|over/i.test(e.type)) {
 | 
			
		||||
            $(this).addClass('hover');
 | 
			
		||||
          } else {
 | 
			
		||||
            $(this).removeClass('hover');
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        .on('click.fndtn.topbar', '.top-bar li.has-dropdown', function (e) {
 | 
			
		||||
          if (self.breakpoint()) return;
 | 
			
		||||
 | 
			
		||||
          var li = $(this),
 | 
			
		||||
              target = $(e.target),
 | 
			
		||||
              topbar = li.closest('[data-topbar], .top-bar'),
 | 
			
		||||
              is_hover = topbar.data('topbar');
 | 
			
		||||
 | 
			
		||||
          if (self.settings.is_hover && !Modernizr.touch) return;
 | 
			
		||||
 | 
			
		||||
          e.stopImmediatePropagation();
 | 
			
		||||
 | 
			
		||||
          if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
 | 
			
		||||
            e.preventDefault();
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (li.hasClass('hover')) {
 | 
			
		||||
            li
 | 
			
		||||
              .removeClass('hover')
 | 
			
		||||
              .find('li')
 | 
			
		||||
              .removeClass('hover');
 | 
			
		||||
          } else {
 | 
			
		||||
            li.addClass('hover');
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        .on('click.fndtn.topbar', '.top-bar .has-dropdown>a, [data-topbar] .has-dropdown>a', function (e) {
 | 
			
		||||
          if (self.breakpoint()) {
 | 
			
		||||
            e.preventDefault();
 | 
			
		||||
 | 
			
		||||
            var $this = $(this),
 | 
			
		||||
                topbar = $this.closest('.top-bar, [data-topbar]'),
 | 
			
		||||
                section = topbar.find('section, .section'),
 | 
			
		||||
                titlebar = topbar.children('ul').first(),
 | 
			
		||||
                dropdownHeight = $this.next('.dropdown').outerHeight(),
 | 
			
		||||
                $selectedLi = $this.closest('li');
 | 
			
		||||
 | 
			
		||||
            topbar.data('index', topbar.data('index') + 1);
 | 
			
		||||
            $selectedLi.addClass('moved');
 | 
			
		||||
 | 
			
		||||
            if (!self.rtl) {
 | 
			
		||||
              section.css({left: -(100 * topbar.data('index')) + '%'});
 | 
			
		||||
              section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
 | 
			
		||||
            } else {
 | 
			
		||||
              section.css({right: -(100 * topbar.data('index')) + '%'});
 | 
			
		||||
              section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            topbar.css('max-height', self.height($this.siblings('ul')) + self.outerHeight(titlebar, true));
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      $(window).on('resize.fndtn.topbar', function () {
 | 
			
		||||
        if (!self.breakpoint()) {
 | 
			
		||||
          $('.top-bar, [data-topbar]')
 | 
			
		||||
            .css('max-height', '')
 | 
			
		||||
            .removeClass('expanded')
 | 
			
		||||
            .find('li')
 | 
			
		||||
            .removeClass('hover');
 | 
			
		||||
        }
 | 
			
		||||
      }.bind(this));
 | 
			
		||||
 | 
			
		||||
      $('body').on('click.fndtn.topbar', function (e) {
 | 
			
		||||
        var parent = $(e.target).closest('[data-topbar], .top-bar');
 | 
			
		||||
 | 
			
		||||
        if (parent.length > 0) {
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $('.top-bar li, [data-topbar] li').removeClass('hover');
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      // Go up a level on Click
 | 
			
		||||
      $(this.scope).on('click.fndtn', '.top-bar .has-dropdown .back, [data-topbar] .has-dropdown .back', function (e) {
 | 
			
		||||
        e.preventDefault();
 | 
			
		||||
 | 
			
		||||
        var $this = $(this),
 | 
			
		||||
            topbar = $this.closest('.top-bar, [data-topbar]'),
 | 
			
		||||
            titlebar = topbar.children('ul').first(),
 | 
			
		||||
            section = topbar.find('section, .section'),
 | 
			
		||||
            $movedLi = $this.closest('li.moved'),
 | 
			
		||||
            $previousLevelUl = $movedLi.parent();
 | 
			
		||||
 | 
			
		||||
        topbar.data('index', topbar.data('index') - 1);
 | 
			
		||||
 | 
			
		||||
        if (!self.rtl) {
 | 
			
		||||
          section.css({left: -(100 * topbar.data('index')) + '%'});
 | 
			
		||||
          section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
 | 
			
		||||
        } else {
 | 
			
		||||
          section.css({right: -(100 * topbar.data('index')) + '%'});
 | 
			
		||||
          section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (topbar.data('index') === 0) {
 | 
			
		||||
          topbar.css('max-height', '');
 | 
			
		||||
        } else {
 | 
			
		||||
          topbar.css('max-height', self.height($previousLevelUl) + self.outerHeight(titlebar, true));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        setTimeout(function () {
 | 
			
		||||
          $movedLi.removeClass('moved');
 | 
			
		||||
        }, 300);
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    breakpoint : function () {
 | 
			
		||||
      return $(document).width() <= this.settings.breakPoint || $('html').hasClass('lt-ie9');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    assemble : function () {
 | 
			
		||||
      var self = this;
 | 
			
		||||
      // Pull element out of the DOM for manipulation
 | 
			
		||||
      this.settings.$section.detach();
 | 
			
		||||
 | 
			
		||||
      this.settings.$section.find('.has-dropdown>a').each(function () {
 | 
			
		||||
        var $link = $(this),
 | 
			
		||||
            $dropdown = $link.siblings('.dropdown'),
 | 
			
		||||
            url = $link.attr('href');
 | 
			
		||||
 | 
			
		||||
        if (url && url.length > 1) {
 | 
			
		||||
          var $titleLi = $('<li class="title back js-generated"><h5><a href="#"></a></h5></li><li><a class="parent-link js-generated" href="' + url + '">' + $link.text() +'</a></li>');
 | 
			
		||||
        } else {
 | 
			
		||||
          var $titleLi = $('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Copy link to subnav
 | 
			
		||||
        if (self.settings.custom_back_text == true) {
 | 
			
		||||
          $titleLi.find('h5>a').html('« ' + self.settings.back_text);
 | 
			
		||||
        } else {
 | 
			
		||||
          $titleLi.find('h5>a').html('« ' + $link.html());
 | 
			
		||||
        }
 | 
			
		||||
        $dropdown.prepend($titleLi);
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      // Put element back in the DOM
 | 
			
		||||
      this.settings.$section.appendTo(this.settings.$topbar);
 | 
			
		||||
 | 
			
		||||
      // check for sticky
 | 
			
		||||
      this.sticky();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    height : function (ul) {
 | 
			
		||||
      var total = 0,
 | 
			
		||||
          self = this;
 | 
			
		||||
 | 
			
		||||
      ul.find('> li').each(function () { total += self.outerHeight($(this), true); });
 | 
			
		||||
 | 
			
		||||
      return total;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    sticky : function () {
 | 
			
		||||
      var klass = '.' + this.settings.stickyClass;
 | 
			
		||||
      if ($(klass).length > 0) {
 | 
			
		||||
        var distance = $(klass).length ? $(klass).offset().top: 0,
 | 
			
		||||
            $window = $(window);
 | 
			
		||||
            var offst = this.outerHeight($('.top-bar'));
 | 
			
		||||
 | 
			
		||||
          $window.scroll(function() {
 | 
			
		||||
            if ($window.scrollTop() >= (distance)) {
 | 
			
		||||
              $(klass).addClass("fixed");
 | 
			
		||||
              $('body').css('padding-top',offst);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            else if ($window.scrollTop() < distance) {
 | 
			
		||||
              $(klass).removeClass("fixed");
 | 
			
		||||
              $('body').css('padding-top','0');
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    off : function () {
 | 
			
		||||
      $(this.scope).off('.fndtn.topbar');
 | 
			
		||||
      $(window).off('.fndtn.topbar');
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    reflow : function () {}
 | 
			
		||||
  };
 | 
			
		||||
}(Foundation.zj, this, this.document));
 | 
			
		||||
							
								
								
									
										26
									
								
								js/prism-ruby-language.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								js/prism-ruby-language.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
(function(){
 | 
			
		||||
 | 
			
		||||
if(!window.Prism) {
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Prism.languages.ruby = {
 | 
			
		||||
	'comment': /#[^\r\n]*(\r?\n|$)/g,
 | 
			
		||||
	'string': /("|')(\\?.)*?\1/g,
 | 
			
		||||
	'regex': {
 | 
			
		||||
		pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,
 | 
			
		||||
		lookbehind: true
 | 
			
		||||
	},
 | 
			
		||||
	'keyword': /\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield|desc|task|on|within|as|with|capture|execute|test|role|server)\b/g,
 | 
			
		||||
	'builtin': /\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,
 | 
			
		||||
	'boolean': /\b(true|false)\b/g,
 | 
			
		||||
	'number': /\b-?(0x)?\d*\.?\d+\b/g,
 | 
			
		||||
	'operator': /[-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\//g,
 | 
			
		||||
	'inst-var': /[@&]\b[a-zA-Z_][a-zA-Z_0-9]*[?!]?\b/g,
 | 
			
		||||
	'symbol': /:\b[a-zA-Z_][a-zA-Z_0-9]*[?!]?\b/g,
 | 
			
		||||
	'const': /\b[A-Z][a-zA-Z_0-9]*[?!]?\b/g,
 | 
			
		||||
	'ignore': /&(lt|gt|amp);/gi,
 | 
			
		||||
	'punctuation': /[{}[\];(),.:]/g
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
})();
 | 
			
		||||
							
								
								
									
										9
									
								
								js/prism.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								js/prism.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Prism: Lightweight, robust, elegant syntax highlighting
 | 
			
		||||
 * MIT license http://www.opensource.org/licenses/mit-license.php/
 | 
			
		||||
 * @author Lea Verou http://lea.verou.me
 | 
			
		||||
 */(function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;f=f.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ");var l={element:r,language:o,grammar:u,code:f};t.hooks.run("before-highlight",l);if(i&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){l.highlightedCode=n.stringify(JSON.parse(e.data),o);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(l.element);t.hooks.run("after-highlight",l)};c.postMessage(JSON.stringify({language:l.language,code:l.code}))}else{l.highlightedCode=t.highlight(l.code,l.grammar,l.language);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(r);t.hooks.run("after-highlight",l)}},highlight:function(e,r,i){return n.stringify(t.tokenize(e,r),i)},tokenize:function(e,n,r){var i=t.Token,s=[e],o=n.rest;if(o){for(var u in o)n[u]=o[u];delete n.rest}e:for(var u in n){if(!n.hasOwnProperty(u)||!n[u])continue;var a=n[u],f=a.inside,l=!!a.lookbehind,c=0;a=a.pattern||a;for(var h=0;h<s.length;h++){var p=s[h];if(s.length>e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+"</"+s.tag+">"};if(!self.document){self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}})();;
 | 
			
		||||
Prism.languages.markup={comment:/<!--[\w\W]*?-->/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&/,"&"))});;
 | 
			
		||||
Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/ig,inside:{tag:{pattern:/(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});;
 | 
			
		||||
Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:class|interface|extends|implements|trait|instanceof|new)\s+)[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};;
 | 
			
		||||
Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|catch|finally|null|break|continue)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig,inside:{tag:{pattern:/(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});;
 | 
			
		||||
							
								
								
									
										43
									
								
								js/rainbow-custom.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								js/rainbow-custom.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
/* Rainbow v1.2 rainbowco.de | included languages: c, shell, java, d, coffeescript, generic, scheme, javascript, r, haskell, python, html, smalltalk, csharp, go, php, ruby, lua, css */
 | 
			
		||||
var k=!0;
 | 
			
		||||
window.Rainbow=function(){function r(a){var b,c=a.getAttribute&&a.getAttribute("data-language")||0;if(!c){a=a.attributes;for(b=0;b<a.length;++b)if("data-language"===a[b].nodeName)return a[b].nodeValue}return c}function C(a){var b=r(a)||r(a.parentNode);if(!b){var c=/\blang(?:uage)?-(\w+)/;(a=a.className.match(c)||a.parentNode.className.match(c))&&(b=a[1])}return b}function D(a,b){for(var c in f[d]){c=parseInt(c,10);if(a==c&&b==f[d][c]?0:a<=c&&b>=f[d][c])delete f[d][c],delete j[d][c];if(a>=c&&a<f[d][c]||
 | 
			
		||||
b>c&&b<f[d][c])return k}return!1}function s(a,b){return'<span class="'+a.replace(/\./g," ")+(m?" "+m:"")+'">'+b+"</span>"}function t(a,b,c,i){var e=a.exec(c);if(e){++u;!b.name&&"string"==typeof b.matches[0]&&(b.name=b.matches[0],delete b.matches[0]);var l=e[0],g=e.index,v=e[0].length+g,h=function(){function e(){t(a,b,c,i)}u%100>0?e():setTimeout(e,0)};if(D(g,v))h();else{var n=w(b.matches),m=function(a,c,i){if(a>=c.length)i(l);else{var d=e[c[a]];if(d){var g=b.matches[c[a]],f=g.language,h=g.name&&g.matches?
 | 
			
		||||
g.matches:g,j=function(b,d,g){var f;f=0;var h;for(h=1;h<c[a];++h)e[h]&&(f=f+e[h].length);d=g?s(g,d):d;l=l.substr(0,f)+l.substr(f).replace(b,d);m(++a,c,i)};f?o(d,f,function(a){j(d,a)}):typeof g==="string"?j(d,d,g):x(d,h.length?h:[h],function(a){j(d,a,g.matches?g.name:0)})}else m(++a,c,i)}};m(0,n,function(a){b.name&&(a=s(b.name,a));if(!j[d]){j[d]={};f[d]={}}j[d][g]={replace:e[0],"with":a};f[d][g]=v;h()})}}else i()}function w(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort(function(a,
 | 
			
		||||
b){return b-a})}function x(a,b,c){function i(b,l){l<b.length?t(b[l].pattern,b[l],a,function(){i(b,++l)}):E(a,function(a){delete j[d];delete f[d];--d;c(a)})}++d;i(b,0)}function E(a,b){function c(a,b,i,f){if(i<b.length){++y;var h=b[i],m=j[d][h],a=a.substr(0,h)+a.substr(h).replace(m.replace,m["with"]),h=function(){c(a,b,++i,f)};0<y%250?h():setTimeout(h,0)}else f(a)}var i=w(j[d]);c(a,i,0,b)}function o(a,b,c){var d=n[b]||[],e=n[z]||[],b=A[b]?d:d.concat(e);x(a.replace(/</g,"<").replace(/>/g,">").replace(/&(?![\w\#]+;)/g,
 | 
			
		||||
"&"),b,c)}function p(a,b,c){if(b<a.length){var d=a[b],e=C(d);return!(-1<(" "+d.className+" ").indexOf(" rainbow "))&&e?(e=e.toLowerCase(),d.className+=d.className?" rainbow":"rainbow",o(d.innerHTML,e,function(l){d.innerHTML=l;j={};f={};q&&q(d,e);setTimeout(function(){p(a,++b,c)},0)})):p(a,++b,c)}c&&c()}function B(a,b){var a=a&&"function"==typeof a.getElementsByTagName?a:document,c=a.getElementsByTagName("pre"),d=a.getElementsByTagName("code"),e,f=[],g=[];for(e=0;e<c.length;++e)c[e].getElementsByTagName("code").length?
 | 
			
		||||
c[e].innerHTML=c[e].innerHTML.replace(/^\s+/,"").replace(/\s+$/,""):f.push(c[e]);for(e=0;e<d.length;++e)g.push(d[e]);p(g.concat(f),0,b)}var j={},f={},n={},A={},d=0,z=0,u=0,y=0,m,q;return{extend:function(a,b,c){1==arguments.length&&(b=a,a=z);A[a]=c;n[a]=b.concat(n[a]||[])},c:function(a){q=a},a:function(a){m=a},color:function(a,b,c){if("string"==typeof a)return o(a,b,c);if("function"==typeof a)return B(0,a);B(a,b)}}}();
 | 
			
		||||
document.addEventListener?document.addEventListener("DOMContentLoaded",Rainbow.color,!1):window.attachEvent("onload",Rainbow.color);Rainbow.onHighlight=Rainbow.c;Rainbow.addClass=Rainbow.a;Rainbow.extend("c",[{name:"meta.preprocessor",matches:{1:[{matches:{1:"keyword.define",2:"entity.name"},pattern:/(\w+)\s(\w+)\b/g},{name:"keyword.define",pattern:/endif/g},{name:"constant.numeric",pattern:/\d+/g},{matches:{1:"keyword.include",2:"string"},pattern:/(include)\s(.*?)$/g}]},pattern:/\#([\S\s]*?)$/gm},{name:"keyword",pattern:/\b(do|goto|typedef)\b/g},{name:"entity.label",pattern:/\w+:/g},{matches:{1:"storage.type",3:"storage.type",4:"entity.name.function"},pattern:/\b((un)?signed|const)? ?(void|char|short|int|long|float|double)\*? +((\w+)(?= ?\())?/g},
 | 
			
		||||
{matches:{2:"entity.name.function"},pattern:/(\w|\*) +((\w+)(?= ?\())/g},{name:"storage.modifier",pattern:/\b(static|extern|auto|register|volatile|inline)\b/g},{name:"support.type",pattern:/\b(struct|union|enum)\b/g}]);Rainbow.extend("shell",[{name:"shell",matches:{1:{language:"shell"}},pattern:/\$\(([\s\S]*?)\)/gm},{matches:{2:"string"},pattern:/(\(|\s|\[|\=)(('|")[\s\S]*?(\3))/gm},{name:"keyword.operator",pattern:/<|>|&/g},{name:"comment",pattern:/\#[\s\S]*?$/gm},{name:"storage.function",pattern:/(.+?)(?=\(\)\s{0,}\{)/g},{name:"support.command",pattern:/\b(echo|rm|ls|(mk|rm)dir|cd|find|cp|exit|pwd|exec|trap|source|shift|unset)/g},{matches:{1:"keyword"},pattern:/\b(break|case|continue|do|done|elif|else|esac|eval|export|fi|for|function|if|in|local|return|set|then|unset|until|while)(?=\(|\b)/g}],
 | 
			
		||||
k);Rainbow.extend("java",[{name:"constant",pattern:/\b(false|null|true|[A-Z_]+)\b/g},{b:{1:"keyword",2:"support.namespace"},pattern:/(import|package)\s(.+)/g},{name:"keyword",pattern:/\b(abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\b/g},
 | 
			
		||||
{name:"string",pattern:/(".*?")/g},{name:"char",pattern:/(')(.|\\.|\\u[\dA-Fa-f]{4})\1/g},{name:"integer",pattern:/\b(0x[\da-f]+|\d+)L?\b/g},{name:"comment",pattern:/\/\*[\s\S]*?\*\/|(\/\/).*?$/gm},{name:"support.annotation",pattern:/@\w+/g},{b:{1:"entity.function"},pattern:/([^@\.\s]+)\(/g},{name:"entity.class",pattern:/\b([A-Z]\w*)\b/g},{name:"operator",pattern:/(\+{1,2}|-{1,2}|~|!|\*|\/|%|(?:<){1,2}|(?:>){1,3}|instanceof|(?:&){1,2}|\^|\|{1,2}|\?|:|(?:=|!|\+|-|\*|\/|%|\^|\||(?:<){1,2}|(?:>){1,3})?=)/g}],
 | 
			
		||||
k);Rainbow.extend("d",[{name:"constant",pattern:/\b(false|null|true)\b/g},{name:"keyword",pattern:/\b(abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|in|inout|int|interface|invariant|ireal|is|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|size_t|static|string|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__FILE__|__LINE__|__gshared|__traits|__vector|__parameters)\b/g},
 | 
			
		||||
{matches:{1:"keyword",2:{name:"support.class",pattern:/\w+/g}},pattern:/(typeof)\s([^\$].*?)(\)|;)/g},{matches:{1:"keyword.namespace",2:{name:"support.namespace",pattern:/\w+/g}},pattern:/\b(namespace)\s(.*?);/g},{matches:{1:"storage.modifier",2:"storage.class",3:"entity.name.class",4:"storage.modifier.extends",5:"entity.other.inherited-class"},pattern:/\b(abstract|sealed)?\s?(class)\s(\w+)(\sextends\s)?([\w\\]*)?\s?\{?(\n|\})/g},{name:"keyword.static",pattern:/\b(static)\b/g},{matches:{1:"keyword.new",
 | 
			
		||||
2:{name:"support.class",pattern:/\w+/g}},pattern:/\b(new)\s([^\$].*?)(?=\)|\(|;|&)/g},{name:"string",pattern:/("|')(.*?)\1/g},{name:"integer",pattern:/\b(0x[\da-f]+|\d+)\b/g},{name:"comment",pattern:/\/\*[\s\S]*?\*\/|\/\+[\s\S]*?\+\/|(\/\/)[\s\S]*?$/gm},{name:"operator",pattern:/(\/|\/=|.|..|...|&|&=|&&|\||\|=|\|\||\-|\-=|\-\-|\+|\+=|\+\+|<|<=|<<|<<=|<>|<>=|>|>=|>>=|>>>=|>>|>>>|!|!=|!<>|!<>=|!<|!<=|!>|!>=|\(|\)|[|]|\{|\}|\?|,|;|:|\$|=|==|\*|\*=|%|%=|\^|\^=|\^\^|\^\^=|~|~=|@|=>|\#)/g}],
 | 
			
		||||
k);Rainbow.extend("coffeescript",[{name:"comment.block",pattern:/(\#{3})[\s\S]*\1/gm},{name:"string.block",pattern:/('{3}|"{3})[\s\S]*\1/gm},{name:"string.regex",matches:{2:{name:"comment",pattern:/\#(.*?)\n/g}},pattern:/(\/{3})([\s\S]*)\1/gm},{matches:{1:"keyword"},pattern:/\b(in|when|is|isnt|of|not|unless|until|super)(?=\b)/gi},{name:"keyword.operator",pattern:/\?/g},{name:"constant.language",pattern:/\b(undefined|yes|on|no|off)\b/g},{name:"keyword.variable.coffee",pattern:/@(\w+)/gi},{name:"reset",
 | 
			
		||||
pattern:/object|class|print/gi},{matches:{1:"entity.name.function",2:"keyword.operator",3:{name:"function.argument.coffee",pattern:/([\@\w]+)/g},4:"keyword.function"},pattern:/(\w+)\s{0,}(=|:)\s{0,}\((.*?)((-|=)>)/gi},{matches:{1:{name:"function.argument.coffee",pattern:/([\@\w]+)/g},2:"keyword.function"},pattern:/\s\((.*?)\)\s{0,}((-|=)>)/gi},{matches:{1:"entity.name.function",2:"keyword.operator",3:"keyword.function"},pattern:/(\w+)\s{0,}(=|:)\s{0,}((-|=)>)/gi},{matches:{1:"storage.class",
 | 
			
		||||
2:"entity.name.class",3:"storage.modifier.extends",4:"entity.other.inherited-class"},pattern:/\b(class)\s(\w+)(\sextends\s)?([\w\\]*)?\b/g},{matches:{1:"keyword.new",2:{name:"support.class",pattern:/\w+/g}},pattern:/\b(new)\s(.*?)(?=\s)/g}]);Rainbow.extend([{matches:{1:{name:"keyword.operator",pattern:/\=/g},2:{name:"string",matches:{name:"constant.character.escape",pattern:/\\('|"){1}/g}}},pattern:/(\(|\s|\[|\=|:)(('|")([^\\\1]|\\.)*?(\3))/gm},{name:"comment",pattern:/\/\*[\s\S]*?\*\/|(\/\/|\#)[\s\S]*?$/gm},{name:"constant.numeric",pattern:/\b(\d+(\.\d+)?(e(\+|\-)?\d+)?(f|d)?|0x[\da-f]+)\b/gi},{matches:{1:"keyword"},pattern:/\b(and|array|as|b(ool(ean)?|reak)|c(ase|atch|har|lass|on(st|tinue))|d(ef|elete|o(uble)?)|e(cho|lse(if)?|xit|xtends|xcept)|f(inally|loat|or(each)?|unction)|global|if|import|int(eger)?|long|new|object|or|pr(int|ivate|otected)|public|return|self|st(ring|ruct|atic)|switch|th(en|is|row)|try|(un)?signed|var|void|while)(?=\(|\b)/gi},
 | 
			
		||||
{name:"constant.language",pattern:/true|false|null/g},{name:"keyword.operator",pattern:/\+|\!|\-|&(gt|lt|amp);|\||\*|\=/g},{matches:{1:"function.call"},pattern:/(\w+?)(?=\()/g},{matches:{1:"storage.function",2:"entity.name.function"},pattern:/(function)\s(.*?)(?=\()/g}]);Rainbow.extend("scheme",[{name:"plain",pattern:/>|</g},{name:"comment",pattern:/;.*$/gm},{name:"constant.language",pattern:/#t|#f|'\(\)/g},{name:"constant.symbol",pattern:/'[^()\s#]+/g},{name:"constant.number",pattern:/\b\d+(?:\.\d*)?\b/g},{name:"string",pattern:/".+?"/g},{matches:{1:"storage.function",2:"variable"},pattern:/\(\s*(define)\s+\(?(\S+)/g},{matches:{1:"keyword"},pattern:/\(\s*(begin|define\-syntax|if|lambda|quasiquote|quote|set!|syntax\-rules|and|and\-let\*|case|cond|delay|do|else|or|let|let\*|let\-syntax|letrec|letrec\-syntax)(?=[\]()\s#])/g},
 | 
			
		||||
{matches:{1:"entity.function"},pattern:/\(\s*(eqv\?|eq\?|equal\?|number\?|complex\?|real\?|rational\?|integer\?|exact\?|inexact\?|=|<|>|<=|>=|zero\?|positive\?|negative\?|odd\?|even\?|max|min|\+|\-|\*|\/|abs|quotient|remainder|modulo|gcd|lcm|numerator|denominator|floor|ceiling|truncate|round|rationalize|exp|log|sin|cos|tan|asin|acos|atan|sqrt|expt|make\-rectangular|make\-polar|real\-part|imag\-part|magnitude|angle|exact\->inexact|inexact\->exact|number\->string|string\->number|not|boolean\?|pair\?|cons|car|cdr|set\-car!|set\-cdr!|caar|cadr|cdar|cddr|caaar|caadr|cadar|caddr|cdaar|cdadr|cddar|cdddr|caaaar|caaadr|caadar|caaddr|cadaar|cadadr|caddar|cadddr|cdaaar|cdaadr|cdadar|cdaddr|cddaar|cddadr|cdddar|cddddr|null\?|list\?|list|length|append|reverse|list\-tail|list\-ref|memq|memv|member|assq|assv|assoc|symbol\?|symbol\->string|string\->symbol|char\?|char=\?|char<\?|char>\?|char<=\?|char>=\?|char\-ci=\?|char\-ci<\?|char\-ci>\?|char\-ci<=\?|char\-ci>=\?|char\-alphabetic\?|char\-numeric\?|char\-whitespace\?|char\-upper\-case\?|char\-lower\-case\?|char\->integer|integer\->char|char\-upcase|char\-downcase|string\?|make\-string|string|string\-length|string\-ref|string\-set!|string=\?|string\-ci=\?|string<\?|string>\?|string<=\?|string>=\?|string\-ci<\?|string\-ci>\?|string\-ci<=\?|string\-ci>=\?|substring|string\-append|string\->list|list\->string|string\-copy|string\-fill!|vector\?|make\-vector|vector|vector\-length|vector\-ref|vector\-set!|vector\->list|list\->vector|vector\-fill!|procedure\?|apply|map|for\-each|force|call\-with\-current\-continuation|call\/cc|values|call\-with\-values|dynamic\-wind|eval|scheme\-report\-environment|null\-environment|interaction\-environment|call\-with\-input\-file|call\-with\-output\-file|input\-port\?|output\-port\?|current\-input\-port|current\-output\-port|with\-input\-from\-file|with\-output\-to\-file|open\-input\-file|open\-output\-file|close\-input\-port|close\-output\-port|read|read\-char|peek\-char|eof\-object\?|char\-ready\?|write|display|newline|write\-char|load|transcript\-on|transcript\-off)(?=[\]()\s#])/g}],
 | 
			
		||||
k);Rainbow.extend("javascript",[{name:"selector",pattern:/(\s|^)\$(?=\.|\()/g},{name:"support",pattern:/\b(window|document)\b/g},{matches:{1:"support.property"},pattern:/\.(length|node(Name|Value))\b/g},{matches:{1:"support.function"},pattern:/(setTimeout|setInterval)(?=\()/g},{matches:{1:"support.method"},pattern:/\.(getAttribute|push|getElementById|getElementsByClassName|log|setTimeout|setInterval)(?=\()/g},{matches:{1:"support.tag.script",2:[{name:"string",pattern:/('|")(.*?)(\1)/g},{name:"entity.tag.script",
 | 
			
		||||
pattern:/(\w+)/g}],3:"support.tag.script"},pattern:/(<\/?)(script.*?)(>)/g},{name:"string.regexp",matches:{1:"string.regexp.open",2:{name:"constant.regexp.escape",pattern:/\\(.){1}/g},3:"string.regexp.close",4:"string.regexp.modifier"},pattern:/(\/)(?!\*)(.+)(\/)([igm]{0,3})/g},{matches:{1:"storage",3:"entity.function"},pattern:/(var)?(\s|^)(\S*)(?=\s?=\s?function\()/g},{matches:{1:"keyword",2:"entity.function"},pattern:/(new)\s+(.*)(?=\()/g},{name:"entity.function",pattern:/(\w+)(?=:\s{0,}function)/g}]);Rainbow.extend("r",[{matches:{1:{name:"keyword.operator",pattern:/\=|<\-|<-/g},2:{name:"string",matches:{name:"constant.character.escape",pattern:/\\('|"){1}/g}}},pattern:/(\(|\s|\[|\=|:)(('|")([^\\\1]|\\.)*?(\3))/gm},{matches:{1:"constant.language"},pattern:/\b(NULL|NA|TRUE|FALSE|T|F|NaN|Inf|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/g},{matches:{1:"constant.symbol"},pattern:/[^0-9a-zA-Z\._](LETTERS|letters|month\.(abb|name)|pi)/g},{name:"keyword.operator",pattern:/<-|<-|-|==|<=|<=|>>|>=|<|>|&&|&&|&|&|!=|\|\|?|\*|\+|\^|\/|%%|%\/%|\=|%in%|%\*%|%o%|%x%|\$|:|~|\[{1,2}|\]{1,2}/g},
 | 
			
		||||
{matches:{1:"storage",3:"entity.function"},pattern:/(\s|^)(.*)(?=\s?=\s?function\s\()/g},{matches:{1:"storage.function"},pattern:/[^a-zA-Z0-9._](function)(?=\s*\()/g},{matches:{1:"namespace",2:"keyword.operator",3:"function.call"},pattern:/([a-zA-Z][a-zA-Z0-9._]+)([:]{2,3})([.a-zA-Z][a-zA-Z0-9._]*(?=\s*\())\b/g},{name:"support.function",pattern:/(^|[^0-9a-zA-Z\._])(array|character|complex|data\.frame|double|integer|list|logical|matrix|numeric|vector)(?=\s*\()/g}]);Rainbow.extend("haskell",[{name:"comment",pattern:/\{\-\-[\s\S(\w+)]+[\-\-][\}$]/gm},{name:"comment",pattern:/\-\-(.*)/g},{matches:{1:"keyword",2:"support.namespace"},pattern:/\b(module)\s(\w+)\s[\(]?(\w+)?[\)?]\swhere/g},{name:"keyword.operator",pattern:/\+|\!|\-|&(gt|lt|amp);|\/\=|\||\@|\:|\.|\+{2}|\:|\*|\=|#|\.{2}|(\\)[a-zA-Z_]/g},{name:"keyword",pattern:/\b(case|class|foreign|hiding|qualified|data|family|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|in|otherwise|module|newtype|of|then|type|where)\b/g},
 | 
			
		||||
{name:"keyword",pattern:/[\`][a-zA-Z_']*?[\`]/g},{matches:{1:"keyword",2:"keyword.operator"},pattern:/\b(infix|infixr|infixl)+\s\d+\s(\w+)*/g},{name:"entity.class",pattern:/\b([A-Z][A-Za-z0-9_']*)/g},{name:"meta.preprocessor",matches:{1:[{matches:{1:"keyword.define",2:"entity.name"},pattern:/(\w+)\s(\w+)\b/g},{name:"keyword.define",pattern:/endif/g},{name:"constant.numeric",pattern:/\d+/g},{matches:{1:"keyword.include",2:"string"},pattern:/(include)\s(.*?)$/g}]},pattern:/^\#([\S\s]*?)$/gm}]);Rainbow.extend("python",[{name:"variable.self",pattern:/self/g},{name:"constant.language",pattern:/None|True|False|NotImplemented|\.\.\./g},{name:"support.object",pattern:/object/g},{name:"support.function.python",pattern:/\b(bs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|bin|file|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern)(?=\()/g},
 | 
			
		||||
{matches:{1:"keyword"},pattern:/\b(pass|lambda|with|is|not|in|from|elif|raise|del)(?=\(|\b)/g},{matches:{1:"storage.class",2:"entity.name.class",3:"entity.other.inherited-class"},pattern:/(class)\s+(\w+)\((\w+?)\)/g},{matches:{1:"storage.function",2:"support.magic"},pattern:/(def)\s+(__\w+)(?=\()/g},{name:"support.magic",pattern:/__(name)__/g},{matches:{1:"keyword.control",2:"support.exception.type"},pattern:/(except) (\w+):/g},{matches:{1:"storage.function",2:"entity.name.function"},pattern:/(def)\s+(\w+)(?=\()/g},
 | 
			
		||||
{name:"entity.name.function.decorator",pattern:/@([\w\.]+)/g},{name:"comment.docstring",pattern:/('{3}|"{3})[\s\S]*?\1/gm}]);Rainbow.extend("html",[{name:"source.php.embedded",matches:{2:{language:"php"}},pattern:/<\?=?(?!xml)(php)?([\s\S]*?)(\?>)/gm},{name:"source.css.embedded",matches:{"0":{language:"css"}},pattern:/<style(.*?)>([\s\S]*?)<\/style>/gm},{name:"source.js.embedded",matches:{"0":{language:"javascript"}},pattern:/<script(?! src)(.*?)>([\s\S]*?)<\/script>/gm},{name:"comment.html",pattern:/<\!--[\S\s]*?-->/g},{matches:{1:"support.tag.open",2:"support.tag.close"},pattern:/(<)|(\/?\??>)/g},
 | 
			
		||||
{name:"support.tag",matches:{1:"support.tag",2:"support.tag.special",3:"support.tag-name"},pattern:/(<\??)(\/|\!?)(\w+)/g},{matches:{1:"support.attribute"},pattern:/([a-z-]+)(?=\=)/gi},{matches:{1:"support.operator",2:"string.quote",3:"string.value",4:"string.quote"},pattern:/(=)('|")(.*?)(\2)/g},{matches:{1:"support.operator",2:"support.value"},pattern:/(=)([a-zA-Z\-0-9]*)\b/g},{matches:{1:"support.attribute"},pattern:/\s(\w+)(?=\s|>)(?![\s\S]*<)/g}],k);Rainbow.extend("smalltalk",[{name:"keyword.pseudovariable",pattern:/self|thisContext/g},{name:"keyword.constant",pattern:/false|nil|true/g},{name:"string",pattern:/'([^']|'')*'/g},{name:"string.symbol",pattern:/#\w+|#'([^']|'')*'/g},{name:"string.character",pattern:/\$\w+/g},{name:"comment",pattern:/"([^"]|"")*"/g},{name:"constant.numeric",pattern:/-?\d+(\.\d+)?((r-?|s)[A-Za-z0-9]+|e-?[0-9]+)?/g},{name:"entity.name.class",pattern:/\b[A-Z]\w*/g},{name:"entity.name.function",pattern:/\b[a-z]\w*:?/g},
 | 
			
		||||
{name:"entity.name.binary",pattern:/(<|>|&|[=~\|\\\/!@*\-_+])+/g},{name:"operator.delimiter",pattern:/;[\(\)\[\]\{\}]|#\[|#\(^\./g}],k);Rainbow.extend("csharp",[{name:"constant",pattern:/\b(false|null|true)\b/g},{name:"keyword",pattern:/\b(abstract|add|alias|ascending|as|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|double|do|dynamic|else|enum|event|explicit|extern|false|finally|fixed|float|foreach|for|from|get|global|goto|group|if|implicit|int|interface|internal|into|in|is|join|let|lock|long|namespace|new|object|operator|orderby|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|select|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|try|typeof|uint|unchecked|ulong|unsafe|ushort|using|value|var|virtual|void|volatile|where|while|yield)\b/g},
 | 
			
		||||
{matches:{1:"keyword",2:{name:"support.class",pattern:/\w+/g}},pattern:/(typeof)\s([^\$].*?)(\)|;)/g},{matches:{1:"keyword.namespace",2:{name:"support.namespace",pattern:/\w+/g}},pattern:/\b(namespace)\s(.*?);/g},{matches:{1:"storage.modifier",2:"storage.class",3:"entity.name.class",4:"storage.modifier.extends",5:"entity.other.inherited-class"},pattern:/\b(abstract|sealed)?\s?(class)\s(\w+)(\sextends\s)?([\w\\]*)?\s?\{?(\n|\})/g},{name:"keyword.static",pattern:/\b(static)\b/g},{matches:{1:"keyword.new",
 | 
			
		||||
2:{name:"support.class",pattern:/\w+/g}},pattern:/\b(new)\s([^\$].*?)(?=\)|\(|;|&)/g},{name:"string",pattern:/(")(.*?)\1/g},{name:"integer",pattern:/\b(0x[\da-f]+|\d+)\b/g},{name:"comment",pattern:/\/\*[\s\S]*?\*\/|(\/\/)[\s\S]*?$/gm},{name:"operator",pattern:/(\+\+|\+=|\+|--|-=|-|<<=|<<|<=|=>|>>=|>>|>=|!=|!|~|\^|\|\||&&|&=|&|\?\?|::|:|\*=|\*|\/=|%=|\|=|==|=)/g},{name:"preprocessor",pattern:/(\#if|\#else|\#elif|\#endif|\#define|\#undef|\#warning|\#error|\#line|\#region|\#endregion|\#pragma)[\s\S]*?$/gm}],
 | 
			
		||||
k);Rainbow.extend("go",[{matches:{1:{name:"keyword.operator",pattern:/\=/g},2:{name:"string",matches:{name:"constant.character.escape",pattern:/\\(`|"){1}/g}}},pattern:/(\(|\s|\[|\=|:)((`|")([^\\\1]|\\.)*?(\3))/gm},{name:"comment",pattern:/\/\*[\s\S]*?\*\/|(\/\/)[\s\S]*?$/gm},{name:"constant.numeric",pattern:/\b(\d+(\.\d+)?(e(\+|\-)?\d+)?(f|d)?|0x[\da-f]+)\b/gi},{matches:{1:"keyword"},pattern:/\b(break|c(ase|onst|ontinue)|d(efault|efer)|else|fallthrough|for|go(to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)(?=\(|\b)/gi},
 | 
			
		||||
{name:"constant.language",pattern:/true|false|null|string|byte|rune|u?int(8|16|32|64)?|float(32|64)|complex(64|128)/g},{name:"keyword.operator",pattern:/\+|\!|\-|&(gt|lt|amp);|\||\*|\:?=/g},{matches:{1:"function.call"},pattern:/(\w+?)(?=\()/g},{matches:{1:"storage.function",2:"entity.name.function"},pattern:/(func)\s(.*?)(?=\()/g}]);Rainbow.extend("php",[{name:"support",pattern:/\becho\b/g},{matches:{1:"variable.dollar-sign",2:"variable"},pattern:/(\$)(\w+)\b/g},{name:"constant.language",pattern:/true|false|null/ig},{name:"constant",pattern:/\b[A-Z0-9_]{2,}\b/g},{name:"keyword.dot",pattern:/\./g},{name:"keyword",pattern:/\b(die|end(for(each)?|switch|if)|case|require(_once)?|include(_once)?)(?=\(|\b)/g},{matches:{1:"keyword",2:{name:"support.class",pattern:/\w+/g}},pattern:/(instanceof)\s([^\$].*?)(\)|;)/g},{matches:{1:"support.function"},
 | 
			
		||||
pattern:/\b(array(_key_exists|_merge|_keys|_shift)?|isset|count|empty|unset|printf|is_(array|string|numeric|object)|sprintf|each|date|time|substr|pos|str(len|pos|tolower|_replace|totime)?|ord|trim|in_array|implode|end|preg_match|explode|fmod|define|link|list|get_class|serialize|file|sort|mail|dir|idate|log|intval|header|chr|function_exists|dirname|preg_replace|file_exists)(?=\()/g},{name:"variable.language.php-tag",pattern:/(<\?(php)?|\?>)/g},{matches:{1:"keyword.namespace",2:{name:"support.namespace",
 | 
			
		||||
pattern:/\w+/g}},pattern:/\b(namespace|use)\s(.*?);/g},{matches:{1:"storage.modifier",2:"storage.class",3:"entity.name.class",4:"storage.modifier.extends",5:"entity.other.inherited-class",6:"storage.modifier.extends",7:"entity.other.inherited-class"},pattern:/\b(abstract|final)?\s?(class|interface|trait)\s(\w+)(\sextends\s)?([\w\\]*)?(\simplements\s)?([\w\\]*)?\s?\{?(\n|\})/g},{name:"keyword.static",pattern:/self::|static::/g},{matches:{1:"storage.function",2:"support.magic"},pattern:/(function)\s(__.*?)(?=\()/g},
 | 
			
		||||
{matches:{1:"keyword.new",2:{name:"support.class",pattern:/\w+/g}},pattern:/\b(new)\s([^\$].*?)(?=\)|\(|;)/g},{matches:{1:{name:"support.class",pattern:/\w+/g},2:"keyword.static"},pattern:/([\w\\]*?)(::)(?=\b|\$)/g},{matches:{2:{name:"support.class",pattern:/\w+/g}},pattern:/(\(|,\s?)([\w\\]*?)(?=\s\$)/g}]);Rainbow.extend("ruby",[{name:"string",matches:{1:"string.open",2:{name:"string.keyword",pattern:/(\#\{.*?\})/g},3:"string.close"},pattern:/("|`)(.*?[^\\\1])?(\1)/g},{name:"string",pattern:/('|"|`)([^\\\1\n]|\\.)*\1/g},{name:"string",pattern:/%[qQ](?=(\(|\[|\{|<|.)(.*?)(?:'|\)|\]|\}|>|\1))(?:\(\2\)|\[\2\]|\{\2\}|\<\2>|\1\2\1)/g},{matches:{1:"string",2:"string",3:"string"},pattern:/(<<)(\w+).*?$([\s\S]*?^\2)/gm},{matches:{1:"string",2:"string",3:"string"},pattern:/(<<\-)(\w+).*?$([\s\S]*?\2)/gm},
 | 
			
		||||
{name:"string.regexp",matches:{1:"string.regexp",2:{name:"string.regexp",pattern:/\\(.){1}/g},3:"string.regexp",4:"string.regexp"},pattern:/(\/)(.*?)(\/)([a-z]*)/g},{name:"string.regexp",matches:{1:"string.regexp",2:{name:"string.regexp",pattern:/\\(.){1}/g},3:"string.regexp",4:"string.regexp"},pattern:/%r(?=(\(|\[|\{|<|.)(.*?)('|\)|\]|\}|>|\1))(?:\(\2\)|\[\2\]|\{\2\}|\<\2>|\1\2\1)([a-z]*)/g},{name:"comment",pattern:/#.*$/gm},{name:"comment",pattern:/^\=begin[\s\S]*?\=end$/gm},{matches:{1:"constant"},
 | 
			
		||||
pattern:/(\w+:)[^:]/g},{matches:{1:"constant.symbol"},pattern:/[^:](:(?:\w+|(?=['"](.*?)['"])(?:"\2"|'\2')))/g},{name:"constant.numeric",pattern:/\b(0x[\da-f]+|\d+)\b/g},{name:"support.class",pattern:/\b[A-Z]\w*(?=((\.|::)[A-Za-z]|\[))/g},{name:"constant",pattern:/\b[A-Z]\w*\b/g},{matches:{1:"storage.class",2:"entity.name.class",3:"entity.other.inherited-class"},pattern:/\s*(class)\s+((?:(?:::)?[A-Z]\w*)+)(?:\s+<\s+((?:(?:::)?[A-Z]\w*)+))?/g},{matches:{1:"storage.module",2:"entity.name.class"},
 | 
			
		||||
pattern:/\s*(module)\s+((?:(?:::)?[A-Z]\w*)+)/g},{name:"variable.global",pattern:/\$([a-zA-Z_]\w*)\b/g},{name:"variable.class",pattern:/@@([a-zA-Z_]\w*)\b/g},{name:"variable.instance",pattern:/@([a-zA-Z_]\w*)\b/g},{matches:{1:"keyword.control"},pattern:/[^\.]\b(BEGIN|begin|case|class|do|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\b(?![?!])/g},{matches:{1:"keyword.control.pseudo-method"},pattern:/[^\.]\b(alias|alias_method|break|next|redo|retry|return|super|undef|yield)\b(?![?!])|\bdefined\?|\bblock_given\?/g},
 | 
			
		||||
{matches:{1:"constant.language"},pattern:/\b(nil|true|false)\b(?![?!])/g},{matches:{1:"variable.language"},pattern:/\b(__(FILE|LINE)__|self)\b(?![?!])/g},{matches:{1:"keyword.special-method"},pattern:/\b(require|gem|initialize|new|loop|include|extend|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|module_function|public|protected)\b(?![?!])/g},{name:"keyword.operator",pattern:/\s\?\s|=|<<|<<=|%=|&=|\*=|\*\*=|\+=|\-=|\^=|\|{1,2}=|<<|<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|%|&|\*\*|\*|\+|\-|\/|\||~|>>/g},
 | 
			
		||||
{matches:{1:"keyword.operator.logical"},pattern:/[^\.]\b(and|not|or)\b/g},{matches:{1:"storage.function",2:"entity.name.function"},pattern:/(def)\s(.*?)(?=(\s|\())/g}],k);Rainbow.extend("lua",[{matches:{1:{name:"keyword.operator",pattern:/\=/g},2:{name:"string",matches:{name:"constant.character.escape",pattern:/\\('|"){1}/g}}},pattern:/(\(|\s|\[|\=)(('|")([^\\\1]|\\.)*?(\3))/gm},{name:"comment",pattern:/\-{2}\[{2}\-{2}[\s\S]*?\-{2}\]{2}\-{2}|(\-{2})[\s\S]*?$/gm},{name:"constant.numeric",pattern:/\b(\d+(\.\d+)?(e(\+|\-)?\d+)?(f|d)?|0x[\da-f]+)\b/gi},{matches:{1:"keyword"},pattern:/\b((a|e)nd|in|repeat|break|local|return|do|for|then|else(if)?|function|not|if|or|until|while)(?=\(|\b)/gi},
 | 
			
		||||
{name:"constant.language",pattern:/true|false|nil/g},{name:"keyword.operator",pattern:/\+|\!|\-|&(gt|lt|amp);|\||\*|\=|#|\.{2}/g},{matches:{1:"storage.function",2:"entity.name.function"},pattern:/(function)\s+(\w+[\:|\.]?\w+?)(?=\()/g},{matches:{1:"support.function"},pattern:/\b(print|require|module|\w+\.\w+)(?=\()/g}],k);Rainbow.extend("css",[{name:"comment",pattern:/\/\*[\s\S]*?\*\//gm},{name:"constant.hex-color",pattern:/#([a-f0-9]{3}|[a-f0-9]{6})(?=;|\s|,|\))/gi},{matches:{1:"constant.numeric",2:"keyword.unit"},pattern:/(\d+)(px|em|cm|s|%)?/g},{name:"string",pattern:/('|")(.*?)\1/g},{name:"support.css-property",matches:{1:"support.vendor-prefix"},pattern:/(-o-|-moz-|-webkit-|-ms-)?[\w-]+(?=\s?:)(?!.*\{)/g},{matches:{1:[{name:"entity.name.sass",pattern:/&/g},{name:"direct-descendant",pattern:/>/g},{name:"entity.name.class",
 | 
			
		||||
pattern:/\.[\w\-_]+/g},{name:"entity.name.id",pattern:/\#[\w\-_]+/g},{name:"entity.name.pseudo",pattern:/:[\w\-_]+/g},{name:"entity.name.tag",pattern:/\w+/g}]},pattern:/([\w\ ,:\.\#\&\;\-_]+)(?=.*\{)/g},{matches:{2:"support.vendor-prefix",3:"support.css-value"},pattern:/(:|,)\s*(-o-|-moz-|-webkit-|-ms-)?([a-zA-Z-]*)(?=\b)(?!.*\{)/g},{matches:{1:"support.tag.style",2:[{name:"string",pattern:/('|")(.*?)(\1)/g},{name:"entity.tag.style",pattern:/(\w+)/g}],3:"support.tag.style"},pattern:/(<\/?)(style.*?)(>)/g}],
 | 
			
		||||
k);
 | 
			
		||||
							
								
								
									
										4
									
								
								js/vendor/custom.modernizr.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								js/vendor/custom.modernizr.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										9807
									
								
								js/vendor/jquery.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9807
									
								
								js/vendor/jquery.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										2000
									
								
								js/vendor/zepto.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2000
									
								
								js/vendor/zepto.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue