function ParseTime(str)
{
	// clean up the strin
	while (str.indexOf(" ")>=0) str = str.replace(/ /, "");
	while (str.indexOf(".")>=0) str = str.replace(/\./, "");
	str = str.toLowerCase();
	
	// some special cases
	if (str=="noon") return "12:00 pm";
	if (str=="midnight") return "12:00 am";
	
	var l = str.length;
	var charBreak = 0;
	var hour = 0;
	var minute = 0;
	var ampm = null;
	var guess_mil = false;
	var mil_hour = 0;
	var mil_min = 0;
	
	// try to parse hour
	while (str.charAt(charBreak)>='0' && str.charAt(charBreak)<='9') {
		if (charBreak == 0 && str.charAt(charBreak)=='0') guess_mil = true;
		hour *= 10;
		hour += str.charAt(charBreak)-'0';
		charBreak++;
	}
	if (guess_mil || hour>=1000) {
		guess_mil = true;
		// guess that this is military time
		mil_min = hour%100;
		mil_hour = Math.floor(hour/100);
		if (mil_hour<0 || mil_hour>23) guess_mil = false;
		if (mil_min<0 || mil_min>59) guess_mil = false;
		if (guess_mil) {
			minute = mil_min;
			if (mil_hour == 0) {
				hour = 12;
				ampm = 'a';
			} else if (mil_hour == 12) {
				hour = 12;
				ampm = 'p';
			} else if (mil_hour > 12) {
				hour = mil_hour-12;
				ampm = 'p';
			} else {
				hour = mil_hour;
				ampm = 'a';
			}
		}
	}
	if (hour>=13 && hour<=23) {
		// guess that this is on a 24 hour clock
		hour -= 12;
		ampm = 'p';
	}
	if (hour<1 || hour>12) return null;
	// if ":" try to parse minutes
	if (charBreak<l && str.charAt(charBreak)==':') {
		charBreak++;
		while (charBreak<l && str.charAt(charBreak)>='0' && str.charAt(charBreak)<='9') {
			minute *= 10;
			minute += str.charAt(charBreak)-'0';
			charBreak++;
		}
		if (minute<0 || minute>59) return null;
	}
	// if am/pm, try to parse
	if (charBreak<l && (str.charAt(charBreak)=='a' || str.charAt(charBreak)=='p')) {
		ampm = str.charAt(charBreak);
	}
	// if no am/pm, assume [7AM,7PM)
	if (ampm == null) {
		if ((hour == 12) || (hour < 7)) ampm = 'p';
		else ampm = 'a';
	}
	// try to construct a string representation of our time
	var retval = hour+(minute<10?":0":":")+minute+" "+ampm+"m";
	return retval;
}

function SetWithLabel(obj, className)
{
	obj.className = className;
	var labels = document.getElementsByTagName("LABEL");
	var x;
	for (x=0;x<labels.length;x++) {
		if (labels[x].getAttribute("for") == obj.id) {
			labels[x].className = className;
		}
	}
}

function ValidateTextTime(obj)
{
	var FixedTime = ParseTime(obj.value);
	if (obj.value == "") FixedTime="";
	if (FixedTime == null) {
		SetWithLabel(obj, "InvalidTime");
	} else {
		obj.value = FixedTime;
		SetWithLabel(obj, "ValidTime");
	}
}

