<?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; javascript</title>
	<atom:link href="http://psyjinx.com/jyoung/tag/javascript/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>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; 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>
