<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://dawsdesign.com/drupal">
<channel>
 <title>Daws Design</title>
 <link>http://dawsdesign.com/drupal</link>
 <description />
 <language>en</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/DawsDesign" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
 <title>Mochiweb Documentation</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/ax2lhBUi3b8/mochiweb-docs</link>
 <description>&lt;p&gt;I've noticed it can be hard to find the mochiweb docs online, so I compiled them and I'm now hosting them at &lt;a href="http://dawsdesign.com/man/mochiweb/"&gt;mochiweb documentation&lt;/a&gt;. Feel free to ask in the comments if you'd like me to host anything else at &lt;a href="http://dawsdesign.com/drupal/man-pages"&gt;http://dawsdesign.com/drupal/man-pages&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lX_lXqrX0rF_sP7Znmv7nElN7jU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lX_lXqrX0rF_sP7Znmv7nElN7jU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lX_lXqrX0rF_sP7Znmv7nElN7jU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lX_lXqrX0rF_sP7Znmv7nElN7jU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DawsDesign?a=ax2lhBUi3b8:Gb9qeVE0f-s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DawsDesign?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DawsDesign?a=ax2lhBUi3b8:Gb9qeVE0f-s:bcOpcFrp8Mo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DawsDesign?d=bcOpcFrp8Mo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/mochiweb-docs#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/63">docs</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/61">documentation</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/3">erlang</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/62">man</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/40">mochiweb</category>
 <pubDate>Mon, 01 Jun 2009 05:52:22 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">29 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/mochiweb-docs</feedburner:origLink></item>
<item>
 <title>Erlang Driver Walkthrough with Berkeley DB in C</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/gJxsV03-CKk/erlang-driver-walkthrough</link>
 <description>&lt;p&gt;
While thinking about ErlFS, I realized I'd need at least two subsystems. One for finding a node with the data I am looking for and one to actually store that data. The first will be covered by &lt;a href="http://github.com/dawsdesign/chordial/tree/master" target="_blank"&gt;Chordial&lt;/a&gt;. For the storage portion, I was originally going to use a homegrown method where I would just store the data in files named after their key. I decided I should explore the various possiblities and so I did a little research and decided to take a crack at writing a port driver for Erlang. Thanks go to Kevin Smith for &lt;a href="http://weblog.hypotheticalabs.com/?p=446" target="_blank"&gt;his article on writing linked-in drivers&lt;/a&gt; for Erlang.
&lt;/p&gt;
&lt;p&gt;
There are several way to write an Erlang driver. One way is to spawn a process and communicate over a pipe to your program and another is to bring your program in the same memory space and communicate directly with in-memory vectors. The first is safe; if your program crashes, your Erlang application can recover using standard OTP principles, such as supervisors. The in-vm-memory model is &lt;em&gt;much&lt;/em&gt; more dangerous; if your program crashes, the whole Erlang VM crashes with it. This method, however, is much faster, as it does not have to copy memory and then have the OS switch context for each call. We will be covering this method.
&lt;/p&gt;
&lt;p&gt;
Writing your first Erlang driver can be very difficult as there are very limited examples and the documentation can be very obscure. In this article, I will walk you through writing one for a common purpose-- writing to a database.
&lt;/p&gt;
&lt;p&gt;
All sources can be found at the project's &lt;a href="http://github.com/dawsdesign/erl_bdb_sample/tree/master" target="_blank"&gt;GitHub page&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;Build Directory and Makefiles&lt;/h2&gt;
&lt;p&gt;
First let's start with a simple OTP build directory structure. I'll create a new folder called &lt;em&gt;erl_bdb_store&lt;/em&gt; and in that make the following folders: &lt;em&gt;ebin&lt;/em&gt;, &lt;em&gt;include&lt;/em&gt;, &lt;em&gt;priv&lt;/em&gt;, and &lt;em&gt;src&lt;/em&gt;. This is what it should look like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
erl_bdb_store/
&lt;ul&gt;
&lt;li&gt;ebin         (to store the erlang bytecode/binaries)&lt;/li&gt;
&lt;li&gt;include    (to store erlang include files)&lt;/li&gt;
&lt;li&gt;priv         (to store non erlang projects/code)&lt;/li&gt;
&lt;li&gt;src           (to store erlang source code)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;p&gt;Next, we'll need a couple simple makefiles. Please note that these currently only compile under linux (tested on Ubuntu). The first one just goes to the &lt;em&gt;/priv&lt;/em&gt; and &lt;em&gt;/src&lt;/em&gt; directories and runs the Makefiles in each.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;a href="http://github.com/dawsdesign/erl_bdb_sample/blob/f6c097bf646e5bd3269c12a4c7146f14fea90bba/Makefile" target="_blank"&gt;./Makefile&lt;/a&gt;&lt;/em&gt;:&lt;/p&gt;
&lt;script src="http://friendpaste.com/5Uo3G6KlC2SHq82LGHzSf2.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
The next one compiles the C source (the meat-and-potatoes of the driver) into a shared library. This is different on each operating system and will need to be changed for each. I will do this sometime in the future.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="http://github.com/dawsdesign/erl_bdb_sample/blob/f6c097bf646e5bd3269c12a4c7146f14fea90bba/priv/Makefile" target="_blank"&gt;./priv/Makefile&lt;/a&gt;&lt;/em&gt;:&lt;/p&gt;
&lt;script src="http://friendpaste.com/34zHNAmqZLGkBdYtp9VEFU.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
The erlang Makefile is simple&lt;br /&gt;
&lt;em&gt;&lt;a href="http://github.com/dawsdesign/erl_bdb_sample/blob/f6c097bf646e5bd3269c12a4c7146f14fea90bba/src/Makefile" target="_blank"&gt;./src/Makefile&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;script src="http://friendpaste.com/2lHRD4b9NlPPv19AdruKC1.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;h2&gt;Erlang Source&lt;/h2&gt;
&lt;p&gt;
Now we will make our Erlang wrapper for the driver. It is a standard OTP gen_server behavior callback.&lt;br /&gt;
&lt;a href="http://github.com/dawsdesign/erl_bdb_sample/blob/f6c097bf646e5bd3269c12a4c7146f14fea90bba/src/bdb_store.erl" target="_blank"&gt;./src/bdb_store.erl&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The two important parts are the &lt;em&gt;init&lt;/em&gt; function and the &lt;em&gt;handle_call&lt;/em&gt; function. The &lt;em&gt;init&lt;/em&gt; function loads and starts the driver.&lt;/p&gt;
&lt;script src="http://friendpaste.com/7hbopydtIp1DOJ8wBFR74U.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
The &lt;em&gt;handle_call&lt;/em&gt; function communicates with the driver to put, get and delete records from the database file. This just forwards and translates the commands to the actual driver, where all of the real work happens:&lt;/p&gt;
&lt;script src="http://friendpaste.com/kLiBKVHbkZ8u2IsPV3RB9.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
Notice the primary difference between each call is the first byte of each Message binary. This byte is inspected inside the driver and there it is determined which function to perform:&lt;/p&gt;
&lt;script src="http://friendpaste.com/2ZGHcWlgCLavHZ7nlWYQpj.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;h2&gt;C Source&lt;/h2&gt;
&lt;p&gt;
The C code does most of the work. It handles creating all of the error messages and performing all of the commands the Erlang source communicates to it.
&lt;/p&gt;
&lt;p&gt;
Let's take a look at the C source piece-by-piece.
&lt;/p&gt;
&lt;p&gt;
First we'll create a header file with settings and function prototypes.&lt;br /&gt;
&lt;em&gt;&lt;a href="http://github.com/dawsdesign/erl_bdb_sample/blob/f6c097bf646e5bd3269c12a4c7146f14fea90bba/priv/bdb_drv.h" target="_blank"&gt;./priv/bdb_drv.h&lt;/a&gt;&lt;/em&gt;:&lt;/p&gt;
&lt;script src="http://friendpaste.com/7mikjxUwFF03XdYy6UFqLk.js"&gt;&lt;/script&gt;&lt;p&gt;
At the top we include necessary Erlang headers followed by a couple standard C headers and then the Berkeley DB header. Next we define the path where we want our database to store data, and then we define constants for the byte values of the commands sent to the driver from the Erlang VM. The &lt;em&gt;_bdb_drv_t&lt;/em&gt; struct is very important, as we cannot use global variables and so we must keep our state in a struct. The reason is that the Erlang VM can and will start a new instance of the driver many times for performance and we want to keep our state localized. The last entries in the header file are our function prototypes.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Now to our C implementation file (&lt;a href="http://github.com/dawsdesign/erl_bdb_sample/blob/f6c097bf646e5bd3269c12a4c7146f14fea90bba/priv/bdb_drv.c" target="_blank"&gt;./priv/bdb_drv.c&lt;/a&gt;).&lt;br /&gt;
Include our header file:&lt;/p&gt;
&lt;script src="http://friendpaste.com/6F2hJKfQvdsTDQrdkChkGm.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
Specify the callbacks we will be implementing:&lt;/p&gt;
&lt;script src="http://friendpaste.com/6MG1f8VtlmLQRlTo79IWpD.js"&gt;&lt;/script&gt;&lt;p&gt;
This array defines the callback functions that will be invoked at various points by the Erlang VM. In this example, we are implementing &lt;em&gt;start, stop&lt;/em&gt; and &lt;em&gt;outputv&lt;/em&gt;. This means that when the Erlang VM starts an instance of our driver, it will call our function &lt;em&gt;start&lt;/em&gt;, when it sends a message, it will call &lt;em&gt;outputv&lt;/em&gt; and when it stops the instance, it will call &lt;em&gt;stop&lt;/em&gt;. &lt;em&gt;outputv&lt;/em&gt; is only used if &lt;em&gt;output&lt;/em&gt; is not defined in the array. &lt;em&gt;output&lt;/em&gt; uses a buffer whereas &lt;em&gt;outputv&lt;/em&gt; does not, meaning there is no overhead in copying the data, so it is faster. See &lt;a href="http://erlang.org/doc/man/driver_entry.html" target="_blank"&gt;driver_entry documentation&lt;/a&gt; for more detail.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Next is boilerplate which tells the VM which struct to use as the state holder:&lt;/p&gt;
&lt;script src="http://friendpaste.com/6uBszeVpCKKYetB2hRVN9a.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
Here, we define the start function and open up the database for reading and writing.&lt;/p&gt;
&lt;script src="http://friendpaste.com/3q81vKoi055S8mbbRSpaVi.js"&gt;&lt;/script&gt;&lt;p&gt;
If Berkeley DB returns an error, it is propagated to the Erlang VM as a typical &lt;em&gt;{error, Reason} tuple&lt;/em&gt;.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
The &lt;em&gt;stop&lt;/em&gt; function closes the database and releases the driver:&lt;/p&gt;
&lt;script src="http://friendpaste.com/6ikIvP6ioupolNRRR1u6Jd.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
&lt;em&gt;outputv&lt;/em&gt; will serve as our entry point when a message is sent to the driver:&lt;/p&gt;
&lt;script src="http://friendpaste.com/527qzuSSuKf8DBrDrXltWp.js"&gt;&lt;/script&gt;&lt;p&gt;
It interprets the first byte of the message to determine which function to call.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
As it's name implies, the &lt;em&gt;put&lt;/em&gt; function inserts a record into the database:&lt;/p&gt;
&lt;script src="http://friendpaste.com/26rrJqtBUtDpeSoIDdkLyE.js"&gt;&lt;/script&gt;&lt;p&gt;
The function grabs the first 20 bytes after the first command byte and uses it as the key. This leaves room for 160 bits-- enough for a SHA1 hash. All of the remaining bytes are used as the value to be stored. This function returns the atom &lt;em&gt;ok&lt;/em&gt; or the typical &lt;em&gt;{error, Reason}&lt;/em&gt; tuple.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
The &lt;em&gt;get&lt;/em&gt; function is similar to put, except we have to free the memory allocated by Berkeley after the record has been retrieved:&lt;/p&gt;
&lt;script src="http://friendpaste.com/3xQhSrIYfflCunIk37qVhj.js"&gt;&lt;/script&gt;&lt;p&gt;
First we call an Erlang function named &lt;em&gt;driver_alloc_binary&lt;/em&gt; (see &lt;a href="http://erlang.org/doc/man/erl_driver.html#driver_alloc_binary" target="_blank"&gt;erl_driver#driver_alloc_binary&lt;/a&gt;) which keeps a reference count, starting with 1. We then return the value with &lt;em&gt;driver_output_term&lt;/em&gt; which increases the reference count to 2 and then call &lt;em&gt;driver_free_binary&lt;/em&gt; which brings it to 1 again. When the Erlang VM has finished with it, it will also call &lt;em&gt;driver_free_binary&lt;/em&gt; which brings the reference count to 0 and it will be freed from memory.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
The &lt;em&gt;del&lt;/em&gt; function deletes a record and is the most simple of the database functions:&lt;/p&gt;
&lt;script src="http://friendpaste.com/3bUPvidknoVcBH6BBxqUNz.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
Finally we have our catch-all function which will be called if an unrecognized command byte is sent. It returns the tuple &lt;em&gt;{error, unkown_command}&lt;/em&gt;:&lt;/p&gt;
&lt;script src="http://friendpaste.com/3HkZhj8eOHCWxIW5eBkCDC.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;
Let's compile it and jump into an Erlang shell to test it out:&lt;/p&gt;
&lt;script src="http://friendpaste.com/3FKCBwNLvjzWin9Dn1jqNi.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
Now,  let's start the gen_server we wrote and perform a couple tests:&lt;/p&gt;
&lt;script src="http://friendpaste.com/3bjx1yNyrgFt1X3NEfX6xi.js"&gt;&lt;/script&gt;
&lt;hr /&gt;
&lt;p&gt;
That's it for the walkthrough. If you have any questions, please post a comment or use the contact form. You can also email me at the email address listed in the source. I hope it helps you on a future project! Please let me know if it does!
&lt;/p&gt;
&lt;p&gt;
All sources can be found at the project's &lt;a href="http://github.com/dawsdesign/erl_bdb_sample/tree/master" target="_blank"&gt;GitHub page&lt;/a&gt;.
&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EI-udyzVILAxQcE5VApIj8qsbPQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EI-udyzVILAxQcE5VApIj8qsbPQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EI-udyzVILAxQcE5VApIj8qsbPQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EI-udyzVILAxQcE5VApIj8qsbPQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DawsDesign?a=gJxsV03-CKk:YfpuZCdesy4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DawsDesign?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DawsDesign?a=gJxsV03-CKk:YfpuZCdesy4:bcOpcFrp8Mo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DawsDesign?d=bcOpcFrp8Mo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/erlang-driver-walkthrough#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/55">bdb</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/59">c</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/54">db</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/57">driver</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/53">erlang. berkeley</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/58">linked-in</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/56">port</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/41">tutorial</category>
 <pubDate>Tue, 26 May 2009 14:28:42 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">27 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/erlang-driver-walkthrough</feedburner:origLink></item>
<item>
 <title>Chordial - Chord DHT in Erlang</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/dS7MVdSEvWM/chordial</link>
 <description>&lt;p&gt;&lt;img src="http://dawsdesign.com/drupal/sites/default/files/chord_thumb.png" alt="chord" align="left" style="margin-right: 1em;" /&gt;&lt;br /&gt;
I've been stalled with ErlFS for a while now, but my interest has been flared up due to someone cloning my SVN repo into GitHub, where it ended up on the front page for interesting projects.&lt;/p&gt;
&lt;p&gt;So, I had actually been scheming a bit and was thinking about using a distributed hash table instead of a mesh network, due to the ability to scale massively. This is one of the goals of ErlFS, so it seemed natural.&lt;/p&gt;
&lt;p&gt;I'm dead set on it now and I've started a project called chordial, which is my open source _interpretation_ of MIT's chord algorithm. Once it is finished, it should greatly simplify ErlFS and I will likely start from scratch.&lt;/p&gt;
&lt;p&gt;You can find chordial at &lt;a href="http://github.com/dawsdesign/chordial/" title="http://github.com/dawsdesign/chordial/"&gt;http://github.com/dawsdesign/chordial/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I can currently add multiple nodes to the ring, but I am having some issues with the finger function on the nodes. It will just take some time to get sorted out, but I am feeling great about this project and it is going quite well.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-Q8QlC_n3CYuLLKLSAd54p9jC1c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Q8QlC_n3CYuLLKLSAd54p9jC1c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-Q8QlC_n3CYuLLKLSAd54p9jC1c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Q8QlC_n3CYuLLKLSAd54p9jC1c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=yxmVSZkf"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=Y55D1C26"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/chordial#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/49">chord</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/50">dht</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/3">erlang</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/51">github</category>
 <enclosure url="http://dawsdesign.com/drupal/sites/default/files/chord_thumb.png" length="1992" type="image/png" />
 <pubDate>Tue, 10 Feb 2009 22:45:14 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">26 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/chordial</feedburner:origLink></item>
<item>
 <title>Use MySQL with Erlang</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/WsKsfwPy0zQ/use_mysql_with_erlang</link>
 <description>&lt;p&gt;If you want to get your manager to try out Erlang, but they are hesitant (probably an understatement) you might be able to get some leverage if you use a relational database rather than mnesia. So, here's a quick sample of how to connect to and query a MySQL database.&lt;/p&gt;
&lt;p&gt;First, you'll need to install the MySQL ODBC driver if you haven't already. You can find it at &lt;a href="http://dev.mysql.com/downloads/connector/odbc/5.1.html" title="http://dev.mysql.com/downloads/connector/odbc/5.1.html"&gt;http://dev.mysql.com/downloads/connector/odbc/5.1.html&lt;/a&gt;. Then you'll need a database to connect to and a table to query. Here's the SQL script I used to create my test database:&lt;/p&gt;
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;CREATE DATABASE `test`;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE `test`.`test_table`&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; `id` INTEGER UNSIGNED NOT &lt;span style="color: #000000; font-weight: bold;"&gt;NULL&lt;/span&gt; AUTO_INCREMENT,&lt;br /&gt;
&amp;nbsp; `first_name` VARCHAR&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;45&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; NOT &lt;span style="color: #000000; font-weight: bold;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; `last_name` VARCHAR&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;45&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; NOT &lt;span style="color: #000000; font-weight: bold;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; PRIMARY &lt;a href="http://www.php.net/key"&gt;&lt;span style="color: #000066;"&gt;KEY&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;`id`&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
ENGINE = InnoDB;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `test`.`test_table`&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; `first_name`,&lt;br /&gt;
&amp;nbsp; `last_name`&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
VALUES&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #ff0000;"&gt;'Matt'&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #ff0000;"&gt;'Williamson'&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;,&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #ff0000;"&gt;'Matt'&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #ff0000;"&gt;'Williamson2'&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;,&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #ff0000;"&gt;'Matt'&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #ff0000;"&gt;'Williamson3'&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;And here's the code to connect and query in erlang:&lt;/p&gt;
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;application:start&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;odbc&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;br /&gt;
ConnString = &lt;span style="color: #ff0000;"&gt;&amp;quot;Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=test; User=root;Password=ace152;Option=3;&amp;quot;&lt;/span&gt;.&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;ok, Conn&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; = odbc:connect&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;ConnString, &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;br /&gt;
Results = odbc:sql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Conn, &lt;span style="color: #ff0000;"&gt;&amp;quot;SELECT * FROM test_table&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This is what my interactive session looks like:&lt;/p&gt;
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;Erlang &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;BEAM&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; emulator &lt;a href="http://api.drupal.org/api/constant/VERSION/6"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;version&lt;/span&gt;&lt;/a&gt; 5.5.5 &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;async-threads:&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Eshell V5.5.5 &amp;nbsp;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;abort with ^G&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; application:start&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;odbc&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;br /&gt;
ok&lt;br /&gt;
&lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; ConnString = &lt;span style="color: #ff0000;"&gt;&amp;quot;Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=test; &lt;br /&gt;
User=root;Password=ace152;Option=3;&amp;quot;&lt;/span&gt;.&lt;br /&gt;
&lt;span style="color: #ff0000;"&gt;&amp;quot;Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=test; User=root;Passwo&lt;br /&gt;
rd=ace152;Option=3;&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc66cc;"&gt;3&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;ok, Conn&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; = odbc:connect&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;ConnString, &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;ok,&lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;0.39.0&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc66cc;"&gt;4&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; Results = odbc:sql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Conn, &lt;span style="color: #ff0000;"&gt;&amp;quot;SELECT * FROM test_table&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;selected,&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;first_name&amp;quot;&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;last_name&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;matt&amp;quot;&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;williamson&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;matt&amp;quot;&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;williamson2&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;3&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;matt&amp;quot;&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;williamson3&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;It's that simple. Post a comment if you want more samples or description.&lt;/p&gt;
&lt;p&gt;Erlang docs: &lt;a href="http://www.erlang.org/doc/apps/odbc/index.html" title="http://www.erlang.org/doc/apps/odbc/index.html"&gt;http://www.erlang.org/doc/apps/odbc/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dlPq8h87_Kydj51jdcOs5tfi_PY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dlPq8h87_Kydj51jdcOs5tfi_PY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dlPq8h87_Kydj51jdcOs5tfi_PY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dlPq8h87_Kydj51jdcOs5tfi_PY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=gEh90P1X"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=HuQWMYxx"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/use_mysql_with_erlang#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/3">erlang</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/47">mysql</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/48">odbc</category>
 <pubDate>Tue, 23 Dec 2008 11:11:35 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">25 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/use_mysql_with_erlang</feedburner:origLink></item>
<item>
 <title>Superb Erlang Web App Tutorial</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/rYvoG2XYRmU/18</link>
 <description>&lt;p&gt;I came across the most impressive Erlang tutorial I have seen yet. Check it out. Now.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vimeo.com/2007411" title="http://www.vimeo.com/2007411"&gt;http://www.vimeo.com/2007411&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lgv3sCDgB15ow2IXOpDrFbB4Gf8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lgv3sCDgB15ow2IXOpDrFbB4Gf8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lgv3sCDgB15ow2IXOpDrFbB4Gf8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lgv3sCDgB15ow2IXOpDrFbB4Gf8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=UkuoEaih"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=fb5xFB66"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/node/18#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/3">erlang</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/39">framework</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/40">mochiweb</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/41">tutorial</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/38">web</category>
 <pubDate>Mon, 15 Dec 2008 09:10:58 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">18 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/node/18</feedburner:origLink></item>
<item>
 <title>Duplicate an Object in Flash</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/f1sp17_5pB8/duplicate-as3-object</link>
 <description>&lt;p&gt;I'm working on a tile editor in Flash CS4 and opted to use the TileList class for the palette. Once a swatch is selected, I need to create a copy of that swatch and attach it to the stage. I wasn't quite sure how polymorphism in AS3 worked but I ended up with this little snippet:&lt;/p&gt;
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; mySwatchClass:&lt;span style="color: #000000; font-weight: bold;"&gt;Class&lt;/span&gt; = mySwatch.source.constructor;&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; newTile = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; mySwatchClass&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Let me know if it helps!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lNJ7nuk1nXiBCMQHS1KOuwVyDI4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lNJ7nuk1nXiBCMQHS1KOuwVyDI4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lNJ7nuk1nXiBCMQHS1KOuwVyDI4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lNJ7nuk1nXiBCMQHS1KOuwVyDI4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=gRC16r1e"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=hfUduy61"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/duplicate-as3-object#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/33">adobe</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/32">as3</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/35">duplicate object</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/34">flash</category>
 <pubDate>Fri, 12 Dec 2008 16:18:07 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">15 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/duplicate-as3-object</feedburner:origLink></item>
<item>
 <title>Add your location to iPod/iPhone Wifi Location Service</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/8r_9cQ1Qndw/ipod_touch_location_coverage</link>
 <description>&lt;p&gt;&lt;img src="http://dawsdesign.com/drupal/sites/default/files/images/ipod_touch.jpg" alt="iPod Touch" align="left" style="border:1px solid #369; margin: 0 1em 1em 0" /&gt;I recently got an iPod Touch and it is the best gadget I've ever had. One of the features of the powerful little machine is the location service. This service uses the wifi radio to listen for wifi beacons, the signal an access point sends out every second or two to let clients know the AP is there. When you refresh your list of wireless networks, it gathers these signals to make the list. Anyway, the utility of this feature is actually quite extensive. You can use it to find nearby restaurants, movie showtimes, and make getting directions a breeze. Unfortunately in my home area, there is no coverage. &lt;/p&gt;
&lt;p&gt;I began searching and found an article on MacRumors that mentioned Apple uses a company called Skyhook to provide their database of AP MAC addresses and their coordinates &lt;a href="http://www.macrumors.com/2008/01/23/skyhooks-wi-fi-location-technology-for-iphone-ipod-touch/" title="http://www.macrumors.com/2008/01/23/skyhooks-wi-fi-location-technology-for-iphone-ipod-touch/"&gt;http://www.macrumors.com/2008/01/23/skyhooks-wi-fi-location-technology-f...&lt;/a&gt;. Skyhook, according to their website, keeps a database of MAC addresses and associates them with their GPS location. Using this database is claimed to be accurate within 10-20 Meters.&lt;/p&gt;
&lt;p&gt;After visiting Skyhook's website, I found the form where you can add your Wifi Access Point to their database. The page is at &lt;a href="http://www.skyhookwireless.com/howitworks/submit_ap.php" title="http://www.skyhookwireless.com/howitworks/submit_ap.php"&gt;http://www.skyhookwireless.com/howitworks/submit_ap.php&lt;/a&gt;. Unfortunately it can take up to a few weeks to have the data updated with all of their partners. I will repost here if it ends up working for me.&lt;/p&gt;
&lt;p&gt;P. S. If you can't find your MAC address, this article might help &lt;a href="http://getsatisfaction.com/skyhookwireless/topics/how_do_i_find_the_mac_address_on_my_wireless_access_point" title="http://getsatisfaction.com/skyhookwireless/topics/how_do_i_find_the_mac_address_on_my_wireless_access_point"&gt;http://getsatisfaction.com/skyhookwireless/topics/how_do_i_find_the_mac_...&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;UPDATE 12/22/2008&lt;/b&gt;&lt;br /&gt;
It worked! Now when I push the current location icon in Google Maps it centers right on my street. 12 days later ain't bad.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kdgT3_Y5fW9jmIbuDy4m2kn8sCU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kdgT3_Y5fW9jmIbuDy4m2kn8sCU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kdgT3_Y5fW9jmIbuDy4m2kn8sCU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kdgT3_Y5fW9jmIbuDy4m2kn8sCU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=N8Sk7DaK"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=wDG8XcaT"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/ipod_touch_location_coverage#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/24">iphone</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/23">ipod touch</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/26">location</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/27">service</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/25">wifi</category>
 <pubDate>Wed, 10 Dec 2008 11:35:43 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">14 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/ipod_touch_location_coverage</feedburner:origLink></item>
<item>
 <title>Google Maps Circle Overlay</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/ujKqLicutTM/google_maps_circle_overlay</link>
 <description>&lt;p&gt;This was another feature that should have been simple, but just wasn't. This Google Maps extension allows you to use circle overlays. It is really a GPolygon with 45 points, but it looks like a circle. &lt;a href="http://dawsdesign.com/Samples/GMapsCircle/circle.html" target="_blank"&gt;Here is a sample&lt;/a&gt;. You can  &lt;a href="http://dawsdesign.com/Samples/GMapsCircle/GMapsCircle.zip" target="_blank"&gt;download the source here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;js/gmaps.CircleOverlay.js:&lt;br /&gt;
&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// This file adds a new circle overlay to GMaps2&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// it is really a many-pointed polygon, but look smooth enough to be a circle.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; CircleOverlay = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;latLng, radius, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.latLng = latLng;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.radius = radius;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.strokeColor = strokeColor;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.strokeWidth = strokeWidth;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.strokeOpacity = strokeOpacity;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.fillColor = fillColor;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.fillOpacity = fillOpacity;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// Implements GOverlay interface&lt;/span&gt;&lt;br /&gt;
CircleOverlay.prototype = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GOverlay;&lt;br /&gt;
&lt;br /&gt;
CircleOverlay.prototype.initialize = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;map&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.map = map;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
CircleOverlay.prototype.clear = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.polygon &lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;= &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; this.map &lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;= &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.map.removeOverlay&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.polygon&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// Calculate all the points and draw them&lt;/span&gt;&lt;br /&gt;
CircleOverlay.prototype.redraw = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;force&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; d2r = Math.&lt;a href="http://www.php.net/pi"&gt;&lt;span style="color: #000066;"&gt;PI&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;180&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; circleLatLngs = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066;"&gt;Array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; circleLat = this.radius &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0.014483&lt;/span&gt;; &amp;nbsp;&lt;span style="color: #808080; font-style: italic;"&gt;// Convert statute miles into degrees latitude&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; circleLng = circleLat &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; Math.&lt;a href="http://www.php.net/cos"&gt;&lt;span style="color: #000066;"&gt;cos&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.latLng.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; d2r&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; numPoints = &lt;span style="color: #cc66cc;"&gt;40&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// 2PI = 360 degrees, +1 so that the end points meet&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;for&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;; i &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; numPoints + &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;; i++&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; theta = Math.&lt;a href="http://www.php.net/pi"&gt;&lt;span style="color: #000066;"&gt;PI&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;i &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;numPoints &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; vertexLat = this.latLng.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; + &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;circleLat &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; Math.&lt;a href="http://www.php.net/sin"&gt;&lt;span style="color: #000066;"&gt;sin&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;theta&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; vertexLng = this.latLng.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; + &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;circleLng &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; Math.&lt;a href="http://www.php.net/cos"&gt;&lt;span style="color: #000066;"&gt;cos&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;theta&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; vertextLatLng = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;vertexLat, vertexLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; circleLatLngs.push&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;vertextLatLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.clear&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.polygon = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GPolygon&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;circleLatLngs, this.strokeColor, this.strokeWidth, this.strokeOpacity, this.fillColor, this.fillOpacity&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.map.addOverlay&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.polygon&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
CircleOverlay.prototype.remove = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.clear&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
CircleOverlay.prototype.containsLatLng = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;latLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Polygon Point in poly &lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.polygon.containsLatLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; this.polygon.containsLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;latLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
CircleOverlay.prototype.setRadius = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;radius&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.radius = radius;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
CircleOverlay.prototype.setLatLng = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;latLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; this.latLng = latLng;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;circle.html:&lt;br /&gt;
&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;html&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;head&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;title&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;GMaps Circle Test&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;title&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;script src=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://maps.google.com/maps?file=api&amp;amp;amp;v=2&amp;amp;amp;key=ABQIAAAAOzwQ7Lh4CqiMto5Mx5BruhS-xyZmcPPoBCehH0LrfEv4pktlHxSKTILYLRlghp_oPDcwTo3STVXADg&amp;quot;&lt;/span&gt; type=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;script&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;script src=&lt;span style="color: #ff0000;"&gt;&amp;quot;js/gmaps.CircleOverlay.js&amp;quot;&lt;/span&gt; type=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;script&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;script type=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; circle = &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; circleRadius = &lt;span style="color: #cc66cc;"&gt;50&lt;/span&gt;; &lt;span style="color: #808080; font-style: italic;"&gt;// Miles&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; map = &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; isCompatible = GBrowserIsCompatible&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;//&amp;lt;![CDATA[&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; load&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;isCompatible&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Create Map&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GMap2&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;map&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.setCenter&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;42&lt;/span&gt;, -&lt;span style="color: #cc66cc;"&gt;74&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;6&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Add controls&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.addControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GLargeMapControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.addControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GMapTypeControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Create and add the circle&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; circle = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; CircleOverlay&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;map.getCenter&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, circleRadius, &lt;span style="color: #ff0000;"&gt;&amp;quot;#336699&amp;quot;&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'#336699'&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;0.25&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.addOverlay&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;circle&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;//]]&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;head&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;body onload=&lt;span style="color: #ff0000;"&gt;&amp;quot;load()&amp;quot;&lt;/span&gt; onunload=&lt;span style="color: #ff0000;"&gt;&amp;quot;GUnload()&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;div id=&lt;span style="color: #ff0000;"&gt;&amp;quot;map&amp;quot;&lt;/span&gt; style=&lt;span style="color: #ff0000;"&gt;&amp;quot;width: 400px; height: 300px; border: 1px solid #666666;&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;div&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;body&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;html&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t-lfel0paslE_mkhzZ4eeluemsw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t-lfel0paslE_mkhzZ4eeluemsw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t-lfel0paslE_mkhzZ4eeluemsw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t-lfel0paslE_mkhzZ4eeluemsw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=hRgo4Gdf"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=OyMQ8yiY"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/google_maps_circle_overlay#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/20">circle</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/22">gmaps</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/12">google maps</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/21">overlay</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/14">polygon</category>
 <pubDate>Mon, 08 Dec 2008 16:17:11 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">11 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/google_maps_circle_overlay</feedburner:origLink></item>
<item>
 <title>Check if a polygon contains a coordinate in Google Maps</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/UeNFNWdN4CM/google_maps_point_in_polygon</link>
 <description>&lt;p&gt;At work, I've been tasked with a neat little project where a user can select a list of users represented by markers on a Google map by editing a polygon to surround the markers with. However, to my dismay, I could not find any methods in the API to see if a polygon contains a coordinate. I also had a hard time finding an algorithm so that I could implement it. I later learned this type of algorithm is called Point in Polygon (PiP).&lt;/p&gt;
&lt;p&gt;First I tried the winding number algorithm (&lt;a href="http://en.wikipedia.org/wiki/Point_in_polygon" title="http://en.wikipedia.org/wiki/Point_in_polygon"&gt;http://en.wikipedia.org/wiki/Point_in_polygon&lt;/a&gt;) but failed. I didn't put too much time into it since it is so CPU-intesive anyway. Then I came across an article on MSDN (&lt;a href="http://msdn.microsoft.com/en-us/library/cc451895.aspx" title="http://msdn.microsoft.com/en-us/library/cc451895.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc451895.aspx&lt;/a&gt;) which I adopted into Javascript. I extended the GPolygon class with a new method called containsLatLng, just like the GLatLngBounds class. The difference is that the method in the GLatLngBounds class will only get the 4 coordinates of the bounding box, which are the farthest points in the polygon, and see if the coordinate lies within that box. My method, however, does true collision detection to see if the point lies within any shape polygon with as many sides as you want. It worked out perfectly.&lt;/p&gt;
&lt;p&gt;Without any further ado, here is the code [js/gmaps.polygon.containsLatLng.js]:&lt;/p&gt;
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// Create polygon method for collision detection&lt;/span&gt;&lt;br /&gt;
GPolygon.prototype.containsLatLng = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;latLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Do simple calculation so we don't do more CPU-intensive calcs for obvious misses&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; bounds = this.getBounds&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;bounds.containsLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;latLng&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; numPoints = this.getVertexCount&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; inPoly = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; j = numPoints-&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;for&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i=&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;; i &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; numPoints; i++&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; vertex1 = this.getVertex&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;i&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; vertex2 = this.getVertex&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;j&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;vertex1.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; latLng.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; vertex2.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;= latLng.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;||&lt;/span&gt; vertex2.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; latLng.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; vertex1.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;= latLng.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &amp;nbsp;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;vertex1.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; + &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;latLng.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; - vertex1.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;vertex2.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; - vertex1.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;vertex2.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; - vertex1.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; latLng.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inPoly = &lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;inPoly;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; j = i;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; inPoly;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;And here is the sample usage [index.htm]:&lt;/p&gt;
&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;div class="drupal6 geshifilter-drupal6" style="font-family:monospace;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;html&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;head&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;title&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;GIS Test&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;title&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;script src=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://maps.google.com/maps?file=api&amp;amp;amp;v=2&amp;amp;amp;key=ABQIAAAAOzwQ7Lh4CqiMto5Mx5BruhRP7uQ16ovEZegyAfeetOdXUUHv1xQhaNqllcioqRUJo6b7JhhTgJZNyw&amp;quot;&lt;/span&gt; type=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;script&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;script src=&lt;span style="color: #ff0000;"&gt;&amp;quot;js/gmaps.polygon.containsLatLng.js&amp;quot;&lt;/span&gt; type=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;script&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;script type=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; isEditing = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; polygon = &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; map = &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; isCompatible = GBrowserIsCompatible&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; markers = &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; iconIncluded = &lt;span style="color: #ff0000;"&gt;'http://maps.google.com/mapfiles/dd-start.png'&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; iconExcluded = &lt;span style="color: #ff0000;"&gt;'http://maps.google.com/mapfiles/dd-end.png'&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; editClick&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; isEditing = &lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;isEditing;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;isEditing &lt;span style="color: #66cc66;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; polygon &lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;= &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'edit_button'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.innerHTML = &lt;span style="color: #ff0000;"&gt;'Stop Editing'&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'help'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.innerHTML = &lt;span style="color: #ff0000;"&gt;'Click to add points to your selection.'&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'reset_button'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.disabled = &lt;span style="color: #ff0000;"&gt;'disabled'&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; polygon.enableDrawing&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'edit_button'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.innerHTML = &lt;span style="color: #ff0000;"&gt;'Edit Selection'&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'reset_button'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.disabled = &lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'help'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.innerHTML = &lt;span style="color: #ff0000;"&gt;'Click &amp;quot;Edit Selection&amp;quot; to select users.'&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; polygon.disableEditing&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Update all markers with in poly status&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; updatePoints&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;for&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i in markers&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; marker = markers&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;i&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; point = marker.getLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; inPoly = polygon.containsLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;point&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;inPoly&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; marker.setImage&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;iconIncluded&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; marker.setImage&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;iconExcluded&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; resetPolygon&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;polygon &lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;= &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.removeOverlay&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;polygon&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; polygon = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GPolygon&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;&amp;quot;#000000&amp;quot;&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;&amp;quot;#336699&amp;quot;&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;0.3&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.addOverlay&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;polygon&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GEvent.addListener&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;polygon, &lt;span style="color: #ff0000;"&gt;&amp;quot;lineupdated&amp;quot;&lt;/span&gt;, &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setTimeout&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;updatePoints, &lt;span style="color: #cc66cc;"&gt;50&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GEvent.addListener&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;polygon, &lt;span style="color: #ff0000;"&gt;&amp;quot;endline&amp;quot;&lt;/span&gt;, &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setTimeout&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;editClick, &lt;span style="color: #cc66cc;"&gt;50&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; updatePoints&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;//&amp;lt;![CDATA[&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; load&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;isCompatible&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Create Map&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GMap2&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;document.getElementById&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;map&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.setCenter&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;40&lt;/span&gt;, -&lt;span style="color: #cc66cc;"&gt;90&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;3&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Add controls&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.addControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GLargeMapControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.addControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GMapTypeControl&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Create Selection Polygon&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; latlng = map.getCenter&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; width = &lt;span style="color: #cc66cc;"&gt;20&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; height = &lt;span style="color: #cc66cc;"&gt;12&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; lat = latlng.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; lng = latlng.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; x1 = lng - width &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; y1 = lat - height &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; x2 = lng + width &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; y2 = lat + height &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; resetPolygon&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;// Add 10 markers to the map at random locations&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; bounds = map.getBounds&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; southWest = bounds.getSouthWest&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; northEast = bounds.getNorthEast&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; lngSpan = northEast.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; - southWest.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; latSpan = northEast.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; - southWest.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;for&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; i = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;; i &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;100&lt;/span&gt;; i++&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; point = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GLatLng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;southWest.lat&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; + latSpan &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; Math.random&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, southWest.lng&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; + lngSpan &lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; Math.random&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; marker = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; GMarker&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;point, &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;bouncy: &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;, title: &lt;span style="color: #ff0000;"&gt;&amp;quot;Customer &amp;quot;&lt;/span&gt; + i, autoPan: &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.addOverlay&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;marker&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; marker.bindInfoWindowHtml&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;This is customer info &amp;quot;&lt;/span&gt; + i&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; markers.push&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;marker&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; updatePoints&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;//]]&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;head&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;body onload=&lt;span style="color: #ff0000;"&gt;&amp;quot;load()&amp;quot;&lt;/span&gt; onunload=&lt;span style="color: #ff0000;"&gt;&amp;quot;GUnload()&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;div&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;span&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;button id=&lt;span style="color: #ff0000;"&gt;&amp;quot;edit_button&amp;quot;&lt;/span&gt; onclick=&lt;span style="color: #ff0000;"&gt;&amp;quot;editClick()&amp;quot;&lt;/span&gt; type=&lt;span style="color: #ff0000;"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;Edit Selection&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;button&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;span&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;span&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;button id=&lt;span style="color: #ff0000;"&gt;&amp;quot;reset_button&amp;quot;&lt;/span&gt; onclick=&lt;span style="color: #ff0000;"&gt;&amp;quot;resetPolygon()&amp;quot;&lt;/span&gt; type=&lt;span style="color: #ff0000;"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;Reset Selection&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;button&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;span&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;span id=&lt;span style="color: #ff0000;"&gt;&amp;quot;help&amp;quot;&lt;/span&gt; style=&lt;span style="color: #ff0000;"&gt;&amp;quot;color: #666;&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;Click &lt;span style="color: #ff0000;"&gt;&amp;quot;Begin Editing&amp;quot;&lt;/span&gt; to select users.&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;span&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;div&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;hr &lt;span style="color: #66cc66;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;div id=&lt;span style="color: #ff0000;"&gt;&amp;quot;map&amp;quot;&lt;/span&gt; style=&lt;span style="color: #ff0000;"&gt;&amp;quot;width: 640; height: 480; border:1px solid #333;&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;div&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;body&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #66cc66;"&gt;&amp;lt;/&lt;/span&gt;html&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Sample: &lt;a href="http://dawsdesign.com/Samples/GIS/" title="http://dawsdesign.com/Samples/GIS/"&gt;http://dawsdesign.com/Samples/GIS/&lt;/a&gt;&lt;br /&gt;
Download: &lt;a href="http://dawsdesign.com/Samples/GIS/GIS.zip" title="http://dawsdesign.com/Samples/GIS/GIS.zip"&gt;http://dawsdesign.com/Samples/GIS/GIS.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zr0jgMw0R5-0xuY5FElQ8i4izio/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zr0jgMw0R5-0xuY5FElQ8i4izio/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zr0jgMw0R5-0xuY5FElQ8i4izio/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zr0jgMw0R5-0xuY5FElQ8i4izio/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=xGe69rU7"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=iz4kH47I"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/google_maps_point_in_polygon#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/13">api</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/19">collision</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/18">contains</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/17">coordinate</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/12">google maps</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/15">gpolygon</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/16">latlng</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/52">point in polygon</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/14">polygon</category>
 <pubDate>Thu, 06 Nov 2008 09:16:08 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">10 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/google_maps_point_in_polygon</feedburner:origLink></item>
<item>
 <title>Erlang gen_server OTP Demo</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/hLwmBRlJcEo/erlang_gen_server_otp_demo</link>
 <description>&lt;p&gt;This is a short video I put together. It shows how to use emacs to generate an Erlang gen_server to greet a client. It also demonstrates Erlang's hot code-loading capabilities.&lt;/p&gt;
&lt;object width="400" height="300"&gt;	&lt;param name="allowfullscreen" value="true" /&gt;	&lt;param name="allowscriptaccess" value="always" /&gt;	&lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1504988&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;	&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1504988&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://www.vimeo.com/1504988?pg=embed&amp;amp;sec=1504988"&gt;Erlang/OTP gen_server demo&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user667754?pg=embed&amp;amp;sec=1504988"&gt;Matt Williamson&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;amp;sec=1504988"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Really high quality at &lt;a href="http://dawsdesign.com/video/video-gen_server_demo" title="http://dawsdesign.com/video/video-gen_server_demo"&gt;http://dawsdesign.com/video/video-gen_server_demo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1NjhFJUg0CVN3JtXYoGcspCpetw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1NjhFJUg0CVN3JtXYoGcspCpetw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1NjhFJUg0CVN3JtXYoGcspCpetw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1NjhFJUg0CVN3JtXYoGcspCpetw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=vRDTtYfI"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=xrJ76nXq"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/erlang_gen_server_otp_demo#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/7">emacs</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/3">erlang</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/8">gen_server</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/6">otp</category>
 <pubDate>Sun, 10 Aug 2008 18:04:35 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">8 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/erlang_gen_server_otp_demo</feedburner:origLink></item>
<item>
 <title>Hello, Robert</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/L9dfSYeycPY/hello_robert</link>
 <description>&lt;div align="center"&gt;&lt;embed id="VideoPlayback" style="width:400px;height:326px" allowFullScreen="true" src="http://video.google.com/googleplayer.swf?docid=-5830318882717959520&amp;amp;hl=en&amp;amp;fs=true" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;
&lt;p&gt;It never gets old.
&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JfvHe5VW0ORdg0q49tJhTDWWOR8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JfvHe5VW0ORdg0q49tJhTDWWOR8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JfvHe5VW0ORdg0q49tJhTDWWOR8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JfvHe5VW0ORdg0q49tJhTDWWOR8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=twh1s9mK"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=Yrzie7TC"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/hello_robert#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/3">erlang</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/30">joe armstrong</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/29">mike williams</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/28">robert viridng</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/31">video</category>
 <pubDate>Wed, 06 Aug 2008 07:00:45 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">7 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/hello_robert</feedburner:origLink></item>
<item>
 <title>ErlFS Distributed Storage System</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/c3sG9udjjmU/erlfs</link>
 <description>&lt;p&gt;I've begun work on ErlFS, a distributed storage system which uses distributed Erlang at it's core. The idea is that it splits files into chunks and copies them, redundantly over multiple disks on multiple machines. This system should scale nearly linearly-- that is, the more machines/disks you add, the more storage, throughput, response and reliability you get.&lt;/p&gt;
&lt;p&gt;Each node keeps track of where the file chunks are located and will load balance automatically. I hope to have an Erlang, HTTP, FTP and Bittorrent interface for the system, probably using YAWS/erlyweb.&lt;/p&gt;
&lt;p&gt;Google code is hosting the project for me. You can view it at &lt;a href="http://code.google.com/p/erlfs/" title="http://code.google.com/p/erlfs/"&gt;http://code.google.com/p/erlfs/&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;I will update here when an alpha is ready.&lt;/p&gt;
&lt;p&gt;Update: We just registered &lt;a href="http://erlfs.com" title="http://erlfs.com"&gt;http://erlfs.com&lt;/a&gt;, so we will have a home for it.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hx8PiFrXyEY9Yk-gpcD9ZTAZQb4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hx8PiFrXyEY9Yk-gpcD9ZTAZQb4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hx8PiFrXyEY9Yk-gpcD9ZTAZQb4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hx8PiFrXyEY9Yk-gpcD9ZTAZQb4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=VuLYRMTF"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=ZInJ5LbL"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/erlfs#comments</comments>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/4">distribution</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/3">erlang</category>
 <category domain="http://dawsdesign.com/drupal/taxonomy/term/5">load balancing</category>
 <pubDate>Tue, 22 Jul 2008 11:08:59 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">6 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/erlfs</feedburner:origLink></item>
<item>
 <title>$40 Off Web Hosting</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/egbkcmo_QwI/dreamhost</link>
 <description>&lt;p&gt;Get $40 off Dreamhost hosting for any billing cycle. That's 1/3 off of the price for one year of hosting!&lt;/p&gt;
&lt;p&gt;Just visit the site at &lt;a href="http://www.dreamhost.com/r.cgi?195399" target="_blank"&gt;dreamhost.com&lt;/a&gt;, click "Sign Up Now" and enter the following promo code in the form.&lt;/p&gt;
&lt;p&gt;Promo Code:&lt;br /&gt;
&lt;i&gt;&lt;b&gt;DAWS&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dreamhost.com/r.cgi?195399" target="_blank"&gt;&lt;img src="http://www.dreamhost.com/images/rewards/80x15-c.gif" alt="40$ off dreamhost hosting!" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y-n_2wV_eEGkkNs3xkEL32ZGlig/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y-n_2wV_eEGkkNs3xkEL32ZGlig/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y-n_2wV_eEGkkNs3xkEL32ZGlig/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y-n_2wV_eEGkkNs3xkEL32ZGlig/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=0EzEkBBP"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=1mei5xBV"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/dreamhost#comments</comments>
 <pubDate>Mon, 09 Jun 2008 09:31:21 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">4 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/dreamhost</feedburner:origLink></item>
<item>
 <title>Buy My Stuff Now!</title>
 <link>http://feedproxy.google.com/~r/DawsDesign/~3/Y9RN07R-6lk/buymystuffnow</link>
 <description>&lt;p&gt;If you are looking to buy, sell or trade your stuff for free, please check out &lt;a href="http://buymystuffnow.com" target="_blank"&gt;buymystuffnow.com&lt;/a&gt;. It is a free classifieds site where you can post your listings and browse and search for listings.&lt;/p&gt;
&lt;p&gt;When you sign up, you will get some credits. Credits are currency which you can spend on attaching images and videos to your listings. Check out &lt;a href="http://buymystuffnow.com" target="_blank"&gt;buymystuffnow.com&lt;/a&gt; to see how many you get for free. If you need more credits, don't worry, they are very affordable.&lt;/p&gt;
&lt;p&gt;Buy My Stuff Now also doesn't take any of your profit, they only make money of off credits, which you get some fore free anyway. Because they don't skim off the top, you are free to do things such as barter or give away things for free!&lt;/p&gt;
&lt;p&gt;Feel free to check out the website and post any comments about it you have here. &lt;a href="http://buymystuffnow.com" target="_blank"&gt;http://buymystuffnow.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oKtFWdrEYSsc3DqEUh6IGC9Magw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oKtFWdrEYSsc3DqEUh6IGC9Magw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oKtFWdrEYSsc3DqEUh6IGC9Magw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oKtFWdrEYSsc3DqEUh6IGC9Magw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=A5Gb2LPX"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/DawsDesign?a=nymP6Paa"&gt;&lt;img src="http://feeds.feedburner.com/~f/DawsDesign?d=80" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
 <comments>http://dawsdesign.com/drupal/buymystuffnow#comments</comments>
 <pubDate>Mon, 09 Jun 2008 07:23:33 -0500</pubDate>
 <dc:creator>dawsdesign</dc:creator>
 <guid isPermaLink="false">3 at http://dawsdesign.com/drupal</guid>
<feedburner:origLink>http://dawsdesign.com/drupal/buymystuffnow</feedburner:origLink></item>
</channel>
</rss>
