rem: args[argname] = unescape(argvalue); 
add: args[argname] = decodeURIComponent(argvalue); 
context: function GetArgs(originalData){  var args = new Object();  if (originalData == "")    return null;  var data = "";  var separator = String.fromCharCode(1);  var quoteChar = "";  var prevChar = "";  var nextChar = "";  for (var i = 0; i < originalData.length; i ++, prevChar = aChar)  {    var aChar = originalData.charAt(i)    var aCharCode = originalData.charCodeAt(i)    if ( i < originalData.length - 1)      nextChar = originalData.charAt(i + 1);    else      nextChar = "";    if (aChar == quoteChar && (nextChar == "," || nextChar == ""))    {      quoteChar = "";      data += aChar;    }    else if ((aCharCode == 39 || aCharCode == 34) && prevChar == "=") //quote or double quote    {      if (quoteChar == "")        quoteChar = aChar;      data += aChar;    }    else if (aChar == ",")    {      if (quoteChar == "")        data += separator;      else        data += aChar    }    else      data += aChar  }  var pairs = data.split(separator);//  dump("Compose: argument: {" + data + "}\n");  for (i = pairs.length - 1; i >= 0; i--)  {    var pos = pairs[i].indexOf('=');    if (pos == -1)      continue;    var argname = pairs[i].substring(0, pos);    var argvalue = pairs[i].substring(pos + 1);    if (argvalue.charAt(0) == "'" && argvalue.charAt(argvalue.length - 1) == "'")      args[argname] = argvalue.substring(1, argvalue.length - 1);    else      try {        args[argname] = unescape(argvalue);      } catch (e) {args[argname] = argvalue;}    dump("[" + argname + "=" + args[argname] + "]\n");  }  return args;}
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/5e7848db380e8ce2ebad479c6c7e9b171ee816dd/MsgComposeCommands.js/buggy/mail/components/compose/content/MsgComposeCommands.js