var bMovableMapUsingNN6 = document.getElementById&&!document.all;

var bMovableMapShouldDrag=false;
var nMovableMapImgInitialPositionX,nMovableMapImgInitialPositionY;
var nMovableMapMouseInitialPositionX,nMovableMapMouseInitialPositionY;
var oMovableMapImg;
var nMovableMapIntervalID;
var nMovableMapFrameWidth, nMovableMapFrameHeight;

function startMoveMap(id,dx,dy) {
	nMovableMapIntervalID = window.setInterval("moveMap('"+id+"',"+dx+","+dy+")",75);
}
function endMoveMap() {
	if (nMovableMapIntervalID) {
		window.clearInterval(nMovableMapIntervalID);
		nMovableMapIntervalID = null;
	}
}

function moveMap(id,dx,dy) {
	var img = document.getElementById(id);
	if (img) {
		var nX = (parseInt(img.style.left+0) + dx);
		var nY = (parseInt(img.style.top+0) + dy);
		if (nX > 0) { nX = 0; endMoveMap(); }
		if (nY > 0) { nY = 0; endMoveMap();}
		if (nX < -1*(parseInt(img.style.width) - nMovableMapFrameWidth)) { nX = -1*(parseInt(img.style.width) - nMovableMapFrameWidth); endMoveMap(); }
		if (nY < -1*(parseInt(img.style.height) - nMovableMapFrameHeight)) { nY = -1*(parseInt(img.style.height) - nMovableMapFrameHeight); endMoveMap(); }
		
		img.style.left = nX + "px";
		img.style.top =  nY + "px";
	}
}
	
function moveMapWithMouse(e) {
	if (bMovableMapShouldDrag) {
		var nX = bMovableMapUsingNN6 ? nMovableMapImgInitialPositionX + e.clientX - nMovableMapMouseInitialPositionX : nMovableMapImgInitialPositionX + event.clientX - nMovableMapMouseInitialPositionX;
		var nY = bMovableMapUsingNN6 ? nMovableMapImgInitialPositionY + e.clientY - nMovableMapMouseInitialPositionY : nMovableMapImgInitialPositionY + event.clientY - nMovableMapMouseInitialPositionY;
		if (nX > 0) { nX = 0; }
		if (nY > 0) { nY = 0; }
		if (nX < -1*(parseInt(oMovableMapImg.style.width) - nMovableMapFrameWidth)) { nX = -1*(parseInt(oMovableMapImg.style.width) - nMovableMapFrameWidth); }
		if (nY < -1*(parseInt(oMovableMapImg.style.height) - nMovableMapFrameHeight)) { nY = -1*(parseInt(oMovableMapImg.style.height) - nMovableMapFrameHeight); }
		oMovableMapImg.style.left = nX + "px";
		oMovableMapImg.style.top  = nY + "px";
		return false;
	}
}

function startMoveMapWithMouse(e) {
	var fobj       = bMovableMapUsingNN6 ? e.target : event.srcElement;
	var topelement = bMovableMapUsingNN6 ? "HTML" : "BODY";
	
	while (fobj.tagName != topelement && fobj.className != "draggable") {
		fobj = bMovableMapUsingNN6 ? fobj.parentNode : fobj.parentElement;
		
		if (!fobj) { break; }
	}
	
	if (fobj && fobj.className=="draggable") {
		
		bMovableMapShouldDrag = true;
		oMovableMapImg = fobj;
		
		nMovableMapImgInitialPositionX = parseInt(oMovableMapImg.style.left+0);
		nMovableMapImgInitialPositionY = parseInt(oMovableMapImg.style.top+0);
		
		nMovableMapMouseInitialPositionX = bMovableMapUsingNN6 ? e.clientX : event.clientX;
		nMovableMapMouseInitialPositionY = bMovableMapUsingNN6 ? e.clientY : event.clientY;
		
		document.onmousemove=moveMapWithMouse;
		return false;
	}
}

document.onmousedown=startMoveMapWithMouse;
document.onmouseup=new Function("bMovableMapShouldDrag=false");
