function showfull(item) {
  item.style.display = "none";
  item.nextSibling.style.display = "block";
}

var ttel = null;
var psib = null;
var fldel = null;
var del = null;
var ex = 0;
var ey = 0;
var zIndex = 1;


function updateTT(event) {
    if (ttel != null) {
      var top = mouseY(event);
      var left = mouseX(event); 
  		if ((left != 0) && (top != 0)) {
    	  ttel.style.left = (left + 5) + "px";
    	  ttel.style.top 	= (top + 5) + "px";
      }
	  }
}


function updateD(event) {
    if (del != null) {
      var top = mouseY(event);
      var left = mouseX(event);
      var dx = left - ex; 
      var dy = top - ey;
      ex = left;
      ey = top;
  		if ((left != 0) && (top != 0)) {
  		  oldLeft = parseInt(del.style.left.substr(0, del.style.left.length - 2));
  		  oldTop = parseInt(del.style.top.substr(0, del.style.top.length - 2));
    	  del.style.left = (oldLeft + dx) + "px";
    	  del.style.top = (oldTop + dy) + "px";
      }
	  }
}

function mouseX(evt) {if (!evt) evt = window.event; if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;}
function mouseY(evt) {if (!evt) evt = window.event; if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;}

function showTT(item) {
  item.onmousemove = updateTT;
	ttel = item.nextSibling;
	psib = item;
	item.parentNode.removeChild(ttel);
	document.body.appendChild(ttel);
	ttel.style.display = "block"
	ttel.style.position = "absolute";
}

function showTTNew(event, item, id, cat) {
	if (item.getAttribute("loaded") != "done") {
	  if (item.getAttribute("loaded") == "loading") {
	  	document.body.onmousemove = updateTT;
	  	ttel = item.nextSibling;
	  	psib = item;
	  	item.parentNode.removeChild(ttel);
	  	document.body.appendChild(ttel);
	  	ttel.style.display = "block"
	  	ttel.style.position = "absolute";
	    return;
	  }
	  item.setAttribute("loaded", "loading");
    var w = document.createElement("div");
    w.style.display = "block";
    w.style.position = "absolute";
    w.style.left = (mouseX(event) + 5) + "px";
    w.style.top = (mouseY(event) + 5) + "px";
	  var i = document.createElement("img");
	  i.src = "/wcf/icon/loading.gif";
	  w.appendChild(i);	  
	  if (item.nextSibling)	item.parentNode.insertBefore(w, item.nextSibling); else item.parentNode.appendChild(w);
		item.onmousemove = updateTT;
		ttel = item.nextSibling;
		psib = item;
		item.parentNode.removeChild(ttel);
		document.body.appendChild(ttel);
		ttel.style.display = "block"
		ttel.style.position = "absolute";
	  var client = new XMLHttpRequest();
	  client.onreadystatechange = function() {
	    if(client.readyState != 4) return;
	    window.setTimeout(function() {
    		item.setAttribute("loaded", "done");
    		response = client.responseText;
    		w.innerHTML = response;
    		item.setAttribute("loaded", "done");
    		item.onclick = stickTT;
			item.setAttribute("title", "Ein Post-It durch Mausklick erzeugen");
    		item.style.cursor = "pointer";
	    }, 10);
	  };
	  
      client.open("GET", "/wbb/index.php?page=tooltip&itemId=" + id + "&cat=" + cat);
      client.send(null);	  
	} else {
  	item.onclick = stickTT;
  	document.body.onmousemove = updateTT;
  	ttel = item.nextSibling;
  	psib = item;
  	item.parentNode.removeChild(ttel);
  	document.body.appendChild(ttel);
  	ttel.style.display = "block"
  	ttel.style.position = "absolute";
	}
}


function stickTT(event) {
  var clone = document.createElement("div");
  clone.className = ttel.className;
  clone.innerHTML = ttel.innerHTML;
  clone.style.display = "none";
  clone.style.position = "absolute";
  document.body.appendChild(clone);
  var tmp = ttel;
  ttel = clone;
  hideTT();
  tmp.style.display = "block";
  var top = mouseY(event);
  var left = mouseX(event);
  if ((left != 0) && (top != 0)) {
	  tmp.style.left = (left - 5) + "px";
	  tmp.style.top 	= (top - 5) + "px";
  }
  var bar = document.createElement("div");
  bar.style.backgroundImage = "url(/wcf/icon/bar.png)";
  // var label = findLabel(tmp);
  var close = document.createElement("img");
  close.src = "/wcf/icon/close.png";
  close.style.border = "none";
  close.style.verticalAlign = "middle";
  close.style.marginRight = "5px";
  close.onclick = function() {
    this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);
  };
  close.style.cursor = "pointer";
  bar.style.textAlign = "left";
  bar.style.padding = "0px";
  bar.style.paddingLeft = "5px";
  bar.onselectstart = function() { return false; };  
  bar.appendChild(close);
  // bar.appendChild(document.createTextNode(label +  "asf asdf asdf asdf adsf"));
  bar.appendChild(document.createTextNode("Sticky Tooltip"));
  bar.style.overflow = "hidden";
  bar.style.color = "yellow";
  bar.style.fontWeight = "bold";
  bar.style.fontSize = "12px";
  bar.style.lineHeight = "20px";
  bar.style.margin = "0px";
  tmp.insertBefore(bar, tmp.firstChild);
  bar.style.cursor = "move";
  bar.style.height = "20px";
  bar.style.width = "300px";
  bar.style.verticalAlign = "middle";
  tmp.style.paddingRight = "5px";
  tmp.style.paddingBottom = "5px";
  tmp.style.backgroundImage = "url(/wcf/icon/shadow.png)";
  tmp.style.backgroundRepeat = "no-repeat";
  tmp.style.backgroundPosition = "10px 25px";
  bar.onmousedown = startD;
  document.body.onmouseup = endD;
  tmp.onmouseout = hideBar;
  tmp.onmouseover = showBar;
  del = null;
}

function hideBar() {
  this.firstChild.style.visibility = "hidden";
}

function showBar() {
  this.firstChild.style.visibility = "visible";
  this.style.zIndex = ++zIndex;
}

function findLabel(item) {
  return findFirstChild(
    findFirstChild(
      findFirstChild(
          findFirstChild(item)
      )
    )
  ).nextSibling.innerHTML;
}

function findNextSibling(item) {
  while (!item.tagName) item = item.nextSibling;
  return item;
}

function findFirstChild(item) {
  item = item.firstChild;
  while (!item.tagName) item = item.nextSibling;
  return item;
}


function endD(evt) {
  if (del != null) {
    document.body.onmousemove = null;
    del = null;
  }
}

function startD(evt) {  
  if (del != null) {
    del = null;
  } else {
    ex = mouseX(evt);
    ey = mouseY(evt);
    del = this.parentNode;
    del.parentNode.style.zIndex = ++zIndex;
    document.body.onmousemove = updateD;
  }
}


function hideTT() {
    if (ttel == null) return;
	ttel.style.display = "none";
	document.body.removeChild(ttel);
	var p = psib.parentNode;
	if (psib.nextSibling) {
	  p.insertBefore(ttel, psib.nextSibling);
  } else {
    p.appendChild(ttel);
  }
  psib.onmousemove = null;
  psib = null;
  ttel = null;
}

function hideFld() {
  fldel.style.display = "block";
  fldel.nextSibling.style.display = "none";
}

function showFld(item) {
  item.style.display = "none";
  var img = item.nextSibling.firstChild.firstChild.firstChild.firstChild;
  img.onclick = hideFld;
  img.style.cursor = "pointer";
  fldel = item;
  item.nextSibling.style.display = "block";
}
