<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Odynia.org Blog - Apple / Mac / iPhone</title>
    <link>http://blog.odynia.org/</link>
    <description>..</description>
    <dc:language>en</dc:language>
    
    <generator>Serendipity 0.9.1 - http://www.s9y.org/</generator>
    <pubDate>Wed, 01 Oct 2008 01:16:22 GMT</pubDate>

    <image>
        <url>http://blog.odynia.org/templates/wow/img/s9y_banner_small.png</url>
        <title>RSS: Odynia.org Blog - Apple / Mac / iPhone - ..</title>
        <link>http://blog.odynia.org/</link>
        <width>100</width>
        <height>21</height>
    </image>
<item>
    <title>iTransit Native Application</title>
    <link>http://blog.odynia.org/archives/37-iTransit-Native-Application.html</link>
<category>iTransit</category>    <comments>http://blog.odynia.org/archives/37-iTransit-Native-Application.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=37</wfw:comment>
    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=37</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
Hi all,&lt;br /&gt;
&lt;br /&gt;
Thought I'd post an update on where we're up to and whats coming up, we've had a surge in users recently and have just crossed 2000 home screen additions.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;tramTRACKER&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
We're now using the mobile tramTRACKER site for the real time data after discussions with Yarra Trams. This doesn't include the destination data so we're matching that against the schedule - it looks more consistent now with the scheduled data, but occasionally results in blank rows with route numbers only. If you see one of these let us know so we can repair it. They're also going to be incorporating some of the ideas in iTransit back into their own offerings.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Native Application&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The Native app is continuing development with two versions planned - a free version and a paid for version.&lt;br /&gt;
&lt;br /&gt;
Both versions will feature selective caching and will be able to sync timetable changes over the air - you can control if/when to check for updates. You can also choose which lines/routes you want to use regularly and so save space/bandwidth and get only the data that applies to you - the app will grab missing data from the website as needed, or you can grab everything for complete offline usage.&lt;br /&gt;
&lt;br /&gt;
The free native application will support pretty much everything the current web app does with a few extra goodies. The paid for &quot;pro&quot; version will contain a lot of bonus features, which I'll keep to myself for now &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Other things&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I've redeveloped the backend recently to allow integration with other services out there, such as Melbourne Transport Updates and more, there is also an API in development that powers this if you have your own services you might like to build. The bus data has been redesigned and the remaining routes will be filled in in the next week or so, similarly the inter-city for Sydney.&lt;br /&gt;
&lt;br /&gt;
Also: faux real time data for Trains &lt;img src=&quot;http://blog.odynia.org/templates/wow/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Remeber, vote in the poll!&lt;br /&gt;
&lt;br /&gt;
-bok    </content:encoded>
                
    <pubDate>Fri, 26 Sep 2008 17:53:47 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/37-guid.html</guid>
    </item>
<item>
    <title>iTransit Editions Pricing (Native App)</title>
    <link>http://blog.odynia.org/archives/36-iTransit-Editions-Pricing-Native-App.html</link>
<category>iTransit</category>    <comments>http://blog.odynia.org/archives/36-iTransit-Editions-Pricing-Native-App.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=36</wfw:comment>
    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=36</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
Hi all,&lt;br /&gt;&lt;br /&gt;
Work is well underway for the Native iTransit application, but there are still a few things undecided.&lt;br /&gt;&lt;br /&gt;
We know that there will be two versions of the application released:&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Free Version&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
There will be a free or &quot;lite&quot; version, which will contain pretty much all of the existing functionality of the web application. (Still undecided about the traffic conditions until I talk to VicRoads)&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;&quot;Pro&quot; Version&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
There will also be a &quot;pro&quot; version, for want of a better name. It will be the same as the free version but with additional bonus features. Several of which we know already, some more that we're still considering.&lt;br /&gt;&lt;br /&gt;

The &quot;pro&quot; version is also a way of supporting additional development - we do this because we love it and we use the software too, but covering development costs is always a plus &lt;img src=&quot;http://blog.odynia.org/templates/wow/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;br /&gt;

So, what would people be willing to pay for a &quot;pro&quot; version? Vote in the poll to the right, leave a comment, or hit us up via &lt;a href=&quot;http://twitter.com/itransit_au&quot;&gt;twitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

bok    </content:encoded>
                
    <pubDate>Fri, 26 Sep 2008 04:30:29 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/36-guid.html</guid>
    </item>
<item>
    <title>iTransit Twitter Feed</title>
    <link>http://blog.odynia.org/archives/35-iTransit-Twitter-Feed.html</link>
<category>iTransit</category>    <comments>http://blog.odynia.org/archives/35-iTransit-Twitter-Feed.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=35</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=35</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
For those wanting to keep up with the latest updates for iTransit you can follow the twitter feed at &lt;a href=&quot;http://twitter.com/itransit_au&quot;&gt;htp://twitter.com/itransit_au&lt;/a&gt; or the RSS updates of said feed at &lt;a href=&quot;http://twitter.com/statuses/user_timeline/16022820.rss&quot;&gt;http://twitter.com/statuses/user_timeline/16022820.rss&lt;/a&gt;.&lt;br /&gt;&lt;br  /&gt;
bok    </content:encoded>
                
    <pubDate>Thu, 25 Sep 2008 04:56:16 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/35-guid.html</guid>
    </item>
<item>
    <title>iTransit: Going Forward</title>
    <link>http://blog.odynia.org/archives/33-iTransit-Going-Forward.html</link>
<category>iTransit</category>    <comments>http://blog.odynia.org/archives/33-iTransit-Going-Forward.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=33</wfw:comment>
    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=33</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
Time to press forward with additional data for iTransit.&lt;br /&gt;&lt;br /&gt;
Ultimately, I'd like it to be useful to everyone in Australia, to that end we're working on adding data for additional cities. Sydney is first up on the radar, and should be completed shortly.&lt;br /&gt;&lt;br /&gt;
And after that? Well I'll leave that to you.. check the poll on the right hand side of the screen and vote - I'll work down the list based on your votes.&lt;br /&gt;&lt;br /&gt;

bok    </content:encoded>
                
    <pubDate>Tue, 19 Aug 2008 06:52:49 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/33-guid.html</guid>
    </item>
<item>
    <title>iTransit Revisions</title>
    <link>http://blog.odynia.org/archives/32-iTransit-Revisions.html</link>
<category>iTransit</category>    <comments>http://blog.odynia.org/archives/32-iTransit-Revisions.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=32</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=32</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
Hi all,&lt;br/ &gt;&lt;br /&gt;
I've decided that it's somewhat painful trying to group fixes up into a version release for iTransit. Since it is a web app presently, its pretty straight forward to roll smaller revisions out with bug fixes and new features, so that's what I'll be doing.&lt;br /&gt;&lt;br /&gt;
There is a changelog inside &lt;a href=&quot;http://iphone.itransit.com.au/&quot;&gt;iTransit&lt;/a&gt; (under More..) that will list the changes.&lt;br /&gt;&lt;br /&gt;
bok    </content:encoded>
                
    <pubDate>Tue, 19 Aug 2008 06:50:00 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/32-guid.html</guid>
    </item>
<item>
    <title>New iTransit version released</title>
    <link>http://blog.odynia.org/archives/31-New-iTransit-version-released.html</link>
<category>iTransit</category>    <comments>http://blog.odynia.org/archives/31-New-iTransit-version-released.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=31</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=31</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
Hi!&lt;br /&gt;&lt;br /&gt;

I've released a new version of iTransit with the following features:&lt;br /&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Melbourne Trains:&lt;/b&gt; Scheduled Times&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Melbourne Trams:&lt;/b&gt; Live Times (courtesy Yarra Trams)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Melbourne Buses:&lt;/b&gt; Scheduled Times&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Melbourne Traffic:&lt;/b&gt; Live Travel Times (courtesy VicRoads)&lt;/li&gt;
&lt;/ul&gt;
&lt;Br /&gt;
&lt;h4&gt;Browsing/Searching&lt;/h4&gt;
&lt;br /&gt;
Browse lines and routes, or search for your station/stop name directly. No more remembering stop IDs! If you know the stop IDs though you can search on those too.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Filtering&lt;/h4&gt;
&lt;br /&gt;
View only the selected line/route, view all lines/routes through a stop, or select from a list which routes you'd like to see. You find your way, your way!&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Smaller Stops&lt;/h4&gt;
&lt;br /&gt;
We have data for all stops, but for brevity (and so you don't have to scroll through a hundred stops!) we only show the major stops by default. They're still there though, hit the Minor Stops button to show or hide them.
&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;Scheduled/Live Times&lt;/h4&gt;
&lt;br /&gt;
Where possible we try to show you the live data, but if thats not available we'll go off the timetables, keep and eye on the Live indicator in the toolbar.
&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;Maps&lt;/h4&gt;
&lt;br /&gt;
Not sure where that station is? Click the map button to be taken to the Google Maps application, where you'll be shown where it is! You can then use Google to find you and give you directions.
&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;The iTransit Application&lt;/h4&gt;
&lt;br /&gt;
The iTransit web application has undergone intensive development in order to deliver these features:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Small Footprint:&lt;/b&gt; The app lives mostly inside Safari's database, so the initial loading of iTransit takes only 2.5KB of data&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Data Caching:&lt;/b&gt; Where possible, we use the internal database to cache stop names and lists, so you only ever need to load them once.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hardware Acceleration:&lt;/b&gt; We use the CSS transitions built into WebKit to do the animations, so its hardware accelerated and smoother.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
That's the about blerb anyway.&lt;br /&gt;
&lt;br /&gt;
A native version is in development, and more features are on the way. I'll post more about those sometime in the near future.&lt;br /&gt;&lt;br /&gt;
bok    </content:encoded>
                
    <pubDate>Fri, 15 Aug 2008 04:17:47 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/31-guid.html</guid>
    </item>
<item>
    <title>iPhone + Safari + Gestures</title>
    <link>http://blog.odynia.org/archives/29-iPhone-+-Safari-+-Gestures.html</link>
<category>Apple / Mac / iPhone</category><category>Web Development</category>    <comments>http://blog.odynia.org/archives/29-iPhone-+-Safari-+-Gestures.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=29</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=29</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
Looking for &lt;b&gt;iTransit&lt;/b&gt;? Check &lt;a href=&quot;http://blog.odynia.org/archives/27-iTransit.html&quot;&gt;two posts down&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
--
&lt;br /&gt;
&lt;br /&gt;
Been playing with touches in Safari, specifically trying to track certain gestures.&lt;br /&gt;
&lt;br /&gt;
If you haven't read it, a good primer on touches/gestures in Mobile Safari can be found &lt;a href=&quot;http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/&quot;&gt;here.&lt;/a&gt; Its a great starting point.&lt;br /&gt;
&lt;br /&gt;
So now that the its been established as to how to do Drag and Drop and rotating/scaling what about the other one finger gestures that apple employs?&lt;br /&gt;
&lt;br /&gt;
Specifically, I'm trying to replicate the swipe left and right functionality of the photo browser (show previous/next photos), and I've been able to do so.&lt;br /&gt;&lt;br /&gt;
The trick here is to catch the initial touch event, and the ending touch event and work out where our finger has gone. A key thing to remember is that the touches are passed around and updated by reference, so your original copy of the touch will be updated with a new position.&lt;br /&gt;&lt;br /&gt;
What I've ended up with is a small class that watches the &lt;b&gt;touchstart&lt;/b&gt; and &lt;b&gt;touchend&lt;/b&gt; events on the document level, and when it detects a swipe it fires a &lt;b&gt;gesture:swipe&lt;/b&gt; event.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The following is the code that I used, you'll need &lt;a href=&quot;http://www.prototypejs.org/&quot;&gt;Prototype&lt;/a&gt; to make this work.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #bbb; font-size: 10px;&quot;&gt;Click on a comment to hide it. Click &lt;a href=&quot;javascript:;&quot; onClick=&quot;show_comments_gestures.js()&quot;&gt;here&lt;/a&gt; to show all comments.&lt;/div&gt;
&lt;div style=&quot;padding: 5px; border: 1px solid #aaaaaa; background: #bbbbbb;&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;
&lt;span style=&quot;color: #007700&quot;&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;GestureClass&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;Class.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;create&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;({&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;Fired&amp;#160;when&amp;#160;a&amp;#160;new&amp;#160;instance&amp;#160;of&amp;#160;this&amp;#160;object&amp;#160;is&amp;#160;made&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;function&amp;#160;()&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;listen&amp;#160;for&amp;#160;start/stop&amp;#160;events&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;observe&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'touchstart'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;observe&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'touchend'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;touch&amp;#160;storage&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gestures&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;[];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;function&amp;#160;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;#160;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;currently&amp;#160;only&amp;#160;support&amp;#160;one&amp;#160;finger&amp;#160;on&amp;#160;the&amp;#160;viewport&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;#160;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;touches&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;length&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;==&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;#160;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;touch&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;touches&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;store&amp;#160;the&amp;#160;touch&amp;#160;for&amp;#160;later&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gestures&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;touch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;identifier&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;]&amp;#160;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.clone(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;touch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gestures&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;touch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;identifier&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;date&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;new&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;function&amp;#160;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;still&amp;#160;only&amp;#160;one&amp;#160;finger&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;#160;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;changedTouches&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;length&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;==&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;get&amp;#160;the&amp;#160;most&amp;#160;recent&amp;#160;touch&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;changedTouches&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;date&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;new&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;get&amp;#160;the&amp;#160;position&amp;#160;that&amp;#160;we&amp;#160;started&amp;#160;at&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gestures&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;identifier&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;];&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;and&amp;#160;the&amp;#160;duration&amp;#160;of&amp;#160;our&amp;#160;swipe?&amp;#160;number&amp;#160;of&amp;#160;milliseconds&amp;#160;the&amp;#160;gesture&amp;#160;took&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;duration&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;getTime&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;()&amp;#160;-&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;getTime&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;calculate&amp;#160;offsets&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;horizontalMovement&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;clientX&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;clientX&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;verticalMovement&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;clientY&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;clientY&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;big&amp;#160;enoug&amp;#160;to&amp;#160;count&amp;#160;as&amp;#160;a&amp;#160;swipe?&amp;#160;and&amp;#160;quick&amp;#160;enough&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;viewport&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;viewport&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;getDimensions&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if&amp;#160;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Math&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;abs&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;horizontalMovement&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;#160;&amp;gt;=&amp;#160;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;viewport&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;#160;&amp;amp;&amp;amp;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;duration&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;lt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;this&amp;#160;object&amp;#160;is&amp;#160;passed&amp;#160;to&amp;#160;the&amp;#160;new&amp;#160;event&amp;#160;under&amp;#160;the&amp;#160;'memo'&amp;#160;property&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gesture&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gesture&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'swipe'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;direction&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;horizontalMovement&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;gt;=&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;?&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'left'&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'right'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;};&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span name=&quot;gestures.js&quot; id=&quot;gestures.js&quot; style=&quot;color: #FF8000&quot; onClick=&quot;this.style.visibility = 'hidden'; this.style.display = 'none';&quot;&gt;//&amp;#160;Fire&amp;#160;the&amp;#160;gesture,&amp;#160;listen&amp;#160;with&amp;#160;document.observe('power:swipe',&amp;#160;&amp;lt;function&amp;gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fire&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'gesture:swipe'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gesture&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br /&gt;});&lt;br /&gt;var&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Gestures&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;#160;new&amp;#160;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;GestureClass&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;script language=&quot;Javascript&quot;&gt; function show_comments_gestures.js () { var el = document.getElementsByName('gestures.js'); for (var i=0; i &lt; el.length; i++) { el[i].style.display = 'inline'; el[i].style.visibility = 'visible'; } }&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;
Is that documented enough to make sense? Drop me a line in the comments if not and I'll see what I can do to explain better &lt;img src=&quot;http://blog.odynia.org/templates/wow/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
You'll see this gesture used in the new version of iTransit, naturally - and there's more gestures to come!&lt;br /&gt;&lt;br /&gt;
Cheers,&lt;br /&gt;
-bok    </content:encoded>
                
    <pubDate>Wed, 23 Jul 2008 08:54:22 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/29-guid.html</guid>
    </item>
<item>
    <title>iTransit Features Poll</title>
    <link>http://blog.odynia.org/archives/28-iTransit-Features-Poll.html</link>
<category>iTransit</category>    <comments>http://blog.odynia.org/archives/28-iTransit-Features-Poll.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=28</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=28</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
I've posted a poll to try and add some sort of prioritisation to my upcoming feature/nice to have list for iTransit.&lt;br /&gt;
&lt;br /&gt;
You'll see it to the right of your screen. Vote for the feature that you would most like to see added, but keep in mind its not an absolute list.&lt;br /&gt;
&lt;br /&gt;
It does allow you guys to have a say in what you think is important though.&lt;br /&gt;
&lt;br /&gt;
For more information about what iTransit it, please see the &lt;a href=&quot;http://blog.odynia.org/archives/27-iTransit.html&quot;&gt;previous post&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
bok    </content:encoded>
                
    <pubDate>Fri, 18 Jul 2008 05:27:33 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/28-guid.html</guid>
    </item>
<item>
    <title>iTransit</title>
    <link>http://blog.odynia.org/archives/27-iTransit.html</link>
<category>Apple / Mac / iPhone</category><category>iTransit</category><category>Web Development</category>    <comments>http://blog.odynia.org/archives/27-iTransit.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=27</wfw:comment>
    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
&lt;div&gt;Hi all,&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;While I'm quietly working on a new version of iTransit (iui is a bit bloated...) you're invited to continue to check out the current version @ &lt;a href=&quot;http://iphone.itransit.com.au/&quot;&gt;http://iphone.itransit.com.au/&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Presently it is for Melbourne only, other cities are on my medium-range radar.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Here's whats coming:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Smaller, sleeker, faster!&lt;/li&gt;
&lt;li&gt;Favourites&lt;/li&gt;
&lt;li&gt;Searching via station/stop name&lt;/li&gt;
&lt;li&gt;Bus data&lt;/li&gt;
&lt;li&gt;Traffic Information&lt;/li&gt;
&lt;li&gt;VLine Train/Bus data&lt;/li&gt;
&lt;li&gt;Swipe to view next/previous services&lt;/li&gt;
&lt;li&gt;Other cities...&lt;/li&gt;
&lt;li&gt;Investigate LocationService (GPS) integration &lt;img src=&quot;http://blog.odynia.org/templates/wow/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;The current aim for iTransit is to be something that you can whip out on the go to find out info live - as such browsing timetables won't be a focus. &lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Comments, suggestions and other feedback is very valued. Feel free to leave a comment below or via the app.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Cheers,&lt;br /&gt;bok&lt;/div&gt;    </content:encoded>
                
    <pubDate>Thu, 17 Jul 2008 08:11:14 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/27-guid.html</guid>
    </item>
<item>
    <title>&quot;TrainTracker&quot;</title>
    <link>http://blog.odynia.org/archives/26-TrainTracker.html</link>
<category>Apple / Mac / iPhone</category>    <comments>http://blog.odynia.org/archives/26-TrainTracker.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=26</wfw:comment>
    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
&lt;div&gt;I've added timetable information for trains based on scheduled data.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Also moved to a new URL to reflect further plans.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;There is still a bit of cleaning up of duplicate data to do, but its otherwise functional&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Check it out at &lt;a href=&quot;http://iphone.itransit.com.au/&quot;&gt;http://iphone.itransit.com.au/&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;-bok&lt;/div&gt;    </content:encoded>
                
    <pubDate>Wed, 09 Jul 2008 15:05:21 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/26-guid.html</guid>
    </item>
<item>
    <title>TramTracker</title>
    <link>http://blog.odynia.org/archives/24-TramTracker.html</link>
<category>Apple / Mac / iPhone</category>    <comments>http://blog.odynia.org/archives/24-TramTracker.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=24</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
I wrote this a few weeks back as a proof-of-concept and first iPhone web app, but I was somewhat surprised today to find that someone else had the same idea!&lt;br /&gt;
&lt;br /&gt;
Here then is my TramTracker webapp for the iPhone/iPod Touch.&lt;br /&gt;
&lt;Br /&gt;
&lt;a href=&quot;http://transport.odynia.org/iphone&quot;&gt;http://transport.odynia.org/iphone&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
You should also check out &lt;a href=&quot;http://forums.mactalk.com.au/47/52184-beta-tram-tracker-iphone.html&quot;  title=&quot;Mactalk Thread&quot;&gt;this thread&lt;/a&gt; on MacTalk for info on the other TramTracker product for your iPhone.&lt;br /&gt;
&lt;br /&gt;
I have a &lt;b&gt;lot&lt;/b&gt; of plans for getting a site with decent info about Melbourne's public transport network - the metlink site is slow and bloated. Need to find the time to do it!&lt;br /&gt;    </content:encoded>
                
    <pubDate>Fri, 04 Jul 2008 07:26:57 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/24-guid.html</guid>
    </item>
<item>
    <title>Mail.app and Courier-IMAP</title>
    <link>http://blog.odynia.org/archives/8-Mail.app-and-Courier-IMAP.html</link>
<category>Apple / Mac / iPhone</category>    <comments>http://blog.odynia.org/archives/8-Mail.app-and-Courier-IMAP.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=8</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=8</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
&lt;div&gt;With the purchase of my iMac that means I now actually own two macs. It and my 15&quot; Powerbook G4. Given that I want to be able to read email, etc on both I decided to implement an IMAP server on my sever thats hosted in the US.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Courier-IMAP installed with ease thanks to ports, configured postfix to use Maildir, connected and all was go. Easy.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Then I ran into a problem.. it wouldn't allow me to create folders on the server. The solution to this is probably simple to someone who has used IMAP before, so I post it here purely for reference, in case someone else needs it.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;The errors encountered indicated I was unable to create folders because of &quot;Invalid Folder Name&quot;. Digging in it appears that most modern IMAP servers don't need a prefix, the version of Courier-IMAP I was using did. Its a FreeBSD 4.10 machine so thats expected.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;The solution is to add &quot;INBOX&quot; to your &quot;IMAP Path Prefix&quot; in the account preferences.&lt;/div&gt;
&lt;br /&gt;
&lt;img src=&quot;http://proct.odynia.org/blog/imap_path_prefix.png&quot; alt=&quot;&quot; /&gt;
&lt;div&gt;Hope this helps someone,&lt;/div&gt;
&lt;div&gt;-bok&lt;/div&gt;    </content:encoded>
                
    <pubDate>Sat, 03 Jun 2006 04:07:07 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/8-guid.html</guid>
    </item>
<item>
    <title>My new iMac</title>
    <link>http://blog.odynia.org/archives/7-My-new-iMac.html</link>
<category>Apple / Mac / iPhone</category>    <comments>http://blog.odynia.org/archives/7-My-new-iMac.html#comments</comments>
    <wfw:comment>http://blog.odynia.org/wfwcomment.php?cid=7</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.odynia.org/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    <author>nospam@example.com (Robert Amos)</author>
    <content:encoded>
&lt;div&gt;I have to do the geeky thing at least once.. My new iMac arrvied yesterday and its oh so sweet &lt;img src=&quot;http://blog.odynia.org/templates/wow/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Having been a mac user for going on 7 years now I knew what to expect, but man is it fast!&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Specs are:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;2GHz Intel Core Duo&lt;/li&gt;
&lt;li&gt;20-inch widescreen LCD screen&lt;/li&gt;
&lt;li&gt;2GB 667 DDR2 SDRAM - 2x1GB&lt;/li&gt;
&lt;li&gt;500GB Serial ATA drive&lt;/li&gt;
&lt;li&gt;ATI Radeon X1600 with 256MB SDRAM&lt;/li&gt;
&lt;li&gt;Wireless Keyboard &amp;amp; Mouse + Mac OS X&lt;/li&gt;
&lt;li&gt;AirPort Extreme (802.11g)&lt;/li&gt;
&lt;li&gt;Bluetooth 2.0 + EDR&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;I'll post photos later. Suffice to say I have a new dev machine and I'll be getting stuck back into work &lt;img src=&quot;http://blog.odynia.org/templates/wow/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;-bok&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-size: 10px;&quot;&gt;Updated: Friday 2nd June 2006 2:20pm&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Photo, as promised.&lt;/div&gt;
&lt;br /&gt;
&lt;img src=&quot;http://proct.odynia.org/blog/imac.jpg&quot; alt=&quot;&quot; /&gt;    </content:encoded>
                
    <pubDate>Fri, 02 Jun 2006 05:45:37 +1000</pubDate>
    <guid isPermaLink="false">http://blog.odynia.org/archives/7-guid.html</guid>
    </item>
</channel>
</rss>
