

var selectedTR = null;



function removeClassName (elem, className) {

	elem.className = elem.className.replace(className, "").trim();

}



function addCSSClass (elem, className) {

	removeClassName (elem, className);

	elem.className = (elem.className + " " + className).trim();

}



String.prototype.trim = function() {

	return this.replace( /^\s+|\s+$/, "" );

}



function ChangeColor(tr, highLight)

{

	if(selectedTR == null || selectedTR != tr)

	{

		if (highLight)

	  	{

			if(tr.className == 'normalRow')

			{

				removeClassName (tr, 'normalRow');

				addCSSClass (tr, 'normalRowH');

			}

			else

			{

				removeClassName (tr, 'alternateRow');

				addCSSClass (tr, 'alternateRowH');

			}

	  	}

	  	else

	  	{

			if(tr.className == 'normalRowH')

			{

				removeClassName (tr, 'normalRowH');

				addCSSClass (tr, 'normalRow');

			}

			else

			{

				removeClassName (tr, 'alternateRowH');

				addCSSClass (tr, 'alternateRow');

			}

	  	}

	}

}





function SelectRow(tr, callback)

{

	var data = tr.getElementsByTagName("td").item(0).innerHTML;



	// if one is currently selected, unselect it to normal as long as we've not just clicked it

	if(selectedTR && selectedTR != tr)

	{

		if(selectedTR.className == 'normalRowS')

		{

			selectedTR.className = 'normalRow';

		}

		else if(selectedTR.className == 'alternateRowS')

		{

			selectedTR.className = 'alternateRow';

		}

	}



	// select the one we've just clicked as long as it wasn't already selected

	if(selectedTR != tr)

	{

		if(tr.className == 'normalRowH')

		{

			tr.className = 'normalRowS';

		}

		else if(tr.className == 'alternateRowH')

		{

			tr.className = 'alternateRowS';

		}

			

		selectedTR = tr;

		if(callback)

		{

			callback(data); // true because we've selected it

		}

	}

}





function ChangeColourDouble(tr, highLight)

{

	cname = tr.className

	cbits = cname.split("Row"); // cbits[0] contains normal/alternate, cbits[1] contains A/B/AH/BH...

	order = cbits[1].substr(0, 1);



	if(order == 'A')

	{

			tr1 = tr;

			tr2 = tr.nextSibling;

	}

	else if(order == 'B')

	{

			tr1 = tr.previousSibling;

			tr2 = tr;

	}

	else

	{

			alert("Error: order should not be "+order);

	}



	if(selectedTR == null || selectedTR != tr1)

	{

		if (highLight)

	  	{

			switch(tr1.className)

			{

					case 'normalRowA':

						removeClassName (tr1, 'normalRowA');

						addCSSClass (tr1, 'normalRowAH');

						removeClassName (tr2, 'normalRowB');

						addCSSClass (tr2, 'normalRowBH');

					break;

						

					case 'alternateRowA':

						removeClassName (tr1, 'alternateRowA');

						addCSSClass (tr1, 'alternateRowAH');

						removeClassName (tr2, 'alternateRowB');

						addCSSClass (tr2, 'alternateRowBH');

						break;

			}

		}

	  	else

	  	{

			switch(tr1.className)

			{

					case 'normalRowAH':

						removeClassName (tr1, 'normalRowAH');

						addCSSClass (tr1, 'normalRowA');

						removeClassName (tr2, 'normalRowBH');

						addCSSClass (tr2, 'normalRowB');

						break;



					case 'alternateRowAH':

						removeClassName (tr1, 'alternateRowAH');

						addCSSClass (tr1, 'alternateRowA');

						removeClassName (tr2, 'alternateRowBH');

						addCSSClass (tr2, 'alternateRowB');

						break;

			}

	  	}

	}

}





function HandleKeyPress(tr)

{

	alert(event.keyCode);

}





// the double version has unselect processing

function SelectRowDouble(tr, callback)

{

	cname = tr.className;

	cbits = cname.split("Row"); // cbits[0] contains normal/alternate, cbits[1] contains A/B/AH/BH...

	order = cbits[1].substr(0, 1);



	if(order == 'A')

	{

			tr1 = tr;

			tr2 = tr.nextSibling;

	}

	else if(order == 'B')

	{

			tr1 = tr.previousSibling;

			tr2 = tr;

	}

	else

	{

			alert("Error: order should not be "+order);

	}



	var data = tr1.getElementsByTagName("td").item(0).innerHTML;



	// if one is currently selected, unselect it to normal as long as we've not just clicked it

	if(selectedTR && selectedTR != tr1)

	{

		selectedTR1 = selectedTR;

		selectedTR2 = selectedTR.nextSibling;

		

		if(selectedTR1.className == 'normalRowAS')

		{

			selectedTR1.className = 'normalRowA';

			selectedTR2.className = 'normalRowB';				

		}

		else if(selectedTR1.className == 'alternateRowAS')

		{

			selectedTR1.className = 'alternateRowA';

			selectedTR2.className = 'alternateRowB';				

		}

	}



	// select the one we've just clicked as long as it wasn't already selected

	if(selectedTR != tr1)

	{

		if(tr1.className == 'normalRowAH')

		{

			tr1.className = 'normalRowAS';

			tr2.className = 'normalRowBS';			

		}

		else if(tr1.className == 'alternateRowAH')

		{

			tr1.className = 'alternateRowAS';

			tr2.className = 'alternateRowBS';			

		}

			

		selectedTR = tr1;

		if(callback)

		{

			callback(true, data); // true because we've selected it

		}

	}

	else

	{

		//we've just unselected the current one - set it to highlight instead

		if(tr1.className == 'normalRowAS')

		{

			tr1.className = 'normalRowAH';

			tr2.className = 'normalRowBH';			

		}

		else if(tr1.className == 'alternateRowAS')

		{

			tr1.className = 'alternateRowAH';

			tr2.className = 'alternateRowBH';			

		}



		selectedTR = null;



		if(callback)

		{

			callback(false, data); // false because we've unselected it

		}

	}

}

