function uiFloat( id ){

	var c1 = jml.obj
	var c2 = jml.xml.node
	var c3 = jml.events;
	var c4 = new uiLayerClass();
	
	var float;
	var isOpen = false ;
	var anchorObject;
	var id = id || null ;
	if( !isset( id ) ) return;
	
	c4.onCreate = function( layer ){
		if( !isset( float ) ) float = layer;
		
		var n1 = c1.get( anchorObject , "offsetLeft" );
		var n2 = c1.get( anchorObject , "offsetTop" );
		var n3 = c1.get( anchorObject , "offsetHeight" );
		var n4 = c1.get( anchorObject , "offsetWidth" );
		
		c1.set( layer , 'left', ( n1 - 243 ) + "px" );
		c1.set( layer , 'top', ( n2 + n3 + 6 ) + "px" );
		c1.set( layer , 'width', n4 + "px" );
		
	}
	function force( state ){
		var extension = anchorObject.src.match(/\.\D{3,4}$/);
		var name;
		try{ name = anchorObject.src.match(/[^\/]+.$/)[0].replace( extension , "" ); }catch(e){}
		if( isset( name ) ){
			var url = anchorObject.src.replace( name + extension , "" );
			if( state ){
				if( isset( name.match( '_over' ) ) ) return ;
				name = name + '_over' ;
			}else{
				if( !isset( name.match( '_over' ) ) ) return ;
				name = name.replace( '_over' , '' );
			}
			anchorObject.src = url + name + extension ; 
		}
	}	
	return {
		constructor:function(){
			return this;
		},
		open:function( anchor ){
			anchorObject = anchor || null ;
			if( !isset( anchorObject )) return ;
			if( !isOpen ){
				isset( float )? c1.set( float , "display", "block" ) : c4.create( id , "dropDownFloat" , true );
				isOpen = true ;
				force( true );				
			}else{
				this.close();
			}
		},
		close:function(){
			if( isset( float ) ){
				c1.set( float , "display", "none" );
				force( false );
				isOpen = false ;
			}
		}
	}.constructor();
}