<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[RWBAKER.com]]></title>
  <link href="http://rwbaker.com/atom.xml" rel="self"/>
  <link href="http://rwbaker.com/"/>
  <updated>2012-02-18T13:07:37-05:00</updated>
  <id>http://rwbaker.com/</id>
  <author>
    <name><![CDATA[Richard Baker]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Installing Rails]]></title>
    <link href="http://rwbaker.com/blog/2012/02/18/basics-of-starting-with-rails/"/>
    <updated>2012-02-18T12:25:00-05:00</updated>
    <id>http://rwbaker.com/blog/2012/02/18/basics-of-starting-with-rails</id>
    <content type="html"><![CDATA[<p>The basic commands to get Ruby on Rails up and running quickly:</p>

<p><strong>Install Latest Version of Rails</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo gem install rails
</span></code></pre></td></tr></table></div></figure>


<p><strong>Install Specific Version of Rails</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo gem install rails --version 3.0
</span></code></pre></td></tr></table></div></figure>


<p><strong>Update Rails</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo gem update rails
</span></code></pre></td></tr></table></div></figure>


<p><strong>Rolling Back to Previous Version of Rails</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo gem uninstall rails
</span></code></pre></td></tr></table></div></figure>


<p>You&#8217;ll then see something like this:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>Select gem to uninstall:
</span><span class='line'> 1. rails-3.0.0
</span><span class='line'> 2. rails-3.0.5
</span><span class='line'> 3. rails-3.0.11
</span><span class='line'> 4. rails-3.1.1
</span><span class='line'> 5. rails-3.2.1
</span><span class='line'> 6. All versions
</span></code></pre></td></tr></table></div></figure>


<p>Type the number of the version you&#8217;d like to uninstall and hit enter, and away it goes.</p>

<h2>RVM</h2>

<p>If you need specific ruby/rails environments for various projects, then you should be using <a href="http://beginrescueend.com/">RVM</a> and <a href="http://beginrescueend.com/gemsets/basics/">named gem sets</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[2011: Year in Review]]></title>
    <link href="http://rwbaker.com/blog/2012/01/01/year-in-review/"/>
    <updated>2012-01-01T17:55:00-05:00</updated>
    <id>http://rwbaker.com/blog/2012/01/01/year-in-review</id>
    <content type="html"><![CDATA[<p>2011 was a crazy year for the world. For Laura and I, 2011 was a very busy year filled with hospitals, construction projects, and lifestyle changes.</p>

<!-- more -->


<ol>
<li><p><strong>January</strong> brought a new driveway for our house, which meant our <a href="http://www.flickr.com/photos/rwbaker/collections/72157622671345682/">longtime construction project</a> was soon coming to a close.</p></li>
<li><p>We were also able to retrieve and scan all my wife&#8217;s medical files from Ohio for her original brain injury 13 years ago. This proved very helpful as the records showed the doctors <em>then</em> found the same brain abnormality our current doctors just found. Proof surgery was the right track.</p></li>
<li><p><strong>February</strong> Laura and I started following the Paleo diet in hopes to clean our her system from all the ineffective anti-seizure drugs she&#8217;s been taking for the past few years. Surprisingly, this also decreased her seizures by 75%! Normally she would have a cluster of seizures every month, without fail. On the diet, clusters came every 2 to 4 months.</p></li>
<li><p><strong>March</strong> launched ChefDave.org&#8217;s site membership using the <a href="http://www.membrr.com/">Membrr</a> / <a href="http://www.opengateway.net/">OpenGateway</a> and <a href="http://www.solspace.com/software/detail/user">Solspace&#8217;s User</a> plugins. This is also the time when my love of ExpressionEngine started falling apart due to various issues.</p></li>
<li><p>Also in March I bought a road bike after I sheared off my pedal arm on my Raleigh hybrid. Though time in 2011 been scarce, I hope to get back into cycling soon.</p></li>
<li><p><strong>April</strong> saw the final piece of <a href="http://coj.net/">COJ.net</a> go live. This wrapped up a year-long conversion and redesign project of the 30,000 page site.</p></li>
<li><p>In <strong>May</strong> we finally finished the outside construction on our house, completing the addition of my wife&#8217;s workshop and my (albeit unplanned) office. This major project included demolishing the existing one car garage and replacing it with a 30x30 garage with AC, 220v and 3 phase power. It&#8217;s the dream workshop of almost any woodworker. Now we start the inside of the house and shop.</p></li>
<li><p>In <strong>June</strong> my garden was in full swing. The bell peppers and cucumbers were great producers, and my watermelon plants were full of blooms. I planted 11 watermelon plants total which meant about 66 square-feet of vines—but no watermelons actually came to fruition. I will try again, though, with only one or two plants this time.</p></li>
<li><p><strong>June</strong> was also the last month my wife had <em>any</em> seizures. From July to November was the longest stretch of no meds and no seizures. All from dieting alone. This was great, but also added additional stress without knowing when a cluster of seizures could strike.</p></li>
<li><p>I converted rwbaker.com to WordPress using the Briefed WooTheme.</p></li>
<li><p>At the end of <strong>August</strong> <a href="http://www.coj.net/mayor.aspx">Jacksonville Mayor&#8217;s new blog</a> went live. It was a very rushed and fast-paced project and I even <a href="http://rwbaker.com/blog/2011/08/24/kentico-content-slider-with-cropped-thumbnails/" title="Kentico Content Slider with Cropped Thumbnails">learned a few things</a>.</p></li>
<li><p><strong>September</strong> I rewrote the API for ChefDave.org, making it more flexible and removing a big bottleneck when requesting a lot of data. This also lays the groundwork for larger system-wide changes down the road.</p></li>
<li><p>In <strong>October</strong> my mother-in-law finished her battle with breast cancer.</p></li>
<li><p><strong>November</strong> Laura had a right temporal lobectomy to hopefully put an end to her partial complex seizures. Every seizure wipes Laura&#8217;s long and short term memory—she doesn&#8217;t know who I am, doesn&#8217;t recognize our house, etc. Surgery took exactly 3 hours, and they were even able to reuse the incision from her first craniotomy. She was awake within one hour, and walking around in five. Two months post-op and no seizures so far.</p></li>
<li><p>I converted rwbaker.com to Octopress/Jekyll after my WordPress install was hacked and made a mess of my server. I love the static platform though, and it&#8217;s a great way to get started in Ruby and SASS.</p></li>
<li><p>For <strong>December</strong>, Christmas was in Ohio this year, which  gave us a great opportunity to take up the truck and fill it full of lumber for Laura&#8217;s new shop. The holidays, quality family time, and October fresh in our minds gave us time to reflect on the year and where we are in life.</p></li>
<li><p>December marks 6 months my wife has <em>continuously</em> known me, the longest stretch in our 10 years together.</p></li>
</ol>


<p>Hopefully 2012 will bring a lot of changes for Laura and I. Some big, some fun, and perhaps even a scary one or two. On the personal side of things, I want to branch out more with Node.js, Ruby on Rails and iOS development, and maybe even start a new side project.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Boycotting GoDaddy]]></title>
    <link href="http://rwbaker.com/blog/2011/12/29/boycott-godaddy/"/>
    <updated>2011-12-29T11:10:00-05:00</updated>
    <id>http://rwbaker.com/blog/2011/12/29/boycott-godaddy</id>
    <content type="html"><![CDATA[<p>I&#8217;m boycotting <a href="http://www.thedomains.com/2011/10/31/godaddy-likes-the-e-parasite-bill-techdirt-com-rips-them/">GoDaddy because they support</a> the Stop Online Piracy Act (SOPA,
H.R. 3261), and the Protect IP Act (PIPA, S. 968). These bills sound good from the titles,
but are broadly worded to allow the government to takedown websites for almost any reason.
Feeling the pressure from the interwebs,
<a href="http://www.godaddy.com/newscenter/release-view.aspx?news_item_id=380">GoDaddy officially renounced support for SOPA</a>, but there was no mention of PIPA.</p>

<p>GoDaddy sells domains for cheap, and in return, I look past their horrible control panel,
<a href="http://videos.godaddy.com/godaddy_media.aspx?ci=13336">cheap advertising campaigns</a>, and <a href="http://mashable.com/2011/03/31/godaddy-ceo-elephant/">ridiculous animal abuse</a>. No more; I&#8217;ve
finally moved my 16 domains to Namecheap. I suggest you do
the same and move your domains a responsible company like <a href="http://www.namecheap.com?aff=15970">Namecheap</a> or <a href="http://www.dreamhost.com/r.cgi?628456">Dreamhost</a> (both affiliate links).</p>

<p>And to read more about SOPA, <a href="http://www.alistapart.com/articles/say-no-to-sopa/">Jeffery Zeldman has written a great piece on SOPA</a> and what it
could mean for our industry.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Arguments vs Arrays]]></title>
    <link href="http://rwbaker.com/blog/2011/11/25/arguments-vs-arrays/"/>
    <updated>2011-11-25T23:29:00-05:00</updated>
    <id>http://rwbaker.com/blog/2011/11/25/arguments-vs-arrays</id>
    <content type="html"><![CDATA[<p>I saw a job posting that illustrated the JavaScript/ECMAScript knowledge-level the
candidate needed with:</p>

<blockquote><p>can you figure out whether you’re working with an array or arguments list without the
use of 3rd party code?</p></blockquote>

<p>I was intrigued, because I didn&#8217;t know the answer.</p>

<!-- more -->


<p>Two ways (of many, I&#8217;m sure) to determine the type of JavaScript Object you&#8217;re working with is by
using <code>instaceof</code> or <code>Object.prototype.toString</code></p>

<h2>instaceof</h2>

<p>Instaceof will give you a boolean response. It&#8217;s useful to determine if you&#8217;re working
with a specific kind of object.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='javascript'><span class='line'><span class="kd">function</span> <span class="nx">bob</span><span class="p">(</span><span class="nx">one</span><span class="p">,</span> <span class="nx">two</span><span class="p">,</span> <span class="nx">three</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="kd">var</span> <span class="nx">x</span> <span class="o">=</span> <span class="nx">arguments</span><span class="p">;</span>
</span><span class='line'>  <span class="kd">var</span> <span class="nx">y</span> <span class="o">=</span> <span class="p">[];</span>
</span><span class='line'>  
</span><span class='line'>  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span> <span class="p">(</span> <span class="nx">x</span> <span class="k">instanceof</span> <span class="nb">Array</span> <span class="p">);</span> <span class="c1">//false</span>
</span><span class='line'>  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span> <span class="p">(</span> <span class="nx">y</span> <span class="k">instanceof</span> <span class="nb">Array</span> <span class="p">);</span> <span class="c1">//true</span>
</span><span class='line'><span class="p">};</span>
</span></code></pre></td></tr></table></div></figure>


<p>Instanceof evaluates to true if the object inherits from the class&#8217;s prototype:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='javascript'><span class='line'><span class="kd">var</span> <span class="nx">p</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Person</span><span class="p">(</span><span class="s2">&quot;Richard&quot;</span><span class="p">);</span>
</span><span class='line'><span class="nx">p</span> <span class="k">instanceof</span> <span class="nx">Person</span> <span class="c1">//true</span>
</span></code></pre></td></tr></table></div></figure>


<p>This evaluates to true since p inherits from Person.prototype. It&#8217;s worth noting that
using the <code>new</code> keyword is imperative.</p>

<p><code>Arguments</code> is not a valid instanceof object, so we can only use this to tell if we&#8217;re
dealing with an Array or something else.</p>

<h2>Object.prototype.toString</h2>

<p>Calling this returns the type of object</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='javascript'><span class='line'><span class="kd">function</span> <span class="nx">bob</span><span class="p">(</span><span class="nx">one</span><span class="p">,</span> <span class="nx">two</span><span class="p">,</span> <span class="nx">three</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="kd">var</span> <span class="nx">x</span> <span class="o">=</span> <span class="nx">arguments</span><span class="p">;</span>
</span><span class='line'>  <span class="kd">var</span> <span class="nx">y</span> <span class="o">=</span> <span class="p">[];</span>
</span><span class='line'>  
</span><span class='line'>  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span> <span class="nx">x</span> <span class="p">)</span> <span class="p">);</span> <span class="c1">//[object Arguments]</span>
</span><span class='line'>  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span> <span class="nx">y</span> <span class="p">)</span> <span class="p">);</span> <span class="c1">//[object Array]</span>
</span><span class='line'><span class="p">};</span>
</span></code></pre></td></tr></table></div></figure>


<p>You could then use <code>indexOf</code> or <code>search</code> to check for &#8216;Arguments&#8217; or &#8216;Array&#8217;.</p>

<p>Without a doubt, there are other ways to do this in JavaScript. That&#8217;s what makes it fun—you&#8217;re never done learning.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Site Changes]]></title>
    <link href="http://rwbaker.com/blog/2011/11/21/site-changes/"/>
    <updated>2011-11-21T14:31:00-05:00</updated>
    <id>http://rwbaker.com/blog/2011/11/21/site-changes</id>
    <content type="html"><![CDATA[<p>A new year is coming, so it&#8217;s time for a new site. Welcome.</p>

<!--more-->


<h2>History</h2>

<p>This site has gone through a number of changes. Static files > Dreamweaver templates > Textpattern > Static > ExpressionEngine > Static > WordPress. In all that time, I never found a publishing system I cared for. Then, I found Jekyll.</p>

<p><a href="http://jekyllrb.com/">Jekyll</a> is a rails application that allows you to maintain your site in individual HTML or Markdown files and generates a static site. Mix that with <a href="http://octopress.org/">Octopress</a> and you have a find publishing system. One that fits quite well for me.</p>

<h2>Changes</h2>

<p>Soon I&#8217;ll be moving all my links over to Pinboard. They were once on <a href="http://delicious.com/rwbakercom">Delicious</a>, then Yahoo! goofed things up, so I tried posting links to this site. Though, it just didn&#8217;t fit. I&#8217;m not sure if I&#8217;ll move the Delicious links over, or just start fresh. Perhaps I&#8217;ll move just a few&#8230;</p>

<p>This site will now be mostly long-format posts and code snippets. Hopefully I keep that going.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Submit Form with JavaScript]]></title>
    <link href="http://rwbaker.com/blog/2011/10/18/submit-form-with-javascript/"/>
    <updated>2011-10-18T16:04:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/10/18/submit-form-with-javascript</id>
    <content type="html"><![CDATA[<p>Recently I was asked how submit a form with JavaScript&#8230; and I didn&#8217;t have a solid answer
for them. The shame! So, like a teacher having the class write &#8216;I will not talk in class&#8217;
over and over as punishment, here are a few various ways to submit a basic form in
JavaScript.</p>

<!--more-->


<h2>The Standard Form Submit</h2>

<p>Here is the basic form we&#8217;re working with:</p>

<figure class='code'><figcaption><span>Standard Form Submit</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="nt">&lt;html&gt;&lt;body&gt;</span>
</span><span class='line'><span class="nt">&lt;form</span> <span class="na">name=</span><span class="s">&quot;submit_with_button&quot;</span> <span class="na">action=</span><span class="s">&quot;success.html&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>  <span class="nt">&lt;fieldset&gt;</span>
</span><span class='line'>      <span class="nt">&lt;legend&gt;</span>Submit form with button<span class="nt">&lt;/legend&gt;</span>
</span><span class='line'>      <span class="nt">&lt;label</span> <span class="na">for=</span><span class="s">&quot;email&quot;</span><span class="nt">&gt;</span>Email Address<span class="nt">&lt;/label&gt;</span>
</span><span class='line'>      <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">&quot;text&quot;</span> <span class="na">id=</span><span class="s">&quot;email&quot;</span> <span class="na">name=</span><span class="s">&quot;email&quot;</span> <span class="nt">/&gt;</span>
</span><span class='line'>      <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">&quot;submit&quot;</span> <span class="na">value=</span><span class="s">&quot;Submit&quot;</span> <span class="nt">/&gt;</span>
</span><span class='line'>      <span class="nt">&lt;p&gt;</span>Standard method with a submit button<span class="nt">&lt;/p&gt;</span>
</span><span class='line'>  <span class="nt">&lt;/fieldset&gt;</span>
</span><span class='line'><span class="nt">&lt;/form&gt;</span>
</span><span class='line'><span class="nt">&lt;/body&gt;&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<h2>Submit with a JavaScript Function</h2>

<p>In this example we call a JavaScript function from the link, and that function
submits the form. This method is fine, but it&#8217;s generally <a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript" title="Wikipedia: Unobtrusive JavaScript">bad form</a> to put
JavaScript functions in a link&#8217;s href.</p>

<figure class='code'><figcaption><span>Submit with a JavaScript Function</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="nt">&lt;html&gt;&lt;body&gt;</span>
</span><span class='line'><span class="nt">&lt;form</span> <span class="na">name=</span><span class="s">&quot;submit_with_js&quot;</span> <span class="na">action=</span><span class="s">&quot;success.html&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>  <span class="nt">&lt;fieldset&gt;</span>
</span><span class='line'>      <span class="nt">&lt;legend&gt;</span>Submit form with JavaScript<span class="nt">&lt;/legend&gt;</span>
</span><span class='line'>      <span class="nt">&lt;label</span> <span class="na">for=</span><span class="s">&quot;email&quot;</span><span class="nt">&gt;</span>Email Address<span class="nt">&lt;/label&gt;</span>
</span><span class='line'>      <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">&quot;text&quot;</span> <span class="na">id=</span><span class="s">&quot;email&quot;</span> <span class="na">name=</span><span class="s">&quot;email_js&quot;</span> <span class="nt">/&gt;</span>
</span><span class='line'>      <span class="nt">&lt;a</span> <span class="na">id=</span><span class="s">&quot;submit_js&quot;</span> <span class="na">href=</span><span class="s">&quot;javascript: submitform()&quot;</span><span class="nt">&gt;</span>Submit<span class="nt">&lt;/a&gt;</span>
</span><span class='line'>  <span class="nt">&lt;/fieldset&gt;</span>
</span><span class='line'>  <span class="nt">&lt;script&gt;</span>
</span><span class='line'>      <span class="kd">function</span> <span class="nx">submitform</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>          <span class="nb">document</span><span class="p">.</span><span class="nx">submit_with_js</span><span class="p">.</span><span class="nx">submit</span><span class="p">();</span>
</span><span class='line'>      <span class="p">};</span>
</span><span class='line'>  <span class="nt">&lt;/script&gt;</span>
</span><span class='line'><span class="nt">&lt;/form&gt;</span>
</span><span class='line'><span class="nt">&lt;/body&gt;&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure>




<h2>Submit with jQuery</h2>


<p>This method still depends on the action tag, but just triggers the <code>submit()</code>
function. Use <code>return false</code> to stop the link being executed.</p>

<figure class='code'><figcaption><span>Submit with jQuery</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="nt">&lt;html&gt;&lt;body&gt;</span>
</span><span class='line'><span class="nt">&lt;form</span> <span class="na">name=</span><span class="s">&quot;submit_with_jquery&quot;</span> <span class="na">action=</span><span class="s">&quot;success.html&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>  <span class="nt">&lt;fieldset&gt;</span>
</span><span class='line'>      <span class="nt">&lt;legend&gt;</span>Submit form with jQuery<span class="nt">&lt;/legend&gt;</span>
</span><span class='line'>      <span class="nt">&lt;label</span> <span class="na">for=</span><span class="s">&quot;email&quot;</span><span class="nt">&gt;</span>Email Address<span class="nt">&lt;/label&gt;</span>
</span><span class='line'>      <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">&quot;text&quot;</span> <span class="na">id=</span><span class="s">&quot;email&quot;</span> <span class="na">name=</span><span class="s">&quot;email_jquery&quot;</span> <span class="nt">/&gt;</span>
</span><span class='line'>      <span class="nt">&lt;a</span> <span class="na">id=</span><span class="s">&quot;submit_jquery&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>Submit<span class="nt">&lt;/a&gt;</span>
</span><span class='line'>  <span class="nt">&lt;/fieldset&gt;</span>
</span><span class='line'>  <span class="nt">&lt;script </span><span class="na">src=</span><span class="s">&quot;http://code.jquery.com/jquery-latest.js&quot;</span><span class="nt">&gt;&lt;/script&gt;</span>
</span><span class='line'>  <span class="nt">&lt;script&gt;</span>
</span><span class='line'>      <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#submit_jquery&#39;</span><span class="p">).</span><span class="nx">click</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
</span><span class='line'>          <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;form[name=&quot;submit_with_jquery&quot;]&#39;</span><span class="p">).</span><span class="nx">submit</span><span class="p">();</span>
</span><span class='line'>          <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span><span class='line'>      <span class="p">});</span>
</span><span class='line'>  <span class="nt">&lt;/script&gt;</span>
</span><span class='line'><span class="nt">&lt;/form&gt;</span>
</span><span class='line'><span class="nt">&lt;/body&gt;&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<h2>Submit with jQuery AJAX</h2>

<p>Using the jQuery post function here (a subset of <code>$.ajax()</code>), we submit the form
asynchronously and return back any resulting data. In this example I&#8217;m
returning back the success message in an alert. I&#8217;m also using
<code>javascript:void(0)</code> in the submit link href rather than a #. This
way, even if the link is executed, the URL isn&#8217;t modified and the page doesn&#8217;t
jump.</p>

<figure class='code'><figcaption><span>AJAX Form Submit</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="nt">&lt;html&gt;&lt;body&gt;</span>
</span><span class='line'><span class="nt">&lt;form</span> <span class="na">name=</span><span class="s">&quot;submit_with_jquery_ajax&quot;</span> <span class="na">action=</span><span class="s">&quot;success.html&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>  <span class="nt">&lt;fieldset&gt;</span>
</span><span class='line'>      <span class="nt">&lt;legend&gt;</span>Submit form with jQuery AJAX<span class="nt">&lt;/legend&gt;</span>
</span><span class='line'>      <span class="nt">&lt;label</span> <span class="na">for=</span><span class="s">&quot;email&quot;</span><span class="nt">&gt;</span>Email Address<span class="nt">&lt;/label&gt;</span>
</span><span class='line'>      <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">&quot;text&quot;</span> <span class="na">id=</span><span class="s">&quot;email&quot;</span> <span class="na">name=</span><span class="s">&quot;email_ajax&quot;</span> <span class="nt">/&gt;</span>
</span><span class='line'>      <span class="nt">&lt;a</span> <span class="na">id=</span><span class="s">&quot;submit_ajax&quot;</span> <span class="na">href=</span><span class="s">&quot;javascript:void(0)&quot;</span><span class="nt">&gt;</span>Submit<span class="nt">&lt;/a&gt;</span>
</span><span class='line'>  <span class="nt">&lt;/fieldset&gt;</span>
</span><span class='line'>  <span class="nt">&lt;script </span><span class="na">src=</span><span class="s">&quot;http://code.jquery.com/jquery-latest.js&quot;</span><span class="nt">&gt;&lt;/script&gt;</span>
</span><span class='line'>  <span class="nt">&lt;script&gt;</span>
</span><span class='line'>      <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#submit_ajax&#39;</span><span class="p">).</span><span class="nx">click</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
</span><span class='line'>          <span class="c1">//Grab action from the form if it&#39;s there</span>
</span><span class='line'>          <span class="k">if</span> <span class="p">(</span> <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;form[name=&quot;submit_with_jquery_ajax&quot;]&#39;</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;action&#39;</span><span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>              <span class="nx">myAction</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="s1">&#39;form[name=&quot;submit_with_jquery_ajax&quot;]&#39;</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;action&#39;</span><span class="p">);</span>
</span><span class='line'>          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'>              <span class="nx">myAction</span> <span class="o">=</span> <span class="s1">&#39;success.html&#39;</span><span class="p">;</span>
</span><span class='line'>          <span class="p">};</span>
</span><span class='line'>          <span class="nx">$</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="nx">myAction</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>              <span class="nx">alert</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
</span><span class='line'>          <span class="p">});</span>
</span><span class='line'>          <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span><span class='line'>      <span class="p">});</span>
</span><span class='line'>  <span class="nt">&lt;/script&gt;</span>
</span><span class='line'><span class="nt">&lt;/form&gt;</span>
</span><span class='line'><span class="nt">&lt;/body&gt;&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>You can <a href="https://github.com/rwbaker/Snippets/tree/master/form%20submit" title="Download examples from Github">download all these examples from Github</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[AJAX Control Toolkit Calendar Default Style]]></title>
    <link href="http://rwbaker.com/blog/2011/09/15/ajax-control-toolkit-calendar-default-style/"/>
    <updated>2011-09-15T16:12:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/09/15/ajax-control-toolkit-calendar-default-style</id>
    <content type="html"><![CDATA[<p>The default style for the AJAX Control Toolkit Calendar leaves a bit more to be
desired. This is a basic calendar style with all the documentation needed to
customize it.</p>

<!--more-->


<p><img src="http://rwbaker.com/images/posts/calendar-comparison-final.gif" title="Calendar comparison" alt="Comparison of the default calendar, my theme, and the original jQuery Redmond theme" /></p>

<p>This calendar theme is an imageless version of the <a href="http://jqueryui.com/themeroller/#ffDefault=Lucida+Grande,+Lucida+Sans,+Arial,+sans-serif&amp;fwDefault=bold&amp;fsDefault=1.1em&amp;cornerRadius=5px&amp;bgColorHeader=5c9ccc&amp;bgTextureHeader=12_gloss_wave.png&amp;bgImgOpacityHeader=55&amp;borderColorHeader=4297d7&amp;fcHeader=ffffff&amp;iconColorHeader=d8e7f3&amp;bgColorContent=fcfdfd&amp;bgTextureContent=06_inset_hard.png&amp;bgImgOpacityContent=100&amp;borderColorContent=a6c9e2&amp;fcContent=222222&amp;iconColorContent=469bdd&amp;bgColorDefault=dfeffc&amp;bgTextureDefault=02_glass.png&amp;bgImgOpacityDefault=85&amp;borderColorDefault=c5dbec&amp;fcDefault=2e6e9e&amp;iconColorDefault=6da8d5&amp;bgColorHover=d0e5f5&amp;bgTextureHover=02_glass.png&amp;bgImgOpacityHover=75&amp;borderColorHover=79b7e7&amp;fcHover=1d5987&amp;iconColorHover=217bc0&amp;bgColorActive=f5f8f9&amp;bgTextureActive=06_inset_hard.png&amp;bgImgOpacityActive=100&amp;borderColorActive=79b7e7&amp;fcActive=e17009&amp;iconColorActive=f9bd01&amp;bgColorHighlight=fbec88&amp;bgTextureHighlight=01_flat.png&amp;bgImgOpacityHighlight=55&amp;borderColorHighlight=fad42e&amp;fcHighlight=363636&amp;iconColorHighlight=2e83ff&amp;bgColorError=fef1ec&amp;bgTextureError=02_glass.png&amp;bgImgOpacityError=95&amp;borderColorError=cd0a0a&amp;fcError=cd0a0a&amp;iconColorError=cd0a0a&amp;bgColorOverlay=aaaaaa&amp;bgTextureOverlay=01_flat.png&amp;bgImgOpacityOverlay=0&amp;opacityOverlay=30&amp;bgColorShadow=aaaaaa&amp;bgTextureShadow=01_flat.png&amp;bgImgOpacityShadow=0&amp;opacityShadow=30&amp;thicknessShadow=8px&amp;offsetTopShadow=-8px&amp;offsetLeftShadow=-8px&amp;cornerRadiusShadow=8px%22">jQuery UI Redmond calendar</a>
and uses the basic CSS documentation from the <a href="http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/calendar/calendar.aspx">toolkit documentation</a>.</p>

<figure class='code'><figcaption><span>AJAX Control Toolkit Calendar Style (ajax_calendar.css)</span> <a href='http://rwbaker.com/assets/examples/ajax_calendar.css'>download</a></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
<span class='line-number'>73</span>
<span class='line-number'>74</span>
<span class='line-number'>75</span>
<span class='line-number'>76</span>
<span class='line-number'>77</span>
<span class='line-number'>78</span>
<span class='line-number'>79</span>
<span class='line-number'>80</span>
<span class='line-number'>81</span>
<span class='line-number'>82</span>
<span class='line-number'>83</span>
<span class='line-number'>84</span>
<span class='line-number'>85</span>
<span class='line-number'>86</span>
<span class='line-number'>87</span>
<span class='line-number'>88</span>
<span class='line-number'>89</span>
<span class='line-number'>90</span>
<span class='line-number'>91</span>
<span class='line-number'>92</span>
<span class='line-number'>93</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="c">/* Ajax Control Toolkit Calendar */</span>
</span><span class='line'>
</span><span class='line'><span class="c">/*    The outer rectangular container that supplies the border around the calendar element. </span>
</span><span class='line'><span class="c">  Child Css classes: .ajax__calendar_header,.ajax__calendar_body,.ajax__calendar_footer. */</span>
</span><span class='line'><span class="nc">.ajax__calendar_container</span>     <span class="p">{</span><span class="k">background-color</span><span class="o">:</span><span class="m">#fff</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span><span class="k">solid</span> <span class="m">1px</span> <span class="m">#a6c9e2</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>  <span class="c">/*  A container element that holds the next and previous arrows and the title of the current view. </span>
</span><span class='line'><span class="c">      Child Css classes: .ajax__calendar_prev, .ajax__calendar_title, .ajax__calendar_next. */</span>
</span><span class='line'>  <span class="nc">.ajax__calendar_header</span>      <span class="p">{</span><span class="k">background-color</span><span class="o">:</span><span class="m">#87b6d9</span><span class="p">;</span> <span class="k">margin-bottom</span><span class="o">:</span><span class="m">5px</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>      <span class="c">/*  An element that displays the arrow to view the previous set of data in the view(previous month/year/decade).</span>
</span><span class='line'><span class="c">          Child Css classes: none. */</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_prev</span>    <span class="p">{}</span>
</span><span class='line'>
</span><span class='line'>      <span class="c">/*  An element that displays the title of the current view (month name, year, decade). </span>
</span><span class='line'><span class="c">          Child Css classes: none. */</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_title</span>   <span class="p">{</span><span class="k">height</span><span class="o">:</span><span class="m">20px</span><span class="p">;</span> <span class="k">color</span><span class="o">:</span><span class="m">#fff</span><span class="p">;</span> <span class="k">line-height</span><span class="o">:</span><span class="m">1.7em</span><span class="p">;}</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_hover</span> <span class="nc">.ajax__calendar_title</span> <span class="p">{</span><span class="k">color</span><span class="o">:</span><span class="m">#eee</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>      <span class="c">/*  An element that displays the arrow to view the previous set of data in the view (previous month/year/decade). </span>
</span><span class='line'><span class="c">          Child Css classes: none. */</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_next</span>    <span class="p">{}</span>
</span><span class='line'>      
</span><span class='line'>      <span class="nc">.ajax__calendar_prev</span><span class="o">,</span><span class="nc">.ajax__calendar_next</span>
</span><span class='line'>                              <span class="p">{</span><span class="k">background-color</span><span class="o">:</span><span class="m">#dce6f4</span><span class="p">;</span> <span class="k">height</span><span class="o">:</span><span class="m">20px</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">color</span><span class="o">:</span><span class="m">#fff</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>  <span class="c">/*  A container element that holds the days, months, and years panes. Also provides a fixed rectangle with hidden overflow that is used for transitioning between views (next/previous month, or days/months/years).</span>
</span><span class='line'><span class="c">      Child Css class: .ajax__calendar_days, .ajax__calendar_months, .ajax__calendar_years. */</span>
</span><span class='line'>  <span class="nc">.ajax__calendar_body</span>        <span class="p">{}</span>
</span><span class='line'>
</span><span class='line'>      <span class="c">/*  A container element that holds the layout for the days in a month. </span>
</span><span class='line'><span class="c">          Child Css classes: .ajax__calendar_dayname, .ajax__calendar_day */</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_days</span>    <span class="p">{}</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_days</span> <span class="nt">table</span> <span class="nt">thead</span> <span class="nt">tr</span> <span class="nt">td</span>
</span><span class='line'>                              <span class="p">{</span><span class="k">background-color</span><span class="o">:</span><span class="m">#fff</span><span class="p">;</span> <span class="k">color</span><span class="o">:</span><span class="m">#000</span><span class="p">;</span> <span class="k">font-weight</span><span class="o">:</span><span class="k">bold</span><span class="p">;}</span>
</span><span class='line'>      
</span><span class='line'>
</span><span class='line'>          <span class="c">/*  An element that displays the short name of the day of the week. </span>
</span><span class='line'><span class="c">              Child Css classes: none. */</span>
</span><span class='line'>          <span class="nc">.ajax__calendar_dayname</span>
</span><span class='line'>                              <span class="p">{</span><span class="k">border</span><span class="o">:</span><span class="m">0</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>          <span class="c">/*  An element that displays the day of the month. </span>
</span><span class='line'><span class="c">              Child Css classes: none */</span>
</span><span class='line'>          <span class="nc">.ajax__calendar_day</span> <span class="p">{</span><span class="k">border</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#c5dbec</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">background</span><span class="o">:</span><span class="m">#eaf4fd</span><span class="p">;</span> <span class="k">margin</span><span class="o">:</span><span class="m">1px</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">height</span><span class="o">:</span><span class="m">15px</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">width</span><span class="o">:</span><span class="m">16px</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>      <span class="c">/*  A container element that holds the layout for the months in a year. </span>
</span><span class='line'><span class="c">          Child Css classes: .ajax__calendar_month. */</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_months</span>  <span class="p">{}</span>
</span><span class='line'>
</span><span class='line'>          <span class="c">/*  An element that displays the month of the year. </span>
</span><span class='line'><span class="c">              Child Css classes: none */</span>
</span><span class='line'>          <span class="nc">.ajax__calendar_month</span>
</span><span class='line'>                              <span class="p">{}</span>
</span><span class='line'>                              
</span><span class='line'>          <span class="nc">.ajax__calendar_month</span><span class="o">,</span> <span class="nc">.ajax__calendar_day</span> <span class="p">{</span><span class="k">color</span><span class="o">:</span><span class="m">#2e6e9e</span><span class="p">;</span> <span class="k">font-weight</span><span class="o">:</span><span class="k">bold</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>      <span class="c">/*  A container element that holds the layout for the years in a decade. </span>
</span><span class='line'><span class="c">          Child Css classes: .ajax__calendar_year. */</span>
</span><span class='line'>      <span class="nc">.ajax__calendar_years</span>   <span class="p">{}</span>
</span><span class='line'>
</span><span class='line'>          <span class="c">/*  An element that displays the year in a decade. </span>
</span><span class='line'><span class="c">              Child Css classes: none */</span>
</span><span class='line'>          <span class="nc">.ajax__calendar_year</span><span class="p">{}</span>
</span><span class='line'>
</span><span class='line'><span class="c">/*  A container element that holds the current date. </span>
</span><span class='line'><span class="c">  Child Css classes: .ajax__calendar_today. */</span>
</span><span class='line'><span class="nc">.ajax__calendar_footer</span>            <span class="p">{</span><span class="k">border-top</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#c5dbec</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">line-height</span><span class="o">:</span><span class="m">1.2em</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>  <span class="c">/*  An element that displays the current date. </span>
</span><span class='line'><span class="c">      Child Css classes: none. */</span>
</span><span class='line'>  <span class="nc">.ajax__calendar_today</span>       <span class="p">{</span><span class="k">border</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#c5dbec</span><span class="p">;</span> <span class="k">background-color</span><span class="o">:</span><span class="m">#e1effb</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'><span class="c">/*    This is applied to an element in the DOM above a day, month or year and is used to apply CSS attributes that show a hover state. </span>
</span><span class='line'><span class="c">  Child Css classes: .ajax__calendar_day, .ajax__calendar_month, .ajax__calendar_year */</span>
</span><span class='line'><span class="nc">.ajax__calendar_hover</span>         <span class="p">{}</span>
</span><span class='line'><span class="nt">td</span><span class="nc">.ajax__calendar_hover</span> <span class="nt">div</span>       <span class="p">{</span><span class="k">background</span><span class="o">:</span><span class="m">#d2e6f5</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#79b7e7</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'><span class="c">/*    This is applied to an element in the DOM above a day, month or year and is used to apply CSS attributes that show the currently selected value. </span>
</span><span class='line'><span class="c">  Child Css classes: .ajax__calendar_day, .ajax__calendar_month, .ajax__calendar_year. */</span>
</span><span class='line'><span class="nc">.ajax__calendar_active</span>            <span class="p">{}</span>
</span><span class='line'><span class="nt">td</span><span class="nc">.ajax__calendar_active</span> <span class="nt">div</span>  <span class="p">{</span><span class="k">background</span><span class="o">:</span><span class="m">#fbec88</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#fad42e</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'><span class="c">/*    This is applied to an element in the DOM above a day or year that is outside of the current view (day not in the visible month, year not in the visible decade). </span>
</span><span class='line'><span class="c">  Child Css classes: .ajax__calendar_day, .ajax__calendar_year. */</span>
</span><span class='line'><span class="nc">.ajax__calendar_other</span>         <span class="p">{}</span>
</span><span class='line'>
</span><span class='line'><span class="nc">.ajax__calendar_other</span> <span class="nc">.ajax__calendar_day</span>
</span><span class='line'>                              <span class="p">{</span><span class="k">font-weight</span><span class="o">:</span><span class="k">normal</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">color</span><span class="o">:</span><span class="m">#bbb</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#eee</span> <span class="cp">!important</span><span class="p">;}</span>
</span><span class='line'>
</span><span class='line'><span class="nc">.ajax__calendar_hover.ajax__calendar_other</span> <span class="nc">.ajax__calendar_day</span>
</span><span class='line'>                              <span class="p">{</span><span class="k">background</span><span class="o">:</span><span class="m">#efefef</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">color</span><span class="o">:</span><span class="m">#aaa</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#ddd</span> <span class="cp">!important</span><span class="p">;}</span>
</span></code></pre></td></tr></table></div></figure>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Kentico content slider with cropped thumbnails]]></title>
    <link href="http://rwbaker.com/blog/2011/08/24/kentico-content-slider-with-cropped-thumbnails/"/>
    <updated>2011-08-24T12:41:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/08/24/kentico-content-slider-with-cropped-thumbnails</id>
    <content type="html"><![CDATA[<p>I had a need to build a content slideshow with thumbnail pagination. In this
project, <a href="http://www.kentico.com/">Kentico</a> is our CMS of choice.</p>

<p>In the existing website, users can upload images of any-size and aspect-ratio,
and then we resize the image in the Transformation. Our pager thumbnails need to
be square; a string of mixed-size images doesn&#8217;t look quite right. But
unfortunately Kentico doesn&#8217;t provide a way to crop images on the fly. Luckily,
CSS can help.</p>

<!--more-->


<h2>Carousel HTML Wrapper</h2>

<p>Here is the basic carousel wrapper with a blank UL pager to get things started:</p>

<figure class='code'><figcaption><span>Carousel HTML Wrapper</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;grid_content featured carousel-wrapper&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>     <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;carousel&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>          <span class="c">&lt;!-- content repeater generating our slides. Uses the transformation below --&gt;</span>
</span><span class='line'>     <span class="nt">&lt;/div&gt;</span>
</span><span class='line'>     <span class="nt">&lt;ul</span> <span class="na">id=</span><span class="s">&quot;pager&quot;</span> <span class="na">class=</span><span class="s">&quot;plain&quot;</span><span class="nt">&gt;&lt;/ul&gt;</span>
</span><span class='line'>     <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;clear&quot;</span><span class="nt">&gt;&lt;/div&gt;</span>
</span><span class='line'><span class="nt">&lt;/div&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<h2>CSS</h2>

<p>Our pager is an unordered list with a link and a span.  The link has the
pagination action attached so it. The span has a fixed size of 50x50&mdash;this
is desired size of our thumbnails. The thumbnail image is set as the background
of the span, centered, then the span will crop off the rest of the image. We now
have square thumbnails.</p>

<figure class='code'><figcaption><span>Thumbnail Style</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nc">.carousel</span><span class="o">~</span><span class="nf">#pager</span> <span class="nt">li</span>                 <span class="p">{</span><span class="k">float</span><span class="o">:</span><span class="k">left</span> <span class="cp">!important</span><span class="p">;</span> <span class="k">margin</span><span class="o">:</span><span class="m">0</span> <span class="m">20px</span> <span class="m">0</span> <span class="m">0</span><span class="p">;</span> <span class="k">overflow</span><span class="o">:</span><span class="k">hidden</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'><span class="nc">.carousel</span><span class="o">~</span><span class="nf">#pager</span> <span class="nt">a</span>                  <span class="p">{</span><span class="k">padding</span><span class="o">:</span><span class="m">3px</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span><span class="m">1px</span> <span class="k">solid</span> <span class="m">#ccc</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.carousel</span><span class="o">~</span><span class="nf">#pager</span> <span class="nt">a</span> <span class="nc">.thumbnail</span>       <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">50</span><span class="o">%</span> <span class="m">50</span><span class="o">%</span><span class="p">;</span> <span class="k">background-repeat</span><span class="o">:</span><span class="k">no-repeat</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.carousel</span><span class="o">~</span><span class="nf">#pager</span> <span class="nt">a</span><span class="o">,</span>
</span><span class='line'><span class="nc">.carousel</span><span class="o">~</span><span class="nf">#pager</span> <span class="nt">a</span> <span class="nc">.thumbnail</span>       <span class="p">{</span><span class="k">width</span><span class="o">:</span><span class="m">50px</span><span class="p">;</span> <span class="k">height</span><span class="o">:</span><span class="m">50px</span><span class="p">;</span> <span class="k">display</span><span class="o">:</span><span class="k">block</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.carousel</span><span class="o">~</span><span class="nf">#pager</span> <span class="nt">li</span><span class="nc">.activeSlide</span> <span class="nt">a</span>  <span class="p">{</span><span class="k">background</span><span class="o">:</span><span class="m">#fff</span><span class="p">;}</span>
</span></code></pre></td></tr></table></div></figure>


<h2>Kentico Transformations</h2>

<p>The <code>thumbnail()</code> function is responsible for creating our &#8216;cropped&#8217; thumbnail
for the carousel pager. This is actually really simple&mdash;just grab the image
use a <code>maxSideSide</code> of 50.  The CSS above takes care of the &#8216;cropping&#8217;.</p>

<p>We&#8217;re using the BlogPostTeaser image object for testing, even though we only
need the image URL. It turns out Kentico&#8217;s <code>IfEmpty()</code> function isn&#8217;t all that
reliable, and often <code>&lt;%# IfEmpty ("BlogPostTeaser", "",
GetFileURL("BlogPostTeaser")) %&gt;</code> will result in
<code>/getattachment/00000000-0000-0000-0000-000000000000/Post-Title.aspx</code> (the URL
of a non-existent image).</p>

<p>Kentico&#8217;s <code>CMSAbstractTransformation.Eval()</code> function returns an object, while
<code>CMSAbstractTransformation.GetFileURL()</code> returns a string. Our function
parameters must be declared accordingly and converted for comparison.</p>

<p>The carousel JavaScript generates the pagination HTML, so we&#8217;re just storing the
thumbnail path in the summary so our JavaScript and pick it up when needed.</p>

<figure class='code'><figcaption><span>Kentico Transformation</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
</pre></td><td class='code'><pre><code class='csharp'><span class='line'><span class="p">&lt;</span><span class="n">script</span> <span class="n">runat</span><span class="p">=</span><span class="s">&quot;server&quot;</span><span class="p">&gt;</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="kt">string</span> <span class="nf">videoTest</span><span class="p">(</span><span class="kt">object</span> <span class="n">BlogPostTeaser</span><span class="p">,</span> <span class="kt">string</span> <span class="n">BlogPostTeaserURL</span><span class="p">,</span> <span class="kt">object</span> <span class="n">BlogPostTeaserAltText</span><span class="p">,</span> <span class="kt">object</span> <span class="n">BlogPostVideo</span><span class="p">)</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>      <span class="p">...</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="kt">string</span> <span class="nf">thumbnail</span><span class="p">(</span><span class="kt">object</span> <span class="n">BlogPostTeaser</span><span class="p">,</span> <span class="kt">string</span> <span class="n">BlogPostTeaserURL</span><span class="p">)</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="c1">//Check the image object to see if it&#39;s an actual image or not. </span>
</span><span class='line'>        <span class="c1">//If no image, default to the &#39;standard&#39; thumb.</span>
</span><span class='line'>        <span class="kt">string</span> <span class="n">teaser</span> <span class="p">=</span> <span class="n">Convert</span><span class="p">.</span><span class="n">ToString</span><span class="p">(</span><span class="n">BlogPostTeaser</span><span class="p">);</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="n">teaser</span> <span class="p">!=</span> <span class="s">&quot;&quot;</span><span class="p">)</span>
</span><span class='line'>        <span class="p">{</span>
</span><span class='line'>            <span class="k">return</span> <span class="n">BlogPostTeaserURL</span> <span class="p">+</span> <span class="s">&quot;?height=50&quot;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>        <span class="k">else</span>
</span><span class='line'>        <span class="p">{</span>
</span><span class='line'>            <span class="k">return</span> <span class="s">&quot;/App_Themes/coj/images/coj-thumb.png&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">&lt;/</span><span class="n">script</span><span class="p">&gt;</span>
</span><span class='line'>
</span><span class='line'><span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;carouselTransformation&quot;</span><span class="p">&gt;</span>
</span><span class='line'>    <span class="p">&lt;%</span><span class="err">#</span> <span class="n">videoTest</span><span class="p">(</span><span class="n">Eval</span><span class="p">(</span><span class="s">&quot;BlogPostTeaser&quot;</span><span class="p">),</span> <span class="n">GetFileUrl</span><span class="p">(</span><span class="s">&quot;BlogPostTeaser&quot;</span><span class="p">),</span> <span class="n">Eval</span><span class="p">(</span><span class="s">&quot;BlogPostVideo&quot;</span><span class="p">),</span> <span class="n">Eval</span><span class="p">(</span><span class="s">&quot;BlogPostVideo&quot;</span><span class="p">))%&gt;</span>
</span><span class='line'>    <span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;title&quot;</span><span class="p">&gt;</span>
</span><span class='line'>        <span class="p">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="p">=</span><span class="s">&quot;&lt;%# GetDocumentUrl() %&gt;&quot;</span><span class="p">&gt;</span>
</span><span class='line'>            <span class="p">&lt;%</span><span class="err">#</span><span class="n">Eval</span><span class="p">(</span><span class="s">&quot;BlogPostTitle&quot;</span><span class="p">)%&gt;</span>
</span><span class='line'>        <span class="p">&lt;/</span><span class="n">a</span><span class="p">&gt;</span>
</span><span class='line'>    <span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span>
</span><span class='line'>    <span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;date&quot;</span><span class="p">&gt;</span>
</span><span class='line'>        <span class="p">&lt;%</span><span class="err">#</span><span class="n">GetDateTime</span><span class="p">(</span><span class="s">&quot;BlogPostDate&quot;</span><span class="p">,</span> <span class="s">&quot;MMMM dd, yyyy&quot;</span><span class="p">)%&gt;</span>
</span><span class='line'>    <span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span>
</span><span class='line'>    <span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;summary&quot;</span> <span class="n">thumbnail</span><span class="p">=</span><span class="s">&quot;&lt;%# thumbnail(Eval(&quot;</span><span class="n">BlogPostTeaser</span><span class="s">&quot;), GetFileUrl(&quot;</span><span class="n">BlogPostTeaser</span><span class="s">&quot;)) %&gt;&quot;</span><span class="p">&gt;</span>
</span><span class='line'>        <span class="p">&lt;%</span><span class="err">#</span> <span class="n">LimitLength</span><span class="p">(</span><span class="n">Eval</span><span class="p">(</span><span class="s">&quot;BlogPostSummary&quot;</span><span class="p">),</span><span class="m">350</span><span class="p">,</span><span class="s">&quot;...&quot;</span><span class="p">)</span> <span class="p">%&gt;</span>
</span><span class='line'>    <span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span>
</span><span class='line'><span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<h2>Javascript</h2>

<p>The carousel is built on the <a href="http://jquery.malsup.com/cycle/">Cycle jQuery plugin</a>. The pagination is
generated by a callback function in the carousel function. In this function we
grab the thumbnail URL and generate the pager LI and set the thumbnail as the
background of the span.  Our CSS above takes care of the rest.</p>

<figure class='code'><figcaption><span>Carousel</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
</pre></td><td class='code'><pre><code class='javascript'><span class='line'><span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">ready</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>    <span class="nx">jQuery</span><span class="p">.</span><span class="nx">dom</span> <span class="o">=</span> <span class="nx">jQuery</span><span class="p">(</span><span class="nb">document</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>    <span class="kd">var</span> <span class="nx">$carousel</span> <span class="o">=</span> <span class="nx">jQuery</span><span class="p">.</span><span class="nx">dom</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s1">&#39;.carousel&#39;</span><span class="p">);</span>
</span><span class='line'>    <span class="k">if</span> <span class="p">(</span><span class="nx">$carousel</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>          <span class="nx">$carousel</span><span class="p">.</span><span class="nx">cycle</span><span class="p">({</span>
</span><span class='line'>            <span class="nx">fx</span><span class="o">:</span> <span class="s1">&#39;fade&#39;</span><span class="p">,</span>
</span><span class='line'>            <span class="nx">speed</span><span class="o">:</span> <span class="mi">300</span><span class="p">,</span>
</span><span class='line'>            <span class="nx">timeout</span><span class="o">:</span> <span class="mi">10000</span><span class="p">,</span>
</span><span class='line'>            <span class="nx">pager</span><span class="o">:</span> <span class="s1">&#39;#pager&#39;</span><span class="p">,</span>
</span><span class='line'>            <span class="nx">pause</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span><span class='line'>            <span class="nx">cleartypeNoBg</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
</span><span class='line'>
</span><span class='line'>            <span class="c1">// A callback function that creates a thumbnail to use as pager anchor</span>
</span><span class='line'>            <span class="nx">pagerAnchorBuilder</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">idx</span><span class="p">,</span> <span class="nx">slide</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>              <span class="cm">/*     Find your image inside the individual slide.</span>
</span><span class='line'><span class="cm">                 In this case, I generate a scaled image on the server and store the path in an attribute */</span>
</span><span class='line'>              <span class="kd">var</span> <span class="nx">slideImg</span> <span class="o">=</span> <span class="nx">jQuery</span><span class="p">(</span><span class="nx">slide</span><span class="p">).</span><span class="nx">children</span><span class="p">(</span><span class="s2">&quot;.summary&quot;</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;thumbnail&#39;</span><span class="p">);</span>
</span><span class='line'>      
</span><span class='line'>              <span class="cm">/*  If there is no image associated with the story, use a standard thumbnail</span>
</span><span class='line'><span class="cm">                 This is also handled in our Kentico Transformation, so this is only a backup */</span>
</span><span class='line'>              <span class="k">if</span> <span class="p">(</span><span class="nx">slideImg</span> <span class="o">==</span> <span class="kc">undefined</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>                  <span class="nx">slideImg</span> <span class="o">=</span> <span class="s2">&quot;/App_Themes/site/images/thumb.png&quot;</span><span class="p">;</span>
</span><span class='line'>              <span class="p">};</span>
</span><span class='line'>
</span><span class='line'>                <span class="cm">/*   Our thumbnails are 50x50, but our image might not be square.</span>
</span><span class='line'><span class="cm">                 Setting the image as the background lets the element crop the image */</span>
</span><span class='line'>                <span class="k">return</span> <span class="s1">&#39;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span class=&quot;thumbnail&quot; style=&quot;background-image:url(&#39;</span><span class="o">+</span> <span class="nx">slideImg</span> <span class="o">+</span><span class="s1">&#39;);&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#39;</span><span class="p">;</span>
</span><span class='line'>            <span class="p">}</span>
</span><span class='line'>        <span class="p">});</span>
</span><span class='line'>     <span class="p">});</span>
</span><span class='line'><span class="p">});</span>
</span></code></pre></td></tr></table></div></figure>


<p><strong> UPDATE </strong> The project is now live, so you can take a look at the thumbnails
in action: <a href="http://www.coj.net/mayor.aspx">Jacksonville&#8217;s Mayor&#8217;s new blog</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[JavaScript falsy values]]></title>
    <link href="http://rwbaker.com/blog/2011/08/18/javascript-falsy-values/"/>
    <updated>2011-08-18T08:26:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/08/18/javascript-falsy-values</id>
    <content type="html"><![CDATA[<table class="styled fullwidth">
    <thead>
        <tr>
            <th>Value</th>
            <th>Type</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>0</td>
            <td>Number</td>
        </tr>
        <tr>
            <td>NaN (not a number)</td>
            <td>Number</td>
        </tr>
        <tr>
            <td>&#8221;</td>
            <td>String</td>
        </tr>
        <tr>
            <td>false</td>
            <td>Boolean</td>
        </tr>
        <tr>
            <td>null</td>
            <td>Object</td>
        </tr>
        <tr>
            <td>undefined</td>
            <td>Undefined</td>
        </tr>
    </tbody>
</table>


<p><cite>Table taken from <a href="http://www.amazon.com/gp/product/0596517742/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=rwbakercom-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0596517742">Douglas Crockford&#8217;s JavaScript: The Good Parts</a></cite></p>

<h2>Undefined</h2>

<p>Undefined is the absence of a value, not an empty value.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[JavaScript double equal vs. triple equal]]></title>
    <link href="http://rwbaker.com/blog/2011/08/16/javascript-double-equal-vs-triple-equal/"/>
    <updated>2011-08-16T17:26:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/08/16/javascript-double-equal-vs-triple-equal</id>
    <content type="html"><![CDATA[<p><a href="http://www.amazon.com/gp/product/0596517742/ref=as_li_ss_tl?ie=UTF8&amp;tag=rwbakercom-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=0596517742">Douglas Crockford&#8217;s Javascript: The Good Parts</a>:</p>

<blockquote><p>JavaScript has two sets of equality operators: <code>===</code> and <code>!==</code>, and their evil
twins <code>==</code> and <code>!=</code>. The good ones work the way you would expect. If the two
operands are of the same type and have the same value, then <code>===</code> produces true
and <code>!==</code> produces false. The evil twins do the right thing when the operands
are of the same type, but if they are of different types, they attempt to
coerce the values. The rules by which they do that are complicated and
unmemorable.</p></blockquote>

<h2>Double Equals (==)</h2>

<p>Double equals (<code>==</code>) will try to convert the 2nd half to the same type as the first half
of the expression.</p>

<p><code>string == number</code> will result in a comparison to <code>string == string</code> after the conversion.</p>

<h2>Triple Equals (===)</h2>

<p>Triple equals <code>===</code> is just a straight comparison, regardless of type.</p>

<p>Using <code>===</code> is not any quicker if the types are the same. If types are not the
same, <code>===</code> will be quicker because it won&#8217;t try to do the conversion.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ruby Static Blog Engine]]></title>
    <link href="http://rwbaker.com/blog/2011/07/26/ruby-static-blog-engine/"/>
    <updated>2011-07-26T00:04:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/07/26/ruby-static-blog-engine</id>
    <content type="html"><![CDATA[<p>A static site is an interesting idea. Fairly hassle free, handles high-traffic
well, and a much lower chance of getting hacked. However, they&#8217;re a nightmare
to manage if you want any sort of consistent look. But maybe not.</p>

<p><a href="https://github.com/mojombo/jekyll" title="Jekyll on Github">Jekyll</a> (Github) is a Ruby project for generating and maintaining a static
site or blog.</p>

<p><a href="http://octopress.org/" title="Octopress for Jekyll">Octopress</a> gives you templates and some fancy plugins that make the engine
quite a bit more friendlier.  Now all of a sudden, a static blog is looking
very doable.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[First-child vs Adjacent Selector]]></title>
    <link href="http://rwbaker.com/blog/2011/07/23/first-child-vs-adjacent-selector/"/>
    <updated>2011-07-23T22:12:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/07/23/first-child-vs-adjacent-selector</id>
    <content type="html"><![CDATA[<p>Here is a typical way one might use <code>:first-child</code>: first you apply the image
to all links in the list, then you remove it from the first one.</p>

<!--more-->




<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nf">#nav</span> <span class="nt">li</span> <span class="nt">a</span>
</span><span class='line'><span class="p">{</span><span class="k">background</span><span class="o">:</span><span class="sx">url(images/nav-sub-div.png)</span> <span class="m">0</span> <span class="m">0</span> <span class="k">repeat-x</span><span class="p">;}</span>
</span><span class='line'><span class="nf">#nav</span> <span class="nt">li</span><span class="nd">:first-child</span> <span class="nt">a</span>
</span><span class='line'><span class="p">{</span><span class="k">background-image</span><span class="o">:</span><span class="k">transparent</span><span class="p">;}</span>
</span></code></pre></td></tr></table></div></figure>


<p>However, using the <a href="http://www.w3.org/TR/CSS2/selector.html#adjacent-selectors">Adjacent Siblings Selector</a>, you can streamline it:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nf">#nav</span> <span class="nt">li</span> <span class="o">+</span> <span class="nt">li</span> <span class="nt">a</span>
</span><span class='line'><span class="p">{</span><span class="k">background</span><span class="o">:</span><span class="sx">url(images/nav-sub-div.png)</span> <span class="m">0</span> <span class="m">0</span> <span class="k">repeat-x</span><span class="p">;}</span>
</span></code></pre></td></tr></table></div></figure>


<p>The + selector applies the style to any LI that immediately follows an LI,
which obviously rules out the first item. A simple solution, often overlooked.</p>

<h2>Compatibility</h2>

<table class="styled fullwidth comparison" summary="Table shows the browser compatability for the adjacent selector and first-child pseudo class">
    <tbody>
        <tr>
            <th></th>
            <th colspan="3"><abbr title="Internet Explorer">IE</abbr></th>
            <th colspan="2">Firefox</th>
            <th colspan="2">Safari</th>
            <th colspan="2">Opera</th>
            <th>Chrome</th>
        </tr>
        <tr>
            <td>Version</td>
            <td>7.0</td>
            <td>8.0</td>
            <td>9.0</td>
            <td>2.0</td>
            <td>3.5</td>
            <td>3.1</td>
            <td>4.0</td>
            <td>9.2</td>
            <td>9.5</td>
            <td>2.0</td>
        </tr>
        <tr>
            <td>+</td>
            <td class="buggy">Buggy</td>
            <td class="full">Full</td>
            <td class="full">Full</td>
            <td class="full">Full</td>
            <td class="full">Full</td>
            <td class="buggy">Buggy</td>
            <td class="buggy">Buggy</td>
            <td class="buggy">Buggy</td>
            <td class="full">Full</td>
            <td class="full">Full</td>
        </tr>
        <tr>
            <td>:first-child</td>
            <td class="buggy">Buggy</td>
            <td class="buggy">Buggy</td>
            <td class="full">Full</td>
            <td class="buggy">Buggy</td>
            <td class="full">Full</td>
            <td class="buggy">Buggy</td>
            <td class="full">Full</td>
            <td class="buggy">Buggy</td>
            <td class="full">Full</td>
            <td class="full">Full</td>
        </tr>
    </tbody>
</table>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Web Standards Curriculum]]></title>
    <link href="http://rwbaker.com/blog/2011/07/15/web-standards-curriculum/"/>
    <updated>2011-07-15T21:03:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/07/15/web-standards-curriculum</id>
    <content type="html"><![CDATA[<p>The Opera Web Standards Curriculum has been adopted as the official W3C Web
Standards Curriculum. Whether you&#8217;re a teacher, student, or just filling holes
in your knowledge-base, this <em>free</em> content has a lot of good information
there.</p>

<blockquote><p>What follows is a list of all the articles within the web standards
curriculum, which will give you an essential grounding in HTML5, CSS,
JavaScript, accessibility, and the other topics you need to be a modern web
developer/designer. Reading them in order makes the most sense, but they are
written to work individually, so you can dip in and out as it suits you, if
you need to hone individual skills.
<cite><a href="http://www.w3.org/wiki/Web_Standards_Curriculum">Web Standards Curriculum</a></cite></p></blockquote>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[JavaScript Reserved Words]]></title>
    <link href="http://rwbaker.com/blog/2011/07/12/javascript-reserved-words/"/>
    <updated>2011-07-12T23:42:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/07/12/javascript-reserved-words</id>
    <content type="html"><![CDATA[<ul>
<li>abstract</li>
<li>boolean</li>
<li>break</li>
<li>byte</li>
<li>case</li>
<li>catch</li>
<li>char</li>
<li>class</li>
<li>const</li>
<li>continue</li>
<li>debugger</li>
<li>default</li>
<li>delete</li>
<li>do</li>
<li>double</li>
<li>else</li>
<li>enum</li>
<li>export</li>
<li>extends</li>
<li>false</li>
<li>final</li>
<li>finally</li>
<li>float</li>
<li>for</li>
<li>function</li>
<li>goto</li>
<li>if</li>
<li>implements</li>
<li>import</li>
<li>in</li>
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>long</li>
<li>native</li>
<li>new</li>
<li>null</li>
<li>package</li>
<li>private</li>
<li>protected</li>
<li>public</li>
<li>return</li>
<li>short</li>
<li>static</li>
<li>super</li>
<li>switch</li>
<li>synchronized</li>
<li>this</li>
<li>throw</li>
<li>throws</li>
<li>transient</li>
<li>true</li>
<li>try</li>
<li>typeof</li>
<li>var</li>
<li>volatile</li>
<li>void</li>
<li>while</li>
<li>with</li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Building Sprites for Easy CSS]]></title>
    <link href="http://rwbaker.com/blog/2011/06/29/building-sprites-for-easy-css/"/>
    <updated>2011-06-29T19:50:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/06/29/building-sprites-for-easy-css</id>
    <content type="html"><![CDATA[<p><em>We&#8217;re building an image sprite for 16x16 icons. Adjust numbers accordingly if
using different-sized icons.</em></p>

<p>I&#8217;ve used sprites for a while now, though
generally, they&#8217;re a pain to setup — especially the CSS positioning. Finally I
wised up and figured out a perfect way to align the icons to easily reuse the
same CSS positioning on all projects.</p>

<!--more-->


<p>In Photoshop, create a new document with
the dimentions of 16x2050. This is my standard sprite image size, though often
it gets cropped when I&#8217;m finished.</p>

<blockquote><p>The maximum size for decoded GIF, PNG, and TIFF images is 3 megapixels for
devices with less than 256 MB RAM and 5 megapixels for devices with greater or
equal than 256 MB RAM.</p>

<p>That is, ensure that width * height ≤ 3 * 1024 * 1024 for devices with less
than 256 MB RAM. Note that the decoded size is far larger than the encoded
size of an image.</p>

<p><cite><a href="http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html">iOS Developer Documentation</a></cite></p></blockquote>

<p>Adjust your document&#8217;s grid in Edit >
Preferences > Guides, Grid &amp; Slices. Set your Gridline to 50 pixels with 1
subdivision. This setup makes it easy to space our images in 50px increments,
making our CSS much easier.</p>

<p>Pull all your icons in the document and align them
by snapping the top of each icon to each grid line. Be sure to leave the top
grid block blank — this is in case the background isn&#8217;t properly positioned
for some reason, you won&#8217;t have a screen full of links with the same exact
icon.</p>

<p>Your images might need to drop down a pixel or two for perfect
alignment.  For me, I set the first icon at 52px. Now look how easy our CSS
is to write:</p>

<figure class='code'><figcaption><span>Example of Clean Sprite CSS</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nc">.icon</span>                  <span class="p">{</span><span class="k">background</span><span class="o">:</span><span class="sx">url(images/icons.png)</span> <span class="m">0</span> <span class="m">0</span> <span class="k">no-repeat</span><span class="p">;</span> <span class="k">padding-left</span><span class="o">:</span><span class="m">20px</span><span class="p">;}</span>
</span><span class='line'><span class="nt">a</span><span class="nc">.icon</span>                 <span class="p">{</span><span class="k">font-size</span><span class="o">:</span><span class="m">14px</span><span class="p">;</span> <span class="k">line-height</span><span class="o">:</span><span class="m">16px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.errorx</span>           <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-50px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.alert</span>            <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-100px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.delete</span>           <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-150px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.info</span>             <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-200px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.help</span>             <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-250px</span><span class="p">;}</span>
</span><span class='line'><span class="o">...</span>
</span><span class='line'><span class="nc">.icon.customer</span>         <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-1850px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.sort-active</span>      <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-1900px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.sort</span>             <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-1950px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.sort-up</span>          <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-2000px</span><span class="p">;}</span>
</span><span class='line'><span class="nc">.icon.sort-down</span>        <span class="p">{</span><span class="k">background-position</span><span class="o">:</span><span class="m">0px</span> <span class="m">-2050px</span><span class="p">;}</span>
</span></code></pre></td></tr></table></div></figure>


<p>This setup also gives you some wiggle room about each icon, so in many cases
you can forgo the 16x16 span and just use the sprite as a background of the
actual element.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[YouTube Embed with Start Time in ExpressionEngine]]></title>
    <link href="http://rwbaker.com/blog/2011/06/21/youtube-embed-with-start-time-in-expressionengine/"/>
    <updated>2011-06-21T21:59:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/06/21/youtube-embed-with-start-time-in-expressionengine</id>
    <content type="html"><![CDATA[<p>One of the ExpressionEngine projects I was working on needed an <strong>easy</strong> way
to embed YouTube videos, and wanted a way to start the video at a specific
time. The customer wanted it to be simple and didn&#8217;t want to fiddle about with
code.</p>

<p>I built the template so the customer only needed to give me two pieces of
information: Video URL (not embed code) and <a href="http://code.google.com/apis/youtube/player_parameters.html#start">Video Start Time</a> (in seconds,
if not 0:00).</p>

<p>The link URL and the Embed URL aren&#8217;t quite the same, but they&#8217;re pretty
close. Look at the difference:</p>

<p>Link URL: http://www.youtube.com/watch?v=HaQvBbzslJE
Embed URL: http://www.youtube.com/v/HaQvBbzslJE&amp;hl=en_US&amp;fs=1&amp;</p>

<p>Using the plugin <a href="http://loweblog.com/software/low-replace/">Low Replace</a>, we can parse through the Link URL to change
<code>watch?v=</code> to <code>v/</code>. If there is a start time, then you can append it on the URL with
<code>start=####</code>. Remember, the start time must be in seconds when embedding a video.</p>

<p>Below is the ExpressionEngine template code:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'>{if blog_video}
</span><span class='line'><span class="nt">&lt;object</span> <span class="na">width=</span><span class="s">&quot;630&quot;</span> <span class="na">height=</span><span class="s">&quot;379&quot;</span> <span class="na">classid=</span><span class="s">&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot;</span> <span class="na">codebase=</span><span class="s">&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;</span><span class="nt">&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;allowFullScreen&quot;</span> <span class="na">value=</span><span class="s">&quot;true&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;allowscriptaccess&quot;</span> <span class="na">value=</span><span class="s">&quot;always&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;src&quot;</span> <span class="na">value=</span><span class="s">&quot;{exp:low_replace find=&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;v&quot;</span> <span class="na">value=</span><span class="s">&quot;&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;blog_video&quot;</span> <span class="na">value=</span><span class="s">&quot;&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;exp:low_replace&quot;</span> <span class="na">value=</span><span class="s">&quot;&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;038&quot;</span> <span class="na">value=</span><span class="s">&quot;&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;hl&quot;</span> <span class="na">value=</span><span class="s">&quot;en_US&amp;amp;fs=1&amp;amp;{if&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;blog_video_starttime&quot;</span> <span class="na">value=</span><span class="s">&quot;&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;start&quot;</span> <span class="na">value=</span><span class="s">&quot;{blog_video_starttime}{/if}&amp;quot;&quot;</span> <span class="nt">/&gt;&lt;param</span> <span class="na">name=</span><span class="s">&quot;allowfullscreen&quot;</span> <span class="na">value=</span><span class="s">&quot;true&quot;</span> <span class="nt">/&gt;&lt;embed</span> <span class="na">width=</span><span class="s">&quot;630&quot;</span> <span class="na">height=</span><span class="s">&quot;379&quot;</span> <span class="na">type=</span><span class="s">&quot;application/x-shockwave-flash&quot;</span> <span class="na">src=</span><span class="s">&quot;{exp:low_replace find=&quot;</span> <span class="na">allowFullScreen=</span><span class="s">&quot;true&quot;</span> <span class="na">allowscriptaccess=</span><span class="s">&quot;always&quot;</span> <span class="na">v=</span><span class="s">&quot;&quot;</span> <span class="na">blog_video=</span><span class="s">&quot;&quot;</span> <span class="na">exp:low_replace=</span><span class="s">&quot;&quot;</span> <span class="na">038=</span><span class="s">&quot;&quot;</span> <span class="na">hl=</span><span class="s">&quot;en_US&amp;amp;fs=1&amp;amp;{if&quot;</span> <span class="na">blog_video_starttime=</span><span class="s">&quot;&quot;</span> <span class="na">start=</span><span class="s">&quot;{blog_video_starttime}{/if}&amp;quot;&quot;</span> <span class="na">allowfullscreen=</span><span class="s">&quot;true&quot;</span> <span class="nt">/&gt;&lt;/object&gt;</span>
</span><span class='line'>{/if}
</span></code></pre></td></tr></table></div></figure>


<p>Yay for happy customers.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[JavaScript Interview Questions]]></title>
    <link href="http://rwbaker.com/blog/2011/06/21/javascript-interview-questions/"/>
    <updated>2011-06-21T07:34:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/06/21/javascript-interview-questions</id>
    <content type="html"><![CDATA[<p>So I&#8217;ve been learnin&#8217; me some mo&#8217; JavaScript. I know the basics, and I know
jQuery fairly well, but <code>jQuery != JavaScript</code>. I&#8217;m
reading <a href="http://rwb.co/kj9kFS">Douglas Crockford&#8217;s JavaScript: The Good Parts</a> while listening to his Yahoo! videos on pretty-much the same content.</p>

<p>I just ran across a few posts on JavaScript interview questions; these are a
good reminder of key parts of JS to pay attention to:</p>

<ul>
<li><a href="http://sonspring.com/journal/javascript-interview-questions">Nathan Smith - JavaScript Interview Questions</a></li>
<li><a href="http://james.padolsey.com/javascript/javascript-interview-questions/">James Padolsey - JavaScript Interview Questions</a></li>
<li><a href="http://stackoverflow.com/questions/1069857/advanced-javascript-interview-questions">Stack Overflow - Advanced JavaScript Interview Questions</a></li>
<li><a href="http://vikasrao.wordpress.com/2010/02/07/common-javascript-interview-questions/">Vikas&#8217; Commonly Asked JavaScript Interview Questions</a></li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Open Source Book: Book of Speed]]></title>
    <link href="http://rwbaker.com/blog/2011/06/21/open-source-book-book-of-speed/"/>
    <updated>2011-06-21T07:26:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/06/21/open-source-book-book-of-speed</id>
    <content type="html"><![CDATA[<p>Stoyan Stefanov (<a href="http://twitter.com/stoyanstefanov/">@stoyanstefanov</a>) is
known as one of the &#8216;sultans of speed&#8217;. In December 2009 he wrote
<a href="http://www.phpied.com/performance-advent-calendar-2009/">a 24-day series on page speed</a> which turned into a book offer.  He&#8217;s now
writing that book in true open-sourced fashion.</p>

<p>Stoyan&#8217;s work-in-progress book is available to read at <a href="http://www.bookofspeed.com/">Book of Speed</a>.
If you have anything to add or even edits, you can fork the project on
<a href="https://github.com/stoyan/Book-of-Speed">Github</a> and submit a pull request with your changes.</p>

<p><strong>Note:</strong> Take a look at the Github project just to see how it&#8217;s structured.
Chapter text is in the /src folder with a <a href="https://github.com/stoyan/Book-of-Speed/blob/master/builder/builder.js">build script</a> to generate the TOC.
This could be made into a very nice book starter project for anyone.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[HTML Email Templates from MailChimp]]></title>
    <link href="http://rwbaker.com/blog/2011/06/21/html-email-templates-from-mailchimp/"/>
    <updated>2011-06-21T06:49:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/06/21/html-email-templates-from-mailchimp</id>
    <content type="html"><![CDATA[<p>MailChimp has revolutionized they way email newsletters are sent out. Their
best feature is embracing the designer in their products; they know the design
<em>makes</em> the email.</p>

<p>They&#8217;ve published <a href="http://mailchimp.com/resources/html-email-templates/">35 email templates</a> open-sourced on <a href="https://github.com/mailchimp/Email-Blueprints">Github</a></p>

<p>Be sure to check out their entire <a href="http://mailchimp.com/resources">resources section</a>. Great stuff in there.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Disable Pay-Wall]]></title>
    <link href="http://rwbaker.com/blog/2011/06/19/disable-pay-wall/"/>
    <updated>2011-06-19T12:38:00-04:00</updated>
    <id>http://rwbaker.com/blog/2011/06/19/disable-pay-wall</id>
    <content type="html"><![CDATA[<p>My wife is originally from Ohio and still likes to keep up with the happenings
in her town. Recently, the <a href="http://www.cantonrep.com/)">Canton Repository</a> and
<a href="http://www.indeonline.com/)">Massillon Independent</a> erected a pay-wall similar
to the New York Times. You get 20 free articles, then you must be a member for
any additional articles. The problem is when you follow a link into the
newspaper website, you get a large signup box that covers the screen, and
closing it redirects you back to the homepage leaving you to hunt down your
article again.</p>

<p>Below is a quick fix to stop that pesky box from coming up. Just set this as
your user stylesheet in your favorite browser.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nf">#fancybox-tmp</span><span class="o">,</span> <span class="nf">#fancybox-loading</span><span class="o">,</span> <span class="nf">#fancybox-overlay</span><span class="o">,</span> <span class="nf">#fancybox-wrap</span>
</span><span class='line'><span class="p">{</span><span class="k">display</span><span class="o">:</span><span class="k">none</span> <span class="cp">!important</span><span class="p">;}</span>
</span></code></pre></td></tr></table></div></figure>



]]></content>
  </entry>
  
</feed>

