var timePicker = null;
var timePickerDiv = null;

function TimePicker()
{
	var self = this;

	this.updateScript = null;
	this.updateUrl = null;
	this.timeObject = null;
	this.hourselect = null;
	this.minuteselect = null;

	this.init = function(obj, script, url)
	{
		this.updateScript = script;
		this.updateUrl = url;
		this.timeObject = obj;

		var datetime = new Date();
		var hour = datetime.getHours();
		var minute = datetime.getMinutes();

		var timearray = parseTime(this.timeObject.innerHTML);
		if (timearray != null) {
			hour = timearray["h"];
			minute = timearray["m"];
		}

		// Calculate Offset
		var x = obj.offsetLeft;
		var y = obj.offsetTop + obj.offsetHeight ;

		// deal with elements inside tables and such
		var parent = obj;
		while (parent.offsetParent) {
			parent = parent.offsetParent;
			x += parent.offsetLeft;
			y += parent.offsetTop ;
		}

		createPannel(x,y,hour,minute);
	}

	function parseTime(text)
	{
		var doublepoint = text.indexOf(":");
		if (doublepoint==-1)
			return null;
		else {
			var hour = text.substring(0, doublepoint);
			var minute = text.substr(doublepoint+1, 2);

			return { "h":hour,"m":minute };
		}
	}

	function createPannel(x, y, hour, minute)
	{
		// Create timePicker DIV if needed
		if (!timePickerDiv) {
			timePickerDiv = document.createElement("div");
			timePickerDiv.id = "timepickerdiv";
			timePickerDiv.className = "tooltip";
			timePickerDiv.style.visibility = "hidden";
			timePickerDiv.style.textAlign = "left";
			timePickerDiv.style.padding = "5px";

			document.body.appendChild(timePickerDiv);
		}

		var div = timePickerDiv;

		removeChilds(div);

		self.hourselect = document.createElement("select");
		self.hourselect.className = "timeselect";
		self.minuteselect = document.createElement("select");
		self.minuteselect.className = "timeselect";

		self.hourselect.name = "stunde";
		for (h=8; h<22; h++)
		{
			var opt = document.createElement("option");
			opt.value = h;
			if (h==hour)
				opt.selected = "selected";
			addText(opt, h);
			self.hourselect.appendChild(opt);
		}

		for (m=0; m<60; m+=30)
		{
			var opt = document.createElement("option");
			opt.value = m;
			if (minute >= m && minute < m+30)
				opt.selected = "selected";
			addText(opt, m);
			self.minuteselect.appendChild(opt);
		}

		div.appendChild(self.hourselect);
		div.appendChild(self.minuteselect);

		addBr(div);

		var save = document.createElement("button");
		save.className = "dpTodayButton";
		save.onclick = function () {

			var timestring = timePicker.hourselect.value + ":" + timePicker.minuteselect.value;

			timePickerDiv.style.visibility = "hidden";
			timePicker.timeObject.innerHTML = "..."; //timestring;

			if (timePicker.updateUrl != null) {
				var query = timePicker.updateUrl += "&time=" + timestring;
				performQuery(timePicker.updateScript, query, timePicker.xmlResponse);
			}
		}

		addText(save, "Speichern");

		div.appendChild(save);

		div.style.position = "absolute";
		div.style.left = x + "px";
		div.style.top = y + "px";
		div.style.visibility = "visible";
		div.style.zIndex = 10000;
  	}

  	this.xmlResponse = function(xml)
  	{
		var error = xml.getElementsByTagName('error');
		if (error.length>0) {
			alert(error[0].getAttribute('desc'));
			return;
		}

		var times = xml.getElementsByTagName('time');
		if (times.length>0) {
			timePicker.timeObject.innerHTML = times[0].getAttribute('value');
		}
	}
}

function displayTimePicker(objId, updatescript, updateurl)
{
	var obj = document.getElementById(objId);

	if (timePicker == null)
		timePicker = new TimePicker();

	timePicker.init(obj, updatescript, updateurl);
}

