68 lines
2.1 KiB
JavaScript
68 lines
2.1 KiB
JavaScript
|
function base64decode( data ) {
|
||
|
// Decodes string using MIME base64 algorithm
|
||
|
//
|
||
|
// version: 903.3016
|
||
|
// discuss at: http://phpjs.org/functions/base64_decode
|
||
|
// + original by: Tyler Akins (http://rumkin.com)
|
||
|
// + improved by: Thunder.m
|
||
|
// + input by: Aman Gupta
|
||
|
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||
|
// + bugfixed by: Onno Marsman
|
||
|
// + bugfixed by: Pellentesque Malesuada
|
||
|
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||
|
// + input by: Brett Zamir (http://brettz9.blogspot.com)
|
||
|
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||
|
// - depends on: utf8_decode
|
||
|
// * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
|
||
|
// * returns 1: 'Kevin van Zonneveld'
|
||
|
// mozilla has this native
|
||
|
// - but breaks in 2.0.0.12!
|
||
|
//if (typeof window['btoa'] == 'function') {
|
||
|
// return btoa(data);
|
||
|
//}
|
||
|
|
||
|
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
||
|
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = [];
|
||
|
|
||
|
if (!data) {
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
data += '';
|
||
|
|
||
|
do { // unpack four hexets into three octets using index points in b64
|
||
|
h1 = b64.indexOf(data.charAt(i++));
|
||
|
h2 = b64.indexOf(data.charAt(i++));
|
||
|
h3 = b64.indexOf(data.charAt(i++));
|
||
|
h4 = b64.indexOf(data.charAt(i++));
|
||
|
|
||
|
bits = h1<<18 | h2<<12 | h3<<6 | h4;
|
||
|
|
||
|
o1 = bits>>16 & 0xff;
|
||
|
o2 = bits>>8 & 0xff;
|
||
|
o3 = bits & 0xff;
|
||
|
|
||
|
if (h3 == 64) {
|
||
|
tmp_arr[ac++] = String.fromCharCode(o1);
|
||
|
} else if (h4 == 64) {
|
||
|
tmp_arr[ac++] = String.fromCharCode(o1, o2);
|
||
|
} else {
|
||
|
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
|
||
|
}
|
||
|
} while (i < data.length);
|
||
|
|
||
|
dec = tmp_arr.join('');
|
||
|
//dec = utf8_decode(dec);
|
||
|
|
||
|
return dec;
|
||
|
}
|
||
|
|
||
|
var b64a=document.getElementsByTagName("span"), i=b64a.length-1;
|
||
|
while (i>-1){
|
||
|
if(b64a[i].className=="b64"){
|
||
|
var b64html=b64a[i].innerHTML;
|
||
|
b64html=base64decode(b64html);
|
||
|
b64a[i].innerHTML=b64html;
|
||
|
}
|
||
|
i--
|
||
|
}
|