function wp_Element( mcfg ) {
   
    var self = this; 
    mcfg = mcfg || { element : document.body }; 
    this.element = mcfg.element || document.getElementById(mcfg.id);
   
    if( !this.element ) {
        return null;
    }  
   
    this.top = 0;
    this.left = 0;
    this.height = this.element.offsetHeight;
    this.width = this.element.offsetWidth; 
   
    function getElementPosition() {
    	
        self.top = 0;
        self.left = 0;
    	
    	var element = self.element;
    	
        while( element ) {
	        self.top += element.offsetTop;
	        self.left += element.offsetLeft;
    		
	        element = element.offsetParent;
        }        
    }
    getElementPosition(); 
   
    this.getOffsetTop = function( offset_id ) {
        var top = 0;
    	
    	var element = self.element;
    	
        while( element && element.id != offset_id ) {
	        top += element.offsetTop;
	        
	        element = element.offsetParent;
        }  
        
        return top;      
    }  
   
    this.bottom = this.top + this.height;
    this.right = this.left + this.width;
   
    this.getClasses = function() {
        if( self.element.className ) {
            return self.element.className.split(" ");
        } else {
            return new Array();
        }
    }    
   
    this.setClass = function( classname ) {
        self.element.className = classname.trim();
    }  
   
    this.addClass = function( classname ) {
        var current_classes = (self.element.className || "").split(" ");
        if( current_classes.intersection(classname).length == 0 ) {
            current_classes.push_back(classname);
        }
        self.element.className = current_classes.join(" ");
    }
   
    this.removeClass = function( classname ) {
        var current_classes = (self.element.className || "").split(" ");
        var index = current_classes.find( classname );
        if( index != -1 ) {
            current_classes = current_classes.remove( index );
        }
        self.element.className = current_classes.join(" ");
    }
   
    this.hasClass = function( classname ) {
        var current_classes = (self.element.className || "").split(" ");
        var index = current_classes.find( classname );
        return (index==-1)?false:true;
    }  
   
    this.setContent = function( value ) {
        self.element.innerHTML = value;
    }
   
    this.setWidth = function( value ) {
        self.element.style.width = value + "px";
    }  
   
    this.setHeight = function( value ) {
        self.element.style.height = value + "px";
    }  
   
    this.isChildOf = function( id ) {
        
        var result = false; 
        var element = self.element;
    	
        while( element = element.offsetParent ) {
	        if( element.id == id ) {
	            result = true;
	        }
        }  
        
        return result;
    }  
}