/*---------------------------------------------------------------------
	JavaScript DOM Time Picker javascript widget

	REQUIREMENTS:
		Works in conjunction with /assets/css/pickers/time.css
	
	USAGE:
		Make sure function InitTimePickerControls() is called in the window.onload event (found in /assets/js/init.js).
		For any input type="text" element for a date, be sure to give it a class="TimePicker".
-----------------------------------------------------------------------*/

aHour = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
aMinute = ["00", "15", "30", "45"];
aAMPM = ["AM", "PM"];

function InitTimePickerControls() {
	if (!document.getElementById) return;
	
	var aInput = document.getElementsByTagName('input');
	for (var i = 0; i < aInput.length; i++) {
		if (aInput[i].className == 'TimePicker') {
			aInput[i].onfocus = function() {
				sTempInputVal =  this.value;
				if (sTempInputVal != "") {
					TimePickerHour = sTempInputVal.substring(0,sTempInputVal.length-6);
					TimePickerMinute = sTempInputVal.substring(sTempInputVal.length-5,sTempInputVal.length-3);
					TimePickerAMPM = sTempInputVal.substring(sTempInputVal.length-2,sTempInputVal.length);
				} else {
					TimePickerHour = "1";
					TimePickerMinute = "00";
					TimePickerAMPM = "AM";
				}
				//alert("sTempInputVal = " + sTempInputVal + ", TimePickerHour = " + TimePickerHour + ", TimePickerMinute = " + TimePickerMinute + ", TimePickerAMPM = " + TimePickerAMPM)
				NewTimePicker(this.getAttribute('id'), TimePickerHour, TimePickerMinute, TimePickerAMPM);
			}
		}
	}
}


function NewTimePicker(callerID, currentHour, currentMinute, currentAMPM) {
	//alert("NewTimePicker: currentHour = " + currentHour + ", currentMinute = " + currentMinute + ", currentAMPM = " + currentAMPM)
				
	if (document.getElementById('TimePickerBlock')) {
		var node = document.getElementById('TimePickerBlock');
		node.parentNode.removeChild(node);
	}
	ShowTimePicker(callerID, currentHour, currentMinute, currentAMPM);
}


function RevertTimePicker(callerID, passbackVal) {

	showSelects();

	var TimePickerBlockNode = document.getElementById('TimePickerBlock');
	TimePickerBlockNode.parentNode.removeChild(TimePickerBlockNode);
	var callerIDnode = document.getElementById(callerID);
	callerIDnode.setAttribute('className', 'TimePicker');
	callerIDnode.setAttribute('class', 'TimePicker');
	callerIDnode.value = passbackVal;
	//	Set all "SelectedLabel" Label classes to "UnSelectedLabel"
	var aLabels = document.getElementsByTagName('label');
	for (var i = 0; i < aLabels.length; i++) {
		x = i;
		aLabels[i].setAttribute('className', 'UnSelectedLabel');
		aLabels[i].setAttribute('class', 'UnSelectedLabel');
	}
}

function SelectTime(callerID) {
	
	var oHour = document.getElementById('ClockHour');
	var oMinute = document.getElementById('ClockMinute');
	var oAMPM = document.getElementById('ClockAMPM');
	var sHour = oHour.options[oHour.selectedIndex].text;
	var sMinute = oMinute.options[oMinute.selectedIndex].text;
	var sAMPM = oAMPM.options[oAMPM.selectedIndex].text;

	sSelectedTime = sHour + ":" + sMinute + " " + sAMPM;
	
	showSelects();
	 
	//alert("SelectTime: replace " + callerID + " with " + passbackVal);
	var TimePickerBlockNode = document.getElementById('TimePickerBlock');
	TimePickerBlockNode.parentNode.removeChild(TimePickerBlockNode);
	
	var callerIDnode = document.getElementById(callerID);
	callerIDnode.value = sSelectedTime;
	callerIDnode.setAttribute('className', 'TimePicker');
	callerIDnode.setAttribute('class', 'TimePicker');
		
	//	Set all "SelectedLabel" Label classes to "UnSelectedLabel"
	var aLabels = document.getElementsByTagName('label');
	for (var i = 0; i < aLabels.length; i++) {
		x = i;
		aLabels[i].setAttribute('className', 'UnSelectedLabel');
		aLabels[i].setAttribute('class', 'UnSelectedLabel');
	}
	//	Set all "SelectedTimePicker" Input classes to "TimePicker"
	var aInput = document.getElementsByTagName('input');
	for (var i = 0; i < aLabels.length; i++) {
		x = i;
		if ( (aInput[i].getAttribute('className') == 'SelectedTimePicker') || (aInput[i].getAttribute('class') == 'SelectedTimePicker')) {
			aInput[i].setAttribute('className', 'TimePicker');
			aInput[i].setAttribute('class', 'TimePicker');
		}
	}
}


function ShowTimePicker(callerID, currentHour, currentMinute, currentAMPM) {

	//alert("ShowTimePicker: currentHour = " + currentHour + ", currentMinute = " + currentMinute + ", currentAMPM = " + currentAMPM)
	
	hideSelects();

	//	Set label of selected input to "SelectedLabel"
	var aLabels = document.getElementsByTagName('label');
	for (var i = 0; i < aLabels.length; i++) {
		x = i;
		if (aLabels[i].getAttribute('for') == callerID) {
			aLabels[i].setAttribute('className', 'SelectedLabel');
			aLabels[i].setAttribute('class', 'SelectedLabel');
		}
	}
	//	Set selected input to "SelectedTimePicker", backup value and set to ""
	var callerIDnode = document.getElementById(callerID);
	
	callerIDnode.setAttribute('className', 'SelectedTimePicker');
	callerIDnode.setAttribute('class', 'SelectedTimePicker');
	sTempInputValSelected = callerIDnode.value;
	callerIDnode.value = "";

	var myBody=document.getElementsByTagName("body").item(0);
	var myClockControl = document.createElement("div");
	myClockControl.setAttribute('id', 'TimePickerBlock');

	MoveToByNode(myClockControl, GetAbsXPosByNode(callerIDnode), GetAbsYPosByNode(callerIDnode) + GetHeightByNode(callerIDnode));
	
	myClockTable = document.createElement("table");
	myClockTableHead = document.createElement("thead");
	myClockTableBody = document.createElement("tbody");
	myClockTableFoot = document.createElement("tfoot");
	myClockTable.appendChild(myClockTableHead);
	myClockTable.appendChild(myClockTableBody);
	myClockTable.appendChild(myClockTableFoot);

	myClockTableRow = document.createElement("tr");

		myClockTableHeader = document.createElement("th");
			myClockTableDataText = document.createTextNode("Hour");
			myClockTableHeader.appendChild(myClockTableDataText);
		myClockTableRow.appendChild(myClockTableHeader);

		myClockTableHeader = document.createElement("th");
			myClockTableDataText = document.createTextNode("Minute");
			myClockTableHeader.appendChild(myClockTableDataText);
		myClockTableRow.appendChild(myClockTableHeader);

		myClockTableHeader = document.createElement("th");
			myClockTableDataText = document.createTextNode("AM/PM");
			myClockTableHeader.appendChild(myClockTableDataText);
		myClockTableRow.appendChild(myClockTableHeader);
		
	myClockTableHead.appendChild(myClockTableRow);
	


		myClockTableRow = document.createElement("tr");
		
			myClockTableData = document.createElement("td");
				myClockPickerSelect = document.createElement("select");
				myClockPickerSelect.setAttribute("id",'ClockHour');
				for (var i = 0; i < aHour.length; i++) {
					myClockPickerSelectOption = document.createElement("option");
						myClockPickerSelectOption.setAttribute("value",aHour[i]);
						myClockPickerSelectOptionText = document.createTextNode(aHour[i]);
						myClockPickerSelectOption.appendChild(myClockPickerSelectOptionText);
						if (aHour[i] == currentHour) {
							myClockPickerSelectOption.setAttribute("selected","selected");
						}
					myClockPickerSelect.appendChild(myClockPickerSelectOption);
				}
				myClockPickerSelect.setAttribute("class","PickerSelect");
				myClockTableData.appendChild(myClockPickerSelect);
			myClockTableRow.appendChild(myClockTableData);
		
			myClockTableData = document.createElement("td");
				myClockPickerSelect = document.createElement("select");
				myClockPickerSelect.setAttribute("id",'ClockMinute');
				for (var i = 0; i < aMinute.length; i++) {
					myClockPickerSelectOption = document.createElement("option");
						myClockPickerSelectOption.setAttribute("value",aMinute[i]);
						myClockPickerSelectOptionText = document.createTextNode(aMinute[i]);
						myClockPickerSelectOption.appendChild(myClockPickerSelectOptionText);
						if (aMinute[i] == currentMinute) {
							myClockPickerSelectOption.setAttribute("selected","selected");
						}
					myClockPickerSelect.appendChild(myClockPickerSelectOption);
				}
				myClockPickerSelect.setAttribute("class","PickerSelect");
				myClockTableData.appendChild(myClockPickerSelect);
			myClockTableRow.appendChild(myClockTableData);
		
			myClockTableData = document.createElement("td");
				myClockPickerSelect = document.createElement("select");
				myClockPickerSelect.setAttribute("id",'ClockAMPM');
				for (var i = 0; i < aAMPM.length; i++) {
					myClockPickerSelectOption = document.createElement("option");
						myClockPickerSelectOption.setAttribute("value",aAMPM[i]);
						myClockPickerSelectOptionText = document.createTextNode(aAMPM[i]);
						myClockPickerSelectOption.appendChild(myClockPickerSelectOptionText);
						if (aAMPM[i] == currentAMPM) {
							myClockPickerSelectOption.setAttribute("selected","selected");
						}
					myClockPickerSelect.appendChild(myClockPickerSelectOption);
				}
				myClockPickerSelect.setAttribute("class","PickerSelect");
				myClockTableData.appendChild(myClockPickerSelect);
			myClockTableRow.appendChild(myClockTableData);

		myClockTableBody.appendChild(myClockTableRow);
		
		
	//		table footer with cancel button
	myClockTableRow = document.createElement("tr");
		myClockTableData = document.createElement("td");
			myClockTableData.setAttribute("colSpan","2");
			myClockTableTimeLink = document.createElement("a");
			myClockTableTimeLink.setAttribute("href","javascript:RevertTimePicker('"+callerID+"','"+sTempInputValSelected+"')");
			myClockTableDataText = document.createTextNode("cancel");
			myClockTableTimeLink.appendChild(myClockTableDataText);
			myClockTableData.appendChild(myClockTableTimeLink);
		myClockTableRow.appendChild(myClockTableData);
		myClockTableData = document.createElement("td");
			myClockTableData.setAttribute("colSpan","1");
			myClockTableTimeLink = document.createElement("a");
			
			myClockTableTimeLink.setAttribute("href","javascript:SelectTime('"+callerID+"')");
			myClockTableDataText = document.createTextNode("Submit");
			myClockTableTimeLink.appendChild(myClockTableDataText);
			myClockTableData.appendChild(myClockTableTimeLink);
		myClockTableRow.appendChild(myClockTableData);
	myClockTableFoot.appendChild(myClockTableRow);

	myClockTable.appendChild(myClockTableBody);
	myClockControl.appendChild(myClockTable);
	myClockTable.setAttribute("cellPadding","3");
	myClockTable.setAttribute("cellSpacing","0");
	sTempSelected = "";

	myClockCancel = document.createElement("a");
	myClockCancel.setAttribute("href","javascript:CloseTimePicker('" + callerID + "','" + sTempInputValSelected + "')");
	myClockCancelText = document.createTextNode("cancel");
	myClockCancel.appendChild(myClockCancelText);
	myBody.appendChild(myClockControl);
}


/*---------------
	Add to window.onload event
---------------*/
addEvent(window, 'load', InitTimePickerControls, false);
