/*AUTHOR : OLIVIER BOISSIN (oboissin@ftel.fr)DATE : 2006/06/13BASED ON MIKE GOLDING'S WORK : http://www.mikezilla.com/exp0031.htmlUSAGE : GoogleToNotesSearch.init(new Array('myfield1', 'myfield2'));	  GoogleToNotesSearch.parse("my -google \"search query\"");*/var GoogleToNotesSearch = {	query : "",	fields : null,	init : function(fields) {		this.fields = fields ;	},	trim : function(str) {		return str.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') ;	},	parse : function(query) {		this.query = query ;		try {			var gQuery, tQuery ;			// trim, on remplace tous les espaces (doubles et + y compris) par des symb\uFFFDles _#_			gQuery = this.trim(this.query).replace(/ ( )*/g, "_#_") ;				// on remplace tous les symb\uFFFDles _#_ compris entre guillemets par des '_@_'			oQuery = "" ;			while (oQuery != gQuery) {				oQuery = gQuery ;				gQuery = gQuery.replace(/"(.*?)_#_(.*?)"/g, "\"$1_@_$2\"");			}			// transformation des '_#_' en ' AND '				gQuery = gQuery.replace(/_#_/g, " AND ") ;			// transformation des ' -' en ' NOT '				gQuery = gQuery.replace(/ \-(\w)/g, " NOT $1") ;			// transformation des ' | ' en ' OR '				gQuery = gQuery.replace(/ \| /g, " OR ") ;			gQuery = gQuery.replace(/ AND OR /g, " OR ") ;			gQuery = gQuery.replace(/ OR AND /g, " OR ") ;			// transformation des '"..."' en '... '	(retrait des guillemets)			gQuery = gQuery.replace(/"(.*?)"/g, "$1") ;				// des champs ont \uFFFDt\uFFFD pr\uFFFDcis\uFFFDs, on modifie la requ\uFFFDte en cons\uFFFDquence			if (this.fields != null && this.fields.length > 0) {				var tQuery = gQuery.split(" ");				for (var i=0 ; i<tQuery.length ; i++) {					var val = tQuery[i];						if (val == "AND" || val == "OR" || val == "NOT") 						continue ;					tQuery[i] = "(";						for (var j=0 ; j<this.fields.length ; j++) {						tQuery[i] += "[" + this.fields[j] + "]=" + val + " OR ";									}					tQuery[i] = tQuery[i].substring(0, tQuery[i].length - 4) + ")";				}						gQuery = tQuery.join(" ");			}			// transformation des '_@_' en ' '	(au sein des guillemets, donc)			gQuery = gQuery.replace(/_@_/g, " ") ;					return gQuery ;		}		catch (exception) {			return this.query ;		}			}	}