
var keywords; //list of all the keywords
var answers; //list of matches for those keywords
var g_matches=""; //list of keywords matched
var isFaqAdmin=false;
//getKeywords();
//log("started");

function initializeFAQ(){
	log("initializing");
	getKeywords();
}
function writeAnswers(){

	if(answers){
		var s = "";
		for(var i=0;i<answers.length;i++){
			var answer = answers[i];
			s+= "<div class='faq'><div class='faqquestion'>"+answer.question+"</div><div class='faqanswer'>"+answer.answer+"";
			if(isFaqAdmin) {
				s+= "<a href='adminfaqwiz.jsp?a=EDIT&id="+answer.faq_id+"'>edit</a>";
				s+= " - <a href='faqshow.jsp?id="+answer.faq_id+"'>show</a>";
			}
			s+= "</div></div>";
		}	
		element("answers").innerHTML = s;

	}else{
		element("answers").innerHTML = "";
	}
}
function getKeywords(){
	new Ajax.Request('/faqwiz.jsp?a=GETKEYWORDS', { method:'post',
	  onSuccess: function(transport){
	    response = transport.responseText;
		response = trim(response);
		log(response);
		keywords = eval(response);
		log(keywords.length+" keywords loaded");
	    }
	  });
}
function findKeywords(text, keys){
	if(keys==null) return null;
	//return a list of all the keywords that exist in text
	var t = text.toLowerCase();
	var ii=0;
	var matches = Array();var m = "";
	for(var i=0;i<keys.length;i++){
		var k = keys[i].keyword.toLowerCase();
		if(t.indexOf(k)>=0){
			matches[ii] = k;
			ii++;
			m += k+"|";
		}
	}
	log("matches: "+m)
	return matches;
}

function getMatches(){
	var refresh = false;
	if(keywords){
		log("getting matches. "+keywords.length+" keywords to lookup.");
		var t = document.faqform.message.value;
		var matches = findKeywords(t,keywords);
		if(matches.length!=g_matches.length){
			g_matches = matches;//we got answers for this set, so let's save them
		}		    
		if(g_matches.length > 0){
			//log(t);
				var parms = getWordList(matches);
				log(parms);
				new Ajax.Request('/faqwiz.jsp?a=GETMATCHES', { method:'post',
				  parameters: parms, 
				  onSuccess: function(transport){
				    response = transport.responseText;
					response = trim(response);
					answers = eval(response);
					log(answers.length+" answers loaded");
					writeAnswers();
					}
				  });
		}//if matches
		else{
			answers = null;
			writeAnswers();
			log("no matches");
		}
	}else{
		log("no keywords");
	}
}
function getWordList(words){
		var s = "";
		for(var i=0;i<words.length;i++){
			if(i>0) s += "&";
			s+= "k="+words[i]+"";
		}
		return s;

}
function log(msg){
	var logger = element('log');
	var curlog = logger.innerHTML;
	if(curlog.length > 2000) curlog = curlog.substring(0,2000);
	logger.innerHTML = msg + "<br>\n" + curlog;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function element(id){
	return document.getElementById(id);
}