<?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>李保存 &#187; Product/Feature-Desig</title>
	<atom:link href="http://libaocun.com/tag/productfeature-desig/feed" rel="self" type="application/rss+xml" />
	<link>http://libaocun.com</link>
	<description>Think globally, act locally.</description>
	<lastBuildDate>Wed, 01 Sep 2010 10:38:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Designing Your Own Recent Posts Widget for MSDN Blog</title>
		<link>http://libaocun.com/designing-your-own-recent-posts-widget-for-msdn-blog</link>
		<comments>http://libaocun.com/designing-your-own-recent-posts-widget-for-msdn-blog#comments</comments>
		<pubDate>Wed, 29 Jul 2009 03:57:29 +0000</pubDate>
		<dc:creator>Bali</dc:creator>
				<category><![CDATA[English - 英文]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ACT]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[Product/Feature-Desig]]></category>

		<guid isPermaLink="false">http://www.balionweb.com/?p=60</guid>
		<description><![CDATA[In my MSDN blog, I need “Recent Posts”, but I don’t need archive side bar. After having played with template for a while, still no luck. Hmmm, looks like I have to DIY it. Fortunately in News sidebar, you can fill in raw html including JavaScript. Then next question is where we can retrieve post [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US"><span style="font-family: Calibri;font-size: small">In my MSDN blog, I need “Recent Posts”, but I don’t need archive side bar. After having played with template for a while, still no luck. Hmmm, looks like I have to DIY it. Fortunately in News sidebar, you can fill in raw html including <a href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. Then next question is where we can retrieve post tiles. The immediate idea is from current <a href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a> document. Through experiments, I found this is impossible because the DOM is not fully loaded yet when the script is executed. Later, I figured it out that all posts title can be gotten from <a href="http://en.wikipedia.org/wiki/RSS_(file_format)">RSS</a>. For my blog, the address is </span><a href="http://blogs.msdn.com/bali_msft/rss.xml"><span style="font-family: Calibri;color: #800080;font-size: small">http://blogs.msdn.com/bali_msft/rss.xml</span></a><span style="font-family: Calibri;font-size: small">. One thing worth noticing is the fact that RSS in MSDN blog is not up to date &#8211; Your post will not instantly appear in the RSS. After I get all posts in RSS format, things became much easier. And then I go ahead to add more interesting things:</span></span></p>
<ul>
<li>
<div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 21pt;text-indent: -21pt"><span lang="EN-US"><span style="font-family: Calibri;font-size: small">Posts background use two colors in turn</span></span></div>
</li>
<li>
<div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 21pt;text-indent: -21pt"><span lang="EN-US"> </span><span lang="EN-US"><span style="font-family: Calibri;font-size: small">Show a new tag for posts less than 3 days old</span></span></div>
</li>
<li>
<div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 21pt;text-indent: -21pt"><span lang="EN-US"><span style="font-family: Calibri;font-size: small">Show latest 8 posts only</span></span></div>
</li>
<li>
<div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 21pt;text-indent: -21pt"><span lang="EN-US"><span style="font-family: Calibri;font-size: small">Show posts&#8217; age</span></span></div>
</li>
</ul>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US"><span style="font-family: Calibri;font-size: small">So, the final thing will look like this:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US"><img style="width: 209px;height: 305px" src="http://lh5.ggpht.com/_A9xfBBUVmv4/SZA17PBQS2I/AAAAAAAABdk/7keHM38EZUw/s400/MyRecentPosts.JPG" alt="" width="209" height="305" /></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US"> </span></p>
<p><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US"><span style="font-family: Calibri;font-size: small">If you find it is useful, feel free to paste below code to you blog’s news section. Note to customize “<em>Configurable params</em>” to your own needs and leave other code intact. It works well at least in my IE 8 and Firefox 3.0.6.</span></span></p>
<table class="MsoTableGrid" style="border: medium none;background: #eeece1 none repeat scroll 0% 0%;border-collapse: collapse" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: medium none black;padding: 0cm 5.4pt;background-color: transparent;width: 821.75pt" width="1096" valign="top"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">&lt;</span><span style="font-family: 'Courier New';color: #a31515;font-size: 10pt" lang="EN-US">div</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> </span><span style="color: red">id</span><span style="color: blue">=&#8221;RecentPosts&#8221;&gt;&lt;/</span><span style="color: #a31515">div</span><span style="color: blue">&gt;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">&lt;</span><span style="font-family: 'Courier New';color: #a31515;font-size: 10pt" lang="EN-US">Script</span><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">&gt;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Configurable params</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">var</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> recentPostNumber = 8;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">var</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> rssUrl = </span><span style="color: #a31515">&#8220;http://blogs.msdn.com/bali_msft/rss.xml&#8221;</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">var</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> title = </span><span style="color: #a31515">&#8220;My Recent Posts&#8221;</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">var</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> newPostAgeInHour = 72;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> </span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Cacluate age of one post. It is all about getting time span in Javascript</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// return formate: x min; x hour y min, x day y min, x days, x yeas (ago)</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Refer to: http://www.w3schools.com/jsref/jsref_obj_date.asp</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">function</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> calculateAge(postDate)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">{</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> ret = </span><span style="color: #a31515">&#8220;fresh!&#8221;</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>CurrentDate = </span><span style="color: blue">new</span><span style="color: #000000"> Date();</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>TimeSpan = </span><span style="color: blue">new</span><span style="color: #000000"> Date(CurrentDate &#8211; postDate);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> mySpanArray = </span><span style="color: blue">new</span><span style="color: #000000"> Array();</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> mySpanArray[0] = TimeSpan.getUTCFullYear()-1970;<br />
mySpanArray[1] = TimeSpan.getUTCMonth();<br />
mySpanArray[2] = TimeSpan.getUTCDate()-1;<br />
mySpanArray[3] = TimeSpan.getUTCHours();<br />
mySpanArray[4] = TimeSpan.getUTCMinutes();<br />
</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> TimeSpanTagArray_1 = </span><span style="color: blue">new</span><span style="color: #000000"> Array(</span><span style="color: #a31515">&#8220;years&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;months&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;days&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;hours&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;minutes&#8221;</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> TimeSpanTagArray_2 = </span><span style="color: blue">new</span><span style="color: #000000"> Array(</span><span style="color: #a31515">&#8220;year&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;month&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;day&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;hour&#8221;</span><span style="color: #000000">, </span><span style="color: #a31515">&#8220;minute&#8221;</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: green">// Starting from non-zero element and pick two significant values</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">for</span><span style="color: #000000">(i = 0; i &lt; mySpanArray.length; i++) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">if</span><span style="color: #000000">(mySpanArray[i] != 0) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> correctTag = (mySpanArray[i] == 1)?(TimeSpanTagArray_2[i]):(TimeSpanTagArray_1[i]);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>ret = mySpanArray[i] + </span><span style="color: #a31515">&#8221; &#8220;</span><span style="color: #000000"> + correctTag;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">if</span><span style="color: #000000">(i+1 &lt; mySpanArray.length &amp;&amp; mySpanArray[i+1] != 0) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>correctTag = (mySpanArray[i+1] == 1)?(TimeSpanTagArray_2[i+1]):(TimeSpanTagArray_1[i+1]);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>ret = ret + </span><span style="color: #a31515">&#8220;, &#8220;</span><span style="color: #000000"> + mySpanArray[i+1] + </span><span style="color: #a31515">&#8221; &#8220;</span><span style="color: #000000"> + correctTag;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">break</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">return</span><span style="color: #000000"> ret;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> </span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Display the recent posts</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Refer to: </span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// <a href="http://www.w3schools.com/DOM/dom_node.asp">http://www.w3schools.com/DOM/dom_node.asp</a></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// <a href="http://www.w3schools.com/DOM/dom_methods.asp">http://www.w3schools.com/DOM/dom_methods.asp</a></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">function</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> displayPosts (xmldoc)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">{</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> newTag = </span><span style="color: #a31515">&#8220;&lt;SPAN style=\&#8221;COLOR: red\&#8221;&gt;(New!)&lt;/SPAN&gt;&#8221;</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> posts = xmldoc.getElementsByTagName(</span><span style="color: #a31515">&#8220;item&#8221;</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> displayText = </span><span style="color: #a31515">&#8220;&lt;h3&gt;&#8221;</span><span style="color: #000000"> + title + </span><span style="color: #a31515">&#8220;&lt;/h3&gt;&lt;UL&gt;&#8221;</span><span style="color: #000000">;<span> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">if</span><span style="color: #000000"> (posts.length &lt; recentPostNumber) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>recentPostNumber = posts.length;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">for</span><span style="color: #000000">(</span><span style="color: blue">var</span><span style="color: #000000"> i = 0; i &lt; recentPostNumber; i++)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>{</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>PostTitle = posts[i].firstChild.firstChild.nodeValue;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>PostLink = posts[i].firstChild.nextSibling.firstChild.nodeValue;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>PostDateStr = posts[i].firstChild.nextSibling.nextSibling.firstChild.nodeValue;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>PostDate = </span><span style="color: blue">new</span><span style="color: #000000"> Date(PostDateStr);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>CurrentDate = </span><span style="color: blue">new</span><span style="color: #000000"> Date();</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: green">// Calculate age</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> _PostAge = calculateAge(PostDate);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> PostAge = </span><span style="color: #a31515">&#8220;&lt;SPAN style=\&#8221;font-size: 80%; color: black\&#8221;&gt; (&#8220;</span><span style="color: #000000"> +_PostAge + </span><span style="color: #a31515">&#8221; ago)&lt;/SPAN&gt;&#8221;</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: green">// Show a new tag for posts happening last days defined by &#8216;newPostAgeInHour&#8217;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> myNewTag = </span><span style="color: #a31515">&#8220;&#8221;</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">if</span><span style="color: #000000">((CurrentDate.getTime() &#8211; PostDate.getTime())/1000/60 &lt; newPostAgeInHour * 60) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>myNewTag = newTag;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: green">// Get background color</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> BKColor = (i%2 == 0)?(</span><span style="color: #a31515">&#8220;#B8CCE4&#8243;</span><span style="color: #000000">):(</span><span style="color: #a31515">&#8220;#DBE5F1&#8243;</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>displayText = displayText + </span><span style="color: #a31515">&#8220;&lt;LI style=\&#8221;background-color:&#8221;</span><span style="color: #000000"> + BKColor + </span><span style="color: #a31515">&#8220;\&#8221;&gt;&lt;A href=\&#8221;"</span><span style="color: #000000"> + PostLink + </span><span style="color: #a31515">&#8220;\&#8221;&gt;&#8221;</span><span style="color: #000000"> + myNewTag + PostTitle + PostAge + </span><span style="color: #a31515">&#8220;&lt;/A&gt;&lt;/LI&gt;&#8221;</span><span style="color: #000000"><span> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>displayText = displayText + </span><span style="color: #a31515">&#8220;&lt;/UL&gt;&#8221;</span><span style="color: #000000">;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">var</span><span style="color: #000000"> target = document.getElementById(</span><span style="color: #a31515">&#8220;RecentPosts&#8221;</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>target.innerHTML=displayText;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> </span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Call back</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">function</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> complete(){</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span><span style="color: #000000"> </span></span><span style="color: blue">if</span><span style="color: #000000"> (req.readyState == 4) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span> </span></span><span style="font-family: 宋体;font-size: 10pt"> </span></span><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">if</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> (req.status == 200) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>displayPosts (req.responseXML);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> </span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Initial async call</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">function</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> getPosts()</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">{</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体;font-size: 10pt"><span style="color: #000000"> </span></span><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">if</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> (window.XMLHttpRequest) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span> </span></span><span style="font-family: 宋体;font-size: 10pt"> </span></span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">req = </span><span style="color: blue">new</span><span style="color: #000000"> XMLHttpRequest();</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体;font-size: 10pt"><span style="color: #000000"> </span></span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">}</span><span style="color: blue">else</span><span style="color: #000000"> </span><span style="color: blue">if</span><span style="color: #000000"> (window.ActiveXObject) {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span> </span></span><span style="font-family: 宋体;font-size: 10pt"> </span></span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">req = </span><span style="color: blue">new</span><span style="color: #000000"> ActiveXObject(</span><span style="color: #a31515">&#8220;Microsoft.XMLHTTP&#8221;</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 宋体;font-size: 10pt"> </span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US">}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体;font-size: 10pt"><span style="color: #000000"> </span></span><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">if</span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">(req){</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span> </span></span><span style="font-family: 宋体;font-size: 10pt"> </span></span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">req.open(</span><span style="color: #a31515">&#8220;GET&#8221;</span><span style="color: #000000">, rssUrl, </span><span style="color: blue">true</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span> </span></span><span style="font-family: 宋体;font-size: 10pt"> </span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US">req.onreadystatechange = complete;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span> </span></span><span style="font-family: 宋体;font-size: 10pt"> </span></span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">req.send(</span><span style="color: blue">null</span><span style="color: #000000">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: #000000"><span style="font-family: 宋体;font-size: 10pt"> </span><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US">}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000"> </span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: green;font-size: 10pt" lang="EN-US">// Entry point </span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';font-size: 10pt" lang="EN-US"><span style="color: #000000">getPosts();</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">&lt;/</span><span style="font-family: 'Courier New';color: #a31515;font-size: 10pt" lang="EN-US">Script</span><span style="font-family: 'Courier New';color: blue;font-size: 10pt" lang="EN-US">&gt;</span></p>
<p></span></td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US"><span style="font-family: Calibri;font-size: small"> </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://libaocun.com/designing-your-own-recent-posts-widget-for-msdn-blog/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
