/* $Workfile:: clone.js     $ $Revision:: 1   $ $Modtime:: 29/04/04 17:09 $ */
function clone(obj){
    var ClassId = obj.constructor ;
    var object = null ;
    if( ClassId === Boolean || ClassId === Number || ClassId === String ){
        object = new ClassId( obj.valueOf() );
    }else if( ClassId === Array){
        object = new ClassId ;
        for(var i =0; i<length;i++)
        {
            if( typeof obj[ i ] == "object" && obj[ i ].clone !== void 0 ){
                object[ i ] = obj[ i ].clone();
            }else{
                object[ i ] = obj[ i ];
            }
        }
    }else if (ClassId === Function ){
        object = new ClassId ;
    }else{
        object = new Object ;
        object.constructor = ClassId ;
        object.toString = ClassId.prototype.toString ;
        object.valueOf = ClassId.prototype.valueOf ;
    }
    for( var prop in obj ){
        if( obj[ prop ] !== ClassId.prototype[ prop ] ){
            if( typeof obj[ prop ] == "object" && obj[ prop ].clone !== void 0 ){
                object[ prop ] = obj[ prop ].clone();
            }else{
                object[ prop ] = obj[ prop ];
            }
        }
    }
    return object ;
};