diff options
Diffstat (limited to '')
| -rw-r--r-- | js/dojo-1.6/dojox/encoding/base64.js | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/encoding/base64.js b/js/dojo-1.6/dojox/encoding/base64.js new file mode 100644 index 0000000..a0c8ff0 --- /dev/null +++ b/js/dojo-1.6/dojox/encoding/base64.js @@ -0,0 +1,76 @@ +/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.encoding.base64"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.encoding.base64"] = true;
+dojo.provide("dojox.encoding.base64");
+
+
+dojo.getObject("encoding.base64", true, dojox);
+
+(function(){
+ var p="=";
+ var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var dxe=dojox.encoding;
+
+ dxe.base64.encode=function(/* byte[] */ba){
+ // summary
+ // Encode an array of bytes as a base64-encoded string
+ var s=[], l=ba.length;
+ var rm=l%3;
+ var x=l-rm;
+ for (var i=0; i<x;){
+ var t=ba[i++]<<16|ba[i++]<<8|ba[i++];
+ s.push(tab.charAt((t>>>18)&0x3f));
+ s.push(tab.charAt((t>>>12)&0x3f));
+ s.push(tab.charAt((t>>>6)&0x3f));
+ s.push(tab.charAt(t&0x3f));
+ }
+ // deal with trailers, based on patch from Peter Wood.
+ switch(rm){
+ case 2:{
+ var t=ba[i++]<<16|ba[i++]<<8;
+ s.push(tab.charAt((t>>>18)&0x3f));
+ s.push(tab.charAt((t>>>12)&0x3f));
+ s.push(tab.charAt((t>>>6)&0x3f));
+ s.push(p);
+ break;
+ }
+ case 1:{
+ var t=ba[i++]<<16;
+ s.push(tab.charAt((t>>>18)&0x3f));
+ s.push(tab.charAt((t>>>12)&0x3f));
+ s.push(p);
+ s.push(p);
+ break;
+ }
+ }
+ return s.join(""); // string
+ };
+
+ dxe.base64.decode=function(/* string */str){
+ // summary
+ // Convert a base64-encoded string to an array of bytes
+ var s=str.split(""), out=[];
+ var l=s.length;
+ while(s[--l]==p){ } // strip off trailing padding
+ for (var i=0; i<l;){
+ var t=tab.indexOf(s[i++])<<18;
+ if(i<=l){ t|=tab.indexOf(s[i++])<<12 };
+ if(i<=l){ t|=tab.indexOf(s[i++])<<6 };
+ if(i<=l){ t|=tab.indexOf(s[i++]) };
+ out.push((t>>>16)&0xff);
+ out.push((t>>>8)&0xff);
+ out.push(t&0xff);
+ }
+ // strip off any null bytes
+ while(out[out.length-1]==0){ out.pop(); }
+ return out; // byte[]
+ };
+})();
+
+}
|
