//Author: Michael S. O'Dell, Lunar and Planetary Institute

////////////////////////////////////////
//
//				cleanKeyword
//
////////////////////////////////////////
function cleanKeyword(keyword)
//Takes a keyword passed in the url and makes it human readible.
//Assumes keyword is concatenation of search keyword and an index pointer,
//joined with a "|" and escaped.
{
	if (keyword.length<1){return "";}
	keyword=unescape(keyword);
	aFields=keyword.split("|");
	keyword=aFields[0];
  return keyword;
}

////////////////////////////////////////
//
//				searchBinary
//
////////////////////////////////////////
function searchBinary(array,column,find,first,last)
//Does a binary search of array between first and last rows.
//Looks in column for find, and returns row if found, or -1 if not found
//If there is more than one possible hit, it returns a random one.
//Array must be presorted.
{
	var middle,Row,found=0,aFields=new Array();

	while((first<=last) && !found)
	{
		middle=Math.round((first+last)/2);
		Row=array[middle];
		aFields=Row.split('|');
		if(aFields[column]==find)found=1;
		else if(aFields[column]<find)first=middle+1;
		else last=middle-1;
	}
	if(found==1)return middle;
	else return -1;
}

////////////////////////////////////////
//
//				searchFirst
//
////////////////////////////////////////
function searchFirst(array,column,find,start,finish)
// starting at start, and stopping at finish, finds the first occurrance within an array
// only works if array[start][column]==find && start>=finish
{
	var i,Row,aFields=new Array();

	i=start;
	while(i>=finish)
	{
		if(i==finish)break;
		Row=array[i-1];
		aFields=Row.split('|');
		if(aFields[column]!=find)break;
		i--;
	}
	return i;
/*	for(i=start;i>=finish;i--)
	{
		if(i==finish)return i;
		Row=array[i-1];
		aFields=Row.split('|');
		if(aFields[column]!=find)return i;
	}*/
}

////////////////////////////////////////
//
//				searchLast
//
////////////////////////////////////////
function searchLast(array,column,find,start,finish)
// starting at start, and stopping at finish, finds the first occurrance within an array
// only works if array[start][column]==find && start<=finish
{
	var i,Row,aFields=new Array();

	i=start;
	while(i<=finish)
	{
		if(i==finish)break;
		Row=array[i+1];
		aFields=Row.split('|');
		if(aFields[column]!=find)break;
		i++
	}
	return i;

/*	for(i=start;i<=finish;i++)
	{
		if(i==finish){return i;}
		Row=array[i+1];
		aFields=Row.split('|');
		if(aFields[column]!=find){return i;}
	} */
}

////////////////////////////////////////
//
//				sortRelationsTable
//
////////////////////////////////////////
function sortRelationsTable(a,b)
{
	var aTemp=new Array(),aTemp2=new Array();

	aTemp1=a.split('|');
	aTemp2=b.split('|');

	if(aTemp1[1]==aTemp2[1]){return aTemp1[0]-aTemp2[0];}
	else{return aTemp1[1]-aTemp2[1];}
}
