//// ------------------------------------------------------------------
////   ENVISION SYSTEMS DHTML LIBRARY Written by William Jamieson
//// ------------------------------------------------------------------
//***************************************************************
// REQUIRES dhtmlMicroAPIv1.00.js
//***************************************************************

// Change Object Parameters
function changeObjectClass(objectID, newClassName){
	returnDOMObject(objectID).className = newClassName;
}

function changeObjectStyle(objectID, newStyleSpecifications){
	returnDOMObject(objectID).style = newStyleSpecifications;
}

function changeObjectContents(objectID, newContents){
	returnDOMObject(objectID).innerHTML = newContents;
}

function changeObjectBackgroundColor(objectID, newBackgroundColor){
	returnDOMObjectStyle(objectID).backgroundColor=newBackgroundColor;
}

// Visibility
function toggleObjectDisplay(objectID){
	// onClick="toggleObjectDisplay('SubMenu1');"
    if (DOMID || DOMAll){
        myDOMStyle = returnDOMObjectStyle(objectID);
        if(myDOMStyle.display == 'block'){
        	myDOMStyle.display = 'none';
        }else{
        	myDOMStyle.display = 'block';
        }
	}
    return;
 }	

function setObjectVisibility (objectID, newVisibilityState){
	// Options for newVisibilityState:
	// 1. 'hidden'
	// 2. 'visible'
    returnDOMObjectStyle(objectID).visibility = newVisibilityState;
}

function toggleObjectVisibility(objectID) {
    var myDOMStyle = returnDOMObjectStyle(objectID);
    currentVisibilityState = myDOMStyle.visibility;
	if(currentVisibilityState == 'hidden' || currentVisibilityState == 'hide'){
		myDOMStyle.visibility = 'visible';
	}else{
		if(currentVisibilityState == 'visible' || currentVisibilityState=='show'){
			myDOMStyle.visibility = 'hidden'; 
		}else{
			myDOMStyle.visibility = 'visible';
		}
	}
}

// 2D Positioning (Horizontal/Vertical Positioning)
function setObjectPosition (objectID, newX, newY){
	// Moves an object to an absolute position
	// onClick="setObjectPosition('myobject',250, 250);"
    var myDOMStyle = returnDOMObjectStyle(objectID);
    myDOMStyle.left = newX;
    myDOMStyle.top = newY;
}

function moveObject (objectID, offsetX, offsetY){
	// Moves an object to a position that is relative to its current position
	// onClick="MoveObject ('myobject',50, -50);"
    var myDOM = returnDOMObject(objectID);
    var myDOMStyle = returnDOMObjectStyle(objectID);
    if (myDOMStyle.pixelLeft) {
        myDOMStyle.pixelLeft += offsetX;
        myDOMStyle.pixelTop += offsetY;
	}else{
        if (myDOM.offsetLeft != null) {
			var currentLeft = myDOM.offsetLeft;
            var currentTop = myDOM.offsetTop;
            myDOMStyle.left = currentLeft + offsetX;
            myDOMStyle.top = currentTop + offsetY;
		}else{
			myDOM.moveBy(offsetX,offsetY);
		}
	}
}

//3D Positioning (Z Positioning)
var lastObjectID = null;
var lastObjectZIndex = 0;

function setZIndexOfObject(objectID, newLayer){
    var myDOMStyle = returnDOMObjectStyle(objectID);
    myDOMStyle.zIndex = newLayer;
  }

function getZIndexOfObject(objectID){
    var myDOMStyle = returnDOMObjectStyle(objectID);
    if (myDOMStyle.zIndex != null){
		return myDOMStyle.zIndex;
	}
    return (null);
  }

function bringObjectToFront(objectID){
	// onClick="bringObjectToFront('myobject1');"
    if (lastObjectID != null){
		setZIndexOfObject(lastObjectID, lastObjectZIndex);
     }
    lastObjectID = objectID;
    lastObjectZIndex = getZIndexOfObject(objectID);
    setZIndexOfObject(objectID,999);
  }


// Object Scrolling
function scrollPageTo(scrollPageToX, scrollPageToY){
	// Scrolls to an absolute position
	if (browserIsIE){
		document.body.scrollLeft = scrollPageToX;
		document.body.scrollTop = scrollPageToY;
		return;
	}else{
		scrollTo(scrollPageToX, scrollPageToY);
		return;
	}
}

function scrollPageBy(scrollPageByX, scrollPageByY){
	// Scrolls to a position that is relative to its current position
	var currentXPosition = getHorizontalScrollPosition();
	var currentYPosition = getVerticalScrollPosition();
	var newXPosition = currentXPosition + scrollPageByX;
	var newYPosition = currentYPosition + scrollPageByY;
	if (browserIsIE){
		document.body.scrollLeft = newXPosition;
		document.body.scrollTop = newYPosition;
		return;
	}else{
		scrollTo(newXPosition, newYPosition);
		return;
	}
}

function getHorizontalScrollPosition(){
    if (document.body.scrollLeft!=null)
		return document.body.scrollLeft;
    if (window.pageXOffset!=null)
		return window.pageXOffset;
    return null;
  }
function getVerticalScrollPosition(){
    if (document.body.scrollTop!=null){
		return document.body.scrollTop;
    }
    if (window.pageYOffset!=null){
		return window.pageYOffset;
	}
    return null;
  }

function currentScrollPosition(){
	var currentXPosition = getHorizontalScrollPosition();
	var currentYPosition = getVerticalScrollPosition();
	var currentScrollPosition = new Array(currentXPosition,currentYPosition);
	return currentScrollPosition;
}

// Adjusting the stylesheet
function addCSSRule(styleSheetObjectID,newSelectorName,newSelectorDefinition){
	// onClick="addCSSRule('body','background-color : #FF9999;');"
	if (browserIsIE){
		var theStyleSheet = eval('document.styleSheets.' + styleSheetObjectID);
		theStyleSheet.addRule(newSelectorName,newSelectorDefinition);
	}        
}

function changeClassDefinition(objectID,nameOfStyle,newStyleDefinition){
	// onClick="changeClassDefinition('myobject1','fontSize','24px');"
    var myDOMStyle = returnDOMObjectStyle(objectID);
    myDOMStyle [nameOfStyle] = newStyleDefinition;
  }


// Get Object Dimensions
function getObjectWidth(objectID){
    var myDOM = returnDOMObject(objectID);
    if (myDOM.offsetWidth) return myDOM.offsetWidth;
    if (myDOM.clip.width) return myDOM.clip.width;
    return (null);
}
function getObjectHeight(objectID){
    var myDOM = returnDOMObject(objectID);
    if (myDOM.offsetHeight) return myDOM.offsetHeight;
    if (myDOM.clip.height) return myDOM.clip.height;
    return (null);
}
function getObjectLeft(objectID){
    var myDOMStyle = returnDOMObjectStyle(objectID);
    var myDOM = returnDOMObject(objectID);
    if (myDOMStyle.left) return myDOMStyle.left;
    if (myDOMStyle.pixelLeft) return myDOMStyle.pixelLeft;
    if (myDOM.offsetLeft) return myDOM.offsetLeft;
    return (null);
}
function getObjectTop(objectID){
    var myDOMStyle = returnDOMObjectStyle(objectID);
    var myDOM = returnDOMObject(objectID);
    if (myDOMStyle.top) return myDOMStyle.top;
    if (myDOMStyle.pixelTop) return myDOMStyle.pixelTop;
    if (myDOM.offsetTop) return myDOM.offsetTop;
    return (null);
}

function showDimensions(objectID){
    var currentWidth = getObjectWidth(objectID);
    var currentHeight = getObjectHeight(objectID);
    var currentLeft = getObjectLeft(objectID);
    var currentTop = getObjectTop(objectID);
    alert('Width = ' + currentWidth + 
    	  '\nHeight = ' + currentHeight + 
		  '\nLeft = ' + currentLeft + 
		  '\nTop = ' + currentTop
	);
}