rem: return unescape(param[1].replace(/\+/g, ' ')).split(/\s+/); 
add: words = unescape(param[1].replace(/\+/g, ' ')).split(/(".*?")|('.*?')|(\s+)/); var words2 = new Array(); for (var w in words) { words[w] = words[w].replace(/^\s+$/, ''); if (words[w] != '') { words2.push(words[w].replace(/^['"]/, '').replace(/['"]$/, '')); } } return words2; 
context:   function getSearchWords(url) {    if (url.indexOf('?') == -1) return [];    var queryString = url.substr(url.indexOf('?') + 1);    var params = queryString.split('&');    for (var p in params) {      var param = params[p].split('=');      if (param.length < 2) continue;      if (param[0] == 'q' || param[0] == 'p') { // q= for Google, p= for Yahoo        return unescape(param[1].replace(/\+/g, ' ')).split(/\s+/);      }    }    return [];  }
meta: 2557	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/2557/87756b370fe2c1d2916fc8df51e2ac8d722b94ab/trac.js/buggy/htdocs/js/trac.js