//Draggable object - Requires oBrowser.js
function oDhtml() {}

oDhtml.getPosition=function(obj) {
	var position=new Object();
	position.x=position.y=0;
	if (obj.offsetParent) {
		position.x = obj.offsetLeft
		position.y = obj.offsetTop
		while (obj = obj.offsetParent) {
			position.x += obj.offsetLeft
			position.y += obj.offsetTop}}
	return position;}

oDhtml.getCursor=function(event) {
	var position=new Object();
	if (browser.isIE) {
	    position.x=window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
	    position.y=window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;}
  	else {
		position.x=event.clientX + window.scrollX;
		position.y=event.clientY + window.scrollY;}
	return position;}

//Sets the position based on another object and some offsets
oDhtml.setPosition=function(obj, otherObj ,offsetX, offsetY, inView) {
	var position=oDhtml.getPosition(otherObj);
	var x=position.x + (offsetX?offsetX:0),y=position.y + (offsetY?offsetY:0);	
	if (inView) {
		viewableDimensions=oDhtml.getViewableDimensions();	
		if (x + obj.offsetWidth > viewableDimensions.x) x=viewableDimensions.x-obj.offsetWidth-5;
		if (y + obj.offsetHeight > viewableDimensions.y) y=viewableDimensions.y-obj.offsetHeight-5;}
	obj.style.left=x>0?x:0;
	obj.style.top=y>0?y:0;}
	
//Returns true if node a contains node b. If including is true, return true if a==b
oDhtml.contains=function(a, b, including) {
  if (b==null) return false;
  if (including && a==b) return true;
  while (b.parentNode)
    if ((b=b.parentNode)==a)
      return true;
  return false;}

oDhtml.getDimensions=function(object) {
	dimensions=new Object();
	dimensions.left=oDhtml.getDimension('left',object);
	dimensions.top=oDhtml.getDimension('top',object);
	dimensions.width=oDhtml.getDimension('width',object);
	dimensions.height=oDhtml.getDimension('height',object);
	return dimensions;}

oDhtml.getDimension=function(measurement,object) {
	return parseInt(object.style[measurement].replace('px',''));}

oDhtml.setInView=function(div) {
	vd=oDhtml.getViewableDimensions();
	var x=parseInt(div.style.left.replace(/px/,'')),y=parseInt(div.style.top.replace(/px/,''));
	//divAlert((x + div.offsetWidth) + '>' + vd.x + '-' + div.offsetWidth);
	if (x + div.offsetWidth > vd.x) x=vd.x-div.offsetWidth-5;
	if ((y-document.body.scrollTop) + div.offsetHeight > vd.y) y=(vd.y+document.body.scrollTop)-div.offsetHeight-5;
	div.style.left=x>0?x:0;
	div.style.top=y>0?y:0;}

oDhtml.getViewableDimensions=function() {
	return {'x':browser.isIE?document.body.clientWidth:window.innerWidth,
			'y':browser.isIE?document.body.clientHeight:window.innerHeight};}

//Set whether a particular item is displayed or not. If true or false is not passed in that it is toggled from it's current value
oDhtml.setDisplay=function(id,displayed) {
	if (displayed==undefined) displayed=get(id).style.display=='none';
	get(id).style.display=displayed?'':'none';}
