<?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>Webmaster Sucks &#187; javascript</title>
	<atom:link href="http://www.webmastersucks.com/tags/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webmastersucks.com</link>
	<description>Here I share stuff I used to suck at as a novice webmaster..</description>
	<lastBuildDate>Tue, 11 May 2010 10:56:35 +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>Using Keyboard Shortcuts in Javascript</title>
		<link>http://www.webmastersucks.com/using-keyboard-shortcuts-in-javascript/</link>
		<comments>http://www.webmastersucks.com/using-keyboard-shortcuts-in-javascript/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 20:16:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Html & Javascript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery framework]]></category>
		<category><![CDATA[keyboard codes]]></category>
		<category><![CDATA[keyboard shorcuts]]></category>

		<guid isPermaLink="false">http://www.webmastersucks.com/?p=167</guid>
		<description><![CDATA[
			
				
			
		
New type of web sites use keyboards for some functions. It is always helping more usable. I hope this codes will help your web site.
In the following example, we&#8217;re simply going to verify the key pressed down by the user. If the key pressed are Ctrl+S, a function will be triggered.
var isCtrl = false;
document.onkeyup=function(e) {
    [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmastersucks.com%2Fusing-keyboard-shortcuts-in-javascript%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmastersucks.com%2Fusing-keyboard-shortcuts-in-javascript%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>New type of web sites use keyboards for some functions. It is always helping more usable. I hope this codes will help your web site.</p>
<p>In the following example, we&#8217;re simply going to verify the key pressed down by the user. If the key pressed are Ctrl+S, a function will be triggered.</p>
<pre class="brush: jscript;">var isCtrl = false;
document.onkeyup=function(e) {
    if(e.which == 17) isCtrl=false;
}document.onkeydown=function(e){
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 &amp;&amp; isCtrl == true) {
         alert('Keyboard shortcuts are cool!');
         return false;
    }
}</pre>
<p><strong>Example with the JQuery framework</strong></p>
<pre class="brush: jscript;">var isCtrl = false;$(document).keyup(function (e) {
if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 &amp;&amp; isCtrl == true) {
        alert('Keyboard shortcuts + JQuery are even more cool!');
return false;
}
});</pre>
<p>For more and keyboard shorcuts codes <a href="http://www.catswhocode.com/blog/using-keyboard-shortcuts-in-javascript" target="_blank">click here&gt;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmastersucks.com/using-keyboard-shortcuts-in-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Countdown Date &amp; Time JavaScript</title>
		<link>http://www.webmastersucks.com/countdown-date-time-javascript/</link>
		<comments>http://www.webmastersucks.com/countdown-date-time-javascript/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 16:57:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Html & Javascript]]></category>
		<category><![CDATA[countdown]]></category>
		<category><![CDATA[countdown date]]></category>
		<category><![CDATA[countdown javascript]]></category>
		<category><![CDATA[countdown time]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.webmastersucks.com/?p=158</guid>
		<description><![CDATA[
			
				
			
		
I need javascript to countdown a date but with time. I search a lot and find a solution. Here it is  
You can use in your HTML file:
Dont worry! Only &#60;script language=&#34;JavaScript&#34;&#62;
TargetDate = &#34;6/11/2010 1:00&#34;;
BackColor = &#34;white&#34;;
ForeColor = &#34;navy&#34;;
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = &#34;%%D%% Day, %%H%% Hour, %%M%% Minute, %%S%% Second [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmastersucks.com%2Fcountdown-date-time-javascript%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmastersucks.com%2Fcountdown-date-time-javascript%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I need javascript to countdown a date but with time. I search a lot and find a solution. Here it is <img src='http://www.webmastersucks.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>You can use in your HTML file:</strong></p>
<pre class="brush: jscript;">Dont worry! Only &lt;script language=&quot;JavaScript&quot;&gt;
TargetDate = &quot;6/11/2010 1:00&quot;;
BackColor = &quot;white&quot;;
ForeColor = &quot;navy&quot;;
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = &quot;%%D%% Day, %%H%% Hour, %%M%% Minute, %%S%% Second &quot;;
FinishMessage = &quot;World cup start..&quot;;
&lt;/script&gt;
&lt;script language=&quot;JavaScript&quot; src=&quot;countdown.js&quot;&gt;&lt;/script&gt; left to begin World Cup 2010.</pre>
<p><span id="more-158"></span><br />
<strong>countdown.js</strong></p>
<pre class="brush: jscript;">/*
Author: Robert Hashemian
&lt;a href=&quot;http://www.hashemian.com/&quot;&gt;http://www.hashemian.com/&lt;/a&gt;

You can use this code in any manner so long as the author's
name, Web address and this disclaimer is kept intact.
*/

function calcage(secs, num1, num2) {
  s = ((Math.floor(secs/num1))%num2).toString();
  if (LeadingZero &amp;&amp; s.length &lt; 2)
    s = &quot;0&quot; + s;
  return &quot;&lt;b&gt;&quot; + s + &quot;&lt;/b&gt;&quot;;
}

function CountBack(secs) {
  if (secs &lt; 0) {
    document.getElementById(&quot;cntdwn&quot;).innerHTML = FinishMessage;
    return;
  }
  DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000));
  DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24));
  DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60));
  DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60));

  document.getElementById(&quot;cntdwn&quot;).innerHTML = DisplayStr;
  if (CountActive)
    setTimeout(&quot;CountBack(&quot; + (secs+CountStepper) + &quot;)&quot;, SetTimeOutPeriod);
}

function putspan(backcolor, forecolor) {
 document.write(&quot;&lt;span id='cntdwn' style='background-color:&quot; + backcolor +
                &quot;; color:&quot; + forecolor + &quot;'&gt;&lt;/span&gt;&quot;);
}

if (typeof(BackColor)==&quot;undefined&quot;)
  BackColor = &quot;white&quot;;
if (typeof(ForeColor)==&quot;undefined&quot;)
  ForeColor= &quot;black&quot;;
if (typeof(TargetDate)==&quot;undefined&quot;)
  TargetDate = &quot;12/31/2020 5:00 AM&quot;;
if (typeof(DisplayFormat)==&quot;undefined&quot;)
  DisplayFormat = &quot;%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.&quot;;
if (typeof(CountActive)==&quot;undefined&quot;)
  CountActive = true;
if (typeof(FinishMessage)==&quot;undefined&quot;)
  FinishMessage = &quot;&quot;;
if (typeof(CountStepper)!=&quot;number&quot;)
  CountStepper = -1;
if (typeof(LeadingZero)==&quot;undefined&quot;)
  LeadingZero = true;
CountStepper = Math.ceil(CountStepper);
if (CountStepper == 0)
  CountActive = false;
var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
putspan(BackColor, ForeColor);
var dthen = new Date(TargetDate);
var dnow = new Date();
if(CountStepper&gt;0)
  ddiff = new Date(dnow-dthen);
else
  ddiff = new Date(dthen-dnow);
gsecs = Math.floor(ddiff.valueOf()/1000);
CountBack(gsecs);
</pre>
<p>Script Author: <a href="http://www.hashemian.com/" target="_blank">Robert Hashemian</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmastersucks.com/countdown-date-time-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>User Login Form with Javascript Md5</title>
		<link>http://www.webmastersucks.com/user-login-form-with-javascript-md5/</link>
		<comments>http://www.webmastersucks.com/user-login-form-with-javascript-md5/#comments</comments>
		<pubDate>Sun, 31 May 2009 14:48:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[javascript md5]]></category>
		<category><![CDATA[login form]]></category>
		<category><![CDATA[md5]]></category>

		<guid isPermaLink="false">http://www.webmastersucks.com/?p=20</guid>
		<description><![CDATA[
			
				
			
		
Web servers uses Plain-Text form based authentication. If an attacker with access to the network traffic to and from the target host may be able to obtain login credentials for other users by sniffing the network traffic. Solutions is data sent via HTML login forms is encrypted before being sent from the client to the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.webmastersucks.com%2Fuser-login-form-with-javascript-md5%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.webmastersucks.com%2Fuser-login-form-with-javascript-md5%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Web servers uses Plain-Text form based authentication. If an attacker with access to the network traffic to and from the target host may be able to obtain login credentials for other users by sniffing the network traffic. Solutions is data sent via HTML login forms is encrypted before being sent from the client to the host. We solve this problem using encoding form with md5. But there is no standart md5() function in javascript, we find javascript md5 function with a little search (<a href="http://www.miekenet.de/publikationen/publi01.html">Md5 mit Javascript</a>). We create a hidden form to our secure login. When we submit the forum our code change our &#8220;user&#8221; and &#8220;password&#8221; to md5 and send with hidden form encoded values.</p>
<p><strong>Our Login Code (login.html)</strong></p>
<pre class="brush: xml;">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Login Form&lt;/title&gt;
&lt;script language=&quot;javascript&quot; src=&quot;md5.js&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;javascript&quot;&gt;
&lt;!--
function passResponse() {
document.hform.user.value = MD5(document.login.user_temp.value);
document.hform.pass.value = MD5(document.login.pass_temp.value);
document.login.pass_temp.value = &quot;&quot;;
document.hform.submit();

}
// --&gt;
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;form name=&quot;login&quot;&gt;
Username:
&lt;input type=&quot;text&quot; name=&quot;user_temp&quot; size=32 maxlength=32&gt;&lt;br&gt;
Password:
&lt;input type=&quot;password&quot; name=&quot;pass_temp&quot; size=32 maxlength=32&gt;&lt;br&gt;
&lt;input onClick=&quot;passResponse(); return false;&quot; type=&quot;submit&quot; name=&quot;submitbtn&quot; value=&quot;Login now&quot;&gt;
&lt;/form&gt;
&lt;form action=&quot;login.php&quot; METHOD=&quot;POST&quot; name=&quot;hform&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;user&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;pass&quot;&gt;
&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>login.php </p>
<pre class="brush: php;">
&lt;?
$user = $_POST[&quot;user&quot;];
$pass = $_POST[&quot;pass&quot;];
mysql_query(&quot;SELECT * FROM users WHERE MD5(username) = '$user' AND password = '$pass'&quot;);
//... Code is continue ...
?&gt;
</pre>
<p><strong>md5.js file</strong></p>
<pre class="brush: jscript;">
/*
 *  md5.js 1.0b 27/06/96
 *
 * Javascript implementation of the RSA Data Security, Inc. MD5
 * Message-Digest Algorithm.
 *
 * Copyright (c) 1996 Henri Torgemane. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for any purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies.
 *
 * Of course, this soft is provided &quot;as is&quot; without express or implied
 * warranty of any kind.
 *
 *
 * Modified with german comments and some information about collisions.
 * (Ralf Mieke, ralf@miekenet.de, http://mieke.home.pages.de)
 */

function array(n) {
  for(i=0;i&lt;n;i++) this[i]=0;
  this.length=n;
}

/* Einige grundlegenden Funktionen müssen wegen
 * Javascript Fehlern umgeschrieben werden.
 * Man versuche z.B. 0xffffffff &gt;&gt; 4 zu berechnen..
 * Die nun verwendeten Funktionen sind zwar langsamer als die Originale,
 * aber sie funktionieren.
 */

function integer(n) { return n%(0xffffffff+1); }

function shr(a,b) {
  a=integer(a);
  b=integer(b);
  if (a-0x80000000&gt;=0) {
    a=a%0x80000000;
    a&gt;&gt;=b;
    a+=0x40000000&gt;&gt;(b-1);
  } else
    a&gt;&gt;=b;
  return a;
}

function shl1(a) {
  a=a%0x80000000;
  if (a&amp;0x40000000==0x40000000)
  {
    a-=0x40000000;
    a*=2;
    a+=0x80000000;
  } else
    a*=2;
  return a;
}

function shl(a,b) {
  a=integer(a);
  b=integer(b);
  for (var i=0;i&lt;b;i++) a=shl1(a);
  return a;
}

function and(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1&gt;=0)
    if (t2&gt;=0)
      return ((t1&amp;t2)+0x80000000);
    else
      return (t1&amp;b);
  else
    if (t2&gt;=0)
      return (a&amp;t2);
    else
      return (a&amp;b);
}

function or(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1&gt;=0)
    if (t2&gt;=0)
      return ((t1|t2)+0x80000000);
    else
      return ((t1|b)+0x80000000);
  else
    if (t2&gt;=0)
      return ((a|t2)+0x80000000);
    else
      return (a|b);
}

function xor(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1&gt;=0)
    if (t2&gt;=0)
      return (t1^t2);
    else
      return ((t1^b)+0x80000000);
  else
    if (t2&gt;=0)
      return ((a^t2)+0x80000000);
    else
      return (a^b);
}

function not(a) {
  a=integer(a);
  return (0xffffffff-a);
}

/* Beginn des Algorithmus */

    var state = new array(4);
    var count = new array(2);
        count[0] = 0;
        count[1] = 0;
    var buffer = new array(64);
    var transformBuffer = new array(16);
    var digestBits = new array(16);

    var S11 = 7;
    var S12 = 12;
    var S13 = 17;
    var S14 = 22;
    var S21 = 5;
    var S22 = 9;
    var S23 = 14;
    var S24 = 20;
    var S31 = 4;
    var S32 = 11;
    var S33 = 16;
    var S34 = 23;
    var S41 = 6;
    var S42 = 10;
    var S43 = 15;
    var S44 = 21;

    function F(x,y,z) {
        return or(and(x,y),and(not(x),z));
    }

    function G(x,y,z) {
        return or(and(x,z),and(y,not(z)));
    }

    function H(x,y,z) {
        return xor(xor(x,y),z);
    }

    function I(x,y,z) {
        return xor(y ,or(x , not(z)));
    }

    function rotateLeft(a,n) {
        return or(shl(a, n),(shr(a,(32 - n))));
    }

    function FF(a,b,c,d,x,s,ac) {
        a = a+F(b, c, d) + x + ac;
        a = rotateLeft(a, s);
        a = a+b;
        return a;
    }

    function GG(a,b,c,d,x,s,ac) {
        a = a+G(b, c, d) +x + ac;
        a = rotateLeft(a, s);
        a = a+b;
        return a;
    }

    function HH(a,b,c,d,x,s,ac) {
        a = a+H(b, c, d) + x + ac;
        a = rotateLeft(a, s);
        a = a+b;
        return a;
    }

    function II(a,b,c,d,x,s,ac) {
        a = a+I(b, c, d) + x + ac;
        a = rotateLeft(a, s);
        a = a+b;
        return a;
    }

    function transform(buf,offset) {
        var a=0, b=0, c=0, d=0;
        var x = transformBuffer;

        a = state[0];
        b = state[1];
        c = state[2];
        d = state[3];

        for (i = 0; i &lt; 16; i++) {
            x[i] = and(buf[i*4+offset],0xff);
            for (j = 1; j &lt; 4; j++) {
                x[i]+=shl(and(buf[i*4+j+offset] ,0xff), j * 8);
            }
        }

        /* Runde 1 */
        a = FF ( a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
        d = FF ( d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
        c = FF ( c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
        b = FF ( b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
        a = FF ( a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
        d = FF ( d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
        c = FF ( c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
        b = FF ( b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
        a = FF ( a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
        d = FF ( d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
        c = FF ( c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
        b = FF ( b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
        a = FF ( a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
        d = FF ( d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
        c = FF ( c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
        b = FF ( b, c, d, a, x[15], S14, 0x49b40821); /* 16 */

        /* Runde 2 */
        a = GG ( a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
        d = GG ( d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
        c = GG ( c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
        b = GG ( b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
        a = GG ( a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
        d = GG ( d, a, b, c, x[10], S22,  0x2441453); /* 22 */
        c = GG ( c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
        b = GG ( b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
        a = GG ( a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
        d = GG ( d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
        c = GG ( c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
        b = GG ( b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
        a = GG ( a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
        d = GG ( d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
        c = GG ( c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
        b = GG ( b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */

        /* Runde 3 */
        a = HH ( a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
        d = HH ( d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
        c = HH ( c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
        b = HH ( b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
        a = HH ( a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
        d = HH ( d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
        c = HH ( c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
        b = HH ( b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
        a = HH ( a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
        d = HH ( d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
        c = HH ( c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
        b = HH ( b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
        a = HH ( a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
        d = HH ( d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
        c = HH ( c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
        b = HH ( b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */

        /* Runde 4 */
        a = II ( a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
        d = II ( d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
        c = II ( c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
        b = II ( b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
        a = II ( a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
        d = II ( d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
        c = II ( c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
        b = II ( b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
        a = II ( a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
        d = II ( d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
        c = II ( c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
        b = II ( b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
        a = II ( a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
        d = II ( d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
        c = II ( c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
        b = II ( b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */

        state[0] +=a;
        state[1] +=b;
        state[2] +=c;
        state[3] +=d;

    }
    /* Mit der Initialisierung von Dobbertin:
       state[0] = 0x12ac2375;
       state[1] = 0x3b341042;
       state[2] = 0x5f62b97c;
       state[3] = 0x4ba763ed;
       gibt es eine Kollision:

       begin 644 Message1
       M7MH=JO6_&gt;MG!X?!51$)W,CXV!A&quot;=(!AR71,&lt;X`Y-IIT9^Z&amp;8L$2N'Y*Y:R.;
       39GIK9&gt;TF$W()/MEHR%C4:G1R:Q&quot;=
       `
       end

       begin 644 Message2
       M7MH=JO6_&gt;MG!X?!51$)W,CXV!A&quot;=(!AR71,&lt;X`Y-IIT9^Z&amp;8L$2N'Y*Y:R.;
       39GIK9&gt;TF$W()/MEHREC4:G1R:Q&quot;=
       `
       end
    */
    function init() {
        count[0]=count[1] = 0;
        state[0] = 0x67452301;
        state[1] = 0xefcdab89;
        state[2] = 0x98badcfe;
        state[3] = 0x10325476;
        for (i = 0; i &lt; digestBits.length; i++)
            digestBits[i] = 0;
    }

    function update(b) {
        var index,i;

        index = and(shr(count[0],3) , 0x3f);
        if (count[0]&lt;0xffffffff-7)
          count[0] += 8;
        else {
          count[1]++;
          count[0]-=0xffffffff+1;
          count[0]+=8;
        }
        buffer[index] = and(b,0xff);
        if (index  &gt;= 63) {
            transform(buffer, 0);
        }
    }

    function finish() {
        var bits = new array(8);
        var        padding;
        var        i=0, index=0, padLen=0;

        for (i = 0; i &lt; 4; i++) {
            bits[i] = and(shr(count[0],(i * 8)), 0xff);
        }
        for (i = 0; i &lt; 4; i++) {
            bits[i+4]=and(shr(count[1],(i * 8)), 0xff);
        }
        index = and(shr(count[0], 3) ,0x3f);
        padLen = (index &lt; 56) ? (56 - index) : (120 - index);
        padding = new array(64);
        padding[0] = 0x80;
        for (i=0;i&lt;padLen;i++)
          update(padding[i]);
        for (i=0;i&lt;8;i++)
          update(bits[i]);

        for (i = 0; i &lt; 4; i++) {
            for (j = 0; j &lt; 4; j++) {
                digestBits[i*4+j] = and(shr(state[i], (j * 8)) , 0xff);
            }
        }
    }

/* Ende des MD5 Algorithmus */

function hexa(n) {
 var hexa_h = &quot;0123456789abcdef&quot;;
 var hexa_c=&quot;&quot;;
 var hexa_m=n;
 for (hexa_i=0;hexa_i&lt;8;hexa_i++) {
   hexa_c=hexa_h.charAt(Math.abs(hexa_m)%16)+hexa_c;
   hexa_m=Math.floor(hexa_m/16);
 }
 return hexa_c;
}

var ascii=&quot;01234567890123456789012345678901&quot; +
          &quot; !\&quot;#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;+
          &quot;[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~&quot;;

function MD5(nachricht)
{
 var l,s,k,ka,kb,kc,kd;

 init();
 for (k=0;k&lt;nachricht.length;k++) {
   l=nachricht.charAt(k);
   update(ascii.lastIndexOf(l));
 }
 finish();
 ka=kb=kc=kd=0;
 for (i=0;i&lt;4;i++) ka+=shl(digestBits[15-i], (i*8));
 for (i=4;i&lt;8;i++) kb+=shl(digestBits[15-i], ((i-4)*8));
 for (i=8;i&lt;12;i++) kc+=shl(digestBits[15-i], ((i-8)*8));
 for (i=12;i&lt;16;i++) kd+=shl(digestBits[15-i], ((i-12)*8));
 s=hexa(kd)+hexa(kc)+hexa(kb)+hexa(ka);
 return s;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.webmastersucks.com/user-login-form-with-javascript-md5/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
