<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MacdougalMedia &#187; Javascript</title>
	<atom:link href="http://macdougalmedia.com/category/code/javascript-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://macdougalmedia.com</link>
	<description>by Scott Macdougal Weaver</description>
	<lastBuildDate>Tue, 18 May 2010 10:56:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CheckBoxer for Google Chrome</title>
		<link>http://macdougalmedia.com/2010/04/13/checkboxer-for-google-chrome/</link>
		<comments>http://macdougalmedia.com/2010/04/13/checkboxer-for-google-chrome/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 07:38:37 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://macdougalmedia.com/?p=185</guid>
		<description><![CDATA[CheckBoxer is an extension I wrote for Google Chrome. Based on the CheckBoxMate plugin for Firefox by nrlz, it does ... well.. exactly the same thing: you draw a rectangle around the check boxes you want to toggle on or off. Magic.
Here it is in action:

As you can see, it has selected all of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://macdougalmedia.com/wp-content/uploads/2010/04/checkboxer.png"><img class="size-full wp-image-186 alignleft" style="margin-left: 0px; margin-right: 4px;" title="CheckBoxer" src="http://macdougalmedia.com/wp-content/uploads/2010/04/checkboxer.png" alt="CheckBoxer extension for Google Chrome" width="48" height="48" /></a>CheckBoxer is an extension I wrote for Google Chrome. Based on the CheckBoxMate plugin for Firefox by nrlz, it does ... well.. exactly the same thing: you draw a rectangle around the check boxes you want to toggle on or off. Magic.</p>
<p>Here it is in action:</p>
<p><a href="http://macdougalmedia.com/wp-content/uploads/2010/04/screenshot1-crop.png"><img class="alignnone size-full wp-image-189" title="CheckBoxer in action!" src="http://macdougalmedia.com/wp-content/uploads/2010/04/screenshot1-crop.png" alt="CheckBoxer in action!" width="403" height="39" /></a></p>
<p>As you can see, it has selected all of the check boxes within the selected area. No need to hold any other buttons as it only works when you've dragged over the starting checkbox.</p>
<p><a title="CheckBoxer" href="https://chrome.google.com/extensions/detail/hbcmphdngimjobnagjpaeckfeokalnce" target="_blank">Click here</a> to check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://macdougalmedia.com/2010/04/13/checkboxer-for-google-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CheckBoxMate for Greasemonkey</title>
		<link>http://macdougalmedia.com/2010/04/07/checkboxmate-for-greasemonkey/</link>
		<comments>http://macdougalmedia.com/2010/04/07/checkboxmate-for-greasemonkey/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 09:01:08 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Greasemonkey Scripts]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://macdougalmedia.com/?p=177</guid>
		<description><![CDATA[
Ever had to check off a bunch of checkboxes one by one? It's a grueling and tedious process, especially when you have to do more than .. say .. five. Never fear! That's why nrlz came up with CheckBoxMate.
What Is CheckBoxMate? This script allows you to check multiple  checkboxes just by drawing a box [...]]]></description>
			<content:encoded><![CDATA[<div id="full_description">
<p>Ever had to check off a bunch of checkboxes one by one? It's a grueling and tedious process, especially when you have to do more than .. say .. five. Never fear! That's why nrlz came up with <a title="CheckBoxMate" href="https://addons.mozilla.org/en-US/firefox/addon/9740" target="_blank">CheckBoxMate</a>.</p>
<p><strong>What Is CheckBoxMate?</strong> This script allows you to check multiple  checkboxes just by drawing a box around them.</p>
<p>It doesn't get any more elegant than that and it's one of those tools you don't use every day but when you need it, it's a godsend. The trouble is, it doesn't seem to work at all (without tweaking) with Firefox 3.6+. That's where Greasemonkey comes in.</p>
<p>In a desperate attempt at making my precious CheckBoxMate work with my updated Firefox script, I decided to look under the hood to see if I could figure out the solution to the issue. After an hour of poking and prodding, I was able to troubleshoot and fix the problem using the Add-on's javascript in Greasemonkey (pretty handy way to diagnose Add-on problems in general, actually).</p>
<p><strong>Summary</strong>: CheckBoxMate stopped working, so I jammed it into Greasemonkey, fixed it and released it on userscripts.org.</p>
<p>I'm currently using <a title="CheckBoxMate for Greasemonkey" href="http://userscripts.org/scripts/show/73700" target="_blank">CheckBoxMate for Greasemonkey</a> with Firefox 3.6.3 on Mac OS X 10.6.3 with absolutely zero problems.</p>
<p>[<a href="http://userscripts.org/scripts/source/73700.user.js">Install CheckBoxMate for Greasemonkey</a>]</p>
</div>
<p>P.S. I've done all of this essentially without nrlz's permission at all,  so if he tells me to take this down, I will.</p>
<p><strong>*** UPDATE***</strong></p>
<p>I've tested this on my Windows 7 box at work (Firefox 3.6.3) and it works perfectly. Please let me know if you have any issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://macdougalmedia.com/2010/04/07/checkboxmate-for-greasemonkey/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ShareThis Sucks for Greasemonkey</title>
		<link>http://macdougalmedia.com/2010/03/13/sharethis-sucks-for-greasemonkey/</link>
		<comments>http://macdougalmedia.com/2010/03/13/sharethis-sucks-for-greasemonkey/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:59:13 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Greasemonkey Scripts]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://macdougalmedia.com/?p=166</guid>
		<description><![CDATA[
After becoming repeatedly annoyed at how the ShareThis button would pop up and just stay there at any hint of a mouseover/hover, I wrote this short Greasemonkey script to banish ShareThis from my sight:
ShareThis Sucks
And here's a link directly to the file:
share_this_sucks.js
Enjoy!
-Scott
]]></description>
			<content:encoded><![CDATA[<p><a href="http://macdougalmedia.com/wp-content/uploads/2010/03/share.this_.sucks_1.png"><img class="alignnone size-full wp-image-170" title="ShareThis Sucks" src="http://macdougalmedia.com/wp-content/uploads/2010/03/share.this_.sucks_1.png" alt="ShareThis Sucks" width="350" height="58" /></a></p>
<p>After becoming repeatedly annoyed at how the ShareThis button would pop up and just stay there at any hint of a mouseover/hover, I wrote this short Greasemonkey script to banish ShareThis from my sight:</p>
<p><a title="ShareThis Sucks" href="http://userscripts.org/scripts/show/71281" target="_blank">ShareThis Sucks</a></p>
<p>And here's a link directly to the file:</p>
<p><a title="ShareThis Sucks Script" href="http://userscripts.org/scripts/source/71281.user.js" target="_blank">share_this_sucks.js</a></p>
<p>Enjoy!</p>
<p>-Scott</p>
]]></content:encoded>
			<wfw:commentRss>http://macdougalmedia.com/2010/03/13/sharethis-sucks-for-greasemonkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reddit Tabbed Links</title>
		<link>http://macdougalmedia.com/2010/03/10/reddit-tabbed-links/</link>
		<comments>http://macdougalmedia.com/2010/03/10/reddit-tabbed-links/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 22:02:53 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Greasemonkey Scripts]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Reddit]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://macdougalmedia.com/?p=160</guid>
		<description><![CDATA[Put simply, I was just tired of shift+clicking the links on Reddit, so I made a Greasemonkey script that does it for all the main links and comment links:
Reddit Tabbed Links
Here's the direct link to the script:
reddit_tabbed_links.js
Enjoy.
http://userscripts.org/scripts/show/71070Reddit Tabbed Links
]]></description>
			<content:encoded><![CDATA[<p>Put simply, I was just tired of shift+clicking the links on <a title="Reddit" href="http://www.reddit.com" target="_blank">Reddit</a>, so I made a <a title="Greasemonkey for Firefox" href="https://addons.mozilla.org/en-US/firefox/addon/748" target="_blank">Greasemonkey</a> script that does it for all the main links and comment links:</p>
<p><a title="Reddit Tabbed Links" href="http://userscripts.org/scripts/show/71070" target="_blank">Reddit Tabbed Links</a></p>
<p>Here's the direct link to the script:</p>
<p><a href="http://userscripts.org/scripts/source/71070.user.js">reddit_tabbed_links.js</a></p>
<p>Enjoy.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">http://userscripts.org/scripts/show/71070Reddit Tabbed Links</div>
]]></content:encoded>
			<wfw:commentRss>http://macdougalmedia.com/2010/03/10/reddit-tabbed-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use jQuery to Tally Forms</title>
		<link>http://macdougalmedia.com/2009/12/11/use-jquery-to-tally-forms/</link>
		<comments>http://macdougalmedia.com/2009/12/11/use-jquery-to-tally-forms/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 23:41:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://macdougalmedia.com/?p=136</guid>
		<description><![CDATA[
Recently, I had the task of creating a simple form to be submitted to a specific department member here on campus. I felt this was a great opportunity to utilize jQuery and to see just how simple I could make adding new fields, since I wanted the form to be somewhat dynamic (adding/removing of inputs [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://macdougalmedia.com/wp-content/uploads/2009/12/travel_expenses.png"><img class="size-full wp-image-148 alignnone" title="Travel Expenses" src="http://macdougalmedia.com/wp-content/uploads/2009/12/travel_expenses.png" alt="Travel Expenses" width="616" height="245" /></a></p>
<p>Recently, I had the task of creating a simple form to be submitted to a specific department member here on campus. I felt this was a great opportunity to utilize jQuery and to see just how simple I could make adding new fields, since I wanted the form to be somewhat dynamic (adding/removing of inputs and such).</p>
<p>After trying a few methods here and there, I was able to utilize a few jQuery functions and a nice plugin (<a title="jQuery Format Currency" href="http://code.google.com/p/jquery-formatcurrency/" target="_blank">jquery-formatcurrency</a>) to make everything work as desired.</p>
<p>Here is what I came up with:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> total <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.currency'</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		total <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.add'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			total <span style="color: #339933;">+=</span> $<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.subtract'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			total <span style="color: #339933;">-=</span> $<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#total'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span>total<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.currency'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">formatCurrency</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>symbol<span style="color: #339933;">:</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>What's neat about this method is that it handles everything on the blur (loss of focus) of any element with the 'currency' class applied. That means it won't do anything to the field while a person is typing in it -- annoying for some people -- it waits until the user moves on to the next field or away from the field altogether.</p>
<p>The really cool part of what happens first is the mathematical operation. Notice the similarity between the following methods:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.add'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	total <span style="color: #339933;">+=</span> $<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.subtract'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	total <span style="color: #339933;">-=</span> $<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The first method looks at all elements with the 'add' class applied. The <strong>.each</strong> jQuery function cycles through each matched element and feeds two variables to the attached function: an incremented index and the object reference itself. This makes a tally extremely simple as jQuery will automagically cycle through all the elements you want to either add or subtract based on what class you have applied. The same applies to both classes and, of course, can be extended if you want to do more complex mathematics or formatting to your fields.</p>
<p>After these methods run, the <em>total</em> variable now holds the correct sum for all fields properly classed either 'add' or 'subtract.' This can now be applied to the input field with an id of 'total':</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#total'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span>total<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>This will set the 'total' input field's value to the sum of the fields.</p>
<p>Lastly, it will format all fields to currency using the <em>formatCurrency </em>function:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.currency'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">formatCurrency</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>symbol<span style="color: #339933;">:</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Notice I specify here that I do not want any currency symbol (e.g. '$') as I specify that outside the field itself to display to the user.</p>
<p>Again, all of this happens every time a field gets updated and loses focus. So yes, it's magic.</p>
]]></content:encoded>
			<wfw:commentRss>http://macdougalmedia.com/2009/12/11/use-jquery-to-tally-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

