<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Gerren Design</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/" />
    <link rel="self" type="application/atom+xml" href="http://www.gerrendesign.com/weblog/atom.xml" />
    <id>tag:www.gerrendesign.com,2009-04-22:/weblog//1</id>
    <updated>2010-03-14T20:48:17Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.34-en</generator>

<entry>
    <title>Getting connected like never before</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2010/03/getting_connected_like_never_b.php" />
    <id>tag:www.gerrendesign.com,2010:/weblog//1.283</id>

    <published>2010-03-14T16:00:00Z</published>
    <updated>2010-03-14T20:48:17Z</updated>

    <summary> Long ago, in a website far, far away I downloaded and installed the Facebook Connect Commenters Plugin for Movable Type. I have to say, I was not impressed by it. Besides letting users log in and comment using their...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Design" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<img src="http://www.gerrendesign.com/entry_images/mtxfb.png" width="670" height="220" border="0" alt="" /><br/><br/>
					
<p><span style="font-size: 16px;">Long ago, in a website far, far away</span> I downloaded and installed the Facebook Connect Commenters Plugin for Movable Type. I have to say, I was not impressed by it. Besides letting users log in and comment using their Facebook account it really doesn't leverage any of the other features of Facebook Connect. In particular, the Facebook Connect Commenters Plugin has a JavaScript file called signface.js, in which it looks like there is a half written script to post back to a user's wall. What's the point of that? Did someone just give up?</p>

<p>So, I set out to finish the Facebook Connect Commenters Plugin. I wanted FB users to be able to come to my site and comment without having Log in. I wanted comments to feel faster and closer mimic the comment system that Facebook uses. Lastly, and most importantly I wanted FB users to be able to quickly easily post their comments back to their Facebook wall like I did in the image below. If you want these things too, then today is your lucky day...</p>       
                    
                    <center><img src="http://www.gerrendesign.com/entry_images/mtxfb-ap4.jpg" border="0" alt="" style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px;"   /></center><br/>]]>
        <![CDATA[  <br/><br/>
      <div style="margin: 0 0 20px 0; position: static; height: 67px; ">       
<a href="http://www.gerrendesign.com/entry_images/MTXFB.zip"><img src="http://www.gerrendesign.com/global_assets/images/download_btn.jpg" border="0" alt="download" align="left" style="margin: 0 15px 0 0; position: static; " /></a>
<p style="margin: 0; position: static; font-size: 14px; "><a href="http://www.gerrendesign.com/entry_images/MTXFB.zip">Download Xomment, <br/>Facebook Connect Commenters,<br/> and my MTXFB sample templates</a></p>
        </div>   
             
					
<h3>Step #1 - Install the Xomment Plugin</h3>

<p>The first thing we need to do is install a MT Plugin called Xomment. It's a really clean, stable Plugin written by <a target="_blank"  href="http://dererumnatura.us/docs/xomment.html">Reed A. Cartwright</a>   . Xomment uses Jquery to ajaxify the MT commenting system. With Xomment installed your users won't have to refresh the page when they submit a comment. This is critical so that we can guarantee that user can post their comment to their Facebook wall without the page refreshing before they are finished. </p>

<p>I use Movable Type version 4.34-en with the Community Pack 1.62 and Professional Pack 1.3. When I installed Xomment 2.02 I didn't notice any version conflicts, so go ahead and install it:</p>

<p><a target="_blank"  href="http://plugins.movabletype.org/xomment/">Download the original Xomment Plugin</a></p>

<p>Unpack the files in MT. Refresh the Xomment templates.  Add the following to your <strong>HTML Head</strong> template;</p>


<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;mt:If name="feedback_template"&gt;&lt;mt:IfCommentsActive&gt;<br/>
    &lt;mt:SetVar name="do_xomment_head" value="1"/&gt;<br/>
&lt;/mt:IfCommentsActive&gt;&lt;/mt:If&gt;<br/>
&lt;mt:If name="do_xomment_head"&gt;<br/>
  &lt;mt:Include module="Xomment Head" /&gt;<br/>
  &lt;mt:SetVar name="panel_size" value="10"/&gt;<br/>
  &lt;mt:SetVar name="panel_static_list" value="1,-1"/&gt;<br/>
&lt;mt:Ignore&gt;<br/>
&lt;!-- Remove the ignore tags if you use jQuery elsewhere in your site. --&gt;<br/>
&lt;mt:Else&gt;<br/>
  &lt;link rel="stylesheet" href="&lt;$mt:StaticWebPath$&gt;plugins/Xomment/smoothness/jquery-ui-1.7.min.css" type="text/css" media="screen" title="Smoothness" /&gt;<br/>
  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"&gt;&lt;/script&gt;<br/>
  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7/jquery-ui.min.js"&gt;&lt;/script&gt;<br/>
&lt;/mt:Ignore&gt;<br/>
&lt;/mt:If&gt;<br/>
</code></div>

<p>Now open your <strong>Comments</strong> template and replace it with the following code. It is almost exactly the same as what is provided by Mr. Cartwright, except I've changed the form's onSubmit to this: onSubmit="return postToWall(this);"</p>

<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;mt:ignore&gt;<br/>
&lt;!-- Display comments for the entry/page or commenting form if entry/page is accepting comments --&gt;<br/>
&lt;/mt:ignore&gt;<br/>
&lt;MTIfCommentsActive&gt;<br/>
&lt;div id="comments" class="comments"&gt;<br/>
<br/>

    &lt;mt:ignore&gt;<br/>
    &lt;!-- Display comments --&gt;<br/>
    &lt;/mt:ignore&gt;<br/>
<br/>
    &lt;mt:Include module="Xomment Panels"/&gt;<br/>
<br/>
    &lt;mt:ignore&gt;<br/>
    &lt;!-- Display commenting form if entry/page is accepting comments --&gt;<br/>
    &lt;/mt:ignore&gt;<br/>
    &lt;MTIfCommentsAccepted&gt;<br/>
    &lt;div class="comments-open" id="comments-open"&gt;<br/>
        &lt;h2 class="comments-open-header"&gt;Leave a comment&lt;/h2&gt;<br/>
        &lt;div class="comments-open-content"&gt;<br/>
<br/>
        &lt;mt:ignore&gt;<br/>
        &lt;!-- Display greeting for users if blog allows users to register locally --&gt;<br/>
        &lt;/mt:ignore&gt;<br/>
            &lt;div id="comment-greeting"&gt;&lt;/div&gt;<br/>
<br/>
    <br/>        &lt;form method="post" action="&lt;$MTCGIPath$&gt;&lt;$MTCommentScript$&gt;" name="comments_form" id="comments-form" onSubmit="return postToWall(this);"&gt;
         <br/>       &lt;input type="hidden" name="static" value="1" /&gt;
              <br/>  &lt;input type="hidden" name="entry_id" value="&lt;$MTEntryID$&gt;" /&gt;
                &lt;input type="hidden" name="__lang" value="&lt;$MTBlogLanguage$&gt;" /&gt;<br/>
                &lt;input type="hidden" name="parent_id" value="&lt;$MTCommentParentID$&gt;" id="comment-parent-id" /&gt;<br/>
                &lt;input type="hidden" name="armor" value="1" /&gt;<br/>
                &lt;input type="hidden" name="preview" value="" /&gt;<br/>
                &lt;input type="hidden" name="sid" value="" /&gt;<br/>
                &lt;div id="comments-open-data"&gt;<br/>
                    &lt;div id="comment-form-name"&gt;<br/>
                        &lt;label for="comment-author"&gt;Name&lt;/label&gt;<br/>
                        &lt;input id="comment-author" name="author" size="30" value="" onfocus="mtCommentFormOnFocus()" /&gt;<br/>
                    &lt;/div&gt;<br/>
                    &lt;div id="comment-form-email"&gt;<br/>
                        &lt;label for="comment-email"&gt;Email Address&lt;/label&gt;<br/>
                        &lt;input id="comment-email" name="email" size="30" value="" onfocus="mtCommentFormOnFocus()" /&gt;<br/>
                    &lt;/div&gt;<br/>
                    &lt;div id="comment-form-url"&gt;<br/>
                        &lt;label for="comment-url"&gt;URL&lt;/label&gt;<br/>
                        &lt;input id="comment-url" name="url" size="30" value="" onfocus="mtCommentFormOnFocus()" /&gt;<br/>
                    &lt;/div&gt;<br/>
                    &lt;div id="comment-form-remember-me"&gt;<br/>
                        &lt;input type="checkbox" id="comment-bake-cookie" name="bakecookie" onclick="mtRememberMeOnClick(this)" value="1" accesskey="r" /&gt;<br/>
                        &lt;label for="comment-bake-cookie"&gt;Remember personal info?&lt;/label&gt;<br/>
                    &lt;/div&gt;<br/>
                &lt;/div&gt;<br/>
                &lt;div id="comment-form-reply" style="display:none"&gt;<br/>
                    &lt;input type="checkbox" id="comment-reply" name="comment_reply" value="" onclick="mtSetCommentParentID()" /&gt;<br/>
                    &lt;label for="comment-reply" id="comment-reply-label"&gt;&lt;/label&gt;<br/>
                &lt;/div&gt;<br/>
                &lt;div id="comments-open-text"&gt;<br/>
                    &lt;label for="comment-text"&gt;Comments<br/>
                    &lt;MTIfAllowCommentHTML&gt;(You may use HTML tags for style)&lt;/MTIfAllowCommentHTML&gt;&lt;/label&gt;<br/>
                    &lt;textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtCommentFormOnFocus()"&gt;&lt;/textarea&gt;<br/>
                &lt;/div&gt;<br/>
                &lt;div id="comments-open-captcha"&gt;&lt;/div&gt;<br/>
                &lt;div id="comments-open-footer"&gt;<br/>
                    &lt;input type="submit" accesskey="v" name="preview_button" id="comment-preview" value="Preview" onclick="this.form.preview.value='1';" /&gt;<br/>
                    &lt;input type="submit" accesskey="s" name="post" id="comment-submit" value="Submit" /&gt;<br/>
                &lt;/div&gt;<br/>
            &lt;/form&gt;<br/>
<br/>

        &lt;/div&gt;<br/>
    &lt;/div&gt;<br/>
    &lt;/MTIfCommentsAccepted&gt;<br/>
<br/>

&lt;/div&gt;<br/>
&lt;/MTIfCommentsActive&gt;<br/>

</code></div>

<p>Replace the <strong>Comment Preview</strong> Template with this;</p>

<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;div class="comment-preview"&gt;<br/>
&lt;mt:Include module="Comment Detail"/&gt;<br/>
&lt;/div&gt;<br/>
</code></div>

<p>Replace your <strong>Comment Response</strong> template with this;</p>

<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;mt:If name="comment_confirmation"&gt;<br/>
 &lt;div class="comment-success" &gt;<br/>
  &lt;mt:XommentPanels new_comments="1"&gt;<br/>
    &lt;mt:XommentPanelComments&gt;<br/>
      &lt;$mt:Include module="Comment Detail"$&gt;<br/>
    &lt;/mt:XommentPanelComments&gt;<br/>
  &lt;/mt:XommentPanels&gt;<br/>
  &lt;/div&gt;<br/>
&lt;mt:Else name="comment_pending"&gt;<br/>
  &lt;div class="comment-pending ui-widget"&gt;&lt;div class="ui-state-highlight ui-corner-all"&gt;&lt;p&gt;<br/>
    &lt;span class="ui-icon ui-icon-info"&gt;&lt;/span&gt;<br/>
    Your comment has been received and held for approval by the blog owner.<br/>

  &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;<br/>
&lt;mt:Else name="comment_error"&gt;<br/>
  &lt;div class="comment-error ui-widget"&gt;&lt;div class="ui-state-error ui-corner-all"&gt;&lt;p&gt;<br/>
    &lt;span class="ui-icon ui-icon-alert"&gt;&lt;/span&gt;<br/>
    &lt;strong&gt;Your comment submission failed for the following reasons:&lt;/strong&gt;&lt;br /&gt;<br/>
    &lt;$MT:ErrorMessage$&gt;<br/>
  &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;<br/>
&lt;/mt:If&gt;<br/>

</code></div>

<p>So far, we haven't done anything too diffrent from a normal Xomment installation, but now you'll have to update your Comment Detail template. If you don't have a Comment Detail template you can just create a new module template with that name (Xomment automatically looks for it). These updates are so that when a FB user comments it leaves behind his FB user pic instead of the normal default user pic.  You can learn more about <a target="_blank"  href="http://www.movabletype.org/documentation/designer/publishing-comments-with-userpics.html">Publishing Comments with Userpics here</a>. So replace your <strong>Comment Detail</strong> template with what I have below, or use what I have below to update any custom styling you may already have.</p>



<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;div id="comment-&lt;$mt:CommentID$&gt;" class="comment&lt;mt:IfCommentParent&gt; comment-reply&lt;/mt:IfCommentParent&gt;"&gt;<br/>
&lt;div class="inner"&gt;<br/>
    &lt;div class="comment-header"&gt;<br/>
      <br/>
&lt;div class="user-pic&lt;mt:if tag="CommenterAuthType" eq="Facebook"&gt;comment-fb-&lt;$MTCommenterUsername&gt;&lt;/mt:if&gt;"&gt;<br/>
        
		<br/>
		
&lt;mt:if tag="CommenterAuthType" eq="Facebook"&gt; <br/>
&lt;a href="http://www.facebook.com/profile.php?id=&lt;$MTCommenterUsername&gt;" class="auth-icon"&gt;&lt;img src="&lt;$MTCommenterAuthIconURL size="logo_small"$&gt;" alt="&lt;$mt:CommenterAuthType$&gt;"/&gt;&lt;/a&gt;<br/>
&lt;fb:profile-pic uid="&lt;$MTCommenterUsername&gt;" size="square" linked="true"&gt;&lt;img src="http://static.ak.connect.facebook.com/pics/q_default.gif" /&gt;&lt;/fb:profile-pic&gt;<br/>
&lt;mt:else&gt;<br/>
          <br/>
&lt;mt:if tag="CommenterAuthIconURL"&gt; <br/>
&lt;a href="&lt;$MTCommenterURL&gt;" class="auth-icon"&gt;&lt;img src="&lt;$MTCommenterAuthIconURL size="logo_small"$&gt;" alt="&lt;$mt:CommenterAuthType$&gt;"/&gt;&lt;/a&gt;<br/>
&lt;/mt:if&gt;<br/>
          

&lt;img src="&lt;$mt:StaticWebPath$&gt;images/default-userpic-50.jpg" /&gt; <br/>

&lt;/mt:if&gt;<br/>
      &lt;/div&gt;<br/>
     <br/>
	 
	  &lt;div class="asset-meta"&gt; &lt;span class="byline"&gt;<br/>
        &lt;mt:if tag="CommenterAuthType" eq="Facebook"&gt;<br/>
        By &lt;span class="vcard author"&gt;<br/>
        &lt;fb:name uid="&lt;$MTCommenterUsername&gt;" linked="true" useyou="false"&gt;&lt;a href="http://www.facebook.com/profile.php?id=&lt;$MTCommenterUsername&gt;" class="fb-link" style="background: transparent;"&gt;<br/>
          &lt;$MTCommenterName&gt;<br/>
          &lt;/a&gt;&lt;/fb:name&gt;<br/>
        &lt;/span&gt; on &lt;a href="#comment-&lt;$MTCommentID$&gt;"&gt;&lt;abbr class="published" title="&lt;$MTCommentDate format_name="iso8601"$&gt;"&gt;<br/>
        &lt;$MTCommentDate$&gt;<br/>
        &lt;/abbr&gt;&lt;/a&gt;&lt;/span&gt;<br/>
        &lt;mt:else&gt;<br/>
        By &lt;span class="vcard author"&gt;<br/>
        &lt;mt:if tag="CommenterURL"&gt;&lt;a href="&lt;mt:CommenterURL&gt;"&gt;<br/>
          &lt;$MTCommentAuthor default_name="Anonymous" $&gt;<br/>
          &lt;/a&gt;<br/>
          &lt;mt:else&gt;<br/>
          &lt;mt:CommentAuthorLink default_name="Anonymous" show_email="0"&gt;<br/>
        &lt;/mt:if&gt;<br/>
        &lt;/span&gt; on &lt;a href="#comment-&lt;$MTCommentID$&gt;"&gt;&lt;abbr class="published" title="&lt;$MTCommentDate format_name="iso8601"$&gt;"&gt;<br/>
        &lt;$MTCommentDate$&gt;<br/>
        &lt;/abbr&gt;&lt;/a&gt;&lt;/span&gt;<br/>
        &lt;/mt:if&gt;<br/>
        &lt;/span&gt; &lt;/div&gt;<br/>
    &lt;/div&gt;<br/>
    &lt;div class="comment-content"&gt;<br/>
      &lt;$MTCommentBody$&gt;<br/>
    &lt;/div&gt;<br/>
  &lt;/div&gt;<br/>
&lt;/div&gt;<br/>
</code></div>


<p>You should now have Xomment working on your site. On to step #2.</p>

<div class="hint">
  <h3>Hint #1</h3>
  
  <p>In Movable Type, under comment prefrences, make sure that your 'Commenting Policy' setting is set to 'Trusted commenters only'. Else, whenever you submit a comment it will return in an like 'limit/offset clause... blah, blah, blah'.</p>
</div>


<div class="hint">
  <h3>Hint #2</h3>
  
  <p>I obviously re-styled my comments, you can do the same, with <a target="_blank"  href="http://jqueryui.com/themeroller/">Jquery UI Themes</a>. Not everyone's CSS is going to be exactly the same, and if you can't tell I use a high customized CSS on my site so I really can't help anyone out and provide premade CSS for this.</p>
</div>
				
	<br/>	<br/>
<h3>Step #2 - Install the Facebook Connect Commenters Plugin</h3>

<p>
<a target="_blank"  href="http://plugins.movabletype.org/facebook-connect-commenters/">Facebook Connect Commenters Plugin</a>					
</p>

<p>First off, don't bother clicking on the 'more info' link on this page... it just links to its self.  Just download it and then unpack it into your MT directory. Now you can go to this Github page and follow the <a target="_blank"  href="http://github.com/sixapart/mt-plugin-facebook-connect-commenters">normal install instructions</a>, but this didn't really work all that well for me. I'll walk you through what I have on my Entry template in step 4.</p>

<br/><br/>
<h3>Step #3 - Create a FaceBook Connect Application</h3>

<p>This is a little confusing, so I'm going to walk you through it with a few pictures. First, go to the <a target="_blank"  href="http://www.facebook.com/developers/apps.php">Facebook app developers page</a>.</p>



<p>Click on Set up a New Application.  Give it a name; it will be visible to users, so make it a good one. Click on agree, and then on continue.</p>

<p>On the Basic tab, fill out the following fields; Application Name, Description, upload an Icon, Developer Contact Email, and User support address. </p>

<img src="http://www.gerrendesign.com/entry_images/mtxfb-ap1.jpg" width="670" border="0" alt=""  />

<p>I've noticed that Facebook doesn't always remember changes if you just skip from tab to tab. So, click save changes, and then click on edit setting again. Now go to the Connect tab on the left.</p>

<p>Fill out your Connect URL and add a Facebook Connect Logo.  Hit Save Changes again. That is it, that is all you need to do for a connect application. All of the other stuff is for more complex apps that run on Facebook itself. So, copy your API Key, you are going to need that again in a minute</p>

<img src="http://www.gerrendesign.com/entry_images/mtxfb-ap2.jpg" width="670"  border="0" alt="" />


<br/><br/>
<h3>Step #4 - Add my script to tie it all together</h3>


<p>first open up <strong>mt.js</strong>, and go down to line 210. Rplace the current <strong>mtEscapeJS and mtUnescapeJS</strong> fuctions with the ones I have below. This is just to ensure that anything that runs through this script is treated as a string.</p>

<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>

function mtEscapeJS(s) {<br/>
    var str = s+'';<br/>
    var ns = str.replace(/'/g, "&amp;apos;");<br/>
    return ns;<br/>
}<br/><br/>


function mtUnescapeJS(s) {<br/>
    var str = s+''; <br/>
    var ns = str.replace(/&amp;apos;/g, "'");<br/>
    return ns;<br/>
}
</code></div>


<p>Create a new module template  called <strong>'FBcomment'</strong>, this is simply going to hold the content we are going to insert into the DOM when the user is logged in with FB. Because it is going to be injected with Javascript make sure it doesn't have any " characters in it. This is injected into the #comment-greeting div.</p>

<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;div style='position: static; float: left; clear: right; width: 100%; margin-bottom: 20px; margin-top: 10px;'&gt;" <br/>
	+ "&lt;div style='position: static; float: left; height: 50px; width: 60px;'&gt;"<br/>
	+ "&lt;fb:profile-pic uid=loggedinuser facebook-logo=true size=square&gt;&lt;/fb:profile-pic&gt;&lt;/div&gt;" <br/>
    + "&lt;span style='display: block;'&gt;Welcome, &lt;fb:name uid=loggedinuser useyou=false&gt;&lt;/fb:name&gt;."<br/>
	+ " You are signed in with your Facebook account." <br/>
	//this is the link for logging out of FB and MT at the same time<br/>
	+ "&nbsp;&lt;a href='#' onclick='javascript: dualLogOut();'&gt;Sign out of Facebook&lt;/a&gt;" <br/>
    + "&lt;/span&gt;&lt;span style='display: block; margin-top: 10px;'&gt;"<br/>
	+ "&lt;input type='checkbox' name='publish_feed' id='publish_feed' value='1' checked='true' /&gt;publish this comment on facebook"<br/>
    + "&lt;/span&gt;&lt;/div&gt;<br/>
</code></div>


<p>Create a new template module called <strong>'MTXFB'</strong> with the following code, making sure to update the varibles at the top. Most of them it doesn't matter what info you use, but the first one, <strong>apID</strong>, is very important. make sure you set apID to your FB connect app's API Key</p>

<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;script type="text/javascript"&gt;<br/>
&lt;!--<br/>
<br/>
var apID="yourAppIdNumber";<br/>
var xdR="&lt;$mt:StaticWebPath$&gt;plugins/FacebookCommenters/xd_receiver.html";<br/>
var BlogName="&lt;$mt:BlogName$&gt;";<br/>
var EntryTitle="&lt;$mt:EntryTitle escape='js'$&gt;";<br/>
var EntryPermalink="&lt;$mt:EntryPermalink escape='js'$&gt;";<br/>
var Description="I use a special custom tag for this";<br/>
var PostText="Read the Article"<br/>
var PromptText = "Spread the word"<br/>
var bID="&lt;$mt:blogID$&gt;";<br/>
var eID="&lt;$mt:EntryID$&gt;";<br/>
<br/>
function FBcallback(y) {<br/>
	//this is only needed because I couldn't ge the return to work inside the FB.Connect.streamPublish<br/>
   return mtCommentOnSubmit(y);<br/>
   }<br/>
   
   <br/>
function postToWall(x) {<br/>
   FB.Bootstrap.requireFeatures(["Connect", "XFBML"], function() {<br/>
      if (document.getElementById('publish_feed') !== null) {<br/>
         if (document.getElementById('publish_feed').checked == true) {<br/>
            var commentText = document.getElementById('comment-text').value; <br/>
			var attachment = {<br/>
               "name" : BlogName +": " + EntryTitle,<br/> 
			   "href" : EntryPermalink, <br/>
			   "description" : Description}; <br/>
			   var actionLinks = [ {<br/>
               "text" : PostText, <br/>
			   "href" : EntryPermalink}<br/>
            ]; <br/>
			var umPrompt = PromptText; <br/>
			//streamPublish(String user_message, Object attachment, Object action_links, String target_id, String user_message_prompt, Function callback, Boolean auto_publish, String actor_id)<br/>
            FB.Facebook.init(apID, xdR); FB.Connect.streamPublish( commentText, attachment, actionLinks, null, umPrompt, FBcallback(x) ); }<br/>
         }<br/>
      else {<br/>
         //this submits the comment to MT normally<br/>
         return mtCommentOnSubmit(x); }<br/>
      }<br/>
   );}<br/><br/>


function dualLogOut() {<br/>
   FB.Connect.logout(function() {    //this signs the user out of FB<br/>
      mtSignOut( eID ); }   //this signs the user out of MT<br/>
   );<br/>
   mtShow('comments-open-data');   //this opens the name/email comments<br/>
};<br/>
   <br/>
 function facebook_onload() {<br/><br/>

        var viewerId = FB.Connect.get_loggedInUser();<br/>
	var u = mtGetUser();<br/>
	var loggedinMT = u && u.is_authenticated ? true : false;<br/><br/>
	
	//this is the content to replace on page load, and what to replace it with.<br/>
	var user_box = document.getElementById("comment-greeting");<br/>
	user_box.innerHTML = "&lt;$mt:Include module = 'FBcomment' $&gt;";<br/><br/>
	
	
	//this hides the name/email fields<br/>
	mtHide('comments-open-data');<br/><br/>

	function autoLogin() { <br/>
		if (loggedinMT == true) {<br/>
				//if user is logged into MT already then do nothing<br/>
				return false;<br/><br/>
			
			} else {<br/><br/>
		
				function createIframe (iframeName, width, height) {<br/>
					var iframe;<br/>
					if (document.createElement && (iframe =<br/>
					document.createElement('iframe'))) {<br/>
					iframe.name = iframe.id = iframeName;<br/>
					iframe.width = width;<br/>
					iframe.height = height;<br/>
					iframe.style.border = 0+"px";<br/>
					iframe.src = 'about:blank';<br/>
					iframe.scrolling = 'no';<br/>
					document.body.appendChild(iframe);<br/>
					}<br/>
					return iframe;<br/>
				}<br/><br/>
			
				function createFbFrame () {<br/>
					//this is needed for auto login- it creates an iframe with the users FB info and then submits it<br/><br/>
					 
					 
					 var iFrameCon = "&lt;html&gt;&lt;body&gt;"<br/>
							+ "&lt;form id='facebook-signin-form' method='post' action='&lt;$mt:CGIPath$&gt;&lt;$mt:CommentScript$&gt;'&gt;"<br/>
						+ "&lt;input type='hidden' name='__mode'   value='login_external'&gt;"<br/>
						+ "&lt;input type='hidden' name='blog_id'  value='"+ bID +"'&gt;"<br/>
						+ "&lt;input type='hidden' name='entry_id' value='"+ eID +"' &gt;"<br/>
						+ "&lt;input type='hidden' name='key' value='Facebook'&gt;"<br/>
						+ "&lt;input type='hidden' name='facebook_id'   id='facebook-signin-id-input'&gt;"<br/>
						+ "&lt;input type='hidden' name='facebook_nick' id='facebook-signin-nick-input'&gt;"<br/>
						+ "&lt;input type='hidden' name='facebook_url'  id='facebook-signin-url-input'&gt;&lt;\/form&gt;"<br/>
							+ "&lt;\/body&gt;&lt;\/html&gt;"; <br/><br/>
							
					var iframe = createIframe ('fbFrame', 1, 1);<br/>
					if (iframe) {<br/>
						var iframeDoc;<br/>
						if (iframe.contentDocument) {<br/>
							iframeDoc = iframe.contentDocument;<br/>
						}<br/>
						else if (iframe.contentWindow) {<br/>
							iframeDoc = iframe.contentWindow.document;<br/>
						}<br/>
						else if (window.frames[iframe.name]) {<br/>
							iframeDoc = window.frames[iframe.name].document;<br/>
						}<br/>
						if (iframeDoc) {<br/>
							iframeDoc.open();<br/>
							iframeDoc.write(iFrameCon);<br/>
							var viewerId = FB.Connect.get_loggedInUser();<br/>
							iframeDoc.getElementById('facebook-signin-id-input').setAttribute('value', viewerId);<br/>
							iframeDoc.getElementById('facebook-signin-url-input').setAttribute('value', 'http://www.facebook.com/profile.php?id=' + viewerId);<br/>
							FB.Facebook.apiClient.users_getInfo(viewerId, ['first_name,pic_square'], function (x) {<br/>
								if (x[0] && x[0]['first_name']) {<br/>
									var nickname = x[0]['first_name'];<br/>
									iframeDoc.getElementById('facebook-signin-nick-input').setAttribute('value', nickname);<br/>
								}<br/>
							});<br/><br/>
							
							iframeDoc.getElementById('facebook-signin-form').submit();<br/><br/>
		
							iframeDoc.close();<br/>
						}<br/>
					}<br/>
				}<br/><br/>
				
				createFbFrame();<br/><br/>
			
			}<br/><br/>
		
		}<br/>
	autoLogin();<br/><br/>


   //this parses out the FB tags, it's a must have.<br/>
   FB.XFBML.Host.parseDomTree();<br/><br/>

   
	
};<br/>
//&lt;!--<br/>
&lt;/script&gt;<br/>
&lt;script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"&gt;&lt;/script&gt;<br/>

</code></div>




<p>Now open your <strong>Entry Template</strong> make the following changes:</p>

<p>change your HTML tag to &lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"&gt;</p>

<p>replace &lt;mt:GreetFacebookCommenters&gt; with  &lt;$mt:Include module="MTXFB"$&gt;</p>

<p>Add the following to the bottom of the page;</p>

<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px 10px  30px  10px; height: 100px; overflow: scroll;"><code>
&lt;script type="text/javascript"&gt;<br/>
&lt;!--<br/>
FB.init(apID,xdR, {"ifUserConnected" : facebook_onload });<br/>
//--&gt;<br/>
&lt;/script&gt;<br/>
</code></div>

<img src="http://www.gerrendesign.com/entry_images/mtxfb-ap3.jpg"  border="0" alt="" style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px;" />

<p>That should be it. MTXFB should now be working. When you commment on your site it should now bring up an FB popup like the one above. If you've liked this post, and you enjoy this script, then please pass it on. Sign into Facebook and then comeback here and leave a comment using MTXFB!</p>



      <div style="margin: 20px 0 20px 0; position: static; height: 67px; ">       
<a href="http://www.gerrendesign.com/entry_images/MTXFB.zip"><img src="http://www.gerrendesign.com/global_assets/images/download_btn.jpg" border="0" alt="download" align="left" style="margin: 0 15px 0 0; position: static; " /></a>
<p style="margin: 0; position: static; font-size: 14px; "><a href="http://www.gerrendesign.com/entry_images/MTXFB.zip">Download Xomment, <br/>Facebook Connect Commenters,<br/> and my MTXFB sample templates</a></p>
        </div>  


<div class="hint">
  <h3>Hint #3</h3>
  <p>You can override any of Facebook's CSS by adding inline CSS at the very bottom of your page.</p>
    <p>Sample:</p>
	<div style="background: #fff; border: 1px solid #cdaa65; padding: 10px; margin: 10px;"><code>
&lt;style type="text/css"&gt;<br/>
.FB_Link {color: #990000 !important;}<br/>
&lt;/style&gt;<br/>
</code></div>
</div>

							
						
						
						
						
					]]>
    </content>
</entry>

<entry>
    <title>Galvanized to paint</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/07/galvanized_to_paint.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.280</id>

    <published>2009-08-01T01:59:49Z</published>
    <updated>2009-08-01T02:56:14Z</updated>

    <summary> Over the last two years I really haven&apos;t finished much artwork. I&apos;ve been doing mostly freelance web design. This weekend though I was inspired to put my brush into action by my friend Kevin who was showing me some...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Design" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<img border="0" alt="Gerren Design | Werewolf Illustration" src="http://www.gerrendesign.com/art/lg/final_werewolf.jpg" style="padding: 25px; background: white; border: 1px solid #cdaa65;" />

<p>Over the last two years I really haven't finished much artwork. I've been doing mostly freelance web design. This weekend though I was inspired to put my brush into action by my friend Kevin who was showing me some of his work. It reminded me just how much I miss painting.</p>
]]>
        <![CDATA[
<p>So, I took one of "The One State" sketches I had finished and set to work. Now, due to the fact I haven't actually finished anything in a while, I've invited some of my old illustration friends to come and critique this painting before I officially declare it done. I've also described my process below to see if they can pick out anything I did wrong, or anything that I may have missed or skipped over.
</p>


<img border="0" alt="Gerren Design | Werewolf Sketches" src="http://www.gerrendesign.com/entry_images/IMG_0991.jpg"  />
<p>The first thing I did was dust off all of my equipment.  Literally, dust had collected on all of my brushes, and most of my India Ink had gone bad (solidified).  After cleaning everything and rushing out to replace spoiled materials I opened my watercolor tray, lucky the paints inside were still fine since I use a tray with a seal able top.</p>

<img border="0" alt="Gerren Design | Werewolf Sketches" src="http://www.gerrendesign.com/entry_images/IMG_0990.jpg"  />
<p> to start of with, I printed out a few copies of the scan I had made of the final sketch.  I used the first to copy the tight sketch onto the watercolor paper. I used the rest to make quick 10 second heat maps of the painting.  One of the things I always admired about Tony DiTerlizzi's work is his use of warm and cool colors to create form. I've tried to analysis this and apply to my own paintings.</p>


<img border="0" alt="Gerren Design | Werewolf Sketches" src="http://www.gerrendesign.com/entry_images/IMG_0989.jpg"  />
<p>Then, following another practice that I learned from Tony (via his blog), I made a warm up painting of similar content. although I was also told to do this in college I never really took it seriously until I found out my favorite artist did it all of the time. I painted it directly from a photo without prior sketching. I was focusing on what specific colors to use and what kind of brush strokes were most effective.</p>


<img border="0" alt="Gerren Design | Werewolf Sketches" src="http://www.gerrendesign.com/entry_images/IMG_0987.jpg"  />

<img border="0" alt="Gerren Design | Werewolf Sketches" src="http://www.gerrendesign.com/entry_images/IMG_0988.jpg"  />

<p>Next I filled out the entire image area with light washes of Grumbacher's Umber and Payne's Grey to make off my warm areas and cool areas.  I also did this to make sure that I wouldn't miss any small spots and leave them blank.  </p>


<img border="0" alt="Gerren Design | Werewolf Sketches" src="http://www.gerrendesign.com/entry_images/IMG_0992.jpg"  />
<p>I let that first layer dry completely and then inked in the outlines.  For the heavier outlines I used a medium sized Chinese brush and Winsor &amp; Newton India ink.  The lighter and internal lines I used Winsor &amp; Newton Sepia Calligraphy Ink with a standard crow quill pen. </p>

<p>I then started to bring the color's out more with Van Dyke Brown, Brunt Sienna, Sepia, and a touch of Ultra Marine. Once the values were just about right I started making the fur texture with a micro brush and fairly thick water color. Once the whole thing had a thick fur texture I went back in with a big brush to wash out and soften the area's of the fur's highlight.  finally, I finished up the details of the swords, the arm wraps, and the face.</p>

<p>So, what do you guys think?</p>





]]>
    </content>
</entry>

<entry>
    <title>Scud: The Disposable Assassin</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/07/scud_the_disposible_assassin.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.269</id>

    <published>2009-07-02T15:57:05Z</published>
    <updated>2009-07-02T15:06:49Z</updated>

    <summary> What is a disposable assassin? It a solid gold killer robot you buy out of a vending machine that explodes after it kills it&apos;s target. What is a comic book? It is an ongoing or encapsulate story revolving around...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Fun Stuff" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<div align="center"><img src="http://www.gerrendesign.com/entry_images/IMG_0978.gif" alt="Scud" border="0"  /></div>


<p>What is a disposable assassin?  It a solid gold killer robot you buy out of a vending machine that explodes after it kills it's target.  What is a comic book? It is an ongoing or encapsulate story revolving around a protagonist. For ten long years Scud only met the former definition. In 1994 artist Rob Schrab started Scud, but in 1997 issue number 21 ended in a cliffhanger. No further issues were printed...</p>

<p>I gave up hope, I stopped looking.</p>

<p>Then, it happened I was randomly in a comic book shop and discovered that in 2007 Rob Scharb came back to Scud, and finished the series with four final issues. I highly recommend anyone who followed this in the 90s to pick up these comics.</p>




]]>
        <![CDATA[<!--<div align="center"><img src="http://www.gerrendesign.com/entry_images/IMG_0979.jpg" alt="Scud" border="0"  /></div>-->]]>
    </content>
</entry>

<entry>
    <title>How to make custom Select Boxes</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/06/how_to_make_custom_select_boxe.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.279</id>

    <published>2009-06-28T16:23:11Z</published>
    <updated>2009-08-10T20:35:09Z</updated>

    <summary> .selectME ul { /* remove unwanted focus outlines from links */ noFocusLine: expression(this.onFocus=this.blur()) outline: none; } *.selectME:focus ul, *.selectME:focus .cornerstop { outline: none; } div.clears, span.clears { clear: both; margin: 0; padding: 0; } #arrowImg { background: transparent url(&apos;http://www.gerrendesign.com/entry_images/selectbox/arrow_down_6x3.gif&apos;)...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Design" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<style type="text/css">
.selectME ul { /* remove unwanted focus outlines from links */
 noFocusLine: expression(this.onFocus=this.blur())  outline: none;
}
*.selectME:focus ul, *.selectME:focus .cornerstop {
	outline: none;
}
div.clears, span.clears {
	clear: both;
	margin: 0;
	padding: 0;
}
#arrowImg {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/arrow_down_6x3.gif') no-repeat right center scroll;
	width: 16px;
	_width:13px;
	height:20px;
	_height: 18px;
	z-index: 10000;
	display: inline-block;
	margin:0;
	padding: 0;
}
div.selectME a:hover {
	color: red !important;
}
div.selectME div.cornerstop {
	height: 3px;
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selecttopleft_3x3.gif') top left no-repeat;
	padding: 0px 0px 0px 3px;
}
div.selectME div.cornerstop div {
	height: 3px;
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selecttopright_3x3.gif') top right no-repeat;
	padding: 0px 3px 0px 0px;
}
div.selectME div.cornerstop div div {
	height: 3px;
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selecttop_100x3.gif') top right repeat-x;
 *overflow: hidden;
}
div.selectME div.cornersbottom {
	height: 3px;
	margin:0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectbottomleft_3x3.gif') top left no-repeat;
	padding: 0px 0px 0px 3px;
}
div.selectME div.cornersbottom div {
	height: 3px;
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectbottomright_3x3.gif') top right no-repeat;
	padding: 0px 3px 0px 0px;
}
div.selectME div.cornersbottom div div {
	height: 3px;
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectbottom_100x3.gif') top right repeat-x;
 *overflow: hidden;
}
div.selectME div.middle {
	background: url('http://www.gerrendesign.com/entry_images/selectbox/selectleft_3x20.gif') top left no-repeat;
	margin: 0;
	padding: 0px 0px 0px 3px;
}
div.selectME div.middle div {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectright_3x20.gif') top right no-repeat;
	margin: 0;
	padding: 0px 3px 0px 0px;
}
div.selectME div.middle div div {
	padding: 0;
	margin:0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectmiddle_235x20.gif') top right repeat-x;
}
div.selectME div.first {
	display: block;
	line-height: normal;
	margin: 0;
	padding: 0;
	cursor: pointer;
	position: static;
	height: 18px;
 *margin-bottom: -1px;
}
div.selectME div.first span.selectME {
	float: left;
	display:block;
	font: 8pt Arial;
	line-height: 18px;
	color: #8a8a8a;
	border-right: 1px solid #d4d4d4;
	left: 4px;
	position: relative;
	margin: 0;
	white-space: nowrap;
	overflow: hidden;
}
div.selectME div.first a, div.selectME div.first a:visited {
	display:block;
	padding:0;
}
div.selectME ul {
	list-style-type:none;
	line-height: normal;
	padding:0;
	margin: 0 0 0 -3px;
	z-index: 103;
	position: absolute;
	float: left;
	clear: none;
}
div.selectME ul li {
	display:none;
	clear:left;
	margin:0;
	padding:0;
	color: #8a8a8a;
	text-align:left;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenbg_400x40.gif') repeat-x left top;
	position: static;
	float: left;
	z-index: 104;
}
div.selectME ul li a, div.selectME ul li a:visited {
	qwhite-space: nowrap;
	font: 8pt Arial;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenbgr_1x40.gif') no-repeat right top;
	color:#8a8a8a;
	text-decoration:none;
	display:block;
	padding: 4px 8px 4px 8px;
	margin: 0;
	qbackground: Red;
}
div.selectME ul li a:hover {
	background: #e8e8e8;
}
div.selectME ul li:hover {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenhoverbg_400x40.gif') repeat-x left top;
}
div.selectME ul li:hover a, div.selectME ul li:hover a:visited {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenbgr_1x40.gif') no-repeat right top;
}
div.selectME ul li.first {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenfirstbg_400x40.gif') repeat-x left top;
}
div.selectME ul li.first a:hover {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenfirsthoverbg_400x40.gif') repeat-x left top;
}
div.selectME ul li.last {
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenlastbg_400x40.gif') repeat-x left bottom;
}
div.selectME ul li.last a {
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenlastbgr_3x40.gif') no-repeat right bottom;
}
div.selectME ul li.last a span {
	margin: 0;
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopensepa_400x1.gif') repeat-x top left;
}
div.selectME ul li.last:hover {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenlasthoverbg_400x40.gif') repeat-x left bottom;
}
div.selectME ul li.last:hover a {
	background: transparent url('http://www.gerrendesign.com/entry_images/selectbox/selectopenlasthoverbgr_3x40.gif') no-repeat right bottom;
}
</style>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
// first locate all of the select tags on the page and hide them
$("select.changeMe").css('display','none');
//now, for each select box, run this function
$("select.changeMe").each(function(){
	
	var curSel = $(this);
	// get the CSS width from the original select box
	var gddWidth = $(curSel).css('width');
	var gddWidthL = gddWidth.slice(0,-2);
	var gddWidth2 = gddWidthL - 28;
	var gddWidth3 = gddWidthL - 16;
	// build the new div structure
	var gddTop = '<div style="width:' + gddWidthL + 'px" class="selectME" tabindex="0"><div class="cornerstop"><div><div></div></div></div><div class="middle"><div><div><div>';
	//get the default selected option
	var whatSelected = $(curSel).children('option:selected').text();
	//write the default
	var gddFirst = '<div class="first"><span class="selectME gselected" style="width:'+ gddWidth2 +  'px;">'+ whatSelected +'</span><span id="arrowImg"></span><div class="clears"></div></div><ul class="selectME">';
	// create a new array of div options from the original's options
	var addItems = new Array();      
	$(curSel).children('option').each( function() {           
		var text = $(this).text();  
		var selVal = $(this).attr('value'); 
		var before =  '<li style="width:' + gddWidthL + 'px;"><a href="#" rel="' + selVal + '" tabindex="0"  style="width:' + gddWidth3 + 'px;">';
		var after = '</a></li>';           
		addItems.push(before + text + after);
	});
	//hide the default from the list of options 
	var removeFirst = addItems.shift();
	// create the end of the div selectbox and close everything off
	var gddBottom ='</ul></div></div></div></div><div class="cornersbottom"><div><div></div></div></div></div>'
	//write everything after each selectbox
	var GDD = gddTop + gddFirst + addItems.join('') + gddBottom;
	$(curSel).after(GDD);
	//this var selects the div select box directly after each of the origials
	var nGDD = $(curSel).next('div.selectME');
	
	$(nGDD).find('li:first').addClass("first");
	
	$(nGDD).find('li:last').addClass('last');
	//handle the on click functions - push results back to old text box
	$(nGDD).click( function(e) {
		 var myTarA = $(e.target).attr('rel');
		 var myTarT = $(e.target).text();
		 var myTar = $(e.target);
		 //if closed, then open
		 if( $(nGDD).find('li').css('display') == 'none')
			{
					//this next line closes any other selectboxes that might be open
					$('div.selectME').find('li').css('display','none');
					$(nGDD).find('li').css('display','block');
					
					//if user clicks off of the div select box, then shut the whole thing down
					$(document.window || 'body').click( function(f) {
							var myTar2 = $(f.target);
							if (myTar2 !== nGDD) {$(nGDD).find('li').css('display','none');}
					});
							return false;
			}
			else
			{      
					if (myTarA == null){
						$(nGDD).find('li').css('display','none');
								return false;
							}
							else {
								//set the value of the old select box
								$(curSel).val(myTarA);
								//set the text of the new one
								 $(nGDD).find('span.gselected').text(myTarT);
								 $(nGDD).find('li').css('display','none');
								 return false;
							}
			}
	//handle the tab index functions
	 }).focus( function(e) {        
	 	        

		 $(nGDD).find('li:first').addClass('currentDD');
		 $(nGDD).find('li:last').addClass('lastDD');
		 function checkKey(e){
			//on keypress handle functions
			function moveDown() {
				var current = $(nGDD).find('.currentDD:first');
				var next = $(nGDD).find('.currentDD').next();
				if ($(current).is('.lastDD')){
				return false;
				} else {
					$(next).addClass('currentDD');
					$(current).removeClass('currentDD');
				}
			}
			function moveUp() {
				var current = $(nGDD).find('.currentDD:first');
				var prev = $(nGDD).find('.currentDD').prev();
				if ($(current).is('.first')){
				return false;
				} else {
					$(prev).addClass('currentDD');
					$(current).removeClass('currentDD');
				}
			}
			var curText = $(nGDD).find('.currentDD:first').text();
			var curVal = $(nGDD).find('.currentDD:first a').attr('rel');
		   switch (e.keyCode) {
				case 40:
					$(curSel).val(curVal);
					$(nGDD).find('span.gselected').text(curText);
					moveDown();
					return false;
					break;
				case 38:
					$(curSel).val(curVal);
					$(nGDD).find('span.gselected').text(curText);
					moveUp();
					return false;
					break;
				case 13:
					$(nGDD).find('li').css('display','none');
					}     
		}
		$(document).keydown(checkKey);	
	}).blur( function() {
			$(document).unbind('keydown');
	});
});
});
</script>
<p>Making forms look good is often one of the most challenging parts of being a web designer.  Select boxes specifically are very difficult. They look completely different in different browsers. Lucky, there are plenty of ways to replace them with hidden input fields. However, recently I've had to deal with 3rd party custom tags that generate dynamic select boxes. The only way to style these is by allowing them to load and then use the DOM to manipulate or replace them.  I couldn't find any example of his online, so I was forced to figure out how to do it myself.  I hope the code below will help someone else out.</p>
<p>Sample:</p>
<table>
  <tr>
    <td><select name="cars" style="width: 150px;">
        <option value="" selected="selected">please choose one</option>
        <option value="volvo">Volvo</option>
        <option value="saab">Saab</option>
        <option value="mercedes">Mercedes</option>
        <option value="audi">Audi</option>
      </select>
    </td>
    <td><select name="names" class="changeMe" style="width: 150px;">
        <option value="" selected="selected">please choose one</option>
        <option value="john">John</option>
        <option value="hiro">Hiro</option>
        <option value="shari">Shari</option>
        <option value="Amy">Amy</option>
      </select>
    </td>
  </tr>
</table>
<p>The code:</p>
<textarea  style="width: 650px; height: 300px;">

$(document).ready(function(){
// first locate all of the select tags on the page and hide them
$("select.changeMe").css('display','none');
//now, for each select box, run this function
$("select.changeMe").each(function(){
	
	var curSel = $(this);
	// get the CSS width from the original select box
	var gddWidth = $(curSel).css('width');
	var gddWidthL = gddWidth.slice(0,-2);
	var gddWidth2 = gddWidthL - 28;
	var gddWidth3 = gddWidthL - 16;
	// build the new div structure
	var gddTop = '<div style="width:' + gddWidthL + 'px" class="selectME" tabindex="0"><div class="cornerstop"><div><div></div></div></div><div class="middle"><div><div><div>';
	//get the default selected option
	var whatSelected = $(curSel).children('option:selected').text();
	//write the default
	var gddFirst = '<div class="first"><span class="selectME gselected" style="width:'+ gddWidth2 +  'px;">'+ whatSelected +'</span><span id="arrowImg"></span><div class="clears"></div></div><ul class="selectME">';
	// create a new array of div options from the original's options
	var addItems = new Array();      
	$(curSel).children('option').each( function() {           
		var text = $(this).text();  
		var selVal = $(this).attr('value'); 
		var before =  '<li style="width:' + gddWidthL + 'px;"><a href="#" rel="' + selVal + '" tabindex="0"  style="width:' + gddWidth3 + 'px;">';
		var after = '</a></li>';           
		addItems.push(before + text + after);
	});
	//hide the default from the list of options 
	var removeFirst = addItems.shift();
	// create the end of the div selectbox and close everything off
	var gddBottom ='</ul></div></div></div></div><div class="cornersbottom"><div><div></div></div></div></div>'
	//write everything after each selectbox
	var GDD = gddTop + gddFirst + addItems.join('') + gddBottom;
	$(curSel).after(GDD);
	//this var selects the div select box directly after each of the origials
	var nGDD = $(curSel).next('div.selectME');
	
	$(nGDD).find('li:first').addClass("first");
	
	$(nGDD).find('li:last').addClass('last');
	//handle the on click functions - push results back to old text box
	$(nGDD).click( function(e) {
		 var myTarA = $(e.target).attr('rel');
		 var myTarT = $(e.target).text();
		 var myTar = $(e.target);
		 //if closed, then open
		 if( $(nGDD).find('li').css('display') == 'none')
			{
					//this next line closes any other selectboxes that might be open
					$('div.selectME').find('li').css('display','none');
					$(nGDD).find('li').css('display','block');
					
					//if user clicks off of the div select box, then shut the whole thing down
					$(document.window || 'body').click( function(f) {
							var myTar2 = $(f.target);
							if (myTar2 !== nGDD) {$(nGDD).find('li').css('display','none');}
					});
							return false;
			}
			else
			{      
					if (myTarA == null){
						$(nGDD).find('li').css('display','none');
								return false;
							}
							else {
								//set the value of the old select box
								$(curSel).val(myTarA);
								//set the text of the new one
								 $(nGDD).find('span.gselected').text(myTarT);
								 $(nGDD).find('li').css('display','none');
								 return false;
							}
			}
	//handle the tab index functions
	 }).focus( function(e) {        
	 	        

		 $(nGDD).find('li:first').addClass('currentDD');
		 $(nGDD).find('li:last').addClass('lastDD');
		 function checkKey(e){
			//on keypress handle functions
			function moveDown() {
				var current = $(nGDD).find('.currentDD:first');
				var next = $(nGDD).find('.currentDD').next();
				if ($(current).is('.lastDD')){
				return false;
				} else {
					$(next).addClass('currentDD');
					$(current).removeClass('currentDD');
				}
			}
			function moveUp() {
				var current = $(nGDD).find('.currentDD:first');
				var prev = $(nGDD).find('.currentDD').prev();
				if ($(current).is('.first')){
				return false;
				} else {
					$(prev).addClass('currentDD');
					$(current).removeClass('currentDD');
				}
			}
			var curText = $(nGDD).find('.currentDD:first').text();
			var curVal = $(nGDD).find('.currentDD:first a').attr('rel');
		   switch (e.keyCode) {
				case 40:
					$(curSel).val(curVal);
					$(nGDD).find('span.gselected').text(curText);
					moveDown();
					return false;
					break;
				case 38:
					$(curSel).val(curVal);
					$(nGDD).find('span.gselected').text(curText);
					moveUp();
					return false;
					break;
				case 13:
					$(nGDD).find('li').css('display','none');
					}     
		}
		$(document).keydown(checkKey);	
	}).blur( function() {
			$(document).unbind('keydown');
	});
});
});

</textarea>
<div style="background:#d2d1bb; padding: 10px; margin-top: 25px;">
  <h2>Update</h2>
  <p>8-4-2009</p>
  <p>I've made a few improvements to the script based on user feed back and created a demo that you can now download;<br/>
    <br/>
    <a href="http://www.gerrendesign.com/entry_images/selectboxdemo.zip">Download the Jquery Select Box Demo</a></p>
</div>
]]>
        
    </content>
</entry>

<entry>
    <title>Sherlock Holmes Movie</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/05/post.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.276</id>

    <published>2009-05-20T20:05:49Z</published>
    <updated>2009-05-23T20:19:51Z</updated>

    <summary></summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/tOr4i-wbH-M&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/tOr4i-wbH-M&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>]]>
        
    </content>
</entry>

<entry>
    <title>The Sultan of Gamers</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/05/the_sultan_of.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.270</id>

    <published>2009-05-19T19:13:42Z</published>
    <updated>2009-05-18T16:20:20Z</updated>

    <summary> It&apos;s so beautiful...I&apos;m speechless. As a life long geek I can tell you one of the most difficult issues to deal with is &quot;where are we going to play?&quot;. It seems like there is never enough space, and dinning...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Fun Stuff" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<div align="center"><img src="http://www.geekchichq.com/Co_Store/The_Showroom/The_Sultan/files/stacks_image_148_1.png" alt="Sultan Game Table" border="0"  /></div>

<p>It's so beautiful...I'm speechless. As a life long geek I can tell you one of the most difficult issues to deal with is "where are we going to play?". It seems like there is never enough space, and dinning room tables just don't cut it.  They are always too high, or too low, and dice are always getting lost underneath them. You always have a mess of papers and book in front of you that ends up cluttering up the game area. Plus, drinks end up getting spilled all over the place. Finally, someone came up with a brilliant and tasteful way to alleviate these issues.</p>

<p>Built in desk stations, book shelves, slide out cup holders, built in dice towers and channels, fig. storage chambers,  pencil and dice corals...  And last but not least, an enormous dropped playing table that is transparent so you can draw on it with dry erase markers and not screw up you maps below it. *sigh* if only I had the space to put it somewhere I might consider buying one. Despite it's over-whelming price tag of $8,000+</p>

<p>You can learn more about the Sultan Gaming table at <A href="
http://www.geekchichq.com/Co_Store/The_Showroom/The_Sultan/The_Sultan.html">GeekChicHQ.com</a>, or click on read more to see a brief video showing the features of the Sultan Gaming Table.</p>]]>
        <![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Jgwg5779i0M&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/Jgwg5779i0M&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>]]>
    </content>
</entry>

<entry>
    <title>Heffer-Weizen</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/05/heffer-weizen.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.273</id>

    <published>2009-05-14T21:09:59Z</published>
    <updated>2009-05-15T18:50:32Z</updated>

    <summary>Recently my co-worker Chris and I were discussing the finer points of brewing your own beer. He asked me to help him come up with a label for his beer bottles. I didn&apos;t have a lot of time to work...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Design" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p>Recently my co-worker Chris and I were discussing the finer points of brewing your own beer. He asked me to help him come up with a label for his beer bottles. I didn't have a lot of time to work on it, just 20 minutes, but this is what we came up with: </p>

<p><img src="http://www.gerrendesign.com/entry_images/hajjar.jpg" alt="GerrenDesign | Heffer-Weizen" border="0" /></p>

<p>And now, a toast to two-headed cows everywhere...</p>]]>
        
    </content>
</entry>

<entry>
    <title>Breaking Bad</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/05/breaking_bad.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.262</id>

    <published>2009-05-14T21:07:04Z</published>
    <updated>2009-05-14T21:09:45Z</updated>

    <summary> I started watching this show a few weeks ago, one night I couldn&apos;t sleep and watched the latest 3 episodes. Since then I&apos;ve become completely addicted. The story is about a high school chem teacher who finds out that...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Fun Stuff" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p><embed src="http://c.brightcove.com/services/viewer/federated_f8/1119352258" bgcolor="#FFFFFF" flashVars="videoId=11902884001&playerId=1119352258&viewerSecureGatewayURL=https://console.brightcove.com/services/amfgateway&servicesURL=http://services.brightcove.com/services&cdnURL=http://admin.brightcove.com&domain=embed&autoStart=false&" base="http://admin.brightcove.com" name="flashObj" width="440" height="373" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></p>

<p>I started watching this show a few weeks ago, one night I couldn't sleep and watched the latest 3 episodes. Since then I've become completely addicted. The story is about a high school chem teacher who finds out that he is quickly dieing of lung cancer. He quickly realizes that he'll be leaving his family behind with nothing. So, in an effort to make some money to leave them when he dies he starts secretly cooking Meth. Which he sells with his partner, a former student of his.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Mike&apos;s Wedding</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/05/mikes_wedding.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.261</id>

    <published>2009-05-11T10:05:56Z</published>
    <updated>2009-05-11T10:14:36Z</updated>

    <summary> Download all of the photos: Mikes Wedding...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p><img src="http://www.gerrendesign.com/entry_images/IMG_0910.jpg" border="0" alt=""  /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0915.jpg" border="0" alt=""  /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0895.jpg" border="0" alt=""  /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0927.jpg" border="0" alt=""  /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0963.jpg" border="0" alt=""  /></p>

<p><br />
<p>Download all of the photos: <a href="http://www.gerrendesign.com/entry_images/MikeRebeckahWedding.zip">Mikes Wedding</a></p></p>]]>
        
    </content>
</entry>

<entry>
    <title>Swine Flu</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/04/swine_flu.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.260</id>

    <published>2009-04-30T21:08:22Z</published>
    <updated>2009-04-30T21:22:16Z</updated>

    <summary> I haven&apos;t really been paying attention to this news story, even though I&apos;m sure that I should be. After all two kids on the same train line as me have confirmed cases of Swine Flu. Then again... I didn&apos;t...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p></p>

<p><img src="http://daddytypes.com/archive/lipstuck_on_a_pig.jpg" alt="" border="" /></p>

<p>I haven't really been paying attention to this news story, even though I'm sure that I should be. After all two kids on the same train line as me have confirmed cases of Swine Flu. Then again... I didn't die from SARS, the Bird Flu, or West Nile. I guess the guys over at the CDC are good at their jobs.</p>]]>
        
    </content>
</entry>

<entry>
    <title>RSS feed test</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/04/rss_feed_test.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.259</id>

    <published>2009-04-21T17:56:26Z</published>
    <updated>2009-04-21T18:00:33Z</updated>

    <summary>lets find out....</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p>lets find out.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The Final Level Up</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/04/the_final_level_up.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.254</id>

    <published>2009-04-09T17:54:42Z</published>
    <updated>2009-04-20T15:09:50Z</updated>

    <summary>Dave Arneson, lesser known co-creator of D&amp;D, died today. He and Gary Gygax invented the first true role-playing game &quot;Dungeons and Dragons&quot; back in the early 70s. D&amp;D had a huge influence on my life as a kid, and on...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p>Dave Arneson, lesser known co-creator of D&D, died today. He and Gary Gygax invented the first true role-playing game "Dungeons and Dragons" back in the early 70s. D&D had a huge influence on my life as a kid, and on my artwork as an adult. Bruce Baugh wrote an <a href="http://www.tor.com/index.php?option=com_content&view=blog&id=21806">article about it here</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>New Sketches</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/04/new_skteches.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.250</id>

    <published>2009-04-07T16:33:56Z</published>
    <updated>2009-04-08T16:37:11Z</updated>

    <summary>If you haven&apos;t noticed already, I&apos;ve been posting new sketches lately. They are all from a huge new project I&apos;m working on. I can&apos;t go into the details of it much, but but keep tuned. I&apos;m producing some of my...</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Design" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p>If you haven't noticed already, I've been posting new sketches lately.  They are all from a huge new project I'm working on. I can't go into the details of it much, but but keep tuned. I'm producing some of my best artwork to date and I'll be posting it all as it develops.  Just keep an eye on the drawing board on my homepage, or visit <a href="http://www.gerrendesign.com/illustration/index.php">my portfolio</a> section to see it all.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The Creative Process</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/03/the_creative_process.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.196</id>

    <published>2009-03-15T17:03:43Z</published>
    <updated>2009-03-15T17:23:08Z</updated>

    <summary></summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Design" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/kGGvAYdCYr8"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/kGGvAYdCYr8" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>]]>
        
    </content>
</entry>

<entry>
    <title>Weekend in Hungary</title>
    <link rel="alternate" type="text/html" href="http://www.gerrendesign.com/weblog/2009/03/weekend_in_hungary_1.php" />
    <id>tag:www.gerrendesign.com,2009:/weblog//1.245</id>

    <published>2009-03-09T09:35:41Z</published>
    <updated>2009-03-10T03:55:43Z</updated>

    <summary> Despite that I just called everyone on Skype that will read this, I&apos;m going to write it down anyway...you know for posterity or something. This weekend wasn&apos;t bad. Work has been frustrating and I&apos;ve really missed Shari a lot....</summary>
    <author>
        <name>Gerren</name>
        
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.gerrendesign.com/weblog/">
        <![CDATA[<p><img src="http://www.gerrendesign.com/entry_images/IMG_0716.jpg" border="0" alt="" align="left" style="margin-right: 10px; margin-bottom: 10px;" /></p>

<p>Despite that I just called everyone on Skype that will read this, I'm going to write it down anyway...you know for posterity or something. This weekend wasn't bad. Work has been frustrating and I've really missed Shari a lot. Most of this trip has been a real pain in the butt, but at least the weather cleared up and I got to walk around a bit. </p>

<p>Saturday Derek and I went to the museum of fine arts in Hero Square. I got to see one of my favorite El Greco paintings, and a great Gustave Moreau exhibit. I realize not everyone knows what I'm talking about (dad), so I posted some pictures below.</p>]]>
        <![CDATA[<p><img src="http://www.gerrendesign.com/entry_images/salome-tattooed-L.jpg" border="0" alt="" /><p>Salome Tattooed by Gustave Moreau. It's really hard to tell from this, but all of those white lines look like alchemic symbols floating in the air. It gives the whole painting the feeling of being "tattooed".</p></p>

<p><img src="http://www.gerrendesign.com/entry_images/el_greco_painting.jpg" border="0" alt="" /><p>El Greco (the Greek's) The Disrobing of Christ. Again, the tiny rinky-dink photo I've posted doesn't do the painting justice. The reflections on the knight's armor are amazing, and Jesus has these eyes that make him look truly beatific.</p></p>

<p>We also saw some really cool mummified Egyptian crocodiles in the Egyptian section of the museum. Neither Derek nor I knew that the Egyptian"s did that. It's amazing what you can learn by looking at what people have robbed from graves.</p>

<p>after that we really were feeling pretty beat and took the rest of the afternoon off. I snapped a few pictures on the way back.</p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0710.jpg" border="0" alt="" /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0711.jpg" border="0" alt="" /></p>

<p>That night we went out on a pub crawl with a few friends from work. We met up with Miklos, Barbie, Adam, Gerzson, and Barbie's husband Dave. I didn't take an photos of that night, sorry. Sometimes it's better just to do it than to worry about trying to remember it. Miklos is a really cool guy, he's funny, interested in beer brewing, and knows all of the good communist bars in Budapest (apparently not a joke). I told him that the next time he is in the states I'd take him out to the Sunset Grill. Maybe we can go through a few hundred of the beers they have on tap.</p>

<p>Eventually Derek and Miklos took off and the rest of us made it to a place called "instant" that had a cool looking dance floor in the basement. It looked kind of like a disco version of the inside of an old castle.  Actually, if you have ever seen "An American werewolf in Paris", it looks like the club in the beginning of the movie; except no werewolves... or Neo-Nazi... it's a weird movie. Anyway, even though I thought it looked cool on the inside, the lights started to make me feel sick. Damn strobes get me every time. Luckily, we didn't stay there long and I made it safely back to the hotel around 3:30 am.  </p>

<p>I didn't get much sleep that night because I had to get early on Sunday morning. Derek and I had agreed the night prior to go to church the next day. Church really isn't my thing anymore, but Derek goes every Sunday and I felt obliged to go with him. He is my friend after all.</p>

<p>It was all wasted effort on my part though. Derek failed to wake early himself and we kind of missed our window of opportunity.  </p>

<p>With no real plans for the day in mind we sat down in front of a tourist map of the city and looked for anything that interested us. I pointed out the Museum of Military History on the other side of the river and suggested that we go there. Derek thought it was interesting too so we headed out on foot.</p>

<p>On the way we passed by St. Stephen's Basilica. We took the chance to photograph it again. I had taken a few shot of it the last time I was here, but it was at night. This time, the doors were open and we went in for a look around.</p>
<img src="http://www.gerrendesign.com/entry_images/IMG_0719.jpg" border="0" alt="" />

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0725.jpg" border="0" alt="" /><br />
<p>outside above, inside below.</P><br />
<img src="http://www.gerrendesign.com/entry_images/IMG_0731.jpg" border="0" alt="" /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0732.jpg" border="0" alt="" /><br />
<p>I lit a candle for my Grandmother who is fighting cancer. I'm not sure if my prayer's will get answered, but I know that praying will make her feel better.</p></p>

<p></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0752.jpg" border="0" alt="" /><p>After that we discovered this guy in the Square nearby. He looks remarkable close to a drawing I drew only a week before. Except for the hat in the drawing that is...but  now that I've seen this guy I might redraw it to match.</p><br />
<img src="http://www.gerrendesign.com/entry_images/IMG_0755.jpg" border="0" alt="" /><br />
<p>I have no idea who this guy is...he just jumped into the photo and gave a big smile. Maybe he's drunk? I don't know.</p><br />
<p>Eventually we made it up the hill to the castle that I posted photos of last time. I took a bunch of photo's here, but I'm not going to post them all until later on. Here are a few highlights:</p></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0765.jpg" border="0" alt="" /><br />
<p>The view from the bridge.</p></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0787.jpg" border="0" alt="" /><br />
<p>A guy wary of the Falcon next to him.</p><br />
<img src="http://www.gerrendesign.com/entry_images/IMG_0790.jpg" border="0" alt="" /><br />
<p>Derek goofing off.</p><br />
<img src="http://www.gerrendesign.com/entry_images/IMG_0795.jpg" border="0" alt="" /><br />
<p>A cool statue.</p><br />
<img src="http://www.gerrendesign.com/entry_images/IMG_0800.jpg" border="0" alt="" /><br />
<p> the view from the other side of the castle.</p></p>

<p>Then we made it to the Military Museum and I took a lot of photo reference for The One State.</P> 

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0834.jpg" border="0" alt="" /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0845.jpg" border="0" alt="" /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0851.jpg" border="0" alt="" /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0869.jpg" border="0" alt="" /></p>

<p><img src="http://www.gerrendesign.com/entry_images/IMG_0879.jpg" border="0" alt="" /></p>

<p>After that we went and got food, then went back to the hotel. I took a nap for a while because the jet lag was still bugging me. Around 9ish derek came over to my room and we watched "Robinhood: Prince of Thieves" on my laptop since we were both bored and too tired to go out. </p>

<p>That's all folks. I've been back to work since.</p>]]>
    </content>
</entry>

</feed>
