var teamPicker = null;
var teamPickerDiv = null;

function TeamPicker()
{
	var self = this;

	this.group_id = null;
	this.updateScript = null;
	this.updateUrl = null;
	this.teamObject = null;
	this.selectedName = null;

	this.init = function(obj, script, url, group_id)
	{
		this.group_id = group_id;
		this.updateScript = script;
		this.updateUrl = url;
		this.teamObject = obj;

		// Calculate Offset
		var x = obj.offsetLeft + obj.offsetWidth;
		var y = obj.offsetTop;

		// 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, obj.innerHTML);
	}

	function createPannel(x, y, value)
	{
		// Create teamPicker DIV if needed
		if (!teamPickerDiv) {
			teamPickerDiv = document.createElement("div");
			teamPickerDiv.id = "teampickerdiv";
			teamPickerDiv.className = "tooltip";
			teamPickerDiv.style.visibility = "hidden";
			teamPickerDiv.style.textAlign = "left";
			document.body.appendChild(teamPickerDiv);
		}

		var div = teamPickerDiv;
		removeChilds(div);

		teamPicker.innerHTML = "...";

		div.style.position = "absolute";
		div.style.left = x + "px";
		div.style.top = y + "px";
		div.style.visibility = "visible";
		div.style.zIndex = 10000;

		var query = "do=load&group_id=" + teamPicker.group_id;
		performQuery("teams_xml.php", query, teamPicker.xmlResponse);
  	}

  	this.hide = function () {
		if (teamPickerDiv != null) {
			teamPickerDiv.style.visibility = "hidden";
		}
	}

  	this.xmlResponse = function(xml)
  	{
		var error = xml.getElementsByTagName('error');
		if (error.length>0) {
			alert(error[0].getAttribute('desc'));
			return;
		}

		var teams = xml.getElementsByTagName('team');
		if (teams.length>0) {
			var div = teamPickerDiv;
			if (div) {
				removeChilds(div);

				var table = addTable(div);
				var row = addRow(table);
				var col = addColumn(row);
				col.style.width = "200px";
				col.innerHTML = "Team hinzufügen";

				col = addColumn(row);
				var img = document.createElement("img");
				img.src = "templates/default/images/close.gif"; img.width = 16; img.height = 16;
				var linkA = document.createElement('a');
				linkA.className = "commandlink";
				linkA.setAttribute("href", "javascript:teamPicker.hide()" );
				linkA.appendChild(img);
				eval("linkA.onmouseup = function () { teamPicker.hide(); return false; };");
				col.appendChild(linkA);

				addImg(div, "templates/default/images/minus_mini.gif", 16, 16);
				var link = document.createElement("a");
				link.team_name = "";
				link.href = "javascript:;";
				link.innerHTML = "- Löschen -";
				link.className = "commandlink";
				link.onclick = function () {
					teamPickerDiv.style.visibility = "hidden";
					teamPicker.selectedName = this.team_name;
					if (teamPicker.updateUrl != null) {
						var query = teamPicker.updateUrl += "&value=NULL";
						performQuery(teamPicker.updateScript, query, teamPicker.xmlTeamSelected);
					}
				}
				div.appendChild(link);
				addBr(div);

				for (var i=0; i<teams.length; i++) {
					addImg(div, "templates/default/images/add_mini.gif", 16, 16);

					link = document.createElement("a");
					link.team_name = teams[i].getAttribute('name');
					link.team_id = teams[i].getAttribute('id');
					link.href = "javascript:;";
					link.innerHTML = teams[i].getAttribute('name');
					link.className = "commandlink";
					link.onclick = function () {
						teamPickerDiv.style.visibility = "hidden";
						teamPicker.selectedName = this.team_name;

						if (teamPicker.updateUrl != null) {
							var query = teamPicker.updateUrl += "&value=" + this.team_id;
							performQuery(teamPicker.updateScript, query, teamPicker.xmlTeamSelected);
						}
					}
					div.appendChild(link);
					addBr(div);
				}
			}
		}
	}

	this.xmlTeamSelected = 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) {
			teamPicker.teamObject.innerHTML = teamPicker.selectedName;
		}
	}
}

function displayTeamPicker(objId, updatescript, updateurl, group_id)
{
	var obj = document.getElementById(objId);

	if (teamPicker == null)
		teamPicker = new TeamPicker();

	teamPicker.init(obj, updatescript, updateurl, group_id);
}
