<?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>This is not a mundane detail, Michael. &#187; javascript</title>
	<atom:link href="http://blog.mikejestes.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikejestes.com</link>
	<description></description>
	<lastBuildDate>Tue, 09 Jun 2009 22:05:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>SWFUpload with flash 10</title>
		<link>http://blog.mikejestes.com/2008/12/02/swfupload-with-flash-10/</link>
		<comments>http://blog.mikejestes.com/2008/12/02/swfupload-with-flash-10/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 08:45:03 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.mikejestes.com/?p=203</guid>
		<description><![CDATA[Flash player version 10 has new security restrictions with it&#8217;s javascript interaction.  It is no longer possible to trigger the local file picker from a javascript event.  Basically breaking the most legitimate use of flash in websites that I&#8217;ve seen in a while. I use SWFUpload in a few sites to get multiple file uploads [...]]]></description>
			<content:encoded><![CDATA[<p>Flash player version 10 has new security restrictions with it&#8217;s javascript interaction.  It is no longer possible to trigger the local file picker from a javascript event.  Basically breaking the most legitimate use of flash in websites that I&#8217;ve seen in a while.</p>
<p>I use <a href="http://swfupload.org/">SWFUpload</a> in a few sites to get multiple file uploads and upload progess bars.  It&#8217;s pretty slick.</p>
<p>The SWFUpload project has a beta release out that can work with Flash 10.  Here&#8217;s the basic changes required in your code to work with the 2.2.0 betas:</p>
<p>Right above your html that contains a button to trigger the file picker:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;span id=&quot;spanButtonPlaceholder&quot;&gt;&lt;/span&gt;</div>
</li>
</ol>
</div>
<p>You will want to give your button a fixed width and height.</p>
<p>Add the following CSS rules:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re1">.swfupload</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">position</span>: <span class="kw2">absolute</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">z-index</span>: <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>And finally, add the following options to your SWFUpload settings object:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; &nbsp; button_placeholder_id : <span class="st0">&quot;spanButtonPlaceholder&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; button_width: <span class="nu0">100</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; button_height: <span class="nu0">40</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; button_window_mode: SWFUpload.<span class="me1">WINDOW_MODE</span>.<span class="me1">TRANSPARENT</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; button_cursor: SWFUpload.<span class="me1">CURSOR</span>.<span class="me1">HAND</span>,</div>
</li>
</ol>
</div>
<p>This adds a transparent flash object over your html button that is the same size.  Flash traps the click over your button and triggers the file picker from flash itself.  Ironically, this work around for the tighter security restrictions in Flash 10 seems like a compete security risk in inself&#8230;</p>
<p>Pat wrote about <a href="http://patcavit.com/2008/11/30/yui-uploader-updated/">fixing the flash 10 issue with the YUI libraries</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikejestes.com/2008/12/02/swfupload-with-flash-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greasemonkey script for twitter</title>
		<link>http://blog.mikejestes.com/2008/04/06/greasemonkey-script-for-twitter/</link>
		<comments>http://blog.mikejestes.com/2008/04/06/greasemonkey-script-for-twitter/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 03:45:37 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mikejestes.com/?p=141</guid>
		<description><![CDATA[A few weeks ago I was thinking about how hilarious it would be to view twitter pages with OMG: prepended to all the messages. I&#8217;ve had a post-it note attached to my monitor ever since that has 3 words: twitter greasemonkey omg. I present my first greasemonkey script: twitter omg. To be honest, I&#8217;ve never [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I was thinking about how hilarious it would be to view twitter pages with <strong>OMG:</strong> prepended to all the messages. I&#8217;ve had a post-it note attached to my monitor ever since that has 3 words: twitter greasemonkey omg.</p>
<p>I present my first greasemonkey script: <a href="http://mikejestes.com/greasemonkey/twitter.omg.user.js">twitter omg</a>.</p>
<p>To be honest, I&#8217;ve never actually installed greasemonkey before. Writing the script was quite fun. I&#8217;ll be looking for opportunities to make a script that is actually useful&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikejestes.com/2008/04/06/greasemonkey-script-for-twitter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I love code snippet challenges</title>
		<link>http://blog.mikejestes.com/2008/03/17/i-love-code-snippet-challenges/</link>
		<comments>http://blog.mikejestes.com/2008/03/17/i-love-code-snippet-challenges/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 07:01:10 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.mikejestes.com/2008/03/17/i-love-code-snippet-challenges/</guid>
		<description><![CDATA[I stumbled upon a blog with a random code snippet challenge. Here was the problem at hand: Given a String (x) containing only characters a-z, write a function (f) that returns a base 10 integer, which converts the String as if it were a base 26 numeral. Function f is bijective. I wanted to give [...]]]></description>
			<content:encoded><![CDATA[<p>I stumbled upon a blog with a random <a href="http://blog.tmorris.net/rafs-problem/">code snippet challenge</a>. Here was the problem at hand:</p>
<blockquote><p>Given a String (x) containing only characters a-z, write a function (f) that returns a base 10 integer, which converts the String as if it were a base 26 numeral. Function f is bijective.</p></blockquote>
<p>I wanted to give it a stab in javascript not because it sounded particularly difficult but to play with different javascript code styles. Here&#8217;s my 4 versions:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> f<span class="br0">&#40;</span>i<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!i<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="nu0">0</span>; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw2">var</span> parts, n, pow, val;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; parts = i.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&#8221;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; parts.<span class="me1">reverse</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; val = <span class="nu0">0</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; pow = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>n = <span class="nu0">0</span>; n &lt; parts.<span class="me1">length</span>; ++n<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; val += pow * <span class="br0">&#40;</span>parts<span class="br0">&#91;</span>n<span class="br0">&#93;</span>.<span class="me1">charCodeAt</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span> &#8211; <span class="nu0">96</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; pow = pow * <span class="nu0">26</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> val;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>The first one turns the string into an array and reverses it before doing the math loop.  My next try eliminates the array and iterates backwards over the string.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> f<span class="br0">&#40;</span>i<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!i<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="nu0">0</span>; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw2">var</span> n, mult = <span class="nu0">1</span>, val = <span class="nu0">0</span>, offset = <span class="nu0">96</span>, base = <span class="nu0">26</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>n = i.<span class="me1">length</span> &#8211; <span class="nu0">1</span>; n &gt; <span class="nu0">-1</span>; n&#8211;<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; val += mult * <span class="br0">&#40;</span>i.<span class="me1">charCodeAt</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span> &#8211; offset<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; mult = mult * base;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> val;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Here I&#8217;m playing with chaining array functions.  While I don&#8217;t create an array, this is very similar to the first try.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> f<span class="br0">&#40;</span>i<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!i<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="nu0">0</span>; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw2">var</span> mult = <span class="nu0">1</span>, val = <span class="nu0">0</span>, offset = <span class="nu0">96</span>, base = <span class="nu0">26</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; i.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&#8221;</span><span class="br0">&#41;</span>.<span class="me1">reverse</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">forEach</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>el<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; val += mult * <span class="br0">&#40;</span>el.<span class="me1">charCodeAt</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span> &#8211; offset<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; mult = mult * base;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> val;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Finally, recursion instead of an iterative loop.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> f<span class="br0">&#40;</span>i, mult<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!i<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="nu0">0</span>; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!mult<span class="br0">&#41;</span> <span class="br0">&#123;</span> mult = <span class="nu0">1</span>; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> offset = <span class="nu0">96</span>, base = <span class="nu0">26</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> mult * <span class="br0">&#40;</span>i.<span class="me1">charCodeAt</span><span class="br0">&#40;</span>i.<span class="me1">length</span> &#8211; <span class="nu0">1</span><span class="br0">&#41;</span> &#8211; offset<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+ f<span class="br0">&#40;</span>i.<span class="me1">substr</span><span class="br0">&#40;</span><span class="nu0">0</span>, i.<span class="me1">length</span> &#8211; <span class="nu0">1</span><span class="br0">&#41;</span>, mult * base<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Checkout the <a href="http://blog.mikejestes.com/wp-content/uploads/2008/03/function.html">test output of my functions</a>.  Works in Firefox 1.5+ or other browsers that implement more modern javascript functions.  Shouldn&#8217;t work in IE.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikejestes.com/2008/03/17/i-love-code-snippet-challenges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
