function uiLayerClass(){

	var c1=jml.obj
	var c2=jml.xml.node
	var c3=jml.events;
	
	var ifrm;
	var layer;
	var host;
	var anchor;
	
	function createL( id , cssClassName , removeTemporary ){
	
		var removeTemporary = removeTemporary || false;
		if(isset(layer)) deleteL();
		
		var content = getObj( id );
		if(!isset( content )) return;
		
		var cssClassName = cssClassName || 'layerClass';
		var tempLayer = c2.create( 'DIV' , document.body );
		if( !isset( tempLayer ) ) return;
		
		c1.set( tempLayer , 'className' , cssClassName );
		c1.set( tempLayer , 'cursor' , 'default' );
		c1.set( tempLayer , 'visibility' , 'hidden' );
		var x1 = c2.byPosition( 0 , content );
		var o3 = c2.clone( x1 );
		c2.add( o3 , tempLayer );
		
		if( removeTemporary ){
			anchor = content;
			c2.remove( x1 );
		}
		if( isset( host.onCreate ) ) host.onCreate( tempLayer );
		
		c1.set( tempLayer , 'visibility' , 'visible' );
		
		if( !isset(ifrm) && isset( lower( navigator.userAgent ).match('msie 6') ) ){
			ifrm=c2.create( 'DIV' , document.body );
			c1.set( ifrm , 'innerHTML' , '<iframe></iframe>' );
			c1.set( ifrm , 'className' , 'ie6UnderFloatBugForm' );
			c1.set( ifrm , 'width' , (c1.get( tempLayer , 'offsetWidth' ) + 10 ) + 'px' );
			c1.set( ifrm , 'height' , (c1.get( tempLayer , 'offsetHeight' ) + 20 ) + 'px' );
			c1.set( ifrm , 'left' , (c1.get( tempLayer , 'offsetLeft' ) - 8 ) + 'px' );
			c1.set( ifrm , 'top' , (c1.get( tempLayer , 'offsetTop' ) - 13 ) + 'px' );
			c1.set( ifrm , 'visibility' , 'visible' );
		}
		layer = tempLayer ;
	}
	function deleteL(){
		if( isset( anchor ) ){
			var x1 = c2.byPosition( 0 , layer );
			c2.add( x1 , anchor );
			anchor = null;
		}
		c2.remove( layer );
		c2.remove( ifrm );
		layer = ifrm = null;
	}
	return {
		$:function(){
			host=this;
			return this;
		},
		create: createL ,
		remove: deleteL ,
		onCreate: null
	}.$();
}
