var numberPicker = null;
var numberPickerDiv = null;

function NumberPicker()
{
	var self = this;

	this.updateScript = null;
	this.updateUrl = null;
	this.numberObject = null;

	this.init = function(obj, script, url, free)
	{
		this.updateScript = script;
		this.updateUrl = url;
		this.numberObject = obj;

		// 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, this.numberObject.innerHTML, free);
	}

	function createPannel(x, y, value, free)
	{
		// Create numberPicker DIV if needed
		if (!numberPickerDiv) {
			numberPickerDiv = document.createElement("div");
			numberPickerDiv.id = "numberpickerdiv";
			numberPickerDiv.className = "tooltip";
			numberPickerDiv.style.visibility = "hidden";
			numberPickerDiv.style.textAlign = "left";
			numberPickerDiv.style.padding = "5px";

			document.body.appendChild(numberPickerDiv);
		}

		var div = numberPickerDiv;

		removeChilds(div);

		if (free==true) {

			self.numberinput = document.createElement("input");
			self.numberinput.style.width = "40px";
			self.numberinput.value = value;

		} else {
			self.numberinput = document.createElement("select");
			self.numberinput.className = "timeselect";
			for (r=0; r<=6; r++)
			{
				var opt = document.createElement("option");
				opt.value = r;
				if (r==value)
					opt.selected = "selected";
				addText(opt, r);
				self.numberinput.appendChild(opt);
			}
		}
		div.appendChild(self.numberinput);

		var save = document.createElement("button");
		save.className = "dpTodayButton";
		save.onclick = function () {
			numberPickerDiv.style.visibility = "hidden";

			if (numberPicker.updateUrl != null) {
				var query = numberPicker.updateUrl += "&value=" + numberPicker.numberinput.value;
				performQuery(numberPicker.updateScript, query, numberPicker.xmlResponse);
			}
		}

		addText(save, "Ok");

		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;

		numberPicker.numberinput.focus();
		if (free==true)
			numberPicker.numberinput.select();
  	}

  	this.xmlResponse = function(xml)
  	{
		var error = xml.getElementsByTagName('error');
		if (error.length>0) {
			alert(error[0].getAttribute('desc'));
			return;
		}

		var result = xml.getElementsByTagName('result');
		if (result.length>0) {
			numberPicker.numberObject.innerHTML = result[0].getAttribute('value');
		}
	}
}

function displayNumberPicker(objId, updatescript, updateurl, free)
{
	var obj = document.getElementById(objId);

	if (numberPicker == null)
		numberPicker = new NumberPicker();

	numberPicker.init(obj, updatescript, updateurl, free);
}

