// -------------------------------------------------------------------
// autoComplete (text_input, select_input, ["text"|"value"], [true|false])
//   Arguments:
//      field = text input field object
//      select = select list object containing valid values
//      property = either "text" or "value". This chooses which of the
//                 SELECT properties gets filled into the text box -
//                 the 'value' or 'text' of the selected option
//      forcematch = true or false. Set to 'true' to not allow any text
//                 in the text box that does not match an option. Only
//                 supported in IE (possible future Netscape).
// -------------------------------------------------------------------
function autoComplete (field, select, property, forcematch) {
	var found = false;
	
	for (var i = 0; i < select.options.length; i++) 
	{
		if (select.options[i][property].toLowerCase().indexOf(field.value.toLowerCase()) == 0) 
		{
			found=true; break;
		}
	}
	
	if (found) 
	{ 
		select.selectedIndex = i; 
	}
	else 
	{ 
		select.selectedIndex = -1; 
	}
	
	if (field.createTextRange) 
	{
		if (forcematch && !found) 
		{
			field.value=field.value.substring(0,field.value.length-1); 
			return;
		}
		
		var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
		
		if (cursorKeys.indexOf(event.keyCode+";") == -1) 
		{
			var r1 = field.createTextRange();
			var oldValue = r1.text;
			var newValue = found ? select.options[i][property] : oldValue;
			if (newValue != field.value) 
			{
				field.value = newValue;
				var rNew = field.createTextRange();
				rNew.moveStart('character', oldValue.length) ;
				rNew.select();
			}
		}
	}
}

// -------------------------------------------------------------------
// valDate (text_input, [true|false])
//   Arguments:	txt = field to be validated referenced with this
//				btime = boolean if true then make mask for time also
//
//	 Remarks:	the valDate function must be used in the 
//				onkeypress event of an input box object
//	 Example:	onkeypress="return valDate(this,true)"
// -------------------------------------------------------------------

function valDate(txt, btime)
{
	if (event.keyCode<48||event.keyCode>57)
	{
		return false;
	}
	else
	{
	var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
		
			if (cursorKeys.indexOf(event.keyCode+";") == -1) 
			{
				if (btime)
				{
					switch (txt.value.length)
					{
						case 2:
							txt.value = txt.value + "-";
							break;
						case 5:
							txt.value = txt.value + "-";
							break;
						case 10:
							txt.value = txt.value + " ";
							break;
						case 13:
							txt.value = txt.value + ":";
							break;
						case 16:
							txt.value = txt.value + ":";
							break;
						default:
							break;
	
					}
	
					if (txt.value.length >= 18)
					{
						txt.value = txt.value.substring(0,18);
					}
		
				}
				else
				{
					switch (txt.value.length)
					{
						case 2:
							txt.value = txt.value + "-";
							break;
						case 5:
							txt.value = txt.value + "-";
							break;
						default:
							break;
					}
	
					if (txt.value.length >= 9)
					{
						txt.value = txt.value.substring(0,9);
					}
				}
			}
		return;
	}
}

function valTime(txt, btime)
{
	if (event.keyCode<48||event.keyCode>57)
	{
		return false;
	}
	else
	{
	var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
		
			if (cursorKeys.indexOf(event.keyCode+";") == -1) 
			{
				if (btime)
				{
					switch (txt.value.length)
					{
						case 2:
							txt.value = txt.value + "-";
							break;
						case 5:
							txt.value = txt.value + "-";
							break;
						case 10:
							txt.value = txt.value + " ";
							break;
						case 13:
							txt.value = txt.value + ":";
							break;
						case 16:
							txt.value = txt.value + ":";
							break;
						default:
							break;
	
					}
	
					if (txt.value.length >= 18)
					{
						txt.value = txt.value.substring(0,18);
					}
		
				}
				else
				{
					switch (txt.value.length)
					{
						case 2:
							txt.value = txt.value + ":";
							break;
						case 5:
							txt.value = txt.value + ":";
							break;
						default:
							break;
					}
	
					if (txt.value.length >= 7)
					{
						txt.value = txt.value.substring(0,7);
					}
				}
			}
		return;
	}
}

// returns if the value is numeric

function isNumeric(val) 
{
	var dp = false;
	for (var i=0; i < val.length; i++) 
	{
		if (!isDigit(val.charAt(i))) 
		{ 
			if (val.charAt(i) == '.') 
			{
				if (dp == true) { return false; } // already saw a decimal point
				else { dp = true; }
			}
			else 
			{
				return false; 
			}
		}
	}
	return true;
}

function isDigit(num) {
	var string="1234567890";
	if (string.indexOf(num) != -1) {
		return true;
		}
	return false;
	}

