// Object toggling library
// 12-Dec-2007 Michael Herring <herringm@denison.edu>

//create base object definition
function toggle(name, visibility, focus) {
	this.name = name;
	this.visibility = visibility;
	this.focus = focus;
}

//setup our default values
var search_bar = new toggle("searchBar", "hidden", false);
var directory_bar = new toggle("directoryBar", "hidden", false);

//toggle or forcably set visibility status of an object
function toggleObjectVisibility(toggle, forceStatus){
	//get current visibility state
	var visibility = toggle.visibility;
	
	//force object state change not required as toggle is in desired state
	if (forceStatus == visibility) {
		return true;
	}
	
	//update object visibility state
	if (forceStatus == 'visible' || toggle.visibility == 'hidden'){
		document.getElementById(toggle.name).style.display = 'block';
		toggle.visibility = 'visible';
		
		return true;
	}	
	else if (forceStatus == 'hidden' || toggle.visibility == 'visible'){
		document.getElementById(toggle.name).style.display = 'none';
		toggle.visibility = 'hidden';
		
		return true;
	}
	else {
		//unknown visibility state
		return false;
	}
	
	return true;
}

//update search_bar when user clicks "Search" Link
function updateSearchBar() {
	document.getElementById('directory').className='searchInactive';
	toggleObjectVisibility(search_bar);
	toggleObjectVisibility(directory_bar, 'hidden');
	
	if (search_bar.visibility == 'visible') {
		document.getElementById('search').className='searchActive';
		document.getElementById('search_box').focus()
	}
	else { 
		document.getElementById('search').className='searchInactive';
	}
}

//update directory_bar when user clicks "Directory" Link
function updateDirectoryBar() {
	document.getElementById('search').className='searchInactive';
	toggleObjectVisibility(directory_bar);
	toggleObjectVisibility(search_bar, 'hidden');
	
	if (directory_bar.visibility == 'visible') {
		document.getElementById('directory').className='searchActive';
		document.getElementById('dir_search').focus()
	}
	else { 
		document.getElementById('directory').className='searchInactive';
	}
}

//force search and directory bars to hidden visibility state
function hideSearchBars() {
	//verify that at least one bar is activated
	if (search_bar.visibility == 'visible' || directory_bar.visibility == 'visible') {
		toggleObjectVisibility(search_bar, 'hidden');
		document.getElementById('search').className='searchInactive';
		
		toggleObjectVisibility(directory_bar, 'hidden');
		document.getElementById('directory').className='searchInactive';
	}
}

//create directory search query
function createDirectoryQuery() {
	document.getElementById('dir_query').name=document.getElementById('dir_query_field').value;
	document.getElementById('dir_query').value=document.getElementById('dir_search').value;
}

//send the browser to linkURI - useful for triggering link clicks off of divs, spans, table cells, etc.
function navigateToURI(linkURI){
	window.location.href=linkURI;
}

//set focus on input box of search and directory bars
$(document).ready(function(){
  if ($.browser.msie || $.browser.safari) {
    $("#select").change(function () {
      $("#search_box").focus();

    });

    $("#dir_query_field").change(function () { 
      $("#dir_search").focus();
    });
  } else {
    $("#select > option").click(function () {
      $("#search_box").focus();
    });

    $("#dir_query_field > option").click(function () { 
      $("#dir_search").focus();
    });
  }
});