<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Are we there yet?</title>
	<atom:link href="http://www.rogerpence.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rogerpence.com</link>
	<description>Application development lessons learned (and some not!)</description>
	<lastBuildDate>Thu, 28 Apr 2011 13:16:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>A generic jQuery message panel</title>
		<link>http://www.rogerpence.com/a-generic-jquery-message-panel/</link>
		<comments>http://www.rogerpence.com/a-generic-jquery-message-panel/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 03:43:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuiery]]></category>

		<guid isPermaLink="false">http://www.rogerpence.com/?p=126</guid>
		<description><![CDATA[rpMessagePanel is a generic message panel that shows at the top of a Web page. Use the demo link below to take a look at the panel and its options. Demo Code on Github Download zip The rpMessagePanel is displayed with its display([options]) method. This method takes one argument; a JavaScript object with any or [...]]]></description>
			<content:encoded><![CDATA[<p>rpMessagePanel is a generic message panel that shows at the top of a Web page. Use the demo link below to take a look at the panel and its options.</p>
<p><a class="medium red awesome" title="Show demo" href="http://www.rogerpence.com/examples/js/rpMessagePanel/rpMessagePanel.html">Demo</a> <a class="medium red awesome" title="Download from Github" href="https://github.com/rogerpence/rpMessagePanel">Code on Github</a> <a class="medium red awesome" title="Download zip file" href="http://cl.ly/392w2i3M3w3O2n1r3Y2p">Download zip</a></p>
<p>The rpMessagePanel is displayed with its <em>display([options])</em> method. This method takes one argument; a JavaScript object with any or all of the following values.The default values are shown in <strong>bold</strong> text.</p>
<table class="grid" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr class="altrow">
<th valign="top">Option</th>
<th valign="top">Values</th>
<th valign="top">Description</th>
</tr>
<tr>
<td valign="top">panelMode</td>
<td valign="top"><strong>modal</strong></td>
<td valign="top">Display the message panel modally over a gray-out parent page. All input on the parent page is inhibited while the message panel is displayed modally.</td>
</tr>
<tr class="altrow">
<td valign="top"></td>
<td valign="top">nonmodal</td>
<td valign="top">Display the message panel nonmodally over its parent page. The parent page still accepts input while the message panel is displayed nonmodally..</td>
</tr>
<tr>
<td valign="top">panelType</td>
<td valign="top"><strong>error</strong></td>
<td valign="top">Display a red message panel with an “X” icon.</td>
</tr>
<tr class="altrow">
<td valign="top"></td>
<td valign="top">info</td>
<td valign="top">Display a yellow message panel with a “!” icon.</td>
</tr>
<tr>
<td valign="top">displayMode</td>
<td valign="top"><strong>overlap</strong></td>
<td valign="top">Display the the message panel overlapping its parent page.</td>
</tr>
<tr class="altrow">
<td valign="top"></td>
<td valign="top">pushdown</td>
<td valign="top">Display the message panel while pushing down the content on the parent page.</td>
</tr>
<tr>
<td valign="top">slideDuration</td>
<td valign="top"><strong>“fast”</strong> or “slow” or an integer value</td>
<td valign="top">Set the speed at which the message panel is displayed. This is a millisecond duration for jQuery’s <em>slideDown()</em> method. This value is passed on to jQuery’s <em>slideDown()</em> method.The special values “fast” and “slow” can also be used.</td>
</tr>
</tbody>
</table>
<p>For example, to display the rpMessagePanel as a nonmodal info pushdown panel panel slowly, call <em>display()</em> like this:</p>
<p><!-- Start inline code: {caption} --></p>
<div class="inlineCode">
<pre class="codeDisplay"><span><span class="lineNumbers">001</span>rp.messagePanel.display( { "panelMode" : "nonmodal",</span>
<span><span class="lineNumbers">002</span>                           "panelType" : "info",</span>
<span><span class="lineNumbers">003</span>                           "slideDuration" : "slow",</span>
<span><span class="lineNumbers">004</span>                           "displayMode" : "pushdown" } )</span></pre>
</div>
<p><!-- End inline code: {caption} --></p>
<p>The rpMessagePanel provides two other public methods, <em>create([panelTitle])</em> and <em>addMessage([messageTitle], [messageText]).</em> You must call <em>create()</em> once before displaying the panel; you can call <em>addMessage()</em> as many times as necessary to show as many message lines as you need. <em>addMessage()</em>’s <em>messageText</em> argument isn’t encoded so it can include HTML. To omit the first argument to <em>addMessage()</em>, use null as its value. For example, the code below:</p>
<p><!-- Start inline code: {caption} --></p>
<div class="inlineCode">
<pre class="codeDisplay"><span><span class="lineNumbers">001</span>rp.messagePanel.create( "This is an example error message." );</span>
<span><span class="lineNumbers">002</span>rp.messagePanel.addMessage( "Error message", "Something really bad happened." );</span>
<span><span class="lineNumbers">003</span>rp.messagePanel.addMessage( "Error level"  , "1" );</span>
<span><span class="lineNumbers">004</span>rp.messagePanel.addMessage( "Instructions" , "Call your manager!" );</span>
<span><span class="lineNumbers">005</span>rp.messagePanel.addMessage( null, &lt;/span&gt;</span>
<span><span class="lineNumbers">006</span>      &lt;a target='_blank' href='yourUrl'&gt;Comment on this error&lt;/a&gt;" );</span>
<span><span class="lineNumbers">007</span></span>
<span><span class="lineNumbers">008</span>rp.messagePanel.display();</span></pre>
</div>
<p><!-- End inline code: {caption} --></p>
<p>displays a message panel like this:</p>
<p><a href="http://www.rogerpence.com/wp-content/uploads/2011/04/rpmessagePanel.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="rpmessagePanel" src="http://www.rogerpence.com/wp-content/uploads/2011/04/rpmessagePanel_thumb.png" border="0" alt="rpmessagePanel" width="715" height="164" /></a></p>
<p>In the example above, the options object wasn&#8217;t passed to the <em>display()</em> method, so the message panel is displayed using the default values.</p>
<p>rpMessagePanel uses the <a href="https://github.com/jquery/jquery-tmpl">jQuery tmpl plugin</a> to build the HTML for the message panel.There isn’t a need to add any templating code to your Web page, rpMessagePanel uses its private <em>injectTemplateIntoPage()</em> method to push the required HTML into your page for you.You do need to include the jQuery tmpl JavaScript into your page.</p>
<h4>Source listing</h4>
<p><!-- Start collapsible code: Figure 1a. rpMessagePanel.js source --></p>
<div class="showHideContainer" title="Show/hide code"><span class="figureCaption">Figure 1a. rpMessagePanel.js source</span><span class="copyCodeToClipboard" title="Copy code to clipboard">Copy</span></div>
<div class="inlineCode hideCode">
<pre class="codeDisplay"><span><span class="lineNumbers">001</span><span class="keyword">var</span> rp = rp || {};</span>
<span><span class="lineNumbers">002</span>    </span>
<span><span class="lineNumbers">003</span>rp.messagePanel = function() {</span>
<span><span class="lineNumbers">004</span><span class="keyword">    var</span> panelDefinition;</span>
<span><span class="lineNumbers">005</span><span class="keyword">    var</span> $messagePanel;</span>
<span><span class="lineNumbers">006</span>    </span>
<span><span class="lineNumbers">007</span><span class="keyword">    var</span> template = [];</span>
<span><span class="lineNumbers">008</span>    template.push( '&lt;script id="messagePanelTemplate" type="text/x-jQuery-tmpl"&gt;' );</span>
<span><span class="lineNumbers">009</span>    template.push( '&lt;div id="messagePanel" class="error" style="display:none"&gt;' );</span>
<span><span class="lineNumbers">010</span>    template.push( '&lt;div id="messagePanelIcon" title="Close this panel."&gt;&lt;/div&gt;' );    </span>
<span><span class="lineNumbers">011</span>    template.push( '&lt;div id="headingText"&gt;&lt;span class="heading"&gt;${error}&lt;/span&gt;&lt;/div&gt;' );</span>
<span><span class="lineNumbers">012</span>    template.push( '&lt;div id="messageDetails"&gt;' );</span>
<span><span class="lineNumbers">013</span>    template.push( '&lt;div id="innerDetails"&gt;' );</span>
<span><span class="lineNumbers">014</span>    template.push( '{{each errors}}' );</span>
<span><span class="lineNumbers">015</span>    template.push( '{{if title}}' );</span>
<span><span class="lineNumbers">016</span>    template.push( '&lt;div&gt;${title}: &lt;strong&gt;{{html message}}&lt;/strong&gt;&lt;/div&gt;' );</span>
<span><span class="lineNumbers">017</span>    template.push( '{{else}}' );</span>
<span><span class="lineNumbers">018</span>    template.push( '&lt;div&gt;&lt;strong&gt;{{html message}}&lt;/strong&gt;&lt;/div&gt;' );</span>
<span><span class="lineNumbers">019</span>    template.push( '{{/if}}' );</span>
<span><span class="lineNumbers">020</span>    template.push( '{{/each}}' );</span>
<span><span class="lineNumbers">021</span>    template.push( '&lt;/div&gt;' );    </span>
<span><span class="lineNumbers">022</span>    template.push( '&lt;/div&gt;' );</span>
<span><span class="lineNumbers">023</span>    template.push( '&lt;div title="Close this panel." class="closeBox" id="closeBox" &gt;x&lt;/div&gt;' );</span>
<span><span class="lineNumbers">024</span>    template.push( '&lt;/div&gt;' );</span>
<span><span class="lineNumbers">025</span>    template.push( '&lt;/script&gt;' );    </span>
<span><span class="lineNumbers">026</span></span>
<span><span class="lineNumbers">027</span><span class="keyword">    function</span> create( topLevelMessage ) {</span>
<span><span class="lineNumbers">028</span>        panelDefinition = { "error" : topLevelMessage, "errors" : [] };</span>
<span><span class="lineNumbers">029</span>    }</span>
<span><span class="lineNumbers">030</span></span>
<span><span class="lineNumbers">031</span><span class="keyword">    function</span> addMessage( title, message ) {</span>
<span><span class="lineNumbers">032</span>        panelDefinition.errors.push( { "title" : title, "message" : message  } );</span>
<span><span class="lineNumbers">033</span>    }</span>
<span><span class="lineNumbers">034</span></span>
<span><span class="lineNumbers">035</span><span class="keyword">    function</span> removePanel() {</span>
<span><span class="lineNumbers">036</span>        // If displayed nonmodally, the cached value </span>
<span><span class="lineNumbers">037</span>        // $messagePanel may not yet be available.</span>
<span><span class="lineNumbers">038</span>        $( "#messagePanel" ).remove();</span>
<span><span class="lineNumbers">039</span>    }</span>
<span><span class="lineNumbers">040</span></span>
<span><span class="lineNumbers">041</span><span class="keyword">    function</span> hidePanel( options ) {</span>
<span><span class="lineNumbers">042</span>        $("#shadow").hide();</span>
<span><span class="lineNumbers">043</span><span class="keyword">        if</span> ( $messagePanel.is( ":visible" ) ) { </span>
<span><span class="lineNumbers">044</span>            $messagePanel.slideUp( options.slideTime );    </span>
<span><span class="lineNumbers">045</span>        }     </span>
<span><span class="lineNumbers">046</span>        removePanel();</span>
<span><span class="lineNumbers">047</span>    }</span>
<span><span class="lineNumbers">048</span>    </span>
<span><span class="lineNumbers">049</span><span class="keyword">    function</span> injectTemplateIntoPage() {</span>
<span><span class="lineNumbers">050</span><span class="keyword">        if</span> ( $( "#messagePanelTemplate" ).length === 0 ) {</span>
<span><span class="lineNumbers">051</span>            $( "body" ).append( template.join( "" ) );        </span>
<span><span class="lineNumbers">052</span>        }</span>
<span><span class="lineNumbers">053</span>    }</span>
<span><span class="lineNumbers">054</span>    </span>
<span><span class="lineNumbers">055</span><span class="keyword">    function</span> expandTemplate() {</span>
<span><span class="lineNumbers">056</span><span class="keyword">        var</span> templateId = $( "#messagePanelTemplate" );</span>
<span><span class="lineNumbers">057</span>        templateId.tmpl( panelDefinition ).prependTo( "body" ); </span>
<span><span class="lineNumbers">058</span>        $messagePanel = $( "#messagePanel" );</span>
<span><span class="lineNumbers">059</span>    }</span>
<span><span class="lineNumbers">060</span></span>
<span><span class="lineNumbers">061</span><span class="keyword">    function</span> prepareModalShadow() {</span>
<span><span class="lineNumbers">062</span><span class="keyword">        if</span> ( $( "#shadow" ).length === 0 ) {</span>
<span><span class="lineNumbers">063</span>            $( "body" ).append( "&lt;div id='shadow'&gt;&lt;/div&gt;" );</span>
<span><span class="lineNumbers">064</span>        }     </span>
<span><span class="lineNumbers">065</span>        $("#shadow").css( "height", $( document ).height() ).hide();</span>
<span><span class="lineNumbers">066</span>    }</span>
<span><span class="lineNumbers">067</span></span>
<span><span class="lineNumbers">068</span><span class="keyword">    function</span> preparePanel( options ) {</span>
<span><span class="lineNumbers">069</span>        removePanel();</span>
<span><span class="lineNumbers">070</span><span class="keyword">        in</span>jectTemplateIntoPage();</span>
<span><span class="lineNumbers">071</span>        expandTemplate();</span>
<span><span class="lineNumbers">072</span></span>
<span><span class="lineNumbers">073</span><span class="keyword">        var</span> modal = options.panelMode === "modal";</span>
<span><span class="lineNumbers">074</span><span class="keyword">        if</span> ( modal ) {</span>
<span><span class="lineNumbers">075</span>            prepareModalShadow();</span>
<span><span class="lineNumbers">076</span>        }</span>
<span><span class="lineNumbers">077</span>        </span>
<span><span class="lineNumbers">078</span><span class="keyword">        if</span> ( options.slideDuration !== "fast" &amp;&amp; options.slideDuration !== "slow" ) {</span>
<span><span class="lineNumbers">079</span>            options.slideDuration = options.slideDuration.toInt();</span>
<span><span class="lineNumbers">080</span>        }</span>
<span><span class="lineNumbers">081</span>        </span>
<span><span class="lineNumbers">082</span><span class="keyword">        if</span> ( options.panelType === "error" ) {</span>
<span><span class="lineNumbers">083</span>            $messagePanel.removeClass( "warning" ).addClass( "error" );        </span>
<span><span class="lineNumbers">084</span>        }</span>
<span><span class="lineNumbers">085</span><span class="keyword">        else</span> {</span>
<span><span class="lineNumbers">086</span>            $messagePanel.removeClass( "error" ).addClass( "warning" );        </span>
<span><span class="lineNumbers">087</span>        }</span>
<span><span class="lineNumbers">088</span></span>
<span><span class="lineNumbers">089</span><span class="keyword">        if</span> ( options.displayMode === "overlap" ) {        </span>
<span><span class="lineNumbers">090</span>            $messagePanel.css( "position", "absolute" );</span>
<span><span class="lineNumbers">091</span>        }</span>
<span><span class="lineNumbers">092</span>        </span>
<span><span class="lineNumbers">093</span><span class="keyword">        if</span> ( modal ) {</span>
<span><span class="lineNumbers">094</span>            $("#shadow").show();</span>
<span><span class="lineNumbers">095</span>        }    </span>
<span><span class="lineNumbers">096</span></span>
<span><span class="lineNumbers">097</span>        $( ".closeBox, #messagePanelIcon", $messagePanel ).click( function() {</span>
<span><span class="lineNumbers">098</span>            hidePanel( options );</span>
<span><span class="lineNumbers">099</span>        });</span>
<span><span class="lineNumbers">100</span>    }</span>
<span><span class="lineNumbers">101</span>                 </span>
<span><span class="lineNumbers">102</span><span class="keyword">    function</span> display( runtimeOptions ) {</span>
<span><span class="lineNumbers">103</span>        runtimeOptions = runtimeOptions || {};</span>
<span><span class="lineNumbers">104</span><span class="keyword">        var</span> defaultOptions = { "panelMode" : "modal",</span>
<span><span class="lineNumbers">105</span>                               "panelType" : "error",</span>
<span><span class="lineNumbers">106</span>                               "slideDuration" : 500,</span>
<span><span class="lineNumbers">107</span>                               "displayMode" : "overlap" }</span>
<span><span class="lineNumbers">108</span></span>
<span><span class="lineNumbers">109</span><span class="keyword">        var</span> options = $.extend( {}, defaultOptions, runtimeOptions );</span>
<span><span class="lineNumbers">110</span>        </span>
<span><span class="lineNumbers">111</span>        preparePanel( options );</span>
<span><span class="lineNumbers">112</span>        </span>
<span><span class="lineNumbers">113</span>        //alert( options.slideDuration );</span>
<span><span class="lineNumbers">114</span></span>
<span><span class="lineNumbers">115</span>        $messagePanel.slideDown( options.slideDuration );</span>
<span><span class="lineNumbers">116</span>    }</span>
<span><span class="lineNumbers">117</span></span>
<span><span class="lineNumbers">118</span><span class="keyword">    return</span> {</span>
<span><span class="lineNumbers">119</span>        create : create, </span>
<span><span class="lineNumbers">120</span>        addMessage : addMessage,</span>
<span><span class="lineNumbers">121</span>        display : display</span>
<span><span class="lineNumbers">122</span>    };</span>
<span><span class="lineNumbers">123</span>}();</span>
<span><span class="lineNumbers">124</span></span>
<span><span class="lineNumbers">125</span>Function.prototype.method = function ( name, func ) {</span>
<span><span class="lineNumbers">126</span><span class="keyword">    this</span>.prototype[ name ] = func;</span>
<span><span class="lineNumbers">127</span><span class="keyword">    return</span> this;</span>
<span><span class="lineNumbers">128</span>};</span>
<span><span class="lineNumbers">129</span></span>
<span><span class="lineNumbers">130</span>Number.method( "toInt", function () {</span>
<span><span class="lineNumbers">131</span><span class="keyword">    return</span> Math[this &lt; 0 ? 'ceil' : 'floor'](this);</span>
<span><span class="lineNumbers">132</span>});</span>
<span><span class="lineNumbers">133</span></span>
<span><span class="lineNumbers">134</span>String.method( "toInt", function() {    </span>
<span><span class="lineNumbers">135</span><span class="keyword">    return</span> parseInt( this, 10 );</span>
<span><span class="lineNumbers">136</span>});</span></pre>
</div>
<p><!-- End collapsible code: Figure 1a. rpMessagePanel.js source --><!-- Start collapsible code: Figure 1b. rpMessagePanel.css source --></p>
<div class="showHideContainer" title="Show/hide code"><span class="figureCaption">Figure 1b. rpMessagePanel.css source</span><span class="copyCodeToClipboard" title="Copy code to clipboard">Copy</span></div>
<div class="inlineCode hideCode">
<pre class="codeDisplay"><span><span class="lineNumbers">001</span>#shadow { </span>
<span><span class="lineNumbers">002</span>    background-color: gray;</span>
<span><span class="lineNumbers">003</span>    position:absolute; </span>
<span><span class="lineNumbers">004</span>    left:0; </span>
<span><span class="lineNumbers">005</span>    top:0; </span>
<span><span class="lineNumbers">006</span>    width:100%; </span>
<span><span class="lineNumbers">007</span>    z-index:100; </span>
<span><span class="lineNumbers">008</span>    filter:alpha(opacity=65); </span>
<span><span class="lineNumbers">009</span>    -moz-opacity:0.65;</span>
<span><span class="lineNumbers">010</span>    -khtml-opacity: 0.65;</span>
<span><span class="lineNumbers">011</span>    opacity: 0.65; </span>
<span><span class="lineNumbers">012</span>    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=65, FinishOpacity=65, Style=2)";    </span>
<span><span class="lineNumbers">013</span>} </span>
<span><span class="lineNumbers">014</span></span>
<span><span class="lineNumbers">015</span>#messagePanel span.heading </span>
<span><span class="lineNumbers">016</span>{</span>
<span><span class="lineNumbers">017</span>    font-size: 1.2em;</span>
<span><span class="lineNumbers">018</span>}</span>
<span><span class="lineNumbers">019</span></span>
<span><span class="lineNumbers">020</span>#messagePanel #innerDetails {</span>
<span><span class="lineNumbers">021</span>    font-size: 1em;</span>
<span><span class="lineNumbers">022</span>}</span>
<span><span class="lineNumbers">023</span></span>
<span><span class="lineNumbers">024</span>#messagePanel #headingText {</span>
<span><span class="lineNumbers">025</span>    float: left;</span>
<span><span class="lineNumbers">026</span>    display: block;</span>
<span><span class="lineNumbers">027</span>    height: 35px;</span>
<span><span class="lineNumbers">028</span>    padding-top: 8px;</span>
<span><span class="lineNumbers">029</span>}</span>
<span><span class="lineNumbers">030</span></span>
<span><span class="lineNumbers">031</span>#messagePanel #icon {</span>
<span><span class="lineNumbers">032</span>    float: left;</span>
<span><span class="lineNumbers">033</span>    cursor: pointer;    </span>
<span><span class="lineNumbers">034</span>}</span>
<span><span class="lineNumbers">035</span></span>
<span><span class="lineNumbers">036</span>#messagePanel #messageDetails {</span>
<span><span class="lineNumbers">037</span>    clear: both;</span>
<span><span class="lineNumbers">038</span>    padding-right: 6px;</span>
<span><span class="lineNumbers">039</span>    padding-left: 6px;</span>
<span><span class="lineNumbers">040</span>    padding-bottom: 6px;</span>
<span><span class="lineNumbers">041</span>}</span>
<span><span class="lineNumbers">042</span></span>
<span><span class="lineNumbers">043</span>#messagePanel #innerDetails {</span>
<span><span class="lineNumbers">044</span>    padding: 6px;</span>
<span><span class="lineNumbers">045</span>    border: 2px silver dotted;</span>
<span><span class="lineNumbers">046</span>    background: whitesmoke;</span>
<span><span class="lineNumbers">047</span>    -webkit-border-radius: 6px;</span>
<span><span class="lineNumbers">048</span>    -moz-border-radius: 6px;</span>
<span><span class="lineNumbers">049</span>    border-radius: 6px;    </span>
<span><span class="lineNumbers">050</span>}</span>
<span><span class="lineNumbers">051</span></span>
<span><span class="lineNumbers">052</span>#messagePanel #innerDetails div</span>
<span><span class="lineNumbers">053</span>{</span>
<span><span class="lineNumbers">054</span>    margin-top: 5px;</span>
<span><span class="lineNumbers">055</span>}</span>
<span><span class="lineNumbers">056</span></span>
<span><span class="lineNumbers">057</span>#messagePanel {</span>
<span><span class="lineNumbers">058</span>    z-index: 5000;</span>
<span><span class="lineNumbers">059</span>    color: #333333;</span>
<span><span class="lineNumbers">060</span>    position: relative;</span>
<span><span class="lineNumbers">061</span>    top: 0;</span>
<span><span class="lineNumbers">062</span>    font-family: Arial, Helvetica, sans-serif;</span>
<span><span class="lineNumbers">063</span>    padding-top: 4px;</span>
<span><span class="lineNumbers">064</span>    background-position: 6px 6px;</span>
<span><span class="lineNumbers">065</span>    background-repeat: no-repeat;</span>
<span><span class="lineNumbers">066</span>    left: 0;</span>
<span><span class="lineNumbers">067</span>    width: 100%;</span>
<span><span class="lineNumbers">068</span>}    </span>
<span><span class="lineNumbers">069</span></span>
<span><span class="lineNumbers">070</span>#messagePanel.error {</span>
<span><span class="lineNumbers">071</span>    background-color: #FFCCCC;</span>
<span><span class="lineNumbers">072</span>    border-color: #FF99CC;</span>
<span><span class="lineNumbers">073</span>    background-image: url( "../Images/error.png" );</span>
<span><span class="lineNumbers">074</span>}</span>
<span><span class="lineNumbers">075</span></span>
<span><span class="lineNumbers">076</span>#messagePanel.warning {</span>
<span><span class="lineNumbers">077</span>    background-color: #ffc;</span>
<span><span class="lineNumbers">078</span>    border-color: #ffcc00;</span>
<span><span class="lineNumbers">079</span>    background-image: url( "../Images/warning.png" );</span>
<span><span class="lineNumbers">080</span>}</span>
<span><span class="lineNumbers">081</span></span>
<span><span class="lineNumbers">082</span>#messagePanel #messagePanelIcon {</span>
<span><span class="lineNumbers">083</span>    width: 37px;</span>
<span><span class="lineNumbers">084</span>    height: 37px;</span>
<span><span class="lineNumbers">085</span>    float: left;</span>
<span><span class="lineNumbers">086</span>    cursor: pointer;</span>
<span><span class="lineNumbers">087</span>}</span>
<span><span class="lineNumbers">088</span></span>
<span><span class="lineNumbers">089</span>#messagePanel span.heading </span>
<span><span class="lineNumbers">090</span>{</span>
<span><span class="lineNumbers">091</span>    margin-left: 10px;</span>
<span><span class="lineNumbers">092</span>}</span>
<span><span class="lineNumbers">093</span></span>
<span><span class="lineNumbers">094</span>#messagePanel span </span>
<span><span class="lineNumbers">095</span>{</span>
<span><span class="lineNumbers">096</span>    margin-left: 8px;</span>
<span><span class="lineNumbers">097</span>}</span>
<span><span class="lineNumbers">098</span></span>
<span><span class="lineNumbers">099</span>#messagePanel #closeBox</span>
<span><span class="lineNumbers">100</span>{</span>
<span><span class="lineNumbers">101</span>    position: absolute;</span>
<span><span class="lineNumbers">102</span>    top: 0;</span>
<span><span class="lineNumbers">103</span>    right: 0;</span>
<span><span class="lineNumbers">104</span>    border: 2px solid #FF99CC;</span>
<span><span class="lineNumbers">105</span>    font-family: Consolas;</span>
<span><span class="lineNumbers">106</span>    font-size: 1.2em;</span>
<span><span class="lineNumbers">107</span>    font-weight: 800;</span>
<span><span class="lineNumbers">108</span>    padding: 0 8px 4px 8px;</span>
<span><span class="lineNumbers">109</span>    background-color: red;</span>
<span><span class="lineNumbers">110</span>    color: white;</span>
<span><span class="lineNumbers">111</span>    cursor: pointer;</span>
<span><span class="lineNumbers">112</span>    margin-top: 3px;</span>
<span><span class="lineNumbers">113</span>    margin-right: 3px;</span>
<span><span class="lineNumbers">114</span>}</span></pre>
</div>
<p><!-- End collapsible code: Figure 1b. rpMessagePanel.css source --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerpence.com/a-generic-jquery-message-panel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello, iPage host!</title>
		<link>http://www.rogerpence.com/hello-ipage-host/</link>
		<comments>http://www.rogerpence.com/hello-ipage-host/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 05:14:26 +0000</pubDate>
		<dc:creator>rp</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://www.rogerpence.com/?p=5</guid>
		<description><![CDATA[I just moved my blog from MochaHost to iPage. I am sooooooo glad to be off of MochaHost! MochaHost&#8217;s tech support is less responsive than a latex sex doll. My MochaHost issues were also probably made worse because I made the mistake of buying a Windows hosting package (using IIS) to use for posting both some example [...]]]></description>
			<content:encoded><![CDATA[<p>I just moved my blog from <a href="http://www.mochahost.com">MochaHost</a> to <a href="http://www.ipage.com">iPage</a>. I am sooooooo glad to be off of MochaHost! MochaHost&#8217;s tech support is less responsive than a latex sex doll. My MochaHost issues were also probably made worse because I made the mistake of buying a Windows hosting package (using IIS) to use for posting both some example .NET apps and hosting my WordPress blog. The iPage blog uses Apache and already I&#8217;m very glad I made that choice. I know IIS can be tweaked to do things like semantic URLs, but MochaHost&#8217;s configuration fought me every step of the way.</p>
<p>I&#8217;m looking forward to digging in on this blog. Please check back.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerpence.com/hello-ipage-host/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

