//
// Author:	Martijn Polak <martijn.polak@amgate.com>
// Description: Javascript functions for the time control
//

// -- Init -------------------------------------------------------------------------------------------------------------------------------------

var timeObject;
var Interval;
var justStarted;

// -- Timebox functions ------------------------------------------------------------------------------------------------------------------------

// Starts a time change for the time control object
function startTimeChange(objectID, changeMode, addValue) {

	var changeItem;
	var padZeros = false;
	var maxLimit = 0;

	if (changeMode == "h") {
		changeItem = "_HOUR";
		padZeros = true;
		maxLimit = 23;
	} else if (changeMode == "m") {
		changeItem = "_MINUTE";
		padZeros = true;
		maxLimit = 59;
	} else if (changeMode == "s") {
		changeItem = "_SECOND";
		padZeros = true;
		maxLimit = 59;
	}

	var il = document.getElementById(objectID + changeItem);

	if (il) {

		timeObject = il;
		justStarted = true;

		var arrowObject = document.getElementById(timeObject.id + (addValue ? "_UP" : "_DOWN"))
		if (arrowObject) {
			arrowObject.className = "ctrl_tme_" + (addValue ? "up" : "down") + "arrow_pressed";
		}

		timeChange(maxLimit, padZeros, (addValue ? 1 : -1));
	}

}

// Loops as long as the mouse button is down
function timeChange(limit, pad, addvalue) {

	if (timeObject) {

		var objValue = Number(timeObject.innerHTML);

		if (addvalue > 0 && objValue + addvalue > limit) {
			var newValue = String(0);
		} else if (addvalue < 0 && objValue + addvalue < 0) {
			var newValue = String(limit);
		} else {
			var newValue = String(objValue + addvalue);
		}

		if (pad && newValue.length == 1) newValue = "0" + newValue;
		timeObject.innerHTML = newValue;

		if (justStarted) {
			Interval = 300;
			justStarted = false;
		} else {
			Interval = 20;
		}

		setTimeout("timeChange("+limit+", "+pad+","+addvalue+")", Interval);

	}

}

// Stops a time change
function stopTimeChange(objectID, changeMode, addValue) {

	if (timeObject) {

		var arrowObject = document.getElementById(timeObject.id + (addValue ? "_UP" : "_DOWN"))

		if (arrowObject) {
			arrowObject.className = "ctrl_tme_" + (addValue ? "up" : "down") + "arrow";
		}

		updateTimeValue(objectID);
		timeObject = null;
	}

}

// writes the selected time values to a hidden input field
function updateTimeValue(objectID) {

	var hdnField = document.getElementById(objectID);
	if (hdnField) {

		var hourValue = document.getElementById(objectID + "_HOUR");
		var minuteValue = document.getElementById(objectID + "_MINUTE");
		var secondValue = document.getElementById(objectID + "_SECOND");

		hdnField.value = "";
		if (hourValue) hdnField.value += String((hourValue.innerHTML ? hourValue.innerHTML : "00"));
		if (minuteValue) hdnField.value += String((hdnField.value.length > 0 ? ":" : "") + (minuteValue.innerHTML ? minuteValue.innerHTML : "00"));
		if (secondValue) hdnField.value += String((hdnField.value.length > 0 ? ":" : "") + (secondValue.innerHTML ? secondValue.innerHTML : "00"));

	}

}

