<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-8406766</atom:id><lastBuildDate>Fri, 30 Apr 2010 17:28:14 +0000</lastBuildDate><title>Martin Bennedik</title><description></description><link>http://www.bennedik.de/</link><managingEditor>noreply@blogger.com (Martin Bennedik)</managingEditor><generator>Blogger</generator><openSearch:totalResults>95</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-7856644534811549335</guid><pubDate>Fri, 30 Apr 2010 17:28:00 +0000</pubDate><atom:updated>2010-04-30T10:28:14.178-07:00</atom:updated><title>This blog has moved</title><description>&lt;br /&gt;       This blog is now located at http://bennedik.blogspot.com/.&lt;br /&gt;       You will be automatically redirected in 30 seconds, or you may click &lt;a href='http://bennedik.blogspot.com/'&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;       For feed subscribers, please update your feed subscriptions to&lt;br /&gt;       http://bennedik.blogspot.com/feeds/posts/default.&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7856644534811549335?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2010/04/this-blog-has-moved.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-523657650044873245</guid><pubDate>Fri, 19 Mar 2010 18:42:00 +0000</pubDate><atom:updated>2010-03-19T11:42:41.718-07:00</atom:updated><title>WP7: Silverlight in the browser?</title><description>&lt;p&gt;I am really excited about Windows Phone 7 series and have already installed the development tools. One question that was raised at the Mix conference this week was whether Silverlight applications are supported in the browser.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.zdnet.com/microsoft/?p=5624" target="_blank"&gt;Mary-Jo Foley received the following answer from Microsoft&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“In its first release, the Windows Phone browser does not support a browser plug-in model. We are evaluating this for future releases of Windows Phone […]”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;However, when I pointed the browser built in the emulator to my &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt;, I was able to take the following screenshot. The UI of the emulator was flickering, and I wasn’t able to use the UI, but a plug-in model must be there, I think:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/WP7Silverlightinthebrowser_114F5/WP7Silverlightinbrowser.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="WP7 Silverlight in browser" border="0" alt="WP7 Silverlight in browser" src="http://www.bennedik.de/images/WP7Silverlightinthebrowser_114F5/WP7Silverlightinbrowser_thumb.png" width="422" height="843" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-523657650044873245?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2010/03/wp7-silverlight-in-browser.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-8503222407891892624</guid><pubDate>Tue, 16 Feb 2010 17:34:00 +0000</pubDate><atom:updated>2010-02-16T09:34:00.335-08:00</atom:updated><title>Aquarium to support Xfcc</title><description>&lt;p&gt;&lt;a href="http://www.xfcc.org" target="_blank"&gt;Xfcc&lt;/a&gt; is the standard for web services for correspondence chess, which I invented back in 2003, when &lt;a href="http://en.wikipedia.org/wiki/SOAP_(protocol)" target="_blank"&gt;web services&lt;/a&gt; were the latest and hottest technology.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.chessbase.com" target="_blank"&gt;Chessbase&lt;/a&gt;, the biggest vendor of chess software, has been supporting Xfcc since Chessbase 10.&lt;/p&gt;  &lt;p&gt;Now the second biggest vendor of chess software, &lt;a href="http://www.chessok.com/" target="_blank"&gt;ChessOK&lt;/a&gt;, is set to implement Xfcc in its Aquarium software.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.chesscafe.com/chessok/chessok.htm" target="_blank"&gt;An article at Chesscafe&lt;/a&gt; has all the details. I am impressed with their idea of linking the analysis in your local database with the games on the server.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-8503222407891892624?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2010/02/aquarium-to-support-xfcc.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-4778209430419945023</guid><pubDate>Thu, 07 Jan 2010 16:17:00 +0000</pubDate><atom:updated>2010-01-07T08:17:07.180-08:00</atom:updated><title>Silverlight chess board now running on Linux</title><description>&lt;p&gt;I published an updated build 1.4.0.5 of my &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; that runs on Linux, using Firefox and &lt;a href="http://www.go-mono.com/moonlight/" target="_blank"&gt;Moonlight 2&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Here is a screenshot from an Ubuntu virtual machine:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.bennedik.de/images/SilverlightchessboardnowrunningonLinux_F277/image.png" width="644" height="450" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-4778209430419945023?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2010/01/silverlight-chess-board-now-running-on.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-934778188427908842</guid><pubDate>Sun, 13 Sep 2009 10:01:00 +0000</pubDate><atom:updated>2009-09-13T03:01:31.660-07:00</atom:updated><title>Silverlight chess board 1.4</title><description>&lt;p&gt;I released version 1.4 of the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; with the following updates:&lt;/p&gt;  &lt;li&gt;Added support for international characters in PGN files (according to the &lt;a href="http://en.wikipedia.org/wiki/Portable_Game_Notation"&gt;PGN standard&lt;/a&gt; section 4.1, a subset of &lt;a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1"&gt;ISO 8859/1 Latin 1&lt;/a&gt; is used). &lt;/li&gt;  &lt;li&gt;Added a new parameter &amp;quot;piece&amp;quot; to allow customized piece characters used in the notation, instead of the English ones used by default.&lt;/li&gt;  &lt;li&gt;Better error message when a PGN file was not found. &lt;/li&gt;  &lt;li&gt;Put in a work around for an IE8 standard modes bug, which caused the notation not to wrap lines correctly in some cases.&lt;/li&gt;  &lt;p&gt;You can find the updated documentation at the &lt;a href="http://www.bennedik.de/Silverboard.html"&gt;Silverlight chess board home page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-934778188427908842?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/09/silverlight-chess-board-14.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-1685827678893827800</guid><pubDate>Tue, 01 Sep 2009 17:55:00 +0000</pubDate><atom:updated>2009-09-01T10:55:36.230-07:00</atom:updated><title>Validation and the ModalPopupExtender</title><description>&lt;p&gt;Two quick tips if you are using the &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ModalPopup/ModalPopup.aspx" target="_blank"&gt;ModalPopupExtender&lt;/a&gt; from the ASP.NET Ajax control toolkit:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you need to do a postback from inside the panel set as your popup control, wrap the contents of the panel into an UpdatePanel.&lt;/li&gt;    &lt;li&gt;If you add validation controls inside the panel set as your popup control, make sure the button used as the target control has CausesValidation set to false.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-1685827678893827800?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/09/validation-and-modalpopupextender.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-1576399321680360066</guid><pubDate>Mon, 17 Aug 2009 14:54:00 +0000</pubDate><atom:updated>2009-08-17T07:54:33.117-07:00</atom:updated><title>Surface development</title><description>&lt;p&gt;In the last couple of months I have been contracting with &lt;a href="http://www.syzygy.de/" target="_blank"&gt;syzygy&lt;/a&gt; and developed some applications for &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Surface" target="_blank"&gt;Microsoft Surface&lt;/a&gt;. The first Surface unit with these applications was deployed last week at the opening of the new O&lt;sub&gt;2&lt;/sub&gt; flagship store in Cologne.&lt;/p&gt;  &lt;p align="center"&gt;&lt;object width="455" height="256" class="swf_holder" type="application/x-shockwave-flash" data="http://vimeo.com/moogaloop.swf?clip_id=6099457&amp;amp;server=vimeo.com&amp;autoplay=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffdc00&amp;amp;fullscreen=1"&gt; 					&lt;param name="quality" value="high" /&gt; 					&lt;param name="allowfullscreen" value="true" /&gt; 					&lt;param name="allowscriptaccess" value="always" /&gt; 					&lt;param name="wmode" value="transparent" /&gt; 					&lt;param name="scale" value="showAll" /&gt; 					&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6099457&amp;amp;server=vimeo.com&amp;amp;autoplay=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffdc00&amp;amp;fullscreen=1" /&gt; &lt;/object&gt;&lt;/p&gt;  &lt;p&gt;According to Microsoft, this was the first Surface deployment as a point of sales system in Germany.&lt;/p&gt;  &lt;p&gt;I developed the mobile phone advisor and lottery applications, and co-developed the custom application launcher and media player applications.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface2" border="0" alt="surface2" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface2.jpg" width="260" height="200" /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface3" border="0" alt="surface3" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface3.jpg" width="260" height="200" /&gt;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface1" border="0" alt="surface1" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface1.jpg" width="260" height="200" /&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface4" border="0" alt="surface4" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface4.jpg" width="260" height="200" /&gt;&lt;/p&gt;  &lt;p&gt;Syzygy has more information about the project at &lt;a href="http://www.syzygy.de/surface/" target="_blank"&gt;a special site&lt;/a&gt; (in German), and &lt;a href="http://www.syzygy.de/surface/syzygy_o2_surface_20090814.pdf" target="_blank"&gt;in a PDF&lt;/a&gt; (in English).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-1576399321680360066?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/08/surface-development.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-7215707805205674798</guid><pubDate>Thu, 13 Aug 2009 18:00:00 +0000</pubDate><atom:updated>2009-08-13T11:00:21.871-07:00</atom:updated><title>Surface teaser</title><description>&lt;p&gt;Here is a teaser image of what I have been up to the last couple of months. Stay tuned for more.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="IMG_0057" border="0" alt="IMG_0057" src="http://www.bennedik.de/images/Surfaceteaser_11929/IMG_0057.jpg" width="350" height="457" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7215707805205674798?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/08/surface-teaser.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-593908172481317739</guid><pubDate>Thu, 07 May 2009 10:06:00 +0000</pubDate><atom:updated>2009-05-07T03:06:20.654-07:00</atom:updated><title>Silverlight chess board 1.3 with full support for variations</title><description>&lt;p&gt;Today I released version 1.3 of the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; with the following changes:&lt;/p&gt;  &lt;li&gt;Added full support for variations. Variations can be replayed by clicking with the mouse on a variation in the notation div. &lt;/li&gt;  &lt;li&gt;An additional CSS class &amp;quot;.variation&amp;quot; can be used to format variations. &lt;/li&gt;  &lt;li&gt;Added keyboard support for replaying when the focus is on the notation div. Available keys depend on the browser being used. I have found that the left and right cursor keys work fine in Internet Explorer and Firefox, but not in Google Chrome.&lt;/li&gt;  &lt;p&gt;You can find an updated sample and documentation at the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board home page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-593908172481317739?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/05/silverlight-chess-board-13-with-full.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-2315625882239152826</guid><pubDate>Tue, 05 May 2009 10:46:00 +0000</pubDate><atom:updated>2009-05-05T03:46:38.387-07:00</atom:updated><title>Back in LA</title><description>&lt;p&gt;I am back in &lt;a href="http://www.bennedik.de/2008/10/i-am-in-la.html"&gt;LA&lt;/a&gt;. This time I took &lt;a href="http://www.rockstargames.com/midnightclubLA/" target="_blank"&gt;my car&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/ConventionCenter.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ConventionCenter" border="0" alt="ConventionCenter" src="http://www.bennedik.de/images/BackinLA_B011/ConventionCenter_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/2978997267_ed188ca368_b.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2978997267_ed188ca368_b" border="0" alt="2978997267_ed188ca368_b" src="http://www.bennedik.de/images/BackinLA_B011/2978997267_ed188ca368_b_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No PDC.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/Hotel2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Hotel2" border="0" alt="Hotel2" src="http://www.bennedik.de/images/BackinLA_B011/Hotel2_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0823.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0823" border="0" alt="DSCF0823" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0823_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Rebranded hotel.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/Hotel1.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Hotel1" border="0" alt="Hotel1" src="http://www.bennedik.de/images/BackinLA_B011/Hotel1_thumb.jpg" width="233" height="244" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0822.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0822" border="0" alt="DSCF0822" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0822_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The advertising is gone.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/CityHall2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CityHall2" border="0" alt="CityHall2" src="http://www.bennedik.de/images/BackinLA_B011/CityHall2_thumb.jpg" width="239" height="244" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0872.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0872" border="0" alt="DSCF0872" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0872_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;City hall.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/ConcertHall.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ConcertHall" border="0" alt="ConcertHall" src="http://www.bennedik.de/images/BackinLA_B011/ConcertHall_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0868.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0868" border="0" alt="DSCF0868" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0868_thumb.jpg" width="244" height="157" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Walt Disney Concert Hall.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/PoliceCar.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PoliceCar" border="0" alt="PoliceCar" src="http://www.bennedik.de/images/BackinLA_B011/PoliceCar_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0873.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0873" border="0" alt="DSCF0873" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0873_thumb.jpg" width="244" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;LAPD police car.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/Bus.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bus" border="0" alt="Bus" src="http://www.bennedik.de/images/BackinLA_B011/Bus_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0874.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0874" border="0" alt="DSCF0874" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0874_thumb.jpg" width="244" height="148" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Bus.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/SportCenter.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SportCenter" border="0" alt="SportCenter" src="http://www.bennedik.de/images/BackinLA_B011/SportCenter_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0922.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0922" border="0" alt="DSCF0922" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0922_thumb.jpg" width="244" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Staples Center (rebranded).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/UnionStation2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UnionStation2" border="0" alt="UnionStation2" src="http://www.bennedik.de/images/BackinLA_B011/UnionStation2_thumb.jpg" width="208" height="244" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0898.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0898" border="0" alt="DSCF0898" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0898_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Union station.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-2315625882239152826?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/05/back-in-la.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-3406634303527082874</guid><pubDate>Wed, 22 Apr 2009 11:00:00 +0000</pubDate><atom:updated>2009-04-22T04:00:37.048-07:00</atom:updated><title>Silverlight chess board 1.2</title><description>&lt;p&gt;Today I released version 1.2 of the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; with the following changes:&lt;/p&gt;  &lt;li&gt;Added optional game header to appear in a div specified with the &amp;quot;header&amp;quot; parameter. &lt;/li&gt;  &lt;li&gt;PGN comments in curly braces are now supported and appear in the notation div. &lt;/li&gt;  &lt;li&gt;PGN variations are now partly supported and appear as comments. Full support for PGN variations is planned for a future release. &lt;/li&gt;  &lt;li&gt;CSS classes &amp;quot;.move&amp;quot; and &amp;quot;.comment&amp;quot; are now used for moves and comments and allow formatting. &lt;/li&gt;  &lt;li&gt;Fixed an issue where the current move was not highlighted in the notation.&lt;/li&gt;  &lt;p&gt;You can find an updated sample and documentation at the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board home page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3406634303527082874?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/04/silverlight-chess-board-12.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-6329743221881536482</guid><pubDate>Wed, 08 Apr 2009 08:57:00 +0000</pubDate><atom:updated>2009-04-08T01:57:12.811-07:00</atom:updated><title>Internet Explorer 8 and the ASP.NET menu control</title><description>&lt;p&gt;I participated in the beta test of Internet Explorer 8.&amp;#160; I am also running &lt;a href="http://www.iccf-webchess.com/" target="_blank"&gt;a site&lt;/a&gt; built with ASP.NET. So one thing I did during the beta test was to test the site with the various Internet Explorer 8 beta versions.&lt;/p&gt;  &lt;p&gt;The site was already updated some time ago to use standards mode instead of quirks mode, and renders fine on all other major browsers, including Firefox, Opera, Safari, and Chrome. Internet Explorer 8 is the first version of Internet Explorer to render in standards mode by default, so everything should be fine, at least in theory.&lt;/p&gt;  &lt;p&gt;Beta 1 of Internet Explorer 8 had so many rendering issues that I quickly stopped the test and decided to wait for beta 2. In beta 2 there were much less issues, but some remained. Microsoft at the time recommended to use some meta tags on the site to ensure proper rendering in IE 8. However, these meta tags basically put IE 8 in compatibility mode, which is like running the IE 7 rendering engine in quirks mode – clearly not the right solution for a standards mode based site and an IE 8 trying to render in standards mode.&lt;/p&gt;  &lt;p&gt;Therefore I decided that the remaining issues must be genuine bugs in IE 8 and reported those via &lt;a href="http://connect.microsoft.com/" target="_blank"&gt;Connect&lt;/a&gt;. One of the major issues I found was that the &lt;a href="https://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=364930" target="_blank"&gt;ASP.NET menu control doesn’t render correctly&lt;/a&gt; in IE 8.&lt;/p&gt;  &lt;p&gt;The IE 8 team analysed the issue and found that this is actually caused by ASP.NET. The menu control analyzes the user agent and renders differently for IE, expecting that IE is rendering in quirks mode.&lt;/p&gt;  &lt;p&gt;Therefore the ASP.NET team has now built a fix for the .NET framework, correcting the ASP.NET menu control so that it renders correctly for IE 8. As part of the fix process I had to test a pre-release version of the fixed .NET framework.&lt;/p&gt;  &lt;p&gt;You can find this now described in the Microsoft knowledge base &lt;a href="http://support.microsoft.com/kb/962351/en-us" target="_blank"&gt;KB 962351&lt;/a&gt;, where you can also download a hotfix that you can install on your server to make sure that the menu is rendered correctly in IE 8.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-6329743221881536482?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/04/internet-explorer-8-and-aspnet-menu.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-9196558161662203513</guid><pubDate>Tue, 10 Feb 2009 12:56:00 +0000</pubDate><atom:updated>2009-02-10T04:56:31.041-08:00</atom:updated><title>Validation with hidden TabPanels in the ASP.NET Ajax Control Toolkit TabContainer</title><description>&lt;p&gt;This one is a bit of a never ending story, unfortunately. After having found out &lt;a href="http://www.bennedik.de/2009/02/how-to-hide-tabpanels-of-aspnet-ajax.html" target="_blank"&gt;how to hide tabs&lt;/a&gt;, I &lt;a href="http://www.bennedik.de/2008/09/validation-in-aspnet-ajax-control.html" target="_blank"&gt;added validation logic&lt;/a&gt; to my TabContainer, only to find another bug:&lt;/p&gt;  &lt;p&gt;When hiding a TabPanel by setting the Enabled property to false, any validation controls on that panel are still enabled. This is not what I expected, as with other types of panels, the Enabled property usually cascades down. Of course this results in validation errors displayed for hidden tabs.&lt;/p&gt;  &lt;p&gt;I am now using the following (clumsy) work around to disable tabs:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DisableTab(&lt;span style="color: #2b91af"&gt;TabPanel&lt;/span&gt; panel)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; panel.Enabled = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//work around TabPanel bug and disable the validation controls&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DisableValidationControls(panel);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DisableValidationControls(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; c)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; child &lt;span style="color: blue"&gt;in&lt;/span&gt; c.Controls)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (child &lt;span style="color: blue"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BaseValidator&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ((&lt;span style="color: #2b91af"&gt;BaseValidator&lt;/span&gt;)child).Enabled = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DisableValidationControls(child);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://www.teachsam.de/deutsch/d_literatur/d_aut/kaf/kaf_gib.htm" target="_blank"&gt;Lets hope&lt;/a&gt; that the quality of the control toolkit gets improved soon.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-9196558161662203513?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/02/validation-with-hidden-tabpanels-in.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-7864358795211940668</guid><pubDate>Thu, 05 Feb 2009 12:35:00 +0000</pubDate><atom:updated>2009-02-10T05:01:15.429-08:00</atom:updated><title>How to hide TabPanels of the ASP.NET Ajax control toolkit’s TabContainer</title><description>&lt;p&gt;When developing a user interface with tabs, sometimes you want to hide individual tabs from the user. For example a tab may be shown only to some users, or for some objects with extra properties. When I was implementing this recently with the &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Tabs/Tabs.aspx" target="_blank"&gt;ASP.NET Ajax control toolkit implementation of tabs&lt;/a&gt;, I ran into several issues. Here is how I got it to work:&lt;/p&gt;  &lt;p&gt;When hiding a TabPanel from the server side code, I considered two options: Remove the TabPanel from the TabContainers collection of TabPanels, or set the Visible property of the TabPanel to false. Both these options follow common conventions of the .NET framework, but it turns out that both are wrong here.&lt;/p&gt;  &lt;p&gt;First I removed the TabPanel from the TabContainer. However after a postback the server always complained about the view state (I am not sure about the cause of this – if you have any idea, please let me know).&lt;/p&gt;  &lt;p&gt;Next I tried to set the Visible property of the TabPanel to false. This worked fine with a postback at first. However, the tabs implementation has another issue with postbacks: after each postback it forgets the currently active panel, and sets this back to the first panel. There are two ways to solve this issue: Use an UpdatePanel inside each TabPanel that does postbacks, or in the event handler of the postback (or auto postback), reset the currently active tab panel.&lt;/p&gt;  &lt;p&gt;In my case, I had some controls on the TabPanels that would not work inside an UpdatePanel, so I had to use the work around of resetting the currently active tab panel. However, it turns out that setting the active tab panel does not work if you have set some tab panel’s visible property to false. As ASP.NET is not rendering invisible controls to the client, the tab’s Javascript implementation is not aware of them. This Javascript however seems to be implemented in a naive way, and just counts through the panels. For example if panel 2 is hidden, and you set the active panel to 3, the Javascript is actually going to show panel 4, as it is not aware of the 2nd hidden panel.&lt;/p&gt;  &lt;p&gt;I inspected the Javascript code a little bit and found that the code is actually aware of the Enabled property of the panels. I would have expected setting the Enabled property to false would result in a grayed out panel, as is the convention. However, the panels are really not shown at all. In my case the following work around was possible:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Set the Enabled property of a TabPanel to false to hide it. &lt;/li&gt;    &lt;li&gt;Wrap every TabPanel with postback or auto postbacks into an UpdatePanel. &lt;/li&gt;    &lt;li&gt;Where UpdatePanel is not possible, in the event handler of the (auto) postback, reset the TabContainer’s active tab panel. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;WARNING&lt;/font&gt;: This work around comes at a price. Because you are setting the Enabled property to false, and not the Visible property, the “hidden” tabs are actually send to the client. While they are not rendered, the user can still access the contents with a simple “view source” in his browser. Therefore this work around should not be used, if the content of the hidden tabs is secret or contains other sensitive information. &lt;font color="#ff0000"&gt;END OF WARNING&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I hope that the quality of the tabs implementation is increased in the next version, specifically:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fix the issue of the TabContainer forgetting the active tab on postbacks (issue &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=8255" target="_blank"&gt;8255&lt;/a&gt; and &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=12838" target="_blank"&gt;12838&lt;/a&gt;). &lt;/li&gt;    &lt;li&gt;Handle the Visible property of the TabPanel correctly, avoiding the security issue with the Enabled property. &lt;/li&gt;    &lt;li&gt;Handle the Enabled property of the TabPanel as by convention, i.e. show the panels grayed out (issue &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=9171" target="_blank"&gt;9171&lt;/a&gt;). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have added links to the control toolkit issue tracker at Codeplex, please consider voting for the issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: There is also an issue with validation, see &lt;a href="http://www.bennedik.de/2009/02/validation-with-hidden-tabpanels-in.html" target="_blank"&gt;my separate post&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7864358795211940668?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/02/how-to-hide-tabpanels-of-aspnet-ajax.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-7415071922698447720</guid><pubDate>Sun, 18 Jan 2009 17:10:00 +0000</pubDate><atom:updated>2009-01-18T09:13:35.786-08:00</atom:updated><title>An update to the Silverlight chess board</title><description>&lt;p&gt;I recently published version 1.1 of my Silverlight chess board with the following new features:&lt;/p&gt;  &lt;li&gt;Added flip button to show the board from Black's point of view. &lt;/li&gt;  &lt;li&gt;Added animation when flipping the board. &lt;/li&gt;  &lt;li&gt;Support keyboard shortcuts page up and page down to switch between games. &lt;/li&gt;  &lt;li&gt;Added arrows parameter to turn off arrows. &lt;/li&gt;  &lt;li&gt;Added light and dark parameters to customize board colors. &lt;/li&gt;  &lt;li&gt;Added a small help screen showing the copyright and keyboard short cuts. &lt;/li&gt;  &lt;li&gt;Support PGN files with embedded FEN tag for specifying the starting position used for game fragments and solutions to problems or studies. &lt;/li&gt;  &lt;li&gt;Added flip parameter to flip the board.&lt;/li&gt;  &lt;p&gt;Here is a sample for the new game fragment support, a little Zugzwang master piece played by an old friend:&lt;/p&gt;  &lt;div align="center"&gt;&lt;object id="chess" data="data:application/x-silverlight," type="application/x-silverlight-2" width="350" height="350"&gt;&lt;param name="source" value="http://www.bennedik.de/ClientBin/SilverBoard.xap" /&gt;&lt;param name="background" value="white" /&gt;&lt;param name="initParams" value="pgnfile=Heinelt.pgn, ply=0" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;img src="http://go.microsoft.cofm/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;&lt;/a&gt;&lt;/object&gt;&lt;iframe style='visibility: hidden; height: 0; width: 0; border: 0px'&gt;&lt;/iframe&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7415071922698447720?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2009/01/update-to-silverlight-chess-board.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-5808273252989123234</guid><pubDate>Wed, 03 Dec 2008 12:21:00 +0000</pubDate><atom:updated>2008-12-03T04:23:57.123-08:00</atom:updated><title>Danish chess league using the Silverlight chess board</title><description>&lt;p&gt;The &lt;a target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/"&gt;Danish chess league&lt;/a&gt; is now using the Silverlight chess board, allowing visitors to replay the games. &lt;/p&gt;  &lt;p&gt;The web master Per Rasmussen has added a little chess board icon next to the results (see &lt;a title="http://www.divisionsskak.dk/holdarkiv/div0809/vis_enkeltres.asp?kamp=LIGA-10" target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/vis_enkeltres.asp?kamp=LIGA-10"&gt;example&lt;/a&gt;). If you click on the chess board you get to a page where you can replay the game (see &lt;a title="http://www.divisionsskak.dk/holdarkiv/div0809/spil_et_parti_silver.asp?kampnr=LIGA-2&amp;amp;bratnr=1" target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/spil_et_parti_silver.asp?kampnr=LIGA-2&amp;amp;bratnr=1"&gt;example&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;The easy integration of the board has been used to add pictures of the players and opening classification to the page.&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/spil_et_parti_silver.asp?kampnr=LIGA-2&amp;amp;bratnr=1"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.bennedik.de/images/DanishchessleagueusingtheSilverlightches_BB40/image.png" width="454" height="281" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-5808273252989123234?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/12/danish-chess-league-using-silverlight.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-3391434217961314837</guid><pubDate>Fri, 07 Nov 2008 14:23:00 +0000</pubDate><atom:updated>2008-11-07T06:23:21.934-08:00</atom:updated><title>Slim Silverlight</title><description>&lt;p&gt;Silverlight applications come in different flavours: Fat Silverlight applications, rich media islands, and slim Silverlight applets.&lt;/p&gt;  &lt;p&gt;Most Silverlight demos or applications I have seen are using the full page to display the Silverlight application. These applications are similar to traditional &lt;strike&gt;fat&lt;/strike&gt; rich client applications in functionality, but Silverlight solves the deployment issue. Deployment is even simpler compared to ClickOnce, and you get some cross platform compatibility on top. Some of these applications are in fact so similar to traditional applications that they turn off all navigation in the browser (I think WPF with ClickOnce may be a better solution for some of these).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/SlimSilverlight_EF3E/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Fat Silverlight application" border="0" alt="Fat Silverlight application" src="http://www.bennedik.de/images/SlimSilverlight_EF3E/image_thumb.png" width="404" height="259" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Examples for fat Silverlight applications include all samples from &lt;a href="http://www.componentone.com/SuperProducts/StudioSilverlight/Live+Examples/"&gt;ComponentOne&lt;/a&gt; or Microsoft’s &lt;a href="http://www.mscui.net/PatientJourneyDemonstrator/"&gt;health demo&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What I find more interesting is Silverlight applets that integrate into web sites. Sometimes this is called a “rich media island”. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/SlimSilverlight_EF3E/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Rich media island" border="0" alt="Rich media island" src="http://www.bennedik.de/images/SlimSilverlight_EF3E/image_thumb_3.png" width="404" height="211" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Examples for rich media islands include embedded videos or deep zoom images.&lt;/p&gt;  &lt;p&gt;But these applets do not have to be islands, because Silverlight comes with a full set of features for integration with the HTML DOM and Javascript:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can walk through and manipulate the HTML DOM from within Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66712"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;handle Silverlight events from Javascript (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66701"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;handle DOM events from Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66706"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;call Javascript functions from Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66706"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;evaluate Javascript expressions from Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66751"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;and call back into Silverlight from Javascript (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66733"&gt;Video&lt;/a&gt;). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;With this integration capabilities, you can develop slim Silverlight applets, that deeply integrate with HTML based pages. Think of them as client-side controls that encapsulate a piece of UI. This is similar to the existing control models we know for Windows Forms, OCX, and so on. You can insert them in your HTML with one simple object tag. And you can hook it up to your page and Javascript with events and DOM integration.&lt;/p&gt;  &lt;p&gt;You can develop such a Silverlight applet and distribute it to 3rd parties web sites – they can be used in static pages, dynamic sites, and Ajax applications. The web server does not have to run anything specific – it could be a static web space on an Apache server running Linux, and you can still use your Silverlight applet on that site.&lt;/p&gt;  &lt;p&gt;I recently developed a Silverlight chess board, which is used for &lt;a href="http://www.chesscenter.com/twic/twic.html"&gt;The Week In Chess&lt;/a&gt;, one of the biggest web sites about chess news. This application was a rich media island first, in that it just displayed a chess board with no further interaction with the containing HTML page. However, for the recent chess world championship we wanted to extend this and also display the notation of the game, which is the moves in text form, e.g. 1.e4 e5 2.Nf3 and so on.&lt;/p&gt;  &lt;p&gt;We discussed displaying the notation inside the Silverlight applet. However it became clear that the moves should be displayed with the same font settings and other CSS styles that the containing page uses. Furthermore, the moves also had to be part of the general layout of the page. Sometimes they would have to displayed to the right of the board, sometimes below the board, and the width of the notation also depended on the page layout.&lt;/p&gt;  &lt;p&gt;Deeper integration with the page was required. The solution chosen is that the HTML page designer creates an empty &amp;lt;div&amp;gt; tag on his page as a location for the notation. The Silverlight applet gets the id of this div tag as a parameter. Using DOM manipulation, the Silverlight applet then creates the notation inside this div. The page designer is able to create this div with any styles and notation he desires.&lt;/p&gt;  &lt;p&gt;A further requirement was for the user being able to click on a move in the notation, which should cause the board to update to the clicked position. This was solved by including a small JavaScript onclick handler into the generated notation div, that would call back into the Silverlight applet.&lt;/p&gt;  &lt;table&gt;    &lt;tr&gt;        &lt;td&gt;            &lt;object id="chess" data="data:application/x-silverlight," type="application/x-silverlight-2"                width="300" height="320"&gt;                &lt;param name="source" value="http://www.bennedik.de/ClientBin/SilverBoard.xap" /&gt;                                &lt;param name="background" value="white" /&gt;                &lt;param name="initParams" value="pgnfile=wch08.pgn, game=3, ply=28, notation=myNotation" /&gt;                &lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;                    &lt;img src="http://go.microsoft.cofm/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;                &lt;/a&gt;            &lt;/object&gt;            &lt;iframe style='visibility: hidden; height: 0; width: 0; border: 0px'&gt;&lt;/iframe&gt;        &lt;/td&gt;        &lt;td&gt;            &lt;div id="myNotation" /&gt;          &lt;/td&gt;    &lt;/tr&gt;&lt;/table&gt;  &lt;p&gt;Here is some sample code that illustrates this development:&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;ScriptableType&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;ScriptableMember&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Goto(&lt;span style="color: blue"&gt;int&lt;/span&gt; ply)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//code to go to given ply omitted&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ShowNotation()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;GameIterator&lt;/span&gt; i = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;GameIterator&lt;/span&gt;(game);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt; text = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; id = &lt;span style="color: #2b91af"&gt;HtmlPage&lt;/span&gt;.Plugin.Id;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;while&lt;/span&gt; (!i.AtEnd)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//code to display move numbers omitted&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;a onclick='javascript:document.getElementById(\&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(id);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;\&amp;quot;).Content.chessboard.Goto(&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(i.Ply + 1);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;);'&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(i.Board.Algebraic(game.Moves[i.Ply]));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; i.Forward();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;' '&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HtmlElement&lt;/span&gt; element = &lt;span style="color: #2b91af"&gt;HtmlPage&lt;/span&gt;.Document.GetElementById(notation);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; element.SetProperty(&lt;span style="color: #a31515"&gt;&amp;quot;innerHTML&amp;quot;&lt;/span&gt;, text.ToString());&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//other members omitted&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;     &lt;p style="margin: 0px"&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The page class is marked as a ScriptableType. This means that this class can expose members to JavaScript. The Goto() method that updates the board to a given move from the game is marked as ScriptableMember. Part of the ShowNotation() method illustrates how the notation is generated. A GameIterator is used to iterate through the moves of the chess game. A string builder is used to build up the HTML for the notation. For each move the algebraic notation is appended, enclosed with an &amp;lt;a&amp;gt; tag and a Javascript handler, that calls the exposed Goto() method of the Silverlight chess board. The id of the currently running Silverlight applet is determined using the HtmlPage.Plugin.Id property.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Application_Startup(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;StartupEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.RootVisual = page;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HtmlPage&lt;/span&gt;.RegisterScriptableObject(&lt;span style="color: #a31515"&gt;&amp;quot;chessboard&amp;quot;&lt;/span&gt;, page);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Finally, during startup of the Silverlight applet, the page object is exposed to Javascript by calling HtmlPage.RegisterScriptableObject.&lt;/p&gt;  &lt;p&gt;I am not aware of more examples for this kind of slim Silverlight applets. Please let me know of other examples in the comments.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3391434217961314837?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/11/slim-silverlight.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-7273010485143072563</guid><pubDate>Sun, 26 Oct 2008 00:21:00 +0000</pubDate><atom:updated>2008-10-25T17:26:41.957-07:00</atom:updated><title>I am in LA</title><description>&lt;p&gt;I am in Los Angeles for the PDC. Today I visited downtown. Tomorrow I am going to the pre-conference on concurrent multi-core programming on Windows and .NET. Here are some photos from downtown LA (click to see higher resolution).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0822768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="DSCF0822 (768x1024)" border="0" alt="DSCF0822 (768x1024)" align="left" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0822768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;It is a big country. Everything is really big. For example this advertising for a film fills a complete hotel. The film wasn’t even shown in the movie theatres, it is now released direct to DVD.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08921024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0892 (1024x768)" border="0" alt="DSCF0892 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08921024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;This is Los Angeles first fire engine. It was drawn by horses.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08401024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0840 (1024x768)" border="0" alt="DSCF0840 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08401024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;The modern version. Today I saw many of them parked throughout the city, I am not sure why.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08681024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0868 (1024x768)" border="0" alt="DSCF0868 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08681024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Walt Disney concert hall, looks like a space station.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0872768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0872 (768x1024)" border="0" alt="DSCF0872 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0872768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Los Angeles City Hall, seat of the Daily Planet in Superman, destroyed in the war of the worlds by mars men.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0898768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0898 (768x1024)" border="0" alt="DSCF0898 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0898768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Union station&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF09001024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0900 (1024x768)" border="0" alt="DSCF0900 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF09001024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Union station, interior. Also used in films as it still looks like 1939. In the waiting room they have sofas instead of chairs.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF09051024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0905 (1024x768)" border="0" alt="DSCF0905 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF09051024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Entrance to China town metro station&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0910768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0910 (768x1024)" border="0" alt="DSCF0910 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0910768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Famous restaurant in China town&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08621024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0862 (1024x768)" border="0" alt="DSCF0862 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08621024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Grand central market&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08731024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0873 (1024x768)" border="0" alt="DSCF0873 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08731024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;LAPD police car&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08741024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0874 (1024x768)" border="0" alt="DSCF0874 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08741024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Problem and solution (America is going green?)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08641024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0864 (1024x768)" border="0" alt="DSCF0864 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08641024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Angelus plaza with skyscrapers in the background.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08351024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0835 (1024x768)" border="0" alt="DSCF0835 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08351024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;More sky scrapers&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0836768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0836 (768x1024)" border="0" alt="DSCF0836 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0836768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Sky scraper reflection&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08441024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0844 (1024x768)" border="0" alt="DSCF0844 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08441024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Even more sky scrapers&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7273010485143072563?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/10/i-am-in-la.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-763683717737624060</guid><pubDate>Sun, 19 Oct 2008 19:43:00 +0000</pubDate><atom:updated>2008-10-19T12:51:09.920-07:00</atom:updated><title>The world championship</title><description>&lt;p&gt;&lt;a href="http://silverlight.net/"&gt;Silverlight 2.0&lt;/a&gt; was released just in time for the chess world championship – two hours before the start of game one. Fortunately there had been a release candidate which gave developers enough time to prepare for the release.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.chesscenter.com/twic/twic.html"&gt;The Week In Chess&lt;/a&gt; has been showing the first four games of the world championship live using my Silverlight chess board. They are also running analysis of the games. Here the Silverlight chess boards &lt;a href="http://www.chesscenter.com/twic/event/wch08/gm3.html"&gt;are used like diagrams in a printed book&lt;/a&gt;, but with the additional capability to replay the game in the diagrams. I have not seen this style for replayable diagrams anywhere else. This kind of diagram was one of the ideas in creating a chess board that can be integrated into any HTML page (oh, and into any blog post, as you can see).&lt;/p&gt;  &lt;p&gt;I went to Bonn to see games three and four on site. I was lucky as game three was incredibly exciting.&lt;/p&gt;  &lt;p&gt;I am not doing any opening previews this year as I was busy with the Silverlight chess board, and am also going to PDC. I think tomorrow we will see yet another line in the Slav – I don’t think the line played in game three will be seen again. But just one thing, after Anand’s novelty 14..Bb7: &lt;/p&gt;  &lt;div&gt; &lt;object id="chess" data="data:application/x-silverlight," type="application/x-silverlight-2" width="400" height="400"&gt;&lt;param name="source" value="http://www.bennedik.de/ClientBin/SilverBoard.xap" /&gt;&lt;param name="background" value="white" /&gt;&lt;param name="initParams" value="pgnfile=wch08.pgn, game=3, ply=28" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;img src="http://go.microsoft.cofm/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;&lt;/a&gt;&lt;/object&gt;&lt;iframe style='visibility: hidden; height: 0; width: 0; border: 0px'&gt;&lt;/iframe&gt; &lt;/div&gt;  &lt;p&gt;I think White can consider alternatives, for example 15.Rd1 (instead of 15.Bxb5 played in game three). The pawn on b5 is not so important, and the bishop is not so great on b5 either. If White can take on d4 instead, it may be the Black king who gets in danger, not the White. Of course this requires careful analysis, but I think it is an option to be considered.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-763683717737624060?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/10/world-championship.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-998243446278595228</guid><pubDate>Wed, 10 Sep 2008 12:42:00 +0000</pubDate><atom:updated>2008-09-10T05:42:47.696-07:00</atom:updated><title>Validation in the ASP.NET Ajax Control Toolkit TabContainer</title><description>&lt;p&gt;The &lt;a href="http://www.codeplex.com/AjaxControlToolkit"&gt;ASP.NET Ajax Control Toolkit&lt;/a&gt; contains a &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Tabs/Tabs.aspx"&gt;TabContainer control&lt;/a&gt; which allows the user to change tabs without a postback.&lt;/p&gt;  &lt;p&gt;But what if you want to validate user input in the TabContainer? I could not find documentation or samples about this so had to try myself. With a little help from &lt;a href="http://weblogs.asp.net/bleroy"&gt;Bertrand Le Roy&lt;/a&gt;, here is what I found out:&lt;/p&gt;  &lt;p&gt;There are two different use cases for validation and tab controls:&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Sample TabContainer" src="http://www.bennedik.de/images/Valida.NETAjaxControlToolkitTabContainer_C661/image.png" width="395" height="250" /&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. The tabs all belong to one big user input that is validated as a whole. You would want to have one button below the tabs (e.g. &amp;quot;Save&amp;quot; or &amp;quot;Send&amp;quot;). This button would validate all controls on all the tabs.&lt;/p&gt;    &lt;p&gt;2. The tabs are independent of each other, each containing independent user input. Each tab would have its own button, and if a button on a tab is pressed, only the controls on that tab should be validated.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you just place ASP.NET validation controls into the different TabPanels, a click on a button will validate all of them. This is use case 1, where you want to validate all user input at once. &lt;/p&gt;  &lt;p&gt;However, the user may be editing on tab 1, while he hasn't yet filled in a required field on tab 2. If the user now presses the button, client side validation will discover the required field on tab 2 isn't filled in and no postback occurs. The user won't see any visual indication of the validation error, because the validation control is on tab 2, which isn't visible.&lt;/p&gt;  &lt;p&gt;ASP.NET validation controls support a property SetFocusOnError. This automatically sets the focus on an input control that failed validation. However ASP.NET isn't able to switch the tab in the TabContainer.&lt;/p&gt;  &lt;p&gt;The solution for use case 1 is to insert a &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.validationsummary.aspx"&gt;ValidationSummary&lt;/a&gt; next to the submit button, outside of the TabContainer. The ValidationSummary can alert the user to validation errors across all tabs.&lt;/p&gt;  &lt;p&gt;For use case 2 with the independent tabs, ASP.NET's validation groups are the solution. Each validation control has a property &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.basevalidator.validationgroup.aspx"&gt;ValidationGroup&lt;/a&gt;. Use a different validation group on each tab. The button on each tab should have its ValidationGroup property set to the same value as the validation controls on that tab. In the button's click event handler, be sure to call the page's Validate method with the validation group as a parameter, before checking Page.IsValid.&lt;/p&gt;  &lt;p&gt;One more thing to note about user input in the TabContainer: There is &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=9493"&gt;a bug in the TabContainer&lt;/a&gt; which resets the active tab if you have a control on a tab with AutoPostBack set to true. To work around this issue, set the TabContainer's ActiveTab property in the handler of the autopostback event.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-998243446278595228?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/09/validation-in-aspnet-ajax-control.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>6</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-4473982418884040814</guid><pubDate>Mon, 25 Aug 2008 14:27:00 +0000</pubDate><atom:updated>2008-08-25T07:27:26.737-07:00</atom:updated><title>A Silverlight chess board</title><description>&lt;p&gt;For some time now &lt;a href="http://www.chesscenter.com/twic/twic.html" target="_blank"&gt;TWIC&lt;/a&gt; is using my Silverlight chess board for live transmission of games. The idea of the chess board is that it is small, unobtrusive and can easily be incorporated into any existing HTML layout.    &lt;br /&gt;Games can now automatically be refreshed, and an arrow highlights the last move. Users can replay games with the cursor keys. More features are planned when Silverlight 2 releases. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/ASilverlightchessboard_E737/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="image" src="http://www.bennedik.de/images/ASilverlightchessboard_E737/image_thumb.png" width="495" height="275" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-4473982418884040814?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/08/silverlight-chess-board.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-4633210189502945539</guid><pubDate>Sun, 03 Aug 2008 09:27:00 +0000</pubDate><atom:updated>2008-08-03T02:27:52.148-07:00</atom:updated><title>Meet me in Los Angeles - PDC 2008</title><description>&lt;p&gt;&lt;a href="http://www.microsoftpdc.com" target="_blank"&gt;&lt;img alt="PDC 2008" src="http://www.microsoftpdc.com/Images/BlogBling/Bling2.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-4633210189502945539?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/08/meet-me-in-los-angeles-pdc-2008.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-8340455860105307863</guid><pubDate>Mon, 19 May 2008 20:31:00 +0000</pubDate><atom:updated>2008-05-19T13:31:26.958-07:00</atom:updated><title>WPF integration for VAB update for Enterprise Library 4.0</title><description>&lt;p&gt;Patterns and Practices recently published &lt;a href="http://www.codeplex.com/entlib" target="_blank"&gt;Enterprise Library 4.0&lt;/a&gt; for Visual Studio 2008 and .NET 3.5.&lt;/p&gt; &lt;p&gt;I have updated the WPF integration for the validation application block (VAB) to work with the latest version. It also comes with the following improvements:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You can bind to different business objects (i.e. have different data contexts) inside a single ErrorProvider.  &lt;li&gt;Value converters on the bindings are now supported.  &lt;li&gt;Call Init() on the ErrorProvider if new validators should be added for a dynamic UI.  &lt;li&gt;ErrorProvider now has a property ErrorMessages, which contains a list of all errors.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can download the updated version here:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Download &lt;a href="http://www.bennedik.de/WPFValidation2008.zip"&gt;version 2.0&lt;/a&gt; for Visual Studio 2008, .NET 3.5 and Enterprise Library 4.0  &lt;li&gt;Download &lt;a href="http://www.bennedik.de/WPFValidation.zip"&gt;version 1.1&lt;/a&gt; for Visual Studio 2005, .NET 3.0 and Enterprise Library 3.0/3.1&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can read my previous posts on the WPF integration for VAB here:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.bennedik.de/2007/03/enterprise-wpf-validation.html"&gt;Enterprise WPF: Validation&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.bennedik.de/2007/04/wpf-integration-for-validation.html"&gt;WPF integration for validation application block&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.bennedik.de/2007/05/update-of-wpf-integration-for.html" target="_blank"&gt;Update of the WPF integration for the validation application block&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-8340455860105307863?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/05/wpf-integration-for-vab-update-for.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-3454934748915496678</guid><pubDate>Mon, 05 May 2008 20:44:00 +0000</pubDate><atom:updated>2008-05-05T14:23:31.209-07:00</atom:updated><title>Bamberg</title><description>&lt;p&gt;     &lt;div id="silverlightControlHost"&gt; 		&lt;object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="400" height="300"&gt; 			&lt;param name="source" value="http://www.bennedik.de/ClientBin/DeepZoomOutput.xap" /&gt; 			&lt;param name="onerror" value="onSilverlightError" /&gt; 			&lt;param name="background" value="white" /&gt; 			 			&lt;a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;"&gt;      			&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; 			&lt;/a&gt; 		&lt;/object&gt; 		&lt;iframe style='visibility:hidden;height:0;width:0;border:0px'&gt;&lt;/iframe&gt;     &lt;/div&gt; &lt;/p&gt; &lt;p&gt;I recently took this image of &lt;a href="http://de.wikipedia.org/wiki/Klein-Venedig_%28Bamberg%29"&gt;Klein-Venedig&lt;/a&gt; ("Little Venice") in &lt;a href="http://en.wikipedia.org/wiki/Bamberg"&gt;Bamberg&lt;/a&gt;. Use the mouse to drag and the mouse wheel to zoom the image.&lt;/p&gt; &lt;p&gt;Photo composition with &lt;a href="http://get.live.com/photogallery/overview"&gt;Windows Live photo gallery&lt;/a&gt;, deep zoom with Silverlight 2 beta 1 and &lt;a href="http://blogs.msdn.com/expression/archive/2008/05/03/an-update-to-deep-zoom-composer.aspx"&gt;Expression deep zoom composer&lt;/a&gt;. &lt;a href="http://www.bennedik.de/Bamberg.html"&gt;Click&lt;/a&gt; to see full screen view.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3454934748915496678?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2008/05/bamberg.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8406766.post-3408960926864099985</guid><pubDate>Sat, 27 Oct 2007 17:11:00 +0000</pubDate><atom:updated>2007-10-27T10:11:06.164-07:00</atom:updated><title>WPF: A fast font drop down list</title><description>&lt;p&gt;Writing a drop down list for fonts is easy in WPF. Just create a data template that binds the text and the font, and bind the ComboBox against Fonts.SystemFontFamilies:&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;fontComboSlow&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontFamily&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;15&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;20&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;and&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;fontComboSlow.ItemsSource = Fonts.SystemFontFamilies; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;gives you a nice drop down list with font preview:  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="308" alt="image_thumb6" src="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb6_thumb.png" width="308" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;However there is one caveat: The first time you run this and click on the drop down arrow, you will have to wait for some annoying time. The exact time depends on your hardware, and on how many fonts you have installed. If you click on the drop down arrow again, it is fast. If you close the program, and run the program again, it is still fast.&lt;/p&gt; &lt;p&gt;Why is it still fast if you run the program the second time? If you go to the task manager, and show the processes of all users, you can find that WPF is running its own process, called the "Windows Presentation Foundation Font Cache Service":&lt;/p&gt; &lt;p&gt;&lt;a href="file:///C:/Users/Martin/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/0a8af24a-62cd-4ba6-8a61-d5c9390a71f0/image7.png"&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="130" alt="image_thumb5" src="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb5_thumb.png" width="649" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;If you kill this process, and run the software again, the first click on the drop down arrow is slow again. I have been looking for a solution to this for some time. Recently, the WPF SDK blog had &lt;a href="http://blogs.msdn.com/wpfsdk/archive/2007/09/29/improving-the-performance-of-the-combobox.aspx"&gt;a post about improving the performance of the ComboBox&lt;/a&gt;, recommending a VirtualizingStackPanel as ItemsPanel for the ComboBox in such cases. They also explain the delay:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;This reason for the delay is that by default, the ComboBox uses a StackPanel, and a visual that represents each item is created at the same time, which is processor-intensive and memory-intensive.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Sure enough, if you change the XAML for the font drop down list to utilize the VirtualStackPanel as recommended:&lt;/p&gt; &lt;div style="font-size: 11pt; background: white; color: black; font-family: consolas"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;fontComboFast&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemsPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;VirtualizingStackPanel&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemsPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontFamily&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;15&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;20&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;the annoying delay is gone. If you scroll fast through the list of fonts, you can instead notice sometimes a very brief delay for a fraction of a second, when the system is loading a new font that was not shown so far.&lt;/p&gt; &lt;p&gt;You can &lt;a href="http://www.bennedik.de/FontDropdown.zip"&gt;download a sample program&lt;/a&gt;, where you can compare the two approaches.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3408960926864099985?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.bennedik.de/2007/10/wpf-fast-font-drop-down-list.html</link><author>noreply@blogger.com (Martin Bennedik)</author><thr:total>8</thr:total></item></channel></rss>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
