<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<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/"
	>

<channel>
	<title>Mark Brown - Web Standards &#038; CSS</title>
	<link>http://www.byteclub.net/blog/mbrown</link>
	<description>Web stuff that may be helpful - Web Standards &#038; CSS</description>
	<pubDate>Tue, 05 Aug 2008 01:29:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>.NET developers are incompetent</title>
		<link>http://www.byteclub.net/blog/mbrown/net-developers-are-incompetent/</link>
		<comments>http://www.byteclub.net/blog/mbrown/net-developers-are-incompetent/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 01:29:05 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>Tech</category>
	<category>(X)HTML</category>
	<category>Nothing of value</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/net-developers-are-incompetent/</guid>
		<description><![CDATA[What an outrageous, perhaps justified statement.
The amount of times .NET developers struggle to make the simplest of changes to the output of a page blows my mind.
Whether it&#8217;s working around &#8216;features&#8217; of the framework or customising one of their controls, it&#8217;s always just too dang hard.
Some developers are better than others, but it seems to [...]]]></description>
			<content:encoded><![CDATA[<p>What an outrageous, perhaps justified statement.</p>
<p>The amount of times .NET developers struggle to make the simplest of changes to the output of a page blows my mind.<br />
Whether it&#8217;s working around &#8216;features&#8217; of the framework or customising one of their controls, it&#8217;s always just too dang hard.</p>
<p>Some developers are better than others, but it seems to be the very framework that encourages people to build things using controls that are hard to maintain/tweak.<br />
Abstracting things for the sake of abstracting.<br />
&#8216;&#8217;Hmm, you can only have one asp.net form tag in a page&#8221;, &#8220;ahh, but I&#8217;m using a Grid for that&#8221;</p>
<p>&#8211;</p>
<p>I just needed to vent..  ASP.NET is the poo and All developers should learn the technologies at hand and not cover them up with controls and server-side code. geez
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/net-developers-are-incompetent/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Absolute positioning setting dimensions</title>
		<link>http://www.byteclub.net/blog/mbrown/absolute-positioning-setting-dimensions/</link>
		<comments>http://www.byteclub.net/blog/mbrown/absolute-positioning-setting-dimensions/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 03:20:45 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>Usability</category>
	<category>CSS</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/absolute-positioning-setting-dimensions/</guid>
		<description><![CDATA[I don&#8217;t use absolute positioning all that often but have found a new use for it, setting dimensions of an object to occupy dimensions that are hard to get.  Like 100% -200px.
By giving an element opposing position values i.e left:0 and right: 0; you are saying make this elements left margin touch the left [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t use absolute positioning all that often but have found a new use for it, setting dimensions of an object to occupy dimensions that are hard to get.  Like 100% -200px.</p>
<p>By giving an element opposing position values i.e left:0 and right: 0; you are saying make this elements left margin touch the left edge of the parent element - and the right margin touch the right edge of the parent element - give me a width of 100%.</p>
<p><strong>Some HTML</strong></p>
<pre class="html4strict"><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;panel_container&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;panel left&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;panel right&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></pre>
<p><strong>Some CSS</strong></p>
<pre class="css">html, body <span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">height</span>: <span style="color: #cc66cc;">100</span>%
<span style="color: #66cc66;">&#125;</span>
.panel_container <span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">height</span>: <span style="color: #cc66cc;">100</span>%;
	<span style="color: #000000; font-weight: bold;">position</span>: <span style="color: #993333;">relative</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #6666ff;">.panel </span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">top</span>: 10px;
	<span style="color: #000000; font-weight: bold;">bottom</span>: 10px;
	<span style="color: #000000; font-weight: bold;">position</span>: <span style="color: #993333;">absolute</span>;
	<span style="color: #000000; font-weight: bold;">overflow</span>: <span style="color: #993333;">auto</span>;
	<span style="color: #000000; font-weight: bold;">border</span>: 1px <span style="color: #993333;">solid</span> #bbb;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #6666ff;">.<span style="color: #000000; font-weight: bold;">left</span> </span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">left</span>: 10px;
	<span style="color: #000000; font-weight: bold;">right</span>: <span style="color: #993333;">auto</span>;
	<span style="color: #000000; font-weight: bold;">width</span>: 200px;
	<span style="color: #000000; font-weight: bold;">background</span>: #FC6
<span style="color: #66cc66;">&#125;</span>
<span style="color: #6666ff;">.<span style="color: #000000; font-weight: bold;">right</span> </span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">left</span>: 220px;
	<span style="color: #000000; font-weight: bold;">right</span>: 10px;
	<span style="color: #000000; font-weight: bold;">background</span>: #9C6;
<span style="color: #66cc66;">&#125;</span></pre>
<p><strong>Compatibility:</strong><br />
This use of absolute positioning works perfectly in all modern browsers except IE6 and below. Ouch.</p>
<p>The solution is to use an IE only &#8216;expressions&#8217; to set the dimensions of the elements.</p>
<pre class="css">* html <span style="color: #6666ff;">.panel </span><span style="color: #66cc66;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">height</span>: expression<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>d = document<span style="color: #6666ff;">.compatMode </span>== <span style="color: #ff0000;">&#8220;CSS1Compat&#8221;</span> ?
 document<span style="color: #6666ff;">.documentElement </span>: document.body<span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>d<span style="color: #6666ff;">.clientHeight </span>- <span style="color: #cc66cc;">20</span> +<span style="color: #ff0000;">&#8220;px&#8221;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
* html <span style="color: #6666ff;">.<span style="color: #000000; font-weight: bold;">right</span> </span><span style="color: #66cc66;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">width</span>: expression<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>d = document<span style="color: #6666ff;">.compatMode </span>== <span style="color: #ff0000;">&#8220;CSS1Compat&#8221;</span> ?
 document<span style="color: #6666ff;">.documentElement </span>: document.body<span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>d<span style="color: #6666ff;">.clientWidth </span>- <span style="color: #cc66cc;">230</span> +<span style="color: #ff0000;">&#8220;px&#8221;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p><strong>Complete example:</strong></p>
<div style="height: 200px; overflow: auto;">
<pre class="html4strict"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">&lt;html</span></a> xmlns=<span style="color: #ff0000;">&#8220;http://www.w3.org/1999/xhtml&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">&lt;head&gt;</span></a></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">&lt;meta</span></a> <span style="color: #000066;">http-equiv</span>=<span style="color: #ff0000;">&#8220;Content-Type&#8221;</span> <span style="color: #000066;">content</span>=<span style="color: #ff0000;">&#8220;text/html; charset=utf-8&#8243;</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">&lt;title&gt;</span></a></span>Panels example<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/style.html"><span style="color: #000000; font-weight: bold;">&lt;style</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&#8220;text/css&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
/* reset */
* {
	margin: 0;
	padding: 0
}
body {
	font-size: 80%;
	font-family: Arial, Helvetica, sans-serif;
}
h1, h2, p, pre {
	margin: 0 0 1em 0
}
h1 {
	font-size: 150%
}
h2 {
	font-size: 130%
}
pre {
	font-size: 110%
}
/* layout */
html, body {
	height: 100%
}
.panel_container {
	height: 100%;
	position: relative;
}
.panel {
	top: 10px;
	bottom: 10px;
	position: absolute;
	overflow: auto;
	border: 1px solid #bbb;
}
.left {
	left: 10px;
	right: auto;
	width: 200px;
	background: #FC6
}
.right {
	left: 220px;
	right: 10px;
	background: #9C6;
}
.inner {
	padding: 10px
}
/* IE6<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a> filter */
* html .panel <span style="color: #66cc66;">&#123;</span>
 <span style="color: #000066;">height</span>: expression<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>d = document.compatMode == <span style="color: #ff0000;">&#8220;CSS1Compat&#8221;</span> ? document.documentElement : document.body<span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>d.clientHeight - <span style="color: #cc66cc;">20</span> +<span style="color: #ff0000;">&#8220;px&#8221;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
* html .right <span style="color: #66cc66;">&#123;</span>
 <span style="color: #000066;">width</span>: expression<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>d = document.compatMode == <span style="color: #ff0000;">&#8220;CSS1Compat&#8221;</span> ? document.documentElement : document.body<span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>d.clientWidth - <span style="color: #cc66cc;">230</span> +<span style="color: #ff0000;">&#8220;px&#8221;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">&lt;/style&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/head&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">&lt;body&gt;</span></a></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;panel_container&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;panel left&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;inner&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/h2.html"><span style="color: #000000; font-weight: bold;">&lt;h2&gt;</span></a></span>Left Panel<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h2&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>The left panel is 10px from the left edge and 200px wide.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/pre.html"><span style="color: #000000; font-weight: bold;">&lt;pre&gt;</span></a></span>
.left {
  left: 10px;
  right: auto;
  width: 200px;
  background: #FC6
}
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pre&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;panel right&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;inner&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold;">&lt;h1&gt;</span></a></span>Absolute positioning setting dimensions<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>By giving an element opposing position values i.e left:0 and right: 0; you are saying make this elements left margin touch the left edge of the parent element - and the right margin touch the right edge of the parent element - give me a width of 100%.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>Both panels have the following to make them 100% of the height -20px:<span style="color: #009900;"><a href="http://december.com/html/4/element/br.html"><span style="color: #000000; font-weight: bold;">&lt;br</span></a> /<span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/pre.html"><span style="color: #000000; font-weight: bold;">&lt;pre&gt;</span></a></span>
.panel {
  top: 10px;
  bottom: 10px;
  position: absolute;
  overflow: auto; // scrollbars if contents exceed dimensions
}
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pre&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/h2.html"><span style="color: #000000; font-weight: bold;">&lt;h2&gt;</span></a></span>Right Panel<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h2&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/pre.html"><span style="color: #000000; font-weight: bold;">&lt;pre&gt;</span></a></span>
.right {
  left: 220px;
  right: 10px;
  background: #9C6;
}
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pre&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/h2.html"><span style="color: #000000; font-weight: bold;">&lt;h2&gt;</span></a></span>Compatability<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h2&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>This use of absolute positioning works perfectly in all modern browsers except IE6 and below. Ouch.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>The solution is to use an IE only feature called expressions to set the dimensions of the elements.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span>
      <span style="color: #009900;"><a href="http://december.com/html/4/element/pre.html"><span style="color: #000000; font-weight: bold;">&lt;pre&gt;</span></a></span>
* html .panel {
 height: expression((d = document.compatMode == &quot;CSS1Compat&quot; ?
 document.documentElement : document.body) <span style="color: #ddbb00;">&amp;&amp; (d.clientHeight - 20 +&quot;px&quot; ));</span>
}
* html .right {
 width: expression((d = document.compatMode == &quot;CSS1Compat&quot; ?
 document.documentElement : document.body) <span style="color: #ddbb00;">&amp;&amp; (d.clientWidth - 230 +&quot;px&quot; ));</span>
}
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pre&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html&gt;</span></span></pre>
</div>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/absolute-positioning-setting-dimensions/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Soul destroying</title>
		<link>http://www.byteclub.net/blog/mbrown/soul-destroying/</link>
		<comments>http://www.byteclub.net/blog/mbrown/soul-destroying/#comments</comments>
		<pubDate>Thu, 08 May 2008 07:55:14 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>Usability</category>
	<category>CSS</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/soul-destroying/</guid>
		<description><![CDATA[Menu&#8217;s built by javascript and Menu&#8217;s with text-decoration: blink;

]]></description>
			<content:encoded><![CDATA[<p>Menu&#8217;s built by javascript and Menu&#8217;s with text-decoration: blink;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/soul-destroying/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Web Development position at PageUp People</title>
		<link>http://www.byteclub.net/blog/mbrown/web-development-position-at-pageup-people/</link>
		<comments>http://www.byteclub.net/blog/mbrown/web-development-position-at-pageup-people/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 10:15:06 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>pageup</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/web-development-position-at-pageup-people/</guid>
		<description><![CDATA[If anyone is looking for a job in software development, you should strongly consider this software development position at pageup people
Please Contact me if you&#8217;re interested in finding out more - Or just go ahead and apply at the page above.
I&#8217;ve only been with pageup 3 months but i&#8217;m thoroughly enjoying my work.
The company itself [...]]]></description>
			<content:encoded><![CDATA[<p>If anyone is looking for a job in software development, you should strongly consider this <a href="http://www.pageuppeople.jobs/jobDetails.asp?sJobIDs=381447&#038;stp=AW&#038;sLanguage=en">software development position at pageup people</a></p>
<p>Please <a href="http://www.yellowshoe.com.au/contact/">Contact me</a> if you&#8217;re interested in finding out more - Or just go ahead and apply at the page above.</p>
<p>I&#8217;ve only been with pageup 3 months but i&#8217;m thoroughly enjoying my work.<br />
The company itself is a rapidly growing one which specialises in creating web applications to help manage an organisations talent&#8230; What does that mean?<br />
We offer recruitment and management tools to help employers get the right employees and to get the best out of those employees throughout their time within the organisation.</p>
<p>PageUp is made up of a very talented bunch of young employees with a wide range of skills.</p>
<p>The Development team is looking to find someone with an interest in back-end web development, a knowledge of ASP, .NET and SQL would be ideal - but if you feel you have something that you could add to the team - then what are you waiting for? <img src='http://www.byteclub.net/blog/mbrown/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/web-development-position-at-pageup-people/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Bezier curves with &#60;canvas&#62;</title>
		<link>http://www.byteclub.net/blog/mbrown/bezier-curves-with/</link>
		<comments>http://www.byteclub.net/blog/mbrown/bezier-curves-with/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 06:35:43 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>Usability</category>
	<category>(X)HTML</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/bezier-curves-with/</guid>
		<description><![CDATA[Having some fun with the html canvas element. linky linky


]]></description>
			<content:encoded><![CDATA[<p>Having some fun with the html canvas element. <a href="http://www.yellowshoe.com.au/examples/canvas/">linky linky</a></p>
<p><img id="image129" src="http://www.byteclub.net/blog/mbrown/user-uploads/uploads_mbrown/2008/02/beziersondrugs.gif" alt="Bezier curves with &lt;canvas&gt;" />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/bezier-curves-with/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Overlays and fixed positioning.. including IE6</title>
		<link>http://www.byteclub.net/blog/mbrown/overlays-and-fixed-positioning-including-ie6/</link>
		<comments>http://www.byteclub.net/blog/mbrown/overlays-and-fixed-positioning-including-ie6/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 06:33:42 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>CSS</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/overlays-and-fixed-positioning-including-ie6/</guid>
		<description><![CDATA[There&#8217;s many incarnations of lightbox js that have popularized this approach as a kind of dialog box.
It turns out it&#8217;s wonderfully simple to achieve in modern browsers:
&#60;div id=&#8220;overlay&#8221;&#62;&#60;/div&#62;
&#60;div id=&#8220;dialog&#8221;&#62;
  &#60;p&#62;Some content&#60;/p&#62;
&#60;/div&#62;
#overlay &#123;
	position: fixed; /* A marvelous property */
	z-index: 100;
	top: 0;
	left: 0;
	height: 100%;
	width: 100%;
	background: #000;
	filter: alpha&#40;opacity=75&#41;;
	-moz-opacity: 0.75;
	opacity: 0.75;
&#125;
#dialog &#123;
	height: 400px;
	width: 700px;
	margin: 0 auto;
	position: fixed;
	z-index:101;
	background: #F2F2F3;
	left: [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s many incarnations of <a href="http://www.huddletogether.com/2006/03/29/lightbox-v20/">lightbox js</a> that have popularized this approach as a kind of dialog box.<br />
It turns out it&#8217;s wonderfully simple to achieve in modern browsers:</p>
<pre class="html4strict"><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&#8220;overlay&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&#8220;dialog&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>Some content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></pre>
<pre class="css"><span style="color: #cc00cc;">#overlay <span style="color: #66cc66;">&#123;</span></span>
	<span style="color: #000000; font-weight: bold;">position</span>: <span style="color: #993333;">fixed</span>; <span style="color: #808080; font-style: italic;">/* A marvelous property */</span>
	<span style="color: #000000; font-weight: bold;">z-index</span>: <span style="color: #cc66cc;">100</span>;
	<span style="color: #000000; font-weight: bold;">top</span>: <span style="color: #cc66cc;">0</span>;
	<span style="color: #000000; font-weight: bold;">left</span>: <span style="color: #cc66cc;">0</span>;
	<span style="color: #000000; font-weight: bold;">height</span>: <span style="color: #cc66cc;">100</span>%;
	<span style="color: #000000; font-weight: bold;">width</span>: <span style="color: #cc66cc;">100</span>%;
	<span style="color: #000000; font-weight: bold;">background</span>: #<span style="color: #cc66cc;">000</span>;
	filter: alpha<span style="color: #66cc66;">&#40;</span>opacity=<span style="color: #cc66cc;">75</span><span style="color: #66cc66;">&#41;</span>;
	-moz-opacity: <span style="color: #cc66cc;">0.75</span>;
	opacity: <span style="color: #cc66cc;">0.75</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #cc00cc;">#dialog <span style="color: #66cc66;">&#123;</span></span>
	<span style="color: #000000; font-weight: bold;">height</span>: 400px;
	<span style="color: #000000; font-weight: bold;">width</span>: 700px;
	<span style="color: #000000; font-weight: bold;">margin</span>: <span style="color: #cc66cc;">0</span> <span style="color: #993333;">auto</span>;
	<span style="color: #000000; font-weight: bold;">position</span>: <span style="color: #993333;">fixed</span>;
	<span style="color: #000000; font-weight: bold;">z-index</span>:<span style="color: #cc66cc;">101</span>;
	<span style="color: #000000; font-weight: bold;">background</span>: #F2F2F3;
	<span style="color: #000000; font-weight: bold;">left</span>: <span style="color: #cc66cc;">50</span>%;
	<span style="color: #000000; font-weight: bold;">top</span>: <span style="color: #cc66cc;">50</span>%;
	<span style="color: #000000; font-weight: bold;">margin-top</span>: -200px; <span style="color: #808080; font-style: italic;">/* half total height - could be scripted if unknown but css is smoother and cooler */</span>
	<span style="color: #000000; font-weight: bold;">margin-left</span>: -350px; <span style="color: #808080; font-style: italic;">/* half total width */</span>
<span style="color: #66cc66;">&#125;</span></pre>
<p>With a bit of unobtrusive js to show/hide these two elements and wallah!</p>
<p><strong>IE6 craziness:</strong></p>
<pre class="css"><span style="color: #808080; font-style: italic;">/* IE6&lt; fixed positioning - kind of */</span>
* html #overlay, * html <span style="color: #cc00cc;">#dialog <span style="color: #66cc66;">&#123;</span></span>
	<span style="color: #000000; font-weight: bold;">position</span>: <span style="color: #993333;">absolute</span>;
<span style="color: #66cc66;">&#125;</span>
* html <span style="color: #cc00cc;">#dialog <span style="color: #66cc66;">&#123;</span></span>
	<span style="color: #000000; font-weight: bold;">top</span>: expression<span style="color: #66cc66;">&#40;</span>ignoreMe = <span style="color: #66cc66;">&#40;</span>document.documentElement<span style="color: #6666ff;">.scrollTop </span>? document.documentElement<span style="color: #6666ff;">.scrollTop </span>: document.body.scrollTop<span style="color: #66cc66;">&#41;</span>+ <span style="color: #66cc66;">&#40;</span>document.documentElement<span style="color: #6666ff;">.clientHeight </span>/ <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>It&#8217;s a little jumpy but all scripted versions of this kind of positioning have that effect.</p>
<p>Easy peasy Japanesey.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/overlays-and-fixed-positioning-including-ie6/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>png 8&#8217;s and alpha transparency</title>
		<link>http://www.byteclub.net/blog/mbrown/png-8s-and-alpha-transparency/</link>
		<comments>http://www.byteclub.net/blog/mbrown/png-8s-and-alpha-transparency/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 11:55:36 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>CSS</category>
	<category>Design</category>
	<category>pageup</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/png-8s-and-alpha-transparency/</guid>
		<description><![CDATA[Firstly, PageUp People has a new website and it&#8217;s pretty sexy.  The menu&#8217;s took some work to get right in IE6< - but nothing unusual there.
I have an interesting challenge at work at the moment, we are creating a new application that will act as a kind of portal for all the different applications [...]]]></description>
			<content:encoded><![CDATA[<p>Firstly, <a href="http://www.pageuppeople.com/">PageUp People has a new website</a> and it&#8217;s pretty sexy.  The menu&#8217;s took some work to get right in IE6< - but nothing unusual there.</p>
<p>I have an interesting challenge at work at the moment, we are creating a new application that will act as a kind of portal for all the different applications we offer.<br />
In this 'portal thingy', we'll have a collection of 'widgets'.<br />
To allow for rapid development and customisation of these widgets we need to be able to create a new one simply by adding a new entry into the Widget table.  This in itself poses interesting design challenges - You can't use background-images specific to any widget - they all need to be generic - The colors, number of rows, columns and amount of content is all unknown.  It means that I can't use background images like I normally would.</p>
<p>As it turns out PNG 8's support for Alpha Transparency enables us to create some nice images with gradient highlights to make generic images sexier.<br />
Using overflow to crop content and sizing all font's / padding in em's will mean we can control all aspects of the design from the CSS and a couple of inline widget-specific styles.</p>
<p>I'll put up an example at some point to put this in context.. But, PNG 8's alpha transparency has full support in all modern browsers except IE6< - But it degrades nicely in those browsers, all alpha channels are completely transparent similiar to .gif - on or off transparency. Similar to <a href="http://www.sitepoint.com/examples/8bit/">this Sitepoint example</a> but a bit more complex.<br />
I&#8217;ve had a quick look at using IE&#8217;s Alpha Image Loader filter to make the same thing work in IE6< but couldn&#8217;t seem to get it work.. </p>
<p>If all goes well we&#8217;ll have an efficient widget making machine.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/png-8s-and-alpha-transparency/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Page up on Prototype</title>
		<link>http://www.byteclub.net/blog/mbrown/page-up-on-prototype/</link>
		<comments>http://www.byteclub.net/blog/mbrown/page-up-on-prototype/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 23:43:02 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>Javascript</category>
	<category>pageup</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/page-up-on-prototype/</guid>
		<description><![CDATA[Prototype has been given the go-ahead for testing in page up admin system.  Yay, as it makes my job more enjoyable.
]]></description>
			<content:encoded><![CDATA[<p>Prototype has been given the go-ahead for testing in page up admin system.  Yay, as it makes my job more enjoyable.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/page-up-on-prototype/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Actually incorporating the Rich Text Editor</title>
		<link>http://www.byteclub.net/blog/mbrown/actually-incorporating-the-rich-text-editor/</link>
		<comments>http://www.byteclub.net/blog/mbrown/actually-incorporating-the-rich-text-editor/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 23:32:31 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>Usability</category>
	<category>Beloved Firefox</category>
	<category>CSS</category>
	<category>Javascript</category>
	<category>(X)HTML</category>
	<category>pageup</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/actually-incorporating-the-rich-text-editor/</guid>
		<description><![CDATA[May be more difficult than building it..
The rich text editor is built into an ASP &#8216;control&#8217; so it can be re-used and customized server-side, currently all of the HTML for the textarea, iframe and toolbars are put into the page through this control depending on it&#8217;s properties.  A script tag is embedded into the [...]]]></description>
			<content:encoded><![CDATA[<p>May be more difficult than building it..</p>
<p>The rich text editor is built into an ASP &#8216;control&#8217; so it can be re-used and customized server-side, currently all of the HTML for the textarea, iframe and toolbars are put into the page through this control depending on it&#8217;s properties.  A script tag is embedded into the page just below this HTML and links to an ASP page and the js is customized depending on variables in the session.</p>
<pre class="html4strict"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&#8220;text/javascript&#8221;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&#8220;functions.asp&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></pre>
<p>This is a fairly hefty script and I imagine, not being able to cached would slow down the pages considerably.</p>
<p>Putting the new editor into this control was pretty straightforward, include the link to the javascript if the control is used.  Edit the Draw() function to output:</p>
<pre class="html4strict"><span style="color: #009900;"><a href="http://december.com/html/4/element/textarea.html"><span style="color: #000000; font-weight: bold;">&lt;textarea</span></a> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&#8220;{id}&#8221;</span>, <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&#8220;{id}&#8221;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&#8220;height: {height}; width: {width};&#8221;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&#8220;PURichText&#8221;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>{content}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/textarea&gt;</span></span></pre>
<p>Simple, change those things and correct the links to the css and images and it should just work..</p>
<p>And it did, in Firefox, Safari and Opera.. IE had soiled it&#8217;s undergarments though.<br />
Ahhh, Quirks Mode!</p>
<p>The admin system was designed to work in Internet Explorer only, it was probably first built at a time when IE5.5 was the most widely used browser - And of course when IE6 came out it didn&#8217;t make much sense supporting two separate box models.</p>
<p>Don&#8217;t add a doctype and the page will continue to look the same in IE6 and any future releases of IE - it was probably the most logical choice at the time.  But of course now, we know better <img src='http://www.byteclub.net/blog/mbrown/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The only way to get cross-browser consistency and some of the more advanced features out the browser - you must render the page in standards-mode.  So it seems incorporating the editor has put another task on my agenda.  Fixing the styles across the whole admin system to work in standards-mode. This is a fairly big undertaking as the stylesheet is about 4000 lines and some of the styles are rendered out inline by the controls, so there will be lots of digging to fix all of the styling that was relying on IE&#8217;s buggy implementation.</p>
<p>It was interesting to see how badly the page broke just by adding the doctype.</p>
<p>After fixing the styling issues to work in Standards-mode and incorporating the editor, I will continue to make the rest of the controls and pages cross-browser compatible.  It&#8217;s not a goal too unrealistic - The system as a whole is not all too far off being cross-browser, just A Lot of little things that are sometimes hard to get to.</p>
<p>document.all[] is used all over the place, so I just need to go through and add id&#8217;s to all the elements that were being referenced by name attribute alone - and change the document.all&#8217;s to document.getElementById()</p>
<p>Any traces of Active X controls need to be killed, burned and holy water sprinkled on the ashes.</p>
<p>Any attachEvent&#8217;s will need to become a cross-browser alternative.</p>
<p>Dialogs are opened using IE&#8217;s showModalDialog functions these all need to be replaced with the standard window.open method.</p>
<p>The innerText property is used to get just the textNode&#8217;s values from within an element, being IE only i&#8217;ll need to change any uses of this to a little DOM walking.</p>
<p>Just lots of little things.. may the force be with me.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/actually-incorporating-the-rich-text-editor/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Rich Text Editor.. and another iteration</title>
		<link>http://www.byteclub.net/blog/mbrown/rich-text-editor-and-another-iteration/</link>
		<comments>http://www.byteclub.net/blog/mbrown/rich-text-editor-and-another-iteration/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 10:31:30 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
	<category>Javascript</category>
	<category>(X)HTML</category>
	<category>pageup</category>
		<guid isPermaLink="false">http://www.byteclub.net/blog/mbrown/rich-text-editor-and-another-iteration/</guid>
		<description><![CDATA[The Rich Text Editor in all it&#8217;s glory..
One thing I haven&#8217;t figured out is how to register key event listeners on the iframe&#8217;s in Opera.
I managed to get editorKeyUpHandler being called in Safari and Firefox but haven&#8217;t yet tamed Opera - Any clues?
I am loving Prototype, as I&#8217;ve learnt more about it over the last [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.yellowshoe.com.au/examples/wysiwyg/" style="font-weight: bold;">Rich Text Editor</a> in all it&#8217;s glory..</p>
<p>One thing I haven&#8217;t figured out is how to register key event listeners on the iframe&#8217;s in Opera.<br />
I managed to get editorKeyUpHandler being called in Safari and Firefox but haven&#8217;t yet tamed Opera - Any clues?</p>
<p>I am loving Prototype, as I&#8217;ve learnt more about it over the last week - I&#8217;ve updated the script to use more of it&#8217;s Class, DOM and Event functions.  Writing cross-browser OO javascript has never been so easy.</p>
<p>The <a href="http://www.pageup.com.au/">pageup website</a> is about to get a facelift which is looking really good.  Also, a section of the pageup people application named &#8216;the Hiring Manager Interface&#8217; which is a subset of features of the app - Is soon to be put into a testing environment so my browser-compatible updates can be tested.</p>
<p>I&#8217;m enjoying my work at pageup, and enjoying doing more work with javascript.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.byteclub.net/blog/mbrown/rich-text-editor-and-another-iteration/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
