<?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>DEfusion.org.uk &#187; JavaScript</title>
	<atom:link href="http://www.defusion.org.uk/archives/category/web-development/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.defusion.org.uk</link>
	<description>I too will force my opinions on you</description>
	<lastBuildDate>Mon, 04 Jul 2011 19:28:08 +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>Update : JavaScript Image Cropper UI using Prototype v 1.2.1</title>
		<link>http://www.defusion.org.uk/archives/2009/10/06/update-javascript-image-cropper-ui-using-prototype-v-121/</link>
		<comments>http://www.defusion.org.uk/archives/2009/10/06/update-javascript-image-cropper-ui-using-prototype-v-121/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 19:45:16 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2009/10/06/update-javascript-image-cropper-ui-using-prototype-v-121/</guid>
		<description><![CDATA[It&#8217;s been a long time since I released an update to the JavaScript Image Cropper UI (for reference v1.2.0 was released on 30th Oct 2006!).
However it is still going strong and a couple of things prompted me to release this update to bring it to v1.2.1.
The first thing was Tom Hirashima (sorry Tom, wasn&#8217;t sure [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long time since I released an update to the <a href="/code/javascript-image-cropper-ui-using-prototype-scriptaculous/">JavaScript Image Cropper UI</a> (for reference v1.2.0 was released on 30th Oct 2006!).</p>
<p>However it is still going strong and a couple of things prompted me to release this update to bring it to v1.2.1.</p>
<p>The first thing was <a href="http://straightnochaser.org/">Tom Hirashima</a> <del datetime="2009-10-06T22:52:08+00:00">(sorry Tom, wasn&#8217;t sure if you have a site you want me to link to)</del> sent me an email last week with an update to the code to allow it to work with the latest versions of Prototype &#038; script.aculo.us out of the box (1.6.1.0 &#038; 1.8.2 respectively). Although the last time I tried the cropper with the latest versions of them both it worked fine, you just had to change the bundles that script.aculo.us included, Tom has made some further changes. This is a good thing as for the past couple of years I&#8217;ve pretty much been out of the prototype &#038; script.aculo.us loop having moved to MooTools and now jQuery (which I hated at first, but that&#8217;s another story).</p>
<p>The second thing was that the cropper was mentioned (and my how old does this site design look to me now) in the latest (and as usual excellent) <a href="http://railscasts.com/">Railscast</a>, <a href="http://railscasts.com/episodes/182-cropping-images">Cropping Images</a>.</p>
<p>As a part of integrating Tom&#8217;s changes I decided to tackle a load of bugs from the bug list to try and reduce the list so I can keep on top of it better going forward (a long list of open bugs is never conducive to getting any of them fixed).<br />
<span id="more-197"></span><br />
Here&#8217;s a full list of the changes:</p>
<ul>
<li>Added support for latest versions of Prototype &#038; script.aculo.us (1.6.1.0 &#038; 1.8.2 respectively). Changes provided by Tom Hirashima.</li>
<li>No-longer package prototype &#038; script.aculo.us with the release</li>
<li>Changed tests to use google ajax libraries <acronym title="Application Programming Interface">API</acronym> to load prototype &#038; script.aculo.us</li>
<li>Added option to not auto include the cropper <acronym title="Cascading Style Sheets">CSS</acronym> file</li>
<li><span class="code">#00008</span> &#8211; Fixed bug: Dynamic include of cropper <acronym title="Cascading Style Sheets">CSS</acronym> expected cropper.js and failed when using cropper.uncompressed.js</li>
<li><span class="code">#00028</span> &#8211; Fixed bug: Doesn&#8217;t work with latest script.aculo.us &#8211; Fix by Tom Hirashima</li>
<li><span class="code">#00030</span> &#8211; Fixed bug: Doesn&#8217;t work in Firefox 3.5 (<acronym title="Cascading Style Sheets">CSS</acronym> include issue)</li>
<li><span class="code">#00007</span> &#8211; Fixed bug: onEndCrop isn&#8217;t called when moving with keys</li>
<li><span class="code">#00011</span> &#8211; Fixed bug: The image that is to be cropped does not show in IE6.0 &#8212; included <acronym title="Cascading Style Sheets">CSS</acronym> fix</li>
<li>Tidied up source code &#038; fixed issues that jslint found so it will compress better</li>
</ul>
<p>Finally as usual, please use the bug reporting link or discussion list mentioned on <a href="/code/javascript-image-cropper-ui-using-prototype-scriptaculous/">JavaScript Image Cropper UI code page</a> rather than leaving comments to report bugs.</p>
<p>Head over to the <a href="/code/javascript-image-cropper-ui-using-prototype-scriptaculous/">JavaScript Image Cropper UI code page</a> for download and documentation.
<p><strong><em>Advertisement</em></strong>:  <a href="http://www.defusion.org.uk/code/javascript-image-cropper-ui-using-prototype-scriptaculous/">JavaScript Image Cropper UI</a><em> </em>Download my feature-rich JavaScript Image Cropper.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2009/10/06/update-javascript-image-cropper-ui-using-prototype-v-121/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Uploading Files and Images With Flex and Rails</title>
		<link>http://www.defusion.org.uk/archives/2008/04/21/uploading-files-and-images-with-flex-and-rails/</link>
		<comments>http://www.defusion.org.uk/archives/2008/04/21/uploading-files-and-images-with-flex-and-rails/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 21:23:58 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2008/04/21/uploading-files-and-images-with-flex-and-rails/</guid>
		<description><![CDATA[Having spent most of Saturday trying to get files to upload from a Flex application to a Rails backend, fighting against both Flex and Rails all the way, I thought I&#8217;d collect together some of the things that have helped me work through this in the hope that others don&#8217;t have to spend quite as [...]]]></description>
			<content:encoded><![CDATA[<p>Having spent most of Saturday trying to get files to upload from a Flex application to a Rails backend, fighting against both Flex and Rails all the way, I thought I&#8217;d collect together some of the things that have helped me work through this in the hope that others don&#8217;t have to spend quite as long battling through this. Note however that these are not necessarily best pratices, more a collection of tips that helped me in my situation, there are probably better ways to do some or all of the things that I&#8217;ll be writing about &#8211; and if you know of any improvements/alternatives I&#8217;d love to hear about them.<br />
<span id="more-165"></span><br />
In my situation I am uploading images to Rails which is using attachment_fu to handle the images and the thumbnail generation. Some of these tips will be relevant to all more generic issues, such as uploading files from Flex, and some will be more specific, such as making attachment_fu work with images uploaded from Flex.</p>
<p><strong>Uploading files with Flex</strong><br />
To upload files with flex you need to use either the <a href="<br />
http://livedocs.adobe.com/flex/3/langref/flash/net/FileReference.html&#8221;>FileReference</a> or <a href="http://livedocs.adobe.com/flex/3/langref/flash/net/FileReferenceList.html">FileReferenceList</a> classes, the main difference between these two is that FileReference is for uploading single files and FileReferenceList allows multiple file uploads.</p>
<h2>Issue 1: How to send other data, such as meta/model data with the file upload:</h2>
<p>Say you want to upload an image and save that using Rails along with other model data for that image (such as a title etc.) then you&#8217;ll have to hack that into the request that FileReference sends. </p>
<p><a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=5534a12f&#038;sliceId=1">This Adobe tech note</a> recommends using the <span class="code">uploadDataFieldName</span> argument of the <span class="code">upload()</span> method, however to me this seems like a really awful hack as you&#8217;ll then have to parse the name/value pair string in your <span class="code">uploadDataFieldName</span> param at the backend. What you really want is separate parameters (ideally within the POST body).</p>
<p>The only viable solution I could come across was using the query string to pass the parameters through, your mileage may vary on this depending on the parameters you are sending, but I&#8217;m pretty sure that no modern browsers enforce the 255 character limit on a <acronym title="Uniform Resource Locator">URL</acronym> anymore.</p>
<h2>Issue 2: Session cookie not sent in Firefox:</h2>
<p>This problem is <a href="http://thanksmister.com/?p=59">explained really well over at Thanks Mister!</a>, it may apply to other browsers (probably the other gecko-based browsers work the same) but quite simply it means that if you&#8217;re relying on some data in your session during the upload you need to manually pass the session cookie through, however this raises further issues with Rails, so I&#8217;ll break it down further.</p>
<p><strong>Issue 2: Part 1 &#8212; Passing the cookie when uploading files with FileReference:</strong><br />
It&#8217;s fairly simple to get around this part of the problem, you just need to include your session identifier within the query string, the biggest issue with this is getting the cookie value &#8212; as Flash doesn&#8217;t have native access to the browsers cookies.<br />
To get the cookie you&#8217;ll need to use the <a href="http://livedocs.adobe.com/flex/3/langref/flash/external/ExternalInterface.html">ExternalInterface</a> to call some JavaScript to retrieve the cookie, this is <a href="http://www.restlessthinker.com/blog/?p=39">covered quite nicely in this post</a>. So when working with Rails we just need to retrieve the cookie that lives in whatever we&#8217;re using as the session ID and pass that through via the query string, but that brings us to another problem:</p>
<p><strong>Issue 2: Part 2 &#8212; Rails won&#8217;t let you pass session ids in the query string:</strong><br />
So now we need to tweak Rails to let us pass the session id via the query string, luckily there is <a href="http://blog.inquirylabs.com/2006/12/09/getting-the-_session_id-from-swfupload/">another great post on this</a>, however some of the Rails 2 security improvements require further workarounds which are in the comments on that post.</p>
<p>To quickly cover what you need to do is as follows:</p>
<ol>
<li>Add the patch (make sure you get the one for Mongrel/Apache linked at the bottom of the <a href="http://blog.inquirylabs.com/2006/12/09/getting-the-_session_id-from-swfupload/">post</a>) to the <span class="code">CGI::Session</span> class to your application &#8212; it really deserves to live in a plugin rather than the environment.rb file, which you&#8217;ll have to roll yourself.</li>
<li>For Rails 2 you have to add another override by adding <span class="code">session :cookie_only => false</span> at the controller level. I personally feel it is best to do this in just the controller that you&#8217;re using to upload the files with.</li>
<li>I still had issues with it not picking up my session &#8212; I was using the Rails 2 default of saving the session information in the cookie. There is probably another hack or change that I could make to get around this, but I chose to move (back to) Active Record sessions but this time using the <a href="http://blog.kovyrin.net/2008/02/06/fastsessions-rails-plugin-released/">Fast Sessions</a> plugin for a bit of a performance boost.
<p>I&#8217;ll probably look into this again at a later date, but right now I just wanted to get this part working and move on.
</li>
</ol>
<p>So now we&#8217;ve got our file uploading to the backend, within our session and our other model/meta data being sent as well. &#8220;Great we&#8217;re done, what else could go wrong now?&#8221; is just the kind of thought you&#8217;d be forgiven for having. Of course there was another issue that came up which needed to be handled.</p>
<h2>Issue 3: Attachment_fu and Flex file uploads</h2>
<p>FileReference uploads all files with the MIME type of <span class="code">application/octet-stream</span> which gives us a couple of problems:</p>
<ol>
<li>Your attachment_fu <span class="code">content-type</span> filter will probably reject all uploads out of hand &#8211; the easy hack would seem to be to add in the <span class="code">application/octet-stream</span> to your acceptable content-types, but that&#8217;s an awful hack that basically removes the content-type filtering and doesn&#8217;t address our second issue.</li>
<li>If using attachment_fu to create thumbnails and you do accept the <span class="code">application/octet-stream</span> MIME then you won&#8217;t have any thumbnails generated, because as far as attachment_fu is concerned your upload is not an image.</li>
</ol>
<p>Again the solution was only a few searches away, and the changes covered in <a href="http://blog.vixiom.com/2007/12/28/hacking-attachment_fu-to-work-with-flashflex-uploads-and-crop-square-images/">this post over at Vixiom Axioms</a> do fix the issue &#8212; although note that I had issues with that fix and had to apply my own changes &#8211; see the comment on that post.</p>
<h2>Conclusion</h2>
<p>So finally we have file uploads working from Flex to Rails, our session information is maintained, we&#8217;re passing along our model data and our images are being handled as they are supposed to.</p>
<p>This really shouldn&#8217;t have been this difficult, it should have been a simple case of using FileReference add some data to be POSTed and we&#8217;d be done but alas decisions made in/or issues with the Flash player lead to this merry dance of hacks, tweaks and workarounds to make everything sing to the same hymn-sheet.</p>
<p>Hopefully covering this and collecting together these links will save someone else from a wasted day of figuring out the solution to the myriad of problems that I encountered.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2008/04/21/uploading-files-and-images-with-flex-and-rails/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Quick Link: Speed up your web application with an automated caching system for assets</title>
		<link>http://www.defusion.org.uk/archives/2008/01/08/quick-link-speed-up-your-web-application-with-an-automated-caching-system-for-assets/</link>
		<comments>http://www.defusion.org.uk/archives/2008/01/08/quick-link-speed-up-your-web-application-with-an-automated-caching-system-for-assets/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 18:11:34 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2008/01/08/quick-link-speed-up-your-web-application-with-an-automated-caching-system-for-assets/</guid>
		<description><![CDATA[I&#8217;ve just read this interesting post on how to speed up your web application with an automated system for working with browsers cache for your assets (CSS, JavaScript, images etc.).
Previously I&#8217;ve used query strings parameters within asset requests so that they act as a &#8216;cache bust&#8217; parameter, these have usually been the source control revision [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just read this <a href="http://particletree.com/notebook/automatically-version-your-css-and-javascript-files/">interesting post</a> on how to speed up your web application with an automated system for working with browsers cache for your assets (<acronym title="Cascading Style Sheets">CSS</acronym>, JavaScript, images etc.).</p>
<p>Previously I&#8217;ve used query strings parameters within asset requests so that they act as a &#8216;cache bust&#8217; parameter, these have usually been the source control revision number and is built into the release process. But I&#8217;ve never taken the step of force an expiry date on content that can be cached and <a href="http://particletree.com/notebook/automatically-version-your-css-and-javascript-files/">the solution in the post</a> is a lot more fine grained than my previous solutions. Something to consider for the future.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2008/01/08/quick-link-speed-up-your-web-application-with-an-automated-caching-system-for-assets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Image Cropper V2 Details and Fund Raising</title>
		<link>http://www.defusion.org.uk/archives/2007/12/24/javascript-image-cropper-v2-fund-raising/</link>
		<comments>http://www.defusion.org.uk/archives/2007/12/24/javascript-image-cropper-v2-fund-raising/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 14:56:26 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2007/12/24/javascript-image-cropper-v2-fund-raising/</guid>
		<description><![CDATA[I&#8217;ve had a list of changes and updates to apply to the JavaScript Image Cropper for quite a while now and I have been thinking of these in a lot more detail recently. There are lots of changes that I plan to make that would bring the cropper up to V2 level and ensure that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a list of changes and updates to apply to the <a href="http://www.defusion.org.uk/code/javascript-image-cropper-ui-using-prototype-scriptaculous/">JavaScript Image Cropper</a> for quite a while now and I have been thinking of these in a lot more detail recently. There are lots of changes that I plan to make that would bring the cropper up to V2 level and ensure that it remains a viable cropping solution for the future.<br />
<span id="more-154"></span><br />
These changes include (but are not limited to) the following:</p>
<ul>
<li>Fix as many bugs as possible, if not all.</li>
<li>Add a couple of new features to the base cropper.</li>
<li>Core architectural changes to improve flexibility of the cropper, read alternative framework support.</li>
<li>Improved documentation and support network.</li>
<li>Improvements to maintenance and updates, read more regular updates.</li>
<li>Any performance improvements that can be made (a fresh look at the code always seems to reveal areas that can be improved).</li>
</ul>
<p>Over the past couple of evenings I have documented and investigated my plans and the architectural changes that I would need to implement to take the cropper to the next level and these have provided me with a rough timeframe for completion of V2.</p>
<p>However I am incredibly busy at the moment and other commitments are taking priority, but I also do not want the cropper codebase to stagnate as I understand the popularity of the cropper &#8212; it&#8217;s the main traffic driver on my site and has had nearly 32,000 downloads so far and is averaging over 1,000 per month.</p>
<p>But as I say my other commitments are taking priority and a lot of my spare time, so I thought I would try an experiment, fund raising.</p>
<p><strong>Why fund raising?</strong><br />
Firstly I must state that this is not about the money, if it were I would not release my code for free (and this will continue for version 2 of the cropper). But it is the only thing I could think of that could give me a clear indication of the desire for an updated version of the cropper. It is all well and good having the odd comments praising the cropper and/or mentioning the desire for feature x or bug fix y, but it is something different to put your money towards achieving that.</p>
<p>So far the cropper donation ratio is about  0.04% of all downloads result in a donation (that&#8217;s 14 donations out of around 32,000 downloads), so the fund raising activity should really test the reaction of the version 2 plans &#8212; thus the target figure I&#8217;ve entered and the timeframe are not as important to me the reaction.</p>
<p><strong>So when will version 2 be released?</strong><br />
That is partly down to the results of the fund raising, I do seriously want to implement all my plans, but whether that&#8217;s this month, next month, next June etc. I cannot specify right now due to my current commitments, all I can say is that if the reaction to the fund raising is successful then it will help me prioritise the cropper appropriately and will result in version 2 being released sooner rather than later.</p>
<p><strong>Okay, enough of the sales patter, how do I donate?</strong><br />
I&#8217;ve setup <a href="http://www.pledgie.com/campaigns/459">a campaign on Pledgie</a>, which you can use your existing PayPal account (or credit card if you don&#8217;t have a PayPal account) to make a donation.</p>
<div style="text-align: center;">
<a href='http://www.pledgie.com/campaigns/459'><img alt='Click here to lend your support to: JavaScript Image Cropper V2 fund raising and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/459.png?skin_name=chrome' border='0' /></a>
</div>
<p>I look forward to your help and support and the changes that V2 will bring to the cropper.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2007/12/24/javascript-image-cropper-v2-fund-raising/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>Sometimes I Don&#8217;t Realise I&#8217;m Missing Things</title>
		<link>http://www.defusion.org.uk/archives/2007/06/04/sometimes-i-dont-realise-im-missing-things/</link>
		<comments>http://www.defusion.org.uk/archives/2007/06/04/sometimes-i-dont-realise-im-missing-things/#comments</comments>
		<pubDate>Mon, 04 Jun 2007 15:45:09 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Outer Monologue]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2007/06/04/sometimes-i-dont-realise-im-missing-things/</guid>
		<description><![CDATA[Every so often, in pretty much any field, something comes out or is released that I don&#8217;t realise I&#8217;ve been missing until it&#8217;s pointed out to me. Today it is a little proof of concept for toggling multiple check boxes by click-hold-drag. This is something that I&#8217;ve become familiar and comfortable with in desktop programs, [...]]]></description>
			<content:encoded><![CDATA[<p>Every so often, in pretty much any field, something comes out or is released that I don&#8217;t realise I&#8217;ve been missing until it&#8217;s pointed out to me. Today it is a <a href="http://snook.ca/archives/javascript/toggler_v01/">little proof of concept for toggling multiple check boxes by click-hold-drag</a>. This is something that I&#8217;ve become familiar and comfortable with in desktop programs, but I never noticed it was missing from web browsers. Now this script has pointed out that it&#8217;s not there &#8211; I miss it.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2007/06/04/sometimes-i-dont-realise-im-missing-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firebug Lite &#8211; Cross Browser Firebug</title>
		<link>http://www.defusion.org.uk/archives/2007/01/28/firebug-lite-cross-browser-firebug/</link>
		<comments>http://www.defusion.org.uk/archives/2007/01/28/firebug-lite-cross-browser-firebug/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 23:58:14 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Outer Monologue]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2007/01/28/firebug-lite-cross-browser-firebug/</guid>
		<description><![CDATA[Ok, so before you get too excited it&#8217;s not really a fully fledged version fantastic Firebug Firefox plugin, but the lite version does go some ways to easing your cross browser development.
If you&#8217;re not aware what Firebug is, the official site quote is:

Firebug integrates with Firefox to put a wealth of development tools at your [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so before you get too excited it&#8217;s not really a fully fledged version fantastic <a href="http://getfirebug.com/">Firebug</a> Firefox plugin, but <a href="http://getfirebug.com/lite.html">the lite version</a> does go some ways to easing your cross browser development.</p>
<p>If you&#8217;re not aware what Firebug is, the official site quote is:</p>
<blockquote cite="http://getfirebug.com/"><p>
Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor <acronym title="Cascading Style Sheets">CSS</acronym>, <acronym title="HyperText Markup Language">HTML</acronym>, and JavaScript live in any web page.
</p></blockquote>
<p>But that doesn&#8217;t explain just <em>how</em> excellent Firebug is, it is by far and away not only the most complete debugging plugin I have found for any browser, but it also seems to be one of the most complete and professionally executed Firefox plugins around.<br />
<span id="more-103"></span><br />
I cannot bear to live without it, especially when I am working in JavaScript, so the <a href="http://getfirebug.com/lite.html">lite version</a> goes some way to ease the pain when working in other browsers by providing a similar console for dumping information to. Until I found the lite version recently I had a workaround function that either used alerts or my own debug console (which I&#8217;m not linking to as I am contemplating dropping from the site) in other browsers to ensure that the code still worked and provided some useful debug information, now I no longer need that work around.</p>
<p>I still long for a real cross browser version of the full Firebug feature set, but I&#8217;m pretty sure that would be a lot of work for some of the browsers.</p>
<p> <a href="http://www.fitness-superstore.co.uk/elliptical_trainers/10006_0c.html">cross trainer</a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2007/01/28/firebug-lite-cross-browser-firebug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adventures With JavaScript Testing and mootools</title>
		<link>http://www.defusion.org.uk/archives/2006/12/27/adventures-with-javascript-testing-and-mootools/</link>
		<comments>http://www.defusion.org.uk/archives/2006/12/27/adventures-with-javascript-testing-and-mootools/#comments</comments>
		<pubDate>Wed, 27 Dec 2006 17:23:55 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Outer Monologue]]></category>
		<category><![CDATA[Unit Testing]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2006/12/27/adventures-with-javascript-testing-and-mootools/</guid>
		<description><![CDATA[I'm currently in the middle of writing a reusable little JavaScript utility, which I'll probably release when it's finished, for one of my many projects and I wanted to employ unit testing as part of the development process, as I believe in the benefits of it quite strongly.
However my previous experience with unit testing JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p>I'm currently in the middle of writing a reusable little JavaScript utility, which I'll probably release when it's finished, for one of my many projects and I wanted to employ unit testing as part of the development process, as I believe in the benefits of it quite strongly.</p>
<p>However my previous experience with unit testing JavaScript haven't been the most pleasent, I have tried the most common nUnit variations for JS, the best of which was <a href="http://www.jsunit.net/">JSUnit</a>. But I always found this a little cumbersome and difficult to use, however I had recently <a href="http://mir.aculo.us/2006/9/16/adventures-in-javascript-testing">read about</a> the unit testing available with <a href="http://script.aculo.us/">script.aculo.us</a> and although the only documentation I could find was the <a href="http://mir.aculo.us/2006/9/16/adventures-in-javascript-testing"><acronym title="Portable Document Format">PDF</acronym> available</a> at <a href="http://mir.aculo.us/">mir.aculo.us</a> I thought I'd give it a go.<br />
<span id="more-102"></span><br />
My only worry with using the script.aculo.us unit testing was its dependency on <a href="http://prototype.conio.net/">prototype</a> and <a href="http://script.aculo.us/">script.aculo.us</a> (obviously) and now I've moved across to <a href="http://mootools.net/">mootools</a> for most things I thought there may be some clashes between prototype and mootools for this.</p>
<p>However with the current versions of each of those I managed to get everything working by changing only two lines in the unittest.js:</p>
<div class="igBar"><span id="ljavascript-4"><a href="#" onclick="javascript:showPlainTxt('javascript-4'); return false;">Display code as plain text</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-4">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Event.<span style="color: #006600;">observe</span><span style="color: #66cc66;">&#40;</span>td, <span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> ... </div>
</li>
</ol>
</div>
</div>
</div>
<p>
to</p>
<div class="igBar"><span id="ljavascript-5"><a href="#" onclick="javascript:showPlainTxt('javascript-5'); return false;">Display code as plain text</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-5">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color: #66cc66;">&#40;</span> td <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color: #66cc66;">&#40;</span> <span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> ... </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>The script.aculo.us unit testing framework is very fast (one of my tests performs 16 tests with 1904 assertions in about a second) and it does a great job of catching scripting and syntax errors and presenting those in a useful way without breaking the tests, which some frameworks I've used in different languages don't always handle too well.</p>
<p>The only let down is the current level of <a href="http://wiki.script.aculo.us/scriptaculous/show/UnitTesting">documentation</a>, but if you've looked at unit testing in any other language this is almost the same and you can figure out what most of the assertions do from reading the <acronym title="Portable Document Format">PDF</acronym> and looking at the source. The only minor niggle is the need to use the</p>
<div class="igBar"><span id="ljavascript-6"><a href="#" onclick="javascript:showPlainTxt('javascript-6'); return false;">Display code as plain text</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-6">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066; font-weight: bold;">with</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000066; font-weight: bold;">this</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; ...</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
syntax for all your assertions, I haven't found an explanation for why this is needed within each of the test methods and why it can't be hidden from the user, but you need it otherwise it won't work.</p>
<p>I haven't looked at using the <a href="http://wiki.script.aculo.us/scriptaculous/show/FunctionalTesting">functional tests</a> available within script.aculo.us yet as it's still at a very early stage and I'm not sure whether it's needed as I think I can do everything I need right now with unit tests. I hope to write more about specific examples of unit tests, e.g. complex ones which require <acronym title="Document Object Model">DOM</acronym> manipulation or user interaction etc., in JavaScript when I have some decent examples in place.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2006/12/27/adventures-with-javascript-testing-and-mootools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dump Variables in JavaScript Just Like Those CF Guys</title>
		<link>http://www.defusion.org.uk/archives/2006/11/27/dump-variables-in-javascript-just-like-those-cf-guys/</link>
		<comments>http://www.defusion.org.uk/archives/2006/11/27/dump-variables-in-javascript-just-like-those-cf-guys/#comments</comments>
		<pubDate>Mon, 27 Nov 2006 22:21:43 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2006/11/27/dump-variables-in-javascript-just-like-those-cf-guys/</guid>
		<description><![CDATA[ I came across this funky little script earlier today which allows you to dump variables of any data type in JavaScript and presents the results in exactly the same format as the default output of a &#60;cfdump var=&#34;#myVar#&#34; /&#62; in Coldfusion.
I really like the completeness of this script, how it handles the node elements [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image90" class="featureImg" src="http://www.defusion.org.uk/wp-content/uploads/2006/11/javascriptstruct_thumb.jpg" alt="Screenshot of JavaScript struct dump output" /> I came across <a href="http://www.netgrow.com.au/files/javascript_dump.cfm">this funky little script</a> earlier today which allows you to dump variables of any data type in JavaScript and presents the results in exactly the same format as the default output of a <span class="code">&lt;cfdump var=&quot;#myVar#&quot; /&gt;</span> in Coldfusion.</p>
<p>I really like the completeness of this script, how it handles the node elements and the cross browser support. I've not tried using it in development yet and I doubt it would replace my <span class="code">console.log()</span> calls in <a href="http://www.mozilla.com/en-US/firefox/">Firefox</a> when using <a href="http://www.joehewitt.com/software/firebug/">Firebug</a>, as that offers so much more, but for the poorer members of the web browser family (poor little <acronym title="Internet Explorer">IE</acronym>) I can definitely see it coming in handy.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2006/11/27/dump-variables-in-javascript-just-like-those-cf-guys/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Update : JavaScript Image Cropper UI using Prototype v 1.2.0</title>
		<link>http://www.defusion.org.uk/archives/2006/10/30/update-javascript-image-cropper-ui-using-prototype-v-120/</link>
		<comments>http://www.defusion.org.uk/archives/2006/10/30/update-javascript-image-cropper-ui-using-prototype-v-120/#comments</comments>
		<pubDate>Mon, 30 Oct 2006 20:45:10 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2006/10/30/update-javascript-image-cropper-ui-using-prototype-v-120/</guid>
		<description><![CDATA[I've finally released the latest version of the JavaScript Image Cropper UI which has been updated to version 1.2.0.
This adds quite a few bugs fixes, feature additions (the much requested ability to set maximum dimensions) and speed improvements and general streamlining. 
NOTE: One really important change to note is that the cropper no longer has [...]]]></description>
			<content:encoded><![CDATA[<p>I've finally released the latest version of the <a href="/code/javascript-image-cropper-ui-using-prototype-scriptaculous/">JavaScript Image Cropper UI</a> which has been updated to version 1.2.0.</p>
<p>This adds quite a few bugs fixes, feature additions (the much requested ability to set maximum dimensions) and speed improvements and general streamlining. </p>
<p><strong>NOTE:</strong> One really important change to note is that the cropper no longer has the default behaviour of automatically setting a ratio when both min width &amp; height passed, the ratioDimensions must be now passed when this functionality is required.<br />
<span id="more-83"></span><br />
Here's a full list of all the changes:</p>
<ul>
<li>Added id to the preview image element using 'imgCrop_[originalImageID]'</li>
<li><span class="code">#00001</span> - Fixed bug: Doesn't account for scroll offsets</li>
<li><span class="code">#00009</span> - Fixed bug: Placing the cropper inside differently positioned elements causes incorrect co-ordinates and display</li>
<li><span class="code">#00013</span> - Fixed bug: I-bar cursor appears on drag plane</li>
<li><span class="code">#00014</span> - Fixed bug: If ID for image tag is not found in document script throws error</li>
<li>Fixed bug with drag start co-ordinates if wrapper element has moved in browser (e.g. dragged to a new position)</li>
<li>Fixed bug with drag start co-ordinates if image contained in a wrapper with scrolling - this may be buggy if image has other ancestors with scrolling applied (except the body)</li>
<li>#00015 - Fixed bug: When cropper removed and then reapplied onEndCrop callback gets called multiple times, solution suggestion from Bill Smith</li>
<li>Various speed increases &amp; code cleanup which meant improved performance in Mac - which allowed removal of different overlay methods for <acronym title="Internet Explorer">IE</acronym> and all other browsers, which led to a fix for:
<ul>
<li><span class="code">#00010</span> - Fixed bug: Select area doesn't adhere to image size when image resized using img attributes</li>
</ul>
</li>
<li><span class="code">#00006</span> - Removed default behaviour of automatically setting a ratio when both min width &amp; height passed, the ratioDimensions must be passed in</li>
<li><span class="code">#00005</span> - Added ability to set maximum crop dimensions, if both min &amp; max set as the same value then we'll get a fixed cropper size on the axes as appropriate and the resize handles will not be displayed as appropriate</li>
<li>Switched keydown for keypress for moving select area with cursor keys (makes for nicer action) - doesn't appear to work in Safari</li>
</ul>
<p>Phew!</p>
<p>Actually all of this was pretty much wrapped up in the first couple of weeks of October, but being as anal as I am I didn't want to remove a bug fix that I had in place and working perfectly in <a href="http://www.getfirefox.com/">Firefox</a> but which went crazy in <acronym title="Internet Explorer">IE</acronym> and Opera (hence my <a href="/archives/2006/10/15/argh-browsers/">last post</a>). That fix was having some <span class="code">overflow</span> <acronym title="Cascading Style Sheets">CSS</acronym> properties on the wrapper around the image to which the cropper is applied to, the fix and test page worked perfectly if Firefox, but not in <acronym title="Internet Explorer">IE</acronym> and Opera. The fix is still<br />
in place, but the test page is not - I may re-address this in the future.</p>
<p>Finally as usual, please use the <a href="/code/javascript-image-cropper-ui-using-prototype-scriptaculous/">JavaScript Image Cropper UI code page</a> to leave comments &amp; bug reports etc. on the cropper UI.</p>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2006/10/30/update-javascript-image-cropper-ui-using-prototype-v-120/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Add MooTools to the List</title>
		<link>http://www.defusion.org.uk/archives/2006/09/17/add-mootools-to-the-list/</link>
		<comments>http://www.defusion.org.uk/archives/2006/09/17/add-mootools-to-the-list/#comments</comments>
		<pubDate>Sun, 17 Sep 2006 20:44:52 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Outer Monologue]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.defusion.org.uk/archives/2006/09/17/add-mootools-to-the-list/</guid>
		<description><![CDATA[The list I'm referring to is that of fantastic JavaScript frameworks. My list now includes Prototype (and the fact that I didn't need to look up the URL just shows how many times I've recommended Prototoype), Dojo Toolkit, script.aculo.us and now MooTools.
I've not had the time to play around with MooTools yet, but simply looking [...]]]></description>
			<content:encoded><![CDATA[<p>The list I'm referring to is that of fantastic JavaScript frameworks. My list now includes <a href="http://prototype.conio.net/">Prototype</a> (and the fact that I didn't need to look up the <acronym title="Uniform Resource Locator">URL</acronym> just shows how many times <a href="http://www.defusion.org.uk/archives/2005/11/30/prototype-javascript-framework-documentation/">I've recommended</a> Prototoype), <a href="http://www.dojotoolkit.org/">Dojo Toolkit</a>, <a href="http://script.aculo.us/">script.aculo.us</a> and now <a href="http://mootools.net/">MooTools</a>.</p>
<p>I've not had the time to play around with MooTools yet, but simply looking at the <a href="http://mootools.net/help">help page</a> you can't deny that it looks sweet.<br />
<span id="more-76"></span><br />
&quot;OK&quot; you may say to yourself, &quot;it doesn't look like there is anything too new in there&quot;. Well even if it were just the really nice syntax changes, such as when extending classes:</p>
<div class="igBar"><span id="ljavascript-9"><a href="#" onclick="javascript:showPlainTxt('javascript-9'); return false;">Display code as plain text</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-9">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> Mammal = Animal.<span style="color: #006600;">extend</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; initialize: <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ...</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Which is a lot more intuitive and concise than the current method offered in Prototype:</p>
<div class="igBar"><span id="ljavascript-10"><a href="#" onclick="javascript:showPlainTxt('javascript-10'); return false;">Display code as plain text</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-10">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> Mammal = <span style="color: #003366; font-weight: bold;">Class</span>.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Object.<span style="color: #006600;">extend</span><span style="color: #66cc66;">&#40;</span>Object.<span style="color: #006600;">extend</span><span style="color: #66cc66;">&#40;</span>Mammal.<span style="color: #006600;">prototype</span>, Animal.<span style="color: #006600;">prototype</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; initialize: <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ...</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>I'd be happy to recommend MooTools on those improvements alone, intuitive and concise is always the best combination when it comes to programming languages as far as I'm concerned, but there is much more:</p>
<ul>
<li>OO inheritance, allowing you to call methods on the parent object when extending objects.</li>
<li>Using the $ function to extend elements with the Element methods.</li>
<li>Defining custom methods on elements.</li>
<li>Powerful yet simple effects.</li>
<li>The full release (when the compressed option is chosen) is around 20kb, consider that the latest version of Prototype alone is 53kb and when compressed (with the fabulous <a href="http://dojotoolkit.org/docs/compressor_system.html">Dojo Rhino compressor</a>) is still 36kb. To work around the large size of Prorotype &amp; script.aculo.us combined I've had to break Prototype up into its component parts and then use a custom manager for managing script requirements (I plan to post about this in future once I've worked up a couple of examples); I mean who uses all the functionality Prototype offers at the same time?</li>
</ul>
<p>Another of the potentially great things about the MooTools library is the FX themselves, I'm aware that <a href="http://moofx.mad4milk.net/">Moo.fx</a> has been around for a while, but the really great thing about Moo and is that it doesn't seem to try and do all the work for you. If you've ever taken a look at using the script.aculo.us dragables or sortables for anything that slightly differs from the test cases or examples you'll soon come a bit of a cropper, <a href="http://www.snook.ca/">Johnathan Snook</a> gives a good example of the simplicity and flexibility of the MooTools way of doing things in his post exploring <a href="http://www.snook.ca/archives/javascript/mootools_drag_a/">drag and drop with MooTools</a>.</p>
<p>I'm sure I'll have more to post about MooTools in the near future as I'm planning to use it as my primary JavaScript framework for my next large project, so we'll see if it lives up to expectations. For now I'll just share a few links that I've found informative so far:</p>
<ul>
<li><a href="http://mootools.net/help">The MooTools help page</a></li>
<li><a href="http://www.coryhudson.com/blog/2006/09/14/useful-utility-functions-in-mootools/">Useful Utility Functions in mootools</a></li>
<li><a href="http://www.coryhudson.com/blog/2006/09/12/extending-objects-and-classes-with-mootools/">Extending Objects and Classes with mootools</a></li>
<li><a href="http://www.snook.ca/archives/javascript/mootools_drag_a/">drag and drop with MooTools</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.defusion.org.uk/archives/2006/09/17/add-mootools-to-the-list/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

