OSDN Git Service

Version 0.6.41, fix for Opera8 & NN7.2+.
[pettanr/clientJs.git] / 0.6.x / js / core / 00_X.js
index 6808394..eba12b0 100644 (file)
@@ -1,69 +1,80 @@
-if( !window['console'] ) console = { log : function(){} };\r
+if( !window['console'] ) console = { log : function(a){\r
+       //alert(a)\r
+} };\r
 \r
 var undefined,\r
-       X = X || {\r
-               \r
-               VERSION : '0.6.13',\r
-               \r
-               bootTime : + new Date,\r
+       X = X || new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' );\r
+\r
+X.VERSION = '0.6.39';\r
                \r
-               getTime : Date.now ? new Function( 'return Date.now()' ) : new Function( 'return +new Date' ),\r
+X.bootTime = + new Date;\r
                \r
-               emptyFunction : new Function,\r
+X.getTime = Date.now ? new Function( 'return Date.now()' ) : new Function( 'return +new Date' );\r
                \r
-               inHead        : (function( s ){\r
-                       s = s[ s.length - 1 ];\r
-                       // Dom0 || Dom1\r
-                       return ( s.parentElement || s.parentNode ).tagName.toLowerCase() === 'head';\r
-               })( document.scripts || document.getElementsByTagName( 'script' ) || document.all.tags( 'script' ) ),\r
+X.emptyFunction = new Function;\r
 \r
-               parse : function( v ){\r
-                       var _v, n;\r
-                       if( Type.isString( v ) === true ){\r
-                               switch( v ){\r
-                                       case ''          : return v;\r
-                                       //case '{}'        : return {};\r
-                                       //case '[]'        : return [];\r
-                                       case 'NaN'       : return NaN;\r
-                                       case 'null'      : return null;\r
-                                       case 'true'      : return true;\r
-                                       case 'false'     : return false;\r
-                                       case 'Infinity'  : return Number.POSITIVE_INFINITY;\r
-                                       case '-Infinity' : return Number.NEGATIVE_INFINITY;     \r
-                                       case 'undefined' : return;\r
-                               };\r
-                               _v = v.split( ' ' ).join( '' );\r
-                               n  = _v - 0;\r
-                               if( '' + n === _v || '' + n === '0' + _v  ) return n;\r
-                       };\r
-                       return v;\r
-               },\r
-               \r
-               skipCleanupTagNames : 'pre,textarea,code,kbd,samp,xmp,plaintext,listing'.split( ',' ),\r
-               \r
-               cleanupWhiteSpace : function( text ){\r
-                       var _ = ' ', __ = '  ';\r
-                       text.indexOf( '\r\n' ) !== -1 && ( text = text.split( '\r\n' ).join( _ ) );\r
-                       text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( _ ) );\r
-                       text.indexOf( '\t' )   !== -1 && ( text = text.split( '\t' ).join( _ ) );\r
-                       text.indexOf( '\r' )   !== -1 && ( text = text.split( '\r' ).join( _ ) );\r
-                       text.indexOf( '\n' )   !== -1 && ( text = text.split( '\n' ).join( _ ) );\r
-                       text.indexOf( '\f' )   !== -1 && ( text = text.split( '\f' ).join( _ ) );\r
-                       text.indexOf( '\b' )   !== -1 && ( text = text.split( '\b' ).join( _ ) );\r
-                       while( text.indexOf( __ ) !== -1 ){\r
-                               text = text.split( __ ).join( _ );\r
-                       };\r
-                       return text;\r
-               },\r
+               // defer の場合もあるので、document.readyState を見る\r
+X.inHead = (function( s ){\r
+       if( !s ) return false;\r
+       if( !s.length ) return false; // Safari1.3 312.8 でerror\r
+       s = s[ s.length - 1 ];\r
+       // Dom0 || Dom1\r
+       return ( s.parentElement || s.parentNode ).tagName.toLowerCase() === 'head';\r
+})( document.scripts || document.getElementsByTagName && document.getElementsByTagName( 'script' ) || document.all && document.all.tags( 'script' ) );\r
+\r
+X.parse = function( v ){\r
+       var _v, n;\r
+       if( Type.isString( v ) === true ){\r
+               switch( v ){\r
+                       case ''          : return v;\r
+                       //case '{}'        : return {};\r
+                       //case '[]'        : return [];\r
+                       case 'NaN'       : return NaN;\r
+                       case 'null'      : return null;\r
+                       case 'true'      : return true;\r
+                       case 'false'     : return false;\r
+                       case 'Infinity'  : return Number.POSITIVE_INFINITY;\r
+                       case '-Infinity' : return Number.NEGATIVE_INFINITY;     \r
+                       case 'undefined' : return;\r
+               };\r
+               _v = v.split( ' ' ).join( '' );\r
+               n  = _v - 0;\r
+               if( '' + n === _v || '' + n === '0' + _v  ) return n;\r
+       };\r
+       return v;\r
+};\r
                \r
-               isEmptyObject : function( v ){\r
-                       if( v.length !== 0 ) return false;\r
-                       for( var p in v ){\r
-                               if( v.hasOwnProperty( p ) ) return false;\r
-                       };\r
-                       return true;\r
-               }\r
+X.cloneObject = function( src ){\r
+       var ret, k;\r
+       if( typeof src !== 'object' ) return src;\r
+       ret = {};\r
+       for( k in src ){\r
+               ret[ k ] = src[ k ];\r
+       };\r
+       return ret;\r
+};\r
+\r
+X.copyArray = function( ary ){\r
+       var ret = [], i = ary.length;\r
+       if( !i ) return ret;\r
+       for( ; i; ){\r
+               ret[ --i ] = ary[ i ];\r
        };\r
+       return ret;\r
+};\r
        \r
-// bonus: hotfix for IE6 SP1 (bug KB823727)\r
-document.execCommand && document.execCommand( 'BackgroundImageCache', false, true );\r
+X.isEmptyObject = function( v ){\r
+       if( v.length !== 0 ) return false;\r
+       for( var p in v ){\r
+               if( v.hasOwnProperty( p ) ) return false;\r
+       };\r
+       return true;\r
+};\r
+               \r
+X.matchTest = function( array1, array2 ){\r
+       var i = array2.length;\r
+       for( ; i; ){\r
+               if( array1.indexOf( array2[ --i ] ) === -1 ) return false;\r
+       };\r
+       return true;\r
+};\r