<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-5613510</id><updated>2009-11-10T07:14:33.717Z</updated><title type="text">Web Developer Blog</title><subtitle type="html">&amp;lt;code&amp;gt;&lt;code&gt;
    void csharp {}
    &amp;lt;?php echo ?&amp;gt;
    SELECT code FROM SQL
    &amp;lt;asp:net runat=&amp;quot;server&amp;quot; /&amp;gt;
    function javascript() {}
    $(jquery)&lt;/code&gt;
&amp;lt;/code&amp;gt;
&amp;lt;tools&amp;gt;
    &amp;lt;freeware /&amp;gt;&amp;lt;opensource /&amp;gt;
&amp;lt;/tools&amp;gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://webdevel.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default?start-index=26&amp;max-results=25" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>457</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/WebDeveloperBlog" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-5613510.post-7557256437740709801</id><published>2009-09-10T20:14:00.003+01:00</published><updated>2009-09-10T20:33:55.343+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="slideshow" /><title type="text">Simple Slideshow System: S5</title><content type="html">&lt;p&gt;&lt;a href="http://meyerweb.com/eric/tools/s5/"&gt;S5&lt;/a&gt; has been around a few years now, but some may not be aware of it. S5 stands for 'Simple Standards-Based Slide Show System'. The XHTML code is simple to modify (adding / removing slides) and understand. Styling via CSS is also very simple to do. It gracefully degrades - so if JavaScript is disabled, you can still see the content. Slideshows are also printer friendly.&lt;/p&gt;
&lt;p&gt;Like a slideshow you would do in Microsoft Office PowerPoint or OpenOffice Impress, you have to make sure not too much content is added to a slide, since any overflow is hidden. The keyboard or mouse can be used to navigate the S5 slideshow (although there are no context menu options).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-7557256437740709801?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=FT9UXQcsWEc:tsO8QGGYVwc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=FT9UXQcsWEc:tsO8QGGYVwc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=FT9UXQcsWEc:tsO8QGGYVwc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/FT9UXQcsWEc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/7557256437740709801/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=7557256437740709801" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/7557256437740709801" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/7557256437740709801" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/FT9UXQcsWEc/simple-slideshow-system-s5.html" title="Simple Slideshow System: S5" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/09/simple-slideshow-system-s5.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-9050824577761395554</id><published>2009-09-09T19:11:00.000+01:00</published><updated>2009-09-09T19:13:09.459+01:00</updated><title type="text">WebSlide</title><content type="html">&lt;span style="font-weight: bold;"&gt;What is WebSlide?&lt;/span&gt;

WebSlide is a JavaScript based web application front-end for presenting mockups and other images in a web browser. Click in the demo area and either click buttons with your mouse, or use shortcut keys →, ←, z, x, and n. For more information on using and setting up a WebSlide, view the online documentation.
Features
&lt;ul&gt;&lt;li&gt;    No server-side requirements&lt;/li&gt;&lt;li&gt;    User-configurable&lt;/li&gt;&lt;li&gt;    Create custom themes with CSS&lt;/li&gt;&lt;li&gt;    Keyboard navigation&lt;/li&gt;&lt;li&gt;    Zoom images in &amp;amp; out&lt;/li&gt;&lt;li&gt;Optional password protection&lt;/li&gt;&lt;/ul&gt;Visit &lt;a href="http://paularmstrongdesigns.com/projects/webslide/"&gt;WebSlide&lt;/a&gt; | &lt;a href="http://paularmstrongdesigns.com/projects/webslide/demo/#wsHelpDialog"&gt;Full Screen Demo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-9050824577761395554?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=JhIraGJV41o:VrH1ckJq_QE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=JhIraGJV41o:VrH1ckJq_QE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=JhIraGJV41o:VrH1ckJq_QE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/JhIraGJV41o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/9050824577761395554/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=9050824577761395554" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/9050824577761395554" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/9050824577761395554" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/JhIraGJV41o/webslide.html" title="WebSlide" /><author><name>n3wton.com</name><uri>http://www.blogger.com/profile/07578318546945063595</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="00992547823458421479" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/09/webslide.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-9024987893104511511</id><published>2009-09-06T18:50:00.004+01:00</published><updated>2009-09-06T18:58:08.901+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web 2.0" /><category scheme="http://www.blogger.com/atom/ns#" term="cms" /><category scheme="http://www.blogger.com/atom/ns#" term="content management" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="wave" /><title type="text">Google Wave: 5 Ways It Could Change the Web</title><content type="html">&lt;p&gt;&lt;a href="http://mashable.com/2009/07/21/google-wave-invites/"&gt;Google Wave arrives on September 30th&lt;/a&gt;.  On that day, Google will start sending out 100,000 invites to non-developers to its much-anticipated real-time communication platform. An interesting article '5 ways Google Wave could change the web' has been published over at &lt;a href="http://mashable.com/2009/09/05/google-wave-ideas/"&gt;Mashable&lt;/a&gt;.
&lt;/p&gt;
1. Wave-Powered Forums&lt;br&gt;
2. Wave-powered Commenting System&lt;br&gt;
3. Wave-Based Content Management System&lt;br&gt;
4. Wave for Customer Support&lt;br&gt;
5. Wave for Education&lt;br&gt;&lt;br&gt;Read the full article over &lt;a href="http://mashable.com/2009/09/05/google-wave-ideas/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-9024987893104511511?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=cWmwsQ7qwJU:7VRuvyLyfAE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=cWmwsQ7qwJU:7VRuvyLyfAE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=cWmwsQ7qwJU:7VRuvyLyfAE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/cWmwsQ7qwJU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/9024987893104511511/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=9024987893104511511" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/9024987893104511511" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/9024987893104511511" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/cWmwsQ7qwJU/google-wave-5-ways-it-could-change-web.html" title="Google Wave: 5 Ways It Could Change the Web" /><author><name>n3wton.com</name><uri>http://www.blogger.com/profile/07578318546945063595</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="00992547823458421479" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/09/google-wave-5-ways-it-could-change-web.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-5957053486992555190</id><published>2009-09-05T08:43:00.006+01:00</published><updated>2009-09-05T09:24:44.540+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnet" /><title type="text">Microsoft.NET Framework directory locations</title><content type="html">&lt;p&gt;Since there are directories all over the place for the Microsoft.NET Framework, I have decided to compile a list of some of the key ones used.&lt;/p&gt;
&lt;p&gt;Compilers, GACUtil, ASP.NET Register IIS/SQL, Assemblies etc.&lt;/p&gt;
&lt;p&gt;.NET 1.0: &lt;strong&gt;C:\Windows\Microsoft.NET\Framework\v1.0.3705&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;.NET 1.1: &lt;strong&gt;C:\Windows\Microsoft.NET\Framework\v1.1.4322&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;.NET 2.0: &lt;strong&gt;C:\Windows\Microsoft.NET\Framework\v2.0.50727&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After 2.0, more directories were added, the build number was also omitted from the directory name. Some key utilities (for Global Assembly Cache (GAC), ASP.NET, Code Access Security Policy Tool (caspol.exe)) weren't part of future versions, so, as a result, .NET 2.0 is required by them.&lt;/p&gt;
&lt;p&gt;.NET 3.0 uses .NET 2.0 compiler. New directories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C:\Windows\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation&lt;/strong&gt; (only SQL scripts in here)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C:\Windows\Microsoft.NET\Framework\v3.0\WPF&lt;/strong&gt; (Windows Presentation Foundation)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0&lt;/strong&gt; (for reference when compiling / developing)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;.NET 3.5&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;C:\Windows\Microsoft.NET\Framework\v3.5&lt;/strong&gt; (compiler, WPF, MSBuild)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5&lt;/strong&gt; (for reference when compiling / developing)&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-5957053486992555190?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=0oYY4vyklBU:hA2te78lAGQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=0oYY4vyklBU:hA2te78lAGQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=0oYY4vyklBU:hA2te78lAGQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/0oYY4vyklBU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/5957053486992555190/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=5957053486992555190" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/5957053486992555190" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/5957053486992555190" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/0oYY4vyklBU/microsoftnet-framework-directory.html" title="Microsoft.NET Framework directory locations" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/09/microsoftnet-framework-directory.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-8669626429366165656</id><published>2009-09-02T21:07:00.001+01:00</published><updated>2009-09-02T21:10:14.326+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="jQueryUI" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">IxEdit</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ixedit.com/assets/images/cover.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 530px; height: 162px;" src="http://www.ixedit.com/assets/images/cover.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.ixedit.com/" target="_blank"&gt;&lt;strong&gt;IxEdit&lt;/strong&gt;&lt;/a&gt; is a JavaScript-based interaction design tool for the web. With IxEdit, designers can practice DOM-scripting without coding to change, add, move, or transform elements dynamically on your web pages. Especially, IxEdit must be useful to try various interactions rapidly in the prototyping phase of your web application.&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://www.ixedit.com/" target="_blank"&gt;http://www.ixedit.com/&lt;/a&gt;&lt;strong&gt; | Demo:&lt;/strong&gt; &lt;a href="http://www.ixedit.com/samples/" target="_blank"&gt;http://www.ixedit.com/samples/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-8669626429366165656?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=OvPIWvgQBvQ:xHYnmzekTHM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=OvPIWvgQBvQ:xHYnmzekTHM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=OvPIWvgQBvQ:xHYnmzekTHM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/OvPIWvgQBvQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/8669626429366165656/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=8669626429366165656" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/8669626429366165656" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/8669626429366165656" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/OvPIWvgQBvQ/ixedit.html" title="IxEdit" /><author><name>n3wton.com</name><uri>http://www.blogger.com/profile/07578318546945063595</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="00992547823458421479" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/09/ixedit.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-4739306422586068553</id><published>2009-09-01T11:08:00.002+01:00</published><updated>2009-09-01T11:12:47.273+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">jQTouch</title><content type="html">&lt;p&gt;&lt;a target="_blank" href="http://www.jqtouch.com/"&gt;     &lt;/a&gt;&lt;/p&gt;                      &lt;a target="_blank" href="http://www.jqtouch.com/"&gt;&lt;strong&gt;jQTouch&lt;/strong&gt;&lt;/a&gt; is a &lt;strong&gt;jQuery plugin&lt;/strong&gt; for creating mobile applications with just HTML, CSS &amp;amp; JavaScript.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tTIJcwTJ3hk/SpzzdXyUyGI/AAAAAAAAAAM/TPiLsNhsDiQ/s1600-h/Untitled.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 118px;" src="http://4.bp.blogspot.com/_tTIJcwTJ3hk/SpzzdXyUyGI/AAAAAAAAAAM/TPiLsNhsDiQ/s320/Untitled.jpg" alt="" id="BLOGGER_PHOTO_ID_5376439741100378210" border="0" /&gt;&lt;/a&gt;&lt;div id="top"&gt;&lt;div class="center"&gt;         &lt;/div&gt;     &lt;/div&gt;               &lt;div id="at16pcc"&gt;&lt;div style="display: none;" id="at16p"&gt;&lt;a name="atabc"&gt;&lt;/a&gt;&lt;a name="atpro"&gt;&lt;/a&gt;&lt;a name="atclb"&gt;&lt;/a&gt;&lt;a name="atopp"&gt;&lt;/a&gt;&lt;a name="atcle"&gt;&lt;/a&gt;&lt;a name="atcef"&gt;&lt;/a&gt;&lt;div id="at16pib"&gt;&lt;div id="at16pi"&gt;&lt;a id="at16pit" href="http://www.jqtouch.com/#" onclick="if (window._atab) return _atab.opp()" style="display: none; visibility: hidden;"&gt;»&lt;/a&gt;&lt;div id="at16pm"&gt;&lt;div id="at16pt" style="background-color: rgb(99, 214, 16);"&gt;&lt;h4&gt;&lt;span id="at16ptc" style="color: rgb(255, 255, 255);"&gt;Bookmark &amp;amp; Share&lt;/span&gt;&lt;/h4&gt;&lt;span id="at16_brand" style="color: rgb(255, 255, 255);"&gt;jQTouch&lt;/span&gt;&lt;a id="at16ptx" href="http://www.jqtouch.com/#" onclick="return _atw.clb()" style="color: rgb(255, 255, 255);"&gt;X&lt;/a&gt;&lt;/div&gt;&lt;div id="at16pc"&gt;&lt;div id="at_feed" style="display: none;"&gt;&lt;span style="display: block;"&gt;Select from these web-based feed readers:&lt;/span&gt;
&lt;div onclick="return addthis_sendto('aol');"&gt;&lt;a class="fbtn at_baa aol"&gt;AOL&lt;/a&gt;&lt;/div&gt;&lt;div class="at_litem" onclick="return addthis_sendto('bloglines');"&gt;&lt;a class="fbtn at_baa bloglines"&gt;Bloglines&lt;/a&gt;&lt;/div&gt;&lt;div onclick="return addthis_sendto('google');"&gt;&lt;a class="fbtn at_baa google"&gt;Google Reader&lt;/a&gt;&lt;/div&gt;&lt;div class="at_litem" onclick="return addthis_sendto('mymsn');"&gt;&lt;a class="fbtn at_baa mymsn"&gt;My MSN&lt;/a&gt;&lt;/div&gt;&lt;div onclick="return addthis_sendto('netvibes');"&gt;&lt;a class="fbtn at_baa netvibes"&gt;Netvibes&lt;/a&gt;&lt;/div&gt;&lt;div class="at_litem" onclick="return addthis_sendto('newsgator-on');"&gt;&lt;a class="fbtn at_baa newsgator-on"&gt;NewsGator&lt;/a&gt;&lt;/div&gt;&lt;div onclick="return addthis_sendto('newsisfree');"&gt;&lt;a class="fbtn at_baa newsisfree"&gt;Newsisfree&lt;/a&gt;&lt;/div&gt;&lt;div class="at_litem" onclick="return addthis_sendto('pageflakes');"&gt;&lt;a class="fbtn at_baa pageflakes"&gt;Pageflakes&lt;/a&gt;&lt;/div&gt;&lt;div onclick="return addthis_sendto('technorati');"&gt;&lt;a class="fbtn at_baa technorati"&gt;Technorati&lt;/a&gt;&lt;/div&gt;&lt;div class="at_litem" onclick="return addthis_sendto('yahoo');"&gt;&lt;a class="fbtn at_baa yahoo"&gt;Yahoo&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" id="at_share"&gt;&lt;div style="display: none; visibility: hidden;" id="at16psf"&gt;&lt;input id="at16filt" name="at16filt" tabindex="1" size="30" maxlength="50" onkeyup="_atw.filt(this.value,_atw.list)" type="text"&gt;&lt;/div&gt;&lt;div id="at16ps"&gt;&lt;div id="at16nms" style="display: none;"&gt;No matching services.&lt;/div&gt;&lt;div id="ati_aim" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('aim');"&gt;&lt;span class="at15t at15t_aim"&gt;AIM&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_amazonwishlist" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('amazonwishlist');"&gt;&lt;span class="at15t at15t_amazonwishlist"&gt;Amazon Wishlist&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_ask" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('ask');"&gt;&lt;span class="at15t at15t_ask"&gt;Ask&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_backflip" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('backflip');"&gt;&lt;span class="at15t at15t_backflip"&gt;Backflip&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_ballhype" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('ballhype');"&gt;&lt;span class="at15t at15t_ballhype"&gt;BallHype&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_bebo" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('bebo');"&gt;&lt;span class="at15t at15t_bebo"&gt;Bebo&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_blogger" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('blogger');"&gt;&lt;span class="at15t at15t_blogger"&gt;Blogger&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_blogmarks" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('blogmarks');"&gt;&lt;span class="at15t at15t_blogmarks"&gt;Blogmarks&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_buzz" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('buzz');"&gt;&lt;span class="at15t at15t_buzz"&gt;Buzz&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_delicious" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('delicious');"&gt;&lt;span class="at15t at15t_delicious"&gt;Delicious&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_digg" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('digg');"&gt;&lt;span class="at15t at15t_digg"&gt;Digg&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_diigo" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('diigo');"&gt;&lt;span class="at15t at15t_diigo"&gt;Diigo&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_email" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('email');"&gt;&lt;span class="at15t at15t_email"&gt;Email&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_facebook" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('facebook');"&gt;&lt;span class="at15t at15t_facebook"&gt;Facebook&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_fark" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('fark');"&gt;&lt;span class="at15t at15t_fark"&gt;Fark&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_faves" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('faves');"&gt;&lt;span class="at15t at15t_faves"&gt;Faves&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_favorites" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('favorites');"&gt;&lt;span class="at15t at15t_favorites"&gt;Favorites&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_friendfeed" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('friendfeed');"&gt;&lt;span class="at15t at15t_friendfeed"&gt;FriendFeed&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_google" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('google');"&gt;&lt;span class="at15t at15t_google"&gt;Google&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_hatena" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('hatena');"&gt;&lt;span class="at15t at15t_hatena"&gt;Hatena&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_kaboodle" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('kaboodle');"&gt;&lt;span class="at15t at15t_kaboodle"&gt;Kaboodle&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_kirtsy" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('kirtsy');"&gt;&lt;span class="at15t at15t_kirtsy"&gt;kIRTSY&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_linkagogo" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('linkagogo');"&gt;&lt;span class="at15t at15t_linkagogo"&gt;Link-a-Gogo&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_linkedin" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('linkedin');"&gt;&lt;span class="at15t at15t_linkedin"&gt;LinkedIn&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_live" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('live');"&gt;&lt;span class="at15t at15t_live"&gt;Live&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_meneame" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('meneame');"&gt;&lt;span class="at15t at15t_meneame"&gt;Menéame&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_misterwong" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('misterwong');"&gt;&lt;span class="at15t at15t_misterwong"&gt;Mister Wong&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_mixx" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('mixx');"&gt;&lt;span class="at15t at15t_mixx"&gt;Mixx&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_multiply" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('multiply');"&gt;&lt;span class="at15t at15t_multiply"&gt;Multiply&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_myaol" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('myaol');"&gt;&lt;span class="at15t at15t_myaol"&gt;myAOL&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_myspace" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('myspace');"&gt;&lt;span class="at15t at15t_myspace"&gt;MySpace&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_netvibes" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('netvibes');"&gt;&lt;span class="at15t at15t_netvibes"&gt;Netvibes&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_netvouz" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('netvouz');"&gt;&lt;span class="at15t at15t_netvouz"&gt;Netvouz&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_newsvine" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('newsvine');"&gt;&lt;span class="at15t at15t_newsvine"&gt;Newsvine&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_nujij" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('nujij');"&gt;&lt;span class="at15t at15t_nujij"&gt;Nujij&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_plaxo" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('plaxo');"&gt;&lt;span class="at15t at15t_plaxo"&gt;Plaxo&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_print" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('print');"&gt;&lt;span class="at15t at15t_print"&gt;Print&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_propeller" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('propeller');"&gt;&lt;span class="at15t at15t_propeller"&gt;Propeller&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_reddit" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('reddit');"&gt;&lt;span class="at15t at15t_reddit"&gt;Reddit&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_segnalo" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('segnalo');"&gt;&lt;span class="at15t at15t_segnalo"&gt;Segnalo&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_simpy" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('simpy');"&gt;&lt;span class="at15t at15t_simpy"&gt;Simpy&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_slashdot" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('slashdot');"&gt;&lt;span class="at15t at15t_slashdot"&gt;Slashdot&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_stumbleupon" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('stumbleupon');"&gt;&lt;span class="at15t at15t_stumbleupon"&gt;StumbleUpon&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_stylehive" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('stylehive');"&gt;&lt;span class="at15t at15t_stylehive"&gt;Stylehive&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_technorati" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('technorati');"&gt;&lt;span class="at15t at15t_technorati"&gt;Technorati&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_thisnext" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('thisnext');"&gt;&lt;span class="at15t at15t_thisnext"&gt;ThisNext&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_tipd" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('tipd');"&gt;&lt;span class="at15t at15t_tipd"&gt;Tip'd&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_tumblr" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('tumblr');"&gt;&lt;span class="at15t at15t_tumblr"&gt;Tumblr&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_twitter" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('twitter');"&gt;&lt;span class="at15t at15t_twitter"&gt;Twitter&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_typepad" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('typepad');"&gt;&lt;span class="at15t at15t_typepad"&gt;TypePad&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_wordpress" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('wordpress');"&gt;&lt;span class="at15t at15t_wordpress"&gt;WordPress&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_yahoobkm" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('yahoobkm');"&gt;&lt;span class="at15t at15t_yahoobkm"&gt;Y! Bookmarks&lt;/span&gt;&lt;/div&gt;&lt;div id="ati_yardbarker" class="at_item" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('yardbarker');"&gt;&lt;span class="at15t at15t_yardbarker"&gt;Yardbarker&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="at_complete" style="display: none;"&gt;&lt;button onclick="_atw.clb()"&gt;Done&lt;/button&gt;&lt;/div&gt;&lt;div id="at_success" style="display: none;"&gt;Message sent! &lt;a href="http://www.jqtouch.com/#" onclick="_atw.get('at16filt').value='';_atw.filt('',_atw.list);return _atw.sag()"&gt;Share again.&lt;/a&gt;&lt;/div&gt;&lt;div style="display: none;" id="at_promo"&gt;&lt;div class="at-promo-btm-ffx at-promo-content"&gt;&lt;h4&gt;AddThis for Firefox&lt;/h4&gt;&lt;span&gt;Bookmark, email or share any page, anytime.&lt;/span&gt;&lt;div class="at-promo-btn"&gt;&lt;a href="http://www.addthis.com/landing/?to=ffext&amp;amp;utm_source=el&amp;amp;utm_medium=link&amp;amp;utm_content=ATTool_orig&amp;amp;utm_campaign=AT_tooldl" target="_blank"&gt;Install&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="at_email" style="display: none; visibility: hidden;"&gt;&lt;div id="at_head" class="tmsg"&gt;&lt;a id="at_use_addr" href="http://www.jqtouch.com/#" onclick="_atab.opp();return false"&gt;Use Address Book&lt;/a&gt;&lt;/div&gt;&lt;form onsubmit="addthis_send();return false;"&gt;&lt;label for="at_to"&gt;To:  &lt;span&gt;(email address)&lt;/span&gt;&lt;/label&gt;&lt;textarea id="at_to" cols="30" rows="4" onkeypress="if (window._atab) _atab.htkd(this, event)" onkeyup="_atw.filt(this.value.replace(/[;\n]/g,',').replace(/ /g,'').split(',').pop(), _atw.data.contacts.all, 'at16eatdr', '_ataddr', null, 'a')" tabindex="2" onfocus="_atw.rse();"&gt;&lt;/textarea&gt;&lt;label for="at_from"&gt;From:  &lt;span&gt;(email address)&lt;/span&gt;&lt;/label&gt;&lt;input id="at_from" name="at_from" tabindex="3" size="30" onfocus="_atw.rse();" type="text"&gt;&lt;label for="at_msg"&gt;Note:  &lt;span&gt;(optional)&lt;/span&gt;&lt;/label&gt;&lt;textarea id="at_msg" style="" cols="30" rows="4" tabindex="4" onkeyup="return _atw.lml(this,250);" onfocus="_atw.rse();"&gt;&lt;/textarea&gt;&lt;div id="ateml"&gt;&lt;small&gt;255 character limit&lt;/small&gt;&lt;/div&gt;&lt;div id="addthis-pop-email-btns"&gt;&lt;input class="atbtn" tabindex="5" value="Send" onclick="return addthis_send();" type="submit"&gt;&lt;input class="atbtn" tabindex="6" value="Cancel" onclick="return _atw.cef()" style="font-weight: normal; color: rgb(102, 102, 102);" type="reset"&gt;&lt;/div&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="at16pf"&gt;&lt;a id="at-whatsthis" href="http://www.addthis.com/landing/?to=ffext" onclick="_ate.cev('ctk', 'ft:fx:dl');return true" target="_blank"&gt;Download AddThis for Firefox&lt;/a&gt;&lt;a class="at_baa" id="at-logo" href="http://www.addthis.com/?utm_source=mm&amp;amp;utm_medium=img&amp;amp;utm_content=ATLogo_orig&amp;amp;utm_campaign=AT_main" title="AddThis" target="_blank"&gt;AddThis&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="at15s" onmouseover="_atw.xwa()" onmouseout="if (this.className.indexOf('border')==-1) addthis_close()" style="z-index: 1000000; position: absolute; visibility: visible; top: 415px; left: 272px; display: none;"&gt;&lt;div id="at15s_head" style="background-color: rgb(99, 214, 16);"&gt;&lt;span id="at15ptc" style="color: rgb(255, 255, 255);"&gt;Bookmark &amp;amp; Share&lt;/span&gt;&lt;span id="at15s_brand" style="color: rgb(255, 255, 255);"&gt;jQTouch&lt;/span&gt;&lt;/div&gt;&lt;div id="at_hover" style="display: block;"&gt;&lt;div class="at_item at_col0" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('email');"&gt;&lt;span class="at15t at15t_email"&gt;Email&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col1" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('favorites');"&gt;&lt;span class="at15t at15t_favorites"&gt;Favorites&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col0" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('print');"&gt;&lt;span class="at15t at15t_print"&gt;Print&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col1" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('delicious');"&gt;&lt;span class="at15t at15t_delicious"&gt;Delicious&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col0" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('digg');"&gt;&lt;span class="at15t at15t_digg"&gt;Digg&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col1" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('google');"&gt;&lt;span class="at15t at15t_google"&gt;Google&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col0" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('myspace');"&gt;&lt;span class="at15t at15t_myspace"&gt;MySpace&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col1" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('live');"&gt;&lt;span class="at15t at15t_live"&gt;Live&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col0" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('facebook');"&gt;&lt;span class="at15t at15t_facebook"&gt;Facebook&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col1" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('stumbleupon');"&gt;&lt;span class="at15t at15t_stumbleupon"&gt;StumbleUpon&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_col0" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('twitter');"&gt;&lt;span class="at15t at15t_twitter"&gt;Twitter&lt;/span&gt;&lt;/div&gt;&lt;div class="at_item at_colNaN" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)" onclick="return addthis_sendto('more');"&gt;&lt;span class="at15t at15t_more"&gt;More... (54)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="at16pf"&gt;&lt;a id="at-whatsthis" href="http://www.addthis.com/landing/?to=ffext" onclick="_ate.cev('ctk', 'ft:fx:dl');return true" target="_blank"&gt;Download AddThis for Firefox&lt;/a&gt;&lt;a class="at_baa" id="at-logo" href="http://www.addthis.com/?utm_source=hm&amp;amp;utm_medium=img&amp;amp;utm_content=ATLogo_orig&amp;amp;utm_campaign=AT_main" title="AddThis" target="_blank"&gt;AddThis&lt;/a&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;A jQuery plugin for mobile web development on the iPhone,  Android, Palm Pre, and other forward-thinking devices.&lt;/p&gt;&lt;p&gt;Link: &lt;a href="http://www.jqtouch.com/"&gt;http://www.jqtouch.com/&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-4739306422586068553?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=iWH1crxRQxw:Cn1rx8Ay54I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=iWH1crxRQxw:Cn1rx8Ay54I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=iWH1crxRQxw:Cn1rx8Ay54I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/iWH1crxRQxw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/4739306422586068553/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=4739306422586068553" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4739306422586068553" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4739306422586068553" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/iWH1crxRQxw/jqtouch.html" title="jQTouch" /><author><name>n3wton.com</name><uri>http://www.blogger.com/profile/07578318546945063595</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="00992547823458421479" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tTIJcwTJ3hk/SpzzdXyUyGI/AAAAAAAAAAM/TPiLsNhsDiQ/s72-c/Untitled.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/09/jqtouch.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-383627195251659373</id><published>2009-08-24T19:09:00.004+01:00</published><updated>2009-08-24T19:14:18.925+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cms" /><category scheme="http://www.blogger.com/atom/ns#" term="xml" /><category scheme="http://www.blogger.com/atom/ns#" term="getsimple" /><title type="text">New a CMS - you need GetSimple.</title><content type="html">&lt;p&gt;GetSimple is an XML based lite Content Management System. To go along with it’s best-in-class user interface, its loaded with features that every website needs.  &lt;a href="http://get-simple.info/"&gt;GetSimple&lt;/a&gt; is truly the simplest way to manage a small-business website + no MySQL Database required! its all, as above, managed by XML awesome, &lt;a href="http://get-simple.info/"&gt;Check out the site&lt;/a&gt;, download it and check it out!&lt;/p&gt;&lt;p&gt;URL: &lt;a href="http://get-simple.info/"&gt;http://get-simple.info/&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-383627195251659373?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=d9djWWU6UMA:5PKNzmNgMdw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=d9djWWU6UMA:5PKNzmNgMdw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=d9djWWU6UMA:5PKNzmNgMdw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/d9djWWU6UMA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/383627195251659373/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=383627195251659373" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/383627195251659373" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/383627195251659373" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/d9djWWU6UMA/new-cms-you-need-getsimple.html" title="New a CMS - you need GetSimple." /><author><name>n3wton.com</name><uri>http://www.blogger.com/profile/07578318546945063595</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="00992547823458421479" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/08/new-cms-you-need-getsimple.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-3562152556432377689</id><published>2009-08-21T17:35:00.002+01:00</published><updated>2009-08-21T17:35:00.628+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="SmartTools" /><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="plugin" /><category scheme="http://www.blogger.com/atom/ns#" term="newsticker" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">jQuery newsticker: SharePoint WebPart</title><content type="html">&lt;p&gt;It is possible to integrate the &lt;a href="http://www.texotela.co.uk/code/jquery/newsticker/"&gt;jQuery newsticker plugin&lt;/a&gt; into a SharePoint site using a WebPart: &lt;a href="http://spjquerywebparts.codeplex.com/Wiki/View.aspx?title=News%20Ticker%20Web%20Part%20for%20Announcements%20List"&gt;News Ticker Web Part&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://smarttools.codeplex.com/"&gt;SmartTools&lt;/a&gt; is used to integrate jQuery into SharePoint, via the &lt;a href="http://smarttools.codeplex.com/Wiki/View.aspx?title=jQuery"&gt;SmartTools.jQuery&lt;/a&gt; component.&lt;/p&gt;
&lt;p&gt;Anyone else integrated the newsticker plugin into a module / add-on for a Web CMS?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-3562152556432377689?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=oCH-oRRoRPI:ItvBzJZ06Qw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=oCH-oRRoRPI:ItvBzJZ06Qw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=oCH-oRRoRPI:ItvBzJZ06Qw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/oCH-oRRoRPI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/3562152556432377689/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=3562152556432377689" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/3562152556432377689" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/3562152556432377689" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/oCH-oRRoRPI/jquery-newsticker-sharepoint-webpart.html" title="jQuery newsticker: SharePoint WebPart" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/08/jquery-newsticker-sharepoint-webpart.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-4458164114531904457</id><published>2009-07-27T16:06:00.005+01:00</published><updated>2009-07-27T16:12:26.711+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="visual studio" /><category scheme="http://www.blogger.com/atom/ns#" term="macro" /><title type="text">Visual Studio Macro:  Wrap Selected Text in Tag</title><content type="html">&lt;p&gt;This simple macro allows you to wrap whatever text is selected in a tag - a feature that somehow is missing from Visual Studio 2008...&lt;/p&gt;
&lt;pre&gt;    Sub SurroundWithTag()
        Dim selectedText = DTE.ActiveDocument.Selection.Text
        Dim tag As String
        tag = InputBox("Enter tag name", "Tag", "strong")
        If (tag = "") Then
            MsgBox("No tag defined")
        Else
            ' no end tag needed as Visual Studio creates the end tag..
            DTE.ActiveDocument.Selection.Text = String.Format("&amp;lt;{0}&amp;gt;{1}", tag, selectedText)
        End If
    End Sub&lt;/pre&gt;
&lt;p&gt;Based on the answer to this question found on Stack Overflow: &lt;a href="http://stackoverflow.com/questions/598062/macro-to-wrap-selected-text-with-tags-in-visual-studio"&gt;Macro to wrap selected text with tags in Visual Studio&lt;/a&gt; (which also details how you can create a macro)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-4458164114531904457?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=B-QRdqD_Urw:GoDmycfcbiI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=B-QRdqD_Urw:GoDmycfcbiI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=B-QRdqD_Urw:GoDmycfcbiI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/B-QRdqD_Urw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/4458164114531904457/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=4458164114531904457" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4458164114531904457" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4458164114531904457" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/B-QRdqD_Urw/visual-studio-macro-wrap-selected-text.html" title="Visual Studio Macro:  Wrap Selected Text in Tag" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/07/visual-studio-macro-wrap-selected-text.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-5032849727690333239</id><published>2009-07-08T14:55:00.003+01:00</published><updated>2009-07-08T15:03:45.770+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tip" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">jQuery Quick Tip: Extract CSS Background Image</title><content type="html">&lt;p&gt;jQuery allows you to get the background image of any element on a web page:&lt;/p&gt;
&lt;pre&gt;$("#myelement").css("background-image");&lt;/pre&gt;
&lt;p&gt;However, this returns it in an undesirable format: &lt;code&gt;url(http://example.com/images/image.jpg)&lt;/code&gt; or &lt;code&gt;url("http://example.com/images/image.jpg")&lt;/code&gt;. With a bit of string replacement, you can get extract the URL:&lt;/p&gt;
&lt;pre&gt;function extractUrl(input)
{
 // remove quotes and wrapping url()
 return input.replace(/"/g,"").replace(/url\(|\)$/ig, "");
}&lt;/pre&gt;
&lt;p&gt;So now you can just do this:&lt;/p&gt;
&lt;pre&gt;extractUrl($("#myelement").css("background-image"))&lt;/pre&gt;
&lt;p&gt;Which will return the URL on its own &lt;code&gt;http://example.com/images/image.jpg&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-5032849727690333239?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=vDTBJASZ58Q:HBe3CucYsy4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=vDTBJASZ58Q:HBe3CucYsy4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=vDTBJASZ58Q:HBe3CucYsy4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/vDTBJASZ58Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/5032849727690333239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=5032849727690333239" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/5032849727690333239" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/5032849727690333239" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/vDTBJASZ58Q/jquery-quick-tip-extract-css-background.html" title="jQuery Quick Tip: Extract CSS Background Image" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/07/jquery-quick-tip-extract-css-background.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-4763649065376538667</id><published>2009-05-18T17:52:00.000+01:00</published><updated>2009-05-18T17:52:00.495+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tip" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="CSharp" /><title type="text">ASP.NET Snippet: Delete All Users and Roles</title><content type="html">&lt;p&gt;Deleting all users and related data from a site using ASP.NET authentication is fairly simple. Useful if copying a database and you want to remove all the users, but keep the structure and other data (e.g. user content) intact.&lt;/p&gt;
&lt;p&gt;Delete all users:&lt;/p&gt;
&lt;pre&gt;foreach (MembershipUser u in Membership.GetAllUsers())
{
 Membership.DeleteUser(u.UserName, true);
}&lt;/pre&gt;
&lt;p&gt;Delete all roles:&lt;/p&gt;
&lt;pre&gt;foreach (string role in Roles.GetAllRoles())
{
 Roles.DeleteRole(role);
}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-4763649065376538667?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=9gQH4TZrfhQ:prjwuifHMJY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=9gQH4TZrfhQ:prjwuifHMJY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=9gQH4TZrfhQ:prjwuifHMJY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/9gQH4TZrfhQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/4763649065376538667/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=4763649065376538667" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4763649065376538667" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4763649065376538667" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/9gQH4TZrfhQ/aspnet-snippet-delete-all-users-and.html" title="ASP.NET Snippet: Delete All Users and Roles" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/05/aspnet-snippet-delete-all-users-and.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-2188851445510912892</id><published>2009-05-15T17:55:00.002+01:00</published><updated>2009-07-08T21:10:38.917+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tip" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title type="text">ASP.NET Snippet: Quick Password Reset</title><content type="html">&lt;p&gt;Here is a simple way, via code to reset a password when you are using the built-in ASP.NET authentication system. Useful if you either don't have a reset password form, or you just want to quickly change a password. Create a blank page, and place in the code behind &lt;code&gt;Page_Load&lt;/code&gt; event.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;    protected void Page_Load(object sender, EventArgs e)
    {
        MembershipUser u = Membership.FindUsersByName("Username")["Username"];
        u.UnlockUser();
        u.ChangePassword(u.ResetPassword(), "newpassword");
    }
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;    Public Sub Page_Load(sender As Object, e As EventArgs)
        Dim u As MembershipUser = Membership.FindUsersByName("Username")("Username")
        u.UnlockUser()
        u.ChangePassword(u.ResetPassword(), "newpassword")
    End Sub&lt;/pre&gt;
&lt;p&gt;Just delete the page when done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (8 July 2009)&lt;/strong&gt;: If a question and answer is required when you create a user, you have to pass on the answer to &lt;code&gt;u.ResetPassword&lt;/code&gt;, e.g. &lt;code&gt;u.ChangePassword(u.ResetPassword("answer"), "newpassword")&lt;/code&gt;, otherwise &lt;code&gt;ResetPassword&lt;/code&gt; won't work.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-2188851445510912892?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=V8-5YdI18gY:cRhYlmQd8RI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=V8-5YdI18gY:cRhYlmQd8RI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=V8-5YdI18gY:cRhYlmQd8RI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/V8-5YdI18gY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/2188851445510912892/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=2188851445510912892" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/2188851445510912892" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/2188851445510912892" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/V8-5YdI18gY/aspnet-snippet-quick-password-reset.html" title="ASP.NET Snippet: Quick Password Reset" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/05/aspnet-snippet-quick-password-reset.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-6810372556555000640</id><published>2009-05-05T17:51:00.002+01:00</published><updated>2009-05-18T21:43:42.679+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="CSharp" /><title type="text">Get ListControl values (CheckBoxList, RadioButtonList, DropDownList, ListBox) from a Repeater the easy way (ASP.NET C#)</title><content type="html">&lt;p&gt;Building on &lt;a href="http://webdevel.blogspot.com/2009/05/get-textbox-values-from-repeater-easy.html"&gt;Get TextBox values from a Repeater the easy way (ASP.NET C#)&lt;/a&gt;, here is a function that will get the selected values from WebControls that inherit from &lt;code&gt;ListControl&lt;/code&gt; (&lt;code&gt;CheckBoxList&lt;/code&gt;, &lt;code&gt;RadioButtonList&lt;/code&gt;, &lt;code&gt;DropDownList&lt;/code&gt; and &lt;code&gt;ListBox&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;It returns &lt;code&gt;null&lt;/code&gt; if the &lt;code&gt;ListControl&lt;/code&gt; matching the given ID does not exist in the repeater or an empty string array if nothing is selected.&lt;/p&gt;
&lt;pre&gt;public string[] ListControlValues(RepeaterItem itm, string controlId)
{
 string[] output = null;
 ListControl t = itm.FindControl(controlId) as ListControl;
 if (t != null)
 {
  ArrayList ar = new ArrayList();
  foreach (ListItem li in t.Items)
  {
   if (li.Selected) ar.Add(li.Value);
  }
  output = (string[])ar.ToArray(typeof(string));
 }
 return output;
}&lt;/pre&gt;
&lt;p&gt;Use in Repeater ItemCommand&lt;/p&gt;
&lt;pre&gt;protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
 switch (e.CommandName.ToString())
 {
  case "Save":
   int recordID = Convert.ToInt32(e.CommandArgument);
   string[] listBoxValues = ListControlValues("ListBox1");
   if(listBoxValues != null)
   {
     foreach(string s in listBoxValues)
     {
      
     }
   }
   string[] dropDownValues = ListControlValues("DropDown1");
   if(dropDownValues != null)
   {
    // since dropdown can only have one item selected...
    string dropDownValue = dropDownValues[0];
   }
   ....
   
   break;
  default:
   break;
 }
}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-6810372556555000640?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=uisiNXKGeHo:lDEoA_-FOCI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=uisiNXKGeHo:lDEoA_-FOCI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=uisiNXKGeHo:lDEoA_-FOCI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/uisiNXKGeHo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/6810372556555000640/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=6810372556555000640" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/6810372556555000640" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/6810372556555000640" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/uisiNXKGeHo/get-listcontrol-values-checkboxlist.html" title="Get ListControl values (CheckBoxList, RadioButtonList, DropDownList, ListBox) from a Repeater the easy way (ASP.NET C#)" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/05/get-listcontrol-values-checkboxlist.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-7388123364012192440</id><published>2009-05-01T19:06:00.001+01:00</published><updated>2009-05-01T19:06:00.330+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="CSharp" /><title type="text">Get TextBox values from a Repeater the easy way (ASP.NET C#)</title><content type="html">&lt;p&gt;The asp:Repeater control allows you to attach an ItemCommand event to it, for instance, updating a record in a database.&lt;/p&gt;
&lt;pre&gt;&amp;lt;asp:Repeater ID="MyRepeater" DataSource='&amp;lt;%# MyData %&amp;gt;' runat="server" 
 OnItemCommand="MyRepeater_ItemCommand"&amp;gt;
 &amp;lt;HeaderTemplate&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/HeaderTemplate&amp;gt;
 &amp;lt;ItemTemplate&amp;gt;&amp;lt;li&amp;gt;
 Url: &amp;lt;asp:TextBox ID="Urdl" Text='&amp;lt;%# Eval("Url") %&amp;gt;' runat="server" /&amp;gt;
 Text: &amp;lt;asp:TextBox ID="Text" Text='&amp;lt;%# Eval("Text") %&amp;gt;' runat="server" /&amp;gt;
 &amp;lt;asp:Button ID="SaveButton" CommandName="Save" CommandArgument='&amp;lt;%# Eval("RecordID") %&amp;gt;' Text="Save" runat="server" /&amp;gt;
 &amp;lt;/li&amp;gt;&amp;lt;/ItemTemplate&amp;gt;
 &amp;lt;FooterTemplate&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/FooterTemplate&amp;gt;
&amp;lt;/asp:Repeater&amp;gt;
&lt;/pre&gt;
&lt;p&gt;MyRepeater_ItemCommand is then defined:&lt;/p&gt;
&lt;pre&gt;protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
 switch (e.CommandName.ToString())
 {
  case "Save":
   int recordID = Convert.ToInt32(e.CommandArgument);
   TextBox url = e.Item.FindControl("Url") as TextBox;
   TextBox text = e.Item.FindControl("Text") as TextBox;
   
   ....
   
   break;
  default:
   break;
 }
}&lt;/pre&gt;
&lt;p&gt;However this has several downsides:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If you mistype the control id, you get a &lt;code&gt;NullReferenceException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The code can get cluttered and harder to understand as more &lt;code&gt;TextBox&lt;/code&gt;'s are added.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To help mitigate this, this function gets the value of the &lt;code&gt;TextBox&lt;/code&gt;, or null if the &lt;code&gt;TextBox&lt;/code&gt; is not found.&lt;/p&gt;
&lt;pre&gt;public string TextBoxValue(RepeaterItem itm, string controlId)
{
 string output = null;
 TextBox t = itm.FindControl(controlId) as TextBox;
 if (t != null)
 {
  output = t.Text;
 }
 return output;
}&lt;/pre&gt;
&lt;p&gt;Then you can get the value without an exception occurring:&lt;/p&gt;
&lt;pre&gt;string url = TextBoxValue(e.Item, "Url");
string text = TextBoxValue(e.Item, "Text");
if(url != null)
{
    // update url in record
}
if(text == null)
{
    // update text in record
}&lt;/pre&gt;
&lt;p&gt;The code could then be used in a class and used on multiple pages, so if a page doesn't have a TextBox with a certain ID, the corresponding data field is not updated (e.g. on one page you might want a user to update the URL, but on another more restricted page, you may only want them to change the text). Code behind would then just be:&lt;/p&gt;
&lt;pre&gt;protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
 RepeaterMethods.MyRepeater_ItemCommand(sender, e);
}&lt;/pre&gt;
&lt;p&gt;And the class could be:&lt;/p&gt;
&lt;pre&gt;using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;

/// &amp;lt;summary&amp;gt;
/// Summary description for RepeaterMethods
/// &amp;lt;/summary&amp;gt;
public class RepeaterMethods
{
 public RepeaterMethods()
 {
  //
  // TODO: Add constructor logic here
  //
 }

 public static void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
 {
  switch (e.CommandName.ToString())
  {
   case "Save":
    string url = TextBoxValue(e.Item, "Url");
    string text = TextBoxValue(e.Item, "Text");
    if (url != null)
    {
     // update url in record
    }
    if (text == null)
    {
     // update text in record
    }
    break;
   default:
    break;
  }
 }

 public static string TextBoxValue(RepeaterItem itm, string controlId)
 {
  string output = null;
  TextBox t = itm.FindControl(controlId) as TextBox;
  if (t != null)
  {
   output = t.Text;
  }
  return output;
 }
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-7388123364012192440?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=nUC0-hRFYUE:OknyEmx3otg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=nUC0-hRFYUE:OknyEmx3otg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=nUC0-hRFYUE:OknyEmx3otg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/nUC0-hRFYUE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/7388123364012192440/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=7388123364012192440" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/7388123364012192440" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/7388123364012192440" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/nUC0-hRFYUE/get-textbox-values-from-repeater-easy.html" title="Get TextBox values from a Repeater the easy way (ASP.NET C#)" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/05/get-textbox-values-from-repeater-easy.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-4903610191578096299</id><published>2009-05-01T18:28:00.000+01:00</published><updated>2009-05-01T18:28:00.659+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="CSharp" /><category scheme="http://www.blogger.com/atom/ns#" term="databinding" /><category scheme="http://www.blogger.com/atom/ns#" term="lazy loading" /><title type="text">Binding data to a Repeater using Lazy Loading (ASP.NET C#)</title><content type="html">&lt;p&gt;Lazy loading is a method of only loading data as and when you need it. Rather than loading it on page load, you can define a property that can then be bound to a WebControl.&lt;/p&gt;

&lt;p&gt;For example, in the page is an &lt;code&gt;asp:Repeater&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;        &amp;lt;asp:Repeater ID="MyRepeater" DataSource='&amp;lt;%# MyData %&amp;gt;' runat="server"&amp;gt;
            &amp;lt;HeaderTemplate&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/HeaderTemplate&amp;gt;
            &amp;lt;ItemTemplate&amp;gt;&amp;lt;li&amp;gt;&amp;lt;a href="&amp;lt;%# Eval("Url") %&amp;gt;"&amp;gt;&amp;lt;%# Eval("Text") %&amp;gt;&amp;lt;/a&amp;gt; (Record ID: &amp;lt;%# Eval("RecordID") %&amp;gt;)&amp;lt;/li&amp;gt;&amp;lt;/ItemTemplate&amp;gt;
            &amp;lt;FooterTemplate&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/FooterTemplate&amp;gt;
        &amp;lt;/asp:Repeater&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;MyData&lt;/code&gt; in the &lt;code&gt;DataSource&lt;/code&gt; attribute of &lt;code&gt;asp:Repeater&lt;/code&gt; is a property defined in the CodeBehind page:&lt;/p&gt;

&lt;pre&gt;    private DataTable _MyData;
    public DataTable MyData
    {
        get
        {
            if (_MyData == null)
            {
                _MyData = LoadMyData();
            }
            return _MyData;
        }
    }&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;LoadMyData&lt;/code&gt; gets the data you want to show (normally it would be loaded from a database, rather than rows added in this case)&lt;/p&gt;

&lt;pre&gt;    private DataTable LoadMyData()
    {
        Trace.Write("LoadMyData");
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("RecordID", Type.GetType("System.Int32")));
        dt.Columns.Add(new DataColumn("Text", Type.GetType("System.String")));
        dt.Columns.Add(new DataColumn("Url", Type.GetType("System.String")));

        DataRow row;
        int index = 1;

        // new row
        row = dt.NewRow();
        // populate row
        row["RecordID"] = index;
        row["Text"] = "Google";
        row["Url"] = "http://www.google.co.uk";
        // add row to table
        dt.Rows.Add(row);

        // increment index
        index++;

        // new row
        row = dt.NewRow();
        // populate row
        row["RecordID"] = index;
        row["Text"] = "Yahoo";
        row["Url"] = "http://www.yahoo.co.uk";
        // add row to table
        dt.Rows.Add(row);

        return dt;
    }&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;Trace.Write&lt;/code&gt; is there to show that the data isn't loaded if it is not bound to a WebControl in the page. This can be tested by turning on tracing (adding &lt;code&gt;Trace="True"&lt;/code&gt; to &lt;code&gt;&amp;lt;%@ Page&lt;/code&gt;) and removing &lt;code&gt;DataSource='&amp;lt;%# MyData %&amp;gt;'&lt;/code&gt; from the Repeater.&lt;/p&gt;

&lt;p&gt;You would then bind the page on load:&lt;/p&gt;

&lt;pre&gt;    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DataBind();
        }
    }&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;LazyLoadRepeater.aspx:&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="LazyLoadRepeater.aspx.cs" Inherits="LazyLoadRepeater" Trace="true" %&amp;gt;

&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;

&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
    &amp;lt;title&amp;gt;Lazy Loading&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;
    &amp;lt;div&amp;gt;
        &amp;lt;h1&amp;gt;Search Engines&amp;lt;/h1&amp;gt;
        &amp;lt;asp:Repeater ID="MyRepeater" DataSource='&amp;lt;%# MyData %&amp;gt;' runat="server"&amp;gt;
            &amp;lt;HeaderTemplate&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/HeaderTemplate&amp;gt;
            &amp;lt;ItemTemplate&amp;gt;&amp;lt;li&amp;gt;&amp;lt;a href="&amp;lt;%# Eval("Url") %&amp;gt;"&amp;gt;&amp;lt;%# Eval("Text") %&amp;gt;&amp;lt;/a&amp;gt; (Record ID: &amp;lt;%# Eval("RecordID") %&amp;gt;)&amp;lt;/li&amp;gt;&amp;lt;/ItemTemplate&amp;gt;
            &amp;lt;FooterTemplate&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/FooterTemplate&amp;gt;
        &amp;lt;/asp:Repeater&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;LazyLoadRepeater.aspx.cs:&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class LazyLoadRepeater : System.Web.UI.Page
{
    private DataTable _MyData;
    public DataTable MyData
    {
        get
        {
            if (_MyData == null)
            {
                _MyData = LoadMyData();
            }
            return _MyData;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DataBind();
        }
    }

    private DataTable LoadMyData()
    {
        Trace.Write("LoadMyData");
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("RecordID", Type.GetType("System.Int32")));
        dt.Columns.Add(new DataColumn("Text", Type.GetType("System.String")));
        dt.Columns.Add(new DataColumn("Url", Type.GetType("System.String")));

        DataRow row;
        int index = 1;

        // new row
        row = dt.NewRow();
        // populate row
        row["RecordID"] = index;
        row["Text"] = "Google";
        row["Url"] = "http://www.google.co.uk";
        // add row to table
        dt.Rows.Add(row);

        // increment index
        index++;

        // new row
        row = dt.NewRow();
        // populate row
        row["RecordID"] = index;
        row["Text"] = "Yahoo";
        row["Url"] = "http://www.yahoo.co.uk";
        // add row to table
        dt.Rows.Add(row);

        return dt;
    }
}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-4903610191578096299?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=QimxgYcI4Kk:BAeDGotozGM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=QimxgYcI4Kk:BAeDGotozGM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=QimxgYcI4Kk:BAeDGotozGM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/QimxgYcI4Kk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/4903610191578096299/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=4903610191578096299" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4903610191578096299" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4903610191578096299" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/QimxgYcI4Kk/binding-data-to-repeater-using-lazy.html" title="Binding data to a Repeater using Lazy Loading (ASP.NET C#)" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/05/binding-data-to-repeater-using-lazy.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-1016223989288014</id><published>2009-04-16T18:08:00.001+01:00</published><updated>2009-04-16T18:08:00.154+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="sample database" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Chinook: Cross-Database (SQL Server, Oracle, MySQL) Sample</title><content type="html">&lt;p&gt;The &lt;a href="http://chinookdatabase.codeplex.com/"&gt;Chinook database&lt;/a&gt; is a sample database that is an alternative to the Northwind sample. One of the advantages it has over Northwind is that it can be installed on SQL Server (including the Compact Edition), Oracle and MySQL. Therefore it can be used to test &lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping"&gt;Object-relational mapping&lt;/a&gt; (ORM) frameworks (e.g. &lt;a href="http://www.hibernate.org/"&gt;NHibernate&lt;/a&gt;, &lt;a href="http://subsonicproject.com/"&gt;SubSonic&lt;/a&gt; etc).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-1016223989288014?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=ESTWBOi1ixo:M8grFyNyyEA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=ESTWBOi1ixo:M8grFyNyyEA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=ESTWBOi1ixo:M8grFyNyyEA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/ESTWBOi1ixo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/1016223989288014/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=1016223989288014" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/1016223989288014" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/1016223989288014" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/ESTWBOi1ixo/chinook-cross-database-sql-server.html" title="Chinook: Cross-Database (SQL Server, Oracle, MySQL) Sample" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/04/chinook-cross-database-sql-server.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-55552112023837045</id><published>2009-04-15T18:10:00.001+01:00</published><updated>2009-04-15T18:10:00.788+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mygeneration" /><category scheme="http://www.blogger.com/atom/ns#" term="code generation" /><title type="text">Code Generation with MyGeneration</title><content type="html">&lt;p&gt;Rather than type repetitive code, a code generator could be used to do it for you. &lt;a href="http://www.mygenerationsoftware.com/"&gt;MyGeneration&lt;/a&gt; is one such piece of software that will help. As the output is just text, you can output code in any language (ASP.NET, C#, VB.NET, PHP, JavaScript etc) - although with a bit of extra work, PDF's can be generated (using &lt;a href="http://sourceforge.net/projects/itextsharp/"&gt;iTextSharp&lt;/a&gt; - which would need to be downloaded and the dll saved in the MyGeneration install folder). It can query many database types (SQL Server, Oracle, SQLite, MySQL, PostgreSQL and more), but a database isn't required for it to be of use. You can set up an interface (to select columns in a table for example), but it is optional.&lt;/p&gt;
&lt;p&gt;For example, to loop through columns in a database table:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Template Code&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&amp;lt;%
public class GeneratedTemplate : DotNetScriptTemplate
{
 public GeneratedTemplate(ZeusContext context) : base(context) {}
 
 private string DatabaseName;
 private string TableName;
 private ITable table;
 private ArrayList columns;
 private string PrimaryKey = string.Empty;

 //---------------------------------------------------
 // Render() is where you want to write your logic    
 //---------------------------------------------------
 public override void Render()
 {
  DatabaseName = input["databaseName"].ToString();
  TableName = input["tableName"].ToString();
  table = MyMeta.Databases[DatabaseName].Tables[TableName];
  columns = input["lstColumns"] as ArrayList;
  try
  {
   PrimaryKey = table.PrimaryKeys[0].Name; 
  }
  catch (System.Exception ex)
  {
   // no primary key
  }
  foreach (string columnName in columns)
  {
  %&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;%= columnName %&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;%
  }
 }
 
 // check if column has been selected via UI
 private bool IsInColumns(Column c)
 {
  foreach (string columnName in columns)
  {
   if (columnName == c.Name) return true;
  }
  return false;
 }
}
%&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Interface Code&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
public class GeneratedGui : DotNetScriptGui
{
 public GeneratedGui(ZeusContext context) : base(context) {}
 
 private string DatabaseName;
 private string TableName;
 private string PrimaryKey = string.Empty;
 private ArrayList columns;
 private ITable table;

 //-----------------------------------------
 // The User Interface Entry Point
 //-----------------------------------------
 public override void Setup()
 {

  ui.Width  = 500;
  ui.Height = 350;
  
  // Setup Database selection combobox.
  GuiLabel lblDatabases = ui.AddLabel("lblDatabases", "Select a database:", "Select a database in the dropdown below.");
  GuiComboBox cmbDatabases = ui.AddComboBox("databaseName", "Select a database.");
  
  // Setup Tables selection multi-select listbox.
  GuiLabel lblTables = ui.AddLabel("lblTables", "Select table:", "Select table from the combobox below.");
  GuiComboBox cmbTables = ui.AddComboBox("tableName", "Select a table.");
  
  // setup columns list box
  GuiLabel lblColumns = ui.AddLabel("lblColumns", "Select columns:", "Select columns from the listbox below.");
  GuiListBox lstColumns = ui.AddListBox("lstColumns", "Select columns.");
  
  lstColumns.Height = 130;
  
  // bind data to the controls
  cmbDatabases.BindData(MyMeta.Databases);
  cmbDatabases.SelectedValue = MyMeta.DefaultDatabase.Name;
  cmbTables.BindData( MyMeta.Databases[cmbDatabases.SelectedValue].Tables );
  
  // Attach the onchange event to the cmbDatabases control.
  cmbDatabases.AttachEvent("onchange", "cmbDatabases_onchange");
  cmbTables.AttachEvent("onchange", "cmbTables_onchange");
  
  ui.ShowGui = true;
 }
 
 public void cmbDatabases_onchange(GuiComboBox control)
 {
  GuiComboBox cmbDatabases = ui["databaseName"] as GuiComboBox;
  GuiComboBox cmbTables = ui["tableName"] as GuiComboBox;
  cmbTables.BindData( MyMeta.Databases[cmbDatabases.SelectedValue].Tables );
  GuiListBox lstColumns = ui["lstColumns"] as GuiListBox;
  lstColumns.Clear();
 }
 
 public void cmbTables_onchange(GuiComboBox control)
 {
  try 
  {
   GuiComboBox cmbDatabases = ui["databaseName"] as GuiComboBox;
   GuiComboBox cmbTables = ui["tableName"] as GuiComboBox;
   GuiListBox lstColumns = ui["lstColumns"] as GuiListBox;
   lstColumns.BindData( MyMeta.Databases[cmbDatabases.SelectedValue].Tables[cmbTables.SelectedValue].Columns );
  }
  catch (Exception ex)
  {
  }
 }
}&lt;/pre&gt;
&lt;p&gt;To loop through a collection (e.g. ArrayList).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Template Code&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&amp;lt;%
public class GeneratedTemplate : DotNetScriptTemplate
{
 public GeneratedTemplate(ZeusContext context) : base(context) {}

 //---------------------------------------------------
 // Render() is where you want to write your logic    
 //---------------------------------------------------
 public override void Render()
 {
  int i;
  ArrayList items = new ArrayList();
  items.Add("Array Item 1");
  items.Add("Array Item 2");
  items.Add("Array Item 3");
  items.Add("Array Item 4");
  items.Add("Array Item 5");
  
  for(i = 0; i &amp;lt; items.Count; i++)
  {
  %&amp;gt;
    &amp;lt;p&amp;gt;&amp;lt;%= items[i].ToString() %&amp;gt;&amp;lt;/p&amp;gt;
  &amp;lt;%
  }
 }

}
%&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Interface Code&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;public class GeneratedGui : DotNetScriptGui
{
 public GeneratedGui(ZeusContext context) : base(context) {}

 //-----------------------------------------
 // The User Interface Entry Point
 //-----------------------------------------
 public override void Setup()
 {
  // ** UNCOMMENT CODE BELOW TO SEE UI **

  //ui.Width  = 100;
  //ui.Height = 100;
  //GuiLabel lblDemo = ui.AddLabel("lblDemo", "Demo", "Demo Tooltip");
  //ui.ShowGui = true;
 }

}&lt;/pre&gt;
&lt;p&gt;MyGeneration comes with a template library built in, so chances are, someone may have already done a template that does what you want. You can post your own &lt;a href="http://www.mygenerationsoftware.com/templatelibrary/"&gt;templates online&lt;/a&gt; as well (MyGeneration can download templates from this site, so you don't need to actually go to the site to get them).&lt;/p&gt;
&lt;p&gt;It is also on SourceForge: &lt;a href="http://sourceforge.net/projects/mygeneration/"&gt;http://sourceforge.net/projects/mygeneration/&lt;/a&gt;, so you can download the source code for it and make changes or add features.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-55552112023837045?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=byYYyM8N_Dg:OuBgRnQBmsw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=byYYyM8N_Dg:OuBgRnQBmsw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=byYYyM8N_Dg:OuBgRnQBmsw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/byYYyM8N_Dg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/55552112023837045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=55552112023837045" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/55552112023837045" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/55552112023837045" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/byYYyM8N_Dg/code-generation-with-mygeneration.html" title="Code Generation with MyGeneration" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/04/code-generation-with-mygeneration.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-8873966842229033850</id><published>2009-04-10T19:28:00.003+01:00</published><updated>2009-04-10T19:33:35.505+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gimp" /><category scheme="http://www.blogger.com/atom/ns#" term="web 2.0" /><category scheme="http://www.blogger.com/atom/ns#" term="xcf" /><title type="text">GIMP Button Templates - Web 2.0 Style</title><content type="html">&lt;p&gt;Created some &lt;a href="http://www.texotela.co.uk/gimp/"&gt;GIMP images&lt;/a&gt; that can be used as templates for creating buttons. Available in 64x64 and 256x64 sizes. Text can be altered and the background style changed (by altering visibility).&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.texotela.co.uk/gimp/64x64Button.gif" width="64" height="64" /&gt; &lt;img src="http://www.texotela.co.uk/gimp/256x64Button.gif" width="256" height="64" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-8873966842229033850?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=1K91t_5oENQ:TnZiPJn-Jjc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=1K91t_5oENQ:TnZiPJn-Jjc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=1K91t_5oENQ:TnZiPJn-Jjc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/1K91t_5oENQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/8873966842229033850/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=8873966842229033850" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/8873966842229033850" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/8873966842229033850" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/1K91t_5oENQ/gimp-button-templates-web-20-style.html" title="GIMP Button Templates - Web 2.0 Style" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/04/gimp-button-templates-web-20-style.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-5246229125395174057</id><published>2009-04-05T16:39:00.006+01:00</published><updated>2009-04-05T16:52:27.830+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="vector" /><category scheme="http://www.blogger.com/atom/ns#" term="svg" /><category scheme="http://www.blogger.com/atom/ns#" term="raphaël" /><category scheme="http://www.blogger.com/atom/ns#" term="vml" /><title type="text">Raphaël - a JavaScript library for creating vector images</title><content type="html">&lt;p&gt;&lt;a href="http://raphaeljs.com/"&gt;Raphaël&lt;/a&gt; enables you to create geometric shapes / vector images in your web page without needing to know the syntax of &lt;a href="http://msdn.microsoft.com/en-us/library/bb250524(VS.85).aspx"&gt;Vector Markup Language&lt;/a&gt; (VML) or &lt;a href="http://www.w3.org/Graphics/SVG/"&gt;Scalable Vector Graphics&lt;/a&gt; (SVG). You can &lt;a href="http://twitter.com/RaphaelJS"&gt;follow Raphaël&lt;/a&gt; on Twitter.&lt;/p&gt;
&lt;p&gt;Sample code (example from website) shows how easy it is to work with.&lt;/p&gt;
&lt;pre&gt;// Creates canvas 320 × 200 at 10, 50
var paper = Raphael(10, 50, 320, 200);
// Creates circle at x = 50, y = 40, with radius 10
var circle = paper.circle(50, 40, 10);
// Sets the fill attribute of the circle to red (#f00)
circle.attr("fill", "#f00");
// Sets the stroke attribute of the circle to white (#fff)
circle.attr("stroke", "#fff");&lt;/pre&gt;
&lt;p&gt;Animation of the shapes created can also be done with it (e.g. circles into squares).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-5246229125395174057?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=jm9m84rAKQY:5vCXLtHJfIE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=jm9m84rAKQY:5vCXLtHJfIE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=jm9m84rAKQY:5vCXLtHJfIE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/jm9m84rAKQY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/5246229125395174057/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=5246229125395174057" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/5246229125395174057" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/5246229125395174057" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/jm9m84rAKQY/raphael-javascript-library-for-creating.html" title="Raphaël - a JavaScript library for creating vector images" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/04/raphael-javascript-library-for-creating.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-7079873550186458473</id><published>2009-03-11T17:40:00.001Z</published><updated>2009-03-11T17:40:00.616Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="tabs" /><title type="text">Pure Accessible JavaScript Tabs</title><content type="html">&lt;p&gt;Found some code I did a while ago (pre jQuery) of a simple tabbed navigation implementation using JavaScript and basic CSS. Posting if anyone is interested.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&amp;lt;ul id="tabnav"&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#tab1"&amp;gt;Tab 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#tab2"&amp;gt;Tab 2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#tab3"&amp;gt;Tab 3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;div id="tabs"&amp;gt;
 &amp;lt;div id="tab1"&amp;gt;&amp;lt;a name="tab1"&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;h1&amp;gt;Tab 1&amp;lt;/h1&amp;gt;
  This is the contents of Tab 1
 &amp;lt;/div&amp;gt;
 &amp;lt;div id="tab2"&amp;gt;&amp;lt;a name="tab2"&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;h1&amp;gt;Tab 2&amp;lt;/h1&amp;gt;
  This is the contents of Tab 2
 &amp;lt;/div&amp;gt;
 &amp;lt;div id="tab3"&amp;gt;&amp;lt;a name="tab3"&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;h1&amp;gt;Tab 3&amp;lt;/h1&amp;gt;
  This is the contents of Tab 3
 &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;#tabnav {
 width: 100%;
 overflow: hidden;
 list-style-type: none;
 margin: 0;
 padding: 0;
}
#tabnav li {
 float: left;
 padding: 6px;
 margin: 0;
}
#tabnav li.activetab {
 font-weight: bold;
}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt; (hopefully the inline comments should explain how it works). Add in &lt;code&gt;script&lt;/code&gt; tag after HTML&lt;/p&gt;
&lt;pre&gt;// setup tabs, default is 'tab2'
setupTabs("tab2");
 
function setupTabs(tabDefault) {
 if (document.getElementById) {
  // get tab navigator
  var tabnav = document.getElementById('tabnav');
  if(tabnav) {
   // get list items in tab navigator
   var tablist = tabnav.getElementsByTagName('li');
   // loop through list items
   for (i=0;i&amp;lt;tablist.length;i++) {
    // get tab links (i.e. anchor tags)
    var tablinks = tablist[i].getElementsByTagName('a');
    // loop through tab links
    for (j=0;j&amp;lt;tablinks.length;j++) {
     // get hash for current tablink (i.e. the #tabname portion)
     var hash = tablinks[j].hash;
     // set onclick attribute to toggle the tabs (does not work in IE)
     tablinks[j].setAttribute("onclick","toggleTabs('"+hash.substring(1)+"'); return false;");
     // detect IE (other browsers don't support attachEvent)
     if (tablinks[j].attachEvent) {
      // set onclick to toggle tabs
      tablinks[j].onclick = Function("toggleTabs('"+hash.substring(1)+"'); return false;");
     }
     // if has is default tab
     if (hash == ("#" + tabDefault)) {
      // set parent nodes css class to 'activetab' (i.e. 'li' tag) and show tab
      tablinks[j].parentNode.className = "activetab";
      showTab(tabDefault);
     } else {
      // set parent nodes css class to empty (i.e. 'li' tag) and hide tab
      tablinks[j].parentNode.className = ""
      hideTab(hash.substring(1));
     }
    }
   }
  }
 }
}
function showTab(tabId) {
 if (document.getElementById) {
  // get current tab
  var currentTab = document.getElementById(tabId);
  // show tab by setting display style to blank string
  currentTab.style.display = "";
  // get anchor tags in current tab
  var currentTabAnchors = currentTab.getElementsByTagName('a'); 
  // loop through anchor tags
  for (k=0;k&amp;lt;currentTabAnchors.length;k++) {
   // if anchor tag has same name as current tag id, hide it
   if(currentTabAnchors[k].name==tabId) {
    currentTabAnchors[k].style.display = "none";
   }
  }
 }
}
function hideTab(tabId) {
 if (document.getElementById) {
  document.getElementById(tabId).style.display = "none";
 }
}
function toggleTabs(tabId) {
 if (document.getElementById) {
  // an array of all the sections
  var sectionnames = new Array();
  // get tab navigator
  var tabnav = document.getElementById('tabnav');
  // get list items in tab navigator
  var tablist = tabnav.getElementsByTagName('li');
  // loop through list items
  for (i=0;i&amp;lt;tablist.length;i++) {
   // get tab links (i.e. anchor tags)
   var tablinks = tablist[i].getElementsByTagName('a');
   // loop through tab links
   for (j=0;j&amp;lt;tablinks.length;j++) {
    // get hash for current tablink (i.e. the #tabname portion)
    var hash = tablinks[j].hash;
    // add has to sections array
    sectionnames.push(hash.substr(1));
    // if hash is selected tab
    if (hash == ("#" + tabId)) {
     // set parent nodes css class to 'activetab' (i.e. 'li' tag)
     tablinks[j].parentNode.className = "activetab";
    } else {
     // set parent nodes css class to empty (i.e. 'li' tag)
     tablinks[j].parentNode.className = ""
    }
   }
  }
  // get tabs
  var tabs = document.getElementById('tabs');
  // get tab sections
  var sections = tabs.childNodes;
  // loop through sections
  for (i=0;i&amp;lt;sections.length;i++) {
   // if node is not a div, then continue to next loop item
   if (sections[i].nodeName!='DIV') continue;
   // if current section id matches tabId show it
   if(sections[i].id==tabId) {
    showTab(sections[i].id);
   } else {
    // get child anchor nodes
    var atags = sections[i].getElementsByTagName("a");
    // if anchor nodes have been found
    if (atags.length &amp;gt; 0) {
     // loop through the section names
     for (j=0;j&amp;lt;sectionnames.length;j++) {
      // if first anchor tags name matches the current section id, hide the tab
      if(sectionnames[j] == atags[0].getAttribute("name")) {
       hideTab(sections[i].id);
      }
     }
    }
    
   }
  }
 }
 return false;
}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-7079873550186458473?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=VOXVcuhCgBg:TDr59Okauls:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=VOXVcuhCgBg:TDr59Okauls:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=VOXVcuhCgBg:TDr59Okauls:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/VOXVcuhCgBg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/7079873550186458473/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=7079873550186458473" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/7079873550186458473" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/7079873550186458473" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/VOXVcuhCgBg/pure-accessible-javascript-tabs.html" title="Pure Accessible JavaScript Tabs" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/03/pure-accessible-javascript-tabs.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-2613219268892785864</id><published>2009-01-22T17:57:00.003Z</published><updated>2009-01-22T19:09:33.486Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="shrink image" /><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title type="text">Shrink Image (JavaScript)</title><content type="html">&lt;p&gt;This function shrinks an image, so its dimensions are no bigger than the maximum dimensions you define.&lt;/p&gt;
&lt;pre&gt;// get new dimensions so it fits within the maximum
// o = original dimensions / image, m = maximum dimensions
function shrink(o, m)
{
    // r = resized
    var r = {width: o.width, height: o.height};
    // if an image, rather than an object, resize it
    if(o.nodeName &amp;&amp; o.nodeName.toLowerCase() == "img") r = o;
    if(r.width &gt; m.width)
    {
        r.height = r.height * (m.width / r.width);
        r.width = m.width;
        if(r.height &gt; m.height)
        {
            r.width = r.width * (m.height / r.height);
            r.height = m.height;
        }
    }
    else if(r.height &gt; m.height)
    {
        r.width = r.width * (m.height / r.height);
        r.height = m.height;
    }
    return r;
}&lt;/pre&gt;
&lt;p&gt;To use, simply supply the image and the dimensions to constrain it to:&lt;/p&gt;
&lt;pre&gt;var image = document.getElementById("image");
var max = {width: 1024, height: 768};
shrink(image, max);&lt;/pre&gt;
&lt;p&gt;It also works with an object instead of an image, for non-image related dimension calculation.&lt;/p&gt;
&lt;pre&gt;var original = {width: 1200, height: 960};
var max = {width: 1024, height: 768};
var shrunk = shrink(original, max);&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-2613219268892785864?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=26688MgvKGo:4-Tkni-JoB4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=26688MgvKGo:4-Tkni-JoB4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=26688MgvKGo:4-Tkni-JoB4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/26688MgvKGo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/2613219268892785864/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=2613219268892785864" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/2613219268892785864" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/2613219268892785864" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/26688MgvKGo/shrink-image-javascript.html" title="Shrink Image (JavaScript)" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/01/shrink-image-javascript.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-1088746991865353684</id><published>2009-01-22T12:37:00.005Z</published><updated>2009-01-22T12:51:07.766Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="bgiframe" /><category scheme="http://www.blogger.com/atom/ns#" term="jQueryUI" /><category scheme="http://www.blogger.com/atom/ns#" term="dialog" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">Changing jQuery UI's Dialog widget's default options</title><content type="html">&lt;p&gt;While &lt;a href="http://ui.jquery.com/demos/dialog"&gt;jQuery UI's Dialog&lt;/a&gt; widget has good default options, there may be circumstances when you want to change them. For instance, you may want all dialog windows to be modal windows, with a semi-transparent background and the &lt;a href="http://plugins.jquery.com/project/bgiframe"&gt;bgiframe plugin&lt;/a&gt; applied. Place this code at the end of the page, or within &lt;code&gt;$(document).ready&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;$.extend($.ui.dialog.defaults, {
 overlay : { background: "#000", opacity: 0.8},
 modal: true,
 bgiframe: true
});&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-1088746991865353684?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=ZGb8s0JqQUo:k_jLtcmP4b8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=ZGb8s0JqQUo:k_jLtcmP4b8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=ZGb8s0JqQUo:k_jLtcmP4b8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/ZGb8s0JqQUo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/1088746991865353684/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=1088746991865353684" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/1088746991865353684" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/1088746991865353684" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/ZGb8s0JqQUo/changing-jquery-uis-dialog-widget.html" title="Changing jQuery UI's Dialog widget's default options" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/01/changing-jquery-uis-dialog-widget.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-8040922418172022902</id><published>2009-01-10T21:06:00.001Z</published><updated>2009-01-10T21:06:51.417Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="cms" /><category scheme="http://www.blogger.com/atom/ns#" term="pixie" /><category scheme="http://www.blogger.com/atom/ns#" term="content management" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="web standards" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title type="text">Pixie – small, simple, website maker</title><content type="html">&lt;p&gt;Recently, I have been looking at &lt;a href="http://getpixie.co.uk"&gt;Pixie&lt;/a&gt;, to see how it works as a simple system for managing websites. It is open source (GPL v3), written to web standards (XHTML Strict, &lt;a href="http://microformats.org/"&gt;Microformats&lt;/a&gt;) and powered by jQuery and PHP/MySQL.&lt;/p&gt;  &lt;p&gt;It consists of several page types – dynamic (blog, news), static or module (e.g. contact form, events, links etc). Plugins add additional functionality to modules (like allowing comments on blog posts). Blocks allow you to add content alongside your content (e.g. display RSS content from BBC News).&lt;/p&gt;  &lt;p&gt;Easy enough to extend, with detailed guides for &lt;a href="http://www.getpixie.co.uk/support/article/module-development/"&gt;module development&lt;/a&gt; (so you can create additional ones to those that are bundled with Pixie) &lt;a href="http://www.getpixie.co.uk/support/article/block-development/"&gt;block development&lt;/a&gt; and &lt;a href="http://www.getpixie.co.uk/support/article/theme-development/"&gt;theme development&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;A few additional blocks I have created: &lt;a href="http://pastebin.ws/8nw1gj"&gt;News&lt;/a&gt; (latest content from a page named ‘news’) and &lt;a href="http://pastebin.ws/e01rf6"&gt;Google Maps&lt;/a&gt;. These can then be shown on any page (so you can see news on your home page for example).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-8040922418172022902?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=OBHSiRHYyyQ:_m8lejnP9vc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=OBHSiRHYyyQ:_m8lejnP9vc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=OBHSiRHYyyQ:_m8lejnP9vc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/OBHSiRHYyyQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/8040922418172022902/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=8040922418172022902" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/8040922418172022902" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/8040922418172022902" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/OBHSiRHYyyQ/pixie-small-simple-website-maker.html" title="Pixie – small, simple, website maker" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/01/pixie-small-simple-website-maker.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-4227350840827718267</id><published>2009-01-07T17:57:00.001Z</published><updated>2009-01-07T17:57:00.702Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="google gears desktop api" /><category scheme="http://www.blogger.com/atom/ns#" term="google gears" /><title type="text">Google Gears Desktop API - Working with files</title><content type="html">&lt;p&gt;The &lt;a href="http://code.google.com/apis/gears/api_desktop.html"&gt;Google Gears Desktop API&lt;/a&gt; allows you to create shortcuts on your desktop (only to a page on the same site, not to another) and work with files. This example shows you how you can filter the file types when choosing files. &lt;a href="http://code.google.com/apis/gears/tools.html#gears_init"&gt;gears_init.js&lt;/a&gt; required.&lt;/p&gt;
&lt;pre&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
 &amp;lt;meta http-equiv="Content-Type" content="text/html;charset=utf-8"&amp;gt;
 &amp;lt;title&amp;gt;Google Desktop API - Working with files&amp;lt;/title&amp;gt;
&amp;lt;script type="text/javascript" src="gears_init.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type="text/javascript"&amp;gt;
var fileformats = {

 // word document
 word: 'application/msword',
 // word 2007 document
 wpml: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',

 // excel spreadsheet
 excel: 'application/vnd.ms-excel',
 // excel 2007 spreadsheet
 ssml: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',

 // powerpoint presentation
 powerpoint: 'application/vnd.ms-powerpoint',
 // powerpoint 2007 presentation
 pml: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
 
 // jpeg
 jpeg: 'image/jpeg',
 
 // png
 png: 'image/png',
 
 // gif
 gif: 'image/gif',
 
 // tiff
 tiff: 'image/tiff'
}


// http://code.google.com/apis/gears/api_desktop.html
var desktop = google.gears.factory.create('beta.desktop');

function officeFiles()
{
 desktop.openFiles(openFilesCallback, {singleFile: false,
  filter: [fileformats.word, fileformats.wpml,
   fileformats.excel, fileformats.ssml,
   fileformats.powerpoint, fileformats.pml]
 });
}

function imageFiles()
{
 desktop.openFiles(openFilesCallback, {singleFile: false,
  filter: [fileformats.jpeg, fileformats.png,
   fileformats.gif, fileformats.tiff]
 });
}


function openFilesCallback(files)
{
 if(files.length == 0)
 {
  alert("No files selected");
 }
 else
 {
  var selectedFiles = [];
  for(var i = 0; i &amp;lt; files.length; i++)
  {
   selectedFiles.push(files[i].name + " (" + files[i].blob.length + " bytes)");
  }
  alert("Selected files: " + selectedFiles);
 }
}
&amp;lt;/script&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
  &amp;lt;p&amp;gt;&amp;lt;a href="http://code.google.com/apis/gears/api_desktop.html"&amp;gt;Google Gears Desktop API&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
  &amp;lt;form action="" method="post"&amp;gt;
   &amp;lt;input value="Select Office Files" type="button" id="selectofficefiles"&amp;gt;
   &amp;lt;input value="Select Image Files" type="button" id="selectimagefiles"&amp;gt;
  &amp;lt;/form&amp;gt;
&amp;lt;script type="text/javascript"&amp;gt;
var selectofficefiles = document.getElementById("selectofficefiles");
selectofficefiles.onclick = function()
{
 officeFiles();
 return false;
}

var selectimagefiles = document.getElementById("selectimagefiles");
selectimagefiles.onclick = function()
{
 imageFiles();
 return false;
}
&amp;lt;/script&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;p&gt;The benefit of using Google Gears is that you can get the file size before uploading the file, so a check can be done beforehand to see if the file is to big (e.g. &lt;code&gt;if(files[i].blob.length &amp;gt; 1048576) alert(files[i].name  + " too big (&amp;gt; 1MB)");&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-4227350840827718267?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=NbExi0-aQVw:-hlcsXjbReA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=NbExi0-aQVw:-hlcsXjbReA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=NbExi0-aQVw:-hlcsXjbReA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/NbExi0-aQVw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/4227350840827718267/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=4227350840827718267" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4227350840827718267" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/4227350840827718267" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/NbExi0-aQVw/google-gears-desktop-api-working-with.html" title="Google Gears Desktop API - Working with files" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/01/google-gears-desktop-api-working-with.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5613510.post-9185570936527099690</id><published>2009-01-02T14:06:00.004Z</published><updated>2009-01-02T14:46:17.955Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="graph paper" /><title type="text">Free Graph Paper (for printing)</title><content type="html">&lt;p&gt;There are a few sites that offer paper (graph, maths, speciality) you can print off (as PDF) for free. Usually with a credit to the site at the bottom of the page.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://konigi.com/tools/graph-paper"&gt;Konigi&lt;/a&gt; offers various storyboard and wireframe PDF's available in 8.5" x 11" (no A4 available). So they are useful when creating a site design mockup or a story.&lt;p&gt;&lt;p&gt;&lt;a href="http://www.printfreegraphpaper.com/"&gt;Print Free Graph Paper&lt;/a&gt; offers Cartesian, Engineering, Polar, Isometric, Logarithmic, Hexagonal, Probability and Smith Chart templates available in Letter and A4 sizes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mathsphere.co.uk/resources/MathSphereFreeGraphPaper.htm"&gt;MathSphere&lt;/a&gt; also has paper types the previous site doesn't.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://incompetech.com/graphpaper/"&gt;Incompetech.com&lt;/a&gt; has various paper generators for different page sizes (you can create a custom size as well), not just graph paper, but speciality and writing as well (Chinese, Japanese, Fretboard, Cornell etc). You can even define what colour the lines should be.&lt;/p&gt;
&lt;p&gt;Useful when you don't need a full pad, the stationer doesn't sell the paper you want, or the shops are closed and you need paper before they are open again (you have a deadline or late submission).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5613510-9185570936527099690?l=webdevel.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=lbc53vgmLmc:4eWWO4GTSkY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WebDeveloperBlog?a=lbc53vgmLmc:4eWWO4GTSkY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WebDeveloperBlog?i=lbc53vgmLmc:4eWWO4GTSkY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WebDeveloperBlog/~4/lbc53vgmLmc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webdevel.blogspot.com/feeds/9185570936527099690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5613510&amp;postID=9185570936527099690" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/9185570936527099690" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5613510/posts/default/9185570936527099690" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebDeveloperBlog/~3/lbc53vgmLmc/free-graph-paper-for-printing.html" title="Free Graph Paper (for printing)" /><author><name>Sam</name><uri>http://www.blogger.com/profile/02893826272363336564</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10156685600729337508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://webdevel.blogspot.com/2009/01/free-graph-paper-for-printing.html</feedburner:origLink></entry></feed>
