//RRK 2005 - input controllers through JavaScript


//RRK - This function accepts only specified input.
function KeepOnly (Target)
{
	//Pass an object or a string.
	if (Target.toString() != "[object]")
	{
		//RRK 07-08-2008 accept new keyhandlers without replacing code
		//if (Target.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) == -1)
		if (Target.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) == -1 || window.event.keyCode == 8 || window.event.keyCode == 46 || window.event.keyCode == 0/* || window.event.ctrlKey || window.event.shiftKey || window.event.modifiers == 2*/)
		{
			window.event.keyCode = 0;
		}
	}
	else
	{
		//RRK 07-08-2008 accept new keyhandlers without replacing code
		//if (Target.KeepOnly.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) == -1)
		if (Target.KeepOnly.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) == -1 || window.event.keyCode == 8 || window.event.keyCode == 46 || window.event.keyCode == 0/* || window.event.ctrlKey || window.event.shiftKey || window.event.modifiers == 2*/)
		{
			window.event.keyCode = 0;
		}
	}
}
//RRK - This function cancels only specified input.
function LoseOnly (Target)
{
	//Pass an object or a string.

	if (Target.toString() != "[object]")
	{
		//RRK 07-08-2008 accept new keyhandlers without replacing code
		//if (Target.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) != -1)
		if (Target.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) != -1 || window.event.keyCode == 8 || window.event.keyCode == 46 || window.event.keyCode == 0/* || window.event.ctrlKey || window.event.shiftKey || window.event.modifiers == 2*/)
		{
			window.event.keyCode = 0;
		}
	}
	else
	{
		//RRK 07-08-2008 accept new keyhandlers without replacing code
		//if (Target.LoseOnly.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) != -1)
		if (Target.LoseOnly.indexOf(String.fromCharCode(parseInt(window.event.keyCode))) != -1 || window.event.keyCode == 8 || window.event.keyCode == 46 || window.event.keyCode == 0/* || window.event.ctrlKey || window.event.shiftKey || window.event.modifiers == 2*/)
		{
			window.event.keyCode = 0;
		}
	}
}
//RRK - This function enforces cut&paste rules.
function OnLeaving (Target, KeyList1, KeyList2, NoEnds, Casing, Sequences)
{
	//OnLeaving(object/string, accept/null, cancel/null, keeptrailingspaces, upper/lower, arrayofbadstrings);

	if (Target.toString() != "[object]")
	{
		if (KeyList2 != "" && KeyList2 != null)
		{
			for (var Counter = 0; Counter < document.getElementById(Target).value.length; Counter++)
			{
				if (KeyList2.indexOf(document.getElementById(Target).value.charAt(Counter)) != -1)
				{
					document.getElementById(Target).value = document.getElementById(Target).value.substring(0, Counter) + document.getElementById(Target).value.substring(Counter + 1, document.getElementById(Target).value.length);
					Counter--;
				}
			}
			//for (var Counter = 0; Counter < KeyList2.length; Counter++)
			//{
			//	document.getElementById(Target).value = document.getElementById(Target).value.replace(new RegExp(KeyList2.charAt(Counter), "g"), "");
			//}
			//Regular expressions have...issues...with some characters
		}
		if (KeyList1 != "" && KeyList1 != null)
		{
			for (var Counter = 0; Counter < document.getElementById(Target).value.length; Counter++)
			{
				if (KeyList1.indexOf(document.getElementById(Target).value.charAt(Counter)) == -1)
				{
					document.getElementById(Target).value = document.getElementById(Target).value.substring(0, Counter) + document.getElementById(Target).value.substring(Counter + 1, document.getElementById(Target).value.length);
					Counter--;
				}
			}
			//for (var Counter = 0; Counter < document.getElementById(Target).value.length; Counter++)
			//{
			//	if (KeyList1.indexOf(document.getElementById(Target).value.charAt(Counter)) == -1)
			//	{
			//		document.getElementById(Target).value = document.getElementById(Target).value.replace(new RegExp(document.getElementById(Target).value.charAt(Counter), "g"), "");
			//		Counter--;
			//	}
			//}
			//Regular expressions have...issues...with some characters
		}
		if (NoEnds == true)
		{
			while (document.getElementById(Target).value.substring(0, 1) == " ")
			{
				document.getElementById(Target).value = document.getElementById(Target).value.substring(1, document.getElementById(Target).value.length);
			}
			while (document.getElementById(Target).value.substring(document.getElementById(Target).value.length - 1, document.getElementById(Target).value.length) == " ")
			{
				document.getElementById(Target).value = document.getElementById(Target).value.substring(0, document.getElementById(Target).value.length - 1);
			}
		}
		switch (Casing)
		{
			case "U":
			{
				document.getElementById(Target).value = document.getElementById(Target).value.toUpperCase();
			}
			break;
			case "L":
			{
				document.getElementById(Target).value = document.getElementById(Target).value.toLowerCase();
			}
			break;
		}
		//if (Sequences != null)
		//{
		//	for (var Counter = 0; Counter < Sequences.length; Counter++)
		//	{
		//		document.getElementById(Target).value = document.getElementById(Target).value.split(Sequences[Counter]).join("");
		//	}
		//}
	}
	else
	{
		if (Target.LoseOnly != "" && Target.LoseOnly != null)
		{
			for (var Counter = 0; Counter < Target.value.length; Counter++)
			{
				if (Target.LoseOnly.indexOf(Target.value.charAt(Counter)) != -1)
				{
					Target.value = Target.value.substring(0, Counter) + Target.value.substring(Counter + 1, Target.value.length);
					Counter--;
				}
			}
			//for (var Counter = 0; Counter < Target.LoseOnly.length; Counter++)
			//{
			//	Target.value = Target.value.replace(new RegExp(Target.LoseOnly.charAt(Counter), "g"), "");
			//}
			//Regular expressions have...issues...with some characters
		}
		if (Target.KeepOnly != "" && Target.KeepOnly != null)
		{
			for (var Counter = 0; Counter < Target.value.length; Counter++)
			{
				if (Target.KeepOnly.indexOf(Target.value.charAt(Counter)) == -1)
				{
					Target.value = Target.value.substring(0, Counter) + Target.value.substring(Counter + 1, Target.value.length);
					Counter--;
				}
			}
			//for (var Counter = 0; Counter < Target.value.length; Counter++)
			//{
			//	if (Target.KeepOnly.indexOf(Target.value.charAt(Counter)) == -1)
			//	{
			//		Target.value = Target.value.replace(new RegExp(Target.value.charAt(Counter), "g"), "");
			//		Counter--;
			//	}
			//}
			//Regular expressions have...issues...with some characters
		}
		if (NoEnds == true)
		{
			while (Target.value.substring(0, 1) == " ")
			{
				Target.value = Target.value.substring(1, Target.value.length);
			}
			while (Target.value.substring(Target.value.length - 1, Target.value.length) == " ")
			{
				Target.value = Target.value.substring(0, Target.value.length - 1);
			}
		}
		switch (Casing)
		{
			case "U":
			{
				Target.value = Target.value.toUpperCase();
			}
			break;
			case "L":
			{
				Target.value = Target.value.toLowerCase();
			}
			break;
		}
		//if (Sequences != null)
		//{
		//	for (var Counter = 0; Counter < Sequences.length; Counter++)
		//	{
		//		Target.value = Target.value.split(Sequences[Counter]).join("");
		//	}
		//}
	}
}
