\r
-if( !window['console'] || ( window.parent && window.parent.log ) ) console = { log : function(a){\r
- var win, elm;\r
- //alert(a);\r
- if( window.parent ){\r
- elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );\r
- elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );\r
+/**\r
+ * <p>API ドキュメントと併せて、その意図や背景を綴っていく副読本もご覧ください。\r
+ * <a href="http://outcloud.blogspot.jp/p/pettanr-api-docs-supplementary-reader.html">クラウド番外地 > ぺったんR API文書の副読本</a>\r
+ * \r
+ * @example // ライブラリは X という名前空間を使用します。\r
+ * //ショートハンド\r
+ * X( func ) == X.ViewPort[ 'listenOnce' ](X.Event.XDOM_READY, func);\r
+ * X('#mydiv') == X.Doc.find('#mydiv');\r
+ * @namespace X\r
+ */\r
+function X( v ){\r
+ if( X_Type_isFunction( v ) ){\r
+ X[ 'ViewPort' ][ 'listenOnce' ]( X_EVENT_XDOM_READY, v );\r
+ } else\r
+ if( X_shortcutFunction ){\r
+ return X_shortcutFunction.apply( X_shortcutContext || X, arguments );\r
};\r
-} };\r
+};\r
+\r
+//{+DEV\r
+if( !window['console'] || ( window.parent && window.parent.log ) ){\r
+ console = {\r
+ log : function(a){\r
+ var elm;\r
+ //alert(a);\r
+ if( window.parent ){\r
+ elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );\r
+ elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );\r
+ };\r
+ }\r
+ }; \r
+};\r
+\r
+if( !console.dir ) console.dir = function(){};\r
+//+DEV}\r
+\r
+//{-AUDIO\r
+//-AUDIO}\r
\r
var undefined,\r
- X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' ),\r
- X_TEMP = {};\r
+ X_EMPTY_OBJECT = {},\r
+ X_TEMP = { onSystemReady : [] },\r
+ X_emptyFunction = new Function,\r
+ X_shortcutFunction,\r
+ X_shortcutContext;\r
\r
-X.VERSION = '0.6.89';\r
- \r
-X.bootTime = + new Date;\r
- \r
-X.getTime = Date.now ? Date.now : new Function( 'return +new Date' );\r
+/**\r
+ * バージョン文字列:"0.6.xxx"\r
+ * @type {string} */\r
+X[ 'VERSION' ] = '0.6.181';\r
\r
+/**\r
+ * ブートタイム ms\r
+ * @type {number} */\r
+X[ 'bootTime' ] = + new Date;\r
\r
-X.emptyFunction = new Function;\r
+/**\r
+ * 空の関数\r
+ * @type {Function} */\r
+X[ 'emptyFunction' ] = X_emptyFunction;\r
\r
- // defer の場合もあるので、document.readyState を見る MacIE で false\r
-X.inHead = (function( s ){\r
+/**\r
+ * このscriptはheadタグの中にあるか?\r
+ * @type {boolean} */\r
+// TODO defer の場合もあるので、document.readyState を見る\r
+// TODO body の有無を見ればOKではないか?\r
+// MacIE で false\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
return s.tagName.toLowerCase() === 'head';// opera7.23 s.tagName is 'HTML'\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 1/0;//Number.POSITIVE_INFINITY;\r
- case '-Infinity' : return -1/0;//Number.NEGATIVE_INFINITY;\r
- case 'void(0)' :\r
- case 'void 0' :\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
-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.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
- for( ; i; ){\r
- ret[ --i ] = ary[ i ];\r
- };\r
- return ret;\r
-};\r
- \r
-X.isEmptyObject = function( v ){\r
- var p;\r
-// if( v.length ) return false;\r
- for( 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