<?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>Paul.Bagosy.Com &#187; JavaScript</title>
	<atom:link href="http://paul.bagosy.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://paul.bagosy.com</link>
	<description></description>
	<lastBuildDate>Sun, 25 Jul 2010 13:42:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Go-Live &#8211; PMRS, Inc.</title>
		<link>http://paul.bagosy.com/2009/12/07/go-live-pmrs-inc/</link>
		<comments>http://paul.bagosy.com/2009/12/07/go-live-pmrs-inc/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:30:08 +0000</pubDate>
		<dc:creator>Paul Bagosy</dc:creator>
				<category><![CDATA[IE6]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://paul.bagosy.com/?p=691</guid>
		<description><![CDATA[PMRS Inc. What the client wanted: A newly-redesigned website to represent their corporate face on the internet. They had concerns about the site being visible in IE6, possibly without JavaScript enabled, due to their target audience using almost exculsively large corporate internet connections with older technology and security restrictions. What I delivered: The design itself [...]]]></description>
			<content:encoded><![CDATA[<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> <p><strong><a href="http://www.pmrsinc.com"  target="_blank">PMRS Inc.</a></strong></p>
<div id="attachment_696" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-696" title="PMRS, Inc." src="http://paul.bagosy.com/wp-content/uploads/2009/12/pmrsinc1.jpg" alt="PMRS, Inc." width="600" height="400" /><p class="wp-caption-text">PMRS, Inc.</p></div>
<p><strong>What the client wanted:</strong><br />
A newly-redesigned website to represent their corporate face on the internet.  They had concerns about the site being visible in IE6, possibly without JavaScript enabled, due to their target audience using almost exculsively large corporate internet connections with older technology and security restrictions.</p>
<p><strong>What I delivered</strong>:<br />
The design itself has a number of floating elements, including Flash and irregularly-repeating backgrounds with alpha-channel elements.  PNGs were going to be necessary, and to make sure they worked in IE6, I employed the <a href="http://www.twinhelix.com/css/iepngfix/"  target="_blank">TwinHelix IE6 PNG hack</a>.  This lead me to the horrible realization that <a href="http://paul.bagosy.com/2009/11/ie6-is-there-nothing-it-can%E2%80%99t-make-complicated/" >positioning background PNGs is problematic in IE6</a>, so there were a few concessions made for IE6 support, but largely, the site looks identical in all browsers.</p>
<p>There was no concern with SEO friendliness, so I went with a JavaScript-based dropdown menu for multi-level support.  To compensate for the possibility of a JS being disabled, each top-level menu item has its own landing page, and there is a separate stylesheet loaded with a noscript tag.</p>
<div id="crp_related"> </div>]]></content:encoded>
			<wfw:commentRss>http://paul.bagosy.com/2009/12/07/go-live-pmrs-inc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rollover Navigation for fun and profit.</title>
		<link>http://paul.bagosy.com/2009/04/21/horizontal-rollover-navigation-for-fun-and-profit/</link>
		<comments>http://paul.bagosy.com/2009/04/21/horizontal-rollover-navigation-for-fun-and-profit/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 14:54:37 +0000</pubDate>
		<dc:creator>Paul Bagosy</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Sites]]></category>

		<guid isPermaLink="false">http://paul.bagosy.com/?p=292</guid>
		<description><![CDATA[Gone are the days when a nicely-styled text link was sufficient for main navigation. Heck, designs are even sporting graphical sub navigation these days. While this is a pain in the proverbial backside for easy updating, it&#8217;s what life has given us. And when life gives us graphics and demands SEO compatibility and semantically correct [...]]]></description>
			<content:encoded><![CDATA[<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> <p>Gone are the days when a nicely-styled text link was sufficient for main navigation.  Heck, designs are even sporting graphical <em>sub navigation</em> these days. While this is a pain in the proverbial backside for easy updating, it&#8217;s what life has given us. And when life gives us graphics and demands SEO compatibility and semantically correct HTML, we make lemonade. And then we charge $125/cup.</p>
<p>So, how do we tackle this without all of that pesky JavaScript which is likely to break on any given browser (I&#8217;m glaring at you, IE6. And IE7. And IE8. And Firefox. And particularly Safari.) More to the point, how do we do this in a way that&#8217;s not just images and can actually be picked up by search engines? We say <strong>Screw the JavaScript</strong>! (I say that a lot.) The W3C has given us all the tools we need with HTML and CSS! We just need to find new and interesting ways to <span style="text-decoration: line-through">ab</span>use them.<span id="more-292"></span></p>
<p>The root of the issue here is that we have an image that we want to change when we mouse over it, AND we want text to show up for spiders. The Spider isn&#8217;t going to understand nav_contact.gif as well as it will understand Contact Doylestown Web Design, so we need to scrap the image tag altogether. We also need to put that text in there and not have it display. These two things are not quite intuitive, but hey, we&#8217;re left brain geniuses, are we not?</p>
<p>So, here&#8217;s our HTML construct:</p>
<blockquote>
<pre>  &lt;div id="navigation"&gt;
   &lt;ul&gt;
    &lt;li id="nav_01"&gt;&lt;a href="/item_1.htm" title="Top Item 1"&gt;Top Item 1&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_02"&gt;&lt;a href="/item_2.htm" title="Top Item 2"&gt;Top Item 2&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_03"&gt;&lt;a href="/item_3.htm" title="Top Item 3"&gt;Top Item 3&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_04"&gt;&lt;a href="/item_4.htm" title="Top Item 4"&gt;Top Item 4&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_05"&gt;&lt;a href="/item_5.htm" title="Top Item 5"&gt;Top Item 5&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
  &lt;/div&gt;</pre>
</blockquote>
<p>What we have here is a container &lt;div&gt;, an unordered list, and list tags with links inside. Now, that&#8217;s not going to look very good if we leave it like that, so off to the CSS we go.</p>
<p>First, we need to set the stage with the width, height, and background:</p>
<blockquote>
<pre>#navigation {
	width:740px;
	height:30px;
	background:url(/images/navigation.jpg) top left no-repeat;
}</pre>
</blockquote>
<p>For that background image, you want to have your entire navigation as it looks normally. No need to cut up individual images for your default state!</p>
<p>Next, we need to whip that list into shape:</p>
<blockquote>
<pre>#navigation ul {
	width:740px;
	height:30px;
	margin:0px;
	padding:0px;
	list-style:none;
}</pre>
</blockquote>
<p>We make sure that the &lt;ul&gt; tag is the same exact dimensions as our containing div, and then strip all the margins, padding, and bullets from it. Viola, no more list! Just a happy semantic construct.</p>
<p>Now, we need to trim the &lt;li&gt; tags:</p>
<blockquote>
<pre>#navigation ul li {
	height:30px;
	margin:0px;
	padding:0px;
	list-style:none;
	float:left;
	display:block;
}</pre>
</blockquote>
<p>Define the height (because this is horizontal, and they&#8217;ll all be the same, right?), strip the margins, padding and bullets again, and finally, make it sit horizontally instead of vertically like it wants to. That&#8217;s what the float:left and display:block achieve.</p>
<p>Moving right along!  We need to get that pesky text out of there, don&#8217;t we?</p>
<blockquote>
<pre>#navigation ul li a {
	text-indent:-9009px;
	display:block;
	height:30px;
}</pre>
</blockquote>
<p>So, we take it and shoot it 9009 pixels to the left. Unless someone&#8217;s on a 10,280 x 7,680 screen, that&#8217;s text is not showing up. But they&#8217;ll have other problems, too. Anyway, an important thing to note is that you cannot use &lt;br /&gt; tags inside those links or everything after it will still show up. text-indent only affects the first line.</p>
<p>Now, we are almost done. We just need to tackle the individual cells (hence the unique IDs on the &lt;li&gt; tags). Every &lt;li&gt; tag is going to have two lines in the CSS: one for the tag, and one for the link inside it.</p>
<blockquote>
<pre>#nav_01 {
	width:148px;
}
#nav_01 a:hover {
	width:148px;
	background:url(/images/nav_01.jpg) no-repeat 0px 0px;
}</pre>
</blockquote>
<p>In the first line, we declare the width of the &lt;li&gt; tag. We&#8217;ve already defined the heights before. This ensures that we&#8217;re filling the space of the &lt;ul&gt; tag. In the second line, we make sure that the link is constraining to the same width, and we set the hover property to change the background image. This is the big payoff here. When the user mouses over, instead of doing some fancy JavaScript image swap, we&#8217;re using the native CSS functionality to simply change the background to what we need. When they mouse out, the hover expires. Easy as changing the color.</p>
<p>So that&#8217;s it for horizontal navigation. Easy, right? But wait! you say. What about dropdowns? Dropdowns require an ID tag, which we&#8217;ve already defined. But what if you&#8217;ve got a nav parent that has no page? What if nav_02 doesn&#8217;t go anywhere? Well, that&#8217;s easy. Let&#8217;s change the construct a bit:</p>
<blockquote>
<pre>  &lt;div id="navigation"&gt;
   &lt;ul&gt;
    &lt;li id="nav_01"&gt;&lt;a href="/item_1.htm" title="Top Item 1"&gt;Top Item 1&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_02"&gt;&lt;a href="/item_2.htm" title="Top Item 2"&gt;Top Item 2&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_03"&gt;&lt;a href="" title="Top Item 3" onclick="return false;"&gt;Top Item 3&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_04"&gt;&lt;a href="/item_4.htm" title="Top Item 4"&gt;Top Item 4&lt;/a&gt;&lt;/li&gt;
    &lt;li id="nav_05"&gt;&lt;a href="/item_5.htm" title="Top Item 5"&gt;Top Item 5&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
  &lt;/div&gt;</pre>
</blockquote>
<p>See nav_03? We take out the URL altogether and add an onclick event. Return false; tells the browser that when the link is clicked, just don&#8217;t do anything at all. Effectively makes it a non-link. Then, we change the CSS slightly.</p>
<blockquote>
<pre>#nav_03 {
	width:148px;
}
#nav_03 a {
	cursor:default;
}</pre>
</blockquote>
<p>This tells the link to keep the same happy pointer you get for any other element that&#8217;s not a hyperlink. So now your link not only doesn&#8217;t act like a link, it doesn&#8217;t look like a link. But you keep all of your functionality (and the dropdown beneath it).</p>
<p>-pb</p>
<div id="crp_related"> </div>]]></content:encoded>
			<wfw:commentRss>http://paul.bagosy.com/2009/04/21/horizontal-rollover-navigation-for-fun-and-profit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash &amp; IE6</title>
		<link>http://paul.bagosy.com/2008/12/14/flash-ie6/</link>
		<comments>http://paul.bagosy.com/2008/12/14/flash-ie6/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 13:06:07 +0000</pubDate>
		<dc:creator>Paul Bagosy</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://paul.bagosy.com/?p=247</guid>
		<description><![CDATA[Apparently, IE6 throws a royal conniption fit when you attempt to have Flash do anything that involves pointing to an anchor tag on the page. I tried a number of different methods, from a simple getURL to putting all of my functionality directly into JavaScript, but every time, it blew up.  More explicitly, it blew [...]]]></description>
			<content:encoded><![CDATA[<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> <p>Apparently, IE6 throws a royal conniption fit when you attempt to have Flash do anything that involves pointing to an anchor tag on the page.</p>
<p>I tried a number of different methods, from a simple getURL to putting all of my functionality directly into JavaScript, but every time, it blew up.  More explicitly, it blew up after the <em>second time </em>it was accessed (so, click one functioned fine, click two functioned fine, click three went haywire).</p>
<p>For the issue I was working on, the workaround was to tell the browser to scroll to a certain point on the page instead of jump to an anchor, but I can imagine that&#8217;s not going to be a lasting solution, and certainly not dynamic.</p>
<p>-pb</p>
<div id="crp_related"> </div>]]></content:encoded>
			<wfw:commentRss>http://paul.bagosy.com/2008/12/14/flash-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript and Firefox</title>
		<link>http://paul.bagosy.com/2008/11/21/javascript-and-firefox/</link>
		<comments>http://paul.bagosy.com/2008/11/21/javascript-and-firefox/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 19:50:17 +0000</pubDate>
		<dc:creator>Paul Bagosy</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://paul.bagosy.com/?p=237</guid>
		<description><![CDATA[Remember, folks, if you&#8217;re looking to affect an element&#8217;s height or width with JavaScript, you have to add &#8220;px&#8221; to the end if you want it to work in Firefox.]]></description>
			<content:encoded><![CDATA[<!-- wp-jquery-lightbox, a WordPress plugin by ulfben --> <p>Remember, folks, if you&#8217;re looking to affect an element&#8217;s height or width with JavaScript, you have to add &#8220;px&#8221; to the end if you want it to work in Firefox.</p>
<div id="crp_related"> </div>]]></content:encoded>
			<wfw:commentRss>http://paul.bagosy.com/2008/11/21/javascript-and-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
