/******************************************************************************
(Simple) Functions and variables related to mouse movement and dragging - can use yui for more complex
*******************************************************************************/

document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;

var mouseOffset = null;
var mousePos    = null;

//just used for very generic drag/drops, should use yui if greater functionality needed
var dragObject  = null;

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 makeDraggable(item, root, ev){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = root;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}

function mouseCoords(ev){
	ev           = ev || window.event;
	//Firefox - mozilla
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}

	//IE
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

function mouseMove(ev){
	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;
	var mousePos = mouseCoords(ev);

	if(dragObject){
	    dragObject.style.top      = (mousePos.y - mouseOffset.y - 10) + "px";
	    dragObject.style.left     = (mousePos.x - mouseOffset.x) + "px";
	    return false;
	}
}


function mouseUp(){
  if(dragObject){
   // setCookie(dragObject.id,dragObject.style.top + ":" + dragObject.style.left,30,'/','','')
  }
  dragObject = null;

}

/*********************end mouse related stuff***********************************/


function togglePopup(item, event, popup_id){

	var mouseOffset = getMouseOffset(item, event);
	var mousePos = mouseCoords(event);

	document.getElementById(popup_id).style.position = 'absolute';
	document.getElementById(popup_id).style.top = mousePos.y - mouseOffset.y + "px";
	document.getElementById(popup_id).style.left = mousePos.x + "px";	

	
	if(document.getElementById(popup_id).style.display == 'block'){
		document.getElementById(popup_id).style.display = 'none';
	}

	else{
		document.getElementById(popup_id).style.display = 'block';
	}
	
	
	if(window.innerWidth){
		
		var window_width = window.innerWidth;
		var element_left = mousePos.x;	

		if((document.getElementById(popup_id).offsetWidth + element_left) >= window_width){
			element_left = element_left - document.getElementById(popup_id).offsetWidth;
		}
	}
	else if(document.body.clientWidth){
		var window_width = document.body.clientWidth;
		var element_left = mousePos.x;	
		if((document.getElementById(popup_id).offsetWidth + element_left) >= window_width){
			element_left = element_left - document.getElementById(popup_id).offsetWidth;
		}	
	}
	

	document.getElementById(popup_id).style.position = 'absolute';
	document.getElementById(popup_id).style.top = mousePos.y - mouseOffset.y + "px";
	document.getElementById(popup_id).style.left = element_left + "px";
	
	
}
