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

<channel>
	<title>{5} Setfive - Talking to the World &#187; jQuery</title>
	<atom:link href="http://shout.setfive.com/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://shout.setfive.com</link>
	<description></description>
	<lastBuildDate>Mon, 19 Jul 2010 19:09:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>UPDATED: New Facebook Phonebook Script</title>
		<link>http://shout.setfive.com/2010/07/19/updated-new-facebook-phonebook-script/</link>
		<comments>http://shout.setfive.com/2010/07/19/updated-new-facebook-phonebook-script/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 19:05:24 +0000</pubDate>
		<dc:creator>Ashish Datta</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[fun stuff]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=382</guid>
		<description><![CDATA[I realized this morning that Anonymous Coward&#8217;s Facebook Phonebook Greasemonkey script broke awhile back so I decided to rewrite it from scratch. The original instructions for how to install the script are available here. I updated the original Userscripts page with the new script so you can download it here. Once again, this probably breaks [...]]]></description>
			<content:encoded><![CDATA[<p>I realized this morning that Anonymous Coward&#8217;s Facebook Phonebook Greasemonkey script broke awhile back so I decided to rewrite it from scratch.</p>
<p>The original instructions for how to install the script are available <a target="_blank" href="http://shout.setfive.com/2009/03/06/use-greasemonkey-to-extract-your-facebook-phonebook/">here</a>.</p>
<p>I updated the original Userscripts page with the new script so you can download it <a target="_blank" href="http://userscripts.org/scripts/show/43681">here</a>.</p>
<div style="font-size: 18px; font-weight: bold">
Once again, this probably breaks your Facebook TOS so I can&#8217;t vouch for the safety of your account if you do decide to do this.
</div>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2010/07/19/updated-new-facebook-phonebook-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QR Bookmarklet</title>
		<link>http://shout.setfive.com/2010/06/13/qr-bookmarklet/</link>
		<comments>http://shout.setfive.com/2010/06/13/qr-bookmarklet/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 03:16:43 +0000</pubDate>
		<dc:creator>Ashish Datta</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[fun stuff]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=372</guid>
		<description><![CDATA[I got tired of having to find the same website (mostly recipes) on my phone after looking at them on my workstation or laptop so I decided to whip together a bookmarklet to throw a Google powered QR code on any page. The bookmarklet will just slap a QR code image with the current page&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I got tired of having to find the same website (mostly recipes) on my phone after looking at them on my workstation or laptop so I decided to whip together a bookmarklet to throw a Google powered QR code on any page.</p>
<p>The bookmarklet will just slap a QR code image with the current page&#8217;s URL (window.location) so that you can open the page on your phone. ps. <a href="http://www.androidtapp.com/barcode-scanner/" target="_blank">Barcode Scanner</a> for Android will automatically open the URL in a browser.</p>
<p>Without further ado, <a href="http://code.setfive.com/qrbklt/" target="_blank">QR Code Bookmarklet</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2010/06/13/qr-bookmarklet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.trigger weirdness</title>
		<link>http://shout.setfive.com/2010/06/10/jquery-trigger-weirdness/</link>
		<comments>http://shout.setfive.com/2010/06/10/jquery-trigger-weirdness/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 03:44:42 +0000</pubDate>
		<dc:creator>Ashish Datta</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=369</guid>
		<description><![CDATA[Earlier today, I was trying to use jQuery to trigger the submission of a form after a radio button was clicked. The form tag looked something like: ...form.. function saysomething(){ alert("Hello world from saysomething()"); } So for a regular submit button: Everything works fine, you&#8217;ll see the alert() and the form won&#8217;t submit because of [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today, I was trying to use jQuery to trigger the submission of a form after a radio button was clicked. The form tag looked something like:</p>
<pre name="code" class="html">
<form action="" id="someForm" method="GET" onsubmit="saysomething(); return false">
   ...form..
   </form>

    <script type="text/javascript">

    function saysomething(){
      alert("Hello world from saysomething()");
    }

   </script>
</pre>
<p>So for a regular submit button:</p>
<pre name="code" class="html">
<input type="submit" value="Submit Form" />
</pre>
<p>Everything works fine, you&#8217;ll see the alert() and the form won&#8217;t submit because of the return false.</p>
<p>I ran into issues when I tried to trigger() the submit event with jQuery. I was trying to trigger the submit() event on the form via jQuery. The problem I ran into, was that the saysomething() function was getting called, but the &#8220;return false&#8221; seemed to have no effect.</p>
<p>The final form looked something like:</p>
<pre name="code" class="html">
<form action="" id="someForm"
          method="GET" onsubmit="saysomething(); return false">
<input type="text" name="someshit" />
<input type="submit" value="Submit Form" />
<input type="button" value="jQuery.submit()" id="clickIt" />
    </form>

    <script type="text/javascript">

    function saysomething(){
      alert("Hello world from saysomething()");
    }

    $(document).ready( function(){
      $("#clickIt").click( function(){ $("#someForm").submit(); });
    });

    </script>
</pre>
<p>For some reason, if you submit the form via a jQuery trigger the form submits even though saysomething() gets called. I&#8217;m not sure if this is the expected behavior but it was certainly something of a shock. Anyway, a live version of the form is running <a href="http://code.setfive.com/shout/formsubmit.html" target="_blank">here</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2010/06/10/jquery-trigger-weirdness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Run jQuery each() serially</title>
		<link>http://shout.setfive.com/2010/05/18/run-jquery-each-serially/</link>
		<comments>http://shout.setfive.com/2010/05/18/run-jquery-each-serially/#comments</comments>
		<pubDate>Tue, 18 May 2010 22:32:51 +0000</pubDate>
		<dc:creator>Ashish Datta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[fun stuff]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=355</guid>
		<description><![CDATA[jQuery.each() is pretty sweet but earlier today I wanted to run some animations across a set of three elements and since the animate() calls are non-blocking everything was happening at the same time. What I wanted to do was have the functions execute in a serial fashion (1 after the other). I poked around and [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery.each() is pretty sweet but earlier today I wanted to run some animations across a set of three elements and since the animate() calls are non-blocking everything was happening at the same time. What I wanted to do was have the functions execute in a serial fashion (1 after the other).</p>
<p>I poked around and it doesn&#8217;t look like there&#8217;s a native way to do this. After a bit I decided to just whip something up and see how it works. Here&#8217;s what I had originally:</p>
<pre name="code" class="javascript">
$("#splashStream .snippetbox").each( function(index){
	$(this).animate( {opacity: 0}, 1000, function(){
		$(this).html( $("#hiddenSplashDiv .snippetbox:eq(" + index + ")").html() );
		$(this).animate( {opacity: 1}, 2000 );
	});
});
</pre>
<p>That ran fine but everything happened at the same time. The modified serial code looks like:</p>
<pre name="code" class="javascript">

                  var hasCallbackCompleted = [ true ];
                  $("#splashStream .snippetbox").each( function(index){

                      var f = arguments.callee;
                      var args = arguments;
                      var t = this;

                      if( !hasCallbackCompleted[ index ] ){
                        window.setTimeout( function(){ f.apply(t, args); }, 5 );
                        return true;
                      }

                      hasCallbackCompleted[ index + 1 ] = false;
                      $(this).animate( {opacity: 0}, 1000, function(){
                          $(this).html( $("#hiddenSplashDiv .snippetbox:eq(" + index + ")").html() );
                          $(this).animate( {opacity: 1}, 2000, function(){
                            hasCallbackCompleted[ index + 1 ] = true;
                          });
                      });

                  });
</pre>
<p>Basically, what it does is after the first element, the code will delay execution of the each() function until the hasCallbackCompleted flag is set for the correct element. </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2010/05/18/run-jquery-each-serially/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery blank() modified for password fields</title>
		<link>http://shout.setfive.com/2010/04/28/jquery-blank-modified-for-password-fields/</link>
		<comments>http://shout.setfive.com/2010/04/28/jquery-blank-modified-for-password-fields/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 04:58:20 +0000</pubDate>
		<dc:creator>Ashish Datta</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=353</guid>
		<description><![CDATA[We&#8217;ve been using Jeff Hui&#8217;s very awesome jquery.blank plugin for sometime over at Setfive HQ. What blank() is allow you to basically move the labels for text inputs into the input themselves (to save space). We use this technique frequently for login boxes in headers since it&#8217;s easier not to have to stick in labels [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been using Jeff Hui&#8217;s very awesome <a target="_blank" href="http://blog.jeffhui.net/work/jquery-blank/">jquery.blank</a> plugin for sometime over at Setfive HQ. What blank() is allow you to basically move the labels for text inputs into the input themselves (to save space). We use this technique frequently for login boxes in headers since it&#8217;s easier not to have to stick in labels next to text boxes.</p>
<p>The problem is, you can&#8217;t use blank() on a password field since a password field won&#8217;t display clear text (obviously). To get around this, I&#8217;ve always manually stuck in a &#8220;shadow&#8221; text box next to the password field and toggled the text box or password box in order to make blank() work correctly.</p>
<p>Anyway, I finally got tired of doing this so I decided to patch the plugin to do this automatically. Jeff incorporated the code back into blank() and it&#8217;s available on GitHub <a target="_blank" href="http://github.com/jeffh/jquery.blank">here</a>. </p>
<p>Happy coding. </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2010/04/28/jquery-blank-modified-for-password-fields/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>javascript &#8211; $(document).ready getting called twice?  Here&#8217;s why.</title>
		<link>http://shout.setfive.com/2010/02/22/javascript-document-ready-getting-called-twice-heres-why/</link>
		<comments>http://shout.setfive.com/2010/02/22/javascript-document-ready-getting-called-twice-heres-why/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 03:38:40 +0000</pubDate>
		<dc:creator>Matt Daum</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=330</guid>
		<description><![CDATA[Recently we found ourselves having a really weird problem on a project: Every time a page was loaded it seemed a bunch of different Javascript functions were being called multiple times and making many widgets on the page break and we couldn&#8217;t figure it out. Some of the functions were our own code, some part [...]]]></description>
			<content:encoded><![CDATA[<p>Recently we found ourselves having a really weird problem on a project:  Every time a page was loaded it seemed a bunch of different Javascript functions were being called multiple times and making many widgets on the page break and we couldn&#8217;t figure it out.  Some of the functions were our own code, some part of the package we were using.  After a while we narrowed it down to that all the functions in the </p>
<pre name="code" class="javascript">
$(document).ready(...);
</pre>
<p>we&#8217;re being called twice.  We had never seen this.  After about an hour of removing javascript files and just headbanging, and many thanks to Ashish, we found the root cause.  We had written in a quick hack for a late proof of concept to string replace on the entire HTML of a page a specific string.  We did it this way:</p>
<pre name="code" class="javascript">
$('body').html($('body').html().replace(/{REPLACETEXT}/i, "More important text"));
</pre>
<p>Basically we used a regex to parse the entire HTML tree and then replace it with the updated text.  Unknowingly this caused the document ready event to be triggered again(though now it makes sense), causing many widgets to get extra HTML.</p>
<p>Let this save you some headbanging. </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2010/02/22/javascript-document-ready-getting-called-twice-heres-why/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retrieve session timeout in Symfony</title>
		<link>http://shout.setfive.com/2009/12/01/symfony-session-timeout/</link>
		<comments>http://shout.setfive.com/2009/12/01/symfony-session-timeout/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 19:10:28 +0000</pubDate>
		<dc:creator>Ashish Datta</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sfGuard]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=321</guid>
		<description><![CDATA[We were recently working on an application that required users to enter a significant amount of complex data that often meant that they had to look things up in between saves. Users kept running into the problem that their sfGuard sessions would timeout before they were able to click &#8220;Save&#8221; on the form which in [...]]]></description>
			<content:encoded><![CDATA[<p>We were recently working on an application that required users to enter a significant amount of complex data that often meant that they had to look things up in between saves. Users kept running into the problem that their sfGuard sessions would timeout before they were able to click &#8220;Save&#8221; on the form which in turn caused them to loose all of their hard work. Obviously, this is lame so we decided to add a popup warning users that their session had expired and prompting them to login again before saving their data.</p>
<p>We decided to implement this by using setTimeout in Javascript to pop up a window once the user&#8217;s session had expired.</p>
<p>Setting the session length for a Symfony user is easy enough, open up app/config/factories.yml and add the following:</p>
<pre class="html" name="code">
all:
  user:
    class: myUser
    param:
      timeout: 1800 # this is the default but you can change it at will (its in seconds)
</pre>
<p>As it turns out, the tricky part is how do you access this value inside the application? Un-characteristically, I couldn&#8217;t find anything in the Symfony documentation about how to access these variables. For whatever reason, sfConfig::get() doesn&#8217;t provide access to the variables in factories.yml.</p>
<p>In order to get that timeout value I used (inside a template):</p>
<pre class="php" name="code">
  $userOptions = $sf_user->getOptions();
  $timeout = $userOptions["timeout"];
</pre>
<p>Anyway, once I figured that out the rest is pretty straightforward.</p>
<p>After $timeout a Javascript function opens a jQuery UI Dialog box informing the user that their session has expired and presents the standard sfGuard sign in form. I override the onSubmit of this form to perform the request via AJAX in the background (so the user doesn&#8217;t loose their data) and then if the credentials are valid the dialog closes and the user can go on their way. If the credentials are invalid, the form re-populates with any errors and the user can correct them to re-login to the app.</p>
<p>Hope everyone had a good Thanksgiving! </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2009/12/01/symfony-session-timeout/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQuery UI $.dialog &#8211; on the fly HTML</title>
		<link>http://shout.setfive.com/2009/11/13/jquery-ui-dialog-on-the-fly-html/</link>
		<comments>http://shout.setfive.com/2009/11/13/jquery-ui-dialog-on-the-fly-html/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 03:44:59 +0000</pubDate>
		<dc:creator>Ashish Datta</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=317</guid>
		<description><![CDATA[Wow its been awhile! We&#8217;ve been insanely busy over the last month or so. We launched Setfive Ventures and are anxiously anticipating the launch of both WeGov and OmniStrat in the immediate future. There are also a handful of internal project that should be rolling out before Christmas. Get Excited. Anyway, the jQuery UI Dialog [...]]]></description>
			<content:encoded><![CDATA[<p>Wow its been awhile!</p>
<p>We&#8217;ve been insanely busy over the last month or so. We launched <a href="http://www.setfiveventures.com" target="_blank">Setfive Ventures</a> and are anxiously anticipating the launch of both <a href="http://www.wegov.com" target="_blank">WeGov</a> and <a href="http://www.omnistrat.com" target="_blank">OmniStrat</a> in the immediate future. There are also a handful of internal project that should be rolling out before Christmas. Get Excited.</p>
<p>Anyway, the jQuery UI <a href="http://docs.jquery.com/UI/Dialog" target="_blank">Dialog</a> class is pretty sweet. Basically, it provides a class to display a modal dialog box from a regular old DOM element (a div, span, or whatever.)</p>
<p>One of the thing that isn&#8217;t explained well (or at all?) in the documentation is that you can create a dialog with on the fly HTML! I found this out after posting on the <a href="http://groups.google.com/group/jquery-ui/browse_thread/thread/9b0b64da244d0c3/796962caab4fda88?lnk=gst">Google Group</a> asking why this feature didn&#8217;t exist (it does. Ashish fail.)</p>
<p>So if you want to create a dialog with on the fly HTML all you need to do is:</p>
<pre class="javascript" name="code">
$("&lt;p&gt;Hello World!&lt;/p&gt;").dialog();
</pre>
<p>Pretty sweet. </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2009/11/13/jquery-ui-dialog-on-the-fly-html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FOSS Fridays &#8211; Tracking Your Users</title>
		<link>http://shout.setfive.com/2009/08/28/foss-fridays-tracking-your-users/</link>
		<comments>http://shout.setfive.com/2009/08/28/foss-fridays-tracking-your-users/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 18:35:31 +0000</pubDate>
		<dc:creator>Matt Daum</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tracking mouse movement]]></category>
		<category><![CDATA[tracking users]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=258</guid>
		<description><![CDATA[The other night I thought it&#8217;d be helpful to see how people browse your site.  I think you can probably learn a lot about how a user moves over your site.  You can tell a lot about your user&#8217;s experience by watching their mouse.  You can see where they look on the page for specific [...]]]></description>
			<content:encoded><![CDATA[<p>The other night I thought it&#8217;d be helpful to see how people browse your site.  I think you can probably learn a lot about how a user moves over your site.  You can tell a lot about your user&#8217;s experience by watching their mouse.  You can see where they look on the page for specific information.  I&#8217;ve created a <a href="http://code.setfive.com/trackingdemo/" target="_blank">demo</a> of the tracking.</p>
<p>I know that there are some products out there that already do user session tracking and replays.  Also there are click heat maps which are interesting when you are looking on your site to see what links the user clicks the most.  I decided to just rebuild the session replay just out of curiousity on how difficult it&#8217;d be to do.  It was fairly simple and took me only 15-20 minutes. There are a number of improvements you could make to the script such as the window.unload handling is not 100% depending on your browser.  You could also do much more parsing on the client side of the information by using JSON.  If you wanted to store more than one page of tracking data you could quickly modify the script to pass the name page which it was tracking and to store the data separately for each page.</p>
<p>To use the script all you need to do is add a little Javascript on the bottom of the page you want to track a user.   The script tracks a users mouse movement as soon as they open the site.  It keeps track of time so that during the replay you can get the proper mouse movement at the right times to replay the users session.  While the user moves their mouse it continues to store all the data client side.  Once the window is closed it sends all the information to the server.  The server simply parses the data string.  For session replay it is done via setTimeout and it moved an image(of a cursor) at different intervals to simulate the users session.</p>
<p>While the script is not very pretty it was written very quickly and just as a proof of concept.  It goes to show you can easily track your user&#8217;s session without having to purchase expensive products, and that it can be done fairly simply.</p>
<p>The code is below with descriptions of what each snippet does. The script uses <a href="http://jquery.com/">jQuery</a>.  To deploy this on numerous pages all you really would need to add would be a script tag that pulls in the tracking javascript.</p>
<p>Tracking the users movements and sending the server the information javascript:</p>
<pre name="code" class="javascript">
var points='';
var timeSeconds=0;
$(document).ready(function(){
  $('body').append('<span id="trackingid"></span>');
  timer();
   $().mousemove(function (e){
    points=points+e.pageX+","+e.pageY+","+timeSeconds+"|";
  });
  $(window).unload(function(){
    sendData();
  });
});
function timer()
{
  timeSeconds=parseInt(timeSeconds)+1;
  setTimeout("timer()",10);
}
function sendData(){
    $.post('index.php','data='+points);
}
</pre>
<p>To parse the information on the server:</p>
<pre  name="code"  class="php">if($_SERVER['REQUEST_METHOD']=='POST')
{
  $fp=fopen($_SERVER['REMOTE_ADDR'].'tracking.dat','w+');
   fwrite($fp,$_POST['data']);
  fclose($fp);
  exit(1);
}</pre>
<p>To replay the session first get the data:</p>
<pre  name="code"  class="php">if(file_exists($_SERVER['REMOTE_ADDR'].'tracking.dat'))
{
 $data=explode("|",file_get_contents($_SERVER['REMOTE_ADDR'].'tracking.dat'));
}</pre>
<p>The moving of the cursor image javascript:</p>
<pre  name="code" class="javascript">function moveMouse(x,y){
 $('#cursor').attr('style','position:absolute;left:'+x+"px;top:"+y+"px;");
}</pre>
<p>Create different calls for each time the mouse was moved and have them execute at the times the user moved the mouse:</p>
<pre  name="code"  class="javascript">foreach($data as $d)
{
  $parts=explode(',',$d);
  if(count($parts)==3)
  echo 'setTimeout("moveMouse('.$parts[0].','.$parts[1].')",'.($parts[2]*10).");\n";
}</pre>
<p>And you are all set.  As I said the script is only for proof of concept and not too pretty.  Let me know if you have any questions. </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2009/08/28/foss-fridays-tracking-your-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skinning your jQuery UI Components quick and easily &#8211; ThemeRoller</title>
		<link>http://shout.setfive.com/2009/08/14/skinning-your-jquery-ui-components-quick-and-easily-themeroller/</link>
		<comments>http://shout.setfive.com/2009/08/14/skinning-your-jquery-ui-components-quick-and-easily-themeroller/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 17:49:03 +0000</pubDate>
		<dc:creator>Matt Daum</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jquery themes]]></category>

		<guid isPermaLink="false">http://shout.setfive.com/?p=250</guid>
		<description><![CDATA[We use jQuery on almost every project we do. As many know updating your theme for your website widgets can take a long time. Recently we found the jQuery UI &#8211; ThemeRoller. This allows you to quickly skin all of your jQuery UI widgets within a matter of couple of mouse clicks.  For those of [...]]]></description>
			<content:encoded><![CDATA[<p>We use jQuery on almost every project we do.  As many know updating your theme for your website widgets can take a long time.  Recently we found the <a href="http://jqueryui.com/themeroller">jQuery UI &#8211; ThemeRoller</a>.  This allows you to quickly skin all of your jQuery UI widgets within a matter of couple of mouse clicks.  For those of us who can&#8217;t pick matching colors for their life, ThemeRoller has many template themes. ThemeRoller allows you to start with a templated theme, and to easily modify it via the GUI.</p>
<p>This will save you time and money as hand editing the CSS files to update your jQuery UI widgets is slow and tedicious. </p>
]]></content:encoded>
			<wfw:commentRss>http://shout.setfive.com/2009/08/14/skinning-your-jquery-ui-components-quick-and-easily-themeroller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
