var bHasLocalAccess = true;
var dragObject  = null;
var mouseOffset = null;
var iMouseDown  = false; 

// Determine local access
var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();

var is_minor = parseFloat(appVer);
var is_major = parseInt(is_minor);

var iePos  = appVer.indexOf('msie');
if (iePos !=-1) {
   is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)))
   is_major = parseInt(is_minor);
}

var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
			&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
			&& (agt.indexOf('webtv')==-1));
var is_nav4up = (is_nav && (is_major >= 4));

var is_ie   = (iePos!=-1);
var is_ie4up = (is_ie && is_minor >= 4);
var is_ie5up = (is_ie && is_minor >= 5);
var is_ie6up = (is_ie && is_minor >= 6);
bHasLocalAccess = is_ie5up;

function mouseCoords(ev)
{
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

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 mouseDown(ev)
{
	ev = ev || window.event;
}

function mouseMove(ev){
	ev = ev || window.event;
	var mousePos = mouseCoords(ev);

	if(dragObject){
		dragObject.style.position = 'absolute';
		dragObject.style.top      = mousePos.y - mouseOffset.y;
		dragObject.style.left     = mousePos.x - mouseOffset.x;
	
		if (bHasLocalAccess)
		{
			dragObject.style.filter = 'alpha(opacity=50)';
		}
		else
		{
			dragObject.style.opacity = '0.50';
		}

		return false;
	}
}

function mouseUp(ev){
	if (dragObject)
	{
		if (bHasLocalAccess)
		{
			dragObject.style.filter = 'alpha(opacity=98)';
		}
		else
		{
			dragObject.style.opacity = '0.98';
		}
		dragObject = null;
	}
}

function makeClickable(object)
{
	object.onmousedown = function(){
		dragObject = this;
	}
}


function makeDraggable(item)
{	
  try
  {
	if(!item)
	{ 
	   return; 
	}
	item.onmousedown = function(ev)
	{
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);		
		return false;
	}
  }
  catch (e)
  {
  
  }
}


function dontmakeDraggable(item)
{
	item.onmousedown = null;
}

document.onmousemove = mouseMove;
document.onmousedown = mouseDown;
document.onmouseup   = mouseUp;