OSDN Git Service

e53d43e0205511257fb06a67d0d7c3ae93c31a76
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 01_X.js
1 \r
2 if( !window['console'] || ( window.parent && window.parent.log ) ) console = { log : function(a){\r
3         var win, elm;\r
4         //alert(a);\r
5         if( window.parent ){\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
8         };\r
9 } };\r
10 \r
11 var undefined,\r
12         X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' ),\r
13         X_TEMP = {};\r
14 \r
15 X.VERSION = '0.6.89';\r
16                 \r
17 X.bootTime = + new Date;\r
18                 \r
19 X.getTime = Date.now ? Date.now : new Function( 'return +new Date' );\r
20 \r
21 \r
22 X.emptyFunction = new Function;\r
23 \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
29         // Dom0 || Dom1\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
33 \r
34 X.parse = function( v ){\r
35         var _v, n;\r
36         if( Type.isString( v ) === true ){\r
37                 switch( v ){\r
38                         case ''          : return v;\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
47                         case 'void(0)' :\r
48                         case 'void 0' :\r
49                         case 'undefined' : return;\r
50                 };\r
51                 _v = v.split( ' ' ).join( '' );\r
52                 n  = _v - 0;\r
53                 if( '' + n === _v || '' + n === '0' + _v  ) return n;\r
54         };\r
55         return v;\r
56 };\r
57                 \r
58 X.cloneObject = function( src ){\r
59         var ret, k;\r
60         if( typeof src !== 'object' ) return src;\r
61         ret = {};\r
62         for( k in src ){\r
63                 ret[ k ] = src[ k ];\r
64         };\r
65         return ret;\r
66 };\r
67 \r
68 X.deepCopy = function( src ){\r
69         function clone( src, objSrc, objCopy, n ) {\r
70                 var ret, i, key;\r
71                 if( !src ){ // 0, "", null, undefined, NaN, false\r
72                         return src;\r
73                 } else\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
79                 } else\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
85                 } else {\r
86                         // string, number, true\r
87                         return src;\r
88                 };\r
89                 for( key in src ){\r
90                         ret[ key ] = clone( src[ key ], objSrc, objCopy, n );\r
91                 };\r
92                 return ret;\r
93         };                              \r
94         return clone( src, [], [], -1 );\r
95 };\r
96 \r
97 \r
98 \r
99 \r
100 X.copyArray = function( ary ){\r
101         var ret = [], i = ary.length;\r
102         if( !i ) return ret;\r
103         for( ; i; ){\r
104                 ret[ --i ] = ary[ i ];\r
105         };\r
106         return ret;\r
107 };\r
108         \r
109 X.isEmptyObject = function( v ){\r
110         var p;\r
111 //      if( v.length ) return false;\r
112         for( p in v ){\r
113                 if( v.hasOwnProperty( p ) ) return false;\r
114         };\r
115         return true;\r
116 };\r
117                 \r
118 X.matchTest = function( array1, array2 ){\r
119         var i = array2.length;\r
120         for( ; i; ){\r
121                 if( array1.indexOf( array2[ --i ] ) === -1 ) return false;\r
122         };\r
123         return true;\r
124 };\r