// Is netscape?
N = (document.all) ? 0 : 1;
var ob;
var over = false;
var the_id;

// MouseDown
function MD(e)
{
	if (over)
	{
		if(the_id)
		{
		ob = document.getElementById(the_id);
		}
		if (N)
		{
			X=e.layerX;
			Y=e.layerY;
			return false;
		}
		else
		{
		ob = ob.style;
		X=event.offsetX;
		Y=event.offsetY;
		}
	}
}

//MouseMove
function MM(e)
{

	if (ob)
	{
		if (N)
		{
			ob.style.top = e.pageY-Y+"px";
			ob.style.left = e.pageX-X+"px";
		}
		else
		{
		ob.pixelLeft = event.clientX-X + document.body.scrollLeft;
		ob.pixelTop = event.clientY-Y + document.body.scrollTop;
		window.status = ob.pixelTop;
		return false;
	    }
   }

}

//MouseUp
function MU()
{
ob = null;
}

	if (N)
	{
	document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
	}

function set_the_id(id)
{
	the_id = id;
}

// Sorteer functie, gebruikt met sort()
function compareNum(a,b)
{
return a-b
}

function getElementsByClassName(_clsName)
{
	var els = document.getElementsByTagName('*');
	var matches = new Array();

	for(var i = 0; i < els.length; i++)
	{
		if(els.item(i).className == _clsName) matches.push(els.item(i));
	}
return matches;
}

// Globaal beschikbaar houden
Order_v = new Array();
idArray = new Array();


function GetOrder()
{
	Order_v = getElementsByClassName("DragIt");
	// Verkrijg all "DragIt" items (dus manipuleerbaar)
	// de Array bevat de hoogte positie (findPosY()) en de id.
	for(x=0;x<Order_v.length;x++)
	{
		idArray[x] = findPosY(Order_v[x].id) +"-" + Order_v[x].id;
	}

	// Sorteer idArray pixelhoogte
	idArray = CompareAr(idArray);
	SetMen();
}

function CompareAr(arrayx)
{
// sorteert de Array, en haalt de Ids terug op
// returned een array met de gesorteerde items op "hoogte" (bovenste item = 0, volgende  = 1, etc)
var Hoogte = new Array;

	// Filtreer de pixelhoogtes uit de array.
	for(x=0;x<arrayx.length;x++)
	{
	Hoogte[x] = arrayx[x].substr(0,arrayx[x].indexOf("px-"));
	}

	// Sorteer volgens "hoogte". 
	Hoogte.sort(compareNum);

	// Nu dat Hoogte gesorteerd is kunnen we de pixelhoogtes
	// vergelijken met de originele arrayx, als we een match hebben
	// kunnen we de pixelhoogtes in Hoogte[] vervangen (niet meer nodig) met de ID
	for(x=0;x<Hoogte.length;x++)
	{

		// Voor ieder element in de originele arrayx
		i = 0;
		while(i<arrayx.length)
		{
			// Als de hoogte in arrayx overeenstemt met het huidige item
			// in Hoogte
			if(arrayx[i].substr(0,arrayx[i].indexOf("px-")) == Hoogte[x])
			{
			// Vervang de pixelhoogte entry in Hoogte met de ID uit arrayx
			Hoogte[x] = arrayx[i].substr(arrayx[i].indexOf("px-")+3,arrayx[i].length);
			i = arrayx.length
			}
		i++;
		}
	}
return Hoogte;
}

// Wat is de huidige positie van het item?
function findPosY(id)
{
var obj, Y_pos,curtop;
obj = document.getElementById(id);

	// In CSS of een andere functie een "top" gedefinieerd?
	if(obj.style.top)
	{
	curtop = obj.style.top;
	}

	// anders verkrijg de positie, en voeg een 50px spatie toe
	else
	{
	curtop = obj.offsetTop +50+"px";
	}
return curtop;
}

// Schikt ieder item in de vernieuwde volgorde.
function SetMen()
{
	if(idArray)
	{
		for(x=0;x<idArray.length;x++)
		{
		document.getElementById(idArray[x]).style.left="150px"
		document.getElementById(idArray[x]).style.top=x*30+"px";
		}
	}
	else
	{
	alert("Array not found");
	}
}

function BewaarVolg()
{
GetOrder();
var check;
var tmpname;
	if(idArray)
	{
		for(x=0;x<idArray.length;x++)
		{
		// alert("\""+idArray[x] +"\" staat nu op "+x);
		// +1 voor database
		document.getElementById("hidden"+idArray[x]).value = x+1;
		}
	document.getElementById("haschanged").value= "yes";
	document.forms[0].submit();
	}
	else
	{
	alert("Array niet gevonden");
	}
}

// Event listeners
document.onmousedown = MD;
document.onmousemove = MM;
document.onmouseup = MU;