OSDN Git Service

5d5f0b28889677ef0005afa270268ecf03f0d985
[pettanr/clientJs.git] / 0.6.x / js / core / 00_X.js
1 if( !window['console'] ) console = { log : function(a){\r
2         //alert(a)\r
3 } };\r
4 \r
5 var undefined,\r
6         X = X || new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' );\r
7 \r
8 X.VERSION = '0.6.18';\r
9                 \r
10 X.bootTime = + new Date;\r
11                 \r
12 X.getTime = Date.now ? new Function( 'return Date.now()' ) : new Function( 'return +new Date' );\r
13                 \r
14 X.emptyFunction = new Function;\r
15                 \r
16                 // defer の場合もあるので、document.readyState を見る\r
17 X.inHead = (function( s ){\r
18         if( !s ) return false;\r
19         s = s[ s.length - 1 ];\r
20         // Dom0 || Dom1\r
21         return ( s.parentElement || s.parentNode ).tagName.toLowerCase() === 'head';\r
22 })( document.scripts || document.getElementsByTagName && document.getElementsByTagName( 'script' ) || document.all && document.all.tags( 'script' ) );\r
23 \r
24 X.parse = function( v ){\r
25         var _v, n;\r
26         if( Type.isString( v ) === true ){\r
27                 switch( v ){\r
28                         case ''          : return v;\r
29                         //case '{}'        : return {};\r
30                         //case '[]'        : return [];\r
31                         case 'NaN'       : return NaN;\r
32                         case 'null'      : return null;\r
33                         case 'true'      : return true;\r
34                         case 'false'     : return false;\r
35                         case 'Infinity'  : return Number.POSITIVE_INFINITY;\r
36                         case '-Infinity' : return Number.NEGATIVE_INFINITY;     \r
37                         case 'undefined' : return;\r
38                 };\r
39                 _v = v.split( ' ' ).join( '' );\r
40                 n  = _v - 0;\r
41                 if( '' + n === _v || '' + n === '0' + _v  ) return n;\r
42         };\r
43         return v;\r
44 };\r
45                 \r
46 X.cloneObject = function( src ){\r
47         var ret, k;\r
48         if( typeof src !== 'object' ) return src;\r
49         ret = {};\r
50         for( k in src ){\r
51                 ret[ k ] = src[ k ];\r
52         };\r
53         return ret;\r
54 };\r
55 \r
56 X.copyArray = function( ary ){\r
57         var ret = [], i = ary.length;\r
58         if( !i ) return ret;\r
59         for( ; i; ){\r
60                 ret[ --i ] = ary[ i ];\r
61         };\r
62         return ret;\r
63 };\r
64         \r
65 X.isEmptyObject = function( v ){\r
66         if( v.length !== 0 ) return false;\r
67         for( var p in v ){\r
68                 if( v.hasOwnProperty( p ) ) return false;\r
69         };\r
70         return true;\r
71 };\r
72                 \r
73 X.matchTest = function( array1, array2 ){\r
74         var i = array2.length;\r
75         for( ; i; ){\r
76                 if( array1.indexOf( array2[ --i ] ) === -1 ) return false;\r
77         };\r
78         return true;\r
79 };\r
80 \r
81         \r
82 // bonus: hotfix for IE6 SP1 (bug KB823727)\r
83 document.execCommand && document.execCommand( 'BackgroundImageCache', false, true );\r