2 if( !window['console'] || ( window.parent && window.parent.log ) ) console = { log : function(a){
\r
6 elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );
\r
7 elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );
\r
12 X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' ),
\r
15 X.VERSION = '0.6.89';
\r
17 X.bootTime = + new Date;
\r
19 X.getTime = Date.now ? Date.now : new Function( 'return +new Date' );
\r
22 X.emptyFunction = new Function;
\r
24 // defer の場合もあるので、document.readyState を見る MacIE で false
\r
25 X.inHead = (function( s ){
\r
26 if( !s ) return false;
\r
27 if( !s.length ) return false; // Safari1.3 312.8 でerror
\r
28 s = s[ s.length - 1 ];
\r
30 s = s.parentElement || s.parentNode || s;// s is for opera7.11
\r
31 return s.tagName.toLowerCase() === 'head';// opera7.23 s.tagName is 'HTML'
\r
32 })( document.scripts || document.getElementsByTagName && document.getElementsByTagName( 'script' ) || document.all && document.all.tags( 'script' ) );
\r
34 X.parse = function( v ){
\r
36 if( Type.isString( v ) === true ){
\r
39 //case '{}' : return {};
\r
40 //case '[]' : return [];
\r
41 case 'NaN' : return NaN;
\r
42 case 'null' : return null;
\r
43 case 'true' : return true;
\r
44 case 'false' : return false;
\r
45 case 'Infinity' : return 1/0;//Number.POSITIVE_INFINITY;
\r
46 case '-Infinity' : return -1/0;//Number.NEGATIVE_INFINITY;
\r
49 case 'undefined' : return;
\r
51 _v = v.split( ' ' ).join( '' );
\r
53 if( '' + n === _v || '' + n === '0' + _v ) return n;
\r
58 X.cloneObject = function( src ){
\r
60 if( typeof src !== 'object' ) return src;
\r
63 ret[ k ] = src[ k ];
\r
68 X.deepCopy = function( src ){
\r
69 function clone( src, objSrc, objCopy, n ) {
\r
71 if( !src ){ // 0, "", null, undefined, NaN, false
\r
74 if( X.Type.isArray( src ) ){
\r
75 i = objSrc.indexOf( src );
\r
76 if( i !== -1 ) return objCopy[ i ];
\r
77 objSrc[ ++n ] = src;
\r
78 objCopy[ n ] = ret = [];
\r
80 if( X.Type.isObject( src ) ){
\r
81 i = objSrc.indexOf( src );
\r
82 if( i !== -1 ) return objCopy[ i ];
\r
83 objSrc[ ++n ] = src;
\r
84 objCopy[ n ] = ret = {};
\r
86 // string, number, true
\r
90 ret[ key ] = clone( src[ key ], objSrc, objCopy, n );
\r
94 return clone( src, [], [], -1 );
\r
100 X.copyArray = function( ary ){
\r
101 var ret = [], i = ary.length;
\r
102 if( !i ) return ret;
\r
104 ret[ --i ] = ary[ i ];
\r
109 X.isEmptyObject = function( v ){
\r
111 // if( v.length ) return false;
\r
113 if( v.hasOwnProperty( p ) ) return false;
\r
118 X.matchTest = function( array1, array2 ){
\r
119 var i = array2.length;
\r
121 if( array1.indexOf( array2[ --i ] ) === -1 ) return false;
\r