//globale variabele die gevuld wordt met de x en y coördinaat van de muiscursor
var posX = 0;
var posY = 0;

//globale variabele die bijhouden en gevuld worden met offset op het moment dat het object dat verplaatst moet worden aangeklikt wordt
var offX = 0;
var offY = 0;

//standaard marge voor objecten die verplaatst moeten worden
var marX = 0;
var marY = 0;

//globale variabele die bijhoudt welk element verplaatst moet worden
var dragObject = "";

//globale variabele die bijhoudt in welk element het item geplaatst wordt
var contObject = "";

//globale variabele die het object waarboven men een document gaat loslaten laat oplichten
var findObject = "";

//een array met alle plekken waar een document kan landen
var dropObject = [];

var dropObjectX = [];
var dropObjectXX = [];
var dropObjectY = [];
var dropObjectYY = [];

//een array met het type van een plek waar een document kan landen
var typeObject = [];

function addDropObject(id,type)
{
	
	i = dropObject.length;
	dropObject[i] = id;

	i = typeObject.length;
	typeObject[i] = type;
	
}

function addDropDimensions()
{
	for (i=0;i<dropObject.length;i++)
	{
		dropObjectX[i] = getPosition(dropObject[i]).x;
		dropObjectXX[i] = getDimensions(dropObject[i]).x;
	
		dropObjectY[i] = getPosition(dropObject[i]).y;
		dropObjectYY[i] = getDimensions(dropObject[i]).y;
	}
}

function delDropObject(id)
{
	for (i=0;i<dropObject.length;i++)
	{
		if (dropObject[i] == id)
		{
			dropObject.splice(i,1);
			typeObject.splice(i,1);
			dropObjectX.splice(i,1);
			dropObjectXX.splice(i,1);
			dropObjectY.splice(i,1);
			dropObjectYY.splice(i,1);
		}
	}
}

function getMousePosition(e) 
{

	if (!e) var e = window.event;
	
	if (e.pageX || e.pageY)
	{
		posX = e.pageX;
		posY = e.pageY;
	}
	else if (e.clientX || e.clientY) 	
	{
		posX = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posY = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	
	//geef de muispositie continu door aan de functie die het element moet gaan verplaatsen
	moveObject(posX,posY);
	
	findContObject();
	
	//om te testen
	//document.getElementById("test_location").innerHTML = posX + " x " + posY;
	//om te testen
	
}

function getPosition(id)
{   
	
	if (id)
	{
		var element = document.getElementById(id);
	}
	else
	{
		var element = document.getElementById(dragObject);
	}
	
	var top = 0;
	var left = 0;
    
	while(element)
	{
		left += element.offsetLeft;
		top += element.offsetTop;
		element = element.offsetParent;
    }
	
	if (id)
	{
		l = left;
		t = top;
	}
	else
	{
		l = posX-left;
		t = posY-top;
	}
	
	return {x:l, y:t};  

}

function getDimensions(id)
{   
	
	if (id)
	{
		var element = document.getElementById(id);
	
		var width = 0;
		var height = 0;

		width = element.offsetWidth;
		height = element.offsetHeight;
	    
	}
	
	return {x:width, y:height};
	
} 

if (document.addEventListener)
{
	document.addEventListener('mousemove',getMousePosition,false);
	document.addEventListener('mouseup',delMoveObject,false);
}

if (document.attachEvent)
{
	document.attachEvent('onmousemove',getMousePosition);
	document.attachEvent('onmouseup',delMoveObject);
}


function changeImg(id,dir)
{
	
	var img = document.images["img"+id];
	
	if (img.src.indexOf('ico_min.png') != -1)
	{
		
		img.src = 'images/ico_plus.png';
	}
	else
	{
		
		img.src = 'images/ico_min.png';
	}
	
}

function setMoveObject(id)
{

	document.onmousedown = function() 
	{
		return false;
	}
   
	document.onselectstart = function() 
	{
		return false;
	}
	
	if (id)
	{
		delDropObject(id);
		//het element dat verplaats moet worden wordt opgeslagen in de variabele
		dragObject = id;
		contObject = null;
		//start offset van het element dat verplaatst moet worden instellen
		offX = getPosition().x;
		offY = getPosition().y;
	}
	
	//om te testen
	//document.getElementById("test_selected").innerHTML = dragObject;
	//om te testen
	
	//om te testen
	//document.getElementById("test_amounted").innerHTML = dropObject.length;
	//om te testen
	
}

function findContObject()
{
	if (dragObject)
	{

		for(i=0;i<dropObject.length;i++)
		{
			
			sX = dropObjectX[i];
			sY = dropObjectY[i];
			
			xDim = dropObjectXX[i];
			yDim = dropObjectYY[i];
			
			/*
			sX = getPosition(dropObject[i]).x;
			sY = getPosition(dropObject[i]).y;
			
			xDim = getDimensions(dropObject[i]).x;
			yDim = getDimensions(dropObject[i]).y;
			*/
			
			eX = sX+xDim;
			eY = sY+yDim;
			
			if ((posX > sX && posX < eX) && (posY > sY && posY < eY))
			{
				var object = document.getElementById(dropObject[i]);
				object.style.borderColor='#000000';
			}
			else
			{
				var object = document.getElementById(dropObject[i]);
				object.style.borderColor='#e8e8e8';
			}

		}
	}
}

function delMoveObject()
{
	//window.alert(dragObject);
	if (dragObject)
	{
		for(i=0;i<dropObject.length;i++)
		{
			sX = getPosition(dropObject[i]).x;
			sY = getPosition(dropObject[i]).y;
			
			xDim = getDimensions(dropObject[i]).x;
			yDim = getDimensions(dropObject[i]).y;
			
			eX = sX+xDim;
			eY = sY+yDim;
			
			if ((posX > sX && posX < eX) && (posY > sY && posY < eY))
			{
				contObject = dropObject[i];
			}
			
		}
	
		//als het object wordt losgelaten boven een container dan wordt het daarlosgelaten zo niet dan wordt het element terug geplaats op de oorspronkelijke plaats
		if (!contObject)
		{
			var element = document.getElementById(dragObject);
			element.style.position="relative";
			element.style.left = 0+"px"
			element.style.top = 0+"px"
			addDropObject(dragObject);
		}
		else
		{
			if (dragObject && contObject)
			{
				//hier gaan we de boel opslaan!
				
				changeFat(dragObject,contObject);
				
				//testen
				//document.getElementById("test_resultin").innerHTML = "document '" +dragObject+ "' sub van '" + contObject + "'";
				//testen
			}
		}
		//om te testen
		//document.getElementById("test_scontain").innerHTML = contObject;
		//om te testen
		
	}
	
	dragObject = null;
	
}

function changeFat(fileid,linkid)
{

	var object = null;
	
	object = makeXmlObject();
	
	nocache = Math.random();
		
	if (fileid == 1 && linkid == "empty")
	{
		var url="classes/docList_get.php?wat=emptytrash&fileid="+fileid+"&linkid="+linkid+"&nocache="+nocache;
	}
	else
	{
		var url="classes/docList_get.php?wat=fatchange&fileid="+fileid+"&linkid="+linkid+"&nocache="+nocache;
	}
	
	var statusWindow = document.getElementById("statusWindow");
	
	object.open("GET", url , true);
	
	object.onreadystatechange = function() { 
	
		if (object.readyState==4 || object.readyState=="complete")
		{ 
			
			//statusWindow.style.display = "inline";
			
			//statusWindow.innerHTML = object.responseText+"hoi";

			location.reload(true);
			
		}
		
	}

	object.send(null);
	
}

function moveObject(x,y)
{

	if (dragObject && dragObject != "")
	{
		
		var element = document.getElementById(dragObject);
		
		element.style.position="absolute";
		//element.style.border="0px";
		
		var newX = parseInt(x-offX-marX);
		var newY = parseInt(y-offY-marY);
		
		element.style.left = newX+"px";
		element.style.top = newY+"px";
		
		//om te testen
		//document.getElementById("test_movingit").innerHTML = dragObject+ " on " + newX + " x " + newY;
		//om te testen
		
	}
	else
	{
		//om te testen
		//document.getElementById("test_movingit").innerHTML = "er is geen item geselecteerd";
		//om te testen
	}
}

function setContainer(id)
{
	if (id)
	{
		if (dragObject)
		{
			contObject = id;
			var container = document.getElementById(id);
			container.style.backgroundColor="gray";
		}
	}
}

function makeXmlObject()
{
	XmlHttp = null;
	
	if (!XmlHttp) { 
		try {
		XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
			XmlHttp = false;
			}
		}
	
		if (!XmlHttp && typeof XMLHttpRequest!='undefined') {
			try {
			XmlHttp = new XMLHttpRequest();
			} catch (e) {
				XmlHttp=false;
				}
			}
			if (!XmlHttp && window.createRequest) {
				try {
				XmlHttp = window.createRequest();
				} catch (e) {
				XmlHttp=false;
				}
		}
	}
	
	return XmlHttp;
	
	XmlHttp = null;
	
}

function changeBG(id,src)
{
	bg = document.getElementById(id);
	bg.style.backgroundImage="url('images/"+src+"');";
	
}

function showHide(id)
{
	
	sh = document.getElementById(id);
	
	if (sh.style.display != 'none')
	{
		sh.style.display = 'none';
	}
	else
	{
		sh.style.display = 'block';
	}
	
}

function setCookie(name,value)
{
	document.cookie=name+"="+value;
}

function getCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0)
		{
			return c.substring(nameEQ.length,c.length);
		}
	}
	return null;
}

function getData(wat,waar)
{

	var object = null;
	
	object = makeXmlObject();
	
	nocache = Math.random();
		
	var url="php/php_getinfo.php?wat="+wat+"&amp;nocache="+nocache;
	
	object.open("GET", url , true);
	
	var element = document.getElementById(waar);
	
	object.onreadystatechange = function() { 
	
		if (object.readyState==4 || object.readyState=="complete")
		{ 
			element.innerHTML = object.responseText;
		}
		
		else
		{
			element.innerHTML = '<div class="bezigmetladen"></div>';
		}
		
	}

	object.send(null);

}
