
//YAHOO.namespace("fessop");
var KEY_ESC = 27;
var KEY_DOWN = 40;
var KEY_UP = 38;
var KEY_ENTER = 13;
var KEY_CTRL = 17;

var NS6=document.getElementById&&!document.all;
var IE=document.all;

var idxSelected_cogname = -1;
   
function cogName(e) {
	var cogName = document.getElementById("cogname").value;
	var xhr=null;
	
	updateIdxSelectedCogName(e);
 
	// ESCAPE: just hide suggestions
	if(e.keyCode == KEY_ESC) { 
		document.getElementById('cogName_div').style.display = 'none';
		return;
	}

	//ENTER: tries to validate current selection
	if(e.keyCode == KEY_ENTER) {
		try {
			if(idxSelected_cogname>-1) {
				var whichdiv = "cogNameContent_"+idxSelected_cogname;
				if (IE) cogName_validate(eval("document.all."+whichdiv).innerHTML);
				else if (NS6) cogName_validate(document.getElementById(whichdiv).innerHTML);
			}
		} catch(err) {}
		return;
	}

	// White background for selected element
	try {
		if (IE && eval('document.all.cogNameTR_'+idxSelected_cogname) != null) eval('document.all.cogNameTR_'+idxSelected_cogname).style.background = 'white';	
		else if (NS6 && document.getElementById('cogNameTR_'+idxSelected_cogname)!= null) document.getElementById('cogNameTR_'+idxSelected_cogname).style.background = 'white';	
	} catch(err) {
	}
	
	// DOWN: reset background of upper element
	if(e.keyCode == KEY_DOWN) {
		try {
			document.getElementById('cogNameTR_'+(idxSelected_cogname-1)).style.background = '#e2eff8';
		} catch(err) {
		}
		return;
	}	
	// UP: reset background of lower element
	if(e.keyCode == KEY_UP) {
		try {
			document.getElementById('cogNameTR_'+(idxSelected_cogname+1)).style.background = '#e2eff8';
		} catch(err) {
		}
		document.getElementById('cogname').focus();document.getElementById('cogname').value=document.getElementById('cogname').value;
		return;
	}		
			
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }    else if (window.ActiveXObject)     {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    // call back function
    xhr.onreadystatechange = function() { cogName_back(xhr,cogName,e); };
    
	// Get the data
    xhr.open("GET", "include/lib/xmler/cogName.php?cogName="+cogName, true);
    xhr.send(null);
	//document.getElementById('cogName_div').style.display = 'block';
}


// We've got the data, need to take care of that
function cogName_back(xhr,cogName,e) {
    if (xhr.readyState==4)     {
    	var docXML= xhr.responseXML;
		if(docXML==null) {
			document.getElementById('cogName_div').style.display = 'none';
			return;
		}
    	var items = docXML.getElementsByTagName("data");
		var str2display = "<table>";
    	for (i=0;i<items.length;i++)	{	
			var styleVariant = "";
			var theText = items.item(i).lastChild.firstChild.data.replace(new RegExp(cogName,"gi"),'<span class=\'emm\'>'+cogName+'</span>');
			if(i<100)
				str2display += "<tr id='cogNameTR_"+i+"' class='cogNameTR'><td class='searchKey'>" + items.item(i).firstChild.firstChild.data + "&nbsp;&nbsp;</td><td style='vertical-align:top;'><a style='color:black;text-decoration:none;' href=\"javascript:cogName_validate('"+items.item(i).lastChild.firstChild.data.replace(/'/g,"\\&#39;")+"')\">"+theText+"</a><span id='cogNameContent_"+i+"' style='display:none;'>"+items.item(i).lastChild.firstChild.data+"</span></td></tr>";
			else {
				str2display += "<tr><td></td><td>...</td></tr>";
				break;
			}
    	}		
		str2display += "</table>";
		showText(str2display, 'cogName_div');
		
		// Hide suggestions if no results
		if(items.length>0) {
			document.getElementById('cogName_div').style.display = 'block';
		} else {
			document.getElementById('cogName_div').style.display = 'none';
		}
	}
}

// Validate the selected element, either by click or [ENTER]
function cogName_validate(cogName){
	if (IE) eval("document.all.cogname").value = cogName;
	else if (NS6) document.getElementById('cogname').value = cogName;
	document.getElementById('cogname').focus();document.getElementById('cogname').value=document.getElementById('cogname').value;
	document.getElementById('cogName_div').style.display = 'none';
	idxSelected_cogname = -1;
}

// Update index of selected element
function updateIdxSelectedCogName(e) {
	if(document.getElementById('cogName_div').style.display == 'block') {
		if(e.keyCode == KEY_ESC)
			idxSelected_cogname = -1;
		if(e.keyCode == KEY_ENTER)
			idxSelected_cogname = -1;
		if(e.keyCode == KEY_DOWN)
			idxSelected_cogname++;
		if(e.keyCode == KEY_UP)
			idxSelected_cogname--;
		if(idxSelected_cogname<-1)
			idxSelected_cogname = -1;
	}
}

// [ENTER] is redirected to avoid submitting the form by pressing [ENTER] when selecting an element from the suggestions
function detectEnterKeyCogName(e) {
	if(document.getElementById('cogName_div').style.display == 'none')
		return true;
	if(idxSelected_cogname<0)
		return true;
	if(e.keyCode == KEY_ENTER) {
		document.getElementById('cogName_div').style.display = 'none';
		return false;
	}
	return true;
}