var direction, plusx, plusy, startx, starty, starth, startw, startl, startt, stop, selected, mousex, mousey, dragobj;
var grabx = 0;
var graby = 0;
var orix = 0;
var oriy = 0;
var elex = 0;
var eley = 0;
function grab(context, t)
{ 
  if (stop) { stop=false; return; }
  getMouseXY();
  if (direction) return;
  if (context.id == 'selected') context=document.getElementById(selected);
  document.onmousedown = falsefunc; 
  dragobj = context;
  isright=t;
  grabx = mousex;
  graby = mousey;
  elex = orix = dragobj.offsetLeft;
  if (t) { dragobj.style.right=''; dragobj.style.left=elex + 'px'; }
  eley = oriy = dragobj.offsetTop;
  document.onmousemove = drag;
  document.onmouseup = drop;
  update();
}
function drag(e) 
{
  if (dragobj)
  {
    elex = orix + (mousex-grabx);
    eley = oriy + (mousey-graby);
    dragobj.style.position = "absolute";
    dragobj.style.left = (elex).toString(10) + 'px';
    dragobj.style.top  = (eley).toString(10) + 'px';
  }
  update(e);
  return false; 
}
function resize(obj) {
  drop();
  direction=obj.id;
  getMouseXY(); 
  var t=document.getElementById(selected).style;
  startx=mousex;
  starty=mousey;
  starth=rmpx(t.height);
  startw=rmpx(t.width);
  startt=rmpx(t.top);
  startl=rmpx(t.left);
}
function endResize(obj) {
  direction=null;
  var arr=new Array('n','s','e','w','nw','ne','se','sw');
  for (key in arr) document.getElementById(arr[key]).innerHTML='&nbsp;';
}
function updateResize() {
	var selobj=document.getElementById(selected).style;
	var borobj=document.getElementById('selected').style;
	var dh = (starty - mousey);
	var dw = (startx - mousex);
	var h=rmpx(selobj.height);

	switch (direction) {
		case 'n': 
			if ((starth - (-1 * dh)) < 1) break;
			selobj.top=(startt - dh)+'px'; 
			borobj.top=(startt - dh - 2)+'px';
			selobj.height=(starth - (-1 * dh)) + 'px';
			borobj.height=(starth - (-1 * dh) + (b() * 2) + 4) + 'px';
			break;
		case 's': 
			if ((starth - dh) < 1) break;
			selobj.height=(starth - dh) + 'px';
			borobj.height=(starth - dh + (b() * 2) + 4) + 'px';
			break;
		case 'w': 
			if ((startw - (-1 * dw)) < 1) break;
			selobj.left=(startl - dw)+'px'; 
			borobj.left=(startl - dw - 2)+'px';
			selobj.width=(startw - (-1 * dw)) + 'px';
			borobj.width=(startw - (-1 * dw) + (b() * 2) + 4) + 'px';
			break;
		case 'e': 
			if ((startw -  dw) < 1) break;
			selobj.width=(startw - dw) + 'px';
			borobj.width=(startw - dw + (b() * 2) + 4) + 'px';
			break;
		case 'nw': 
			if ((starth - (-1 * dh)) < 1 || (startw - (-1 * dw)) < 1) break;
			selobj.top=(startt - dh)+'px'; 
			borobj.top=(startt - dh - 2)+'px';
			selobj.left=(startl - dw)+'px'; 
			borobj.left=(startl - dw - 2)+'px';
			selobj.height=(starth - (-1 * dh)) + 'px';
			borobj.height=(starth - (-1 * dh)  + (b() * 2) + 4) + 'px';
			selobj.width=(startw - (-1 * dw)) + 'px';
			borobj.width=(startw - (-1 * dw) + (b() * 2) + 4) + 'px';
			break;
		case 'ne': 
			if ((starth - (-1 * dh)) < 1 || (startw -  dw) < 1) break;
			selobj.top=(startt - dh)+'px'; 
			borobj.top=(startt - dh - 2)+'px';
			selobj.height=(starth - (-1 * dh)) + 'px';
			borobj.height=(starth - (-1 * dh) + (b() * 2) + 4) + 'px';
			selobj.width=(startw - dw) + 'px';
			borobj.width=(startw - dw + (b() * 2) + 4) + 'px';
			break;
		case 'sw': 
			if ((starth - dh) < 1 || (startw - (-1 * dw)) < 1) break;
			selobj.height=(starth - dh) + 'px';
			borobj.height=(starth - dh + (b() * 2) + 4) + 'px';
			selobj.left=(startl - dw)+'px'; 
			borobj.left=(startl - dw - 2)+'px';
			selobj.width=(startw - (-1 * dw)) + 'px';
			borobj.width=(startw - (-1 * dw) + (b() * 2) + 4) + 'px';
			break;
		case 'se': 
			if ((starth - dh) < 1 || (startw -  dw) < 1) break;
			selobj.height=(starth - dh) + 'px';
			borobj.height=(starth - dh + (b() * 2) + 4) + 'px';
			selobj.width=(startw - dw) + 'px';
			borobj.width=(startw - dw + (b() * 2) + 4) + 'px';
			break;

	}
	var arr=new Array('n','s','e','w','nw','ne','se','sw');
	for (key in arr) document.getElementById(arr[key]).innerHTML='&nbsp;';
}


function drop()
{
  if (dragobj)
  {
    dragobj = null;
  }
  update();
  document.onmousemove = update;
  document.onmouseup = null;
  document.onmousedown = null;  
}
function highlight(elm) {
	if (!elm) return; 
	selected=elm.id;
	var r = document.getElementById('selected').style;
	r.left=rmpx(elm.style.left) -2 + 'px';
	r.top=rmpx(elm.style.top) -2 + 'px';
	r.width=rmpx(elm.style.width) - (-4 - (b() * 2)) + 'px';
	r.height=rmpx(elm.style.height) - (-4 - (b() * 2)) +'px';
	r.display='';

}
function update(e)
{
  getMouseXY(e); var t = null;
  if (direction) updateResize();

     t=d('ranks_mo');
     t.style.top=mousey+'px';
     t.style.left=mousex-(-15)+'px';
   
   t=document.getElementById('loading');
   t.style.top=mousey+'px';
   t.style.left=mousex-(-15)+'px';
}
function getMouseXY(e) 
{ 
  if (!e) e = window.event;

  if (e)
  { 
    if (e.pageX || e.pageY)
    {
      mousex = e.pageX;
      mousey = e.pageY;
    }
    else if (e.clientX || e.clientY)
    { 
      mousex = e.clientX + document.documentElement.scrollLeft;
      mousey = e.clientY + document.documentElement.scrollTop;
    }  
  }
}
function rmpx(str) { return str.replace('px', ''); }
function falsefunc() { return false; }
function b() { 
if (navigator.appName == 'Microsoft Internet Explorer') return 0;
var a = (document.getElementById(selected).style.border).split(" "); return rmpx(a[0]); }