access :

String.js

Some of these functions might be useful in some cases, like my «litebox» class.

String.implement({
	decode64: function(){ // Base 64 decoding
		var _this = this;
		var output = '';
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
		_this = _this.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		do {
			enc1 = keyStr.indexOf(this.charAt(i++));
			enc2 = keyStr.indexOf(this.charAt(i++));
			enc3 = keyStr.indexOf(this.charAt(i++));
			enc4 = keyStr.indexOf(this.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) output = output + String.fromCharCode(chr2);
			if (enc4 != 64) output = output + String.fromCharCode(chr3);
		} while (i < this.length);
		return output;
	},
	encode64: function() { // Base 64 encoding
		var _this = this;
		var output = '';
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

		do {
			chr1 = this.charCodeAt(i++);
			chr2 = this.charCodeAt(i++);
			chr3 = this.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) enc3 = enc4 = 64;
			else if (isNaN(chr3)) enc4 = 64;
			output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
			 keyStr.charAt(enc3) + keyStr.charAt(enc4);
		} while (i < this.length);
		return output;
	},
	stripTags: function(){ // Just like in PHP
		var re = /(<([^>]+)>)/gi;
		return this.replace(re, "");
	}

});