var originalString, maxDivId, currentDivId;
var inputType;
var httpRequest = getXMLHTTPRequest();
var browser = navigator.appName;

function getXMLHTTPRequest() {
  var req = false;
  try {
    req = new XMLHttpRequest();
  } catch (err) {
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (err) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (err) {
        req = false;
      }
    }
  }
  return req;
};

function ontologyChange() {
	var ontologylabel = document.getElementById('ontology_label').value;
	//document.write("label"+ontologylabel+".");
	document.getElementById('domain').value = "";
	document.getElementById('predicate').value = "";
	document.getElementById('range').value = "";
	document.getElementById('domain_suggest').innerHTML = '';
	document.getElementById('predicate_suggest').innerHTML = '';
	document.getElementById('range_suggest').innerHTML = '';
	document.getElementById('domain_suggest').style.visibility='hidden';
	document.getElementById('predicate_suggest').style.visibility='hidden';
	document.getElementById('range_suggest').style.visibility='hidden';
	if (ontologylabel == "default") {
		document.getElementById('domain').disabled = true;
		document.getElementById('range').disabled = true;
		document.getElementById('predicate').disabled = true;
		document.getElementById('submitbutton').disabled = true;
	}
	else {
		document.getElementById('domain').disabled = false;
		document.getElementById('range').disabled = false;
		document.getElementById('predicate').disabled = false;
		document.getElementById('submitbutton').disabled = false;
	}
	
};

function checkEnterKey(e) {
	if (e.keyCode == 13) {
		alert("enter key");
		
		return false;
	}
	else{
		return false;
	}
}
function submitForm() {
	//alert("hi: "+document.getElementById('simplesearch_form').name);
	var form = document.getElementById('simplesearch_form');
		form.submit();
	//	if (e.keyCode != 13) {

	//}
}
function suggest(e, input_value) {
	
	//document.write("input one character.");
	var key = window.event ? e.keyCode : e.which;
	inputType = input_value.id;
	if (key == 40 || key == 38) {
		//alert("hi "+inputType);
		scrollDiv(key, inputType)
	}
	else if (key == 13) {
		setEnterPress(e);
	}
	else {
		if (httpRequest.readyState == 4 || httpRequest.readyState == 0) {
//			originalString = escape(document.getElementById(inputType).value);
			originalString = document.getElementById(inputType).value;
			if (originalString != "") {
				var domainString = escape(document.getElementById('domain').value);
				var predicateString = escape(document.getElementById('predicate').value);
				var rangeString = escape(document.getElementById('range').value);
				
				var ontologylabel = document.getElementById('ontology_label').value;
				var serverPage = 'check_class_label.php';
				var theURL = serverPage + "?ontology_label="+ontologylabel+"&type="+inputType+"&domain="+domainString;
				theURL += "&predicate="+predicateString+"&range="+rangeString;
				//alert("url: "+theURL);
				httpRequest.open("GET", theURL, true);
				httpRequest.onreadystatechange = classLabelHTTPResponse;
				httpRequest.send(null);
			}
		}
	}
};

function classLabelHTTPResponse() {
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			var ss = document.getElementById(inputType+'_suggest');
			var xmlDoc=httpRequest.responseXML.documentElement;
	        //var string = xmlDoc.getElementsByTagName('label')[0].childNodes[0].nodeValue;
	        var size = xmlDoc.getElementsByTagName('label').length;
			//alert("size: "+size);
			
			ss.innerHTML = '';
			//var i = 0;
			for (var i = 0; i < size; i++) {
				maxDivId = i;
				currentDivId = -1;
				var label = xmlDoc.getElementsByTagName('label')[i].childNodes[0].nodeValue;
				var suggest =  '<div ';
			    	suggest += 'id='+inputType+'div'+i + '  onmouseover="javascript:suggestOver(this);"';
			    	suggest += ' onmouseout="javascript:suggestOut(this);" onclick="javascript:setSearch(this.innerHTML);" ';
			    	suggest += '>' + label + '</div>';
				ss.innerHTML +=suggest;
				ss.style.visibility='visible';
				//ss.style.width = document.getElementById(inputType).style.width;
				if (browser == "Netscape") {
					if (inputType == "domain") {
						ss.style.top = '196px';
					}
					else if (inputType == "predicate") {
						ss.style.top = '223px';
					}
					else if (inputType == "range") {
						ss.style.top = '250px';
					}
				}
				else {
					if (inputType == "domain") {
						ss.style.top = '213px';
					}
					else if (inputType == "predicate") {
						ss.style.top = '242px';
					}
					else if (inputType == "range") {
						ss.style.top = '271px';
					}
				}
			//	alert("width"+ document.getElementById(inputType).style.top);
			}
			if (size == 0) {
				ss.style.visibility='hidden';
			}
		}
	}
	
};
function setEnterPress(e) {
	if (e.keyCode == 13) {
		document.getElementById('domain_suggest').innerHTML = '';
		document.getElementById('predicate_suggest').innerHTML = '';
		document.getElementById('range_suggest').innerHTML = '';
		document.getElementById('domain_suggest').style.visibility='hidden';
		document.getElementById('predicate_suggest').style.visibility='hidden';
		document.getElementById('range_suggest').style.visibility='hidden';
	}
}
//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}

function scrollOver(div_value) {
	//	document.getElementById(div_value).className = 'suggest_link_over';
	div_value.className = 'suggest_link_over';
	document.getElementById(inputType).value=div_value.innerHTML;
}

//Mouse out function
function suggestOut(div_value) {
	div_value.className='suggest_link';
}

//Click domain DIV function
function setSearch(value) {
	var ss = document.getElementById(inputType+'_suggest');
	document.getElementById(inputType).value = value;
	ss.innerHTML = '';
	ss.style.visibility = 'hidden';
};

function scrollDiv(key) {
	var tempID;
	if (key == 40) {
		if (currentDivId == -1) {
			scrollOver(document.getElementById(inputType+'div0'));
			currentDivId = 0;
		}
		else {
			if (currentDivId == maxDivId) {
				tempID = inputType+'div'+maxDivId;
				var temp = document.getElementById(tempID);
				currentDivId = -1;
				suggestOut(temp)
				document.getElementById(inputType).value=originalString;
			}
			else {
				tempID = currentDivId + 1;
				setScroll(currentDivId, tempID)
			}
		}
	}
	else if (key == 38) {
		if (currentDivId == -1) {
			tempID = maxDivId;
			setScroll(maxDivId, maxDivId)
		}
		else {
			if (currentDivId == 0) {
				tempID = inputType+'div'+currentDivId;
				var temp = document.getElementById(tempID);
				currentDivId = -1;
				suggestOut(temp)
				document.getElementById(inputType).value=originalString;
			}
			else {
				tempID = currentDivId-1;
				setScroll(currentDivId, tempID)
			}
		}
	}
};

function setScroll(Old, New) {
	var tempDivId;
	currentDivId = New;
	tempDivId = inputType+'div'+Old;
	var temp = document.getElementById(tempDivId);
	suggestOut(temp)
	tempDivId=inputType+'div'+currentDivId;
	var temp2 = document.getElementById(tempDivId);
	scrollOver(temp2)
};

