var currentFetch = "";
var ajaxLoaded = 1;
var currentTwoLetterKeyword="";
var currentKeywordList;
function showSuggestionBox(keyword,panel,textpanel){
	var panelLayer = document.getElementById(panel);
	var tpanelLayer = document.getElementById(textpanel);
	tpanelLayer.innerHTML = "";	
	var keywordList = [];
	keywordList = getKeywordList(keyword);

	var  suggestionList = new Array()
	for(var i=0;i<keywordList.length;i++)
		suggestionList.push('<input type="checkbox" name="keywordlist" value="'+keywordList[i]+'">'+keywordList[i]+'</input>');

	var dropText = suggestionList.join("<br>");
	gsuggest = ggetCookie("gsuggest");
	if((dropText != "") && ((typeof gsuggest == 'undefined') || (typeof gsuggest != 'undefined' && (gsuggest=="on" || gsuggest==null)) )){
		panelLayer.style.display="block";
		tpanelLayer.style.display="block";
		var adminHeight = 0;
		if(gadmin && gadmin_links && gusername && gsession)
			adminHeight = 11;

		var sug_pos = 100+adminHeight;
		panelLayer.style.top = sug_pos+"px";
		tpanelLayer.innerHTML = dropText;	
	}
}

function getKeywordList(keyword){

	var twoLetterArray  = suggest[(keyword.substr(0,3)).toLowerCase()];
	var keywords =[] ;
	var startmatchkeywords = [];
	var allkeywords = [];
	var partialkeywords = [];
	var regex1 = new RegExp("^"+keyword+"$","i");
	var regex2 = new RegExp("^\s*"+keyword,"i");
	var regex3 = new RegExp("^All\s+","i");
	var regex4 = new RegExp(keyword,"i");
	for(var j=0;j<twoLetterArray.length;j++){
		var txt = twoLetterArray[j];
		if(txt.match(regex1)){
			keywords.push(txt);
		}
		else if(txt.match(regex2)){
			startmatchkeywords.push(txt);
		}
		else if(txt.match(regex3)){
			allkeywords.push(txt);
		}
		else if(txt.match(regex4)){
			partialkeywords.push(txt);
		}
	}	 
	keywords = keywords.sort();
	startmatchkeywords = startmatchkeywords.sort();
	allkeywords = allkeywords.sort();
	partialkeywords = partialkeywords.sort();
	
	for(var i=0;i<startmatchkeywords.length;i++)
		keywords.push(startmatchkeywords[i]);
	for(var i=0;i<allkeywords.length;i++)
		keywords.push(allkeywords[i]);
	for(var i=0;i<partialkeywords.length;i++)
		keywords.push(partialkeywords[i]);

	currentKeywordList = keywords;
	currentTwoLetterKeyword = keyword; 
	return keywords;
}

function suggestionClose(panel,textpanel){
	document.getElementById(panel).style.display="none";
	document.getElementById(textpanel).style.display="none";
}

function suggestionBox(keyword,panel,textpanel){
	
	document.getElementById(panel).style.display="none";
	document.getElementById(textpanel).style.display="none";
	if(keyword.length >= 3){
	var code3 = (keyword.substr(0,3)).toLowerCase();
	var url = "/javascript/suggest/"+code3+".js";
  	  if( (typeof (suggest[code3+""]) != 'undefined') && (typeof (suggest[code3+""]) != 'function')){
		showSuggestionBox(keyword,panel,textpanel);
		 		
 	  } 
	  else{
		if(currentFetch != code3){
			ajaxLoaded = 0;
			currentFetch = code3;
			new Ajax.Request(url,{
				method: "GET",
				onSuccess : function(responseObj){
					suggest[code3] = eval(responseObj.responseText);
					ajaxLoaded = 1;
					showSuggestionBox(keyword,panel,textpanel);
				}
				}
			);
		}
	  }
	}	
}

