var x;
var y;
var x2;
var y2;
var obj;
var obj2;
var oTop;
var oLeft;
var oWidth;
var cTop;
var cLeft;
var cWidth;
var nTop;
var nLeft;
var nWidth;
var down    = false;
var zi      = 0;
var menu    = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);

function Toggle(obj){
	if(obj.style.display	== ''){ obj.style.display = 'none' } else { obj.style.display='' }
}

function Down(e){
	down             = true;
	obj              = e;
	oTop             = obj.offsetTop;
	oLeft            = obj.offsetLeft;
	oWidth           = obj.clientWidth;
	x                = e.style.pixelLeft;
	y                = e.style.pixelTop;
	x2               = event.clientX
	y2               = event.clientY
	obj.style.filter = "alpha(opacity=50, style=0);-moz-opacity: 70%;";
	obj.style.zIndex = ++zi;
}

function Move(){
	if(down){
		obj.style.pixelLeft = x + event.clientX - x2;
		obj.style.pixelTop  = y + event.clientY - y2;
	}
	return false;
}

function popUpProperties(inobj) {
	op = window.open();
	op.document.open('text/plain');
	for (objprop in inobj) {
	op.document.write(objprop + ' => ' + inobj[objprop] + '\n');
	}
	op.document.close();
}

function swap2(a, b){
	var left				= document.getElementById('spot' + a);
	var right			= document.getElementById('spot' + b);

	var tmp				= left.innerHTML;
	left.innerHTML		= right.innerHTML;
	right.innerHTML	= tmp;

	var tmp				= menu[a];
	menu[a]				= menu[b];
	menu[b]				= tmp;
}

function Compress(side){
	var Moved = false;
	if(side=='l'){
		for(var i=menu.length/2; i>1; i--){
			if(document.getElementById('spot' + (i-1)).innerHTML.length>100 && document.getElementById('spot' + (i-2)).innerHTML.length<100){
				swap2(i-1, i-2);
				Moved = true;
			}
		}
	} else if(side=='r'){
		for(var i=menu.length; i>(menu.length/2)+1; i--){
			if(document.getElementById('spot' + (i-1)).innerHTML.length>100 && document.getElementById('spot' + (i-2)).innerHTML.length<100){
				swap2(i-1, i-2);
				Moved = true;
			}
		}
	}
//	alert(Moved);
	if(Moved) Compress(side);
}

function swap(a, b, dir){
	if (dir==''){
		var orig				= document.getElementById('spot' + a).innerHTML;
		for(var i=a-1; i>=b; i--)
			swap2(i, i+1);
		for(var i=a+1; i<=b; i++)
			swap2(i, i-1);
		document.getElementById('spot' + b).innerHtml	= orig;
		Compress('l');
		Compress('r');
	} else if (dir=='l'){
		for(var i=(menu.length/2)-2; i>b; i--)
			swap2(i, i+1);
		swap2(a, b+1);
		Compress('r');
		Compress('l');
	} else if (dir=='r'){
		for(var i=menu.length-1; i>b+1; i--)
			swap2(i, i-1);
		swap2(a, b+1);
		Compress('l');
		Compress('r');
	}
}

function Up(){
	if(!down) return false;
	var s            = -1;
	down             = false;
	obj.style.filter = "";
	var myid         = parseInt(obj.id);
	var dir          = ""
	var myspot;

	cTop             = obj.offsetTop;
	cLeft            = obj.offsetLeft;
	cWidth           = obj.clientWidth;

	for(var i=0; i<menu.length-1; i++){
		if(menu[i] == myid) myspot	= i;
	}

	// Move Down
	for(var i=myspot; i<menu.length-1; i++){
		if(myid != menu[i]){
			sobj	 = document.getElementById(menu[i]);
			nTop   = sobj.offsetTop;
			nLeft  = sobj.offsetLeft;
			nWidth = sobj.clientWidth

			if(oTop < nTop && cTop > nTop && cLeft + cWidth > nLeft && cLeft < nLeft + nWidth && oLeft == nLeft) s	= i;
		}
	}

	// Move Up
	for(var i=myspot; i>=0; i--){
		if(myid != menu[i]){
			sobj	 = document.getElementById(menu[i]);
			nTop   = sobj.offsetTop;
			nLeft  = sobj.offsetLeft;
			nWidth = sobj.clientWidth

			if(oTop > nTop && cTop < nTop && cLeft + cWidth > nLeft && cLeft < nLeft + nWidth && oLeft == nLeft) s	= i;
		}
	}

	// Move Right or Left
	for(var i=0; i<menu.length; i++){
		if(myid != menu[i]){
			sobj	 = document.getElementById(menu[i]);
			nTop   = sobj.offsetTop;
			nLeft  = sobj.offsetLeft;
			nWidth = sobj.clientWidth

			if(cTop > nTop && cLeft + cWidth > nLeft && cLeft < nLeft + nWidth){
				if (oLeft < nLeft && i != menu.length-1){
					s	 = i;
					dir = 'r';
				} else if (oLeft > nLeft && i != menu.length/2-1){
					s   = i;
					dir = 'l';
				}
			}
		}
	}

	obj.style.pixelLeft	= x;
	obj.style.pixelTop	= y;
//	alert(s);
//if (dir != '') alert(dir);
	if (s >= 0) swap(myspot, s, dir);
}

function Up2(){
	if(!down) return false;
	down						= false;
	obj.style.filter		= "";
	obj.style.pixelLeft	= x;
	obj.style.pixelTop	= y;
}

document.onmouseup	= Up;
document.onmousemove	= Move;
