Tag Archive for javascript

Javascript MD5 function, OOP

var MD5Class = {
makeHash: function(string) {
var x = Array();
var k, AA, BB, CC, DD, a, b, c, d;
var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
var S21 = 5, S22 = 9 , S23 = 14, S24 = 20;
var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
var S41 = 6, S42 = 10, S43 = 15, S44 = 21;

string = this.Utf8Encode(string);

x = this.ConvertToWordArray(string);

a = 0x67452301;
b = 0xEFCDAB89;
c = 0x98BADCFE;
d = 0x10325476;

for (k = 0; k < x.length; k += 16) {
AA = a;
BB = b;
CC = c;
DD = d;
a = this.FF(a, b, c, d,x[k + 0], S11, 0xD76AA478);
d = this.FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = this.FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = this.FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = this.FF(a, b, c, d,x[k + 4], S11, 0xF57C0FAF);
d = this.FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = this.FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = this.FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = this.FF(a, b, c, d,x[k + 8], S11, 0x698098D8);
d = this.FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = this.FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = this.FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = this.FF(a, b, c, d,x[k + 12], S11, 0x6B901122);
d = this.FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = this.FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = this.FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = this.GG(a, b, c, d,x[k + 1], S21, 0xF61E2562);
d = this.GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = this.GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = this.GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = this.GG(a, b, c, d,x[k + 5], S21, 0xD62F105D);
d = this.GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = this.GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = this.GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = this.GG(a, b, c, d,x[k + 9], S21, 0x21E1CDE6);
d = this.GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = this.GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = this.GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = this.GG(a, b, c, d,x[k + 13], S21, 0xA9E3E905);
d = this.GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = this.GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = this.GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = this.HH(a, b, c, d,x[k + 5], S31, 0xFFFA3942);
d = this.HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = this.HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = this.HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = this.HH(a, b, c, d,x[k + 1], S31, 0xA4BEEA44);
d = this.HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = this.HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = this.HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = this.HH(a, b, c, d,x[k + 13], S31, 0x289B7EC6);
d = this.HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = this.HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = this.HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = this.HH(a, b, c, d,x[k + 9], S31, 0xD9D4D039);
d = this.HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = this.HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = this.HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = this.II(a, b, c, d,x[k + 0], S41, 0xF4292244);
d = this.II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = this.II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = this.II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = this.II(a, b, c, d,x[k + 12], S41, 0x655B59C3);
d = this.II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = this.II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = this.II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = this.II(a, b, c, d,x[k + 8], S41, 0x6FA87E4F);
d = this.II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = this.II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = this.II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = this.II(a, b, c, d,x[k + 4], S41, 0xF7537E82);
d = this.II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = this.II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = this.II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = this.AddUnsigned(a,AA);
b = this.AddUnsigned(b,BB);
c = this.AddUnsigned(c,CC);
d = this.AddUnsigned(d,DD);
}

var temp = this.WordToHex(a) + this.WordToHex(b) + this.WordToHex(c) + this.WordToHex(d);

return temp.toLowerCase();
},

RotateLeft: function (lValue, iShiftBits) {
return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
},

AddUnsigned: function (lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
} else {}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
}
else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
}
else {
return (lResult ^ lX8 ^ lY8);
}
},

F: function (x, y, z) {
return (x & y) | ((~x) & z);
},

G: function (x, y, z) {
return (x & z) | (y & (~z));
},

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

I: function (x, y, z) {
return (y ^ (x | (~z)));
},

FF: function (a, b, c, d, x, s, ac) {
a = this.AddUnsigned(a, this.AddUnsigned(this.AddUnsigned(this.F(b, c, d), x), ac));
return this.AddUnsigned(this.RotateLeft(a, s), b);
},

GG: function (a, b, c, d, x, s, ac) {
a = this.AddUnsigned(a, this.AddUnsigned(this.AddUnsigned(this.G(b, c, d), x), ac));
return this.AddUnsigned(this.RotateLeft(a, s), b);
},

HH: function (a, b, c, d,x, s,ac) {
a = this.AddUnsigned(a, this.AddUnsigned(this.AddUnsigned(this.H(b, c, d), x), ac));
return this.AddUnsigned(this.RotateLeft(a, s), b);
},

II: function (a, b, c, d,x, s,ac) {
a = this.AddUnsigned(a, this.AddUnsigned(this.AddUnsigned(this.I(b, c, d), x), ac));
return this.AddUnsigned(this.RotateLeft(a, s), b);
},

ConvertToWordArray: function (string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWords_temp1  =lMessageLength + 8;
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
var lWordArray = Array(lNumberOfWords - 1);
var lBytePosition = 0;
var lByteCount = 0;
while ( lByteCount < lMessageLength ) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength<<3;
lWordArray[lNumberOfWords - 1] = lMessageLength>>>29;
return lWordArray;
},

WordToHex: function (lValue) {
var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
for (lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue>>>(lCount * 8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
}
return WordToHexValue;
},

Utf8Encode: function (string) {
string = string.replace(/
/g, "
");
var utftext = "";

for (var n = 0; n < string.length; n++) {

var c = string.charCodeAt(n);

if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}

}

return utftext;
}
};

alert(MD5Class.makeHash("yourString"));

source

Disable Firebug

// code yanked from the Yahoo media player. Thanks, Yahoo.
if (! ("console" in window) || !("firebug" in console)) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group"
, "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
window.console = {};
for (var i = 0; i <names.length; ++i) window.console[names[i]] = function() {};
}

source

Millisecond Equivalent of Time Interval

//Gets the millisecond equivalent of an interval
//Example: (2).seconds() == 2000
Number.prototype.seconds = function(){ return this * 1000; };
Number.prototype.minutes = function(){ return this * 60000; };		//60 * 1000
Number.prototype.hours = function(){ return this * 3600000; };		//60 * 60 * 1000
Number.prototype.days = function(){ return this * 86400000; };		//24 * 60 * 60 * 1000
Number.prototype.weeks = function(){ return this * 604800000; };	//7 * 24 * 60 * 60 * 1000

source

JavaScript Cookie Management Class

var JSCookies = {

defaults: {
expiryDays: 7
},

createCookie: function(name, value, days) {
if (!days) {
days = this.defaults.expiryDays;
} else {}

date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();

document.cookie = name + "=" + value + expires + "; path=/";

return {"name": name, "value": value};
},

readCookie: function(name) {
nameEQ = name + "=";
ca = $A(document.cookie.split(";"));
for (i = 0; i < ca.length; i++) {
c = ca[i];
while (c.charAt(0) == " ") {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length, c.length);
} else {}
}
return "";
},

eraseCookie: function(name) {
this.createCookie(name, "", -1);
return {"name": name, "value": null};
}
};

JSCookies.createCookie("name", "value");

//next page
alert(JSCookies.readCookie("name"));

source

Left Pad String

function leadingZeros(num, totalChars, padWith) {
num = num + "";
padWith = (padWith) ? padWith : "0";
if (num.length < totalChars) {
while (num.length < totalChars) {
num = padWith + num;
}
} else {}

if (num.length > totalChars) { //if padWith was a multiple character string and num was overpadded
num = num.substring((num.length - totalChars), totalChars);
} else {}

return num;
}

alert(leadingZeros("asdf", 10, "0"));

source

programatically loading external js/css files

function loadExternalFiles(array) {
outString = "";

for (x in array) {
switch (array[x][1]) {
case "js":
outString += '<script type="text/javascript" src="' + array[x][0] + '"></script>';
break;

case "css":
outString += '<link rel="stylesheet" type="text/css" href="' + array[x][0] + '" />';
break;
}
}

return outString;
}

var serverName = "http://nric-20896/zWebHost/";

document.write(loadExternalFiles(new Array (
//			[serverName + "js/fordmJS_misc.js", "js"], //combined with this file
[serverName + "skins/skin_0/css/mfstyle0.css", "css"],
[serverName + "skins/skin_0/css/layNav.css", "css"],
[serverName + "skins/skin_0/css/cal.css", "css"],
["http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js", "js"],
["http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js", "js"],
[serverName + "js/livepipe.js", "js"],
[serverName + "js/window.js", "js"],
[serverName + "js/calendar.js", "js"],
[serverName + "js/layNav.js", "js"]
)
));

source

Element Collection Manipulation Shortcut Using MooTools 1.2

// MooTools Looping Example (Bad/Long)

$$('.toggler').each(function(el) {
el.addEvent('mouseenter',function(e) {
el.fireEvent('click');
});
});

// MooTools Collection Example (Good/Short)

$$('.toggler').addEvent('mouseenter', function() { this.fireEvent('click'); });

source

Javascript equivalent for PHP’s print_r

function print_r( array, return_val ) {
// <a href="http://kevin.vanzonneveld.net" >http://kevin.vanzonneveld.net</a>
// +   original by: Michael White (http://crestidg.com)
// +   improved by: Ben Bryan
// *     example 1: print_r(1, true);
// *     returns 1: 1

var output = "", pad_char = " ", pad_val = 4;

var formatArray = function (obj, cur_depth, pad_val, pad_char) {
if (cur_depth > 0) {
cur_depth++;
}

var base_pad = repeat_char(pad_val*cur_depth, pad_char);
var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
var str = "";

if (obj instanceof Array || obj instanceof Object) {
str += "Array
" + base_pad + "(
";
for (var key in obj) {
if (obj[key] instanceof Array) {
str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);
} else {
str += thick_pad + "["+key+"] => " + obj[key] + "
";
}
}
str += base_pad + ")
";
} else if(obj == null || obj == undefined) {
str = '';
} else {
str = obj.toString();
}

return str;
};

var repeat_char = function (len, pad_char) {
var str = "";
for(var i=0; i < len; i++) {
str += pad_char;
};
return str;
};
output = formatArray(array, 0, pad_val, pad_char);

if (return_val !== true) {
document.write("<pre>" + output + "</pre>");
return true;
} else {
return output;
}
}

source

Remove an item of array

// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};

source

PPK’s Browser Detect

//a simple check for Internet Explorer: use conditional comments in the HTML to set this to the version number
//var IEVersion;

//PPK's browser detect script, modified
//http://www.quirksmode.org/js/detect.html
var BrowserDetect = function()
{
//***** private properties and methods *****//

var versionSearchString;
function searchString(data)
{
var dataString, dataProp;
for(var i=0; i<data.length; i++)
{
dataString = data[i].string;
dataProp = data[i].prop;
versionSearchString = data[i].versionSearch || data[i].identity;
if(dataString)
{
if(dataString.indexOf(data[i].subString) != -1) return data[i].identity;
}
else if(dataProp) return data[i].identity;
}
}
function searchVersion(dataString)
{
var index = dataString.indexOf(versionSearchString);
if(index == -1) return;
return parseFloat(dataString.substring(index+versionSearchString.length+1));
}

var dataBrowser = [
{
string: navigator.userAgent,
subString: "Chrome",
identity: "Chrome"
},
{
string: navigator.userAgent,
subString: "OmniWeb",
versionSearch: "OmniWeb/",
identity: "OmniWeb"
},
{
string: navigator.vendor,
subString: "Apple",
identity: "Safari"
},
{
prop: window.opera,
identity: "Opera"
},
{
string: navigator.vendor,
subString: "iCab",
identity: "iCab"
},
{
string: navigator.vendor,
subString: "KDE",
identity: "Konqueror"
},
{
string: navigator.userAgent,
subString: "Firefox",
identity: "Firefox"
},
{
string: navigator.vendor,
subString: "Camino",
identity: "Camino"
},
{		// for newer Netscapes (6+)
string: navigator.userAgent,
subString: "Netscape",
identity: "Netscape"
},
{
string: navigator.userAgent,
subString: "MSIE",
identity: "Explorer",
versionSearch: "MSIE"
},
{
string: navigator.userAgent,
subString: "Gecko",
identity: "Mozilla",
versionSearch: "rv"
},
{ 		// for older Netscapes (4-)
string: navigator.userAgent,
subString: "Mozilla",
identity: "Netscape",
versionSearch: "Mozilla"
}
];
var dataOS = [
{
string: navigator.platform,
subString: "Win",
identity: "Windows"
},
{
string: navigator.platform,
subString: "Mac",
identity: "Mac"
},
{
string: navigator.platform,
subString: "Linux",
identity: "Linux"
}
];

//***** public properties and methods *****//

return {
browser: searchString(dataBrowser) || "",
version: searchVersion(navigator.userAgent) || searchVersion(navigator.appVersion) || "",
OS: searchString(dataOS) || ""
};
}();	//initialize BrowserDetect

source