function getPos (obj) {
	var pos = {x: obj.offsetLeft||0, y: obj.offsetTop||0};
	while(obj = obj.offsetParent) {
		pos.x += obj.offsetLeft||0;
		pos.y += obj.offsetTop||0;
	}
	return pos;
}
// if show=false, dispElement should be null
function toggleTimePicker(show, dispElement){
	var timePicker = document.getElementById('timePicker');
	if(show){
		timePicker.style.visibility = 'visible';
		if(dispElement.value == ''){
			dispElement.value = '12:00am';
		}
		drawTimePicker(dispElement);
		timePicker.style.display = 'block';
		timePicker.style.position = 'absolute';
		var loc = getPos(dispElement);
		timePicker.style.left = '' + (loc.x - 4).toString() + 'px';
		timePicker.style.top = '' + (loc.y + 22).toString() + 'px';
		var parsedTime = parseTime(dispElement.value);
		//alert(dispElement.id + " " + parsedTime.h24.toString() + parsedTime.m.toString() + " " + document.getElementById(parsedTime.h24.toString() + parsedTime.m.toString()).className);
		document.getElementById(parsedTime.h24.toString() + parsedTime.m.toString()).className = 'timePickerTime selected';
		//alert(parsedTime.h24.toString() + parsedTime.m.toString());
		//document.getElementById("0000").className = "timePickerTime selected";
		var scrollHeight = getScrollHeight(parsedTime);
		timePicker.scrollTop = 0;
		timePicker.scrollTop += scrollHeight;
		//alert(getX(displayElement) + " " + getY(displayElement) + ", " + timePicker.style.left + " " + timePicker.style.top);
	}else{
		timePicker.style.visibility = 'hidden';
		timePicker.style.display = 'none';
	}
}
// parses time in form of 12:12am
function parseTime(value){
	var obj = new Object();
	var curHr = value.substr(0, value.indexOf(":"));
	var curMin = value.substr(value.indexOf(":") + 1,2);
	var curAmPm = value.substr(value.indexOf(":") + 3,2);
	var curHr24 = parseInt(curHr);
	if(curAmPm == "pm"){
		if(curHr24 != 12){
			curHr24 += 12;
		}
	}else if(curAmPm == "am"){
		if(curHr24 == 12){
			curHr24 = 0;
		}
	}
	obj.h = curHr;
	obj.m = curMin;
	obj.a = curAmPm;
	obj.h24 = curHr24;
	if(obj.h24 < 10){
		obj.h24 = '0' + (obj.h24).toString();
	}
	
	//alert(obj.h24 + ' ' + curMin);
	return obj;
}
// returns scroll height based on time input
function getScrollHeight(obj){
	var innerDivHeight = 14;
	var total = obj.h24 * 2 * innerDivHeight;
	if(obj.m == 30){
		total += 14;
	}
	return total;
}
function drawTimePicker(dispElement){
	//document.getElementById('output').innerHTML = '';
	var timePicker = '';
	timePicker += '<div id="timePickerDiv">' + '\n';
	for(var i = 0; i < 24; i++){
		var hr24 = i;
		if(hr24 < 10){
			hr24 = "0" + (hr24).toString();
		}
		var ampm = 'am';
		var hr = i;
		if(i >= 12){
			hr = i - 12;
			ampm = 'pm';
		}
		if(hr == 0){
			hr = hr + 12;
		}
		for(var j = 0; j < 2; j++){
			var m = '';
			if(j == 0){
				m = '00';
			}else{
				m = '30';
			}
			timePicker += '<div id="' + hr24 + m + '" class="timePickerTime" onmousedown="selectedTimeToInput(\'' + dispElement.id + '\', \'' + hr + '\', \'' + m + '\', \'' + ampm + '\');">';
			timePicker += hr + ':' + m + ampm;
			timePicker += '</div>' + '\n';
			//document.getElementById('output').innerHTML += hr + ':' + m + ampm + ' ' + hr24 + m + '<br />';
		}
	}
	timePicker += '</div>' + '\n';
	document.getElementById('timePicker').innerHTML = timePicker;
}
function selectedTimeToInput(id, hour, minute, ampm){
	//alert(id + " " + hour + " " + minute + " " + ampm);
	document.getElementById(id).value = hour + ':' + minute + ampm;
	toggleTimePicker(false, null);
	return true;
}
