<?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>geedew &#187; JavaScript</title>
	<atom:link href="http://www.geedew.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geedew.com</link>
	<description>flirting with the accessible web</description>
	<lastBuildDate>Wed, 13 Apr 2011 22:46:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Advanced button theming on jQuery UI Dialog</title>
		<link>http://www.geedew.com/2010/06/10/advanced-button-theming-on-jquery-ui-dialog/</link>
		<comments>http://www.geedew.com/2010/06/10/advanced-button-theming-on-jquery-ui-dialog/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 15:23:23 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.geedew.com/?p=200</guid>
		<description><![CDATA[There is a very annoying bugfeature that I have found when using jQueryUI. It&#8217;s not the themes, they work great, in fact, they are the best thing since sliced bread. But in a &#8216;Cupertino.esc&#8217; way, they provide too much simplicity (&#8230;)</p><p><a href="http://www.geedew.com/2010/06/10/advanced-button-theming-on-jquery-ui-dialog/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>	There is a very annoying <del datetime="2010-06-10T14:54:13+00:00">bug</del>feature that I have found when using jQueryUI.  It&#8217;s not the themes, they work great, in fact, they are the best thing since sliced bread.  But in a &#8216;Cupertino.esc&#8217;  way, they provide too much simplicity over the functionality that I require.  This post aims to solve that in a <em>progressive enhancement</em> sorta way.  I am using jQuery 1.4.2. with jQuery UI 1.8.2, it doesn&#8217;t matter what theme  you use with this, but I prefer <em>redmond</em>.</p>
<p><span id="more-200"></span>
<p>
	Let&#8217;s take a look at the core issue.  Here is what a typical dialog looks like in jQueryUI 1.8.2 with some nice buttons.</p>
<div id="attachment_203" class="wp-caption aligncenter" style="width: 310px"><a rel="attachment wp-att-203" href="http://www.geedew.com/2010/06/10/advanced-button-theming-on-jquery-ui-dialog/screen-capture-1/"><img class="size-medium wp-image-203" title="Typical 'Redmond' jQueryUI Dialog" src="http://www.geedew.com/wordpress/wp-content/uploads/2010/06/screen-capture-1-300x191.png" alt="Typical 'Redmond' jQueryUI Dialog" width="300" height="191" /></a><p class="wp-caption-text">Perfect example of a jQueryUI Dialog</p></div>
<p>
	Here&#8217;s the simple code for this.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;article id=&quot;dialogs&quot;&gt;
	&lt;a href=&quot;javascript: void(null);&quot; id=&quot;dialogbutton&quot;&gt;Open Dialog&lt;/a&gt;
	&lt;div title=&quot;this is my test this is my test this is my test this is my test&quot; id=&quot;dialogtest&quot;&gt;
	This is a div dialog test. This is a div dialog test. This is a div dialog test. This is a div dialog test. This is a div dialog test.
	&lt;/div&gt;
&lt;/article&gt;
</pre>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
	$(document).ready(function() {
		/* Create a dialog */
		$(&quot;#dialogtest&quot;).dialog({
                        title: &quot;Alert!&quot;,
			modal: true,
			buttons: {
				&quot;Ok&quot;: function() {
					$(this).dialog(&quot;close&quot;);
				},
				&quot;Cancel&quot;: function() {
					$(this).dialog(&quot;close&quot;);
				}
			}
		});

		/* Add Dialog Button Functionality */
		$('#dialogbutton').click(function(){
			$('#dialogtest').dialog('open');
			return false;
		});
	});

&lt;/script&gt;
</pre>
<p>	That&#8217;s really great, I mean that code is so small and yet you can get such a great looking item out of it.  So how can I have a problem with that? Well let me tell you how the buttons are made, you have a name and then you have that name point to a function.  The name is the text of the button, the function is the action of the button.  And that&#8217;s it. Period.</p>
<p>
	Now, I find it great that I can use these simplistic featuresets and get &#8216;get by&#8217; but normally my &#8220;Cancel don&#8217;t ever touch me button&#8221; is the color red(ish) while my &#8220;Oh you need to hit me to move on&#8221; button is the color green(ish).  But you cannot do that (easily) with this current setup.  In fact it&#8217;s very sloppy to force this setup into doing that and it ends up using a great amount of code just to do one thing, add a class.</p>
<p>
	To solve this, I did what any self respecting JavaScript ninja would do, <del datetime="2010-06-10T14:23:34+00:00">I said goodbye to jQuery UI</del> I opened up the source code and took a peek, found out where I could attack (fix) the code and I did it.<br />
        So before I show you the code, I will show you how I decided buttons should/could be made.  My process is 100% backward compatible, yet more difficult and easier to mess up (the original goal of jQueryUI was obviously to make it as simple as possible).</p>
<p>	Buttons with my code changes can now be made like this</p>
<pre class="brush: jscript; title: ; notranslate">
buttons: {
	&quot;Ok&quot;:  function() {
		$(this).dialog(&quot;close&quot;);
	},
	&quot;Cancel&quot;: {
		action : function() {
			$(this).dialog(&quot;close&quot;);
		},
		type : &quot;cancel&quot;
	}
</pre>
<pre class="brush: css; title: ; notranslate">
/* This is poor CSS by design to be simple and readable */
 div.ui-dialog-buttonpane button.cancel { background:none; border:0px none;color:red; }
</pre>
<p>	and the old way of doing it will still work just fine as well.</p>
<p>	I&#8217;ve gone ahead and added a few features, namely it is now name-points-to-object instead of the old name-points-to-function mentality.  This object has two attributes: action and type.  Action is the old function() that was pointed to and it will be called when this button is clicked. Type is the new feature on the block, it&#8217;s just a CSS class that is added to the function using jQuery.addClass.  I&#8217;ve tried to keep is simple, and at the same time, make it robust and backward compatible.  Here&#8217;s a simple change that is possible using this feature.</p>
<p><a rel="attachment wp-att-210" href="http://www.geedew.com/2010/06/10/advanced-button-theming-on-jquery-ui-dialog/screen-capture-2/"><img class="aligncenter size-medium wp-image-210" title="What jQuery UI dialog buttons should be able to do" src="http://www.geedew.com/wordpress/wp-content/uploads/2010/06/screen-capture-2-300x203.png" alt="A jQuery UI with different colored buttons" width="300" height="203" /></a>
<p>
	Now my dialogs can look like this when I want them to.  This is a big usability thing (make the buttons descriptive, not just in text but in color/design and function).</p>
<p>	So the secret sauce to all of this is actually an extension of the jQueryUI 1.8.2 Dialog code (more like rewrite of some of the code).  This code can only be ran AFTER jQueryUI 1.8.2 has been created, otherwise you will get an error.  I placed this code into the jQueryUI 1.8.2 custom.js file itself for easy keeping; just drop it at the bottom of the file.</p>
<pre class="brush: jscript; title: ; notranslate">
/* TorchUI dialog button fix */
(function($) {
	var _createButtons = $.ui.dialog.prototype._createButtons;
	$.ui.dialog.prototype._createButtons = function(buttons) {
		var self = this,
		hasButtons = false,
		uiDialogButtonPane = $('&lt;div&gt;&lt;/div&gt;')
			.addClass(
				'ui-dialog-buttonpane ' +
				'ui-widget-content ' +
				'ui-helper-clearfix'
			);
		// if we already have a button pane, remove it
		self.uiDialog.find('.ui-dialog-buttonpane').remove();

		if (typeof buttons === 'object' &amp;&amp; buttons !== null) {
			$.each(buttons, function() {
				return !(hasButtons = true);
			});
		}
		if (hasButtons) {
			$.each(buttons, function(name, fn) {
                        /* Begin the code change here */
			// Check to see if fn is being passed in as a funciton, assume it's an object if not.
			 	if(!$.isFunction(fn)) {
			 		var buttonclass=fn.type;var func=fn.action; }
			 	else {
			 		var func=fn; var buttonclass=&quot;&quot;; }
				var button = $('&lt;button type=&quot;button&quot;&gt;&lt;/button&gt;')
					.text(name)
				/* Add a class to the button, if there is a class */
					.addClass(buttonclass)
					.click(function() { func.apply(self.element[0], arguments); })
					.appendTo(uiDialogButtonPane);
				if ($.fn.button) {
					button.button();
				}
			});
			uiDialogButtonPane.appendTo(self.uiDialog);
		}
	}
})(jQuery);
</pre>
<p>	If you have questions, please respond, I promise not to take them personally <img src='http://www.geedew.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2010/06/10/advanced-button-theming-on-jquery-ui-dialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery UI Dialog Accessibility</title>
		<link>http://www.geedew.com/2010/02/25/jquery-ui-dialog-accessibility/</link>
		<comments>http://www.geedew.com/2010/02/25/jquery-ui-dialog-accessibility/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 02:52:17 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[508]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[BugFix]]></category>
		<category><![CDATA[Defects]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.geedew.com/?p=185</guid>
		<description><![CDATA[jQuery UI is an amazing product. It&#8217;s not because it offers the best features, or that it offers the best solution, it&#8217;s that it offers a large degree of support for years to come. Which is saying a lot for (&#8230;)</p><p><a href="http://www.geedew.com/2010/02/25/jquery-ui-dialog-accessibility/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>    jQuery UI is an amazing product.  It&#8217;s not because it offers the best features, or that it offers the best solution, it&#8217;s that it offers a large degree of support for years to come.  Which is saying a lot for something that is nothing more than JavaScript.  It&#8217;s certainly something that many enterprises have begun to look at and look for in the development world.  At my job at Coventry Healthcare, I&#8217;m responsible for the User Interfaces and generally the User Experience across some very highly visible web applications.  One of the most recent developments in our line of business is the risk of not having an accessible site (we fall under Section 508 guidelines because of our Medicare/Medicaid users).  jQuery UI has literally allowed me to very easily create and maintain large amounts of code so that I can spend more time making sure that it follows WCAG 2.0 and WARIA (which should cover us for S508).<span id="more-185"></span>
</p>
<p class="entry-text">So recently I discovered a very nasty bug dealing with jQuery UI dialog (withe modal:true) widgets that seems to only occur in Internet Explorer.  It goes like this:  If you are using a dialog with a screen reader, your main mode of navigation is with the keyboard.  This is typically driven via the focus on elements.  In jQuery, focus is demanded on the dialog because of the modal command.  You are unable to focus on anything other than the dialog and it&#8217;s elements.  Here&#8217;s the issue however, jQuery successfully  can keep focus on the dialog in all browsers tested (FF, Safari, Chrome) so that the focus cannot leave the dialog.  However in Internet Explorer (6, 7 and 8 ) your focus can get to the address bar, simply by tabbing to it.  Once in the address bar, jQuery is no longer able to track and handle the focus, so inevitable, after tabbing through the menu, focus come back to the window.  But instead of going to the dialog, it goes to the first element that can be tabbed to, which is undoubtedly BEHIND the modal dialog.  jQuery, subsequently locks the tabbing at this point, most likely because you have focus on and element that is unable to be focused (in jQuery&#8217;s dialog algorithm).
</p>
<p class="entry-text">So I cannot have this as that would literally cut 75% of my users from being able to use just a keyboard with the sites I&#8217;m maintaining.  So I had to find a solution.  First, IE seems to be the only browser with this issue and it has something to do with the fact that the focus moves out of the DOM&#8217;s control (out of jQuery&#8217;s control).  But the focus would always at least get back to the first element that could be tabbed to, and then lock.  So I devised a plan.  What if the first element, when focused, looks for an open dialog and if it is there, focuses on that dialog?  So I tried it out, like this.
</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function() {
    $(&quot;:tabbable:first&quot;).focus(function() {
           $(&quot;.ui-dialog:visible:last :tabbable:first&quot;).focus();
    })
});
</pre>
<p class="entry-text">
Amazingly enough, this is the exact solution to the issue. This is how it reads.</p>
<ol>
<li>On page load</li>
<li>Get the first element that can be tabbed to in the body</li>
<li>When this element gains focus, check for a visible dialog</li>
<li>Take the visible dialog that is last (the last one drawn in the html) and get the first element that can be tabbed in it</li>
<li>give focus to that first element.</li>
</ol>
<p class="entry-text">
Now, in IE, when focus returns to the document, it goes to the dialog box, specifically, the close icon on the dialog box, thereby not breaking the fact that there a modal open on the page.
</p>
<p class="entry-text">
Now, there are some issues with this.  For one, the code is just assuming that the last dialog in the html that is visible is the one that is to be focused on.  Quite frankly, that&#8217;s what I need it for, as I try not to overlay dialogs, and when it do, the newest one is normally always on top.  However, there are times where you may swap between two dialogs, and the one that is on top is not the last dialog in the html, you would still have this issue in this case.  But for probably the other 95% of the cases, this is a clean and easy way to &#8216;fix&#8217; the accessibility issue in IE with jQuery UI dialog modals.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2010/02/25/jquery-ui-dialog-accessibility/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Making a better notification plugin: jQuery</title>
		<link>http://www.geedew.com/2009/07/22/making-a-better-notification-plugin-jquery/</link>
		<comments>http://www.geedew.com/2009/07/22/making-a-better-notification-plugin-jquery/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 03:33:18 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Notify]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://www.geedew.com/?p=100</guid>
		<description><![CDATA[I find myself at a crossroads. I really like using jQuery, and I really like not having to write my own plugins as there are some really good ones out there. But I have run into a problem when it (&#8230;)</p><p><a href="http://www.geedew.com/2009/07/22/making-a-better-notification-plugin-jquery/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I find myself at a crossroads.  I really like using jQuery, and I really like not having to write my own plugins as there are some really good ones out there.  But I have run into a problem when it comes to a notification system.  Let&#8217;s take a step back and discuss the purpose for a minute.</p>
<p class="entry-text" style="background-color:#F7FFBF">
** Update 7/29/2009**<br />
I now have a page dedicated to this at <a href="http://www.alldorks.com/wordpress/notify">http://www.alldorks.com/wordpress/notify</a> where you can also find the source code repository.
</p>
<p><span id="more-100"></span></p>
<p class="entry-text">Within a website&#8217;s user interface you have common tasks.  Of late, with ajax, overlays|dialogs|lightboxes have become common place.  Usually developers will use these to replace their `alerts`, `confirms` and leave it at that.  But what happens when a user does something and they need to be told &#8220;Hey, I got that and it was all ok&#8221;.  So you simply make an `alert` and let them know.  But then you have created this thing that they must read, click and then move on.  Add that up, and a user that is moving right along, may have to do 10 clicks a minute extra.  Or better yet, daily tasks are now incorporating clicks that are basically pointless.  A better solutions is to open up a notification, not unlike what is found in OSX, Gnome and Windows.  I&#8217;m talking about those little rounded popups that show up in some corner and then disappear.  Those&#8230; are notifications, and have been missing from most websites that really need them.</p>
<p class="entry-text">So now you know what I wanted.  A good looking notification system that is robust, adaptive, lightweightish, easy to work with, etc, etc.  Well, I couldn&#8217;t find that.  I did find mainly two that are out there, <a target="_blank" href="http://stanlemon.net/projects/jgrowl.html">jGrowl</a> and <a target="_blank" href="http://boedesign.com/2009/07/11/growl-for-jquery-gritter/">Gritter</a>.  Both are Okay, but I run into issues with both of them whenever I&#8217;m coding. Namely, what if I want multiple notification areas?  That shouldn&#8217;t be that hard, but it becomes a nightmare to edit and maintain their code.  Also, what if I miss the notification (getting coffee), how can I get it back?  Finally, why is it so difficult to change how these dang things look!  So I put my foot down and decided, &#8220;I will go it alone on this one&#8221;.  I rolled up my sleeves and put my knowledge together to form a better notification plugin.  I&#8217;m calling it &#8220;notify&#8221;, and I think it will quickly become a better platform for notifications.</p>
<p class="entry-text">I have a few things that I have been focused on:
</p>
<ul>
<li>Multiple notification spots (middle, top-left, unlimited with css)</li>
<li>Simple default notifications, completely customizable with options</li>
<li>Support for Class A browsers minus IE6, with hacks later to work it into IE6</li>
<li>Notification history manager, along with stickyness, and missed notices handling</li>
</ul>
<p class="entry-text">The list goes on from there.  It&#8217;s probably best to just play with the code, for now, it&#8217;s very raw, I will probably host a page on http://alldorks.com/ for it soon, along with a version control system to get the code from.  In any case, enjoy!</p>
<p class="entry-text">
<a href="http://geedew.com/notify.html" target="_blank">View the Demo Page, code is in the page </a></p>
<p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2009/07/22/making-a-better-notification-plugin-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slowly and surely</title>
		<link>http://www.geedew.com/2009/07/11/slowly-and-surely/</link>
		<comments>http://www.geedew.com/2009/07/11/slowly-and-surely/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 05:32:28 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[geedew]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[upgrading]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.geedew.com/2009/07/11/slowly-and-surely/</guid>
		<description><![CDATA[I&#8217;m slowly but surely getting this site up and running to where I want it to be. Please leave feedback if you are having any issues with it. I may be having an announcement soon about a new JavaScript Framework (&#8230;)</p><p><a href="http://www.geedew.com/2009/07/11/slowly-and-surely/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m slowly but surely getting this site up and running to where I want it to be.  Please leave feedback if you are having any issues with it.  I may be having an announcement soon about a new JavaScript Framework I&#8217;m working on that relies on other open sourced tools like jQuery.  Also, quite a few other things in the works, like a usable hovering menu that I made.  In any case, enjoy the site as I construct it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2009/07/11/slowly-and-surely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geedew going through some changes</title>
		<link>http://www.geedew.com/2009/06/01/geedew-going-through-some-changes/</link>
		<comments>http://www.geedew.com/2009/06/01/geedew-going-through-some-changes/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 05:03:30 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://geedew.com/?p=62</guid>
		<description><![CDATA[So I have finally been able to spend some time on one of my own sites! Hurray for me right? For the time being, you may be seeing some weird illusions in the design&#8230; and you will notice that some (&#8230;)</p><p><a href="http://www.geedew.com/2009/06/01/geedew-going-through-some-changes/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>So I have finally been able to spend some time on one of my own sites!  Hurray for me right?  For the time being, you may be seeing some weird illusions in the design&#8230; and you will notice that some links at the top are not working.  It&#8217;s all in the works, I&#8217;m just happy I have time to work on it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2009/06/01/geedew-going-through-some-changes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery Dialog Shadow Issues.</title>
		<link>http://www.geedew.com/2009/03/01/jquery-dialog-shadow-issues/</link>
		<comments>http://www.geedew.com/2009/03/01/jquery-dialog-shadow-issues/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 07:12:20 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://geedew.com/?p=30</guid>
		<description><![CDATA[While working on a dialog in the new jQuery UI 1.6rc6.  I have come accross an issue. If you were to open a dialog, and then dynamically change the content in the dialog, the shadow border will not resize.  The (&#8230;)</p><p><a href="http://www.geedew.com/2009/03/01/jquery-dialog-shadow-issues/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>While working on a dialog in the new jQuery UI 1.6rc6.  I have come accross an issue.</p>
<p>If you were to open a dialog, and then dynamically change the content in the dialog, the shadow border will not resize.  The problem is, the code does not &#8216;know&#8217; the box is larger, and is not able to watch for the changes.   Their have been some solutions that I have found to solve this, like turning off shadows, etc.  But I think I have a better one, a 3-line solution so to speak<br />
Go into your code, mine is in my jquery-ui-personalized-1.6rc6.js file&#8230; Also could be in ui.dialog.js etc.</p>
<p>Inside the code (mine is line 4218) after this function</p>
<pre class="brush: plain; title: ; notranslate">

$.widget(&quot;ui.dialog&quot;, {

_init: function() {
</pre>
<p>add this function</p>
<pre class="brush: plain; title: ; notranslate">

refresh: function() {
this._refreshShadow(1);
},
</pre>
<p>Then from within your code you can call something like this&#8230;</p>
<pre class="brush: plain; title: ; notranslate">$(&quot;#dialogbox&quot;).dialog(&quot;refresh&quot;);</pre>
<p>Check for updates, I may write a drop-in style patch so the coding isn&#8217;t necessary.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2009/03/01/jquery-dialog-shadow-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing my new projects site, all dorks!</title>
		<link>http://www.geedew.com/2009/02/02/introducing-my-new-projects-site-all-dorks/</link>
		<comments>http://www.geedew.com/2009/02/02/introducing-my-new-projects-site-all-dorks/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 03:35:15 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://geedew.com/?p=29</guid>
		<description><![CDATA[As I start to push more bloggin on my end (Yes, 8 hours of work a day and 3 hours of school at night, two dogs and a lovely wife are just not enough for me to handle),  I am (&#8230;)</p><p><a href="http://www.geedew.com/2009/02/02/introducing-my-new-projects-site-all-dorks/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>As I start to push more bloggin on my end (Yes, 8 hours of work a day and 3 hours of school at night, two dogs and a lovely wife are just not enough for me to handle),  I am branching out to a site I have had for a while that I haven&#8217;t really done much on.</p>
<p>The goal of the site is to host all of the ideas that I have in my head and that will in the end help motivate me to get them done and worked on&#8230; if individuals decide to comment on them <img src='http://www.geedew.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   I will attempt, at my best, to keep the projects code clean and easy to follow, along with good documentation.</p>
<p>A few may be very helpful to some (jCritic, jSave, jSuite) so as I get them done, I will defitely get them on there with working demos etc.</p>
<p>In the end, enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2009/02/02/introducing-my-new-projects-site-all-dorks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To: Converting PDF to Word and HTML</title>
		<link>http://www.geedew.com/2007/12/23/how-to-converting-pdf-to-word-and-html/</link>
		<comments>http://www.geedew.com/2007/12/23/how-to-converting-pdf-to-word-and-html/#comments</comments>
		<pubDate>Sun, 23 Dec 2007 08:36:38 +0000</pubDate>
		<dc:creator>drew</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[OpenOffice]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://geedew.com/wp-content/uploads/2007/12/23/how-to-converting-pdf-to-word-and-html/</guid>
		<description><![CDATA[Sites need to be able to interact in one single, universal space. -Tim Berners-Lee I started this little project because I have a client whom needs to get his 24 page PDF online. The problem is that a 24 page (&#8230;)</p><p><a href="http://www.geedew.com/2007/12/23/how-to-converting-pdf-to-word-and-html/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p align="center"><span style="size: 12px; font-weight: 400; color: #000000; font-family: calibri,veranda">Sites need to be able to interact in one single, universal space.</span></p>
<p align="right"><span style="size: 14px; font-weight: bold; color: #000000; font-family: calibri,veranda">-Tim Berners-Lee</span></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda">I started this little project because I have a client whom needs to get his 24 page PDF online.  The problem is that a 24 page PDF with all the bells and whistles</span></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda">ends up being over 5mb in size.  This causes issues for people running sub-cable internet connections, as the loading time becomes horrendous.  So to solve the problem, I am going to run the PDF as a download by choice and have all the links point to the HTML(Hyper-Text Markup Language: what webpages are written in) converted page when they click on what page they want to see.  This does however cause problems if something is updated on the PDF, the HTML is not dynamic or binded to the PDF so and update will p align=&#8221;left&#8221;&gt;     <span style="size: 12px; color: #000000; font-family: calibri,veranda">have to occur in both places.  The only way around that is to have the HTML being the origionating source and have the &#8216;download as pdf&#8217; link be  a call to a server side script that packages the HTML as a PDF. That however is too much for what this client needs and the issues with the updating will have to be taken in stride. </span></span></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"> </span></p>
<blockquote>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"><strong>Tools Needed</strong>:<br />
RTF or DOC reader (I prefer OpenOffice2.2) that can convert to HTML<br />
A Program designed to convert PDF to DOC format (I used Able2dDoc, licensed)</span></p>
</blockquote>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda">Unfortunately, In my case, the PDF contained a large amount of tables that were made up by images after conversion. Because of this, I had to handle things a little bit different, in which I will explain later.</span></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"><br />
<strong>First things first, lets convert to HTML</strong></span></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"> Using the software I used, Able2Doc, if you load up the PDF you can simply convert the file to a DOC format.  Notice, not many converters will go straight from PDF to DOC or RTF formats. Once you are able to convert the PDF to DOC or RTF, you can then open up that file into Microsoft Office or Open Office.  Both have the ability to Open up these files and then Export them as HTML.</span></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"><strong>Microsoft Offices&#8217; way of doing things</strong></span></p>
<p style="text-align: left;"><span style="size: 12px; color: #000000; font-family: calibri,veranda">Office is really simple. Take the document you are in and go to File-&gt;Save As-&gt;Other</span></p>
<p>
<span style="size: 12px; color: #000000; font-family: calibri,veranda"> </span><a title="PDF to HTML Save as" href="http://geedew.com/blog/wp-content/uploads/2007/12/pdftohtml-word-saveas.png"><img style="border: 1px solid black;" src="http://geedew.com/blog/wp-content/uploads/2007/12/pdftohtml-word-saveas.png" alt="PDF to HTML Save as" width="500" height="300" /></a><br />
</p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"> Then after that you can go click and change the type to an HTML Document&#8230; put in the name and your done!</span></p>
<p></p>
<p align="left"><a title="PDF to HTML Save as HTML" href="http://geedew.com/blog/wp-content/uploads/2007/12/pdftohtml-word-saveas-html.png"><img style="border: 1px solid black;" src="http://geedew.com/blog/wp-content/uploads/2007/12/pdftohtml-word-saveas-html.png" alt="PDF to HTML Save as HTML" width="500" height="300" /></a></p>
<p></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"><strong>Open Offices&#8217; way of doing things<br />
</strong>In Open Office, it is actually easier! Just have your document open and then go to File -&gt;Save As and you can then select the HTML from the drop down list.  No extra step as there is in Word.</span></p>
<p align="left"> </p>
<p align="left"> </p>
<p align="left"><a title="PDF to HTML OO" href="http://geedew.com/blog/wp-content/uploads/2007/12/pdftohtml-oo2-saveas-html.png"><img style="border: 1px solid black;" src="http://geedew.com/blog/wp-content/uploads/2007/12/pdftohtml-oo2-saveas-html.png" alt="PDF to HTML OO" width="500" height="300" /></a></p>
<p></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda"><br />
<strong>When things get messy&#8230;<br />
</strong>You have to start to get creative. I know, it stinks, when things just don&#8217;t go your way.  I mentioned earlier that I my specific issue just could not be settled by this process only because the images in the PDF were making up the tables and the text did not stick inside the image/tables when changed to HTML.  I ended having to go with a slightly altered reality, but the end result to the user is near the same.</span></p>
<p align="left"><span style="size: 12px; color: #000000; font-family: calibri,veranda">The idea that I had was to split the PDF into images. This was actually really easy to do.  I swapped over to linux for this part (Ubuntu Gutsy).  The PDF Reader program has the ability to output to JPG for your PDF&#8217;s.  This came in very handy, I simply outputted the PDF I was using, 28 pages of it, as JPG&#8217;s and then used to Javascript to make a nice little  setup for Checking out the picutres.</span></p>
<blockquote>
<h5><span style="font-family: calibri; ">Javascript Code In the &lt;body&gt; tags :</span><br />
<span style="color: #888888;"><span style="font-weight: normal;">&lt;script&gt; function PageQuery(q) {if(q.length &gt; 1) this.q = q.substring(1, q.length);else this.q = null;<br />
this.keyValuePairs = new Array();<br />
if(q) {<br />
for(var i=0; i &lt; this.q.split(&#8220;&amp;&#8221;).length; i++) {<br />
this.keyValuePairs[i] = this.q.split(&#8220;&amp;&#8221;)[i];<br />
}<br />
}<br />
this.getKeyValuePairs = function() { return this.keyValuePairs; }<br />
this.getValue = function(s) {<br />
for(var j=0; j &lt; this.keyValuePairs.length; j++) {<br />
if(this.keyValuePairs[j].split(&#8220;=&#8221;)[0] == s)<br />
return this.keyValuePairs[j].split(&#8220;=&#8221;)[1];<br />
}<br />
return false;<br />
}<br />
this.getParameters = function() {<br />
var a = new Array(this.getLength());<br />
for(var j=0; j &lt; this.keyValuePairs.length; j++) {<br />
a[j] = this.keyValuePairs[j].split(&#8220;=&#8221;)[0];<br />
}<br />
return a;<br />
}<br />
this.getLength = function() { return this.keyValuePairs.length; }<br />
}<br />
function queryString(key){<br />
var page = new PageQuery(window.location.search);<br />
return unescape(page.getValue(key));<br />
}<br />
function displayItem(key){<br />
if(queryString(key)==&#8217;false&#8217;)<br />
{<br />
return &#8217;1&#8242;;<br />
}else{<br />
return queryString(key);<br />
}<br />
}<br />
&lt;/script&gt;</span></span></h5>
</blockquote>
<p><script type="text/javascript"><!--
 function PageQuery(q) {if(q.length > 1) this.q = q.substring(1, q.length);else this.q = null;
this.keyValuePairs = new Array();
if(q) {
for(var i=0; i < this.q.split("&#038;").length; i++) {
this.keyValuePairs[i] = this.q.split("&#038;")[i];
}
}
this.getKeyValuePairs = function() { return this.keyValuePairs; }
this.getValue = function(s) {
for(var j=0; j < this.keyValuePairs.length; j++) {
if(this.keyValuePairs[j].split("=")[0] == s)
return this.keyValuePairs[j].split("=")[1];
}
return false;
}
this.getParameters = function() {
var a = new Array(this.getLength());
for(var j=0; j < this.keyValuePairs.length; j++) {
a[j] = this.keyValuePairs[j].split("=")[0];
}
return a;
}
this.getLength = function() { return this.keyValuePairs.length; }
}
function queryString(key){
var page = new PageQuery(window.location.search);
return unescape(page.getValue(key));
}
function displayItem(key){
if(queryString(key)=='false')
{
return '1';
}else{
return queryString(key);
}
}
// --></script></p>
<p><span style="size: 12px; color: #000000; font-family: calibri,veranda"><strong>What else?<br />
</strong></span></p>
<p><span style="size: 12px; color: #000000; font-family: calibri,veranda"><strong> </strong>Once this code is in place, you can see what it is trying to do.  You are basically parsing a query address URL and looking for the specific information showing on whatever variable you pass in.  This is giving your JavaScript the ability to know what a variable is from a JavaScript /PHP equivalent to the Get variables.</span><span style="size: 12px; color: #000000; font-family: calibri,veranda"><strong><br />
</strong></span></p>
<p><span style="size: 12px; color: #000000; font-family: calibri,veranda"><strong> </strong>Now you need the code that will change values of a select box, so the complete picture will come into view.</span></p>
<p><!--</p-->
<p><span style="size: 12px; color: #000000; font-family: calibri,veranda">The idea that I had was to split the PDF into images. This was actually really easy to do. I swapped over to Linux for this part (Ubuntu Gutsy). The PDF Reader program has the ability to output to JPG for your PDF&#8217;s. This came in very handy, I simply outputted the PDF I was using, 28 pages of it, as JPG&#8217;s and then used to JavaScript to make a nice little setup for Checking out the pictures.</span></p>
<blockquote>
<h5><span style="font-weight: normal;"><span style="color: #888888;">&lt;</span></span><span style="font-weight: normal;"><span style="color: #888888;">SCRIPT LANGUAGE=&#8221;JavaScript&#8221;&gt;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> function loadPage(value) {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;">if(value == &#8220;&#8221;) {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> document.getElementById(&#8216;mainimage&#8217;).src=&#8221;img/ProductCatalog/Page1.jpg&#8221;;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> } else {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> document.getElementById(&#8216;mainimage&#8217;).src=&#8221;img/ProductCatalog/Page&#8221; + displayItem(&#8216;p&#8217;) +&#8221;.jpg&#8221;;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> function changeImage()<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;">{<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> document.getElementById(&#8216;mainimage&#8217;).src = document.getElementById(&#8216;list&#8217;).options[document.getElementById('list').selectedIndex].value;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;">function prevImage()<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> if(document.getElementById(&#8216;list&#8217;).selectedIndex == 0)<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> document.getElementById(&#8216;list&#8217;).selectedIndex = document.getElementById(&#8216;list&#8217;).options.length-1;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> else<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> document.getElementById(&#8216;list&#8217;).selectedIndex&#8211;;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> changeImage();<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;">function nextImage()<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> if(document.getElementById(&#8216;list&#8217;).selectedIndex == document.getElementById(&#8216;list&#8217;).options.length-1)<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> document.getElementById(&#8216;list&#8217;).selectedIndex = 0;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> else<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> {<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> document.getElementById(&#8216;list&#8217;).selectedIndex++;<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> }<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;"> changeImage();<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;">}<br />
</span></span></h5>
<h5><span style="font-weight: normal;"><span style="color: #888888;">&lt;/script&gt;</span></span></h5>
</blockquote>
<p><span style="font-family: calibri;">That was pretty much what the JavaScript needed, and then I could handle everything else from HTML which made things much easier.  All that is said and done, any Q&#8217;s just ask.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geedew.com/2007/12/23/how-to-converting-pdf-to-word-and-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

