var MouseX=0;
var MouseY=0;

function determineMousePosition(e){
	MouseX = (document.all)?
		e.clientX + (document.body.scrollLeft+document.documentElement.scrollLeft):e.clientX + window.pageXOffset;
	MouseY = (document.all)?
		e.clientY + (document.body.scrollTop+document.documentElement.scrollTop):e.clientY + window.pageYOffset;
}

function findLeft_old(objectID){
	var object = document.getElementById(objectID);
	 if (object.offsetLeft) {
		return (object.offsetLeft);
	 }else{
		 return (object.clientTop);
	}
	return (null);
}

function findLeft(objectID){
	var obj = document.getElementById(objectID);
	var posX = obj.offsetLeft;
	while(obj.parentNode){
		posX=posX+obj.parentNode.offsetLeft;
		if(obj==document.getElementsByTagName('body')[0]){
			break;
		}else{
				obj=obj.parentNode;
		}
	}
	return posX;
} 

function getAbsoluteLeft(objectId) {
	// Get an object left position from the upper left viewport corner
	// Tested with relative and nested objects
	o = document.getElementById(objectId)
	oLeft = o.offsetLeft            // Get left position from the parent object
	while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent    // Get parent object reference
		oLeft += oParent.offsetLeft // Add parent left position
		o = oParent
	}
	// Return left postion
	return oLeft
}

function getAbsoluteTop(objectId) {
	// Get an object top position from the upper left viewport corner
	// Tested with relative and nested objects
	o = document.getElementById(objectId)
	oTop = o.offsetTop            // Get top position from the parent object
	while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent  // Get parent object reference
		oTop += oParent.offsetTop // Add parent top position
		o = oParent
	}
	// Return top position
	return oTop
}

function findTop_old(objectID){
	var object = document.getElementById(objectID);
	var dom = findDOM(objectID,0);

	if (dom.offsetTop){
		return (dom.offsetTop);	}	
	if (object.top){
		return (object.top);}
	if (object.pixelTop){
		return (object.pixelTop);}
	return (null);
	/*
	 if (object.offsetTop) {
		return (object.offsetTop);
	}
	return (null);
	*/
}

function findTop(objectID){
	var obj = document.getElementById(objectID);
	var posY = obj.offsetTop;
	while(obj.parentNode){
		posY=posY+obj.parentNode.offsetTop;
		if(obj==document.getElementsByTagName('body')[0]){
			break;
		}else{
				obj=obj.parentNode;
		}
	}
	return posY;
} 

function findBottom(objectID) {
	var object = document.getElementById(objectID);
	return (getAbsoluteTop(objectID) + object.offsetHeight);
	
	
	
	var object = findDOM(objectID,1);
	var dom = findDOM(objectID,0);
	/*
	if (object.offsetTop) {
		return (object.offsetTop + object.offsetHeight);
	}
	return (null);
	*/
	if (dom.offsetTop){
		return (dom.offsetTop + dom.offsetHeight);}	
	if (object.top){
		return (object.top + object.clip.height);}
	if (object.pixelTop){
		return (object.pixelTop + dom.offsetHeight);}
	return (null);
}

function findRight(objectID) {
	var object = document.getElementById(objectID);
	//if (object.offsetLeft) {
		return (getAbsoluteLeft(objectID) + object.offsetWidth);
	//}
	//return (null);
}
	
function findWidth(objectID){
	var object = document.getElementById(objectID);
	 if (object.offsetWidth) {
		return (object.offsetWidth);
	}
	return (null);
}

function ChangeText(item, item1){
    //swap the innerHTML of an object
    var dom = document.getElementById(item);
    dom.innerHTML = item1;
}

function findHeight(objectID){
	var object = document.getElementById(objectID);
	 if (object.offsetHeight) {
		return (object.offsetHeight);
	}
	return (null);
}

function findScrollLeft() {
	var Calc = 0;
	if (window.pageXOffset != null){
		return window.pageXOffset; 
	}
	if (document.body.scrollHeight != null){
		Calc = document.documentElement.scrollLeft + document.body.scrollLeft;
		return Calc;
	}
	return (null);
}

function findScrollTop() {
	var Calc = 0;
	if (window.pageYOffset != null){
		return window.pageYOffset;
	}
	if (document.body.scrollWidth != null){
		Calc = document.documentElement.scrollTop + document.body.scrollTop;
		return Calc;
	}
	return (null);
}

function MoveMenu(val, CornerAdjust){
	var dom = findDOM(val,1)
	var WinWt;
	var WinHt;
	var ScrollX=findScrollLeft();
	var ScrollY=findScrollTop();
	
	dom.top = MouseY+CornerAdjust+"px";
	dom.left = MouseX+CornerAdjust+"px";

	//checks to make sure that the right and bottom segments of the menu are not outside the window boundaries.
	if (window.innerWidth){
	    WinWt = window.innerWidth;
	    WinHt = window.innerHeight;
	}else{
	    //WinWt = document.body.clientWidth;
	    //WinHt = document.body.clientHeight;
		WinWt = document.documentElement.clientWidth;
	    WinHt = document.documentElement.clientHeight;
	}
	if (findBottom(val) >= (WinHt+ScrollY)){
        dom.top = (getAbsoluteTop(val)-(findBottom(val)-(WinHt+ScrollY)))+"px";
    }
    if (findRight(val) >= (WinWt+ScrollX)){
        dom.left = (getAbsoluteLeft(val)-(findRight(val)-(WinWt+ScrollX)))+"px";
    }
    if (getAbsoluteLeft(val) <= (0+ScrollX)) {
        dom.left = ScrollX+"px";
    }
    if (getAbsoluteTop(val)-ScrollY <= 0) {
        dom.top = ScrollY+"px";
    }
}

function ToggleDisplay(ObjectName, ShowHide){
	//show or hide an object
	var dom = findDOM(ObjectName,1);
	if (ShowHide=='show' || ShowHide=='block'){
		dom.display="block";
	}else{
		dom.display="none";
	}
}