} };\r
\r
var undefined,\r
- X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' );\r
+ X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' ),\r
+ X_TEMP = {};\r
\r
X.VERSION = '0.6.50';\r
\r
X.bootTime = + new Date;\r
\r
-X.getTime = Date.now ? new Function( 'return Date.now()' ) : new Function( 'return +new Date' );\r
- \r
+X.getTime = Date.now ? Date.now : new Function( 'return +new Date' );\r
+\r
+\r
X.emptyFunction = new Function;\r
\r
// defer の場合もあるので、document.readyState を見る MacIE で false\r
return ret;\r
};\r
\r
+X.deepCopy = function( src ){\r
+ function clone( src, objSrc, objCopy, n ) {\r
+ var ret, i, key;\r
+ if( !src ){ // 0, "", null, undefined, NaN, false\r
+ return src;\r
+ } else\r
+ if( X.Type.isArray( src ) ){\r
+ i = objSrc.indexOf( src );\r
+ if( i !== -1 ) return objCopy[ i ];\r
+ objSrc[ ++n ] = src;\r
+ objCopy[ n ] = ret = [];\r
+ } else\r
+ if( X.Type.isObject( src ) ){\r
+ i = objSrc.indexOf( src );\r
+ if( i !== -1 ) return objCopy[ i ];\r
+ objSrc[ ++n ] = src;\r
+ objCopy[ n ] = ret = {};\r
+ } else {\r
+ // string, number, true\r
+ return src;\r
+ };\r
+ for( key in src ){\r
+ ret[ key ] = clone( src[ key ], objSrc, objCopy, n );\r
+ };\r
+ return ret;\r
+ }; \r
+ return clone( src, [], [], -1 );\r
+};\r
+\r
+\r
+\r
+\r
X.copyArray = function( ary ){\r
var ret = [], i = ary.length;\r
if( !i ) return ret;\r