<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://msnwindowslive.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fmsnwindowslive.spaces.live.com%2fcategory%2fLive%2bMessenger%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>MSN and Windows Live: Live Messenger</title><description /><link>http://MSNWindowsLive.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catLive%2bMessenger</link><language>en-US</language><pubDate>Mon, 13 Oct 2008 19:11:13 GMT</pubDate><lastBuildDate>Mon, 13 Oct 2008 19:11:13 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://MSNWindowsLive.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-2719028481651278955</live:id><live:alias>MSNWindowsLive</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Windows Live Messenger Web Controls - Part 2</title><link>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!422.entry</link><description>&lt;div style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows Live" rel=tag&gt;Windows Live&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Windows Live Messenger" rel=tag&gt;Windows Live Messenger&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Windows Live Messenger API" rel=tag&gt;Windows Live Messenger API&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Programming" rel=tag&gt;Programming&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Web based Windows Live Messenger" rel=tag&gt;Web based Windows Live Messenger&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Hopefully you will have read and followed the code from the first part of this article. The first part covered most of base functionality including how to sign in, get the users details and get their contact list. What is left is how to actually carry out a conversation with a contact. &lt;p&gt;Unfortunately I'm receiving errors when I try to post this article up here on Windows Live Spaces therefore to see this second part of the tutorial on how to integrate Windows Live Messenger into your own web site, please go :- &lt;h1&gt;&lt;a href="http://www.liveside.net/blogs/developer/archive/2008/03/14/windows-live-messenger-web-controls-part-2.aspx" target="_blank"&gt;http://www.liveside.net/blogs/developer/archive/2008/03/14/windows-live-messenger-web-controls-part-2.aspx&lt;/a&gt;&lt;/h1&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-2719028481651278955&amp;page=RSS%3a+Windows+Live+Messenger+Web+Controls+-+Part+2&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=msnwindowslive.spaces.live.com&amp;amp;GT1=MSNWindowsLive"&gt;</description><comments>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!422.entry#comment</comments><guid isPermaLink="true">http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!422.entry</guid><pubDate>Fri, 14 Mar 2008 17:52:21 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://MSNWindowsLive.spaces.live.com/blog/cns!DA44120081017B95!422/comments/feed.rss</wfw:commentRss><wfw:comment>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!422.entry#comment</wfw:comment><dcterms:modified>2008-03-14T17:52:21Z</dcterms:modified></item><item><title>Windows Live Messenger Web Controls - Part 1</title><link>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!415.entry</link><description>&lt;div style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows Live Messenger" rel=tag&gt;Windows Live Messenger&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Windows Live Messenger API" rel=tag&gt;Windows Live Messenger API&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Adding Messenger to your website" rel=tag&gt;Adding Messenger to your website&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Windows Live Messenger Web Controls" rel=tag&gt;Windows Live Messenger Web Controls&lt;/a&gt;&lt;/div&gt; &lt;p&gt;The Windows Live team have been busy over the past few months and recently launched the Windows Live Messenger APIs. This is basically split over three parts, the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb936682.aspx" target="_blank"&gt;IM Control&lt;/a&gt;, the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb936691.aspx" target="_blank"&gt;Windows Live Presence API&lt;/a&gt; and the &lt;a href="http://msdn2.microsoft.com/en-us/library/cc298458.aspx" target="_blank"&gt;Windows Live Messenger Library&lt;/a&gt;. &lt;p&gt;What all this allows you to do is to create a Windows Live Messenger plug-in for your own website. What this (and coming articles) will try to explain is how to use these API's to actually create and integrate Messenger on your site as you can see below. &lt;p&gt;&lt;a href="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHGg5YwcSBCegIRK-9oF_EoE9aV4yHhgG9h_m54JUvr0201lwMGEO_qSxijWlhjTeLc?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=244 alt="Messenger Signed in" src="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHFnE4NoomZ0Ksd1onZQaDipFyDcUl5DCfiZWHHnZpAStcClAZ8Zqk63DwNpfYgCpuQ?PARTNER=WRITER" width=123 border=0&gt;&lt;/a&gt;  &lt;h4&gt;Getting Started with the Windows Live Sign-in Control&lt;/h4&gt; &lt;p&gt;I've covered this topic in a previous article I've written but I'll do a quick overview once again. In order to use Messenger you first need to sign-in to Windows Live (&lt;a href="http://login.live.com" target="_blank"&gt;http://login.live.com&lt;/a&gt;). In order to sign-in you must host the sign-in control on your site and in order to host the sign-in control you need the following two files :- &lt;br&gt;Channel.htm and Privacy.htm &lt;br&gt;These files are required.  The Channel.htm file facilitates moving information back and forth from Windows Live to your site as the login control in reality uses a frame, so this allows for cross frame information sharing. Here is the code you will require for the Channel.htm file :- &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#a31515"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:red"&gt;html&lt;/span&gt; &lt;span style="color:red"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt; &lt;/pre&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;html&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;head&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Channel&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;meta&lt;/span&gt; &lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;ROBOTS&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;content&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;NONE&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; hash = window.location.hash.substr(1);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;if&lt;/span&gt; (window.location.replace == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    window.location.replace = window.location.assign;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    window.location.replace(&lt;span style="color:#a31515"&gt;&amp;quot;about:blank&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; name = hash.split(&lt;span style="color:#a31515"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;)[0];&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; win = &lt;span style="color:blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;if&lt;/span&gt; (name &amp;amp;&amp;amp; (name != &lt;span style="color:#a31515"&gt;&amp;quot;.parent&amp;quot;&lt;/span&gt;))&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    win = window.parent.frames[name];&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    win = window.parent.parent;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;if&lt;/span&gt; (win.Microsoft) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    win.Microsoft.Live.Channels.Mux._recv_chunk(hash);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;catch&lt;/span&gt; (ex)&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:green"&gt;/* ignore */&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;head&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;body&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;body&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;html&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The Privacy.htm file is just what it sounds like. It is the privacy policy for your actual website. In this page you are fairly much free to put whatever you wish, as an example :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#a31515"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:red"&gt;html&lt;/span&gt; &lt;span style="color:red"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt; &lt;/pre&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;html&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;head&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Privacy Policy&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;title&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;meta&lt;/span&gt; &lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;ROBOTS&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;content&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;NONE&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;head&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;body&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h1&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;No information is actually stored on this website.&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h1&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;body&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;html&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;For more information on the privacy.htm file and guidance on what information to put it in, please see &lt;a href="http://privacy.microsoft.com/en-us/default.aspx" target="_blank"&gt;http://privacy.microsoft.com/en-us/default.aspx&lt;/a&gt;.
&lt;p&gt;Next you need to register your website with Windows Live (this means that you must have a valid domain name/website). You do this by :-
&lt;p&gt;Logging into &lt;a href="https://msm.live.com/app/default.aspx" target="_blank"&gt;https://msm.live.com/app/default.aspx&lt;/a&gt;
&lt;p&gt;&lt;a href="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHHIUxry8NMHRkYgsW2BfOgDejKS7daE7_vt8j7tXTXbw7rb-PnaY5z-u7HlhHd1M7g?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=213 alt=Register1 src="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHGeu3nJ2M-VtK3JKBXEEHH6AR8K2Y1IsPJBmMUqBGTvepdeG33aJgFIiZS-xF99sd4?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; 
&lt;p&gt;Select &amp;quot;Register and application&amp;quot; from the menu on the side 
&lt;p&gt;&lt;a href="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHE3QuPbykSSst1Mm9ObSVogL-fUociMcCY7YhdR6GJo4Bgs9cbJi8EZ6m0u_bvqZBg?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=213 alt=Register2 src="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHGKFJ_egM8bpQ-YNhLaHVGfAOe_EeGbZI_6QfuOMYLq3qIMbgVEPeDIlLn-8INCTmE?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; 
&lt;p&gt;and complete the details that it asks. Once you've completed all the information, it will give you an Application ID. You can also check all the Application IDs that you currently have from this site by clicking on the &amp;quot;Manage my applications&amp;quot; link on the side. 
&lt;p&gt;&lt;a href="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHEGJ1vL2zLMuzAs4J9dCDZgLziIUFxjn4hmYy6Gl2j_5tE4iSDTRM6Tq367kUsi9O0?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=213 alt=Register3 src="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHE3K-JBlKaRmGKj2v7Jy5072OOPYT8tPA5SN8vIiAbBPFYkKhjp0zDp_8MMyiMOhI0?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; 
&lt;p&gt;Keep that application ID and also Secret Key that you typed in on stage 2 as you will need these later on. &lt;br&gt;Once you have registered your application and setup your Privacy.htm and Channel.htm files, you are ready to start integrating Windows Live Messenger into your site.
&lt;h4&gt;Asp.Net Ajax&lt;/h4&gt;
&lt;p&gt;How you wish to implement Messenger into your site is really up to you. You can place it into a web control (.ascx file), code it into a  server control (.dll) or just put the code into one of your pages. For this article I'll simply be using a blank page so as not to confuse you with any other code. At the end of the day we wish to end up with something like the following :-
&lt;p&gt;&lt;a href="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHHhaZmLN-S3Fx6eUgS0NnhegqXMVm7X-EvkxU3Bg9XZ0flrPSCMYewFm7p6FowGSvo?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=244 alt="Messenger Signed in" src="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHE-6XBUxP4XVnM_UKNQgpTEUy4fUzj2ZdWxjbSKruyRI0Jkyh8CC52cQMgRyjQ3e1g?PARTNER=WRITER" width=123 border=0&gt;&lt;/a&gt; 
&lt;p&gt;My site structure is extremely simple, I have the Privacy.htm and Channel.htm files at the top level of my site. The site only consists of a single page (default.aspx), a few graphics files, a theme and of course the web.config file as follows :-
&lt;p&gt;&lt;a href="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHGq8ojo1h-1IWtiSVM8KUCAJcorx11mpa9ijBQmQSVQkZ-IJdRhZ7kKn8ETTtmlp1k?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=244 alt=SiteStructure src="http://tkfiles.storage.msn.com/y1pr7or-OU4ZHGR7gHUdIb82E-56vwHmx_kbZ65CVA6Is5yI2WxW-zmWBKqMk_XqovmoWA2iNLsQvg?PARTNER=WRITER" width=209 border=0&gt;&lt;/a&gt; 
&lt;p&gt;As all of this is client side, you don't need to put any additional code in your code behind file, so all the work we will be doing will be in the default.aspx file itself. One thing you will need before going any further however is a good knowledge of not just Javascript but also of Microsoft's Asp.Net Ajax as the messenger API relies heavily on this. In fact, if you did not know Asp.Net Ajax, the Messenger API's would really be of no use to you. Why do I say this? Take the following as an example. Here is a page from the Messenger API :-
&lt;p&gt;&lt;a href="http://lnxxaw.tuk.livefilestore.com/y1pNSa-hKbnYQbzccNs-TkhQzmUXF7HYtFKudXc4WEqSFdYVenIHj-smIH0SKQ6dNFH2lHimqOmdwE?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=154 alt=GroupProperties src="http://tk1.storage.msn.com/y1pP7sTXXglnjMNxTSlj1o3dnZUYr8claAX_-llWL3pl7mityY30x74tfv1bTZ5nFZ3oH-mrbieSERdwffMUpJngQ?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; 
&lt;p&gt;This snippet (which you can find &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.live.messenger.group_properties.aspx" target="_blank"&gt;here&lt;/a&gt;) is the Properties associated with the Group class. As you can see Group has two properties, Contacts and Name. If you tried to use these as is on your web page then you would end up with a Javascript error. Why? Because these properties are actually Asp.Net Ajax properties, and in order to access Asp.Net Ajax properties you have to prefix them with &amp;quot;get_&amp;quot; and attach brackets to the end. For example, if you wanted to use the name property your code would actually have to be :-
&lt;p&gt;var groupName = get_name();
&lt;h4&gt;Integration&lt;/h4&gt;
&lt;p&gt;Now that we have all this out the way, lets get started with our Default.aspx page. Before delving into the javascript, lets layout the actual page first.
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;body&lt;/span&gt; &lt;span style="color:red"&gt;onload&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;scriptMain()&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;form&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;msgr&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;table&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;signinframe&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;userInfo&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;setUserStatus&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;span&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Change Your Status:&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;span&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;select&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;selectStatus&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;onchange&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;selectStatusChanged()&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Appear Offline&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Away&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Be Right Back&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Busy&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Idle&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;In a Call&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Online&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Out to Lunch&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;option&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;select&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;setPersonalMessage&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;span&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Personal Message: &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;span&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;input&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;personalMessage&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;input&lt;/span&gt; &lt;span style="color:red"&gt;onclick&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;setPersonalMessage()&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;btnSetPersonalMessage&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;value&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Set&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;sendMessage&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;hr&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;span&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Send a Message:&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;span&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;contactLabel&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;msgLastRecv&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;txtConv&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;input&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;txtMessage&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;text&amp;quot;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;input&lt;/span&gt; &lt;span style="color:red"&gt;onclick&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;sendMsg()&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;btnSend&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;value&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Send Message&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;disabled&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;disabled&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;divConversations&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Contacts&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Contact List&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;a&lt;/span&gt; &lt;span style="color:red"&gt;href&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Javascript:ToggleContacts();&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;img&lt;/span&gt; &lt;span style="color:red"&gt;alt&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;ToggleContacts&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;minus_icon.gif&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;ContactsExpand&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;class&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;ContactImage&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;a&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;               &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;divContacts&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;table&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;form&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;body&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;There is nothing really hard about this. We are defining various zones in which we will put various pieces of information. A zone for the sign-in frame which will actually house a iframe that links to Windows Live Identity. A zone where we will display various bits of information about the user that has signed in and allow them to change their messenger status just like you do in the Messenger client, zones for messages and for displaying your contacts. When the page loads it calls the scriptMain() Javascript function.
&lt;p&gt;In order to use the Windows Live Messenger API you need to include a reference to it. It's really just a big Asp.Net Ajax Javascript library. So at the top of your add the following reference :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;http://settings.messenger.live.com/api/1.0/messenger.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;language&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now let's take a look at the scriptMain() function :-
&lt;p&gt;function scriptMain() { &lt;br&gt;   var privacypage = '&lt;a href="http://[weburl]/Privacy.htm';"&gt;http://[weburl]/Privacy.htm';&lt;/a&gt; &lt;br&gt;   var channelpage = '&lt;a href="http://[weburl]/Channel.htm';"&gt;http://[weburl]/Channel.htm';&lt;/a&gt; &lt;br&gt;   _signin = new Microsoft.Live.Messenger.UI.SignInControl('signinframe', privacypage, channelpage, 'en-US'); &lt;br&gt;   _signin.add_authenticationCompleted(Delegate.create(null, authenticationCompleted)); &lt;br&gt;}   
&lt;p&gt;Here we setup two variables that hold the URLs to our privacy page and our channel page as discussed earlier. You will of course need to replace &amp;quot;[weburl]&amp;quot; with your own URL. Next we create a new instance of the sign-in control. The sign-in control takes four parameters as defined here :-
&lt;p&gt;public SignInControl( string controlId, string privacyStatementUrl, string channelUrl, string market )
&lt;p&gt;The first parameter is the zone/control in which we wish to place and display the actual sign-in control. In our case this is defined as a &amp;lt;div&amp;gt; with the ID of signinframe. The next two parameters we pass in the variables we setup to point to our privacy and channel pages and the last parameter is for localization where you pass in language information.
&lt;p&gt;The final statement simply adds a delegate (for those familiar with .Net programming) that calls a Javascript method authenticationCompleted when sign-in has completed. See &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.live.messenger.ui.signincontrol_events.aspx" target="_blank"&gt;http://msdn2.microsoft.com/en-us/library/microsoft.live.messenger.ui.signincontrol_events.aspx&lt;/a&gt; for further information. 
&lt;p&gt;The authenticationCompleted event handler is similarly easy. As it's Asp.Net Ajax based events like this should look familiar to anyone who has experience coding Asp.Net web pages :-
&lt;p&gt;function authenticationCompleted(sender, e) { &lt;br&gt;   _user = new Microsoft.Live.Messenger.User(e.get_identity()); &lt;br&gt;   _user.add_signInCompleted(Delegate.create(null, signInCompleted)); &lt;br&gt;   _user.signIn(null); &lt;br&gt;}
&lt;p&gt;On completion of login, this event handler gets called and a user identity gets passed through as the parameter. So our first line of code in this event handler is to create an actual user object from the identity that gets passed in. Next we add another delegate that gets called once sign-in is completed for that actual user (there is a difference between the sign-in control being completed and an actual user finishing authorization hence the two different events). Finally we just call the signIn method of the user class and clear it out.  There are various events that you can hook into here. For a full list, please see &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.live.messenger.user_events.aspx" target="_blank"&gt;http://msdn2.microsoft.com/en-us/library/microsoft.live.messenger.user_events.aspx&lt;/a&gt;. For example you should also include a delegate to hook up when the user signs back out so that you can clear cookies, clear up your UI etc.
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;function&lt;/span&gt; signInCompleted(sender, e) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;if&lt;/span&gt; (e.get_resultCode() === Microsoft.Live.Messenger.SignInResultCode.success) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    _user.get_presence().add_propertyChanged(Delegate.create(&lt;span style="color:blue"&gt;null&lt;/span&gt;, user_Presence_PropertyChanged));&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    displayUserInfo();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    _addressList = &lt;span style="color:blue"&gt;new&lt;/span&gt; Array(_user.get_contacts().get_count());&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; enum1 = _user.get_contacts().getEnumerator();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;while&lt;/span&gt; (enum1.moveNext()) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      &lt;span style="color:blue"&gt;var&lt;/span&gt; c = enum1.get_current();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      &lt;span style="color:blue"&gt;var&lt;/span&gt; address = c.get_currentAddress();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      address.get_presence().add_propertyChanged(Delegate.create(&lt;span style="color:blue"&gt;null&lt;/span&gt;, presence_PropertyChanged));&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    displayContacts();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; selectStatus = document.getElementById(&lt;span style="color:#a31515"&gt;'selectStatus'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    selectStatus.selectedIndex = 6;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    _contactCollection = _user.get_contacts(); &lt;/pre&gt;&lt;pre style="margin:0px"&gt;    _user.get_conversations().add_propertyChanged(Delegate.create(&lt;span style="color:blue"&gt;null&lt;/span&gt;, conversation_collectionChanged));&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;The first thing that we do in our signInCompleted event handler is to check that the sign-in process was actually successful (the user may have typed an incorrect password for example so you do want to check for this as this event handler will get called regardless of whether login was successful or not). If the user logged in to Windows Live Identity correctly then we add another delegate so that we can change the users presence or status (i.e. now show that the user is online).  We call a method to display various information about the user then we cycle through the users contact list and get the presence or status information of everyone in their contact list (so that the user knows online, who's away etc) and display that information in using the displayContacts() function. The next couple of lines we simply use the dropdown list that we defined in our html and set the it to &amp;quot;online&amp;quot; and finally we setup yet another delegate, this time for actual conversations that will take place. &lt;br&gt;The three delegates defined above will work at any time, therefore if the user changes their status to &amp;quot;appear offline&amp;quot; then the first delegate we defined will again be invoked to propagate that status to the users contacts. Similarly if one of the users contacts changes their status then the second delegate will automatically get invoked. The last delegate is a bit more tricky to visualize. &lt;br&gt;In the normal client based Windows Live Messenger, each conversation you have spawns a new window. So you can have multiple conversations taking place at the same time and multiple windows open. You just click on the conversation window you wish to reply to and type your reply. Now think about how that could be accomplished using the web. You can't have multiple windows open as how are they going to communicate back and forth with the actual base messenger object, handle events etc? So everything needs to take place on the same page. So if everything is taking place on the same page how are you going to handle multiple conversations? The Windows Live Messenger API does this by creating a collection of conversation. You then pick which collection you wish to be responding to and type your response. That specific conversation collection will then be updated and your message posted. &lt;br&gt;But we're getting a little ahead of ourselves here. So back to the code. The first event handler we need to define is the user property changed handler :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;function&lt;/span&gt; user_Presence_PropertyChanged(sender, e) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   displayUserInfo();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;if&lt;/span&gt; (_user.get_presence().get_status() === Microsoft.Live.Messenger.PresenceStatus.offline) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            document.getElementById(&lt;span style="color:#a31515"&gt;&amp;quot;divContacts&amp;quot;&lt;/span&gt;).innerHTML = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            document.getElementById(&lt;span style="color:#a31515"&gt;&amp;quot;txtConv&amp;quot;&lt;/span&gt;).innerHTML = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      document.getElementById(&lt;span style="color:#a31515"&gt;'btnSend'&lt;/span&gt;).disabled = &lt;span style="color:blue"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here we update the users status with the call to displayUserInfo. Then we check to see if the user has actually signed out. If they have then their status will be set to offline. If they have indeed signed out then we clear out various zones on our web page like the users list of contacts.  The presence status can be one of the following enumerations :-
&lt;p&gt;&lt;a href="http://lnxxaw.tuk.livefilestore.com/y1pot7-TH5lOnwT7a8QebW8lKnk1iXe7xiLv2BlF0gd2G6FAfK1Yqv2GSZsgtUAYgXzxucBwQeCMKzvUd_NkNuRLtCxcv3EWFML?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=104 alt=PresenceStatus src="http://tk1.storage.msn.com/y1pP7sTXXglnjNJle11baPELNdkEFei9TBLBaKleddxYm5NyVSLghAhv649w6c3RyKOi19n5w6pMlKe9iN-4aw9Zw?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; 
&lt;p&gt;If you've followed the above code so far, you'll see that we've called the displayUserInfo function a couple of times. Lets take a look at that function :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;function&lt;/span&gt; displayUserInfo() {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; userInfo = document.getElementById(&lt;span style="color:#a31515"&gt;'userInfo'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; userAddress = _user.get_address().get_address();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; userDispName = _user.get_presence().get_displayName();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; userPersonalMessage = _user.get_presence().get_personalMessage();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; userStatus = Enum.toString(Microsoft.Live.Messenger.PresenceStatus, _user.get_presence().get_status());&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; statusLine = document.createElement(&lt;span style="color:#a31515"&gt;'p'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   removeChildrenFromNode(&lt;span style="color:#a31515"&gt;'userInfo'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;if&lt;/span&gt; (userDispName !== &lt;span style="color:#a31515"&gt;''&lt;/span&gt;) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      statusLine.appendChild(document.createTextNode(userDispName + &lt;span style="color:#a31515"&gt;' ('&lt;/span&gt; + userAddress + &lt;span style="color:#a31515"&gt;'): '&lt;/span&gt; + userStatus));&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;      statusLine.appendChild(document.createTextNode(userAddress + &lt;span style="color:#a31515"&gt;': '&lt;/span&gt; + userStatus));&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   userInfo.appendChild(statusLine);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   document.getElementById(&lt;span style="color:#a31515"&gt;'personalMessage'&lt;/span&gt;).value = userPersonalMessage;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;First we get a reference to the zone we defined on the page to display information about the user who is sign-in. In our page this is simply a &amp;lt;div&amp;gt; block. Next we collect various bits of information from the user object like the users email address, their status (online, offline, away etc.), their personal message, display name etc. We create a new paragraph element to house all this information and we clear out any information that may already be contained in our user information zone. Depending on whether the user has a display name defined or not we create an display message that will either consist of their display name, email address and status or just their email address and status. We add this information to the paragraph tag we created earlier then we add all this into our user information zone. Finally we update the users personal message (if they have one defined) separately. The reason we do this separately is that the users personal message is contained in a textbox allowing the user to update their personal message if they so desire. This function calls another function removeChildrenFromNode :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;function&lt;/span&gt; removeChildrenFromNode(id){&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; node = document.getElementById(id);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;if&lt;/span&gt;(node == undefined || node == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;       &lt;span style="color:blue"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; len = node.childNodes.length;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;while&lt;/span&gt; (node.hasChildNodes())&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    node.removeChild(node.firstChild);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;All that this function does is to remove all the content (sub elements) that may be contained within the element that is passed in as the parameter to the function call.
&lt;p&gt;Going back to our signInCompleted event handler. We have now covered the first of the event handlers. The next event handler gets called whenever one of the users contacts changes their status :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;function&lt;/span&gt; presence_PropertyChanged(sender, e) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   displayContacts();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;Here we simply call another method to update the users contacts list. We use another method rather than placing all the code in this event handler as that other method will be called from various places whereas we cannot call this event handler from our code normally (this is not strictly true but this way is a lot easier).
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;function&lt;/span&gt; displayContacts() {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; sb = &lt;span style="color:blue"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   _addressList = &lt;span style="color:blue"&gt;new&lt;/span&gt; Array(_user.get_contacts().get_count());&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; groupList = &lt;span style="color:blue"&gt;new&lt;/span&gt; Array(_user.get_groups().get_count());&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; enum2 = _user.get_groups().getEnumerator();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; enum1 = _user.get_contacts().getEnumerator();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;var&lt;/span&gt; groupindex = 0;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;while&lt;/span&gt; (enum2.moveNext())&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;var&lt;/span&gt; c = enum2.get_current();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;var&lt;/span&gt; name = c.get_name();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;div&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;a href=\&amp;quot;javascript:ToggleContactGroup('&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(name);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;');\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img class=\&amp;quot;ContactImage\&amp;quot; alt=\&amp;quot;ToggleContacts\&amp;quot; src=\&amp;quot;minus_icon.gif\&amp;quot; id=\&amp;quot;ContactsExpand&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(name);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;\&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(name);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;'&amp;lt;hr /&amp;gt;'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;div id='&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(name); &lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;'&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;var&lt;/span&gt; _contacts = &lt;span style="color:blue"&gt;new&lt;/span&gt; Array(c.get_contacts().get_count());&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;var&lt;/span&gt; enum3 = c.get_contacts().getEnumerator();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        index = 0;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   &lt;span style="color:blue"&gt;while&lt;/span&gt; (enum3.moveNext()) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; contact = enum3.get_current();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; address = contact.get_currentAddress();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; dispName = address.get_presence().get_displayName();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; currAddress = address.get_address();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; status = Enum.toString(Microsoft.Live.Messenger.PresenceStatus, address.get_presence().get_status());&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:green"&gt;//Change status to an image&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;var&lt;/span&gt; statusimg = &lt;span style="color:blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        &lt;span style="color:blue"&gt;switch&lt;/span&gt;(status)&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;online&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='online.gif' class='ContactImage' alt='online' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;offline&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='offline.gif' class='ContactImage' alt='offline' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;appearOffline&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='offline.gif' class='ContactImage' alt='offline' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;away&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='away.gif' class='ContactImage' alt='away' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;beRightBack&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='away.gif' class='ContactImage' alt='beRightBack' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;busy&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='busy.gif' class='ContactImage' alt='busy' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;idle&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='away.gif' class='ContactImage' alt='idle' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;inACall&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='busy.gif' class='ContactImage' alt='InACall' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;case&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;outToLunch&amp;quot;&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='away.gif' class='ContactImage' alt='OutToLunch' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            &lt;span style="color:blue"&gt;default&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                statusimg = &lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;img src='offline.gif' class='ContactImage' alt='offline' /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;                &lt;span style="color:blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;            }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; statusLine = &lt;span style="color:#a31515"&gt;''&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;var&lt;/span&gt; strDelete = &lt;span style="color:#a31515"&gt;''&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    _addressList[index] = address;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    &lt;span style="color:blue"&gt;if&lt;/span&gt; (dispName !== &lt;span style="color:#a31515"&gt;''&lt;/span&gt;) {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   statusLine = &lt;span style="color:#a31515"&gt;'&amp;lt;a href=\'javascript:createConv('&lt;/span&gt; + index + &lt;span style="color:#a31515"&gt;')\'&amp;gt;'&lt;/span&gt; + statusimg + dispName + &lt;span style="color:#a31515"&gt;'&amp;lt;/a&amp;gt;'&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   statusLine = &lt;span style="color:#a31515"&gt;'&amp;lt;a href=\'javascript:createConv('&lt;/span&gt; + index + &lt;span style="color:#a31515"&gt;')\'&amp;gt;'&lt;/span&gt; + statusimg + currAddress + &lt;span style="color:#a31515"&gt;'&amp;lt;/a&amp;gt;'&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    sb.append(statusLine);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;    sb.append(&lt;span style="color:#a31515"&gt;'&amp;lt;hr /&amp;gt;'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt; &lt;/pre&gt;&lt;pre style="margin:0px"&gt;    index++;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        sb.append(&lt;span style="color:#a31515"&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="margin:0px"&gt;        groupindex++;&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   }&lt;/pre&gt;&lt;pre style="margin:0px"&gt;   document.getElementById(&lt;span style="color:#a31515"&gt;'divContacts'&lt;/span&gt;).innerHTML = sb.toString();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;Now this method may look fairly daunting but really it's not. First we get create a new StringBuilder object (part of the Asp.Net Ajax framework). Then we get a list of all the users contacts. Next we also get a list of all the users groups. In the Windows Live Messenger client you can place your contacts in various groups (and even create your own groups) for example co-workers, friends, family etc. Both of these lists are collections. What we want to do is to display each contact in the correct group. So first we create a loop to loop through all the groups. &lt;br&gt;This first couple of lines within our group loop gets the current group collection that we are looping through and extracts the name for that group :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; c = enum2.get_current();&lt;/pre&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; name = c.get_name();&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Within the first loop (group loop) we've hard-coded some html that will allow a user to close and expand a group (otherwise the page may get very long if the user has a lot of contacts). Here we're just defining a couple of zones (&amp;lt;div&amp;gt; elements) to put the information in. The outer zone will hold the group name and an icon to display whether the zone is collapsed or expanded. The inner zone will hold all the contacts for that group and will be the zone that actually gets collapsed or expanded. Next we get a list of all the contacts that belong to that particular group :-
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; _contacts = &lt;span style="color:blue"&gt;new&lt;/span&gt; Array(c.get_contacts().get_count());&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;And we define a second inner loop (contact loop). In the contact loop we get each contact, extract various pieces of information from it like their email address, current status, display name etc. ready for display. &lt;br&gt;&lt;br&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; contact = enum3.get_current(); &lt;br&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; address = contact.get_currentAddress(); &lt;br&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; dispName = address.get_presence().get_displayName(); &lt;br&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; currAddress = address.get_address(); &lt;br&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; status = Enum.toString(Microsoft.Live.Messenger.PresenceStatus, address.get_presence().get_status());
&lt;p&gt;Next, based on the contacts status, we insert the appropriate messenger presence icon. We do this by simply checking their status against the values of the presence enumeration (see above) and hard coding the appropriate image element against the status. Finally we construct what it is that we will actually be displaying to the user. If the contact has a display name then we display that along with the appropriate status icon, if not then we display the contacts email address along with the appropriate status icon. These we make into links that call the function createConv() so that we can start a conversation with that contact simply by clicking on their information, much the same as the Windows Live Messenger client does. &lt;br&gt;We add a horizontal rule to separate each of the contacts, increment our counter and close the contacts loop. &lt;br&gt;Before closing the group loop we close off the two zones we defined and again increment our counter. &lt;br&gt;Finally once we've looped through everything we insert our generated markup into the contact zone that we defined on our html page.
&lt;p&gt;At this point we are about half way through the Javascript code necessary to create Windows Live Messenger within your own web pages.  In part two of this article we will finish off our discussion with the remaining Javascript which covers conversations.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-2719028481651278955&amp;page=RSS%3a+Windows+Live+Messenger+Web+Controls+-+Part+1&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=msnwindowslive.spaces.live.com&amp;amp;GT1=MSNWindowsLive"&gt;</description><comments>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!415.entry#comment</comments><guid isPermaLink="true">http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!415.entry</guid><pubDate>Thu, 13 Mar 2008 22:15:35 GMT</pubDate><slash:comments>28</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://MSNWindowsLive.spaces.live.com/blog/cns!DA44120081017B95!415/comments/feed.rss</wfw:commentRss><wfw:comment>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!415.entry#comment</wfw:comment><dcterms:modified>2008-03-13T22:15:35Z</dcterms:modified></item><item><title>Free Emoticons, Winks, etc.</title><link>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!174.entry</link><description>&lt;div&gt;Are you interested in grabbing some free emoticons, winks, dynamic display pictures, packs and more?&lt;/div&gt;
&lt;div&gt;Thought you might be, in that case just head over to :-&lt;/div&gt;
&lt;div&gt;&lt;font size=1&gt;&lt;br&gt;&lt;a href="http://www1.cae.mypersonalexpression.com/category.pd?path=72372"&gt;http://www1.cae.mypersonalexpression.com/category.pd?path=72372&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;
&lt;p&gt;Please note however, if you are using IE7 (any version, even the latest RC) then you won't be able to access all of the content, notably Emoticons.
&lt;p&gt; &lt;div&gt;&lt;table cellspacing="0" border="0"&gt;&lt;tr height="8"&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://byfiles.storage.live.com&amp;#47;y1prBnBO5PWYO3b4tP_TA_LeQodeL8nPcY_EQ2DlsfHqWZkYEh_fELaV6WOAsZS6N_x"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;DA44120081017B95&amp;#33;175&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-2719028481651278955&amp;page=RSS%3a+Free+Emoticons%2c+Winks%2c+etc.&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=msnwindowslive.spaces.live.com&amp;amp;GT1=MSNWindowsLive"&gt;</description><comments>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!174.entry#comment</comments><guid isPermaLink="true">http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!174.entry</guid><pubDate>Tue, 10 Oct 2006 15:23:13 GMT</pubDate><slash:comments>8</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://MSNWindowsLive.spaces.live.com/blog/cns!DA44120081017B95!174/comments/feed.rss</wfw:commentRss><wfw:comment>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!174.entry#comment</wfw:comment><dcterms:modified>2006-10-10T15:23:13Z</dcterms:modified></item><item><title>Live Messenger Auto Reply</title><link>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!163.entry</link><description>&lt;div&gt;A neat little utility has been released for the recently RTW version of Windows Live Messenger (MSN Messenger 8) that allows you to autoreply to messages when your status is set to away :-&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;quot;This application fulfills a very simple concept. When I'm logged in to Messenger but my status is other than Online, you can enable this add-in to auto-reply to messages sent you with very simple verbiage, like: “I'm currently away from my computer but I will get back to you as soon as possible”. 
&lt;div&gt; &lt;/div&gt;I found this to be a great way to be courteous with the people, and also a time saver since you can customize the messages to say whatever you want.   
&lt;p&gt;Ex. When I'm Set to be right back, I can auto-reply saying: “I'll be right back but if this is an emergency you can call me on my mobile phone (555) 123- 4567.” 
&lt;p&gt; 
&lt;p&gt;Download the add-in here :-
&lt;p&gt;&lt;a href="http://www.frameworkx.com/Frameworkx/software.aspx?id=205"&gt;http://www.frameworkx.com/Frameworkx/software.aspx?id=205&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-2719028481651278955&amp;page=RSS%3a+Live+Messenger+Auto+Reply&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=msnwindowslive.spaces.live.com&amp;amp;GT1=MSNWindowsLive"&gt;</description><comments>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!163.entry#comment</comments><guid isPermaLink="true">http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!163.entry</guid><pubDate>Thu, 22 Jun 2006 14:43:35 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://MSNWindowsLive.spaces.live.com/blog/cns!DA44120081017B95!163/comments/feed.rss</wfw:commentRss><wfw:comment>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!163.entry#comment</wfw:comment><dcterms:modified>2006-06-22T14:43:35Z</dcterms:modified></item><item><title>Tips on Live Messenger 2</title><link>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!145.entry</link><description>&lt;div&gt;Back to tell you about another handy little utility that's built into Messenger yet not a lot of people either know it's there or use it.&lt;/div&gt;
&lt;div&gt;If you've got pictures that you want to share with someone, normally what people do is simply send them through messenger.&lt;/div&gt;
&lt;div&gt;Did you know however that messenger has built in photo sharing capability?&lt;/div&gt;
&lt;div&gt;Open explorer and start a conversation with your contact.&lt;/div&gt;
&lt;div&gt;Then select activities, MSN Photo Swap from the menu in your main messenger window.&lt;/div&gt;
&lt;div&gt;Your contact will have to accept the invite.&lt;/div&gt;
&lt;div&gt;Then Add the photo's you want to share by clicking on the &amp;quot;Add Photos&amp;quot; button and you're done.&lt;/div&gt;
&lt;div&gt;Your contact will see a slideshow of the pictures you've shared with them and have the ability to save them if they so wish.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Note however that in the current build of Live Messenger (689.0) the &amp;quot;add photo's&amp;quot; button doesn't actually work.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-2719028481651278955&amp;page=RSS%3a+Tips+on+Live+Messenger+2&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=msnwindowslive.spaces.live.com&amp;amp;GT1=MSNWindowsLive"&gt;</description><comments>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!145.entry#comment</comments><guid isPermaLink="true">http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!145.entry</guid><pubDate>Fri, 12 May 2006 18:02:02 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://MSNWindowsLive.spaces.live.com/blog/cns!DA44120081017B95!145/comments/feed.rss</wfw:commentRss><wfw:comment>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!145.entry#comment</wfw:comment><dcterms:modified>2006-05-12T18:02:02Z</dcterms:modified></item><item><title>Tips on Live Messenger 1</title><link>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!144.entry</link><description>&lt;div&gt;Windows Live messenger (Messenger 8) is now available as a public download for those that want to try it out (you can get it from ideas.live.com or from &lt;a href="http://g.msn.com/1csbeta/Mess80_EN"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;http://g.msn.com/1csbeta/Mess80_EN&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;).&lt;/div&gt;
&lt;div&gt;There are lots of features in Live Messenger, a lot of which people don't use because they don't know about them.&lt;/div&gt;
&lt;div&gt;Over the course of the next few days I'll start pointing out some really cool features that are available in Live Messenger for you to play with.&lt;/div&gt;
&lt;div&gt;To start with today, we're going to take a quick look at Virtual Earth (Local.live) integration with Messenger.&lt;/div&gt;
&lt;div&gt;So first, open up Live Messenger and login.&lt;/div&gt;
&lt;div&gt;Next select &amp;quot;Actions/Start an activity&amp;quot; from the drop down menu.  This is the icon in the top right next to close, minimize, maximize.&lt;/div&gt;
&lt;div&gt;Now select a contact you wish to chat to and click on &amp;quot;OK&amp;quot;.&lt;/div&gt;
&lt;div&gt;A chat window will now open and a list of activities will be presented to you.&lt;/div&gt;
&lt;div&gt;From this list select Windows Live Local Shared Map.&lt;/div&gt;
&lt;div&gt;Your contact will need to accept the invitation on their end as well.&lt;/div&gt;
&lt;div&gt;From there local.live will be loaded in a window next to your main chat window.&lt;/div&gt;
&lt;div&gt;Whatever you do in the local.live window, your contact will see and vice versa.&lt;/div&gt;
&lt;div&gt;Way cool.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Another way to get to this is if you're already chatting to your contact, simply select the &amp;quot;Acitivities&amp;quot; icon within the chat window and select &amp;quot;Windows Live Local Shared Map&amp;quot; from the list that's presented to you.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Windows Live Local Shared Map uses a feature in Live Messenger that allows you to make your own components and share them with your contacts.  All of this is documented in the Messenger SDK that's available at &lt;a href="http://msdn.microsoft.com/live/msnmessenger/"&gt;http://msdn.microsoft.com/live/msnmessenger/&lt;/a&gt; .  Select the Messenger Activity API.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-2719028481651278955&amp;page=RSS%3a+Tips+on+Live+Messenger+1&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=msnwindowslive.spaces.live.com&amp;amp;GT1=MSNWindowsLive"&gt;</description><comments>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!144.entry#comment</comments><guid isPermaLink="true">http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!144.entry</guid><pubDate>Thu, 11 May 2006 18:22:51 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://MSNWindowsLive.spaces.live.com/blog/cns!DA44120081017B95!144/comments/feed.rss</wfw:commentRss><wfw:comment>http://MSNWindowsLive.spaces.live.com/Blog/cns!DA44120081017B95!144.entry#comment</wfw:comment><dcterms:modified>2006-05-11T18:22:51Z</dcterms:modified></item></channel></rss>