    //HEADER TABS by Steve Tomlin
    
    function HeaderTabs(strName){
      this.strDefault = null;
      this.objTimer = null;
      //
      //for timer
      this.strInstName = strName;
      
    //SHOW
      this.Show = function(strTab){
        if(this.objTimer){
          clearTimeout(this.objTimer);
        }
      //display this tab
        addCssClass(strTab, 'navigation');
      }      
      
    //MOUSE OUT - REVERT TO DEFAULT
      this.Hide = function(e){
      
      //for timer
        if(this.objTimer){
          clearTimeout(this.objTimer);
        }
        this.e = (e)?e:event;
        this.arrArgs = arguments;
        
        //have to set it here for ie because its Crap, because
        //otherwise e.toElement = "Member not found" in the timer function.
        this.objDepartedNode = (this.e.relatedTarget)?this.e.relatedTarget:this.e.toElement;

        //set timer
        this.objTimer = setTimeout(this.strInstName + '.TimerHide()',1000);     
      }
      this.TimerHide = function(){
        var objThis = this.arrArgs[1];
        if(isMouseOutObjectArea(this.e,this.arrArgs,this.objDepartedNode)){
      //display default
           addCssClass(this.strDefault, 'navigation');
        }
      }
      
    //Click
      this.Click = function(evt,strTab){
        //clearTimeout(this.objTimer);
        this.strDefault = strTab;
        return true;
      } 
      
    //SET DEFAULT
      this.SetDefault = function(strTab){
        this.strDefault = strTab;
        this.Show(strTab);
      }
    }

		function getParent(obj,objThis){
			//obj is objDepartedNode
			while(obj){
				if(obj == objThis){
					return obj;
				}		
				obj = obj.parentNode;
			}
			return null
		}
		function IsChildHovered(e,objThis,objDepartedNode){
		  //			var objDepartedNode = (e.relatedTarget)?e.relatedTarget:e.toElement;
			var isChildHovered = false;
			var objParent = getParent(objDepartedNode,objThis);
			if(objParent){
				isChildHovered = true;
			}
			return isChildHovered;
		}
		function isMouseOutObjectArea(e,arrArgs,objDepartedNode){//,obj2,obj3
			//this is to detect if a user mouseout from one object to another object
			//for example, a user will mouseout from tab00b to list00 or vice versa
			//so therefore we prevent the mouse out from taking place.
			
			//var objDepartedNode = (e.relatedTarget)?e.relatedTarget:e.toElement;
			
			var objThis = arrArgs[1];
			for(var a = 1; a < arrArgs.length; ++a){
				if(objDepartedNode == arrArgs[a]){
					return false;
				}
			}
			//a mouseout will trigger even if the cursor touches any children of the node being moused out.
			//for example: tab00b has a child span. This span normally would trigger a mouse out, which we don't want.
			//this detects if the cursor has touched any of the objects child nodes
			//so therefore we prevent the mouse out from taking place.
			if(IsChildHovered(e,objThis,objDepartedNode)){return false}		
			return true;
		}