function encode64(input) {
   var keyStr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.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 < input.length);

   trim(output);
   return String(output);
}

function decode64(input) {
   var keyStr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.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 < input.length);


  //loop pour  enlever les putin de chr 32
   var war_output = '';
   for (x=0; x < (output.length); x++){
      if (output.charCodeAt(x) != ''){
         war_output = war_output + output.charAt(x);
      }
   }
   return war_output;
}
// function qui trim le text de variable
function trim(s) {
  return s.replace(/^\s+/, '').replace(/\s+$/, '');
}

// encode les e-mail v2
function e_mailer(email_pre, email_after, subj, e_body ) {

  var email_pre = trim(decode64(email_pre));
  var email_after = trim(decode64(email_after));
  var email = email_pre + '@' + email_after;

  str_mail_opt = '?';
  // si le sub est pas vide
  if (trim(subj) != ''){
    str_mail_opt =  str_mail_opt + 'subject=' + subj;
    // si le body est pas vide
    if (trim(e_body) != ''){
      str_mail_opt = str_mail_opt + '&body=' + e_body;
    }
  }

  if ((trim(e_body) != '') && (trim(subj) == '')){
    str_mail_opt = str_mail_opt + 'body=' + e_body;
  }

  var str_mail = 'mai' + 'lt' + 'o:';
  var final_mail =  str_mail + email + str_mail_opt

  window.document.location = final_mail
}
