<?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>james young &#187; code example</title>
	<atom:link href="http://psyjinx.com/jyoung/tag/code-example/feed/" rel="self" type="application/rss+xml" />
	<link>http://psyjinx.com/jyoung</link>
	<description>web application developer</description>
	<lastBuildDate>Fri, 05 Mar 2010 18:55:39 +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>MediaWiki Radius Authentication Extension &#8211; RadiusAuthPlugin</title>
		<link>http://psyjinx.com/jyoung/2010/02/mediawiki-radius-authentication-extension-radiusauthplugin/</link>
		<comments>http://psyjinx.com/jyoung/2010/02/mediawiki-radius-authentication-extension-radiusauthplugin/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 02:26:52 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[mediawiki]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[radius]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://psyjinx.com/jyoung/?p=244</guid>
		<description><![CDATA[<p>Here is an extension / plugin for mediawiki to authenticate against a Radius server.  I couldn&#8217;t find one anywhere else, which is surprising.  I can&#8217;t believe I am the first person to want to do this.  Anyway, this is just bare bones, but it works for an internal mediawiki setup.</p>
<p>First, get Pure [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an extension / plugin for mediawiki to authenticate against a Radius server.  I couldn&#8217;t find one anywhere else, which is surprising.  I can&#8217;t believe I am the first person to want to do this.  Anyway, this is just bare bones, but it works for an internal mediawiki setup.</p>
<p>First, get Pure PHP radius class 1.2.2 from <a href="http://developer.sysco.ch/php">http://developer.sysco.ch/php</a>.  This does the actual radius authentication.  Put radius.class.php in wiki/extensions/ (assuming wiki is your mediawiki install).  There is probably a better place to put it, but I was setting this up for internal use and wanted to get it working quickly.</p>
<p>Next, create wiki/extensions/RadiusAuthPlugin.php.  Make sure you fill in RADIUS_SERVER, SHARED_SECRET, and NAS_IP_ADDRESS with your actual information</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'AuthPlugin.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'radius.class.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_ALL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> RadiusAuthPlugin <span style="color: #000000; font-weight: bold;">extends</span> AuthPlugin
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">function</span> userExists<span style="color: #009900;">&#40;</span><span style="color: #000088;">$username</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> authenticate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$username</span><span style="color: #339933;">,</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$username</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$username</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$radius</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Radius<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'RADIUS_SERVER'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'SHARED_SECRET'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$radius</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetNasIpAddress</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NAS_IP_ADDRESS'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Needed for some devices (not always auto-detected)</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$radius</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">AccessRequest</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$username</span><span style="color: #339933;">,</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> modifyUITemplate<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$template</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$template</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'usedomain'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$template</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'useemail'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$template</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'create'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> autoCreate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> validDomain<span style="color: #009900;">&#40;</span><span style="color: #000088;">$domain</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> updateUser<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$user</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> allowPasswordChange<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> setPassword<span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> updateExternalDB<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> canCreateAccounts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> adduser<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> strict<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> initUser<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$user</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$wgExtensionCredits</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'other'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'RadiusAuthPlugin'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'version'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1.0.0'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'author'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'James Young'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'description'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Automatic login with a RADIUS server'</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Lastly, put this in your LocalSetup.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;./extensions/RadiusAuthPlugin.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$wgAuth</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RadiusAuthPlugin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$wgGroupPermissions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'*'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'createaccount'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2010/02/mediawiki-radius-authentication-extension-radiusauthplugin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Example of an offline web app</title>
		<link>http://psyjinx.com/jyoung/2009/12/example-of-an-offline-web-app/</link>
		<comments>http://psyjinx.com/jyoung/2009/12/example-of-an-offline-web-app/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 16:54:25 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[manifest]]></category>
		<category><![CDATA[offline storage]]></category>

		<guid isPermaLink="false">http://psyjinx.com/jyoung/?p=204</guid>
		<description><![CDATA[<p>The app: http://psyjinx.com/iphone/</p>
<p>This is a very simple webapp.  It displays images that iPhones and iPod Touches can use as wallpaper.  There isn&#8217;t really a need for offline use with the iPhone, but the iPod Touch could benefit from it.  It took me about 10 minutes to learn what to do, and implement [...]]]></description>
			<content:encoded><![CDATA[<p>The app: <a href="http://psyjinx.com/iphone/">http://psyjinx.com/iphone/</a></p>
<p>This is a very simple webapp.  It displays images that iPhones and iPod Touches can use as wallpaper.  There isn&#8217;t really a need for offline use with the iPhone, but the iPod Touch could benefit from it.  It took me about 10 minutes to learn what to do, and implement it for full offline use. The key to making a web app work offline is to add a manifest file.</p>
<p><span id="more-204"></span><br />
The manifest file: I named mine page.manifest, but it can be anything.manifest.  The first line must be CACHE MANIFEST</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">CACHE MANIFEST
&nbsp;
<span style="color: #adadad; font-style: italic;"># html</span>
index.html
&nbsp;
<span style="color: #adadad; font-style: italic;"># images</span>
wallpaper1.jpg
wallpaper2.jpg
wallpaper3.jpg 
wallpaper4.jpg
wallpaper6.jpg
wallpaper7.jpg
wallpaper8.jpg
background.png
favicon.ico</pre></div></div>

<p>Add this to your html file:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;html manifest='page.manifest'&gt;</pre></div></div>

<p>The manifest file must be served as text/cache-manifest.  Add this to your apache conf file in the mines section.  My apache  install had a mime.types file</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">text/cache-manifest    manifest</pre></div></div>

<p>Restart apache and you are done</p>
<p>References:</p>
<ul>
<li><a href="http://developer.apple.com/iphone/library/documentation/AppleApplications/Reference/SafariWebContent/Client-SideStorage/Client-SideStorage.html">http://developer.apple.com/iphone/library/documentation/AppleApplications/Reference/SafariWebContent/Client-SideStorage/Client-SideStorage.html</a></li>
<li><a href="http://www.thecssninja.com/javascript/how-to-create-offline-webapps-on-the-iphone">http://www.thecssninja.com/javascript/how-to-create-offline-webapps-on-the-iphone</a></li>
<li><a href="http://www.w3.org/TR/offline-webapps/#offline">http://www.w3.org/TR/offline-webapps/#offline</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/12/example-of-an-offline-web-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Small JavaScript DateTimeTools object</title>
		<link>http://psyjinx.com/jyoung/2009/09/small-javascript-datetimetools-object/</link>
		<comments>http://psyjinx.com/jyoung/2009/09/small-javascript-datetimetools-object/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 23:58:03 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/jyoung/?p=172</guid>
		<description><![CDATA[<p>So I got the project working on a tv schedule at work.  As you can imagine there is work that needs to be done with dates and times when moving forward / back in the schedule.  I found a few things out there that were full blown date/time js libraries, but they were [...]]]></description>
			<content:encoded><![CDATA[<p>So I got the project working on a tv schedule at work.  As you can imagine there is work that needs to be done with dates and times when moving forward / back in the schedule.  I found a few things out there that were full blown date/time js libraries, but they were a bit more than what I needed and didn&#8217;t do exactly what I needed.  So I threw the following together.  It does have specific stuff in it that is probably not portable to other projects, but here it is.</p>
<p><span id="more-172"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> dateTimeTools <span style="color: #339933;">=</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: #003366; font-weight: bold;">var</span> me <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    me.<span style="color: #660066;">getMonthString</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>month<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> today <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> montharray <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'January'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'February'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'March'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'April'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'May'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'June'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'July'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'August'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'September'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'October'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'November'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'December'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        month <span style="color: #339933;">=</span> month <span style="color: #339933;">||</span> today.<span style="color: #660066;">getMonth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> montharray<span style="color: #009900;">&#91;</span>month <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    me.<span style="color: #660066;">getWeekdayString</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>weekday<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> today <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> dayarray <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'Sun.'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Mon.'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Tues.'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Weds.'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Thurs.'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Fri.'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Sat.'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        weekday <span style="color: #339933;">=</span> weekday <span style="color: #339933;">||</span> today.<span style="color: #660066;">getDay</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> dayarray<span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    me.<span style="color: #660066;">getDateString</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>theDate<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        theDate <span style="color: #339933;">=</span> theDate <span style="color: #339933;">||</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> year<span style="color: #339933;">,</span> month<span style="color: #339933;">,</span> date<span style="color: #339933;">,</span> weekday<span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// theDate can be either an instance of a Date object, or one of the custom date startDateTime objects used elsewhere</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>theDate.<span style="color: #660066;">hasOwnProperty</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'month'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #006600; font-style: italic;">// dealing w/ a custom startDateTime object</span>
            year <span style="color: #339933;">=</span> theDate.<span style="color: #660066;">year</span><span style="color: #339933;">;</span>
            month <span style="color: #339933;">=</span> me.<span style="color: #660066;">getMonthString</span><span style="color: #009900;">&#40;</span>theDate.<span style="color: #660066;">month</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            date <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>theDate.<span style="color: #660066;">date</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            weekday <span style="color: #339933;">=</span> me.<span style="color: #660066;">getWeekdayString</span><span style="color: #009900;">&#40;</span>theDate.<span style="color: #660066;">weekday</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: #006600; font-style: italic;">// dealing w/ a JS Date object</span>
            year <span style="color: #339933;">=</span> theDate.<span style="color: #660066;">getFullYear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            month <span style="color: #339933;">=</span> me.<span style="color: #660066;">getMonthString</span><span style="color: #009900;">&#40;</span>theDate.<span style="color: #660066;">getMonth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            date <span style="color: #339933;">=</span> theDate.<span style="color: #660066;">getDate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            weekday <span style="color: #339933;">=</span> me.<span style="color: #660066;">getWeekdayString</span><span style="color: #009900;">&#40;</span>theDate.<span style="color: #660066;">getDay</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>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> weekday <span style="color: #339933;">+</span> <span style="color: #3366CC;">', '</span> <span style="color: #339933;">+</span> month <span style="color: #339933;">+</span> <span style="color: #3366CC;">' '</span> <span style="color: #339933;">+</span> date <span style="color: #339933;">+</span> <span style="color: #3366CC;">', '</span> <span style="color: #339933;">+</span> year<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    me.<span style="color: #660066;">getOffsetTime</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>startDateTime<span style="color: #339933;">,</span> offset<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        offset <span style="color: #339933;">=</span> offset <span style="color: #339933;">||</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>offset <span style="color: #339933;">!==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #006600; font-style: italic;">// this isn't going to be very portable, requires page.startDateTime object on page to work</span>
            <span style="color: #006600; font-style: italic;">// returns a page.startDateTime object as well</span>
            <span style="color: #003366; font-weight: bold;">var</span> datetime <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            datetime.<span style="color: #660066;">setFullYear</span><span style="color: #009900;">&#40;</span>
                    startDateTime.<span style="color: #660066;">year</span><span style="color: #339933;">,</span>
                    parseInt<span style="color: #009900;">&#40;</span>startDateTime.<span style="color: #660066;">month</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                    parseInt<span style="color: #009900;">&#40;</span>startDateTime.<span style="color: #660066;">date</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            datetime.<span style="color: #660066;">setHours</span><span style="color: #009900;">&#40;</span>
                    parseInt<span style="color: #009900;">&#40;</span>startDateTime.<span style="color: #660066;">hour</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                    parseInt<span style="color: #009900;">&#40;</span>startDateTime.<span style="color: #660066;">minute</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            datetime.<span style="color: #660066;">setHours</span><span style="color: #009900;">&#40;</span>datetime.<span style="color: #660066;">getHours</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> offset<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #003366; font-weight: bold;">var</span> month <span style="color: #339933;">=</span> datetime.<span style="color: #660066;">getMonth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003366; font-weight: bold;">var</span> date <span style="color: #339933;">=</span> datetime.<span style="color: #660066;">getDate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003366; font-weight: bold;">var</span> year <span style="color: #339933;">=</span> datetime.<span style="color: #660066;">getFullYear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003366; font-weight: bold;">var</span> hour <span style="color: #339933;">=</span> datetime.<span style="color: #660066;">getHours</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003366; font-weight: bold;">var</span> minute <span style="color: #339933;">=</span> datetime.<span style="color: #660066;">getMinutes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #006600; font-style: italic;">// pad everything w/ zeroes</span>
            month <span style="color: #339933;">=</span> dateTimeTools.<span style="color: #660066;">getPaddedMonth</span><span style="color: #009900;">&#40;</span>month<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            date <span style="color: #339933;">=</span> dateTimeTools.<span style="color: #660066;">getPaddedDate</span><span style="color: #009900;">&#40;</span>date<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            hour <span style="color: #339933;">=</span> dateTimeTools.<span style="color: #660066;">getPaddedHour</span><span style="color: #009900;">&#40;</span>hour<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            minute <span style="color: #339933;">=</span> dateTimeTools.<span style="color: #660066;">getPaddedMinute</span><span style="color: #009900;">&#40;</span>minute<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            minute <span style="color: #339933;">=</span> minute <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">30</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'00'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'30'</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#123;</span>
                month <span style="color: #339933;">:</span> month<span style="color: #339933;">,</span>
                date <span style="color: #339933;">:</span> date<span style="color: #339933;">,</span>
                year <span style="color: #339933;">:</span> year<span style="color: #339933;">,</span>
                hour <span style="color: #339933;">:</span> hour<span style="color: #339933;">,</span>
                minute <span style="color: #339933;">:</span> minute<span style="color: #339933;">,</span>
                time <span style="color: #339933;">:</span> hour <span style="color: #339933;">+</span> <span style="color: #3366CC;">':'</span> <span style="color: #339933;">+</span> minute <span style="color: #339933;">+</span> <span style="color: #3366CC;">':00'</span>
            <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> startDateTime<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    me.<span style="color: #660066;">getPaddedDate</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>date<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> today <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        date <span style="color: #339933;">=</span> date.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> today.<span style="color: #660066;">getDate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> date <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">10</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'0'</span> <span style="color: #339933;">+</span> date <span style="color: #339933;">:</span> date<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    me.<span style="color: #660066;">getPaddedHour</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>hour<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> today <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        hour <span style="color: #339933;">=</span> hour.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> today.<span style="color: #660066;">getHours</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> hour <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">10</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'0'</span> <span style="color: #339933;">+</span> hour <span style="color: #339933;">:</span> hour<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    me.<span style="color: #660066;">getPaddedMinute</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>minute<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> today <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        minute <span style="color: #339933;">=</span> minute.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> today.<span style="color: #660066;">getMinutes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> minute <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">10</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'0'</span> <span style="color: #339933;">+</span> minute <span style="color: #339933;">:</span> minute<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    me.<span style="color: #660066;">getPaddedMonth</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>month<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> today <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        month <span style="color: #339933;">=</span> month.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> today.<span style="color: #660066;">getMonth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> month <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">10</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'0'</span> <span style="color: #339933;">+</span> month <span style="color: #339933;">:</span> month<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    me.<span style="color: #660066;">getTwelveHourTime</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>hour<span style="color: #339933;">,</span> minute<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> today <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        hour <span style="color: #339933;">=</span> hour.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> today.<span style="color: #660066;">getHours</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;">// using toString() since 0 will eval to false</span>
        minute <span style="color: #339933;">=</span> minute.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> today.<span style="color: #660066;">getMinutes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// manipulate the hour to account for midnight and noon</span>
        <span style="color: #003366; font-weight: bold;">var</span> suffix <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>hour <span style="color: #339933;">&gt;=</span> <span style="color: #CC0000;">12</span> <span style="color: #339933;">&amp;&amp;</span> hour <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">24</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">'PM'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'AM'</span><span style="color: #339933;">;</span>
        hour <span style="color: #339933;">=</span> hour <span style="color: #339933;">&gt;=</span> <span style="color: #CC0000;">25</span> <span style="color: #339933;">?</span> hour <span style="color: #339933;">-</span> <span style="color: #CC0000;">24</span> <span style="color: #339933;">:</span> hour<span style="color: #339933;">;</span>
        hour <span style="color: #339933;">=</span> hour <span style="color: #339933;">===</span> <span style="color: #3366CC;">'0'</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">12</span> <span style="color: #339933;">:</span> hour<span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">return</span> hour <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">12</span> <span style="color: #339933;">?</span> <span style="color: #009900;">&#40;</span>hour <span style="color: #339933;">-</span> <span style="color: #CC0000;">12</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">':'</span> <span style="color: #339933;">+</span> minute <span style="color: #339933;">+</span> <span style="color: #3366CC;">' '</span> <span style="color: #339933;">+</span> suffix <span style="color: #339933;">:</span> hour <span style="color: #339933;">+</span> <span style="color: #3366CC;">':'</span> <span style="color: #339933;">+</span> minute <span style="color: #339933;">+</span> <span style="color: #3366CC;">' '</span> <span style="color: #339933;">+</span> suffix<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">return</span> me<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/09/small-javascript-datetimetools-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ever need to iterate though all the members of an object (javascript)?</title>
		<link>http://psyjinx.com/jyoung/2009/09/ever-need-to-iterate-though-all-the-members-of-an-object-javascript/</link>
		<comments>http://psyjinx.com/jyoung/2009/09/ever-need-to-iterate-though-all-the-members-of-an-object-javascript/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 15:34:02 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/jyoung/?p=169</guid>
		<description><![CDATA[<p>You know you have&#8230; if you are like me though, you can never remember the exact syntax.  Here it is:</p>

for &#40;var name in object&#41;
&#123;
    if &#40;object.hasOwnProperty&#40;name&#41;&#41;
    &#123;
        alert&#40;name + ': ' + object&#91;name&#93;&#41;;
    &#125;
&#125;

]]></description>
			<content:encoded><![CDATA[<p>You know you have&#8230; if you are like me though, you can never remember the exact syntax.  Here it is:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> <span style="color: #000066;">name</span> <span style="color: #000066; font-weight: bold;">in</span> object<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>object.<span style="color: #660066;">hasOwnProperty</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">': '</span> <span style="color: #339933;">+</span> object<span style="color: #009900;">&#91;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/09/ever-need-to-iterate-though-all-the-members-of-an-object-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI DataTable &#8211; Using a dateCellEditor with an asyncSubmitter</title>
		<link>http://psyjinx.com/jyoung/2009/07/yui-datatable-using-a-datecelleditor-with-an-asyncsubmitter/</link>
		<comments>http://psyjinx.com/jyoung/2009/07/yui-datatable-using-a-datecelleditor-with-an-asyncsubmitter/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 03:02:26 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[asyncSubmitter]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[dateCellEditor]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=86</guid>
		<description><![CDATA[<p>If you are wondering what a dateCellEditor and asyncSubmitter are go check out http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html.  See the last_login column?  Click on that, you will get a cool calendar that pops up for you to change the date.  Pretty handy. That Inline Cell Editing page touches on how to implement that, but it doesn&#8217;t cover the actual [...]]]></description>
			<content:encoded><![CDATA[<p>If you are wondering what a dateCellEditor and asyncSubmitter are go check out http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html.  See the last_login column?  Click on that, you will get a cool calendar that pops up for you to change the date.  Pretty handy. That <a href="http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html">Inline Cell Editing</a> page touches on how to implement that, but it doesn&#8217;t cover the actual asyncSubmitter when using a dateCellEditor which is where I could have used a bit more information.  </p>
<p>This example uses five files:</p>
<ul>
<li>index.html &#8211; template for the page</li>
<li>javascript.js &#8211; javascript that powers the datatable</li>
<li>datatabledata.php &#8211; back end process that returns the data for the datatable in JSON format</li>
<li>update.php &#8211; back end process that updates the data in the database based on what the user changed</li>
</ul>
<p>Below is a code example that spells it all out.</p>
<p><span id="more-86"></span><br />
<em>index.html</em></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>DataTable inline cell editing with dateCellEditor and asyncSubmitter example<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/reset-fonts-grids/reset-fonts-grids.css&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/base/base-min.css&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/datatable/assets/skins/sam/datatable.css&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/calendar/assets/skins/sam/calendar.css&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'yui-skin-sam'</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;datatable&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/yahoo-dom-event/yahoo-dom-event.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/connection/connection-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/calendar/calendar-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/json/json-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/element/element-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/datasource/datasource-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/datatable/datatable-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;javascript.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p><em>javascript.js</em></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> STWPT <span style="color: #339933;">=</span> YAHOO.<span style="color: #003366; font-weight: bold;">namespace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;stwpt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
STWPT.<span style="color: #660066;">init</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>
    STWPT.<span style="color: #660066;">getDataTableData</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: #339933;">;</span>
&nbsp;
STWPT.<span style="color: #660066;">getDataTableData</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: #003366; font-weight: bold;">var</span> submitter <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>callback<span style="color: #339933;">,</span> newValue<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> record <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">getRecord</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> column <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">getColumn</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> oldValue <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> datatable <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">getDataTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// send the data to our update page to update the value in the database</span>
        YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">Connect</span>.<span style="color: #660066;">asyncRequest</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'POST'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'update.php'</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span>
            success<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">lang</span>.<span style="color: #660066;">JSON</span>.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">responseText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">replyType</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">'date'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> r.<span style="color: #660066;">data</span> <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span>.<span style="color: #660066;">parseDate</span><span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
                <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">replyCode</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">'201'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> callback<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> r.<span style="color: #660066;">data</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: #000066;">alert</span><span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">replyText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    callback<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;">&#125;</span><span style="color: #339933;">,</span>
            failure<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">statusText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                callback<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: #339933;">,</span>
            scope<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'action=cellEdit&amp;column='</span> <span style="color: #339933;">+</span> column.<span style="color: #660066;">key</span> <span style="color: #339933;">+</span>
                     <span style="color: #3366CC;">'&amp;newValue='</span> <span style="color: #339933;">+</span> escape<span style="color: #009900;">&#40;</span>newValue<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
                     <span style="color: #3366CC;">'&amp;oldValue='</span> <span style="color: #339933;">+</span> escape<span style="color: #009900;">&#40;</span>oldValue<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
                      <span style="color: #3366CC;">'&amp;team_id='</span> <span style="color: #339933;">+</span> record.<span style="color: #660066;">getData</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'team_id'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
                     <span style="color: #3366CC;">'&amp;type=team'</span>
        <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> textEditor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">TextboxCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> disableBtns<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span> asyncSubmitter<span style="color: #339933;">:</span> submitter <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myColumnDefs <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'team_id'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Id'</span><span style="color: #339933;">,</span> hidden<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'name'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Team Name'</span><span style="color: #339933;">,</span> sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> editor<span style="color: #339933;">:</span> textEditor <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'start_date'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Start Date'</span><span style="color: #339933;">,</span> sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> editor<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DateCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> asyncSubmitter<span style="color: #339933;">:</span> submitter <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> formatter<span style="color: #339933;">:</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span>.<span style="color: #660066;">formatDate</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'end_date'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'End Date'</span><span style="color: #339933;">,</span> sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> editor<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DateCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> asyncSubmitter<span style="color: #339933;">:</span> submitter <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> formatter<span style="color: #339933;">:</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span>.<span style="color: #660066;">formatDate</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myDataSource <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'datatabledata.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">responseType</span> <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span>.<span style="color: #660066;">TYPE_JSON</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">connXhrMode</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'queueRequests'</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">connMethodPost</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">responseSchema</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
        resultsList<span style="color: #339933;">:</span> <span style="color: #3366CC;">'teams'</span><span style="color: #339933;">,</span>
        fields<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'team_id'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'name'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'start_date'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'date'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'end_date'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'date'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> onCellClick <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>oArgs<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">onEventShowCellEditor</span><span style="color: #009900;">&#40;</span>oArgs<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    myDataTable.<span style="color: #660066;">subscribe</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'cellClickEvent'</span><span style="color: #339933;">,</span> onCellClick<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> mySuccessHandler <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: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">onDataReturnAppendRows</span>.<span style="color: #660066;">apply</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> arguments<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myFailureHandler <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: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'FAIL'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> callback <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
        success<span style="color: #339933;">:</span> mySuccessHandler<span style="color: #339933;">,</span>
        failure<span style="color: #339933;">:</span> myFailureHandler<span style="color: #339933;">,</span>
        scope<span style="color: #339933;">:</span> myDataTable
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">Event</span>.<span style="color: #660066;">onDOMReady</span><span style="color: #009900;">&#40;</span>STWPT.<span style="color: #660066;">init</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><em>datatabledata.php</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// NOTE: if this wasn't an example, this would be done in CodeIgniter</span>
<span style="color: #990000;">mysql_pconnect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'msyql_username'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mysql_password'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql_database_name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$user_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>      <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
<span style="color: #000088;">$facility_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
&nbsp;
<span style="color: #000088;">$teams</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: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT t.id AS team_id,
               t.name,
               t.datatable_key,
               DATE_FORMAT(t.start_date, '%m/<span style="color: #009933; font-weight: bold;">%d</span>/%Y') AS start_date,
               DATE_FORMAT(t.end_date, '%m/<span style="color: #009933; font-weight: bold;">%d</span>/%Y') AS end_date
          FROM teams AS t,
               user_facility_teams AS uft
         WHERE uft.user_id = <span style="color: #006699; font-weight: bold;">{$user_id}</span>
           AND uft.facility_id = <span style="color: #006699; font-weight: bold;">{$facility_id}</span>
           AND t.id = uft.team_id
&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">array_push</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$teams</span><span style="color: #339933;">,</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'{&quot;teams&quot; : '</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$response</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$teams</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$response</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'}'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$response</span><span style="color: #339933;">;</span></pre></div></div>

<p><em>update.php</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// NOTE: if this wasn't an example, this would be done in CodeIgniter</span>
<span style="color: #990000;">mysql_pconnect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'msyql_username'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mysql_password'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql_database_name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$user_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>      <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
<span style="color: #000088;">$facility_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
&nbsp;
<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'newValue'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'team_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'team_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$json_response_value</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</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: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// if we are changing the 'name' we must also update the key used for datatable column definitions</span>
<span style="color: #000088;">$set_datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[ -]/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'_'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/%/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'percent'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$datatable_key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$datatable_key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$set_datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;, datatable_key = '<span style="color: #006699; font-weight: bold;">{$datatable_key}</span>'&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;UPDATE teams
               SET <span style="color: #006699; font-weight: bold;">{$data['column']}</span> = '<span style="color: #006699; font-weight: bold;">{$data['value']}</span>' <span style="color: #006699; font-weight: bold;">{$set_datatable_key}</span>
             WHERE id = <span style="color: #006699; font-weight: bold;">{$data['team_id']}</span>
    &quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$replyType</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'string'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'start_date'</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'end_date'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;UPDATE teams
               SET <span style="color: #006699; font-weight: bold;">{$data['column']}</span> = STR_TO_DATE('<span style="color: #006699; font-weight: bold;">{$data['value']}</span>', '%a <span style="color: #009933; font-weight: bold;">%b</span> <span style="color: #009933; font-weight: bold;">%d</span> %Y')
             WHERE id = <span style="color: #006699; font-weight: bold;">{$data['team_id']}</span>
    &quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$replyType</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'date'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'replyCode'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'201'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'replyText'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Ok'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'replyType'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$replyType</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'data'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$json_response_value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$response</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/07/yui-datatable-using-a-datecelleditor-with-an-asyncsubmitter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>YUI Datatable &#8211; Custom Parser Example</title>
		<link>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-parser-example/</link>
		<comments>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-parser-example/#comments</comments>
		<pubDate>Sun, 24 May 2009 01:40:03 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=16</guid>
		<description><![CDATA[<p>For entry, with my validator, I am validating that no matter what a user types in for a height, I convert it to a float to store in the database (5.10).  In retrospect, I should convert it to the inches value, but this example isn&#8217;t doing that.</p>
<p>For display, with my formatter, I am standardizing [...]]]></description>
			<content:encoded><![CDATA[<p>For entry, with my validator, I am validating that no matter what a user types in for a height, I convert it to a float to store in the database (5.10).  In retrospect, I should convert it to the inches value, but this example isn&#8217;t doing that.</p>
<p>For display, with my formatter, I am standardizing the format to display as a proper height (5&#8242; 10&#8243;).</p>
<p>All that is left is to get the column sort to not think someone that is 22&#8242; tall is shorter than someone that is 3&#8242; tall. For numbers to sort numerically, the type must be a Number, not a String.  This could be easily accomplished with YAHOO.widget.DataTable.formatNumber, but I was hoping to be able to fix my problem of 5.10 changing to 5.1 here.  I was not able to do that, as you can see by the commented out line below, so I took care of it in the validator (kinda).</p>
<p>Due to the lack of me finding, quickly, an example of a custom parser, I am posting this anyway, even though it is not really needed.</p>
<p>The parser is an object property defined in the array of objects defining the fields for the datasources responseSchema (assuming JSON).</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">STWPT.<span style="color: #660066;">parseHeight</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    oData <span style="color: #339933;">=</span> parseFloat<span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #006600; font-style: italic;">// convert to number (float)</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// force decimal precision (5.1 &amp;gt; 5.10)</span>
    <span style="color: #006600; font-style: italic;">// this converts it back to a string</span>
    <span style="color: #006600; font-style: italic;">// oData = oData.toFixed(2);     </span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">return</span> oData<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The following is a snippet out of a larger script that shows just the pieces that connect the datatable creation to the custom parser shown above.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myDataSource <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/path/to/datasource'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
myDataSource.<span style="color: #660066;">responseType</span> <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span>.<span style="color: #660066;">TYPE_JSON</span><span style="color: #339933;">;</span>
myDataSource.<span style="color: #660066;">connMethodPost</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
myDataSource.<span style="color: #660066;">responseSchema</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    resultsList<span style="color: #339933;">:</span> <span style="color: #3366CC;">'athletes'</span><span style="color: #339933;">,</span>
    fields<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'first_name'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'string'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'last_name'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'string'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'height'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">parseHeight</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'athletes-datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-parser-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI Datatable &#8211; Custom Validator Example</title>
		<link>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-validator-example/</link>
		<comments>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-validator-example/#comments</comments>
		<pubDate>Sun, 24 May 2009 01:37:12 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=14</guid>
		<description><![CDATA[<p>This is the validator I am using to insure that a height (or float) was entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5.10 5 10), and that text (tall, short) was not entered and covert a valid  non-float value entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5 10) to a float (5.10), which is how I want to store the [...]]]></description>
			<content:encoded><![CDATA[<p>This is the validator I am using to insure that a height (or float) was entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5.10 5 10), and that text (tall, short) was not entered and covert a valid  non-float value entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5 10) to a float (5.10), which is how I want to store the value in the database for this example.</p>
<p>Now that we have a custom validator created, it would be helpful to know where to call it from. A validator is an object parameter to the object that is sent to a textboxCellEditor.</p>
<p>The textboxCellEditor is an object parameter to the object that defines the column, in the array of objects that is sent to the datatable constructor.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">STWPT.<span style="color: #660066;">validateHeight</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> pattern<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// regexp pattern holder</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// heightFormat is expected to be a decimal number for height</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// add a space if none was provided (5'10&quot;)</span>
    <span style="color: #006600; font-style: italic;">// 5'10&quot; -&gt; 5' 10 - note the trailing non-digit characters are dropped</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/'(\d+)/g</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot; $1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// turn a space into a decimal - 5 10, 5' 10&quot; -&gt; 5.10, 5' 10&quot;</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/ /g</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// remove all single and double quotes - 5' 10&quot;, 5'.10&quot; -&gt; 5.10</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[&quot;']/g</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// enforce x.0x format - 5' 1&quot; -&gt; 5' 01&quot; -&gt; 5.01</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/\.([1-9])$/</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">'.0$1'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// at this point we should have a float, which should eval &gt; 0</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>oData <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> oData<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// validation only succeeds if a value is returned</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The following is a snippet out of a larger script that shows just the pieces that connect the datatable creation to the custom validator shown above.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> heightEditor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">TextboxCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    disableBtns<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
    asyncSubmitter<span style="color: #339933;">:</span> submitter<span style="color: #339933;">,</span>
    validator<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">validateHeight</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myColumnDefs <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#123;</span>
    key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'height'</span><span style="color: #339933;">,</span>
    label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Height'</span><span style="color: #339933;">,</span>
    sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    editor<span style="color: #339933;">:</span> heightEditor<span style="color: #339933;">,</span>
    formatter<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">formatHeight</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'athletes-datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-validator-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI Datatable &#8211; Custom Formatter Example</title>
		<link>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-formatter-example/</link>
		<comments>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-formatter-example/#comments</comments>
		<pubDate>Sun, 24 May 2009 01:29:35 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=3</guid>
		<description><![CDATA[<p>I needed to create a custom formatter for a datatable that contained a cell for an individuals height. The height is stored in the database as a float. 5&#8242; 10&#8243; would be in the database as 5.10.   In retrospect I should be storing the height as inches and converting it to feet as [...]]]></description>
			<content:encoded><![CDATA[<p>I needed to create a custom formatter for a datatable that contained a cell for an individuals height. The height is stored in the database as a float. 5&#8242; 10&#8243; would be in the database as 5.10.   In retrospect I should be storing the height as inches and converting it to feet as needed.  We want to display 5&#8242; 10&#8243;, this is where our custom formatter comes in.</p>
<p>The formatter is an object property to the column definition in the array of objects that is sent to the datable when it is created.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">STWPT.<span style="color: #660066;">formatHeight</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>elCell<span style="color: #339933;">,</span> oRecord<span style="color: #339933;">,</span> oColumn<span style="color: #339933;">,</span> oData<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">toString</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;">// oData must be a string</span>
    <span style="color: #003366; font-weight: bold;">var</span> part <span style="color: #339933;">=</span> oData.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// splitting the float on the decimal</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// take care of undefined - set it to 0</span>
    <span style="color: #006600; font-style: italic;">// if we have an int (like 5, not 5.1), part[1] is 'undefined'</span>
    part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">?</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// values like 5.10 are changed to 5.1</span>
    <span style="color: #006600; font-style: italic;">// if textboxCellEditor is used, 5.1 will show as the value (not 5.10)</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">'1'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'10'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    elCell.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'<span style="color: #000099; font-weight: bold;">\'</span> '</span> <span style="color: #339933;">+</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The following is a snippet out of a larger script that shows just the pieces that connect the datatable creation to the custom formatter shown above.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myColumnDefs <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#123;</span>
    key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'height'</span><span style="color: #339933;">,</span>
    label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Height'</span><span style="color: #339933;">,</span>
    sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    editor<span style="color: #339933;">:</span> heightEditor<span style="color: #339933;">,</span>
    formatter<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">formatHeight</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'athletes-datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-formatter-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
