﻿// JScript File

var boolDragItems = false;

document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;


var dragObject  = null;
var mouseOffset = null;
var dragObjectStartPos = null;
var dragObjectEndPos = null;

function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
	var left = 0;
	var top  = 0;

	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}

	left += e.offsetLeft;
	top  += e.offsetTop;

	return {x:left, y:top};
}

function mouseMove(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);

	if(dragObject){
		//dragObject.style.position = 'absolute';
		dragObject.style.top      = (mousePos.y - mouseOffset.y) + "px";
		dragObject.style.left     = (mousePos.x - mouseOffset.x) + "px";
		  
		//document.getElementById("theDiv3").innerHTML += mouseOffset.x + " " + mouseOffset.y + " | ";

		return false;
	}
}

function makeDraggable(item){
	if(!item) return;
	item.onmousedown = function(ev){
	  if (boolDragItems) {
		  dragObject  = this;
		  mouseOffset = getMouseOffset(this, ev);
		  dragObjectStartPos = getPosition(this);
		  return false;
		}
	}
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	var a = ev.clientX;
	var b = document != null && document.body != null ? document.body.scrollLeft : 0;
	var c = document != null && document.body != null ? document.body.clientLeft : 0;
	var d = ev.clientY;
	var e = document != null && document.body != null ? document.body.scrollTop : 0;
	var f = document != null && document.body != null ? document.body.clientTop : 0;
	return {
		x:a + b - c,
		y:d + e - f
	};
}



var dropTargets = [];

function addDropTarget(dropTarget){
	dropTargets.push(dropTarget);
}

function mouseUp(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);
	if (dragObject == null) return;
	dragObjectEndPos = getPosition(dragObject);
    
  var a = false;
	for(var i=0; i<dropTargets.length; i++){
		var curTarget  = dropTargets[i];
		var targPos    = getPosition(curTarget);
		var targWidth  = parseInt(curTarget.offsetWidth);
		var targHeight = parseInt(curTarget.offsetHeight);

		if(
			(mousePos.x > targPos.x)                &&
			(mousePos.x < (targPos.x + targWidth))  &&
			(mousePos.y > targPos.y)                &&
			(mousePos.y < (targPos.y + targHeight))){
				// dragObject was dropped onto curTarget!
					//document.getElementById("theDiv3").innerHTML += dragObject.id + " > " + curTarget.id + " | ";
					if (dragObject != curTarget) {
					  //document.getElementById("theDiv3").innerHTML += " squeesing ";
					  removeNode(dragObject);
					  squeeseNode(dragObject, curTarget);
					  document.getElementById("theImg").src = "/admin/editduckpower_menu.aspx?img=" + escape("/img/9x9.gif") + "&a=" + escape(dragObject.id) + "&b=" + escape(curTarget.id);
  					a = true;
					  break;
					}
					
		}
	}
  
  if (dragObjectEndPos.x != dragObjectStartPos.x || dragObjectEndPos.y != dragObjectStartPos.y) {
	
  if (!a) {
		var curTarget  = objLeftNodes;
		var targPos    = getPosition(curTarget);
		var targWidth  = parseInt(curTarget.offsetWidth);
		var targHeight = parseInt(curTarget.offsetHeight);

		if(
			(mousePos.x > targPos.x)                &&
			(mousePos.x < (targPos.x + targWidth))  &&
			(mousePos.y > targPos.y)                &&
			(mousePos.y < (targPos.y + targHeight))) {
				// dragObject was dropped onto curTarget!
					//document.getElementById("theDiv3").innerHTML += dragObject.id + " > " + curTarget.id + " | ";
					if (dragObject != curTarget) {
					  removeNode(dragObject);
					  aryLeftNodes.push(dragObject);
					  document.getElementById("theImg").src = "/admin/editduckpower_menu.aspx?img=" + escape("/img/9x9.gif") + "&appendleft=" + escape(dragObject.id);
  					a = true;
					}
		}
	}
  if (!a) {
		var curTarget  = objRightNodes;
		var targPos    = getPosition(curTarget);
		var targWidth  = parseInt(curTarget.offsetWidth);
		var targHeight = parseInt(curTarget.offsetHeight);

		if(
			(mousePos.x > targPos.x)                &&
			(mousePos.x < (targPos.x + targWidth))  &&
			(mousePos.y > targPos.y)                &&
			(mousePos.y < (targPos.y + targHeight))) {
				// dragObject was dropped onto curTarget!
					//document.getElementById("theDiv3").innerHTML += dragObject.id + " > " + curTarget.id + " | ";
					if (dragObject != curTarget) {
					  removeNode(dragObject);
					  aryRightNodes.push(dragObject);
					  document.getElementById("theImg").src = "/admin/editduckpower_menu.aspx?img=" + escape("/img/9x9.gif") + "&appendright=" + escape(dragObject.id);
  					a = true;
					}
		}
	}
  }
	
	if (a) {
	  //document.getElementById("theDiv3").innerHTML += dragObject.parentNode.id + "<br />\n";
	}

  var lh = 0;
  
  
  for (var i = 0; i < aryLeftNodes.length; i++) {
    var node = aryLeftNodes[i];
    makeDraggable(node);  
    addDropTarget(node);
    node.style.position = "absolute";
    node.style.top = (lh + lp.y) + "px";
    node.style.left = (lp.x + auxOffset) + "px";
    lh += node.offsetHeight;
  }
  objLeftNodes.style.height = lh + "px";
  
  var rh = 0;
  
  for (var i = 0; i < aryRightNodes.length; i++) {
    var node = aryRightNodes[i];
    makeDraggable(node);  
    addDropTarget(node);
    node.style.position = "absolute";
    node.style.top = (rh + rp.y) + "px";
    node.style.left = (rp.x + auxOffset) + "px";
    rh += node.offsetHeight;
  }
  objRightNodes.style.height = rh + "px";
  

	dragObject   = null;
	
}

var tod = null;
var aryLeftNodes = null;
var aryRightNodes = null;

var objLeftNodes;
var lp;

var objRightNodes;
var rp;
var auxOffset = 0;

function init() {
  auxOffset = navigator.userAgent.indexOf("MSIE") == -1 ? 0 : 2;
  aryLeftNodes = [
  ]
  
  aryRightNodes = [
  ]
  
  objLeftNodes = document.getElementById("leftnodes");
  var lh = 0;
  lp = getPosition(objLeftNodes);
  
  for (var i = 0; i < objLeftNodes.childNodes.length; i++) {
    var node = objLeftNodes.childNodes[i];
    if (node.nodeType != 1)
      continue;
    aryLeftNodes.push(node);
    makeDraggable(node);  
    addDropTarget(node);
    node.style.position = "absolute";
    node.style.top = (lh + lp.y) + "px";
    lh += node.offsetHeight;
  }
  objLeftNodes.style.height = lh + "px";
  
  objRightNodes = document.getElementById("rightnodes");
  var rh = 0;
  rp = getPosition(objRightNodes);
  
  for (var i = 0; i < objRightNodes.childNodes.length; i++) {
    var node = objRightNodes.childNodes[i];
    if (node.nodeType != 1)
      continue;
    aryRightNodes.push(node);
    makeDraggable(node);  
    addDropTarget(node);
    node.style.position = "absolute";
    node.style.top = (rh + rp.y) + "px";
    rh += node.offsetHeight;
  }
  objRightNodes.style.height = rh + "px";
  
  tod = document.getElementById("theOtherDiv");
}

function removeNode(node) {
  for (var i = 0; i < aryLeftNodes.length; i++) {
    if (node == aryLeftNodes[i]) {
      for (var iprime = i + 1; iprime < aryLeftNodes.length; iprime++) {
        aryLeftNodes[iprime - 1] = aryLeftNodes[iprime];
      }
      aryLeftNodes.pop();
      return node;
    }
  }

  for (var i = 0; i < aryRightNodes.length; i++) {
    if (node == aryRightNodes[i]) {
      for (var iprime = i + 1; iprime < aryRightNodes.length; iprime++) {
        aryRightNodes[iprime - 1] = aryRightNodes[iprime];
      }
      aryRightNodes.pop();
      return node;
    }
  }
}


function squeeseNode(nodeToSqueese, node) {
  for (var i = 0; i < aryLeftNodes.length; i++) {
    if (node == aryLeftNodes[i]) {
      for (var iprime = aryLeftNodes.length - 1; iprime > i - 1; iprime--) {
        aryLeftNodes[iprime + 1] = aryLeftNodes[iprime];
      }
      aryLeftNodes[i] = nodeToSqueese
      return node;
    }
  }

  var ggg = 0;
  for (var i = 0; i < aryRightNodes.length; i++) {
    if (node == aryRightNodes[i]) {
      for (var iprime = aryRightNodes.length - 1; iprime > i - 1; iprime--) {
        aryRightNodes[iprime + 1] = aryRightNodes[iprime];
      }
      aryRightNodes[i] = nodeToSqueese
      return node;
    }
  }
}

function deleteNode(strNode) {
  var node = document.getElementById(strNode);
  if (!window.confirm("Er du sikker på at du vil slette '" + node.firstChild.firstChild.nextSibling.firstChild.nextSibling.nodeValue + "'")) {
    return;
  }
  document.getElementById("theImg").src = "/admin/deletedockpowerpage.aspx?node=" + escape(strNode) + "&img=" + escape("/img/9x9.gif");
  node.parentNode.removeChild(node);
  removeNode(node);
  init();
  return;
}