    function b64arrays()
    {
	
         var b64s='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
             b64 = [];f64 =[];
             
             for (var i=0; i<b64s.length ;i++)
             {
                 b64[i] = b64s.charAt(i);
                 f64[b64s.charAt(i)] = i;
             }
    }
   
	function d(text) {
		text = text.split("")
		var xy=0;
		for (var i=0; i<3; i++) {
			if ((text.length > xy[i*2]) && (text.length > (i*2)+1)) {
				tmp = text[xy[i*2]];
				text[xy[i*2]] = text[xy[(i*2)+1]];
				text[xy[(i*2)+1]] = tmp;
			}
		}
		return text.join("");
	}
   
    function decode_base64(c)
    {
      var array1 = String(b64t2d(c)).split(",");
      var i=0;
      var str="";
     
      for (i=0;i<array1.length;i++)
      {
        str+=String.fromCharCode(array1[i]);
      }
     
      return str;
    }
   
    function b64t2d(t)
    {
             var d=[]; var i=0;
             // zur decodierung die Umbrueche killen
             t=t.replace(/\n|\r/g,""); t=t.replace(/=/g,"");
             while (i<t.length)
             {
                 d[d.length] = (f64[t.charAt(i)]<<2) | (f64[t.charAt(i+1)]>>4);
                 d[d.length] = (((f64[t.charAt(i+1)]&15)<<4) | (f64[t.charAt(i+2)]>>2));
                 d[d.length] = (((f64[t.charAt(i+2)]&3)<<6) | (f64[t.charAt(i+3)]));
                 i+=4;
             }
             if (t.length%4 == 2)
                 d = d.slice(0, d.length-2);
             if (t.length%4 == 3)
                 d = d.slice(0, d.length-1);
             return d;
    }
   
   
    function encode_base64(d)
    {
             var r=[]; var i=0; var dl=d.length;
             // Padding vorbereiten
             if ((dl%3) == 1) {
                 d[d.length] = 0; d[d.length] = 0;}
             if ((dl%3) == 2)
                 d[d.length] = 0;
             // Konvertieren
             while (i<d.length)
                 {
                 r[r.length] = b64[d[i]>>2];
                 r[r.length] = b64[((d[i]&3)<<4) | (d[i+1]>>4)];
                 r[r.length] = b64[((d[i+1]&15)<<2) | (d[i+2]>>6)];
                 r[r.length] = b64[d[i+2]&63];
                 if ((i%57)==54)
                     r[r.length] = "\n";
                 i+=3;
                 }
             // padding abschließen
             if ((dl%3) == 1)
                 r[r.length-1] = r[r.length-2] = "=";
            if ((dl%3) == 2)
                r[r.length-1] = "=";
            // Array in text zusammenführen
            var t=r.join("");
            return t;
    }
