//-- http://www.webreference.com/programming/javascript/mk/column2/2.html

var mouseOffset = null;
var iMouseDown  = false;
var lMouseState = false;
var dragObject  = null;
var innerDragObject = null;
var curTarget   = null;
var hovering_id = '';
var mouseIsDown = false;
var mousePos = null;

Number.prototype.NaN0=function(){return isNaN(this)?0:this;}

function getPosition(e){
	var left = 0;
	var top  = 0;
	while (e.offsetParent){
		left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
		top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
		e = e.offsetParent;
	}

	left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
	top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);

	return {x:left, y:top};

}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}else{
		if(ev.clientX || ev.clientY){
			try {
				return {
					x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
					y:ev.clientY + document.body.scrollTop  - document.body.clientTop
				};
			}
			catch(err) { 
				return false ;
			}
		}
	}
}

function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos = getPosition(target);
	//var mousePos  = mouseCoords(ev);
	mousePos  = mouseCoords(ev);

	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function mouseMove(ev){
	
	//var topSlidePanel1Obj = MM_findObj("topSlidePanel1");
	//if(topSlidePanel1Obj){
	//	if(topSlidePanel1Obj.droppedFromTheTop == true){
		
			ev = ev || window.event;
		
			/*
			We are setting target to whatever item the mouse is currently on
		
			Firefox uses event.target here, MSIE uses event.srcElement
			*/
			var target = ev.target || ev.srcElement;
		
			hovering_id = target.id;
			
			if(target.id != 'show_notes_slidedown' || iMouseDown == true){
				
				//var mousePos = mouseCoords(ev);
				mousePos = mouseCoords(ev);
				
				if(dragObject){
					//dragObject.style.position = 'absolute';
					//dragObject.style.position = 'fixed';
					dragObject.style.top      = mousePos.y - mouseOffset.y + 'px';
					dragObject.style.left     = mousePos.x - mouseOffset.x + 'px';
				}
			
				// track the current mouse state so we can compare against it next time
				lMouseState = iMouseDown;
			
				// this prevents items on the page from being highlighted while dragging
				if(curTarget || dragObject) return false;
			}
		//}
	//}
}

function mouseUp(ev){
		
	if(dragObject){
		if(innerDragObject){
			innerDragObject.style.filter="alpha(opacity=100)";
		}
		//dragObject.style.position="fixed";
	}

//alert(dragObject.style.left);
	
	//-- Set the cookie with the drop_box positions so that it can be repositioned
	//-- in the same place when the screen is refreshed or a new window opened.
	//-- This info is used by notes.js
	var tpleftObj = MM_findObj('tpleft');
	var tpleftObj = MM_findObj('tptop');
	if(dragObject){
		var tpleft = parseInt(dragObject.style.left,10);
		var tptop = parseInt(dragObject.style.top,10);
		
		set_cookie(current_file_name()+'tpleft', tpleft);
		set_cookie(current_file_name()+'tptop', tptop);
	}

	dragObject = null;
	iMouseDown = false;
}

function mouseDown(ev){
		
	if(hovering_id != 'show_notes_slidedown'){
		
		ev = ev || window.event;
		var target = ev.target || ev.srcElement;
		
		iMouseDown = true;
		if(target.onmousedown){
			return false;
		}
	}

}

function makeDraggable(obj){
	
//alert('function makeDraggable');

	if(!obj) return;
		
	obj.onmousedown = function(ev){
		
		var topSlidePanel1Obj = MM_findObj("topSlidePanel1");
		if(topSlidePanel1Obj){
			if(topSlidePanel1Obj.droppedFromTheTop == true){
	
				if(hovering_id != 'show_notes_slidedown'){
					dragObject  = this;
					mouseOffset = getMouseOffset(this, ev);
			
					innerDragObject = document.getElementById('sliding_notes_table')
					innerDragObject.style.filter="alpha(opacity=50)";
			
					return false;
				}
			}
		}
	}
}

document.onmousemove = mouseMove;
document.onmousedown = mouseDown;
document.onmouseup   = mouseUp;

//window.onload = function(){
	//makeDraggable(document.getElementById('topSlidePanel1'));	
//}

