	function handleKeyUp(selectID,inputID,  searchStartsWith, functionlist, functionlistValues, Area, URL, execute)
	{
			var selectObj, textObj, functionListLength;
			var i, searchPattern, numShown;
			var prevSelect;
			if(document.getElementById(selectID).selectedIndex >= 0)
				prevSelect = document.getElementById(selectID).options[document.getElementById(selectID).selectedIndex].value;
			else
				prevSelect = -1;
			// Set references to the form elements
			selectObj = document.getElementById(selectID);
			textObj = document.getElementById(inputID);
			if(textObj.value == "")
			{
					for(i = 0; i < functionListLength; i++)
						selectObj[i] = new Option(functionlist[i], functionlistValues[i]);

			}
			// Remember the function list length for loop speedup
			functionListLength = functionlist.length;


			if(searchStartsWith == true)
					searchPattern = "^"+textObj.value;
			else
					searchPattern = textObj.value;

			re = new RegExp(searchPattern,"gi");
			selectObj.length = 0;

			// Loop through the array and re-add matching options
			var numShown = 0;
			for(i = 0; i < functionListLength; i++)
					if(functionlist[i].search(re) != -1){
							selectObj[numShown] = new Option(functionlist[i], functionlistValues[i]);
							if(prevSelect >= 0 && prevSelect == functionlistValues[i]){
								selectObj[numShown].selected = "true";
							}
							numShown++;
					}
			// When options list whittled to one, select that entry
			if(selectObj.length == 1){
					selectObj.options[0].selected = true;
					if( Area != '' && URL != '')
						execute(URL, Area, selectID);
			} else if( selectObj.length == 0){
				if( Area != '')
					document.getElementById(Area).innerHTML = "None"
			}
	}


function getItms(URL, Area, Me, clear){
 var paramdata = "RID="+document.getElementById(Me).options[document.getElementById(Me).selectedIndex].value;

	var tmp = new net.ContentLoader	(	URL 	, ProcessorgetItms,
										null 				,	"POST" ,
										paramdata 		, null,
										Area				,	clear
									);

}

function ProcessorgetItms(){
	document.getElementById(this.objectID).innerHTML = this.req.responseText;
	switch(this.passObject.count){
	case 2:
		document.getElementById(this.passObject.Two).innerHTML = "<select ><option value = ''></option></select>";
	case 1:
		document.getElementById(this.passObject.One).innerHTML = "<select ><option value = ''></option></select>";
	break;
	default:
		break;
	}
}



function getJoints(URL, Area, Me,Cat,Itm){

 var paramdata = "RID="+document.getElementById(Me).options[document.getElementById(Me).selectedIndex].value;
	paramdata += '&ITMID='+ document.getElementById(Itm).options[document.getElementById(Itm).selectedIndex].value;
	paramdata += '&CATID='+ document.getElementById(Cat).options[document.getElementById(Cat).selectedIndex].value;
//alert(paramdata);
	var tmp = new net.ContentLoader	(	URL 	, ProcessorgetJoints,
										null 				,	"POST" ,
										paramdata 		, null,
										Area				,	null /*files*/
									);

}


function getSingleParam(URL, Area, Me){

 var paramdata = "RID="+document.getElementById(Me).options[document.getElementById(Me).selectedIndex].value;
//alert(paramdata);
	var tmp = new net.ContentLoader	(	URL 	, ProcessorgetJoints,
										null 				,	"POST" ,
										paramdata 		, null,
										Area				,	null /*files*/
									);

}


function ViewBanner(URL, Area, Me){
 var paramdata = "RID="+document.getElementById(Me).options[document.getElementById(Me).selectedIndex].value;
//alert(paramdata);
document.getElementById(Area).innerHTML = "Loading..."
	var tmp = new net.ContentLoader	(	URL 	, ProcessorgetJoints,
										null 				,	"POST" ,
										paramdata 		, null,
										Area				,	null /*files*/
									);

}


function ProcessorgetJoints(){
	document.getElementById(this.objectID).innerHTML = this.req.responseText;
}


function getversion(){
if(navigator.appName.indexOf("Netscape")>-1){
	return 0;
}
else if((navigator.appName.indexOf("Microsoft")>-1) || (navigator.appName.indexOf("MSIE")>-1)){
	return 1;
}
else if(navigator.appName.indexOf("Opera")>-1){
return 0;}
else{
	return 0;
}
}


function swapColumns (tableID, colIndex1, colIndex2, dir) {
	table = document.getElementById(tableID);
	var recurse = 0;
	colIndex1 = Number(colIndex1);
	colIndex2 = Number(colIndex2);

		if(table.rows.length <= 0)
			return;
	if(colIndex1 >=  table.rows[0].cells.length || colIndex2 >= table.rows[0].cells.length)
			return;
	if(colIndex1 <  0 || colIndex2 < 0)
			return;

	if(table.rows[colIndex2].cells[colIndex2].style.display == "none")
			recurse = 1;

	if(colIndex1 < 0 || colIndex2 < 0)
		return;
	if (colIndex1 > colIndex2){
		var t = colIndex1;
		colIndex1 = colIndex2;
		colIndex2 = t;
	}

	if (table && table.rows &&  table.insertBefore && colIndex1 != colIndex2) {

		for (var i=0, len=table.rows.length; i<len; i++) {
			var row = table.rows[i];
			var cell1 = row.cells[colIndex1];
			var cell2 = row.cells[colIndex2];
			row.insertBefore(cell2, cell1);
			row.insertBefore(cell1, row.cells[colIndex2].nextSibling);
		}

			var onlickTmp = 	document.getElementById("Left_"+colIndex2).onclick;
			document.getElementById("Left_"+colIndex2).onclick = 	document.getElementById("Left_"+colIndex1).onclick
			document.getElementById("Left_"+colIndex1).onclick = onlickTmp;

			document.getElementById("Left_"+colIndex1).id = "Left_"+colIndex2;
			document.getElementById("Left_"+colIndex2).id = "Left_"+colIndex1;

			onlickTmp = 	document.getElementById("Hide_"+colIndex2).onclick;
			document.getElementById("Hide_"+colIndex2).onclick = document.getElementById("Hide_"+colIndex1).onclick;
			document.getElementById("Hide_"+colIndex1).onclick = onlickTmp;

			document.getElementById("Hide_"+colIndex1).id = "Hide_"+colIndex2;
			document.getElementById("Hide_"+colIndex2).id = "Hide_"+colIndex1;


			onlickTmp = 	document.getElementById("Right_"+colIndex2).onclick;
			document.getElementById("Right_"+colIndex2).onclick = document.getElementById("Right_"+colIndex1).onclick;
			document.getElementById("Right_"+colIndex1).onclick = onlickTmp;

			document.getElementById("Right_"+colIndex1).id = "Right_"+colIndex2;
			document.getElementById("Right_"+colIndex2).id = "Right_"+colIndex1;


		if(recurse == 1){
			if(dir == 1){// left
				 swapColumns(tableID,colIndex1,colIndex1-1,1);
			} else if (dir == 2){ // right
				swapColumns(tableID,colIndex2,colIndex2+1,2);
			}
		}
	}
}


function Hide(tableID,cellNum){
	var oRow;
	var curr_row;
	var curr_cell;
	cellNum = Number(cellNum);
	var oTable = document.getElementById(tableID);

		for (curr_row = 0; curr_row < 	oTable.rows.length; curr_row++){
			oRow = oTable.rows[curr_row];
			oRow.cells[cellNum].style.display = 'none';
	}
	document.getElementById('showAll').style.display = "block";
}

function showAll(tableID){
	var oRow;
	var curr_row;
	var curr_cell;
	var type = getversion();
	var oTable = document.getElementById(tableID);
	for (curr_row = 0; curr_row < 	oTable.rows.length; curr_row++){
		oRow = oTable.rows[curr_row];
		for (curr_cell = 0; curr_cell < oRow.cells.length; curr_cell++){
			if(type == 0){
				oRow.cells[curr_cell].style.display = 'table-cell';
			} else {
				oRow.cells[curr_cell].style.display = 'block';
			}
		}
	}
	document.getElementById('showAll').style.display = "none";

}


function setObjValue(targetObj, srcObj){
	document.getElementById(targetObj).value= getIndexText(srcObj);
}


function getIndexText(parentObjectID){
	var Index = document.getElementById( parentObjectID ).selectedIndex;
	var obj = document.getElementById( parentObjectID );
	if( Index != -1){
		var inputs = obj.options[Index].text;
	} else{
		var inputs = "";
	}
	return inputs;
}


/* ***************************************************************************
**	Name: ProcessorCall
**
**	Inputs: 	URL:  The processor page
**
**
**				TblID: The ID of the Table we wish to replace.
**
**	Return: boolean : true or false
**
**	Summary: This function is called to work on processing a form as well as
**				return back the status messages to a specifc area on the page.
**
** ************************************************************************ */
function ProcessorCall(URL, TblID, Sort){
	//var files = new Object();
	paramdata = "Sort="+Sort;
	//files.Page = "./?" + paramdata;

	var tmp = new net.ContentLoader	(	URL 	, ProcessorCallExitCheck ,
										null 				,	"POST" ,
										paramdata 		, null,
										TblID				,	null */files*/
									);
//									problematic doing stuff after return it seems,,

}




/* ***************************************************************************
**	Name: ProcessorCallExit
**
**	Inputs: None
**
**	Return: None
**
**	Summary:The load function for the initially called function ProcessorCall.
**
** ************************************************************************ */
function ProcessorCallExitCheck(){
//	alert("response: " + this.req.responseText);
	removeAllChildNodes(this.objectID);
//	alert(this.objectID);
	document.getElementById(this.objectID).innerHTML = this.req.responseText;
	//location.replace(this.passObject.Page);
}


/* ***************************************************************************
**	Name: removeAllChildNodes
**
**	Inputs: obj_ID:  This is the ID of whatever we plan to remove.
**
**	Return: None
**
**	Summary: This function is just a simple loop that goes through and removes
**			all children nodes of a specific node.
** Not tested to see if it also removes the parent node at the end...
**
** ************************************************************************ */
function removeAllChildNodes(obj_ID) {
var node = document.getElementById(obj_ID);
	if (node && node.hasChildNodes && node.removeChild) {
		while (node.hasChildNodes()) {
			node.removeChild(node.firstChild);
		}
	}
}


/* ***************************************************************************
**	Name: removeThisNode
**
**	Inputs: obj_ID:  This is the ID of whatever we plan to remove.
**
**	Return: None
**
**	Summary: A simple function that is used to remove the specified node
**			from the DOM tree.
**
** ************************************************************************ */
function removeThisNode(obj_ID){
	var node = document.getElementById(obj_ID);
	var nodeParent = node.parentNode;
	nodeParent.removeChild(node);
}
