function resetField(obj,str){ if(obj.value.length==0){ obj.value=str; return; } if(obj.value==str){ obj.value=""; } } function populateTokenStack(exp) { _tokens = new Array(); var size = exp.length; var retExp = ''; var inQuotedToken = false; var tokenEnded = false; var wasQuotedToken = false; var currentToken = ''; var lastToken = ''; for(i=0;i0 && currentToken!= ' ') { if(!isOperator(currentToken)) { populateKeywords(currentToken); insertAnd(); } if(wasQuotedToken) { currentToken = '"' + currentToken + '"'; wasQuotedToken = false; } pushToken(currentToken); } if(ch=='(' || ch==')') pushToken(ch); currentToken = ''; tokenEnded=false; } if(ch!='"') retExp= retExp+ ch; } lastToken = currentToken; if(currentToken.length>0 && currentToken!= ' ') { if(!isOperator(currentToken)) { populateKeywords(currentToken); insertAnd(); } pushToken(currentToken); } currentToken = ''; return _tokens; } function pushToken(currentToken) { _tokens[_tokens.length] = currentToken; } function populateKeywords(keyword) { if(keywords.length == 0) keywords += keyword; else keywords += "$" + keyword; } function isOperator(str) { if(str.toLowerCase()=='and' || str.toLowerCase()=='not' || str.toLowerCase()=='or') return true; else return false; } function isParenthesis(str) { if(str=='(' || str==')') return true; else return false; } function isPhrase(str) { if(str.charAt(0) == '"') return true; else return false; } function insertAnd() { var keepPopping = true; var count = 0; var poppedTokens = new Array(); var sz = _tokens.length; if(sz==0) return; while(keepPopping && count