//############################################################
//# POSITION & OPACITY
//############################################################

function getoffsetx(obj) {
	if(obj.offsetParent != null) {
		return(obj.offsetLeft + getoffsetx(obj.offsetParent));
	} else {
		return(0);
	}
}

function getoffsety(obj) {
	if(obj.offsetParent != null) {
		return(obj.offsetTop + getoffsety(obj.offsetParent));
	} else {
		return(0);
	}
}

function moveobj(objid,top,left) {
	if (document.getElementById) {
		document.getElementById("" + objid + "").style.position = "absolute";
		document.getElementById("" + objid + "").style.top = top;
		document.getElementById("" + objid + "").style.left = left;
	}
}

function _setopacity(_obj,_opacity) {
	_obj.style.filter = "alpha(opacity:" + _opacity + ")";
	_obj.style.KHTMLOpacity = _opacity/100;
	_obj.style.MozOpacity = _opacity/100;
	_obj.style.opacity = _opacity/100;
}

function _fadein(_objid,_opacity) {
	if (!_opacity && _opacity != 0) { _opacity = 0; }
	if (document.getElementById) {
		_obj = document.getElementById(_objid);
		_obj.style.display = "block";
		if (_opacity <= 100) {
			_setopacity(_obj,_opacity);
			_opacity += 5;
			window.setTimeout("_fadein('" + _objid + "'," + _opacity + ")",8);
		}
	}
}

function _fadeout(_objid,_opacity) {
	if (!_opacity && _opacity != 0) { _opacity = 100; }
	if (document.getElementById) {
		_obj = document.getElementById(_objid);
		if (_opacity >= 0) {
			_setopacity(_obj,_opacity);
			_opacity -= 5;
			window.setTimeout("_fadeout('" + _objid + "'," + _opacity + ")",8);
		} else {
			_obj.style.display = "none";
		}
	}
}

//############################################################
//# DRAG & DROP
//############################################################

var _dragobj;
var _sourceobj;
var _dragobjorigx;
var _dragobjorigy;
var _dragobjclickx;
var _dragobjclicky;

addEventListener(window,"load",init_dd);

function init_dd() {
  var div_dd = document.createElement("div");
  div_dd.setAttribute("id","ghost");
  div_dd.className = "ghost";
 	document.body.appendChild(div_dd);
}

function initdrag(_obj,_e,_desc) {
	var _dragevent = new evntobj(_e);
	document.body.ondrag = function () { return false; };
	document.body.onselectstart = function () { return false; };
	_sourceobj = _obj;
	_dragobj = document.getElementById("ghost");
	_dragobj.innerHTML = _desc;
	_dragobjorigx = getoffsetx(_sourceobj);
	_dragobjorigy = getoffsety(_sourceobj);
	_dragobjclickx = _dragevent.x - _dragobjorigx;
	_dragobjclicky = _dragevent.y - _dragobjorigy;
	_dragobj.style.left = _dragobjorigx + "px";
	_dragobj.style.top = _dragobjorigy + "px";
	_dragobj.style.position = "absolute";
	_dragobj.style.display = "block";
	evntobj.addEventListener(document,"mousemove",begindrag);
	evntobj.addEventListener(document,"mouseup",enddrag);
}

function begindrag(e) {
	var _dragevent = new evntobj(e);
	_dragobj.style.left = (_dragevent.x - _dragobjclickx) + "px";
	_dragobj.style.top = (_dragevent.y - _dragobjclicky) + "px";
	_dragevent.consume();
}
		
function enddrag(e) {
	var _dragevent = new evntobj(e);
	_dragobj.style.display = "none";
	evntobj.removeEventListener(document,"mousemove",begindrag, false);
	evntobj.removeEventListener(document,"mouseup",enddrag, false);
	document.body.ondrag = function () { return true; };
	document.body.onselectstart = function () { return true; };
	document.body.style.cursor = 'auto';
	try {
		finalizedrag(_dragevent);
	} catch (e) {
	}
}