function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}//end createRequestObject

var http = createRequestObject();

function sndReq(action, dbId, control) {
	
    http.open('get', '../db_db/include/rpc.php?action='+action+'&value='+dbId+'&control='+control);
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
    if(http.readyState == 4 || http.readyState=="complete"){
        var response = http.responseText;
        var update = new Array();

//document.getElementById("scr").innerHTML = response;

        if(response.indexOf('|' != -1)) {
            update = response.split('|');
			//alert("field: "+update[0]+"\nvalue: "+update[1]);
            var blurbBody = document.getElementById(update[0]);
			if(blurbBody)
			blurbBody.innerHTML = update[1];
        }
    }
}

function changeBlurb(blurbDivName) {
//this function changes the blurb currently shown
//done by ajax call to query the db

	//get titles dropdown element
	dd = document.getElementById('dbTitles');
	
	//get id of the database that is wanted
	var selectedDB = dd.options[dd.selectedIndex].value;
	
	if(!selectedDB)
		alert("There is no db: "+selectedDB);
	else{
		sndReq('getBlurb', selectedDB, blurbDivName);
	}
}

function selectDB(pressevent){
	//this function changes the selected db in the scroll box
	//need to do this, in order to update the blurb 
	//This function will select the nearest matching db title based upon what is currently typed
	
	//init vars
	var str	= new String();
	var maxMatched = 0;
	var index;

	//first get the newest typed character
	var charCode = (pressevent.which)? pressevent.which : (event.keyCode);
	var char = String.fromCharCode(charCode);

	//get controls
	dd = document.getElementById('dbTitles');
	inputTxt = document.getElementById('browseInput').value;
	
	//add newest character to input control
	inputTxt = (inputTxt + char).toLowerCase();

	//loop through all titles, and find closest match
	//acceptable b/c title list will be sorted
	//for(i=dd.length-1;i>=0;i--){
	for(i=0;i<dd.length;i++){	
		var currentlettersMatched = 0;
		for(j=0;j<inputTxt.length;j++){
	
			if(inputTxt.charAt(j) == dd.options[i].innerHTML.toLowerCase().charAt(j)){
	
				lettersMatched = j+1;
				
				if(lettersMatched > maxMatched ){
					str = dd.options[i].innerHTML;
					index = i;
					maxMatched = lettersMatched;
				}

			}
			else
				j=inputTxt.length;
		}
	}//end for loop

	dd.selectedIndex = index;


}//end selectDB()

function changecss(theClass,element,value) {
	//documentation for this script at http://www.shawnolson.net/a/503/
	 var cssRules;
	 if (document.all) {
	  cssRules = 'rules';
	 }
	 else if (document.getElementById) {
	  cssRules = 'cssRules';
	 }
	 for (var S = 0; S < document.styleSheets.length; S++){
	  for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
	   if (document.styleSheets[S][cssRules][R].selectorText == theClass) {
	    //document.styleSheets[S][cssRules][R].style[element] = value;
		if(document.styleSheets[S][cssRules][R].style[element] == "inline")
			document.styleSheets[S][cssRules][R].style[element] = "none";
		else
			document.styleSheets[S][cssRules][R].style[element] = "inline";
		//document.styleSheets[S][cssRules][R].style[element] = (document.styleSheets[S][cssRules][R].style[element] == "block") ? "":"block";
	   }
	  }
	 }	
}

function changeValue(elementId, defaultValue, newValue){
	if(document.getElementById(elementId).value==defaultValue){
		document.getElementById(elementId).value=newValue;
	}
	else{
		document.getElementById(elementId).value=defaultValue;
	}
}

function getSelectedDbTitle(){
	var selectedDB = document.getElementById('dbTitles').options[document.getElementById('dbTitles').selectedIndex].innerHTML;
	var ampPos = selectedDB.indexOf("&amp;", 0);
	if(ampPos != -1){
		var prefix = selectedDB.substring(0, ampPos);
		var suffix = selectedDB.substring(ampPos+5, selectedDB.length);
		selectedDB = prefix + "&" + suffix;
	}

	document.getElementById('browseInput').value = selectedDB;
	
}

function noEnter() {
  return !(window.event && window.event.keyCode == 13); 
 }
function browseSubmit(){
	if(document.getElementById('THDropDown-browseInput').className == 'THShowDropDown'){
		document.frmBrowse.browseSubmitBtn.focus();
		return false;
	}
	else{
		document.getElementById('dbname').value = document.getElementById('browseInput').value;
		//check that a db has been selected
		if(document.getElementById('dbTitles').selectedIndex == -1){
			alert("Please select a database before hitting connect");
			return false;
		}
		else{
			document.frmBrowse.submit();
			return true;
		}
	}
}



