<?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>tomputer &#187; javascript</title>
	<atom:link href="http://droza.net/blog/blog/tags/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://droza.net/blog</link>
	<description>Software. Gadgets. Music. Rants. By Tom D\&#039;Roza</description>
	<lastBuildDate>Thu, 23 Dec 2010 13:26:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Custom events in JQuery</title>
		<link>http://droza.net/blog/2009/01/25/custom-events-in-jquery/</link>
		<comments>http://droza.net/blog/2009/01/25/custom-events-in-jquery/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 18:49:54 +0000</pubDate>
		<dc:creator>tdroza</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://droza.net/blog/?p=129</guid>
		<description><![CDATA[For a project at work this week I needed to modify a Javascript library so that under a particular condition it would generate a JS event that could be handled elsewhere in the application.  Why use JS events rather than just call a regular JS function? Well, I guess partly to maintain consistency with the [...]]]></description>
			<content:encoded><![CDATA[
<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> 
<p>For a project at work this week I needed to modify a Javascript library so that under a particular condition it would generate a JS event that could be handled elsewhere in the application.  Why use JS events rather than just call a regular JS function? Well, I guess partly to maintain consistency with the way that other events are handled within the app, and partly because it&#8217;s a more elegant solution: When an event is thrown, if there&#8217;s nothing to catch and handle the event it doesn&#8217;t matter but when you call a JS function you need to be sure that the function exists otherwise you&#8217;ll end up with JS errors on the page so you have to first test that the function exists before you call it. Also an event can <a href="http://www.quirksmode.org/js/events_order.html">propagate</a> up through the ancestory of objects on your page so it can be handled at whichever level is most appropriate or handled in different ways at different levels.</p>
<p>In JQuery the syntax for creating an event handler is exremely simple, for example, given the following HTML:</p>
<pre class="brush: jscript; title: ;">
&lt;div id='container'&gt;
   Click me!
&lt;/div&gt;
</pre>
<p>&#8230;the JQuery code to handle for the click event would be:</p>
<pre class="brush: jscript; title: ;">
$('#container').click(function() {
   alert('You clicked me!');
});
</pre>
<p>In the above example, the &#8220;click&#8221; method is a shorthand utility method provided by JQuery, but is the same as:</p>
<pre class="brush: jscript; title: ;">
$('#container').bind('click', function(e) {
   alert('You clicked me!');
});
</pre>
<p>There&#8217;s a whole bunch of <a title="Event reference on W3Schools" href="http://www.w3schools.com/jsref/jsref_events.asp" target="_blank">standard HTML events</a> that the browser may generate in response to user input (and that can be handled in similar fashion). You can also get JQuery to generate these events programatically.</p>
<p>It turns out that you can create a handler for your own custom event in exactly the same way, just change the name of the event (&#8220;click&#8221; in the example above), to the name of the event you want to create and be sure to use the longhand &#8220;bind&#8221; method. E.g.</p>
<pre class="brush: jscript; title: ;">
$('#container').bind('myEvent', function(e) {
   alert('My event just fired');
});
</pre>
<p>Then, when you want to trigger this event, use the err&#8230; &#8220;trigger&#8221; function:</p>
<pre class="brush: jscript; title: ;">
   $('#container').trigger('myEvent');
</pre>
<p>Because we&#8217;re using events rather than a straight method call (and JQuery 1.3 or later) we could write another handler for myEvent but on an ancestor of #container &#8211; the document body in this case. The handlers would be called in order, first on #container, then on the body. If we want to prevent the event from bubbling up through the DOM we can kill it with the <a title="See the JQuery Event documentation" href="http://docs.jquery.com/Events/jQuery.Event#event.stopPropagation.28.29" target="_blank">stopPropagation()</a> function:</p>
<pre class="brush: jscript; title: ;">
$('#container').bind('myEvent', function(e) {
   e.stopPropagation();
   alert('My event just fired');
});
</pre>
<p>I was surprised by just how simple this was once I realised that the process for custom events is exactly the same as that for standard browser events.</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F&amp;title=Custom+events+in+JQuery" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F&amp;title=Custom+events+in+JQuery" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F&amp;title=Custom+events+in+JQuery" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F&amp;title=Custom+events+in+JQuery" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F&amp;title=Custom+events+in+JQuery', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F&amp;title=Custom+events+in+JQuery" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fdroza.net%2Fblog%2F2009%2F01%2F25%2Fcustom-events-in-jquery%2F&amp;title=Custom+events+in+JQuery" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://droza.net/blog/2009/01/25/custom-events-in-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TinyURL Bookmarklet</title>
		<link>http://droza.net/blog/2008/12/03/tinyurl-bookmarklet/</link>
		<comments>http://droza.net/blog/2008/12/03/tinyurl-bookmarklet/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 22:16:16 +0000</pubDate>
		<dc:creator>tdroza</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[jsonp]]></category>
		<category><![CDATA[tinyurl]]></category>
		<category><![CDATA[wtframework]]></category>

		<guid isPermaLink="false">http://droza.net/blog/?p=97</guid>
		<description><![CDATA[If you just want to try this out, drag the link below to your bookmarks toolbar, then click the new bookmark. I&#8217;ve only tested in Firefox 3.04 so far so your mileage may vary if you use another browser. Let me know in the comments if you find this useful or have any problems. Tiny [...]]]></description>
			<content:encoded><![CDATA[
<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> 
<div id="attachment_119" class="wp-caption aligncenter" style="width: 442px"><a href="http://droza.net/blog/wp-content/uploads/2008/12/tiny_bookmarklet.gif" rel="lightbox[97]"><img class="size-full wp-image-119" title="TinyURL bookmarklet" src="http://droza.net/blog/wp-content/uploads/2008/12/tiny_bookmarklet.gif" alt="TinyURL bookmarklet in action" width="432" height="101" /></a><p class="wp-caption-text">TinyURL bookmarklet in action</p></div>
<p>If you just want to try this out, drag the link below to your bookmarks toolbar, then click the new bookmark. I&#8217;ve only tested in Firefox 3.04 so far so your mileage may vary if you use another browser. Let me know in the comments if you find this useful or have any problems.</p>
<blockquote><p><a class="aligncenter" title="TinyURL Bookmarklet" href="javascript:var%20el=document.getElementById('__tiny');if(el){document.body.removeChild(el)}else{var%20scriptTag=document.createElement('script');scriptTag.type='text/javascript';scriptTag.src='http://json-tinyurl.appspot.com/?callback=window.tinyCallback&amp;url='+document.location;scriptTag.id='__tinyURL_script';document.body.appendChild(scriptTag)}if(!window['tinyCallback']){window.tinyCallback=function(data){var%20c=document.createElement('span');c.id='__tiny';c.style.opacity='0.7';c.style.filter='alpha(opacity=70)';c.style.border='solid%202px%20%23fff';c.style.textDecoration='none';c.style.textAlign='left';c.style.position='fixed';c.style.zIndex='9000';c.style.top='15px';c.style.right='20px';c.style.background='#000';c.style.styleFloat='right';c.style.padding='7px%2010px';c.style.color='%23fff';c.style.font='12px%20Lucida%20Grande,Helvetica,Tahoma';c.style.MozBorderRadius='5px';c.style.WebkitBorderRadius='5px';c.style.WebkitBoxShadow='0px%200px%2020px%20%23000';c.style.MozBoxShadow='0px%200px%2020px%20%23000';document.body.appendChild(c);c.innerHTML=&quot;&lt;input%20id='__tiny_text'%20type='text'%20value='&quot;+data.tinyurl+&quot;'%20style='border:0px;background:transparent;color:#fff;'/&gt;&quot;;document.getElementById('__tiny_text').focus();document.getElementById('__tiny_text').select();var%20x=document.getElementById('__tinyURL_script');if(x){document.body.removeChild(x)}}}void(0);"><span style="font-size: x-large; font-weight: bold;">Tiny</span></a></p>
<p>(v1.1 updated Dec 6th: The generated tiny url is now automatically selected ready to be copied)</p></blockquote>
<p>Read on for a description of how it works&#8230;</p>
<p><span id="more-97"></span></p>
<p><span style="text-decoration: underline;"><strong>What it does</strong></span><br />
Inspired by the <a title="WTFramework" href="http://blog.olicio.us/2008/11/08/wtframework-bookmarklet/" target="_blank">WTFramework</a> bookmarklet I decided to create a TinyURL bookmarklet that would generate a shortened url without opening a new browser window and without navigating the user away from the current page. It took me a little while to figure out how to define a callback function within a bookmarklet (thanks to <a title="Dion's blog" href="http://almaer.com/blog/">Dion Almaer</a> for a useful <a title="Dion's blog post" href="http://almaer.com/blog/translate-select-any-text-in-the-browser-and-have-it-convert-to-english-or-your-language">tutorial</a>) but I got it working in a couple of hours and I quite like it. Thanks also to <a title="About Oskar" href="http://blog.olicio.us/the-dude" target="_blank">Oskar Krawczyk</a> for the CSS which I &#8220;borrowed&#8221; from the aforementioned WTFramework.</p>
<p><span style="text-decoration: underline;"><strong>How it works<br />
</strong></span>When you click the bookmarklet, I first check whether the UI element is visible and if it is, remove it:</p>
<pre class="brush: jscript; title: ;">
var el=document.getElementById('__tiny');
if (el){
document.body.removeChild(el);
}
</pre>
<p>This makes the bookmarklet act as a toggle: Click once to show the UI, click again to remove it. The WTFramework bookmarklet also removes the UI when the user clicks on the UI element itself  but I removed that functionality from this bookmarklet as the user is likely to want to click and select the tinyurl to copy it which would be difficut if the UI disappears on mouse click.</p>
<p>If the UI is not present, I generate a URL which is called via script injection to circumvent the browser&#8217;s same origin policy (i.e. I generate as <code>script</code> tag, set its <code>src</code> attribute and add the tag to the DOM):</p>
<pre class="brush: jscript; title: ;">
var scriptTag = document.createElement('script');
scriptTag.type='text/javascript';
scriptTag.src='http://json-tinyurl.appspot.com/?callback=window.tinyCallback&amp;amp;amp;url=' + document.location;
scriptTag.id='__tinyURL_script';
document.body.appendChild(scriptTag);
</pre>
<p>The response is a JSONP formatted string. TinyURL provides a very simple API (e.g. <a title="TinyURL API example" href="http://tinyurl.com/api-create.php?url=http://scripting.com/" target="_blank">http://tinyurl.com/api-create.php?url=http://www.droza.net/blog</a>) but doesn&#8217;t offer a JSONP interface &#8211; I was going to create one with Yahoo Pipes, but found that a suitable JSONP wrapper for TinyURL already exists, hosted in Google&#8217;s AppEngine (e.g. http://json-tinyurl.appspot.com/?callback=window.tinyCallback&amp;url=http://www.droza.net/blog) so I use that instead (thanks <a title="Simon Willison" href="http://simonwillison.net/2008/Aug/27/jsontinyurl/" target="_blank">Simon</a>!).</p>
<p>After the script tag is added to the page, the browser will call the API and the response will invoke the tinyCallback function (I check to see whether the function already exists before declaring it to prevent declaring it twice if the bookmarklet is used multiple times on the same page). The callback constructs a semi-transparent UI element positioned in the top-right of the browser page and sets its content to be the generated tiny url. The bulk of the code is CSS:</p>
<pre class="brush: jscript; title: ;">
window.tinyCallback = function(data) {
var c=document.createElement('span');
c.id='__tiny';
c.style.opacity='0.7';
c.style.filter='alpha(opacity=70)';
c.style.border='solid 2px %23fff';
c.style.textDecoration='none';
c.style.textAlign='left';
c.style.position='fixed';
c.style.zIndex='9000';
c.style.top='15px';
c.style.right='20px';
c.style.background='#000';
c.style.styleFloat='right';
c.style.padding='7px 10px';
c.style.color='%23fff';
c.style.font='12px Lucida Grande,Helvetica,Tahoma';
c.style.MozBorderRadius='5px';
c.style.WebkitBorderRadius='5px';
c.style.WebkitBoxShadow='0px 0px 20px %23000';
c.style.MozBoxShadow='0px 0px 20px %23000';
document.body.appendChild(c);
c.innerHTML=data.tinyurl;
</pre>
<p>It then removes the script tag that it added to the DOM, just to keep things tidy:</p>
<pre class="brush: jscript; title: ;">
var x=document.getElementById('__tinyURL_script');
if (x){
document.body.removeChild(x);
}
</pre>
<p>After creating the script I used Dean Edward&#8217;s <a title="Dean's packer" href="http://dean.edwards.name/packer/" target="_blank">packer</a> to minify the code to a single line sans-whitespace suitable for using in the <code>href</code> attribute of an <code>a</code> tag.</p>
<p><span style="text-decoration: underline;"><strong>The full code</strong></span><br />
For reference, the listing below is the full non-minified sourcecode</p>
<pre class="brush: jscript; title: ;">
var el=document.getElementById('__tiny');
if (el){
document.body.removeChild(el);
} else {
var scriptTag = document.createElement('script');
scriptTag.type='text/javascript';
scriptTag.src='http://json-tinyurl.appspot.com/?callback=window.tinyCallback&amp;amp;amp;url=' + document.location;
scriptTag.id='__tinyURL_script';
document.body.appendChild(scriptTag);
}
if (!window['tinyCallback']) {
window.tinyCallback = function(data) {
var c=document.createElement('span');
c.id='__tiny';
c.style.opacity='0.7';
c.style.filter='alpha(opacity=70)';
c.style.border='solid 2px %23fff';
c.style.textDecoration='none';
c.style.textAlign='left';
c.style.position='fixed';
c.style.zIndex='9000';
c.style.top='15px';
c.style.right='20px';
c.style.background='#000';
c.style.styleFloat='right';
c.style.padding='7px 10px';
c.style.color='%23fff';
c.style.font='12px Lucida Grande,Helvetica,Tahoma';
c.style.MozBorderRadius='5px';
c.style.WebkitBorderRadius='5px';
c.style.WebkitBoxShadow='0px 0px 20px %23000';
c.style.MozBoxShadow='0px 0px 20px %23000';
document.body.appendChild(c);
c.innerHTML=data.tinyurl;
var x=document.getElementById('__tinyURL_script');
if (x){
document.body.removeChild(x);
}
}
}
void(0);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://droza.net/blog/2008/12/03/tinyurl-bookmarklet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Drawing graphs with Javascript</title>
		<link>http://droza.net/blog/2007/12/04/drawing-graphs-with-javascript/</link>
		<comments>http://droza.net/blog/2007/12/04/drawing-graphs-with-javascript/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 17:20:42 +0000</pubDate>
		<dc:creator>tdroza</dc:creator>
				<category><![CDATA[charts]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mochikit]]></category>
		<category><![CDATA[plotkit]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://droza.net/blog/2007/12/04/drawing-graphs-with-javascript/</guid>
		<description><![CDATA[window.onload = function() { getData(); } If you&#8217;re viewing this post in your feedreader, head over to the site to see the example graph! I&#8217;ve been experimenting with Javascript libraries for building graphs dynamically in the client browser. In the past if I&#8217;ve wanted to create simple bar graphs I&#8217;ve used divs and css &#8211; [...]]]></description>
			<content:encoded><![CDATA[
<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> 
<p><script src="/blog/wp-content/uploads/2007/12/MochiKit-1.3.1/lib/MochiKit/MochiKit.js" type="text/javascript"></script><br />
<script src="/blog/wp-content/uploads/2007/12/plotkit-0.9.1/PlotKit/Base.js" type="text/javascript"></script><br />
<script src="/blog/wp-content/uploads/2007/12/plotkit-0.9.1/PlotKit/Layout.js" type="text/javascript"></script><br />
<script src="/blog/wp-content/uploads/2007/12/plotkit-0.9.1/PlotKit/Canvas.js" type="text/javascript"></script><br />
<script src="/blog/wp-content/uploads/2007/12/plotkit-0.9.1/PlotKit/excanvas.js" type="text/javascript"></script><br />
<script src="/blog/wp-content/uploads/2007/12/plotkit-0.9.1/PlotKit/SweetCanvas.js" type="text/javascript"></script><br />
<script src="/blog/wp-content/uploads/2007/12/BTShareGraph.js" type="text/javascript"></script><br />
<script type="text/javascript" language="javascript">   window.onload = function() {     getData();   } </script><br />
<em> If you&#8217;re viewing this post in your feedreader, head over to the site to see the example graph!</em></p>
<p>I&#8217;ve been experimenting with Javascript libraries for building graphs dynamically in the client browser.  In the past if I&#8217;ve wanted to create simple bar graphs I&#8217;ve used divs and css &#8211; an approach has the advantage of being super lightweight (read &#8220;fast&#8221;) and usually works cross-browser without too much hassle. The big disadvantage is that it&#8217;s inflexible (limited to bar graphs and difficult to update the data once the graph has been rendered) and is a pain to code if there&#8217;s more than a couple of rows of data to be plotted.</p>
<p>A few minutes on Google last week came up with a couple of examples of Javacript libraries that can produce much fancier graphs. I&#8217;ve settled on <a href="http://www.liquidx.net/plotkit/" title="PlotKit">PlotKit</a> because it produces beautiful graphs, works in the major browsers (using either Canvas or SVG)  and has the most developer friendly licence, .</p>
<p>The example below gets a feed of the BT shareprice from Google (fed through a Yahoo Pipe to convert to JSON &#8211; the <a href="http://pipes.yahoo.com/pipes/pipe.info?_id=xLjkFsCd3BGoDvL7yZ1_DQ" title="Shareprice Pipe">pipe </a>can be reused as it takes the ticker symbol as a parameter). It then iterates over the feed data to populate the graph and finally calls render() on the graph object.</p>
<p>A handy library to keep in your developer toolbox!</p>
<p><em>Although not relevant for the data I&#8217;m graphing here, PlotKit can also draw really sweet <a href="http://media.liquidx.net/js/plotkit-tests/svg-sweet.html" title="PlotKit example graphs">pie charts</a>. </em></p>
<div><canvas id="graph" height="300" width="450"></canvas></div>
<p><br/></p>
<div><a href="javascript:setStyle('bar')">View As Bar</a> | <a href="javascript:setStyle('line')">View As Line</a></div>
<p><br/></p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F&amp;title=Drawing+graphs+with+Javascript" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F&amp;title=Drawing+graphs+with+Javascript" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F&amp;title=Drawing+graphs+with+Javascript" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F&amp;title=Drawing+graphs+with+Javascript" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F&amp;title=Drawing+graphs+with+Javascript', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F&amp;title=Drawing+graphs+with+Javascript" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fdroza.net%2Fblog%2F2007%2F12%2F04%2Fdrawing-graphs-with-javascript%2F&amp;title=Drawing+graphs+with+Javascript" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://droza.net/blog/2007/12/04/drawing-graphs-with-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

