var selectedId = "";
var selectedRow = null;
var doSelect = 1;
var selectedRowType = "";
var lastSelectedRow = null;

function selectRow() {
	if (!doSelect)
		return false;
		
	var row = event.srcElement;
	while(row.className.indexOf("istRow")==-1)
		row = row.parentElement;
	
	try {	
		multiSelectList = (row.parentElement.parentElement.multiSelectList=="true");
	} catch (e) {
		multiSelectList = false;
	}

	if ((event.shiftKey || event.ctrlKey) && multiSelectList && lastSelectedRow!=null) {
		if (event.shiftKey) {
			deselectAllRows(lastSelectedRow.parentElement);
			selectThisRow(lastSelectedRow);
			rowsToChange = Math.abs(lastSelectedRow.rowIndex - row.rowIndex);
			k = (lastSelectedRow.rowIndex < row.rowIndex)?-1:1;
			for (i=0; i<rowsToChange; i++) {
				rowToChange = row.parentElement.rows[row.rowIndex + i*k];
				rowToChange.className = rowToChange.className + "selected";
				rowToChange.selected = true;
			}
			selectedRow = row;
		} else if (event.ctrlKey) {
			if (row.selected) {
				deselectRow(row);
				lastSelectedRow = row;
			} else {
				selectThisRow(row);
				lastSelectedRow = row;
			}
		}
	} else {
		if (event.button != 2)
			deselectAllRows(row.parentElement);
		else if (!row.selected)
			deselectAllRows(row.parentElement);

		selectThisRow(row);
	}
}

function getSelectedRowsData(property) {
	var returnValue = "";
	var index=1;
	for (i=0; i<lastSelectedRow.parentElement.rows.length; i++) {
		if (eval("lastSelectedRow.parentElement.rows[" + i + "].selected==true"))
			returnValue += "v" + index++ + "{(" + eval("lastSelectedRow.parentElement.rows[" + i + "]." + property) + ")}";
	}
	return returnValue + "count{(" + (index-1) + ")}";
}

function deselectAllRows(table) {
	for (i=0; i<table.rows.length; i++) {
		if (table.rows[i].selected)
			deselectRow(table.rows[i]);
	}	
}

function selectAllRows(table) {
	for (i=0; i<table.rows.length; i++)
		selectThisRow(table.rows[i]);
}

function deselectRow(row) {
	row.selected = false;
	
	if (row.className.substr(row.className.length-8, 8)=="selected")
		row.className = row.className.substr(0, row.className.length-8);
}

function selectThisRow(row) {
	row.focus();
	row.selected = true;
	
	if (row.className.substr(row.className.length-8, 8)!="selected")
		row.className = row.className + "selected";
	
	lastSelectedRow = row;
	selectedRow = row;
	selectedId = row.id;
	selectedRowType = row.rowType;
}

function handleKeys() {
	if (event.ctrlKey && event.altKey) {
		if (event.keyCode == 65 || event.keyCode == 97)
			selectAllRows(lastSelectedRow.parentElement);
			
		return false;
	}
	switch (event.keyCode)	{
		case 37: // left
			break;
		case 38: // up
			moveSelection(0);
			window.event.returnValue = false;
			break;
		case 39: // right
			break;
		case 40: // down
			moveSelection(1);
			window.event.returnValue = false;
			break;
		case 13: // enter
			selectedRow.fireEvent("ondblclick");
			window.event.returnValue = false;
			break;
	}
}

function moveSelection(direction) {
	try {
		deselectAllRows(selectedRow.parentElement);
		switch (direction) {
			case 0: // up
				selectedRow.previousSibling.fireEvent("onmouseup");
				selectedRow.previousSibling.children(0).focus();
				break;
			case 1: // down
				selectedRow.nextSibling.fireEvent("onmouseup");
				selectedRow.nextSibling.children(0).focus();
				break;
		}
	} catch(e){selectThisRow(selectedRow)}
}

function isSelected(rowType) {
	if (rowType!=null || rowType!=undefined) {
		if (selectedRowType!=rowType) {
			messageBox("SelectOne", eMessageBoxStyle.exclamation);
			return(false);
		}
	}

	if (selectedRow==null) {
		messageBox("SelectOne", eMessageBoxStyle.exclamation);
		return(false);
	}
	return(true);
}
//////////////////////////// S E A R C H ///////////////////////////
var listSearchLastResultRow;
var listSearchLastKeyword;
function searchList(tblListTable, keyword) {
	var searchStartRow = 0;
	if (listSearchLastKeyword==keyword)
		searchStartRow = listSearchLastResultRow + 1;
	for (var i=searchStartRow; i<tblListTable.rows.length; i++) {
		var currentRow = tblListTable.rows[i];
		if (currentRow.innerHTML.indexOf(keyword)!=-1) {
			currentRow.fireEvent("onmouseup");
			currentRow.click();
			currentRow.scrollIntoView();
			//currentRow.children(0).click();
			listSearchLastResultRow = i;
			listSearchLastKeyword = keyword;
			return;
		}
	}
}
///if you  want to scrollintoview with parameters use this//
function searchList(tblListTable, keyword, scroll) {
	var searchStartRow = 0;
	if (listSearchLastKeyword==keyword)
		searchStartRow = listSearchLastResultRow + 1;
	for (var i=searchStartRow; i<tblListTable.rows.length; i++) {
		var currentRow = tblListTable.rows[i];
		if (currentRow.innerHTML.indexOf(keyword)!=-1) {
			currentRow.fireEvent("onmouseup");
			currentRow.click();
			currentRow.scrollIntoView(scroll);
			listSearchLastResultRow = i;
			listSearchLastKeyword = keyword;
			return;
		}
	}
}

function handleListSearchBoxEnter(tblListTable) {
	if (event.keyCode == 13) {
		standardizeInputCharacters(event.srcElement);
		searchList(tblListTable, event.srcElement.value, false);
		event.keyCode = 0;
		event.returnValue=false;
		return false;
	}
}
