<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Bill Beckelman</title>
    <description>ASP.NET &amp; jQuery Demos</description>
    <link>http://beckelman.net/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.7</generator>
    <language>en-GB</language>
    <blogChannel:blogRoll>http://beckelman.net/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://beckelman.net/syndication.axd</blogChannel:blink>
    <dc:creator>Bill Beckelman</dc:creator>
    <dc:title>Bill Beckelman</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/BillBeckelman" type="application/rss+xml" /><item>
      <title>Use jQuery to Show a Link’s Address After its Text When Printing In IE6 and IE7</title>
      <description>&lt;p&gt;I found a cool trick in a &lt;a href="http://remysharp.com/2007/05/03/pretty-in-print-tips-for-print-styles/"&gt;post by Remy Sharp&lt;/a&gt; that appends the address of a hyperlink to the end of the link’s text when the page is printed. Unfortunately the trick only works in &lt;a href="http://kimblim.dk/csstest/#ex14"&gt;browsers that support the CSS2 pseudo selector&lt;/a&gt; &lt;a href="http://www.w3.org/TR/CSS2/selector.html#before-and-after"&gt;:after&lt;/a&gt;. Firefox, Safari, Chrome*, Opera and now IE8 all support the selector. IE6 and IE7 don’t though and that is a huge percentage of users.&lt;/p&gt;  &lt;p&gt;I came up with a way to achieve the same thing with IE6 and IE7 using jQuery and the proprietary &lt;a href="http://www.javascriptkit.com/javatutors/ie5print.shtml"&gt;IE events onbeforeprint and onafterprint&lt;/a&gt; though.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryLinkPrinting/Default.aspx"&gt;Live Demo&lt;/a&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;| &lt;a href="http://beckelman.net/file.axd?file=jQueryLinkPrinting.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (HTML, CSS, JavaScript)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I have only tested this successfully in IE6, IE7, IE8 RC, FF3.1 and Chrome 1.0&lt;/li&gt;    &lt;li&gt;&lt;strike&gt;I tried to test in Chrome 1.0 and it did not work. The only thing I can find is Chrome does &lt;/strike&gt;&lt;a href="http://www.quirksmode.org/css/contents.html#t20"&gt;&lt;strike&gt;not yet fully support the “content” selector&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt;.&lt;/strike&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Screenshots:&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Before Printing:        &lt;br /&gt;&lt;/strong&gt;&amp;#160;&lt;img title="image[7]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image[7]" src="http://beckelman.net/image.axd?picture=image7.png" width="553" border="0" /&gt; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;After Printing:        &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://beckelman.net/image.axd?picture=image8.png"&gt;&lt;img title="image[8]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="132" alt="image[8]" src="http://beckelman.net/image.axd?picture=image8_thumb.png" width="563" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;(Only links that I have marked with the class print_link will have the address appended when printed)&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;jQuery:&lt;/h3&gt;  &lt;p&gt;First add a reference to the jQuery file. I recommend using &lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;Google’s CDN&lt;/a&gt;. After that the following is all that is needed:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
    $(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
        &lt;span class="rem"&gt;//Check to see if browser supports onbeforeprint (IE6, IE7 and IE8)&lt;/span&gt;
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (window.onbeforeprint !== undefined) {
            &lt;span class="rem"&gt;//Since the browser is IE, add event to append link text before print&lt;/span&gt;
            window.onbeforeprint = ShowLinks;
            
            &lt;span class="rem"&gt;//Remove the link text since the document has gone to the printer&lt;/span&gt;
            window.onafterprint = HideLinks;
        }
        &lt;span class="kwrd"&gt;else&lt;/span&gt; {
            &lt;span class="rem"&gt;//The browser is not IE so attach a print style to append the link's text when printed&lt;/span&gt;
            $(&lt;span class="str"&gt;'head'&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;print&amp;quot;&amp;gt;.print_link:after { content: &amp;quot; (&amp;quot; attr(href) &amp;quot;)&amp;quot;; }&amp;lt;/style&amp;gt;'&lt;/span&gt;);
        }
    });

    &lt;span class="kwrd"&gt;function&lt;/span&gt; ShowLinks() {
        $(&lt;span class="str"&gt;&amp;quot;.print_link&amp;quot;&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            &lt;span class="rem"&gt;//Store the link's original text in the jQuery data store               &lt;/span&gt;
            $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).data(&lt;span class="str"&gt;&amp;quot;linkText&amp;quot;&lt;/span&gt;, $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).text());

            &lt;span class="rem"&gt;//Append the link to the current text&lt;/span&gt;
            $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).append(&lt;span class="str"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; + $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).attr(&lt;span class="str"&gt;&amp;quot;href&amp;quot;&lt;/span&gt;) + &lt;span class="str"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);                
        });
    }

    &lt;span class="kwrd"&gt;function&lt;/span&gt; HideLinks() {
        $(&lt;span class="str"&gt;&amp;quot;.print_link&amp;quot;&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            &lt;span class="rem"&gt;//Restore the links text to the original value by pulling it out of the jQuery data store&lt;/span&gt;
            $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).text($(&lt;span class="kwrd"&gt;this&lt;/span&gt;).data(&lt;span class="str"&gt;&amp;quot;linkText&amp;quot;&lt;/span&gt;));
        });
    }         
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;

&lt;h3&gt;Cool jQuery Functions Used:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://docs.jquery.com/Manipulation/append#content"&gt;append(content)&lt;/a&gt; - Append content to the inside of every matched element. &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://docs.jquery.com/Core/data#name"&gt;data(name)&lt;/a&gt; - Returns value at named data store for the element, as set by data(name, value). &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://docs.jquery.com/Core/data#namevalue"&gt;data(name, value)&lt;/a&gt; - Stores the value in the named spot. &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://docs.jquery.com/Attributes/text"&gt;text()&lt;/a&gt; - Gets the combined text contents of all matched elements. &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://docs.jquery.com/Attributes/text#val"&gt;text(val)&lt;/a&gt; - Sets the text contents of all matched elements. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Of course you probably want to add a more in depth print style sheet beyond just this tweak. I would recommend looking at &lt;a href="http://remysharp.com/2007/05/03/pretty-in-print-tips-for-print-styles/"&gt;Remy’s post&lt;/a&gt; as a starting place. &lt;/p&gt;

&lt;p&gt;Be sure to checkout the &lt;font color="#000000" size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryLinkPrinting/Default.aspx"&gt;live demo&lt;/a&gt;&lt;/font&gt; and &lt;font size="5"&gt;&lt;a href="http://beckelman.net/file.axd?file=jQueryLinkPrinting.zip"&gt;download&lt;/a&gt;&lt;/font&gt;. Please let me know how you would improve this or if you find any bugs. Also, please let me know if it works on Safari and Opera.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;[dzone]&amp;#160; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2009/02/16/Use-jQuery-to-Show-a-Linke28099s-Address-After-its-Text-When-Printing-In-IE6-and-IE7.aspx&amp;amp;title=Use jQuery to Show a Link’s Address After its Text When Printing In IE6 and IE7"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2009/02/16/Use-jQuery-to-Show-a-Linke28099s-Address-After-its-Text-When-Printing-In-IE6-and-IE7.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_697oFeH0nB60o_GWN6NoAWcwl4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_697oFeH0nB60o_GWN6NoAWcwl4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_697oFeH0nB60o_GWN6NoAWcwl4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_697oFeH0nB60o_GWN6NoAWcwl4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/xMUFn0Rq7Nk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/xMUFn0Rq7Nk/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2009/02/16/Use-jQuery-to-Show-a-Linke28099s-Address-After-its-Text-When-Printing-In-IE6-and-IE7.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=bf61c92b-3861-4115-87cc-4d638198f644</guid>
      <pubDate>Mon, 16 Feb 2009 22:10:58 -0600</pubDate>
      <category>ASP.NET</category>
      <category>CSS</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=bf61c92b-3861-4115-87cc-4d638198f644</pingback:target>
      <slash:comments>38</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=bf61c92b-3861-4115-87cc-4d638198f644</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2009/02/16/Use-jQuery-to-Show-a-Linke28099s-Address-After-its-Text-When-Printing-In-IE6-and-IE7.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=bf61c92b-3861-4115-87cc-4d638198f644</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=bf61c92b-3861-4115-87cc-4d638198f644</feedburner:origLink></item>
    <item>
      <title>Copy to Clipboard with ZeroClipboard, Flash 10 and jQuery</title>
      <description>&lt;p&gt;So I knew it would happen at some point. Some handy flash developer would figure out how to get around the &lt;a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes_02.html#head31"&gt;security limitation in Flash 10&lt;/a&gt; that requires the &lt;code&gt;System.setClipboard() &lt;/code&gt;method (ActionScript) to only be called by an action that originates from a user interaction. Last week I ran across an &lt;a href="http://ajaxian.com/archives/seeding-the-clipboard-in-flash10-with-zero-clipboard"&gt;article on Ajaxian&lt;/a&gt; that linked to &lt;a href="http://code.google.com/p/zeroclipboard/"&gt;ZeroClipboard&lt;/a&gt; developed by Joseph Huckaby that worked as promised.&lt;/p&gt;  &lt;p&gt;From the ZeroClipboard web site:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This library is fully compatible with Flash Player 10, which requires that the clipboard copy operation be initiated by a user click event inside the Flash movie. This is achieved by automatically floating the invisible movie on top of a &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Document_Object_Model"&gt;&lt;em&gt;DOM&lt;/em&gt;&lt;/a&gt;&lt;em&gt; element of your choice. Standard mouse events are even propagated out to your DOM element, so you can still have rollover and mouse down effects.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;With today’s post I will show you a contrived example to get you started. I eventually hope to add this to the &lt;a href="http://beckelman.net/post/2008/11/30/Add-Copy-to-Clipboard-Command-To-contextMenujs-Plugin-Demo.aspx"&gt;contextMenu.js jQuery plugin&lt;/a&gt; that I use, but for now this should be pretty straight forward. I do want to note that in the demo and download I am loading the latest version of the jQuery library (1.3.1) from Google’s CDN for the first time in any of my posts. For more information on how to do this see the &lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;instructions from Google&lt;/a&gt;. I am also shortcutting the ready event which is a tip I found from a great post &lt;a href="http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx"&gt;Improve your jQuery - 25 excellent tips&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryCopyToClipboard/Default.aspx"&gt;Live Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryCopyToClipboard.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (HTML, CSS, JS)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Screenshots of End Product:&lt;/h3&gt;  &lt;p&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="282" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/CopytoClipboardwithZeroClipboardFlash10a_71B6/image_7c03b5b0-c3e5-4f8b-8dac-4ccfb0abba8f.png" width="582" border="0" /&gt;&amp;#160; &lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="212" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/CopytoClipboardwithZeroClipboardFlash10a_71B6/image_2819a8b7-31fb-412a-b02d-42ec532db9c0.png" width="270" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;jQuery Used to Attach a ZeroClipboard Instance to Each Copy Icon:&lt;/h3&gt;  &lt;pre class="csharpcode"&gt;&amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
    $(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {

        $(&lt;span class="str"&gt;&amp;quot;#customerTable tbody td:last-child&amp;quot;&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            &lt;span class="rem"&gt;//Create a new clipboard client&lt;/span&gt;
            &lt;span class="kwrd"&gt;var&lt;/span&gt; clip = &lt;span class="kwrd"&gt;new&lt;/span&gt; ZeroClipboard.Client();

            &lt;span class="rem"&gt;//Cache the last td and the parent row    &lt;/span&gt;
            &lt;span class="kwrd"&gt;var&lt;/span&gt; lastTd = $(&lt;span class="kwrd"&gt;this&lt;/span&gt;);
            &lt;span class="kwrd"&gt;var&lt;/span&gt; parentRow = lastTd.parent(&lt;span class="str"&gt;&amp;quot;tr&amp;quot;&lt;/span&gt;);

            &lt;span class="rem"&gt;//Glue the clipboard client to the last td in each row&lt;/span&gt;
            clip.glue(lastTd[0]);

            &lt;span class="rem"&gt;//Grab the text from the parent row of the icon&lt;/span&gt;
            &lt;span class="kwrd"&gt;var&lt;/span&gt; txt = $.trim($(&lt;span class="str"&gt;&amp;quot;td:first-child&amp;quot;&lt;/span&gt;, parentRow).text()) + &lt;span class="str"&gt;&amp;quot;\r\n&amp;quot;&lt;/span&gt; + $.trim($(&lt;span class="str"&gt;&amp;quot;td:nth-child(2)&amp;quot;&lt;/span&gt;, parentRow).text()) + &lt;span class="str"&gt;&amp;quot;\r\n&amp;quot;&lt;/span&gt; +
            $.trim($(&lt;span class="str"&gt;&amp;quot;td:nth-child(3)&amp;quot;&lt;/span&gt;, parentRow).text()) + &lt;span class="str"&gt;&amp;quot;\r\n&amp;quot;&lt;/span&gt; + $.trim($(&lt;span class="str"&gt;&amp;quot;td:nth-child(4)&amp;quot;&lt;/span&gt;, parentRow).text());
            clip.setText(txt);

            &lt;span class="rem"&gt;//Add a complete event to let the user know the text was copied&lt;/span&gt;
            clip.addEventListener(&lt;span class="str"&gt;'complete'&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(client, text) {
                alert(&lt;span class="str"&gt;&amp;quot;Copied text to clipboard:\n&amp;quot;&lt;/span&gt; + text);
            });
        });
    });                               
&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

&lt;p&gt;Please let me know in the comments what you think and what you might do different. Be sure to checkout the &lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryCopyToClipboard/Default.aspx"&gt;demo&lt;/a&gt;&lt;/font&gt; and &lt;font size="5"&gt;&lt;a href="http://beckelman.net/file.axd?file=jQueryCopyToClipboard.zip"&gt;download&lt;/a&gt;&lt;/font&gt;.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;[dzone]&amp;#160; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx&amp;amp;title=Copy to Clipboard with ZeroClipboard, Flash 10 and jQuery"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xNn5RricK5LixjamjMUBIoJj5NU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xNn5RricK5LixjamjMUBIoJj5NU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xNn5RricK5LixjamjMUBIoJj5NU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xNn5RricK5LixjamjMUBIoJj5NU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/eVRY59gGeFc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/eVRY59gGeFc/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=9d7b0335-8617-42ea-ab59-03b46e249a1a</guid>
      <pubDate>Thu, 22 Jan 2009 08:15:35 -0600</pubDate>
      <category>jQuery</category>
      <category>ASP.NET</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=9d7b0335-8617-42ea-ab59-03b46e249a1a</pingback:target>
      <slash:comments>16</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=9d7b0335-8617-42ea-ab59-03b46e249a1a</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=9d7b0335-8617-42ea-ab59-03b46e249a1a</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=9d7b0335-8617-42ea-ab59-03b46e249a1a</feedburner:origLink></item>
    <item>
      <title>More jQuery Alert Dialogs Demo</title>
      <description>&lt;p&gt;A couple of weeks ago &lt;a href="http://beckelman.net/post/2008/12/30/jQuery-Alert-Dialogs.aspx"&gt;I wrote&lt;/a&gt; about Cory S.N. LaViska’s new &lt;a href="http://abeautifulsite.net/notebook/87"&gt;jQuery Alert Dialogs Plugin&lt;/a&gt;. Since then I have used it quite a bit and have been really happy with its ease of use and simplicity. At the end of the my first post about the plugin I said I would try and show you a way to setup an alert from the server side so that it shows up once the web page loads.&lt;/p&gt;  &lt;p&gt;So when might you do this? You might want an alert on page load to let the user know that a task such as a delete was successful or probably more importantly and less intrusive would be to only let the user know something went wrong. &lt;/p&gt;  &lt;p&gt;The method I came up with to popup the dialog on page load involves a single hidden field. All you have to do is pass the type of alert, message and title you want through the hidden field and the jQuery/JavaScript will take this data on page load and create the desired alert. Remember, you will need my version of the plugin (in the download) to be able to choose the different type of dialogs (info, success, warning, error). Also, the css and images for the dialogs originally came from Janko’s great post &lt;a href="http://www.jankoatwarpspeed.com/post/2008/05/22/CSS-Message-Boxes-for-different-message-types.aspx"&gt;CSS Message Boxes for different message types&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryAlertDialogsOnLoad/Default.aspx"&gt;Live Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryAlertDialogsOnLoad.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (HTML, CSS, JS)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Screenshot of End Product:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="108" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/MorejQueryAlertDialogsDemo_5F3C/image_8817c770-db6b-47ab-9ff0-caa449c7cb63.png" width="502" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;jQuery:&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;

        $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            &lt;span class="rem"&gt;//See if an alert has been setup from the server side&lt;/span&gt;
            CheckAlert();
            
            &lt;span class="rem"&gt;//Add a click event to each delete icon&lt;/span&gt;
            $(&lt;span class="str"&gt;&amp;quot;#tableTasks tbody td:last-child&amp;quot;&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                    &lt;span class="kwrd"&gt;var&lt;/span&gt; txt = $(&lt;span class="str"&gt;&amp;quot;td:first-child&amp;quot;&lt;/span&gt;, $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).parent(&lt;span class="str"&gt;&amp;quot;tr&amp;quot;&lt;/span&gt;)).html()
                    jAlert(&lt;span class="str"&gt;&amp;quot;confirm&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Are you sure you want to delete the task '&amp;quot;&lt;/span&gt; + txt + &lt;span class="str"&gt;&amp;quot;'&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Confirm&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(r) {
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (r == &lt;span class="kwrd"&gt;true&lt;/span&gt;) {

                            &lt;span class="rem"&gt;//You would most likely want to set the HiddenFieldAlert value on the server once the task has been deleted&lt;/span&gt;
                            &lt;span class="rem"&gt;//I am doing it here so that this demo can remain plain html, css, js                                                        &lt;/span&gt;
                            $(&lt;span class="str"&gt;&amp;quot;#HiddenFieldAlert&amp;quot;&lt;/span&gt;).val(&lt;span class="str"&gt;&amp;quot;success;The task '&amp;quot;&lt;/span&gt; + txt + &lt;span class="str"&gt;&amp;quot;' would of been deleted.;Success&amp;quot;&lt;/span&gt;);
                            CheckAlert();
                        }
                    });
                }).css(&lt;span class="str"&gt;&amp;quot;cursor&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;pointer&amp;quot;&lt;/span&gt;);
            });

        });
        
        &lt;span class="kwrd"&gt;function&lt;/span&gt; CheckAlert() {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; alertData = $(&lt;span class="str"&gt;&amp;quot;#HiddenFieldAlert&amp;quot;&lt;/span&gt;);

            &lt;span class="kwrd"&gt;if&lt;/span&gt; (alertData.val()) {
                &lt;span class="kwrd"&gt;var&lt;/span&gt; alertDataArray = alertData.val().split(&lt;span class="str"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;)
                jAlert(alertDataArray[0], alertDataArray[1], alertDataArray[2], &lt;span class="kwrd"&gt;null&lt;/span&gt;);
                alertData.val(&lt;span class="str"&gt;''&lt;/span&gt;);
            }
        }
    &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Please be sure to checkout the &lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryAlertDialogsOnLoad/Default.aspx"&gt;live demo&lt;/a&gt;&lt;/font&gt; and &lt;font size="5"&gt;&lt;a href="http://beckelman.net/file.axd?file=jQueryAlertDialogsOnLoad.zip"&gt;download&lt;/a&gt;&lt;/font&gt;. Let me know in the comments what you think.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;[dzone]&amp;#160;&amp;#160; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2009/01/14/More-jQuery-Alert-Dialogs-Demo.aspx&amp;amp;title=More jQuery Alert Dialogs Demo"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2009/01/14/More-jQuery-Alert-Dialogs-Demo.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Jq7PZ7_aOv6EZQY2umVPjln_jHs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Jq7PZ7_aOv6EZQY2umVPjln_jHs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Jq7PZ7_aOv6EZQY2umVPjln_jHs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Jq7PZ7_aOv6EZQY2umVPjln_jHs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/jcba8RG8CwA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/jcba8RG8CwA/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2009/01/14/More-jQuery-Alert-Dialogs-Demo.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=cd2c80bc-5cee-4778-ba02-2f420ff4fe0d</guid>
      <pubDate>Wed, 14 Jan 2009 06:48:52 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <category>CSS</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=cd2c80bc-5cee-4778-ba02-2f420ff4fe0d</pingback:target>
      <slash:comments>9</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=cd2c80bc-5cee-4778-ba02-2f420ff4fe0d</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2009/01/14/More-jQuery-Alert-Dialogs-Demo.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=cd2c80bc-5cee-4778-ba02-2f420ff4fe0d</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=cd2c80bc-5cee-4778-ba02-2f420ff4fe0d</feedburner:origLink></item>
    <item>
      <title>Set the Content of a NicEdit WYSIWYG Instance With JavaScript</title>
      <description>&lt;p&gt;In a couple of &lt;a href="http://beckelman.net/post/2008/12/05/jQuery-SimpleModal-Plugin-Version-12-with-NicEdit-WYSIWYG-Editor.aspx"&gt;previous posts&lt;/a&gt; I have used the pretty cool &lt;a href="http://nicedit.com/"&gt;NicEdit WYSIWYG editor&lt;/a&gt;. Today I wanted to show you how you can use its &lt;a href="http://wiki.nicedit.com/Javascript+API"&gt;JavaScript API&lt;/a&gt; to set the content of the editor’s body to the data of the item you want to edit. Please remember to be careful when accepting html content from users!&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryNicEditJavaScriptAPI/Default.aspx"&gt;Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryNicEditJavaScriptAPI.zip"&gt;Download&lt;/a&gt;&lt;/font&gt;&amp;#160; (HTML, CSS, JS)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Screenshots of End Product&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;-Clicking the edit icon pops up a SimpleModal dialog.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="141" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/SettheContentofaNicEditWYSIWYGInstance_11059/image_b665a755-9753-4444-bfbe-5b304da19277.png" width="443" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;-The dialog contains a NicEdit Instance that has its content set to the item that you clicked to edit.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="267" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/SettheContentofaNicEditWYSIWYGInstance_11059/image_d0bdc2c8-e547-4398-8011-543a05ca2f9c.png" width="520" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Explanation&lt;/h2&gt;  &lt;p&gt;Your best bet is to download the code and go through it yourself, but basically what happens when the edit icon is clicked is a new instance of the editor is instantiated:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &lt;span class="rem"&gt;//Setup the NicEditor&lt;/span&gt;
    taskArea = &lt;span class="kwrd"&gt;new&lt;/span&gt; nicEditor(
    { buttonList: [&lt;span class="str"&gt;'bold'&lt;/span&gt;, &lt;span class="str"&gt;'italic'&lt;/span&gt;, &lt;span class="str"&gt;'underline'&lt;/span&gt;, &lt;span class="str"&gt;'left'&lt;/span&gt;, &lt;span class="str"&gt;'center'&lt;/span&gt;, &lt;span class="str"&gt;'right'&lt;/span&gt;, &lt;span class="str"&gt;'justify'&lt;/span&gt;, &lt;span class="str"&gt;'ol'&lt;/span&gt;, &lt;span class="str"&gt;'ul'&lt;/span&gt;, &lt;span class="str"&gt;'indent'&lt;/span&gt;, &lt;span class="str"&gt;'outdent'&lt;/span&gt;, &lt;span class="str"&gt;'link'&lt;/span&gt;, &lt;span class="str"&gt;'unlink'&lt;/span&gt;] })
    .panelInstance(&lt;span class="str"&gt;&amp;quot;taskEditingArea&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;The API then provides a way to get at this instance by finding it with nicEditors.findEditor() and then setting its content with .setContent():&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    nicEditors.findEditor(&lt;span class="str"&gt;&amp;quot;taskEditingArea&amp;quot;&lt;/span&gt;).setContent(editorText);&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;For more information be sure to see the &lt;a href="http://wiki.nicedit.com/Javascript+API"&gt;API Documentation&lt;/a&gt; for NicEdit as well as the &lt;font size="5"&gt;&lt;a href="http://beckelman.net/file.axd?file=jQueryNicEditJavaScriptAPI.zip"&gt;download&lt;/a&gt;&lt;/font&gt; for my &lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryNicEditJavaScriptAPI/Default.aspx"&gt;demo&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;[dzone]&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2009/01/07/Set-the-Content-of-a-NicEdit-WYSIWYG-Instance-With-JavaScript.aspx&amp;amp;title=Set the Content of a NicEdit WYSIWYG Instance With JavaScript"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2009/01/07/Set-the-Content-of-a-NicEdit-WYSIWYG-Instance-With-JavaScript.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0Pmqg1PEobhAEOas76uCvcUn6kY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Pmqg1PEobhAEOas76uCvcUn6kY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0Pmqg1PEobhAEOas76uCvcUn6kY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Pmqg1PEobhAEOas76uCvcUn6kY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/SUXu_VdMYYg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/SUXu_VdMYYg/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2009/01/07/Set-the-Content-of-a-NicEdit-WYSIWYG-Instance-With-JavaScript.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=67e0488d-ee23-4658-9019-ac7d1817b656</guid>
      <pubDate>Wed, 07 Jan 2009 15:17:50 -0600</pubDate>
      <category>jQuery</category>
      <category>ASP.NET</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=67e0488d-ee23-4658-9019-ac7d1817b656</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=67e0488d-ee23-4658-9019-ac7d1817b656</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2009/01/07/Set-the-Content-of-a-NicEdit-WYSIWYG-Instance-With-JavaScript.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=67e0488d-ee23-4658-9019-ac7d1817b656</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=67e0488d-ee23-4658-9019-ac7d1817b656</feedburner:origLink></item>
    <item>
      <title>There is More Content than Just the Front Page on DotNetKicks</title>
      <description>&lt;p&gt;Are you tired of going to &lt;a href="http://www.dotnetkicks.com/"&gt;DotNetKicks&lt;/a&gt; and finding the same stories on the front page for days in a row? Trust me, there is some great content out there that never makes the front page. You just have to look a little deeper. When you do, you can help put some of that great new content in front of the masses. Even if you don’t submit stories yourself, you can still help out by giving the initial votes that push a story to the front page.&lt;/p&gt;  &lt;p&gt;Why don’t these great articles make the front page? I can only speculate with two reasons. First, there are only so many users currently looking through the upcoming stories as well as submitting new content. Second, a lot of new content is added in the off hours and sort of slips by without ever reaching the critical mass or tipping point necessary to hit the front page. It just never makes&amp;#160; it in front of the right users who kick from the upcoming queue.&lt;/p&gt;  &lt;p&gt;So how do you find this content? The way to see it all is to stay on top of the &lt;a href="http://www.dotnetkicks.com/upcoming"&gt;upcoming stories&lt;/a&gt; queue. I know there is quite a bit of spam (it’s getting better as pointed out by John in the first comment), useless stuff and things you might not be interested in so I will show you some other ways.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Build a list of Friends&lt;/h3&gt;  &lt;p&gt;A great way to monitor the new content without having to spend your time in the upcoming queue is to build a list of friends. If you have spent anytime at all on DotNetKicks, I bet you have noticed that certain users tend to submit and vote up the stories you are interested in. Luckily DotNetKicks lets you add other users as friends to your profile. You can then view all of the stories that your friends are submitting or kicking.&lt;/p&gt;  &lt;p&gt;1. Each story lists who it was submitted by. By clicking “read more…” you can also view who kicked the story to prominence in order.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="166" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ThereisMoreContentthanJusttheFrontPageon_14593/image_eaffbfe8-8711-49b7-9c0e-7b2eb39c2349.png" width="635" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2. If you have seen a particular user’s name a few times and liked the stories submitted or kicked, just click on the user’s name and then select “Add ‘username’ as a Friend&amp;quot;.” &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="381" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ThereisMoreContentthanJusttheFrontPageon_14593/image_d790abaa-76c5-4889-a308-e1fe75708b4d.png" width="650" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3. When viewing your own profile you can then click on “Kicked By Friends” or “Submitted By Friends” to view what your friends have been up to.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="97" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ThereisMoreContentthanJusttheFrontPageon_14593/image_fc98817a-1e13-475e-ba12-30e4d27efd5c.png" width="464" border="0" /&gt; &lt;/p&gt;    &lt;p&gt;-Click your username to view your profile&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="568" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ThereisMoreContentthanJusttheFrontPageon_14593/image_8f5e4db9-88e5-4921-bd53-1ce1cb61c670.png" width="642" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;4. Unfortunately, you can’t grab an RSS feed of the “Kicked By Friends” or “Submitted By Friends” data, but you can grab a feed of any individual user including yourself which isn’t a bad why to archive what you have been interested in.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="314" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ThereisMoreContentthanJusttheFrontPageon_14593/image_1d20c349-ce07-4c20-a180-4184aae17fdc.png" width="682" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;View and Subscribe to the Categories You’re Really Interested In&lt;/h3&gt;  &lt;p&gt;I believe each of us has certain content that we are most interested in and want to stay on top of (for me it’s jQuery and ASP.NET). On the right side of the DotNetKicks home page near the bottom, you can select the category of content you want to keep your eye on. When you select one of the categories you are shown the latest stuff in that category, not just the stuff in that category that has made the front page. You can go here and view the latest content or you can subscribe to the feeds for the categories that interest you. Then when there is great new content in your categories, make sure to give it a vote so that it might rise and benefit others.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="648" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ThereisMoreContentthanJusttheFrontPageon_14593/image_a7c2881f-a42f-400d-9f4d-01fd1047eb8e.png" width="204" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="264" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ThereisMoreContentthanJusttheFrontPageon_14593/image_433036ec-b1a6-4375-afed-bffac9b6bad8.png" width="569" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I urge you to spend some time promoting new content for the benefit of all. Along the way I am sure you will learn quite a bit and probably make some new friends (please consider adding me as a &lt;a href="http://www.dotnetkicks.com/users/beckelmw/"&gt;friend&lt;/a&gt;) . &lt;/p&gt;  &lt;p&gt;Have you found another way to find great new content on DotNetKicks or disagree with me. Let me know in the comments.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2009/01/06/There-is-More-Content-than-Just-the-Front-Page-on-DotNetKicks.aspx&amp;amp;title=There is More Content than Just the Front Page on DotNetKicks"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2009/01/06/There-is-More-Content-than-Just-the-Front-Page-on-DotNetKicks.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&amp;#160;&amp;#160; [dzone]&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EIVU9Fnq5TNmKi8gZoLISOU3wpQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIVU9Fnq5TNmKi8gZoLISOU3wpQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EIVU9Fnq5TNmKi8gZoLISOU3wpQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIVU9Fnq5TNmKi8gZoLISOU3wpQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/TZ1oD4pdEd0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/TZ1oD4pdEd0/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2009/01/06/There-is-More-Content-than-Just-the-Front-Page-on-DotNetKicks.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=45250b9a-cd04-4976-9595-19e62bd0c0e0</guid>
      <pubDate>Tue, 06 Jan 2009 07:53:39 -0600</pubDate>
      <category>Social Media</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=45250b9a-cd04-4976-9595-19e62bd0c0e0</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=45250b9a-cd04-4976-9595-19e62bd0c0e0</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2009/01/06/There-is-More-Content-than-Just-the-Front-Page-on-DotNetKicks.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=45250b9a-cd04-4976-9595-19e62bd0c0e0</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=45250b9a-cd04-4976-9595-19e62bd0c0e0</feedburner:origLink></item>
    <item>
      <title>Format Selected Table Rows For Pasting into Excel</title>
      <description>&lt;p&gt;Back in November I wrote a post &lt;a href="http://beckelman.net/post/2008/11/30/Add-Copy-to-Clipboard-Command-To-contextMenujs-Plugin-Demo.aspx"&gt;Add Copy to Clipboard Command To contextMenu.js Plugin Demo&lt;/a&gt; that copied the data from the selected table rows to the user’s clipboard. This method worked great unless you had a version of Flash Player higher than 9 installed due to a &lt;a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes_02.html#head31"&gt;Security Change in Flash Player 10&lt;/a&gt;. I decided to mess around with this again today and come up with another method that might work that does not require any server side interaction.&lt;/p&gt;  &lt;p&gt;I’m not really sure if this is an optimal solution (have to worry about popups being blocked), but I did get to mess around with some pretty interesting JavaScript and in the end it does work if your looking for another way. &lt;/p&gt;  &lt;p&gt;The method I came up with does the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Builds a string of the selected rows using a JavaScript string builder function I found &lt;a href="http://www.player.idv.tw/prog/index.php?title=JavaScript:StringBuilder"&gt;here&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;The string is inserted in a hidden text area on the parent page (Note: I initially used a text input which worked fine in IE7 and FF3 but puked in Chrome 1.0).&lt;/li&gt;    &lt;li&gt;The child popup is opened.&lt;/li&gt;    &lt;li&gt;The child popup calls back to the parent and grabs the data from the hidden text area using: window.opener.document.getElementById('Hidden Text Area').value&lt;/li&gt;    &lt;li&gt;The data on the child is then selected to make it ready for the user to press ctrl-c or right click/copy using some cross browser JavaScript.     &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryContextMenuCopyToExcel/Default.aspx"&gt;Demo&lt;/a&gt; &lt;font size="2"&gt;(Tested in IE7, FF3 and Chrome)&lt;/font&gt;| &lt;a href="http://beckelman.net/file.axd?file=jQueryContextMenuCopyToExcel.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (HTML/CSS/JS)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Screenshots of End Product:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Format For Excel is clicked.     &lt;br /&gt;      &lt;br /&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="152" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/FormatSelectedTableRowsForPastingintoExc_11E48/image_5bcf4438-6f36-451b-99e1-1d25b4895696.png" width="794" border="0" /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Popup loads with table data formatted cleanly, highlighted and ready for copying for pasting into Excel, Word, Outlook, etc.&lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="492" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/FormatSelectedTableRowsForPastingintoExc_11E48/image_f2b44d0b-e6bc-4a2b-84dd-1d3dd2ad37ac.png" width="620" border="0" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Be sure to checkout the &lt;a href="http://beckelman.net/demos/jQueryContextMenuCopyToExcel/Default.aspx"&gt;&lt;font size="5"&gt;demo&lt;/font&gt;&lt;/a&gt; and &lt;font size="5"&gt;&lt;a href="http://beckelman.net/file.axd?file=jQueryContextMenuCopyToExcel.zip"&gt;download&lt;/a&gt;&lt;/font&gt;. Let me know what you think? Would you use this? If not, what would you do different?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[dzone]&amp;#160; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2009/01/02/Format-Selected-Table-Rows-For-Pasting-into-Excel.aspx&amp;amp;title=Format Selected Table Rows For Pasting into Excel"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2009/01/02/Format-Selected-Table-Rows-For-Pasting-into-Excel.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/B3IR8CpBj6uInyZQP4lsoGiDZ0s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B3IR8CpBj6uInyZQP4lsoGiDZ0s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/B3IR8CpBj6uInyZQP4lsoGiDZ0s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B3IR8CpBj6uInyZQP4lsoGiDZ0s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/6a4tC6vo4kw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/6a4tC6vo4kw/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2009/01/02/Format-Selected-Table-Rows-For-Pasting-into-Excel.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=5d65c4c3-d3fe-4350-b4b9-7786cbe68f8a</guid>
      <pubDate>Fri, 02 Jan 2009 20:49:20 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=5d65c4c3-d3fe-4350-b4b9-7786cbe68f8a</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=5d65c4c3-d3fe-4350-b4b9-7786cbe68f8a</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2009/01/02/Format-Selected-Table-Rows-For-Pasting-into-Excel.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=5d65c4c3-d3fe-4350-b4b9-7786cbe68f8a</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=5d65c4c3-d3fe-4350-b4b9-7786cbe68f8a</feedburner:origLink></item>
    <item>
      <title>jQuery Alert Dialogs</title>
      <description>&lt;p&gt;&lt;a href="http://abeautifulsite.net/founder"&gt;Cory S.N. LaViska&lt;/a&gt; (creator of one of my favorite jQuery Plugins – &lt;a href="http://abeautifulsite.net/notebook/80"&gt;contextMenu.js&lt;/a&gt;) released version 1.0 of &lt;a href="http://abeautifulsite.net/notebook/87"&gt;jQuery Alert Dialogs&lt;/a&gt; a few days ago. It looked interesting and worth some investigation. To test things out I decided to try and recreate the dialogs from one of my earlier posts &lt;a href="http://beckelman.net/post/2008/07/15/ASPNET-Popup-Message-Box-User-Control.aspx"&gt;ASP.NET Popup Message Box User Control&lt;/a&gt; which was originally based off a post by &lt;a href="http://www.jankoatwarpspeed.com/post/2008/05/28/Create-MessageBox-user-control-using-ASPNET-and-CSS.aspx"&gt;Janko&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Cory’s new plugin “aims to replace the basic functionality provided by the standard JavaScript &lt;samp&gt;alert()&lt;/samp&gt;, &lt;samp&gt;confirm()&lt;/samp&gt;, and &lt;samp&gt;prompt()&lt;/samp&gt; functions.” I believe he achieved this in a good looking manner that is straightforward and simple to implement. The title and message of the dialog can be set before they are called. The dialog is also draggable when the &lt;a href="http://docs.jquery.com/UI/Draggable"&gt;jquery ui draggable&lt;/a&gt; plugin is included. Finally, the dialogs are dismissed in most browsers when the enter or esc key is pressed.&lt;/p&gt;  &lt;p&gt;I really wanted to have the four types of alerts from my earlier post though (warning, error, success and info) since I use them all the time. It was pretty easy to tweak Cory’s CSS&amp;#160; and the plugin to pass in the type of alert I wanted. You will find my modified version of the plugin in the download.&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/Demos/jQueryAlertDialogs/Default.aspx"&gt;Live Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryAlertDialogs.zip"&gt;Download&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt; (HTML, CSS and jQuery)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="5"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Screenshot of End Product:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="128" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQueryAlertDialogs_FFFE/image_00de594c-c916-408c-af9e-fec83bdc35ad.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="121" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQueryAlertDialogs_FFFE/image_9a9313b4-2be5-4f80-9ea9-0faf73676a79.png" width="384" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="124" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQueryAlertDialogs_FFFE/image_f92d4aec-85ae-409b-86ed-acc1fbe5fdfd.png" width="330" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="124" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQueryAlertDialogs_FFFE/image_6bfbcbe6-da86-4c7f-95e8-41a4aa37f607.png" width="333" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;To call Cory’s version of the alert dialog the following is used &lt;em&gt;jAlert('This is a custom alert box', 'Alert Dialog');&lt;/em&gt; where the first parameter is the message and the second is the title. In my version &lt;em&gt;jAlert('error', 'This is the error dialog box with some extra text.', 'Error Dialog');&lt;/em&gt; I just pass in the type of alert I want (error, warning, success or info) as the first parameter and then the message and title.&lt;/p&gt;  &lt;p&gt;In an upcoming post I will show you an easy way to set these dialogs up to fire after a postback and probably how to use them with Cory’s contextMenu.js plugin.&lt;/p&gt;  &lt;p&gt;For more details on the jQuery Alert Dialog plugin, be sure to see Cory’s website. Also be sure to checkout the &lt;a href="http://beckelman.net/Demos/jQueryAlertDialogs/Default.aspx"&gt;demo&lt;/a&gt; and &lt;a href="http://beckelman.net/file.axd?file=jQueryAlertDialogs.zip"&gt;download&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;[dzone]&amp;#160;&amp;#160; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/12/30/jQuery-Alert-Dialogs.aspx&amp;amp;title=jQuery Alert Dialogs"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/12/30/jQuery-Alert-Dialogs.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kOLdkWTmRu9a_GaJd6_EuG1MN1Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kOLdkWTmRu9a_GaJd6_EuG1MN1Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kOLdkWTmRu9a_GaJd6_EuG1MN1Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kOLdkWTmRu9a_GaJd6_EuG1MN1Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/GSGo5nh0ok0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/GSGo5nh0ok0/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/12/30/jQuery-Alert-Dialogs.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=a775b5a9-08a4-4427-955f-6f70353a380b</guid>
      <pubDate>Tue, 30 Dec 2008 19:15:51 -0600</pubDate>
      <category>jQuery</category>
      <category>ASP.NET</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=a775b5a9-08a4-4427-955f-6f70353a380b</pingback:target>
      <slash:comments>16</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=a775b5a9-08a4-4427-955f-6f70353a380b</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/12/30/jQuery-Alert-Dialogs.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=a775b5a9-08a4-4427-955f-6f70353a380b</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=a775b5a9-08a4-4427-955f-6f70353a380b</feedburner:origLink></item>
    <item>
      <title>Use Email-To-Fax to Send Faxes from Your Web Site or Application</title>
      <description>&lt;div style="padding-right: 10px; float: left"&gt;&lt;a onmouseover="window.status='http://www.ringcentral.com';return true;" onmouseout="window.status=' ';return true;" href="http://www.jdoqocy.com/er70gv30v2IMLOSPQRIKJNQMNQR" target="_blank"&gt;&lt;img alt="Send and receive faxes from anywhere, RingCentral" src="http://www.ftjcfx.com/lr82jy1qwuFJILPMNOFHGKNJKNO" border="0"&gt;&lt;/a&gt; &lt;/div&gt; &lt;p&gt;I'm guessing you might be familiar with Fax-to-Email services. How many of you have used the Email-to-Fax feature that often comes with these services though? Did you notice the difference?&amp;nbsp; This feature often comes along with the whole package, but I have a feeling you might of ignored it as often times these services come with a fancy GUI application that handles everything for you. In this post I am going to talk about using this feature as an easy way to generate some faxes direct from your web site.&lt;/p&gt; &lt;p&gt;As a former road warrior in a legacy industry, I used Email-to-Fax to send numerous faxes while on the road whether from a hotel room, airport terminal or just about anywhere in between. If you are not familiar with email to fax, it is a simple way to send a fax by attaching a document such as a Word or PDF file (or just about any other type) to an email that is then sent to your service provider to process. You generally receive an email confirmation when the fax transmission is complete or there is a fault. &lt;/p&gt; &lt;p style="clear: both"&gt;I see the following benefits of using email to fax:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Original document is retained in your sent items which makes finding, re-sending and forwarding much easier (the fax history isn't in yet another application for your to track down and figure out how to use)  &lt;li&gt;No wasted paper, at least on the senders end  &lt;li&gt;Email confirmation of transmission (I recommend setting up a rule if your using Outlook to file transmitted faxes. Let failed faxes hit your inbox)&amp;nbsp; &lt;li&gt;Does not require a fax machine or scanner if you already have an electronic copy of the document you want to send  &lt;li&gt;You can generally fax to just about anywhere in the world fairly cheap&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So all of this is great for local use by you or your employees, but what if you need an easy way to send some faxes from your web site or that of a client? Well as long as you can create an email in your server side language of choice, you can do the same thing. The email just needs a FROM address that has been registered with your service provider.&lt;/p&gt; &lt;p&gt;I have personally done this with several ASP.NET web sites and have sent thousands of faxes using this technique. Last week I posted a &lt;a href="http://www.afterlogic.com/mailbee-net/net-pop3-component.asp"&gt;demo with a SimpleModal popup&lt;/a&gt; that populated the fax number and attention field with existing data and then let the user markup the message text with a &lt;a href="http://nicedit.com/"&gt;NicEdit WYSIWYG editor&lt;/a&gt;.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img height="320" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/UseEmailToFaxtoSendFaxesfromYourWebSite_11197/image_975f201c-1741-4d98-bab5-ecec80de6840.png" width="723" border="0"&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;This information could then be used on the server side to generate an email to send to your service provider for faxing.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The To address (fax number) generally needs to be parsed into something like 15095556221@yourprovidersemail.com  &lt;li&gt;Depending upon the service provider, the text from the email subject or email body can be used to generate a cover page on their end.  &lt;li&gt;Personally, I have always generated my own cover page on the fly and then added this as the first page in the PDF document that is attached to the email.  &lt;li&gt;You then need to leave either the subject or body of the email blank depending upon the service provider to keep them from generating a cover page for you.  &lt;li&gt;I often generate the entire document to be faxed on the fly if it contains dynamic content. I recommend &lt;a href="http://html-to-pdf.net/"&gt;ExpertPDF&lt;/a&gt; for this if your using dot net. If you don't want to create a PDF, most of the services I have used accept html attachments which is easy to to do from your server, however you never know how things will be rendered.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Considerations&lt;/h2&gt; &lt;p&gt;If you send the fax from your server, where do the emailed fax confirmations go? If your application's users are authenticated which I am guessing they most likely are for this scenario, you can set each of them up with the service and use their email as the FROM address. In this case, they will receive their own confirmations. This has the added benefit that they can also send faxes direct from their email since they have been authorized, which is handy especially for remote workers.&amp;nbsp; Another option is to have a single admin monitor for failed messages. If you were really creative you could use a &lt;a href="http://www.afterlogic.com/mailbee-net/net-pop3-component.asp"&gt;pop3 component like MailBee&lt;/a&gt; to retrieve the messages and display them on your web site. &lt;/p&gt; &lt;p&gt;Is this a solution for everyone? Not at all. Maybe you have your own in house servers and might be able to rig up the &lt;a href="http://msdn.microsoft.com/en-us/library/ms684508(VS.85).aspx"&gt;Microsoft Fax Service&lt;/a&gt; or equivalent in other environments. If your web site is hosted though and your main business isn't sending faxes, I think email-to-fax is a simple option to get up and running that is easy and relatively inexpensive.&lt;/p&gt; &lt;h2&gt;Service Providers&lt;/h2&gt;&lt;br/&gt; &lt;div style="padding-right: 10px; float: left"&gt;&lt;a onmouseover="window.status='http://www.ringcentral.com';return true;" onmouseout="window.status=' ';return true;" href="http://www.jdoqocy.com/36103gv30v2IMLOSPQRIKJNRRMPL" target="_blank"&gt;&lt;img alt="RingCentral Online " src="http://www.awltovhc.com/fr121fz2rxvGKJMQNOPGIHLPPKNJ" border="0"&gt;&lt;/a&gt; &lt;/div&gt; &lt;div style="float: left"&gt; &lt;p&gt;Over the past three years I have used several providers, however I have used RingCentral for the last two years for my personal use and have been very satisfied. I have found their fax service very reliable. They also offer other features I use such as a personal incoming fax number that goes to email as well as an 800 number and virtual PBX.&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;One more tip&lt;/strong&gt;: While on the road, email-to-fax is a great way to print the documents attached to an email message on your BlackBerry, Windows Mobile Device or iPhone. Just forward the email to the nearest fax machine.&lt;/p&gt; &lt;p&gt;[dzone]&amp;nbsp;&amp;nbsp; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/12/10/Use-Email-To-Fax-to-Send-Faxes-from-Your-Web-Site-or-Application.aspx&amp;amp;title=Use Email-To-Fax to Send Faxes from Your Web Site or Application"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/12/10/Use-Email-To-Fax-to-Send-Faxes-from-Your-Web-Site-or-Application.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt; [noads]&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4TO9PcshCWYr0ClVP0uZyOXs0mA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4TO9PcshCWYr0ClVP0uZyOXs0mA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4TO9PcshCWYr0ClVP0uZyOXs0mA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4TO9PcshCWYr0ClVP0uZyOXs0mA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/G2a7ZUvOnIE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/G2a7ZUvOnIE/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/12/10/Use-Email-To-Fax-to-Send-Faxes-from-Your-Web-Site-or-Application.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=0f7f54c4-7562-4c14-9725-a5f4cc145d2f</guid>
      <pubDate>Wed, 10 Dec 2008 08:10:55 -0600</pubDate>
      <category>ASP.NET</category>
      <category>Handy Website</category>
      <category>Misc</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=0f7f54c4-7562-4c14-9725-a5f4cc145d2f</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=0f7f54c4-7562-4c14-9725-a5f4cc145d2f</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/12/10/Use-Email-To-Fax-to-Send-Faxes-from-Your-Web-Site-or-Application.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=0f7f54c4-7562-4c14-9725-a5f4cc145d2f</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=0f7f54c4-7562-4c14-9725-a5f4cc145d2f</feedburner:origLink></item>
    <item>
      <title>Modal Delete Confirmation V3 Using SimpleModal jQuery Plugin Demo</title>
      <description>&lt;p&gt;Since &lt;a href="http://beckelman.net/post/2008/10/28/Modal-Delete-Confirmation-Version-Two-Using-jQuery-SimpleModal-Plugin-Demo.aspx"&gt;my posts&lt;/a&gt; about using the &lt;a href="http://www.ericmmartin.com/projects/simplemodal/"&gt;jQuery SimpleModal plugin&lt;/a&gt; as a confirmation dialog have been some of my most popular, I thought I would go ahead and update things now that Eric Martin has released version 1.2.1 of the plugin.&lt;/p&gt; &lt;p&gt;As &lt;a href="http://beckelman.net/post/2008/12/05/jQuery-SimpleModal-Plugin-Version-12-with-NicEdit-WYSIWYG-Editor.aspx"&gt;I wrote about on Friday&lt;/a&gt;, the biggest changes to the plugin seem to be the &lt;u&gt;automatic&lt;/u&gt; centering of the dialog, ability to always use an iframe if desired and the default names were changed from modalxxx to simplemodal-xxx. For a full list of changes, please see Eric's &lt;a href="http://www.ericmmartin.com/projects/simplemodal/#changes"&gt;change log section&lt;/a&gt;. With this version of my demo, I wanted to make the download pure html (not tied to ASP.NET) so that it might benefit more people. I also built upon Friday's demo of a SimpleModal popup containing the NicEdit WYSIWYG editor.&lt;/p&gt; &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryContextMenuFaxAndDelete/Default.aspx"&gt;Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryContextMenuFaxAndDelete.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (HTML/CSS/JS)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Screenshot of End Product:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img height="164" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ModalDeleteConfirmationV3UsingSimpleModa_B54B/image_e2866354-4736-43ed-9f01-7ba46103cffb.png" width="444" border="0"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I'm not really going to go into any code this time around as it really hasn't changed much from V2 of my demo. If your interested please see it &lt;a href="http://beckelman.net/post/2008/10/28/Modal-Delete-Confirmation-Version-Two-Using-jQuery-SimpleModal-Plugin-Demo.aspx"&gt;there&lt;/a&gt; or in the download.&lt;/p&gt; &lt;p&gt;One thing that I did want to point out that I haven't talked about in the past is the ability to override the height and width of the confirmation dialog that is set by the base CSS. The SimpleModal plugin provides the containerCSS option which can be used to set the styling for the container div.&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;containerCss: ({ width: &lt;span class="str"&gt;"600px"&lt;/span&gt;, height: &lt;span class="str"&gt;"140px"&lt;/span&gt; })&lt;/pre&gt;&lt;/blockquote&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Be sure to checkout the &lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryContextMenuFaxAndDelete/Default.aspx"&gt;demo&lt;/a&gt;&lt;/font&gt; and let me know in the comments what could be improved.&lt;/p&gt;
&lt;p&gt;Share this post:[dzone]&amp;nbsp;&amp;nbsp; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/12/07/Modal-Delete-Confirmation-V3-Using-SimpleModal-jQuery-Plugin-Demo.aspx&amp;amp;title=Modal Delete Confirmation V3 Using SimpleModal jQuery Plugin Demo"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/12/07/Modal-Delete-Confirmation-V3-Using-SimpleModal-jQuery-Plugin-Demo.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;script src="http://www.reddit.com/button.js?t=2" type="text/javascript"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8I5nvuny283kZijYPDqHRnRy5rQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8I5nvuny283kZijYPDqHRnRy5rQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8I5nvuny283kZijYPDqHRnRy5rQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8I5nvuny283kZijYPDqHRnRy5rQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/HhY7W2GAtac" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/HhY7W2GAtac/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/12/07/Modal-Delete-Confirmation-V3-Using-SimpleModal-jQuery-Plugin-Demo.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=1e9070f8-3ec4-4d3c-9821-dbf3dd4ff78b</guid>
      <pubDate>Sun, 07 Dec 2008 13:23:00 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=1e9070f8-3ec4-4d3c-9821-dbf3dd4ff78b</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=1e9070f8-3ec4-4d3c-9821-dbf3dd4ff78b</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/12/07/Modal-Delete-Confirmation-V3-Using-SimpleModal-jQuery-Plugin-Demo.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=1e9070f8-3ec4-4d3c-9821-dbf3dd4ff78b</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=1e9070f8-3ec4-4d3c-9821-dbf3dd4ff78b</feedburner:origLink></item>
    <item>
      <title>jQuery SimpleModal Plugin Version 1.2 with NicEdit WYSIWYG Editor</title>
      <description>&lt;p&gt;Update 06DEC08 0920MST: Updated demo and download with version 1.2.1 of the SimpleModal plugin.&lt;/p&gt; &lt;p&gt;Update 05DEC08 2100MST: Eric Martin &lt;a href="http://www.ericmmartin.com/simplemodal-121-released/"&gt;just released version 1.2.1&lt;/a&gt; with some bug fixes. I will update this demo tomorrow sometime with the changes.&lt;/p&gt; &lt;p&gt;With the release of Eric Martin's &lt;a href="http://www.ericmmartin.com/simplemodal-12-released/"&gt;version 1.2 of the SimpleModal jQuery Plugin&lt;/a&gt;, I wanted to take a look at the new code and changes. At the same time I decided to try out the &lt;a href="http://nicedit.com/"&gt;NicEdit WYSIWYG editor&lt;/a&gt; that I found via &lt;a href="http://www.webdesignerdepot.com/2008/12/20-excellent-free-rich-text-editors/"&gt;20 Excellent Free Rich-Text Editors from Webdesigner Depot&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;For the demo I created a simple table with customer data. I then used the &lt;a href="http://abeautifulsite.net/notebook/80"&gt;jQuery contextMenu plugin&lt;/a&gt; to call the SimpleModal popup pre-populated with the respective customer's data. In my next post, I am going to show you how to actually send the fax.&lt;/p&gt; &lt;p&gt;&lt;font size="5"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jQueryContextMenuFax/Default.aspx"&gt;Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryContextMenuFax.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (HTML/JS/CSS)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Screenshot of End Product:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img height="338" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQuerySimpleMo.2withNicEditWYSIWYGEditor_9324/image_513f3c9e-8a47-4f76-8fbf-8605b8157981.png" width="749" border="0"&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;Probably the biggest change to the SimpleModal plugin is automatic centering of the dialog which can be overridden. Along with bug fixes, Eric also changed the internal CSS classes used by the plugin and added additional options. Be sure to see his &lt;a href="http://www.ericmmartin.com/projects/simplemodal/"&gt;project page&lt;/a&gt; for more details.&lt;/p&gt; &lt;p&gt;Of the multiple editors in the &lt;a href="http://www.webdesignerdepot.com/2008/12/20-excellent-free-rich-text-editors/"&gt;Webdesigner Depot article&lt;/a&gt;, I was really interested in NicEdit. From the NicEdit web site: &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"NicEdit is a Lightweight, Cross Platform, Inline Content Editor to allow easy editing of web site content on the fly in the browser. NicEdit Javascript integrates into any site in seconds to make any element/div editable or convert standard textareas to rich text editing."&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The editor is MIT licensed, and though not directly a jQuery plugin, I found it was easy to integrate and so far it seems everything is playing nice between jQuery and NicEdit. NicEdit provides its own DOM ready function, however I disregarded it and just used its hooks from within my jQuery code. I found that the editor didn't like being initialized on a hidden textarea, so I ended up not adding the editor until the onShow event of the SimpleModal plugin. I also, removed it during SimpleModal's onClose event. So far, I am very excited about NicEdit. I like its simplicity, cleanliness and light payload (the js for the version I am using is 32kb &lt;strong&gt;&lt;u&gt;before&lt;/u&gt;&lt;/strong&gt; minification which I think is pretty good for a rich text editor). Even the icons are a single &lt;a href="http://www.alistapart.com/articles/sprites/"&gt;CSS sprite&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;jQuery (See &lt;a href="http://beckelman.net/file.axd?file=jQueryContextMenuFax.zip"&gt;download&lt;/a&gt; for full code, I tried to comment so you can quickly skim and figure out what is going on)&lt;/strong&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;
    &lt;span class="kwrd"&gt;var&lt;/span&gt; faxMessageArea;

    $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {        

        &lt;span class="rem"&gt;//Bind a right click menu to each table row&lt;/span&gt;
        &lt;span class="rem"&gt;//see download&lt;/span&gt;

        &lt;span class="rem"&gt;//Bind a left click menu to the last cell in each row.&lt;/span&gt;
        &lt;span class="rem"&gt;//See download&lt;/span&gt;
   });&lt;/pre&gt;&lt;pre class="csharpcode"&gt; 
   &lt;span class="kwrd"&gt;function&lt;/span&gt; contextMenuWork(action, el, pos) {
        &lt;span class="kwrd"&gt;switch&lt;/span&gt; (action) {
            &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"fax"&lt;/span&gt;:
                {
                   &lt;span class="rem"&gt;//See download&lt;/span&gt;
                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;
                }                
        }
    }

    &lt;span class="kwrd"&gt;function&lt;/span&gt; sendFax(title) {
        $(&lt;span class="str"&gt;"#faxDialog"&lt;/span&gt;).modal({
            persist: &lt;span class="kwrd"&gt;true&lt;/span&gt;,
            containerCss: ({ width: &lt;span class="str"&gt;"700px"&lt;/span&gt;, height: &lt;span class="str"&gt;"300px"&lt;/span&gt; }),
            onClose: modalOnClose,
            onShow: &lt;span class="kwrd"&gt;function&lt;/span&gt; modalShow(dialog) {
                
                &lt;span class="rem"&gt;//Setup the NicEditor&lt;/span&gt;
                faxMessageArea = &lt;span class="kwrd"&gt;new&lt;/span&gt; nicEditor(
                    { buttonList: [&lt;span class="str"&gt;'bold'&lt;/span&gt;, &lt;span class="str"&gt;'italic'&lt;/span&gt;, &lt;span class="str"&gt;'underline'&lt;/span&gt;, &lt;span class="str"&gt;'left'&lt;/span&gt;, &lt;span class="str"&gt;'center'&lt;/span&gt;, &lt;span class="str"&gt;'right'&lt;/span&gt;, &lt;span class="str"&gt;'justify'&lt;/span&gt;, &lt;span class="str"&gt;'ol'&lt;/span&gt;, &lt;span class="str"&gt;'ul'&lt;/span&gt;, &lt;span class="str"&gt;'indent'&lt;/span&gt;, &lt;span class="str"&gt;'outdent'&lt;/span&gt;] })
                    .panelInstance(&lt;span class="str"&gt;'faxMessage'&lt;/span&gt;);   
                
                dialog.overlay.fadeIn(&lt;span class="str"&gt;'slow'&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                    dialog.container.fadeIn(&lt;span class="str"&gt;'fast'&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                        dialog.data.hide().slideDown(&lt;span class="str"&gt;'slow'&lt;/span&gt;);
                    });
                });
                
                &lt;span class="rem"&gt;//Set the title of the dialog                                &lt;/span&gt;
                dialog.data.find(&lt;span class="str"&gt;".modalheader span"&lt;/span&gt;).html(title);

                &lt;span class="rem"&gt;//Perform validation here (TODO)&lt;/span&gt;
                
                dialog.data.find(&lt;span class="str"&gt;"ButtonSendFax"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                    &lt;span class="rem"&gt;// close the dialog&lt;/span&gt;
                    $.modal.close();

                    &lt;span class="rem"&gt;//Fire a postback or AJAX call with the entered data (TODO)&lt;/span&gt;
                    
                });
            }
        })
    }    

    &lt;span class="kwrd"&gt;function&lt;/span&gt; modalOnClose(dialog) {
        dialog.data.fadeOut(&lt;span class="str"&gt;'slow'&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            dialog.container.slideUp(&lt;span class="str"&gt;'slow'&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                dialog.overlay.fadeOut(&lt;span class="str"&gt;'slow'&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                    $.modal.close(); &lt;span class="rem"&gt;// must call this to have SimpleModal                   &lt;/span&gt;
                    &lt;span class="rem"&gt;// re-insert the data correctly and&lt;/span&gt;
                    &lt;span class="rem"&gt;// clean up the dialog elements&lt;/span&gt;
                });
            });
        });

        &lt;span class="rem"&gt;//Remove the NicEditor&lt;/span&gt;
        faxMessageArea.removeInstance(&lt;span class="str"&gt;'faxMessage'&lt;/span&gt;);
        faxMessageArea = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    }                                    
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Be sure to checkout the &lt;a href="http://beckelman.net/demos/jQueryContextMenuFax/Default.aspx"&gt;demo&lt;/a&gt; and let me know what you think in the comments.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Share this post: [dzone]&amp;nbsp;&amp;nbsp; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/12/05/jQuery-SimpleModal-Plugin-Version-12-with-NicEdit-WYSIWYG-Editor.aspx&amp;amp;title=jQuery SimpleModal Plugin Version 1.2 with NicEdit WYSIWYG Editor"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/12/05/jQuery-SimpleModal-Plugin-Version-12-with-NicEdit-WYSIWYG-Editor.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;script src="http://www.reddit.com/button.js?t=2" type="text/javascript"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zIbUGt2lo9SBAPYs5CicdAJE02w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zIbUGt2lo9SBAPYs5CicdAJE02w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zIbUGt2lo9SBAPYs5CicdAJE02w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zIbUGt2lo9SBAPYs5CicdAJE02w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/fFQGIaA9EbQ" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/fFQGIaA9EbQ/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/12/05/jQuery-SimpleModal-Plugin-Version-12-with-NicEdit-WYSIWYG-Editor.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=48138af5-7695-4ba0-9c26-a7dc154eecb4</guid>
      <pubDate>Fri, 05 Dec 2008 11:21:05 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=48138af5-7695-4ba0-9c26-a7dc154eecb4</pingback:target>
      <slash:comments>8</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=48138af5-7695-4ba0-9c26-a7dc154eecb4</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/12/05/jQuery-SimpleModal-Plugin-Version-12-with-NicEdit-WYSIWYG-Editor.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=48138af5-7695-4ba0-9c26-a7dc154eecb4</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=48138af5-7695-4ba0-9c26-a7dc154eecb4</feedburner:origLink></item>
    <item>
      <title>Add Copy to Clipboard Command To contextMenu.js Plugin Demo</title>
      <description>&lt;p&gt;&lt;strong&gt;Update: 30NOV08 @ 1815 PST&lt;/strong&gt; - Due to a &lt;a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes_02.html#head31"&gt;Security Change in Flash Player 10&lt;/a&gt;, the copy to clipboard functionality I am using below will not work if you have Flash 10 installed. I am trying to find a workaround, but it looks like it may require creating a button in flash that the user can click to set the clipboard data. Any Flash developers able to help me out?&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I have been using the &lt;a href="http://abeautifulsite.net/notebook/80"&gt;jQuery Context Menu Plugin&lt;/a&gt; by Cory S.N. LaViska for a while now and have &lt;a href="http://beckelman.net/post/2008/11/15/Enabling-and-Disabling-Menu-Items-in-jQuery-contextMenujs-Plugin-Demo.aspx"&gt;written about it several times&lt;/a&gt; in the past. Today, I am going to show you how to add a "Copy to Clipboard" command to the context menu that works in IE as well as FireFox and Chrome &lt;u&gt;&lt;strong&gt;if flash is installed&lt;/strong&gt;&lt;/u&gt;. I would guess that is works in Safari, but you will have to let me know in the comments. &lt;/p&gt; &lt;p&gt;You might provide this feature to the users of your application so that they could quickly capture formatted data to be pasted into an email, word document or live chat with a customer for example.&lt;/p&gt; &lt;p&gt;Adding this functionality for IE alone is pretty straight forward (except for the caveat in the issues section) as IE5 and later provides the &lt;a href="http://msdn.microsoft.com/en-us/library/ms535220(VS.85).aspx"&gt;clipboardData object&lt;/a&gt;. For my own uses (I do non public facing development) this would probably be fine in my known bubble. However, in the real world you might want this to work in a more cross browser fashion. The option that I know about is to use the &lt;a href="http://yangshuai.googlepages.com/jquerycopyplugin"&gt;jQuery Copy Plugin&lt;/a&gt; which uses the clipboardData object if available, otherwise it embeds a tiny flash file that will handle the copy for you. I like the simplicity of the plugin, but I decided to modify it for learning purposes and thought I would share. Be sure to checkout my modified version below or in the download.&lt;/p&gt; &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jquerycontextmenucopytoclipboard/default.aspx"&gt;Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryContextMenuCopyToClipboard.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (ASP.NET 3.5)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Screenshot of End Product:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img height="188" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/AddCopytoClipboardCommandTo.jsPluginDemo_11813/image_2cba1bf7-8f52-4871-8905-c7e2e57b30e5.png" width="766" border="0"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;When you paste the contents of the clipboard, this is what you end up with:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier"&gt;Contact Name: Maria Anders &lt;br&gt;Title: Sales Representative &lt;br&gt;PH: 030-0074321&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The plugin is really straight forward to use. There is only one function that is provided which is $.copy() where you pass a string that gets copied to the clipboard. Below is the jQuery I used when Copy is clicked on the context menu:&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; txt = &lt;span class="str"&gt;"Contact Name: "&lt;/span&gt; + $(el).find(&lt;span class="str"&gt;"#contactName"&lt;/span&gt;).text() + &lt;span class="str"&gt;"\nTitle: "&lt;/span&gt; 
    + $(el).find(&lt;span class="str"&gt;"#contactTitle"&lt;/span&gt;).text() + &lt;span class="str"&gt;"\nPH: "&lt;/span&gt; + $(el).find(&lt;span class="str"&gt;"#phone"&lt;/span&gt;).text();
$.copy(txt);&lt;/pre&gt;&lt;/blockquote&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note: "el" in this case is a wrapped set of the elements of the table row that was clicked.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Issues:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With IE, the ability for a web page to use the clipboard may come with a warning message or might be blocked altogether depending upon the user's security settings. Unfortunately if it is blocked, the stock jQuery copy plugin will not get you around this unless you tweak it to always go the flash route which I tried and does work.&lt;/p&gt;
&lt;p&gt;IE Warning Message: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img height="176" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/AddCopytoClipboardCommandTo.jsPluginDemo_11813/image_392f7b5f-1997-4a31-982a-e5774f428611.png" width="387" border="0"&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Security Settings in IE:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img height="483" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/AddCopytoClipboardCommandTo.jsPluginDemo_11813/image_db833b15-e4d1-4e6f-9d4a-85aadad2c076.png" width="427" border="0"&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Along with the tweak to only use the flash method, I changed the plugin so that the &lt;a href="http://docs.jquery.com/Core/jQuery.noConflict"&gt;jQuery $.noConflict() function&lt;/a&gt; can be used by placing it within (function($) {......... })(jQuery);. I also changed the embed code to look in a single location for the swf file. The stock plugin expects to find the swf file in the same directory as the page that calls it. Since I will likely be using the copy command in a lot of context menus spread throughout my application I thought this would be a good change as well.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img height="119" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/AddCopytoClipboardCommandTo.jsPluginDemo_11813/image_dd41e3c0-ab1e-441d-8a1d-e7d37cbc97f1.png" width="166" border="0"&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So, below is my modified version of the jQuery copy plugin:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;
&lt;span class="rem"&gt;* jQuery Copy to Clipboard Plugin&lt;/span&gt;
&lt;span class="rem"&gt;* Bill Beckelman http://beckelman.net&lt;/span&gt;
&lt;span class="rem"&gt;* &lt;/span&gt;
&lt;span class="rem"&gt;* Dual licensed under the MIT (MIT-LICENSE.txt)&lt;/span&gt;
&lt;span class="rem"&gt;* and GPL (GPL-LICENSE.txt) licenses.&lt;/span&gt;
&lt;span class="rem"&gt;*&lt;/span&gt;
&lt;span class="rem"&gt;* Date: 2008-11-29&lt;/span&gt;
&lt;span class="rem"&gt;* Version 1.0&lt;/span&gt;
&lt;span class="rem"&gt;*&lt;/span&gt;
&lt;span class="rem"&gt;* Depends upon copy.swf file&lt;/span&gt;
&lt;span class="rem"&gt;*/&lt;/span&gt;

(&lt;span class="kwrd"&gt;function&lt;/span&gt;($) {
    $.copy = &lt;span class="kwrd"&gt;function&lt;/span&gt;(t) {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; t == &lt;span class="str"&gt;'undefined'&lt;/span&gt;) {
            t = &lt;span class="str"&gt;''&lt;/span&gt;;
        }

        &lt;span class="kwrd"&gt;var&lt;/span&gt; i = &lt;span class="str"&gt;'&amp;lt;embed src="/_assets/swf/copy.swf" FlashVars="clipboard='&lt;/span&gt; +
            encodeURIComponent(t) + &lt;span class="str"&gt;'" width="0" height="0" type="application/x-shockwave-flash"&amp;gt;&amp;lt;/embed&amp;gt;'&lt;/span&gt;;

        &lt;span class="kwrd"&gt;if&lt;/span&gt; ($(&lt;span class="str"&gt;'#flashcopier'&lt;/span&gt;).length == 0) {
            $(&lt;span class="str"&gt;'body'&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div id="flashcopier"&amp;gt;'&lt;/span&gt; + i + &lt;span class="str"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;)
        }
        &lt;span class="kwrd"&gt;else&lt;/span&gt; {
            $(&lt;span class="str"&gt;'#flashcopier'&lt;/span&gt;).html(i)
        }
    }
})(jQuery);
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note: You will need to change the path to the swf file that goes with the plugin to wherever you end up putting it. For testing with localhost I think you may &lt;br&gt;&lt;/em&gt;&lt;em&gt;need to to include the name of your web site in the path as well.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Be sure to checkout the &lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jquerycontextmenucopytoclipboard/default.aspx"&gt;demo&lt;/a&gt;&lt;/font&gt; and let me know in the comments what you think and what could be improved.&lt;/p&gt;
&lt;p&gt;[dzone]&amp;nbsp;&amp;nbsp; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/11/30/Add-Copy-to-Clipboard-Command-To-contextMenujs-Plugin-Demo.aspx&amp;amp;title=Add Copy to Clipboard Command To contextMenu.js Plugin Demo"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/11/30/Add-Copy-to-Clipboard-Command-To-contextMenujs-Plugin-Demo.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ssi2O2nDshg39SIyxwEe2bTf_vQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ssi2O2nDshg39SIyxwEe2bTf_vQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ssi2O2nDshg39SIyxwEe2bTf_vQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ssi2O2nDshg39SIyxwEe2bTf_vQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/WZGIKoRIkkM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/WZGIKoRIkkM/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/11/30/Add-Copy-to-Clipboard-Command-To-contextMenujs-Plugin-Demo.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=079f3cf0-c4cb-457d-bf42-86523d2f9463</guid>
      <pubDate>Sun, 30 Nov 2008 09:16:56 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=079f3cf0-c4cb-457d-bf42-86523d2f9463</pingback:target>
      <slash:comments>20</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=079f3cf0-c4cb-457d-bf42-86523d2f9463</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/11/30/Add-Copy-to-Clipboard-Command-To-contextMenujs-Plugin-Demo.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=079f3cf0-c4cb-457d-bf42-86523d2f9463</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=079f3cf0-c4cb-457d-bf42-86523d2f9463</feedburner:origLink></item>
    <item>
      <title>Item Count in Table Footer and Changes to the tableSorter-pager Plugin Demo</title>
      <description>&lt;p&gt;One thing I have been adding to my tables lately is a count of the number of rows in the footer (generated on the client side) to give the user a quick idea of what she is working with. The &lt;a href="http://beckelman.net/Demos/jQueryTableSorterRowCount/Default.aspx"&gt;live demo&lt;/a&gt; or screenshot below will show you what am talking about:&lt;/p&gt; &lt;p&gt;&lt;img height="341" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ItemsCountinTableFooterandChangestotheta_58BE/image_f5b801dd-665e-44b5-ab95-0ba96bca8d17.png" width="579" border="0"&gt; &lt;/p&gt; &lt;p&gt;This is really easy to do on the client side with jQuery thanks to the jQuery Object Accessor &lt;a href="http://docs.jquery.com/Core/length"&gt;length&lt;/a&gt; which returns the number of elements currently matched in the wrapped set. Below is the jQuery to do this. The first selection finds the last cell in the footer. The text of the cell is then set to the number of elements returned by selecting the rows from the body of the table and then in this case "Records" is appended.&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;$(&lt;span class="str"&gt;"#tableOne tfoot td:last"&lt;/span&gt;).text($(&lt;span class="str"&gt;"#tableOne tbody tr"&lt;/span&gt;).length + &lt;span class="str"&gt;' Records'&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Another way I have been doing this is with a slight modification to the tableSorter-pager plugin to display the count along with the current and total page info.&lt;/p&gt;
&lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/Demos/jQueryTableSorterRowCount/Default.aspx"&gt;Live Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryTableSorterRowCount.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (ASP.NET 3.5)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Screenshot of End Product:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="337" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ItemsCountinTableFooterandChangestotheta_58BE/image_0d64d2db-735e-41ed-8dd3-699c2ce5fc32.png" width="579" border="0"&gt; &lt;/p&gt;
&lt;p&gt;This only requires changing one line in the plugin, though some more modification to add this an option instead of a hard override might me a better idea. I changed the line commented out below to the line following. Notice that the plugin already provides a way to get the total number of rows through c.rowsCopy.length.&lt;/p&gt;&lt;pre class="csharpcode"&gt;            &lt;span class="kwrd"&gt;function&lt;/span&gt; updatePageDisplay(c) {
                &lt;span class="rem"&gt;//var s = $(c.cssPageDisplay, c.container).val((c.page + 1) + c.seperator + c.totalPages);    &lt;/span&gt;
                &lt;span class="kwrd"&gt;var&lt;/span&gt; s = $(c.cssPageDisplay, c.container).text(&lt;span class="str"&gt;"Page "&lt;/span&gt; + (c.page + 1) + &lt;br&gt;                     c.seperator + c.totalPages + &lt;span class="str"&gt;"   ("&lt;/span&gt; + c.rowsCopy.length + &lt;span class="str"&gt;" Records)"&lt;/span&gt;);
            }&lt;/pre&gt;
&lt;p&gt;I also changed the pagedisplay in the footer markup from an input box to a label so that placing the cursor in the input doesn't confuse the user. If you don't do this, you might have use val() instead of text() in the jQuery above.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Well, I hope I have shown you an improvement that maybe you hadn't thought about before. Be sure to checkout the &lt;a href="http://beckelman.net/Demos/jQueryTableSorterRowCount/Default.aspx"&gt;demo&lt;/a&gt; and let me know in the comments what you would do different.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[dzone]&amp;nbsp; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/11/25/Items-Count-in-Table-Footer-and-Changes-to-the-tableSorter-pager-Plugin-Demo.aspx&amp;amp;title=Item Count in Table Footer and Changes to the tableSorter-pager Plugin Demo"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/11/25/Items-Count-in-Table-Footer-and-Changes-to-the-tableSorter-pager-Plugin-Demo.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt; [noads]&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZIGmMlhHa4KzhM8XuZZTJue9lco/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZIGmMlhHa4KzhM8XuZZTJue9lco/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZIGmMlhHa4KzhM8XuZZTJue9lco/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZIGmMlhHa4KzhM8XuZZTJue9lco/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/r74kk7a0pBo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/r74kk7a0pBo/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/11/25/Items-Count-in-Table-Footer-and-Changes-to-the-tableSorter-pager-Plugin-Demo.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=ef6ac528-72c4-4613-b63c-8b246a4f6d5e</guid>
      <pubDate>Tue, 25 Nov 2008 06:38:07 -0600</pubDate>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=ef6ac528-72c4-4613-b63c-8b246a4f6d5e</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=ef6ac528-72c4-4613-b63c-8b246a4f6d5e</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/11/25/Items-Count-in-Table-Footer-and-Changes-to-the-tableSorter-pager-Plugin-Demo.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=ef6ac528-72c4-4613-b63c-8b246a4f6d5e</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=ef6ac528-72c4-4613-b63c-8b246a4f6d5e</feedburner:origLink></item>
    <item>
      <title>ASP.NET Repeater Combined with jQuery FAQ Plugin Demo</title>
      <description>&lt;p&gt;Earlier this week, &lt;a href="http://www.dscoduc.com/"&gt;Chris Blankenship&lt;/a&gt; released version one of a new &lt;a href="http://www.dscoduc.com/post/2008/11/21/FAQ-jQuery-Plugin.aspx"&gt;jQuery FAQ plugin&lt;/a&gt;. I was pretty excited looking at his demo as I have a need for something like this in a project and his plugin should work nicely. I built a quick demo of my own to try it out and thought I would share with you what I did.&lt;/p&gt; &lt;p&gt;&lt;font size="5"&gt;&lt;font color="#000000"&gt;&lt;a href="http://beckelman.net/Demos/jQueryFAQ/Default.aspx"&gt;Live Demo&lt;/a&gt;&lt;/font&gt; | &lt;font color="#000000"&gt;&lt;a href="http://beckelman.net/file.axd?file=jQueryFAQ.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; &lt;/font&gt;&lt;font size="2"&gt;(ASP.NET 3.5)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Screenshots of End Product:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img height="152" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ASP.NETRepeaterCombinedwithjQueryFAQPlug_9CA5/image_89ec2101-d7d8-4ad4-935b-81e130214ab4.png" width="830" border="0"&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img height="236" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ASP.NETRepeaterCombinedwithjQueryFAQPlug_9CA5/image_f02dfcee-0f7c-404f-afda-4d14a37c6df3.png" width="831" border="0"&gt; &lt;/p&gt; &lt;p&gt;The plugin is really straight forward. You just have to add your FAQ items in a header element such as an h2 and content sections in spans. This could be done in a pure HTML page or the FAQ items and content could be pulled from a database or XML file like I did in the download. Once the markup is built, the plugin does the rest. It will hide the content sections, add click events to the headers to open and close the content sections, toggle the plus/minus symbols and build the index shown on the right if you want. The plugin also adds ids to each header element to be used as bookmarks so that when you click on an item in the index you are taken to the position of the FAQ item/content on the page. A click event on each index item also shows the content when clicked.&lt;/p&gt; &lt;p&gt;In the demo/download I databound an ASP.NET Repeater to data from an XML file to dynamically build the markup:&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="faq"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; 
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="RepeaterFAQ"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;# Eval(&lt;span class="str"&gt;"faqQuestion"&lt;/span&gt;) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;# Eval(&lt;span class="str"&gt;"faqAnswer"&lt;/span&gt;) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;  &lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Note that the div with id "faq" surrounding the repeater is used by the plugin to locate the markup you want to use to create the FAQ.&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;
        $().ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            $(&lt;span class="str"&gt;"#faq"&lt;/span&gt;).makeFAQ({
                indexTitle: &lt;span class="str"&gt;"Index"&lt;/span&gt;,
                displayIndex: &lt;span class="kwrd"&gt;true&lt;/span&gt;,
                faqHeader: &lt;span class="str"&gt;"h2"&lt;/span&gt;
            }); 
        });
    &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;I ran into one issue that gave me a little grief. Since the plugin uses the text from the FAQ item to build the bookmark, any special characters (such as my question mark at the end of each item) will cause problems. Chris pointed this out in his post about the plugin, but by the time I started messing with the code I forgot so it took me a little while to figure out why things were not working. I managed to get things working, but Chris helped me out with an improvement to the regular expression in the plugin that was already striping out white space to also strip the question marks:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; entryNameSafe = entryName.replace(/(\s|\?)/g, &lt;span class="str"&gt;""&lt;/span&gt;)&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;I want to point out that Chris did a nice job setting the plugin up to be unobtrusive. The screenshot below is what things look like with JavaScript turned off:&lt;/p&gt;
&lt;p&gt;&lt;img height="344" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/ASP.NETRepeaterCombinedwithjQueryFAQPlug_9CA5/image_3d92d17b-4577-4d30-b2b7-8e8ab177ef14.png" width="506" border="0"&gt; &lt;/p&gt;
&lt;p&gt;All in all, I am really excited about this plugin. Chris mentioned in his post that he may work on a control for BlogEngine.NET to easily create the FAQ items. If your interested in BlogEngine.NET like I am, you may want to subscribe to his feed and encourage him to do so. I'm sure he would appreciate a few more kicks and dzone votes to get some more exposure for his plugin as well.&lt;/p&gt;
&lt;p&gt;Be sure to checkout the &lt;a href="http://beckelman.net/Demos/jQueryFAQ/Default.aspx"&gt;live demo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/11/23/ASPNET-Repeater-Combined-with-jQuery-FAQ-Plugin-Demo.aspx&amp;amp;title=ASP.NET Repeater Combined with jQuery FAQ Plugin Demo"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/11/23/ASPNET-Repeater-Combined-with-jQuery-FAQ-Plugin-Demo.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&amp;nbsp;&amp;nbsp; [dzone]&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/P75AbNR989giiXQLKgN2Oh56LQQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P75AbNR989giiXQLKgN2Oh56LQQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/P75AbNR989giiXQLKgN2Oh56LQQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P75AbNR989giiXQLKgN2Oh56LQQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/lOJ3aW_Vw9E" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/lOJ3aW_Vw9E/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/11/23/ASPNET-Repeater-Combined-with-jQuery-FAQ-Plugin-Demo.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=76ae4928-0a01-4055-8964-e0225e6c71ba</guid>
      <pubDate>Sun, 23 Nov 2008 11:08:30 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=76ae4928-0a01-4055-8964-e0225e6c71ba</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=76ae4928-0a01-4055-8964-e0225e6c71ba</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/11/23/ASPNET-Repeater-Combined-with-jQuery-FAQ-Plugin-Demo.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=76ae4928-0a01-4055-8964-e0225e6c71ba</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=76ae4928-0a01-4055-8964-e0225e6c71ba</feedburner:origLink></item>
    <item>
      <title>jQuery tableSorter and quickSearch Plugins Together Demo</title>
      <description>&lt;p&gt;Last week &lt;a href="http://encosia.com/about/"&gt;Dave Ward&lt;/a&gt; wrote a great post &lt;a href="http://encosia.com/2008/10/31/use-jquery-and-quicksearch-to-interactively-search-any-data/"&gt;Use jQuery and quickSearch to interactively search any data&lt;/a&gt;. In his post he explained how to use the plugin and also a work around that is needed to make the plugin play nice with ASP.NET. I recommend taking a look at his post if your new to the &lt;a href="http://rikrikrik.com/jquery/quicksearch/"&gt;quickSearch&lt;/a&gt; plugin. Reading through the comments, Jinno wanted to use the quickSearch plugin along with the tableSorter plugin which I thought was a great idea. Dave provided a hint in his comments that to get the two working together you would probably need to "re-tableSorter the table in quickSearch’s onAfter event" which got me started.&lt;/p&gt; &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/demos/jqueryTableSorterAndQuickSearch/default.aspx"&gt;Live Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQueryTableSorterAndQuickSearch.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (ASPX and HTML)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Screen Shots of End Product:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img height="349" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQuerytableSorterandquickSearchPluginsTo_6D8D/image_8664f711-1e34-4ff8-88df-33cce64de324.png" width="451" border="0"&gt; &lt;/p&gt; &lt;p&gt;&lt;img height="113" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQuerytableSorterandquickSearchPluginsTo_6D8D/image_ea7245be-1e7b-411d-bf08-16b943dd47f4.png" width="410" border="0"&gt; &lt;/p&gt; &lt;p&gt;&lt;img height="118" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/jQuerytableSorterandquickSearchPluginsTo_6D8D/image_d4d54ddf-ede4-4120-88df-b3e6280d7f84.png" width="391" border="0"&gt; &lt;/p&gt; &lt;p&gt;Once you have the jQuery file and plugins linked to in your document, this is all of the jQuery that is needed. I tried to explain in the comments what is going on:&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;
$(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {

    &lt;span class="rem"&gt;//Setup the sorting for the table with the first column initially sorted ascending&lt;/span&gt;
    &lt;span class="rem"&gt;//and the rows striped using the zebra widget&lt;/span&gt;
        $(&lt;span class="str"&gt;"#tableOne"&lt;/span&gt;).tablesorter({ sortList: [[0, 0]], widgets: [&lt;span class="str"&gt;'zebra'&lt;/span&gt;] });

    &lt;span class="rem"&gt;//Setup the quickSearch plugin with on onAfter event that first checks to see how&lt;/span&gt;
    &lt;span class="rem"&gt;//many rows are visible in the body of the table. If there are rows still visible&lt;/span&gt;
    &lt;span class="rem"&gt;//call tableSorter functions to update the sorting and then hide the tables footer. &lt;/span&gt;
    &lt;span class="rem"&gt;//Else show the tables footer  &lt;/span&gt;
        $(&lt;span class="str"&gt;"#tableOne tbody tr"&lt;/span&gt;).quicksearch({
            labelText: &lt;span class="str"&gt;'Search: '&lt;/span&gt;,
            attached: &lt;span class="str"&gt;'#tableOne'&lt;/span&gt;,
            position: &lt;span class="str"&gt;'before'&lt;/span&gt;,
            delay: 100,
            loaderText: &lt;span class="str"&gt;'Loading...'&lt;/span&gt;,
            onAfter: &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; ($(&lt;span class="str"&gt;"#tableOne tbody tr:visible"&lt;/span&gt;).length != 0) {
                    $(&lt;span class="str"&gt;"#tableOne"&lt;/span&gt;).trigger(&lt;span class="str"&gt;"update"&lt;/span&gt;);
                    $(&lt;span class="str"&gt;"#tableOne"&lt;/span&gt;).trigger(&lt;span class="str"&gt;"appendCache"&lt;/span&gt;);
                    $(&lt;span class="str"&gt;"#tableOne tfoot tr"&lt;/span&gt;).hide();
                }
                &lt;span class="kwrd"&gt;else&lt;/span&gt; {
                    $(&lt;span class="str"&gt;"#tableOne tfoot tr"&lt;/span&gt;).show();
                }
            }
        });

});   
&amp;lt;/script&amp;gt;   &lt;/pre&gt;&lt;/blockquote&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;So this is great and all, but I can't seem to get this to work with the &lt;a href="http://tablesorter.com/docs/example-pager.html"&gt;tableSorter pager plugin&lt;/a&gt;. The way the pager plugin works, only data from the first page is filtered.&amp;nbsp; Maybe someone else can run with it and figure it out. I would recommend taking a look at how the &lt;a href="http://www.compulsivoco.com/2008/08/tablesorter-filter-results-based-on-search-string/"&gt;tableSorter filter&lt;/a&gt; plugin does it and see if the filter part of quickSearch couldn't be ported to the other?&amp;nbsp; Another option might be to re-write the pager plugin to hide and show rows and not necessary remove/add them back to the DOM? Please let me know if you take this further than I have.&lt;/p&gt;
&lt;p&gt;[dzone]&amp;nbsp;&amp;nbsp; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/11/20/jQuery-tableSorter-and-quickSearch-Plugins-Together-Demo.aspx&amp;amp;title=jQuery tableSorter and quickSearch Plugins Together Demo"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/11/20/jQuery-tableSorter-and-quickSearch-Plugins-Together-Demo.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IJff4rGscR8CHkNA7MW5jZeobFg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IJff4rGscR8CHkNA7MW5jZeobFg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IJff4rGscR8CHkNA7MW5jZeobFg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IJff4rGscR8CHkNA7MW5jZeobFg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/v6Osm5LjKBk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/v6Osm5LjKBk/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/11/20/jQuery-tableSorter-and-quickSearch-Plugins-Together-Demo.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=dbf55df1-c909-4b1b-bcc6-bd058b2bc69e</guid>
      <pubDate>Thu, 20 Nov 2008 07:47:45 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=dbf55df1-c909-4b1b-bcc6-bd058b2bc69e</pingback:target>
      <slash:comments>19</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=dbf55df1-c909-4b1b-bcc6-bd058b2bc69e</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/11/20/jQuery-tableSorter-and-quickSearch-Plugins-Together-Demo.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=dbf55df1-c909-4b1b-bcc6-bd058b2bc69e</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=dbf55df1-c909-4b1b-bcc6-bd058b2bc69e</feedburner:origLink></item>
    <item>
      <title>Select All CheckBoxes in a Table Column With and Without jQuery Plugin Demo</title>
      <description>&lt;p&gt;I first wrote about &lt;a href="http://beckelman.net/post/2008/08/09/Select-All-CheckBoxes-in-an-ASPNET-ListView-Control-using-jQuery.aspx"&gt;selecting all of the checkboxes in an ASP.NET ListView&lt;/a&gt; almost three months ago now.&amp;nbsp; You may of noticed in my last post some cleaner code to achieve this that doesn't require adding arbitrary classes or id's for hooks. Since I didn't point it out, I thought I would share it as well as my first jQuery plugin that does the same thing with a few more extras.&lt;/p&gt; &lt;p&gt;&lt;font size="5"&gt;&lt;a href="http://beckelman.net/Demos/jQuerySelectAllCheckBoxesPlugin/Default.aspx"&gt;Demo&lt;/a&gt; | &lt;a href="http://beckelman.net/file.axd?file=jQuerySelectAllCheckboxesPlugin.zip"&gt;Download&lt;/a&gt;&lt;/font&gt; (Includes ASPX and HTML Example)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Screenshot of End Product:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img height="355" alt="image" src="http://beckelman.net/image.axd?picture=WindowsLiveWriter/SelectAllCheckBoxesinaTableColumnWithand_7301/image_288627b6-d8c5-43d8-aca3-c6fe29fb23b4.png" width="402" border="0"&gt; &lt;/p&gt; &lt;p&gt;So to start, the code that I am using now to select of all of the CheckBoxes in the first column of a table:&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;
    $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
        $(&lt;span class="str"&gt;"#tableOne thead tr th:first input:checkbox"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; checkedStatus = &lt;span class="kwrd"&gt;this&lt;/span&gt;.&lt;span class="kwrd"&gt;checked&lt;/span&gt;;
            $(&lt;span class="str"&gt;"#tableOne tbody tr td:first-child input:checkbox"&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.&lt;span class="kwrd"&gt;checked&lt;/span&gt; = checkedStatus;
            });
        });

    });
&amp;lt;/script&amp;gt;  &lt;/pre&gt;&lt;/blockquote&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Once the document is ready, selectors are used to find the first CheckBox in the head of the table and then a click event is added to it. When the CheckBox is clicked its checked status is added to the variable checkedStatus. Next selectors find the CheckBox in the first cell of each column in the body of the table. Then &lt;a href="http://docs.jquery.com/Core/each#callback"&gt;each&lt;/a&gt; is used to iterate through this wrapped set and the checked status of each CheckBox is set to the value stored in checkedStatus.&lt;/p&gt;
&lt;p&gt;The nice part about the code above is that the only client id you have to worry about is for the table itself. If you use MasterPages or Panels or anything that messes with the client id in ASP.NET you won't have to track them down or add extra classes to your markup to be able to get your code working.&lt;/p&gt;
&lt;p&gt;Since I use this on almost all of my tables I thought I would try turning it into my first jQuery plugin. One of the things that came to mind when building the plugin was what if I didn't want the column of CheckBoxes as the first column? How could I support this? Turns out it was pretty easy to setup my defaults for the plugin to look for the CheckBoxes in the first column, but provide options that allow for the CheckBoxes to be in whatever table column the user designates. I also ended up adding default tooltips to the CheckBox in the head that can be overridden as well. So without any further verbiage:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;
&lt;span class="rem"&gt;* selectAllRows.js - http://beckelman.net&lt;/span&gt;
&lt;span class="rem"&gt;*&lt;/span&gt;
&lt;span class="rem"&gt;* Copyright (c) 2008 Bill Beckelman&lt;/span&gt;
&lt;span class="rem"&gt;* Dual licensed under the MIT (MIT-LICENSE.txt)&lt;/span&gt;
&lt;span class="rem"&gt;* and GPL (GPL-LICENSE.txt) licenses.&lt;/span&gt;
&lt;span class="rem"&gt;*&lt;/span&gt;
&lt;span class="rem"&gt;* 2008-11-18&lt;/span&gt;
&lt;span class="rem"&gt;* Version .01&lt;/span&gt;
&lt;span class="rem"&gt;*/&lt;/span&gt;

(&lt;span class="kwrd"&gt;function&lt;/span&gt;($) {

    $.fn.selectAllRows = &lt;span class="kwrd"&gt;function&lt;/span&gt;(callerSettings) {
        &lt;span class="kwrd"&gt;var&lt;/span&gt; settings;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; headerCheckbox;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; columnCheckboxes;

        settings = $.extend({
            column: &lt;span class="str"&gt;'first'&lt;/span&gt;,
            selectTip: &lt;span class="str"&gt;'Click to Select All'&lt;/span&gt;,
            unselectTip: &lt;span class="str"&gt;'Click to Un-Select All'&lt;/span&gt;            
        }, callerSettings || {});

        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isNaN(settings.column)) {
            headerCheckbox = $(&lt;span class="str"&gt;"thead tr th:"&lt;/span&gt; + settings.column + &lt;span class="str"&gt;"-child input:checkbox"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;);
            columnCheckboxes = $(&lt;span class="str"&gt;"tbody tr td:"&lt;/span&gt; + settings.column + &lt;span class="str"&gt;"-child input:checkbox"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;);
        }
        &lt;span class="kwrd"&gt;else&lt;/span&gt; {
            headerCheckbox = $(&lt;span class="str"&gt;"thead tr th:nth-child("&lt;/span&gt; + settings.column + &lt;span class="str"&gt;") input:checkbox"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;);
            columnCheckboxes = $(&lt;span class="str"&gt;"tbody tr td:nth-child("&lt;/span&gt; + settings.column + &lt;span class="str"&gt;") input:checkbox"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;);
        }

        headerCheckbox.attr(&lt;span class="str"&gt;"title"&lt;/span&gt;, settings.selectTip);

        headerCheckbox.click(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; checkedStatus = &lt;span class="kwrd"&gt;this&lt;/span&gt;.&lt;span class="kwrd"&gt;checked&lt;/span&gt;;

            columnCheckboxes.each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.&lt;span class="kwrd"&gt;checked&lt;/span&gt; = checkedStatus;
            });

            &lt;span class="kwrd"&gt;if&lt;/span&gt; (checkedStatus == &lt;span class="kwrd"&gt;true&lt;/span&gt;) {
                $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).attr(&lt;span class="str"&gt;"title"&lt;/span&gt;, settings.unselectTip);
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt; {
                $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).attr(&lt;span class="str"&gt;"title"&lt;/span&gt;, settings.selectTip);
            }
        });

        &lt;span class="kwrd"&gt;return&lt;/span&gt; $(&lt;span class="kwrd"&gt;this&lt;/span&gt;);
    };
})(jQuery);&lt;/pre&gt;&lt;/blockquote&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To call the plugin, you just have to select your table and then add ".selectAllRows();" See the &lt;a href="http://beckelman.net/Demos/jQuerySelectAllCheckBoxesPlugin/Default.aspx"&gt;&lt;font size="5"&gt;demo&lt;/font&gt;&lt;/a&gt;, for examples (with code) that show using different columns and overridden tooltips.&lt;/p&gt;
&lt;p&gt;There is other stuff that could be done to improve this plugin. I have been working on adding a callback that will allow for things like disabling or enabling items on the &lt;a href="http://beckelman.net/post/2008/11/15/Enabling-and-Disabling-Menu-Items-in-jQuery-contextMenujs-Plugin-Demo.aspx"&gt;contextMenu plugin&lt;/a&gt; I use or whatever you want to do once the CheckBoxes have all been checked or un-checked. Its working, but not that well yet. I will update you when it does. If your interested in building your own plugins I recommend checking out the &lt;a href="http://docs.jquery.com/Plugins/Authoring"&gt;documents on the jQuery web site&lt;/a&gt; or the chapter on building plugins in the book &lt;a href="http://www.manning.com/bibeault/"&gt;jQuery in Action&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let me know in the comments what you think and what could be improved.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[dzone]&amp;nbsp; &lt;a href="http://www.dotnetkicks.com/kick/?url=http://beckelman.net/post/2008/11/18/Select-All-CheckBoxes-in-a-Table-Column-With-and-Without-jQuery-Plugin-Demo.aspx&amp;amp;title=Select All CheckBoxes in a Table Column With and Without jQuery Plugin Demo"&gt;
                    &lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://beckelman.net/post/2008/11/18/Select-All-CheckBoxes-in-a-Table-Column-With-and-Without-jQuery-Plugin-Demo.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;
                  &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VKDLORaOfakUjUcTJPnMEuDmy34/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VKDLORaOfakUjUcTJPnMEuDmy34/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VKDLORaOfakUjUcTJPnMEuDmy34/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VKDLORaOfakUjUcTJPnMEuDmy34/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BillBeckelman/~4/q9ElW6vP75Y" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/BillBeckelman/~3/q9ElW6vP75Y/post.aspx</link>
      <author>Bill Beckelman</author>
      <comments>http://beckelman.net/post/2008/11/18/Select-All-CheckBoxes-in-a-Table-Column-With-and-Without-jQuery-Plugin-Demo.aspx#comment</comments>
      <guid isPermaLink="false">http://beckelman.net/post.aspx?id=81e0c22c-182f-4bc4-9ecd-2a6a04c58fb2</guid>
      <pubDate>Tue, 18 Nov 2008 08:11:31 -0600</pubDate>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <dc:publisher>Bill Beckelman</dc:publisher>
      <pingback:server>http://beckelman.net/pingback.axd</pingback:server>
      <pingback:target>http://beckelman.net/post.aspx?id=81e0c22c-182f-4bc4-9ecd-2a6a04c58fb2</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://beckelman.net/trackback.axd?id=81e0c22c-182f-4bc4-9ecd-2a6a04c58fb2</trackback:ping>
      <wfw:comment>http://beckelman.net/post/2008/11/18/Select-All-CheckBoxes-in-a-Table-Column-With-and-Without-jQuery-Plugin-Demo.aspx#comment</wfw:comment>
      <wfw:commentRss>http://beckelman.net/syndication.axd?post=81e0c22c-182f-4bc4-9ecd-2a6a04c58fb2</wfw:commentRss>
    <feedburner:origLink>http://beckelman.net/post.aspx?id=81e0c22c-182f-4bc4-9ecd-2a6a04c58fb2</feedburner:origLink></item>
  </channel>
</rss>
