  function strToBase64(input_data)
  {
  
    var tmp_data = input_data;
    var tmp_char_code0;
    var tmp_char_code1;
    var tmp_char_code2;

    var tmp_b64_code0;
    var tmp_b64_code1;
    var tmp_b64_code2;
    var tmp_b64_code3;
    var b64_code_array = new Array();
    var i;
    for(i=0;i<tmp_data.length - 2;i+=3)
    {
      
      tmp_char_code0 = tmp_data.charCodeAt(i);
      tmp_char_code1 = tmp_data.charCodeAt(i+1);
      tmp_char_code2 = tmp_data.charCodeAt(i+2);
      
      tmp_b64_code0 = new Number(0);
      tmp_b64_code1 = new Number(0);
      tmp_b64_code2 = new Number(0);
      tmp_b64_code3 = new Number(0);
      
      tmp_b64_code0 = (tmp_char_code0 / 4);
      tmp_b64_code1 = (tmp_char_code0 % 4) * 16 + (tmp_char_code1 / 16);
      tmp_b64_code2 = (tmp_char_code1 % 16) * 4 + (tmp_char_code2 / 64);
      tmp_b64_code3 = tmp_char_code2 % 64;
      
      b64_code_array.push(tmp_b64_code0);
      b64_code_array.push(tmp_b64_code1);
      b64_code_array.push(tmp_b64_code2);
      b64_code_array.push(tmp_b64_code3);
    }
    var odd = (tmp_data.length - i);
    tmp_char_code0 = 0;
    tmp_char_code1 = 0;
    tmp_char_code2 = 0;

    if(odd == 1)
    {
      tmp_char_code0 = tmp_data.charCodeAt(i);
      tmp_b64_code0 = new Number(0);
      tmp_b64_code1 = new Number(0);
      tmp_b64_code0 = (tmp_char_code0 / 4);
      tmp_b64_code1 = (tmp_char_code0 % 4) * 16;
      b64_code_array.push(tmp_b64_code0);
      b64_code_array.push(tmp_b64_code1);
    }
    if(odd == 2)
    {
      tmp_char_code0 = tmp_data.charCodeAt(i);
      tmp_char_code1 = tmp_data.charCodeAt(i+1);

      tmp_b64_code0 = new Number(0);
      tmp_b64_code1 = new Number(0);
      tmp_b64_code2 = new Number(0);
      
      tmp_b64_code0 = (tmp_char_code0 / 4);
      tmp_b64_code1 = (tmp_char_code0 % 4) * 16 + (tmp_char_code1 / 16);
      tmp_b64_code2 = (tmp_char_code1 % 16) * 4;

      b64_code_array.push(tmp_b64_code0);
      b64_code_array.push(tmp_b64_code1);
      b64_code_array.push(tmp_b64_code2);
    }


    var code_to_char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    var result = "";

    for(i=0;i<b64_code_array.length;i++)
    {
      result = result + code_to_char.charAt(b64_code_array[i]);
    }

    odd = b64_code_array.length % 4;
    odd = (4 - odd) % 4;
    for(i=0;i<odd;i++)
    {
      result = result + "=";
    }

    return result;
  }