<?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>Thronic.com &#187; WebDev</title>
	<atom:link href="http://thronic.com/category/development/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://thronic.com</link>
	<description>Personal Computing and Development by Dag J. Nedrelid</description>
	<lastBuildDate>Wed, 28 Apr 2010 12:21:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Resize a div layer with javascript</title>
		<link>http://thronic.com/2010/development/resize-a-div-layer-with-javascript/</link>
		<comments>http://thronic.com/2010/development/resize-a-div-layer-with-javascript/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 14:19:34 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=199</guid>
		<description><![CDATA[Formula and example included.
&#160;
&#160;

Pseudo formula:

// Acronyms used to save space.
New style.left = PCW+((E.X-PCX)-(MDX-PCX))
New style.top = PCH+((E.Y-PCY)-(MDY-PCY))
// PCW/PCH = Previous Container Width/Height.
// E.X/E.Y = Event X/Y.
// PCX/PCY = Previous Container Left/Top.
// MDX/MDY = Mouse Down X/Y (where you clicked).


With this formula you will resize the layer relative to where you clicked on it. An extended version [...]]]></description>
			<content:encoded><![CDATA[<p>Formula and example included.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span id="more-199"></span></p>
<p>Pseudo formula:</p>
<blockquote><p style="margin:0px">
// Acronyms used to save space.<br />
New style.left = PCW+((E.X-PCX)-(MDX-PCX))<br />
New style.top = PCH+((E.Y-PCY)-(MDY-PCY))</p>
<p>// PCW/PCH = Previous Container Width/Height.<br />
// E.X/E.Y = Event X/Y.<br />
// PCX/PCY = Previous Container Left/Top.<br />
// MDX/MDY = Mouse Down X/Y (where you clicked).
</p>
</blockquote>
<p>With this formula you will resize the layer relative to where you clicked on it. An extended version of the movement formula. In effect it will take the existing width/height and add the amount of pixel movement as a positive or negative number.</p>
<p><a href="http://thronic.com/pubfiles/divresize.html" target="_blank">My example</a>, just view the source to see my code.</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2010/development/resize-a-div-layer-with-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving a div layer with javascript</title>
		<link>http://thronic.com/2010/development/moving-a-div-layer-with-javascript/</link>
		<comments>http://thronic.com/2010/development/moving-a-div-layer-with-javascript/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 14:11:14 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=198</guid>
		<description><![CDATA[Formula and example included.
&#160;
&#160;

Pseudo formula:

New style.left = MovingMouseX-(PushedMouseX-PreviousStyleLeft)
New style.top = MovingMouseY-(PushedMouseY-PreviousStyleTop)


With this formula you will move the layer relative to where you clicked on it.
My example, just view the source to see my code.
]]></description>
			<content:encoded><![CDATA[<p>Formula and example included.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span id="more-198"></span></p>
<p>Pseudo formula:</p>
<blockquote><p style="margin:0px">
New style.left = MovingMouseX-(PushedMouseX-PreviousStyleLeft)<br />
New style.top = MovingMouseY-(PushedMouseY-PreviousStyleTop)
</p>
</blockquote>
<p>With this formula you will move the layer relative to where you clicked on it.</p>
<p><a href="http://thronic.com/pubfiles/divmove.html" target="_blank">My example</a>, just view the source to see my code.</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2010/development/moving-a-div-layer-with-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE and PHP sessions</title>
		<link>http://thronic.com/2010/development/ie-and-php-sessions/</link>
		<comments>http://thronic.com/2010/development/ie-and-php-sessions/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 12:46:35 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=180</guid>
		<description><![CDATA[I ran into a strange encounter after testing out a session based login system through an IE browser. I had been working mostly with it in other browsers, mainly Firefox where it was working fine.

IE would not recognize the session at all. IE did not block the cookies either, and I tested the SID constant [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into a strange encounter after testing out a session based login system through an IE browser. I had been working mostly with it in other browsers, mainly Firefox where it was working fine.</p>
<p><span id="more-180"></span></p>
<p>IE would not recognize the session at all. IE did not block the cookies either, and I tested the SID constant thoroughly, it was not getting populated either.</p>
<p><strong>The problem</strong><br />
In the same browser application I had open &#8211; just in another tab &#8211; I was logged into a HTTP AUTH session on another site, though under the same domain.</p>
<p>Of some reason IE seems to mix up the processes when opening up different tabs or windows through the same opened application. This way it doesn&#8217;t seem to properly keep track of which sessions belong to which processes.</p>
<p><strong>The solution</strong><br />
Exit the IE application and start a new one. If I open up my session based website in the first tab, it works. It also works fine after opening the HTTP AUTH website in a second tab. But I don&#8217;t know how stable this is.</p>
<p>Just another IE annoyance&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2010/development/ie-and-php-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress 2.8.6 Spell Check Languages</title>
		<link>http://thronic.com/2009/development/webdev/wordpress-2-8-6-spell-check-languages/</link>
		<comments>http://thronic.com/2009/development/webdev/wordpress-2-8-6-spell-check-languages/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 16:33:54 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=177</guid>
		<description><![CDATA[When trying to add norwegian as the default language for one of my wordpress sites, I had problems finding documentation for where the language list actually is located. Tracking it down myself become a long task as well. Here is how you can edit the languages for your wordpress system.

The most logical place to look, [...]]]></description>
			<content:encoded><![CDATA[<p>When trying to add norwegian as the default language for one of my wordpress sites, I had problems finding documentation for where the language list actually is located. Tracking it down myself become a long task as well. Here is how you can edit the languages for your wordpress system.</p>
<p><span id="more-177"></span></p>
<p>The most logical place to look, is in:<br />
<code>wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js</code></p>
<p>Changes made there however doesn&#8217;t reflect in the administration editor. You also need to make changes in:<br />
<code>/wp-admin/includes/post.php</code></p>
<p>By default, spell checker uses the google gmail engine. This does not support the norwegian language in my case. So I changed over to the pspell engine. This is what I did to make that work for me:</p>
<blockquote><p><code>(on the server, a debian box)<br />
// Check first if you already have your language available.<br />
#aspell dicts<br />
<em>-bash: aspell: command not found</em></p>
<p>// I did not, so I had to install it and make PHP support it as well.<br />
#apt-get install aspell-no php5-pspell</p>
<p>// Reload the apache web server to reflect PHP update.<br />
#/etc/init.d/apache2 reload</p>
<p>// Verify installation<br />
#aspell dicts<br />
<em>nb<br />
nn<br />
no</em></p>
<p>... Looks good.</code></p></blockquote>
<p>Next you change the engine in this file:<br />
/wp-includes/js/tinymce/plugins/spellchecker/config.php</p>
<p>from: $config['general.engine'] = &#8216;GoogleSpell&#8217;;<br />
to:	$config['general.engine'] = &#8216;PSpell&#8217;;</p>
<p>That&#8217;s it.</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2009/development/webdev/wordpress-2-8-6-spell-check-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String encryption in PHP</title>
		<link>http://thronic.com/2009/development/string-encryption-in-php/</link>
		<comments>http://thronic.com/2009/development/string-encryption-in-php/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 23:05:50 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=150</guid>
		<description><![CDATA[I&#8217;ve been working on 2 PHP functions that can be used to encrypt and decrypt alphanumeric strings between web pages. This is used for e.g. Captcha codes that you can generate yourself and encrypt / decrypt with these functions.

How does it work?
A key is generated on the first page that also encrypts the string (or [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on 2 PHP functions that can be used to encrypt and decrypt alphanumeric strings between web pages. This is used for e.g. Captcha codes that you can generate yourself and encrypt / decrypt with these functions.</p>
<p><span id="more-150"></span></p>
<p><strong>How does it work?</strong><br />
A key is generated on the first page that also encrypts the string (or code if you want). The same key is used on the second page to decrypt it. Consider the functions below for more information. On the bottom you&#8217;ll find a test script to see the effect of the functions.<br />
<strong><br />
Generating a random string value in PHP (e.g a Captcha code):</strong></p>
<blockquote>
<pre><code>function CreateRandomStringPHP() {
  $code = substr(str_shuffle('abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'),0,5);
  return $code;
}</code></pre>
</blockquote>
<p>If you are using another language, consider using a function like this:</p>
<blockquote>
<pre><code>function CreateRandomString() {
  $Characters = array(
  'a','b','c','d','e','f','g','h','i','j','k','m','n','p','q','r','s','t','u','v','w','x','y','z',
  'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z',
  '2','3','4','5','6','7','8','9');

  $Code = '';
  for( $loop_b = 1; $loop_b &lt;= 5; $loop_b++ ) {
    $Code .= $Characters[mt_rand(0,count($Characters)-1)];
  }

  return $Code;
}</code></pre>
</blockquote>
<p>Both of the above functions will generate a 5-length value. This will provide one value out of 550731776 possible combinations which should be enough for most needs.</p>
<p><strong>The lock (or encrypt) function:</strong></p>
<blockquote>
<pre><code>/*
  str LockCode(str $code, str $key)

  A codelock function (or encryption if you want).
  I wrote because I wanted a nice solution for keeping codes
  such as Captcha codes safe and secure for transferring between
  sites.

  It takes a $code of random length and locking $key as parameters.
  You'll need to use the same key to unlock it.

  The value this function returns, is simply a set of location
  coordinates in the key where the characters of the $code is found.
  This is again merged together with the lengths of every coordinate,
  since every coordinate can be 1 or 2 in length as long as the $key
  is under 100 characters in length (0-99).

  In the end, it should provide a safely locked $code, based on that
  you keep the $key hidden. Do NOT show it in your HTML. The key
  used in this example, with 56 alphanumeric characters where I have
  stripped out the following chars: 1, I, l, o, O and 0 (they are
  unpractical) has 7,9164324866862966607842406018063e+97
  combinations. This should be enough to keep the $code safe...
*/
function LockCode($code,$key) {
  $key_chars = str_split($key);
  $code_chars = str_split($code);
  $LockedKeyCoords = '';
  $LockedCoordLengths = '';

  foreach($code_chars as $c_char) {
    for($loop_a=0; $loop_a&lt;count($key_chars); $loop_a++) {
      if($c_char==$key_chars[$loop_a]) {
        $LockedKeyCoords .= (string)$loop_a;
        $LockedCoordLengths .= (string)strlen($loop_a);
      }
    }
  }

  return $LockedKeyCoords . $LockedCoordLengths;
}</code></pre>
</blockquote>
<p><strong>The unlock (or decrypt) function:</strong></p>
<blockquote>
<pre><code>/*
  str UnlockCode(str $coords, str $key, int $keylength)

  The unlock function introduces a new parameter: $Keylength.
  This defines how many characters your $code was before you locked it.
*/
function UnlockCode($coords,$key,$keylength) {
  $key_chars = str_split($key);
  $keylengths = str_split(substr($coords,-$keylength));
  $UnlockedCode = '';

  foreach($keylengths as $length) {
    $UnlockedCode .= $key_chars[(int)substr($coords,0,(int)$length)];
    $coords = substr($coords,(int)$length);
  }

  return $UnlockedCode;
}</code></pre>
</blockquote>
<p>PHP code to test with:</p>
<blockquote>
<pre><code>/*
  The $Key MUST contain the characters you use to create the
  code with. Using the same string as you did to make the $Code
  with is a good choice. Generate a key on a standalone page,
  then use the same key on the page that locks the string, and
  on the page that unlocks the string.

  If you want a new random key every time you use the locking
  functions, you'll have to use a database system to store and
  retrieve them. And use sessions for identifying the keys. This
  would make a separate article, so I won't explain how to do it
  here.
*/
$Key = str_shuffle('abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789');

// Test it out.
$Code = CreateRandomStringPHP();
$LockedCode = LockCode($Code,$Key);
echo 'Key used: '. $Key .'&lt;br&gt;&lt;br&gt;';
echo 'New code: '. $Code .'&lt;br&gt;';
echo 'Locked code: '. $LockedCode .'&lt;br&gt;';
echo 'Unlocked code: '. UnlockCode($LockedCode,$Key,5) .'&lt;br&gt;&lt;br&gt;';
echo 'Reload this page to generate new results.';</code></pre>
</blockquote>
<p>The above testing code would produce something like this:</p>
<blockquote>
<pre><code>Key used: F7AYMQTscfHEPvSBXw5C3eWhj6kUxbn2ayrtGzNiqDV4m9ugJLKZpR8d

New code: c42yV
Locked code: 84331334212222
Unlocked code: c42yV</code></pre>
</blockquote>
<p>You can try it out yourself <a href="/pubfiles/string_encryption_example.php" target="_blank">here</a> (opens in a new window).</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2009/development/string-encryption-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alphanumeric Captcha values in PHP</title>
		<link>http://thronic.com/2009/development/alphanumeric-captcha-values-in-php/</link>
		<comments>http://thronic.com/2009/development/alphanumeric-captcha-values-in-php/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 13:47:31 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=148</guid>
		<description><![CDATA[In my former post I wrote about making Captcha solutions without the need for database storage. I wrote an example exclusively based on pure numeric values. I&#8217;d like to illustrate how you could create alphanumeric Captcha values instead of numeric ones, as this might be of interest for someone who would like a more fully [...]]]></description>
			<content:encoded><![CDATA[<p>In my former post I wrote about making Captcha solutions without the need for database storage. I wrote an example exclusively based on pure numeric values. I&#8217;d like to illustrate how you could create alphanumeric Captcha values instead of numeric ones, as this might be of interest for someone who would like a more fully fledged solution.</p>
<p><span id="more-148"></span></p>
<p>In my last article, I used the following code to create a random numeric value:</p>
<blockquote><p>// 1000-9999 gives 5832 possibilies, strong enough for most captcha uses.<br />
$VerificationCode = rand(1000, 9999);</p></blockquote>
<p>You can use the following code instead to create a random alphanumeric value instead:</p>
<blockquote>
<pre><code>// This function will return a 5-length alphanumeric value.
// It will produce one out of 550731776 possible values.
function createCaptchaCode() {
  $stringChoices = array(
  'a','b','c','d','e','f','g','h','i','j','k','m','n','p','q','r','s','t','u','v','w','x','y','z',
  'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z',
  '2','3','4','5','6','7','8','9');

  $code = '';
  for( $loop_b = 1; $loop_b &lt;= 5; $loop_b++ ) {
    $code .= $stringChoices[mt_rand(0,count($stringChoices)-1)];
  }
  return $code;
}</code></pre>
</blockquote>
<p>I suppose the above function could be written in PHP as simple as this:</p>
<blockquote><pre><code>function createCaptchaCode2() {
	$code = substr(str_shuffle('abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'),0,5);
	return $code;
}</code></pre>
</blockquote>
<p>You might have noticed that the following characters are missing: 1, I, l, o, O and 0. This is to prevent unnecessary user frustration (they are very similar).</p>
<p>This covers how to generate a random alphanumeric value, what about encryption when you&#8217;re sending it between web pages? This subject is bigger than I thought it would be, so I&#8217;m going to make a new article on it. </p>
<p>You&#8217;ll find it <a href="http://thronic.com/articles/development/string-encryption-in-PHP/">here</a> when it&#8217;s ready.</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2009/development/alphanumeric-captcha-values-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Your own numeric Captcha in PHP</title>
		<link>http://thronic.com/2009/development/your-own-numeric-captcha-in-php/</link>
		<comments>http://thronic.com/2009/development/your-own-numeric-captcha-in-php/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 17:06:13 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=145</guid>
		<description><![CDATA[The purpose with a Captcha user control is to give the user a challenge that a computer normally can&#8217;t resolve. In most cases this means an image with random letters and numbers on it. This is rather easy to set up without any need for a database, that many use as a solution to handle [...]]]></description>
			<content:encoded><![CDATA[<p>The purpose with a Captcha user control is to give the user a challenge that a computer normally can&#8217;t resolve. In most cases this means an image with random letters and numbers on it. This is rather easy to set up without any need for a database, that many use as a solution to handle the encrypted messaging that has to happen between part1 and part2 in a Captcha utility.</p>
<p><span id="more-145"></span></p>
<p>The idea is to send the actual answer to the other side, but with a simple encryption.</p>
<blockquote><p>// First page variables.</p>
<p>// Create the random numeric code that a user/visitor will have to confirm it.<br />
// 1000-9999 gives 5832 possibilies, strong enough for most captcha uses.<br />
$VerificationCode = rand(1000, 9999);</p>
<p>// This is not a live example, so we&#8217;ll give $UserInput a manual value.<br />
// In your own script, you would capture what the user had typed in.<br />
$UserInput = &#8216;1234&#8242;;</p>
<p>// Create a key that only the other side will know.<br />
// Send this key together with the answer the user provided.<br />
$MySeed = 12345;<br />
$VerificationKey = ($VerificationCode + ($MySeed*(int)date(&#8216;d&#8217;)));</p>
<p>/*<br />
The key is now made based on your custom value ($MySeed) that only YOU will know. To hack the key, the hacker would have to know it. AND would have to know what you do with it. In this example we keep it dynamic from day to day by multiplying it with the current day extracted from the current date. It&#8217;s easy to figure out something else that would be much harder to guess.</p>
<p>Now you send both $UserInput and $VerificationKey to the next page.<br />
*/
</p></blockquote>
<blockquote><p>// Second page variables and handling.</p>
<p>// This naturally has to match the value in page one.<br />
$MySeed = 12345;</p>
<p>// Decrypt the key<br />
$ReceivedKey = ((int)$VerificationKey &#8211; ($MySeed*(int)date(&#8216;d&#8217;)));</p>
<p>// Now you can compare the user input with $ReceivedKey<br />
$VerificationStatus = ((int)$UserInput==$ReceivedKey?true:false);</p>
<p>echo ($VerificationStatus?&#8217;Accepted&#8217;:'Not accepted&#8217;);</p></blockquote>
<p><strong>Representing the random code to the user</strong><br />
When you have created a random number and/or code you can represent it to your visitor like this: <img src="/pubfiles/Verif/verif.php?c=1234" alt="" />. Images are widely used to ask Captcha questions since they are binary with different random colors and shapes that&#8217;s hard to scan for a bot that&#8217;s scanning the Internet to collect or spam information.</p>
<p><strong>Can I use your image script to show my random codes?</strong><br />
The image script I&#8217;ve used above takes a GET variable and prints it on a chosen image. It&#8217;s of no good use to anyone else other than an example, as it would be simple to just read the code right out of your source code for a spam-bot. So please make your own <img src='http://thronic.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Download your own copy WITH deciphering!</strong><br />
To make it easy for you, you can download the image script <a href="/pubfiles/Verif/verif.zip">here</a> and adapt it to your own needs. <em>(This image script is adjusted to receive a key and view it dechiphered, adjust after your own needs. Bots will NOT be able to scan the code from THIS script, unless they know your way of encrypting the key).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2009/development/your-own-numeric-captcha-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DHTML Flyout Menus</title>
		<link>http://thronic.com/2009/development/dhtml-flyout-menus/</link>
		<comments>http://thronic.com/2009/development/dhtml-flyout-menus/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 15:16:54 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=140</guid>
		<description><![CDATA[A script I made ages ago for all my DHTML flyout menu needs. It utilizes csshover.htc which you can read more about here. Easy to implement on any web site and useful as an example on how to use the csshover.htc to create your own dynamic HTML menus.

You can try out the script here, and/or [...]]]></description>
			<content:encoded><![CDATA[<p>A script I made ages ago for all my DHTML flyout menu needs. It utilizes csshover.htc which you can read more about <a href="http://www.xs4all.nl/~peterned/csshover.html" target="_blank">here</a>. Easy to implement on any web site and useful as an example on how to use the csshover.htc to create your own dynamic HTML menus.</p>
<p><span id="more-140"></span></p>
<p>You can try out the script <a href="/pubfiles/DHTML-Menu/Menu.html" target="_blank">here</a>, and/or download it <a href="/pubfiles/DHTML-Menu/DHTML_Menu.zip">here</a>.</p>
<p>Illustrational images:<br />

<a href='http://thronic.com/2009/development/dhtml-flyout-menus/attachment/dhtml_menu_1/' title='Horizontal flyout menu'><img width="150" height="150" src="http://thronic.com/wp-content/uploads/2009/06/dhtml_menu_1-150x150.gif" class="attachment-thumbnail" alt="" title="Horizontal flyout menu" /></a>
<a href='http://thronic.com/2009/development/dhtml-flyout-menus/attachment/dhtml_menu_2/' title='Vertical flyout menu'><img width="150" height="150" src="http://thronic.com/wp-content/uploads/2009/06/dhtml_menu_2-150x150.gif" class="attachment-thumbnail" alt="" title="Vertical flyout menu" /></a>
<a href='http://thronic.com/2009/development/dhtml-flyout-menus/attachment/dhtml_menu_3/' title='Simplistic menu HTML'><img width="150" height="150" src="http://thronic.com/wp-content/uploads/2009/06/dhtml_menu_3-150x150.gif" class="attachment-thumbnail" alt="" title="Simplistic menu HTML" /></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2009/development/dhtml-flyout-menus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disabling WordPress Post Revisions</title>
		<link>http://thronic.com/2009/development/webdev/disabling-wordpress-post-revisions/</link>
		<comments>http://thronic.com/2009/development/webdev/disabling-wordpress-post-revisions/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 23:24:37 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=124</guid>
		<description><![CDATA[WordPress 2.8 has what I would call a nasty default habit of saving way too many drafts / revisions during post editing. -
I disabled this by adding the following to my wp-config file:
define(&#8216;WP_POST_REVISIONS&#8217;,false);
To delete all the revisions you already have in your entire WordPress database, insert and run the following query in your DBMS:
DELETE FROM [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress 2.8 has what I would call a nasty default habit of saving way too many drafts / revisions during post editing. <span id="more-124"></span><span style="color: #ffffff;">-</span></p>
<p>I disabled this by adding the following to my wp-config file:</p>
<blockquote><p>define(&#8216;WP_POST_REVISIONS&#8217;,false);</p></blockquote>
<p>To delete all the revisions you already have in your entire WordPress database, insert and run the following query in your DBMS:</p>
<blockquote><p>DELETE FROM wp_posts WHERE post_type = &#8216;revision&#8217;</p></blockquote>
<p>This will still keep your single autosave/draft.</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2009/development/webdev/disabling-wordpress-post-revisions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE7 and onclick events</title>
		<link>http://thronic.com/2008/development/javascript/ie7-and-onclick-events/</link>
		<comments>http://thronic.com/2008/development/javascript/ie7-and-onclick-events/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 01:06:35 +0000</pubDate>
		<dc:creator>Dag Jonny Nedrelid</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://thronic.com/?p=60</guid>
		<description><![CDATA[The onclick event is getting more used than ever before these days as AJAX is becoming increasingly used for interactive web site functions. But there is a problem sometimes when using it with IE7.
An onclick event will work perfectly in Firefox, but when you try in Internet Explorer 7 (and maybe 6) it will seemingly [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The onclick event is getting more used than ever before these days as AJAX is becoming increasingly used for interactive web site functions. But there is a problem sometimes when using it with IE7.</strong></p>
<p>An onclick event will work perfectly in Firefox, but when you try in Internet Explorer 7 (and maybe 6) it will seemingly bug out without any error or warnings at all.</p>
<p><span id="more-60"></span></p>
<p><strong>Reason</strong><br />
This is simply because of how IE decides to &#8220;remember&#8221; visited links (the one you call in the AJAX function), and it simply don&#8217;t run your onclick event more than perhaps once per click.</p>
<p>I solved this by adding something I&#8217;d like to call a no-cache-seed to the url that will be unique for every click, forcing the browser to handle every event as a new URL. Then it worked perfectly.</p>
<p>The following javascript snippet will create a variable with the number of seconds since January 1, 1970. Needless to say it will always be different unless you demand reaction times under 1 millisecond which is unrealistic from a single user.</p>
<blockquote><p><code>var currentTime = new Date();<br />
var nocacheseed = currentTime.getTime();</code></p></blockquote>
<p>Code in effect:<br />
http://example.com/file.php?foo=1&amp;bar=1&amp;nocacheseed=<script type="text/javascript">// <![CDATA[
  var currentTime = new Date();  var nocacheseed = currentTime.getTime(); document.write(nocacheseed);
// ]]&gt;</script></p>
<p>Reload the page to see how it is different every time.</p>
]]></content:encoded>
			<wfw:commentRss>http://thronic.com/2008/development/javascript/ie7-and-onclick-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
