	//IS MOUSE OUT FUNCTIONS
	function ClassIsMouseOut(){
		this.getParent = function(obj,objThis){
			//obj is objDepartedNode
			while(obj){
				if(obj == objThis){
					return obj;
				}		
				obj = obj.parentNode;
			}
			return null
		}
		this.IsChildHovered = function(objThis,objArrivedNode){
			var isChildHovered = false;
			var objParent = this.getParent(objArrivedNode,objThis);
			if(objParent){
				isChildHovered = true;
			}
			return isChildHovered;
		}
		this.isMouseOutObjectArea = function(e,arrAllowedMouseOut){//,obj2,obj3
			//this is to detect if a user mouseout from one object to another object
			//for example, a user will mouseout from MORE to HIDEMELAYER or vice versa
			//in which case all further mouseout functionality will be void.
			var objArrivedNode = (e.relatedTarget)?e.relatedTarget:e.toElement;	
			for(var a = 0; a < arrAllowedMouseOut.length; ++a){		
				if(objArrivedNode == arrAllowedMouseOut[a]){
					return false;
				}else if(this.IsChildHovered(arrAllowedMouseOut[a],objArrivedNode)){
					//a mouseout will trigger even if a user does a mouseover onto a node inside the parent node
					//so this detects if the mouseout was triggered by mouseover onto the parents child nodes.
					//and if it does then all further mouseout functionality will be void.			
					return false
				}
			}				
			return true;
		}
	}
