<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Paul Richards</title>
	<atom:link href="http://www.paulsrichards.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulsrichards.com</link>
	<description>Web Developer</description>
	<pubDate>Tue, 28 Oct 2008 19:15:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>jQuery plugin: popmenu</title>
		<link>http://www.paulsrichards.com/2008/10/01/jquery-plugin-popmenu/</link>
		<comments>http://www.paulsrichards.com/2008/10/01/jquery-plugin-popmenu/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 09:46:26 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[jquery]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=155</guid>
		<description><![CDATA[popmenu is a jQuery plugin that allows you to create simple &#8216;pop-up&#8217; menu&#8217;s like which appear on web sites like play.com. It is currently being used at ikonsports.com.
It has similar functionality jQuery&#8217;s hover(over, out) but with a few more options specifically geared towards pop up menus. Most importantly it will continue to match an element [...]]]></description>
			<content:encoded><![CDATA[<p><strong>popmenu </strong>is a jQuery plugin that allows you to create simple &#8216;pop-up&#8217; menu&#8217;s like which appear on web sites like play.com. It is currently being used at <a title="Link to Ikonsports.com" href="http://www.ikonsports.com" target="_blank">ikonsports.com</a>.</p>
<p>It has similar functionality jQuery&#8217;s hover(over, out) but with a few more options specifically geared towards pop up menus. Most importantly it will continue to match an element that you want to appear when you move off the mouse original element and on to any new element, where ever its located in the DOM.</p>
<h2>Parameters</h2>
<p><strong>target (DOMElement):</strong> This is the element that is to &#8216;appear&#8217; when the hover event is called.<br />
<strong>addStyle (string): </strong>Optional. Adds a class to the matched element on hover (of matched element and target). Removed on hover off.<br />
<strong>time (int):</strong> Optional. Time in milliseconds after a hover off when <strong>target</strong> element is invisible.<br />
<strong>speed (String|Number</strong><strong>): </strong>Optional. A string representing one of the three predefined speeds (&#8221;slow&#8221;, &#8220;normal&#8221;, or &#8220;fast&#8221;) or the number of milliseconds to run                            the animation displaying the <strong>target</strong> (e.g. 1000).<br />
<strong>autooff (boolean): </strong>Optional. Default is true. If turned on will automatically hide any <strong>target</strong> elements if visible when a different popmenu is triggered. For example if you pop up menu&#8217;s would overlap if they were both visable at the same time it will hide it first.</p>
<h2>Example</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mybutton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">popupmenu</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
				target<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;#mybutton_menu&quot;</span><span style="color: #339933;">,</span> 
				time<span style="color: #339933;">:</span> <span style="color: #CC0000;">300</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h2>Download</h2>
<p><a title="Download" href="http://www.paulsrichards.com/files/downloads/jquery.packed.popmenu.1.0.js">Production (944 bytes, packed) v1.0</a><br />
<a title="Download" href="http://www.paulsrichards.com/files/downloads/jquery.popmenu.1.0.js">Development (1.75 Kb) v1.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/10/01/jquery-plugin-popmenu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jabroo Version 3 now online</title>
		<link>http://www.paulsrichards.com/2008/08/10/jabroo-version-3-now-online/</link>
		<comments>http://www.paulsrichards.com/2008/08/10/jabroo-version-3-now-online/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 21:44:59 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[jabroo]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=132</guid>
		<description><![CDATA[The latest version of Jabroo is available for testing out online. Its available at new.jabroo.com or following the link at the top of the Jabroo home page.
This version has been designed to make finding that font as easy as possible. Like the previous Jabroo the fonts are separated into categories and under their alphabet classification. [...]]]></description>
			<content:encoded><![CDATA[<p>The latest version of Jabroo is available for testing out online. Its available at <a title="The new Jabroo" href="http://new.jabroo.com">new.jabroo.com</a> or following the link at the top of the Jabroo home page.</p>
<p>This version has been designed to make finding that font as easy as possible. Like the previous Jabroo the fonts are separated into categories and under their alphabet classification. It uses ajax to load all the fonts in one load quickly and makes flicking through each page a easy process. The old version required you to be signed up to automatically change the &#8216;preview text&#8217; on every page, now users can change it without registration. The registration process has been completely changed and now requires only the most basic information, the user name and email activation process have been scraped. Now users can sign in with only a email address and password. Selecting the number of fonts to appear on each page is now also in the past. It automatically calculates the optimum number of fonts to be displayed for your particular screen type without the need for scrolling.</p>
<h3>The technology</h3>
<p>The application is built on the Zend Framework 1.5 technology. This implements a MVC architectural pattern and is fully PHP5 OOP. All the DHTML is built around the JavaScript framework jQuery. The main problem with a site like this is how it must be able to load a large amounts of images quickly. To improve perform all the images are cached server side and are pre loaded on the user side. This is done by loading the next two pages of image from the current one. This results in the user even flicking though at a quick speed doesn&#8217;t have to wait for images to load. Like many ajax enabled web sites use of the URL&#8217;s and browser &#8216;back&#8217; and &#8216;forward&#8217; buttons become useless because there is no physical page change. Using jQuery this site records your different Ajax clicks and tells your browser where you going to keep full use of browsers controls. With different Ajax screen that site gives a unique reference after the hash on the URL to ensure if you bookmark it you can always find yourself back on the correct page.</p>
<h3>Known Issues</h3>
<p>Microsoft IE 6 display issues</p>
<ul>
<li>Main content set to 80% width to make it fit, doesn&#8217;t display correctly on 1024 screens.</li>
<li>Category pop up menu misaligned.</li>
<li>Header and footer bar not the correct or the same size.</li>
</ul>
<p>Microsoft IE greater then 6</p>
<ul>
<li>Log in form CSS misaligned with registration box.</li>
<li>Browser not caching the images properly.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/08/10/jabroo-version-3-now-online/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Persistent sessions with PHP</title>
		<link>http://www.paulsrichards.com/2008/07/29/persistent-sessions-with-php/</link>
		<comments>http://www.paulsrichards.com/2008/07/29/persistent-sessions-with-php/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 20:59:14 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=107</guid>
		<description><![CDATA[Persistent sessions is a set of mechanisms created in php that allow authentication to persist across multiple browser sessions (ie closing down the browser). Any session variables you set in php are destroyed and cant be used in further sessions. This means annoyingly that your users must then sign into you site again. Their are [...]]]></description>
			<content:encoded><![CDATA[<p>Persistent sessions is a set of mechanisms created in php that allow authentication to persist across multiple browser sessions (ie closing down the browser). Any session variables you set in php are destroyed and cant be used in further sessions. This means annoyingly that your users must then sign into you site again. Their are some security issues you must be aware of when implementing a system like this.</p>
<p>Persistent sessions weakens the security of your web site, issues like it being accessed on a public computer (you could add a tick box to be remembered) or if you hold security sensitive information. Its a trade off between usability and security. You could even implement a two step security system where by for example you may trust the user to carry out certain procedures from a persistent session such as adding a item to a wish list but require full password validation for procedures such as purchasing a item from a stored credit card number or changing passwords.</p>
<p>When thinking about how to create a system is seems tempting enough just to store the <em>username </em>and <em>password </em>in the cookie and read them off when the user comes back to the web site and automatically log them in. This is bad very idea. A potential hacker could easily gain access to this information and replay it back to your server and gain unauthorised access.</p>
<p>The cookie is the only way standard way to persist data across multiple sessions. So we must store information in this cookie that will provide us with the information in the future to re authenticate the user. Clearly is a security risk so the best we can do is store information that will only be useful for a certain period of time. It would be inadvisable to provide any with permanent access this way.</p>
<p>In the cookie we are going to store 2 pieces of information, a <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function" target="_blank">hash</a> code representing the <em>username</em>, we&#8217;ll call this a identifier and a key (or token) that is valid only for certain period of time and is regenerated after one use. To create a hash of the <em>username</em> we could do something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000033;">$salt</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;pAulR2&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000033;">$identifier</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span> <span style="color: #000033;">$salt</span> <span style="color: #339933;">.</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$username</span> <span style="color: #339933;">.</span> <span style="color: #000033;">$salt</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>This should be stored in your database alongside your other user details. Remember to always to use some form of &#8216;<em>salt</em>&#8216; when creating hash&#8217;s. This is just a string that is known only to your application and kept secret. This insures that people cant use rainbow tables or take a few educated guesses to reverse the hash.</p>
<p>Next we must create a key (or token), this will be like our temporary password, valid for a certain period of time. We just need a long a string that isn&#8217;t predictable. One could be generated like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000033;">$key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">uniqid</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Again we would need to store this in the database and associate it to the correct user along with another field recording the time span for which it is valid.</p>
<h2>Outline Example</h2>
<p>Ok, you&#8217;ve authenticated your users username and password and they&#8217;ve indicated that they wish to remain logged in for one week.</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #666666; font-style: italic;">// This examples assumes you have already connected to a MySQL database</span>
<span style="color: #000033;">$salt</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;pAulR2&quot;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">/*
  You must create a identifier for every user and store it in the database prior implementing this.
  $identifier = md5( $salt . md5($username . $salt ) );
*/</span>
<span style="color: #666666; font-style: italic;">// retrieve the $identifier from the database, I'm going to assume its in a variable called</span>
<span style="color: #666666; font-style: italic;">// $user['identifier']</span>
<span style="color: #000033;">$identifier</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$user</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'identifier'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// create a random key</span>
<span style="color: #000033;">$key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">uniqid</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// calculate the time in 7 days ahead for expiry date</span>
<span style="color: #000033;">$timeout</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">60</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">24</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">7</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Set the cookie with information</span>
<span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'authentication'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;$identifier:$key&quot;</span><span style="color: #339933;">,</span> <span style="color: #000033;">$timeout</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// now update the database with the new information</span>
<span style="color: #000033;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE `user` SET key = '$key', timeout = '$timeout'
WHERE username = '$username'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000033;">$result</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Invalid query: '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Right that takes care of setting the cookie but know we must authorise it when its been detected when the user comes back to the site. On the users first visit you need to implement code like the following:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000033;">$salt</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;pAulR2&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'authentication'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// cookie is set, lets see if its vailed and log someone in</span>
    <span style="color: #000033;">$clean</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000033;">$mysql</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000033;">$now</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$identifier</span><span style="color: #339933;">,</span> <span style="color: #000033;">$token</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">':'</span><span style="color: #339933;">,</span> <span style="color: #000033;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'authentication'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">ctype_alnum</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$identifier</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">ctype_alnum</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$token</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000033;">$clean</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'identifier'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$identifier</span><span style="color: #339933;">;</span>
	<span style="color: #000033;">$clean</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'key'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$key</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000033;">$mysql</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'identifier'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$clean</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'identifier'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000033;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM user
                                       WHERE identifier = '{$mysql['identifier']}'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000033;">$record</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_assoc</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$clean</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'key'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #000033;">$record</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'key'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// fail because the key doesn't match</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$now</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #000033;">$record</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'timeout'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// fail because the cookie has expired</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$clean</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'identifier'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$salt</span><span style="color: #339933;">.</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$record</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'userID'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #000033;">$salt</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// fail because the identifiers does not match</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">/*
                          Success everything matches, now you can process
                          your login functions. The key must be re generated
                          for the next login. But don't increase the timeout to
                          ensure that the user must login in once the time
                          period has passed.
                       */</span>
	        <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">/* failed because the information is not in the
                            correct format in the cookie */</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>And remember once you have finished with the cookie delete it!</p>
<p>Sources: <a href="http://www.amazon.co.uk/Essential-PHP-Security-Chris-Shiflett/dp/059600656X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1220180984&amp;sr=8-1" target="_blank">Essential PHP Security</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/07/29/persistent-sessions-with-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Improving table usabiltity with jQuery</title>
		<link>http://www.paulsrichards.com/2008/07/25/improving-table-usabiltity-with-jquery/</link>
		<comments>http://www.paulsrichards.com/2008/07/25/improving-table-usabiltity-with-jquery/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 21:41:32 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[jquery]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=69</guid>
		<description><![CDATA[I&#8217;ve often found reading information quickly and correctly from a large HTML table difficult. I would like to share a small piece of jQuery code I wrote to help improve the readability of large tables. It provides two functions. Highlight the row of the table on which the mouse is hovered over and highlight the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.paulsrichards.com/files/demos/table_usbility/" target="blank"><img class="alignright size-full wp-image-104" title="Demo picture" src="http://www.paulsrichards.com/wp-content/uploads/2008/07/untitled-1.gif" alt="" width="287" height="129" /></a>I&#8217;ve often found reading information quickly and correctly from a large HTML table difficult. I would like to share a small piece of jQuery code I wrote to help improve the readability of large tables. It provides two functions. Highlight the row of the table on which the mouse is hovered over and highlight the row if clicked on it. Row highlighting allows you to easily track the correct line across the screen while click highlighting enables you remember a particular spot of interest.</p>
<p>All this requires is the latest version of jQuery (version 1.2.6 included in the demo download) and to past in the code provided. You also need a bit of knowledge of HTML and CSS to implement in your own web site.</p>
<p><a title="Download" href="http://www.paulsrichards.com/files/downloads/table_usbility.zip">Download (16kb Zip)</a></p>
<h2><a title="see the demo" href="http://www.paulsrichards.com/files/demos/table_usbility/">See the Demo</a></h2>
<h2>Code</h2>

<div class="wp_syntax"><div class="code"><pre class="javascript">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// improve table usability</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;table&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;tr&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">hover</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;rowhighlight&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;rowhighlight&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Add class on single click</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;table&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;tr&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">click</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;class&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;rowhighlight_clicked rowhighlight&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;rowhighlight_clicked&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;rowhighlight_clicked&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/07/25/improving-table-usabiltity-with-jquery/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Essential Free PHP Web Development Tools</title>
		<link>http://www.paulsrichards.com/2008/07/05/essential-free-php-web-development-tools/</link>
		<comments>http://www.paulsrichards.com/2008/07/05/essential-free-php-web-development-tools/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 16:05:18 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[Web Tools]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=64</guid>
		<description><![CDATA[As a PHP web developer I&#8217;ve tried many different tools to aid my work. There are many tools out there to try and I encourage you to do so, but I have complied a list of what consider essential to make your job as easy as possible. If anyone has any useful tools/sites I haven&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>As a PHP web developer I&#8217;ve tried many different tools to aid my work. There are many tools out there to try and I encourage you to do so, but I have complied a list of what consider essential to make your job as easy as possible. If anyone has any useful tools/sites I haven&#8217;t listed let me know.</p>
<h2>PHP</h2>
<p><a title="xampp" href="http://www.apachefriends.org/en/xampp.html" target="_blank"><strong>xampp </strong></a>- A cross platform web server including PHP and MySQL along with other tools such as Perl. Easily installs on a Windows machine (though it is cross platform), I recommend the lite version and install it on USB pen for portability.</p>
<p><a title="phpMyAdmin" href="http://www.phpmyadmin.net/home_page/index.php" target="_self"><strong>phpMyAdmin</strong> </a>- A web based tool for administrating MySQL databases, makes setting them up easy. The new version even includes a query builder. This is included with xampp just go to  http://localhost/phpmyadmin.</p>
<p><strong><a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend Framework</a></strong> - A open source object oriented PHP5 framework. Contains easy to use classes to create a modern web app. Has support for many web services such as flickr and Google.</p>
<p><strong><a title="php classes" href="http://www.phpclasses.org/" target="_blank">phpclasses</a></strong> - This a web site with a massive database of PHP classes. Always look her first as its probably already been done to a high standard.</p>
<h2>Web browsers</h2>
<p><strong><a title="FireFox 3.0" href="http://www.mozilla-europe.org/en/firefox/" target="_blank">FireFox 3.0</a> </strong>- An open source web broswer that supports loads of useful plugins for web developers. Not to mention generally how much better it is then any other.</p>
<p><strong><a title="Web Developer" href="https://addons.mozilla.org/en-US/firefox/addon/60" target="_blank">Web Developer</a></strong> - One of the best FireFox plugins ever made. Contains a massive array of tools to help you develop your web site. From window resizing to editing CSS on the fly. Just try it!</p>
<p><a title="IE Tab" href="https://addons.mozilla.org/en-US/firefox/addon/1419" target="_blank"><strong>IE Tab (Windows only)</strong></a><strong> </strong>- A plugin for FireFox that allows you easily to switch your browser window to the Explorer rendering engine. As this is the most widely used browser you have to check your app works in it.</p>
<p><strong><a title="Multiple IE" href="http://tredosoft.com/Multiple_IE" target="_blank">Multiple IE (Windows XP only)</a></strong> - A great little download that gives you old Internet Explorers (6.0, 5.5, 5, 4, 3) to try your site in. If you like me and upgraded to IE7, how do you check your site in IE6, many people still use it. Pity it doesn&#8217;t work on Vista.</p>
<p><strong><a title="Download Safari" href="http://www.apple.com/safari/" target="_blank">Safari</a> </strong>- Some people use this as a web browser, I guess now its available on windows you could check your site works in it</p>
<h2>Text Editors</h2>
<p><strong><a title="Notepad ++" href="http://notepad-plus.sourceforge.net/uk/site.htm" target="_blank">notepad++</a></strong> - A free cross platform text editor with useful add-ons such as code highlighting for every language imaginable.</p>
<h2>Other web tools</h2>
<p><strong><a title="X Ray for web devlopers" href="http://" target="_blank">X Ray</a> </strong>- Just add it to your bookmarks and you ready to go, click it, it loads then you can click any element on a page and it will show you the &#8216;CSS box model&#8217;. Very useful when your having pixel problems.</p>
<p><strong><a title="Browser Shots" href="http://browsershots.org/" target="_blank">Browser Shots</a> </strong>- Check you new web site in every browser known to man on any platform in one go. Warning: it doesn&#8217;t always return everything you ask for and it can take a while.</p>
<p><strong><a title="FireFtp" href="http://fireftp.mozdev.org/" target="_blank">FireFtp</a></strong> - A FireFox plugin, a simple and realiable FTP program, can manage multiple accounts.</p>
<h2>JavaScript &amp; Ajax</h2>
<p><a title="firebug" href="http://getfirebug.com/" target="_blank"><strong>Firebug</strong></a> - A plugin for FireFox, before this you would go mad debugging your JavaScript with nothing to go on. This provides full details on all errors and detailed information on Ajax requests. I also use it to be nosey on other web sites to see how they work.</p>
<p><strong><a title="jQuery" href="http://jquery.com/" target="_blank">JQuery</a> </strong>- A fast lightweight JavaScript framework. Makes Ajax and HTML manlipation very easy for a modern 2.0 app.</p>
<p><a title="interface for jQuery" href="http://www.eyecon.ro/interface/" target="_blank"><strong>Interface for jQuery</strong></a> - An additional set of jQuery plugins that provide a mass of additioal functionality for jQuery.</p>
<p><a title="UI" href="http://ui.jquery.com/" target="_blank"><strong>UI for jQuery</strong></a> - More plugins for jQuery that provide more for jQuery. I believe that interface and UI are being merged.</p>
<p><a title="visual jquery" href="http://visualjquery.com/"><strong>Visual jQuery</strong></a> - The doucmentation for jQuery can be a little rubbish, this web site lays it out in a simple format to effectivly use it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/07/05/essential-free-php-web-development-tools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jabroo - Server problems</title>
		<link>http://www.paulsrichards.com/2008/07/05/jabroo-server-problems/</link>
		<comments>http://www.paulsrichards.com/2008/07/05/jabroo-server-problems/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 13:30:04 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[jabroo]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=86</guid>
		<description><![CDATA[Users of Jabroo.com will of experienced server problems for the last week (29th June 08 - 3rd July 08). Unfortunately the server has been down due to some technical difficulties with upgrading from a Godaddy VPS to a newer faster server. Please accept my apologies for any problems. Some has data has been lost as [...]]]></description>
			<content:encoded><![CDATA[<p>Users of Jabroo.com will of experienced server problems for the last week (29th June 08 - 3rd July 08). Unfortunately the server has been down due to some technical difficulties with upgrading from a Godaddy VPS to a newer faster server. Please accept my apologies for any problems. Some has data has been lost as my backup was a good month old.</p>
<p>The good news is that it is on a much better server and no doubt you will have noticed it is much faster and more reliable thanks to <a title="Centation Web Design" href="http://www.centation.com" target="_blank">Centation</a>. Also problems with signing in and some broken images have been solved.</p>
<p>Soon the third version of Jabroo will be available to try out. Hopefully it will be realised in the next month or so.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/07/05/jabroo-server-problems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery Table sorter</title>
		<link>http://www.paulsrichards.com/2008/06/18/jquery-table-sorter/</link>
		<comments>http://www.paulsrichards.com/2008/06/18/jquery-table-sorter/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 23:03:52 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[jquery]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=57</guid>
		<description><![CDATA[While making a e commerce application I wanted the ability to easily sort product and categories by click and drag. Basically to allow the customer to re-order the way their products and categories are displayed. No doubt that you&#8217;ve seen application that have numerous &#8220;move up&#8221; and &#8220;move down&#8221; buttons that seem to take forever [...]]]></description>
			<content:encoded><![CDATA[<p>While making a e commerce application I wanted the ability to easily sort product and categories by click and drag. Basically to allow the customer to re-order the way their products and categories are displayed. No doubt that you&#8217;ve seen application that have numerous &#8220;move up&#8221; and &#8220;move down&#8221; buttons that seem to take forever to use and from development point of view cumbersome to do. Of course the other method is to have input boxes with numbers in that can be altered, again cumbersome for both user and designer.</p>
<p>Being a massive fan of jQuery I thought there must a easy &#8216;drag and drop&#8217; solution. I regular use the <a title="Interface plugins for jQuery" href="http://interface.eyecon.ro/" target="_blank">interface plugins</a> that covers most of my needs. Though they provide a &#8217;sortable&#8217; plugin that works great for divs, it simply cannot sort tables due to the fact that certain CSS styles (like position static) cannot be applied to table rows.</p>
<p>After a long search I eventually came across a plugin solution called &#8216;Table Drag and Drop&#8217;. This simple plugin like all jQuery requires just a small amount of code to get it working.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#mytable&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">tableDnD</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>To apply to a basic table like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #339933;">&lt;</span>table id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;mytable&quot;</span> border<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>tbody<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>tr id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;product_1&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>My Product <span style="color: #cc66cc;">1</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>£<span style="color: #cc66cc;">10.00</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>Active<span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>tr<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>tr id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;product_2&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>My Product <span style="color: #cc66cc;">2</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>£<span style="color: #cc66cc;">2.99</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>Not active<span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>tr<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>tr id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;product_3&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>My Product <span style="color: #cc66cc;">3</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>£<span style="color: #cc66cc;">23.49</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>Not active<span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>tr<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>tr id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;product_4&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>My Product <span style="color: #cc66cc;">4</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>£<span style="color: #cc66cc;">19.99</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>Active<span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>tr<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>tr id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;product_5&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>My Product <span style="color: #cc66cc;">5</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>£<span style="color: #cc66cc;">7.99</span><span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>Not active<span style="color: #339933;">&lt;/</span>td<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>tr<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>tbody<span style="color: #339933;">&gt;&lt;/</span>table<span style="color: #339933;">&gt;</span></pre></div></div>

<p><script src="/files/javascript/jquery.tablednd.js" type="text/javascript"></script> <script type="text/javascript"><!--
$(document).ready(function() {
        $("#mytable").tableDnD();
});
// --></script></p>
<p>This will give you the following results like this (<strong>try dragging the rows</strong>):</p>
<table id="mytable" border="1">
<tbody>
<tr id="product_1">
<td>My Product 1</td>
<td>£10.00</td>
<td>Active</td>
</tr>
<tr id="product_2">
<td>My Product 2</td>
<td>£2.99</td>
<td>Not active</td>
</tr>
<tr id="product_3">
<td>My Product 3</td>
<td>£23.49</td>
<td>Not active</td>
</tr>
<tr id="product_4">
<td>My Product 4</td>
<td>£19.99</td>
<td>Active</td>
</tr>
<tr id="product_5">
<td>My Product 5</td>
<td>£7.99</td>
<td>Not active</td>
</tr>
</tbody>
</table>
<p>I&#8217;ve had success with this with the most complicated tables with embeded forms, complex CSS styling and 100+ rows without problems. The plugin includes various settings to assign different classes when dragging to get a user friendly feel.</p>
<p>Now you probably wondering how you can now get this ordering information back to the web sever to save it in the database. Database storage is simple, use a attribute storing a int and simply update the table in the order which they are received. It has a call back function called serialize(). This is an array with containing the id&#8217;s of the table rows in the new order in the table. Just loop these values update the table.</p>
<p>This code uses simple table with some CSS styling and POST an array back to a web sever with the new order.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mytable2'</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">tableDnD</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
                onDragClass<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;dragrow&quot;</span><span style="color: #339933;">,</span>
		onDrop<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>table<span style="color: #339933;">,</span> row<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #006600; font-style: italic;">// get the serialized data for transport</span>
		serial <span style="color: #339933;">=</span> $.<span style="color: #006600;">tableDnD</span>.<span style="color: #006600;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                       <span style="color: #006600; font-style: italic;">// use jQuery ajax function to send information</span>
			$.<span style="color: #006600;">ajax</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
				type<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;POST&quot;</span><span style="color: #339933;">,</span>
				url<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;inc/product_controller_ajax.php&quot;</span><span style="color: #339933;">,</span>
				data<span style="color: #339933;">:</span> serial<span style="color: #339933;">,</span>
			<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="css"><span style="color: #cc00cc;">#mytable2</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border</span><span style="color: #66cc66;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #66cc66;">;</span>
<span style="color: #000000; font-weight: bold;">border-collapse</span><span style="color: #66cc66;">:</span> <span style="color: #993333;">collapse</span><span style="color: #66cc66;">;</span>
<span style="color: #000000; font-weight: bold;">width</span><span style="color: #66cc66;">:</span> <span style="color: #933;"><span style="color: #933;">50</span>%</span><span style="color: #66cc66;">;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #6666ff;">.row1</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #66cc66;">:</span> <span style="color: #cc00cc;">#d8dff4</span><span style="color: #66cc66;">;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #6666ff;">.row2</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #66cc66;">:</span> <span style="color: #cc00cc;">#f7e8e9</span><span style="color: #66cc66;">;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #6666ff;">.dragrow</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #66cc66;">:</span> <span style="color: #cc00cc;">#a70707</span><span style="color: #66cc66;">;</span>
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #66cc66;">:</span> <span style="color: #cc00cc;">#ffffff</span><span style="color: #66cc66;">;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><script type="text/javascript"><!--
$(document).ready(function() {
	$('#mytable2').tableDnD({
                onDragClass: "dragrow",
		onDrop: function(table, row) {
                // get the serialized data for transport
		serial = $.tableDnD.serialize();
                       // use jQuery ajax function to send information
			$.ajax({
				type: "POST",
				url: "inc/product_controller_ajax.php",
				data: serial,
			});
		}
	});
});
// --></script></p>
<style type="text/css"><!--
#mytable2 {
border: 2px solid black;
border-collapse: collapse;
width: 50%;
}
.row1 {
background-color: #d8dff4;
}
.row2 {
background-color: #f7e8e9;
}
.dragrow {
background-color: #a70707;
color: #ffffff;
--></style>
<table id="mytable2" border="1">
<tbody>
<tr id="product_1" class="row1">
<td>My Product 1</td>
<td>£10.00</td>
<td>Active</td>
</tr>
<tr id="product_2" class="row2">
<td>My Product 2</td>
<td>£2.99</td>
<td>Not active</td>
</tr>
<tr id="product_3" class="row1">
<td>My Product 3</td>
<td>£23.49</td>
<td>Not active</td>
</tr>
<tr id="product_4" class="row2">
<td>My Product 4</td>
<td>£19.99</td>
<td>Active</td>
</tr>
<tr id="product_5" class="row1">
<td>My Product 5</td>
<td>£7.99</td>
<td>Not active</td>
</tr>
</tbody>
</table>
<p>Now at the sever side all you have to do is loop through the value sent via ajax. I have used POST in this example. The name of the value is the ID of the table, so for example a PHP solution for this is as follows:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
    <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'mytable2'</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">as</span> <span style="color: #000033;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
       <span style="color: #990000;">echo</span> <span style="color: #000033;">$line</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// product_2, product_2... etc in new order</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><span style="text-decoration: underline;"><strong>Links</strong></span></p>
<p><a href="http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/" target="_blank">Table Drag and Drop Web site</a></p>
<p><a href="http://www.paulsrichards.com/files/downloads/jquery.tablednd.js.zip">Download Table Drag and Drop (Local copy version 0.4)</a></p>
<p><a href="http://www.jquery.com" target="_self">jQuery (required)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/06/18/jquery-table-sorter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Firefox 3 - The best bits</title>
		<link>http://www.paulsrichards.com/2008/06/14/firefox-3-the-best-bits/</link>
		<comments>http://www.paulsrichards.com/2008/06/14/firefox-3-the-best-bits/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 18:03:09 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[Web Tools]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=59</guid>
		<description><![CDATA[The latest version of Mozilla Firefox is due to be released later early next week on the 17th June 2008. I&#8217;ve been participating in the pre-release testing and cant say enough good points about it. If it wasn&#8217;t for incompatibility for certain addons I use (namely firebug) I would of switched to it weeks ago. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.paulsrichards.com/wp-content/uploads/2008/06/ff.jpg"><img class="alignright size-full wp-image-60" title="Firefox logo" src="http://www.paulsrichards.com/wp-content/uploads/2008/06/ff.jpg" alt="Firefox logo" width="75" height="75" /></a>The latest version of Mozilla Firefox is due to be released later early next week on the 17th June 2008. I&#8217;ve been participating in the pre-release testing and cant say enough good points about it. If it wasn&#8217;t for incompatibility for certain addons I use (namely <a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank">firebug</a>) I would of switched to it weeks ago. Now RC3 has been released compatibility for popular addons such as foxmarks and firebug are now available.</p>
<h3>So why should I bother downloading (7 Mb) and installing FF3?</h3>
<p>As you&#8217;ve all probably already read on the web site FF3 has major security, performance, improved password management, anti virus integration &amp; a download manager just to name a few.</p>
<p>What interest me is features that ultimately change the way we surf the web and interact with our web browser. FF3 takes two classic old web browsing features; bookmarks (favourites) and history and gives them a new lease of life. If you like me i&#8217;ve really used the history because its always been pretty inaccessible to search. I use bookmarks but can never find anything in them and normally just re-search it on Google.</p>
<p>FF3 provides loads of new tools and features to sort, search and tag bookmarks. The best feature is what they call &#8216;Location bar &amp; auto-complete&#8217;. This is a Google suggest inspired search tool that help you to quickly locate that missing bookmark or that pages you know you were once on.</p>
<p><a href="http://www.paulsrichards.com/wp-content/uploads/2008/06/ff32.gif"><img class="alignnone size-full wp-image-63" title="Autocomplete" src="http://www.paulsrichards.com/wp-content/uploads/2008/06/ff32.gif" alt="Autocomplete" width="500" height="199" /></a></p>
<p>As you can see its clear and indicates if its a current bookmark or not by the star on the right. It has a sort of Facebook search look about it that highlights the matched letter(s) in bold.</p>
<p>There are massive improvements that make upgrading more then worth you while. <a href="http://www.mozilla.com/en-US/firefox/all-rc.html" target="_blank">Firefox RC3</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/06/14/firefox-3-the-best-bits/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Changing the spark plugs on a Chrysler Voyager V6</title>
		<link>http://www.paulsrichards.com/2008/06/13/changing-the-spark-plugs-on-a-chrysler-voyager-v6/</link>
		<comments>http://www.paulsrichards.com/2008/06/13/changing-the-spark-plugs-on-a-chrysler-voyager-v6/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 16:47:52 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
		<category><![CDATA[Cars]]></category>

		<category><![CDATA[voyager]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/2008/06/13/changing-the-spark-plugs-on-a-chrysler-voyager-v6/</guid>
		<description><![CDATA[

The rear spark plugs on a Chrysler Voyager V6 (2000) at first seem very difficult to change. I have heard of various methods, from gaining access from underneath the car, to lifting the inlet manifold an inch or two.
I decided to take the easiest approach, which might not be the quickest if you have access [...]]]></description>
			<content:encoded><![CDATA[<p><!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Version>12.00</o:Version> </o:DocumentProperties> </xml><![endif]--></p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-GB</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--></p>
<p>The rear spark plugs on a Chrysler Voyager V6 (2000) at first seem very difficult to change. I have heard of various methods, from gaining access from underneath the car, to lifting the inlet manifold an inch or two.</p>
<p>I decided to take the easiest approach, which might not be the quickest if you have access to a vehicle lift, but is relatively straight forward.</p>
<p>As well as a new set of spark plugs and ignition leads you may need a new inlet manifold gasket as it could break when you remove the manifold</p>
<p>Below is a step by step photo guide on how to replace the spark plugs, which you might find helpful if tackling the job yourself.</p>
<div>
<table style="collapse" border="0"><col></col><col></col><col></col><col></col></p>
<tbody>
<tr>
<td style="none" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe1.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Note position of wiper arms</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe2.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove wiper arm spindle cap</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe3.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove wiper arm spindle nut</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe4.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove wiper arm and wiper top panel screws</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe5.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Panel clips</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe6.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove flat nuts from wiper top panel studs</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe7.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Disconnect screen washer tubing</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe8.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Disconnect screen washer tubing on jets</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="4"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe9.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="4"><span style="#365f91"><strong>Remove wiper box top bracket nuts</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="4"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe10.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="4"><span style="#365f91"><strong>Remove main wiper box bolts</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe11.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove main wiper box bolts</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe12.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove wiper motor multiplug</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe13.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Disconnect wiper box drain pipes</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe14.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Lift out wiper box assembly for easy access to inlet manifold</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe15.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove 3 alternator bracket bolts and rotate plate upwards</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="4"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe16.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="4"><span style="#365f91"><strong>Remove distributor bolts</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="4"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe17.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="4"><span style="#365f91"><strong>Remove air box and vacuum pipes, breather pipes, multiplugs, throttle cables on throttle body<br />
</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="3"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe18.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="3"><span style="#365f91"><strong>Remove exhaust recirculation pipe bolts (a bit tricky)</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="4"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe19.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="4"><span style="#365f91"><strong>Remove inlet manifold support bracket bolt from engine block<br />
</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="4"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe20.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="4"><span style="#365f91"><strong>Remove cable mounting bracket bolt on back of manifold(left side) (a bit tricky)</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="4"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe21.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="4"><span style="#365f91"><strong>Remove cable mounting bracket bolt (right side) (also a bit tricky)<br />
</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="3"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe22.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="3"><span style="#365f91"><strong>View of cable bracket/bolts on back of manifold(may assist in removal)</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe23.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove earth wires on bulkhead stud</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="3"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe24.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="3"><span style="#365f91"><strong>Remove inlet manifold nuts and bolts</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="3"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe25.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="3"><span style="#365f91"><strong>Remove inlet manifold and cover engine inlet ports</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe26.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove ignition leads and Remove and replace rear spark plugs</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe27.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Remove ignition leads and Remove and replace front spark plugs</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe28.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Check wiring and multiplug cable mounting bracket</strong></span></td>
</tr>
<tr>
<td style="7px" colspan="2"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe29.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none" colspan="2"><span style="#365f91"><strong>Fit new inlet manifold gasket</strong></span></td>
</tr>
<tr>
<td style="7px"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe30.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none"><span style="#365f91"><strong>Fit new air filter at this stage if necessary and rebuild<br />
</strong></span></p>
<p><span style="#365f91"><strong>Refit rear ignition leads; rebuild inlet manifold assembly, electrics and wiper box.<br />
</strong></span></td>
</tr>
<tr>
<td style="7px"><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe31.jpg" alt="" /><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe32.jpg" alt="" /><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe33.jpg" alt="" /><img src="http://www.paulsrichards.com/wp-content/uploads/2008/06/061308-1646-changingthe34.jpg" alt="" /></td>
</tr>
<tr style="#d3dfee">
<td style="none"><span style="#365f91"><strong>Parts used</strong></span></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/06/13/changing-the-spark-plugs-on-a-chrysler-voyager-v6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nike plus data API access</title>
		<link>http://www.paulsrichards.com/2008/06/12/nike-data-api-access/</link>
		<comments>http://www.paulsrichards.com/2008/06/12/nike-data-api-access/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 20:33:36 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
		<category><![CDATA[running]]></category>

		<category><![CDATA[nike plus]]></category>

		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://www.paulsrichards.com/?p=15</guid>
		<description><![CDATA[As Nike + wristband user and a web developer i thought it would interesting if i was able to access the raw data of my runs.
Nike provide various &#8216;widgets&#8217; that can be embedded into web pages which is convenient and fun. But i find them a little clunky in flash. You can see an example [...]]]></description>
			<content:encoded><![CDATA[<p>As Nike + wristband user and a web developer i thought it would interesting if i was able to access the raw data of my runs.</p>
<p>Nike provide various &#8216;widgets&#8217; that can be embedded into web pages which is convenient and fun. But i find them a little clunky in flash. You can see an example of one I added to this site <a href="http://www.paulsrichards.com/2008/05/07/paul-vs-chris-the-30-day-run-off/">here</a>. So i decided to see what I could find on the net to access the run data.</p>
<p>It turns out the everyone&#8217;s run data is accessible via a URL linking to a XML document. All that is required is your user ID. Simply go to the following URL and insert your user ID at the end of the string.</p>
<blockquote><p>http://nikeplus.nike.com/nikeplus/v1/services/widget/get_public_run_list.jsp?userID=&lt;YOUR ID HERE&gt;</p></blockquote>
<p>All my data can be accessed <a href="http://nikeplus.nike.com/nikeplus/v1/services/widget/get_public_run_list.jsp?userID=1759895612">here </a>for example. Please take note about the XML document</p>
<ul>
<li>Distances are in kilometres (despite having all my settings in miles).</li>
<li>Time locals appear to be correct.</li>
<li>Time is measured in millseconds</li>
</ul>
<p>Now your probably wondering how do i find out my user ID. Do this:</p>
<ol>
<li>Sign into Nike Plus.</li>
<li>Click &#8216;My Runs&#8217;.</li>
<li>Click the &#8216;Share&#8217; button on the top right of your runs.</li>
<li>Click &#8216;Add to a Web page&#8217;.</li>
<li>Click &#8216;Grab the Code&#8217;. Now it copied the code to your clip board.</li>
<li>Open up a text editor and paste it in (ctrl v). You should have something like this below. The ID is highlighted, just copy it out</li>
</ol>
<blockquote><p>&lt;object classid=&#8221;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&#8243; codebase=&#8221;http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0&#8243; width=&#8221;198&#8243; height=&#8221;145&#8243; id=&#8221;Nike+ Runs&#8221; align=&#8221;middle&#8221;&gt;&lt;param name=&#8221;allowScriptAccess&#8221; value=&#8221;sameDomain&#8221; /&gt;&lt;param name=&#8221;wmode&#8221; value=&#8221;transparent&#8221; /&gt;&lt;param name=&#8221;movie&#8221; value=&#8221;http://nikeplus.nike.com/nikeplus/v1/swf/scrapablewidget/rundetail.swf&#8221; /&gt;&lt;param name=&#8221;quality&#8221; value=&#8221;high&#8221; /&gt;&lt;param name=&#8221;bgcolor&#8221; value=&#8221;#ffffff&#8221; /&gt;&lt;param name=&#8221;FlashVars&#8221; value=&#8221;type=last5Runs&amp;userDefaultUnit=mi&amp;screenName=paulrichards&amp;dateFormat=DD/MM/YY</p>
<p>&amp;id=<span style="color: #ff0000;"><strong>1759895612</strong></span>&amp;region=emea&amp;language=en&amp;locale=en_gb&#8221;/&gt;&lt;embed src=&#8221;http://nikeplus.nike.com/nikeplus/v1/swf/scrapablewidget/rundetail.swf&#8221; quality=&#8221;high&#8221; wmode=&#8221;transparent&#8221; bgcolor=&#8221;#ffffff&#8221; width=&#8221;198&#8243; height=&#8221;145&#8243; name=&#8221;Nike+ Runs&#8221; align=&#8221;middle&#8221; allowScriptAccess=&#8221;sameDomain&#8221; FlashVars=&#8221;type=last5Runs&amp;userDefaultUnit=mi&amp;screenName=paulrichards&amp;dateFormat=DD/MM/YY&amp;id=<span style="color: #ff0000;"><strong>1759895612</strong></span>&amp;region=emea&amp;language=en&amp;locale=en_gb&#8221; type=&#8221;application/x-shockwave-flash&#8221; pluginspage=&#8221;http://www.macromedia.com/go/getflashplayer&#8221;&gt;&lt;/embed&gt;&lt;/object&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.paulsrichards.com/2008/06/12/nike-data-api-access/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
