+ // TODO 3DS, DSi, WiiU\r
+ \r
+ if( sys.indexOf( 'iP' ) === 0 ){\r
+\r
+ v = dav.split( 'OS ' )[ 1 ].split( '_' );\r
+ i = window.devicePixelRatio === 1;\r
+ /**\r
+ * @alias X.UA.iOSMajor\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'iOSMajor' ] = parseFloat( v[ 0 ] ) || 0;\r
+ /**\r
+ * @alias X.UA.iOSMinor\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'iOSMinor' ] = parseFloat( v[ 1 ] ) || 0;\r
+ /**\r
+ * @alias X.UA.iOSPatch\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'iOSPatch' ] = parseFloat( v[ 2 ] ) || 0;\r
+ /**\r
+ * @alias X.UA.iOS\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'iOS' ] = X_UA[ 'iOSMajor' ] + X_UA[ 'iOSMinor' ] / 10;\r
+\r
+ // 4:3 model\r
+ v = screen.width === screen.height * 1.5 || screen.width * 1.5 === screen.height;\r
+\r
+ switch( sys ){\r
+ case 'iPhone' :\r
+ case 'iPhone Simulator' :\r
+ /**\r
+ * @alias X.UA.iPhone\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPhone' ] = true;\r
+ if( v ){\r
+ /**\r
+ * iPhone4s以下\r
+ * @alias X.UA.iPhone_4s\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPhone_4s' ] = true;\r
+ \r
+ if( i ){\r
+ /**\r
+ * iPhone3GS以下\r
+ * @alias X.UA.iPhone_3GS\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPhone_3GS' ] = true;\r
+ }; \r
+ };\r
+ break;\r
+ \r
+ case 'iPad' :\r
+ case 'iPad Simulator' :\r
+ /**\r
+ * @alias X.UA.iPad\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPad' ] = true;\r
+ if( i ){\r
+ /**\r
+ * iPad2以下または初代iPad mini 以下\r
+ * @alias X.UA.iPad_2Mini1\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPad_2Mini1' ] = true;\r
+ };\r
+ break;\r
+ \r
+ case 'iPod' :\r
+ case 'iPod Simulator' : // 必要??\r
+ /**\r
+ * @alias X.UA.iPod\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPod' ] = true;\r
+ \r
+ if( v ){\r
+ /**\r
+ * iPod4以下\r
+ * @alias X.UA.iPod_4\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPod_4' ] = true;\r
+ \r
+ if( i ){\r
+ /**\r
+ * iPod3以下\r
+ * @alias X.UA.iPod_3\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'iPod_3' ] = true;\r
+ }; \r
+ };\r
+ break;\r
+ };\r
+ \r
+ console.log( '>> iOS : ' + X_UA[ 'iOS' ] );\r
+ } else\r
+ if( dua.indexOf( 'hp-tablet' ) !== -1 || dua.indexOf( 'webOS' ) !== -1 ){\r
+ /**\r
+ * http://user-agent-string.info/list-of-ua/os-detail?os=webOS\r
+ * @alias X.UA.webOS\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'webOS' ] = true; // webOS\r
+ } else\r
+ if( sys.indexOf( 'Win' ) + 1 ){\r
+\r
+ switch( sys ){\r
+ case 'WinCE' :\r
+ /**\r
+ * @alias X.UA.WinCE\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ sys ] = true;\r
+ break;\r
+ case 'Win16' :\r
+ case 'Win32' :\r
+ case 'Win64' :\r
+ /**\r
+ * @alias X.UA.Win16\r
+ * @alias X.UA.Win32\r
+ * @alias X.UA.Win64\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ sys ] = true;\r
+\r
+ if( v = dua.split( 'Windows NT 10' )[ 1 ] ){\r
+ switch( v.substr( 0, 2 ) ){\r
+ case '.0' : v = 10; break;\r
+ default : v = '?';\r
+ };\r
+ } else\r
+ if( v = dua.split( 'Windows NT ' )[ 1 ] ){\r
+ switch( v.substr( 0, 3 ) ){\r
+ case '6.3' : v = 8.1; break;\r
+ case '6.2' : v = 8; break;\r
+ case '6.1' : v = 7; break;\r
+ case '6.0' : v = 'Vista'; break;\r
+ case '5.2' : v = '2003|XP64'; break;\r
+ case '5.1' : v = v.indexOf( '5.1; SV1' ) ? 'XP' : 'XPSP2'; break;\r
+ case '5.0' : v = v.indexOf( '5.01' ) ? 2000 : '2kSP1'; break;\r
+ case '4.0' : v = 'NT'; break;\r
+ default : v = '?';\r
+ }; \r
+ } else\r
+ if( v = dua.split( 'Windows ' )[ 1 ] ){\r
+ switch( v.substr( 0, 2 ) ){\r
+ case '98' : v = v.indexOf( '98; Win 9x 4.90' ) ? '98|98SE' : 'ME'; break;\r
+ case '95' : v = 95; break;\r
+ case '3.' : v = parseFloat( v ); break;\r
+ default : v = '?';\r
+ }; \r
+ } else {\r
+ v = '?';\r
+ };\r
+ \r
+ /**\r
+ * 10, 8.1, 8, 7, Vista, 2003|XP64, XPSP2, XP, 2kSP1, 2000, ME, 98|98SE, 95, ?\r
+ * @alias X.UA.Windows\r
+ * @type {number|string}\r
+ */ \r
+ X_UA[ 'Windows' ] = v;\r
+ break;\r
+ };\r
+\r
+ // winRT\r
+ } else\r
+ if( sys.indexOf( 'Mac' ) + 1 ){\r
+ console.log( 'Mac' );\r
+ /**\r
+ * @alias X.UA.Mac\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'Mac' ] = true;\r
+ switch( sys ){\r
+ case 'MacPowerPC' :\r
+ /**\r
+ * @alias X.UA.MacPPC\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ 'MacPPC' ] = true;\r
+ break;\r
+ case 'MacPPC' :\r
+ case 'Mac68K' :\r
+ case 'MacIntel' :\r
+ /**\r
+ * @alias X.UA.MacPPC\r
+ * @alias X.UA.Mac68K\r
+ * @alias X.UA.MacIntel\r
+ * @type {boolean}\r
+ */\r
+ X_UA[ sys ] = true;\r
+ };\r
+ } else\r
+ if( ( sys.indexOf( 'Linux' ) + 1 ) || ( sys.indexOf( 'Android' ) + 1 ) ){\r
+ console.log( 'Linux' );\r
+ /**\r
+ * @alias X.UA.Linux\r
+ * @type {boolean}\r
+ */\r
+ if( ( v = dua.split( 'Android ' )[ 1 ] ) ||\r
+ ( v = sys.split( 'Android ' )[ 1 ] ) ){ // PCモードの Android Firefox では platform に Android 0.0.0 が存在\r
+ v = v.split( '.' );\r
+ /**\r
+ * @alias X.UA.AndroidMajor\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'AndroidMajor' ] = parseFloat( v[ 0 ] ) || 0;\r
+ /**\r
+ * @alias X.UA.AndroidMinor\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'AndroidMinor' ] = parseFloat( v[ 1 ] ) || 0;\r
+ /**\r
+ * @alias X.UA.AndroidPatch\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'AndroidPatch' ] = parseFloat( v[ 2 ] ) || 0;\r
+ /**\r
+ * Firefox で Version が取れない!\r
+ * http://bizmakoto.jp/bizid/articles/1207/31/news004.html\r
+ * Chrome Android 4.0以上 Google\r
+ * Dolphin Browser HD Android 2.0.1以上 Mobotap\r
+ * Firefox Android 2.2以上 Mozilla\r
+ * Opera Mobile Android 1.6以上 Opera Software ASA\r
+ * Sleipnir Mobile Android 2.1以上 Fenrir\r
+ * @alias X.UA.Android\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'Android' ] = X_UA[ 'AndroidMajor' ] + X_UA[ 'AndroidMinor' ] / 10;\r
+ console.log( '>> Android : ' + X_UA[ 'Android' ] );\r
+ } else\r
+ if( ( sys === 'Linux armv7l' || sys === 'Linux i686' ) && window.ontouchstart !== undefined && ( v = parseFloat( dua.split( 'WebKit\/' )[ 1 ] ) ) ){\r
+ // https://ja.wikipedia.org/wiki/WebKit\r
+ // http://www.au.kddi.com/developer/android/kishu/ua/\r
+ // webkit version to Android version...\r
+ androidBrowserPCMode = !window.chrome || v < 534.3; // 4.0 & 3.x には chrome がいる...\r
+ \r
+ if( !window[ 'Int8Array' ] ){\r
+ v =\r
+ v < 529 ? 1.5 : // <= 528.5\r
+ v < 531 ? 2.0 : // 530 2.0~2.1\r
+ // 533 2.2~2.3\r
+ v < 534 ? ( window.HTMLAudioElement ? 2.3 : 2.2 ) : 0;\r
+ } else {\r
+ v =\r
+ !navigator[ 'connection' ] ? 4.4 :\r
+ Number.isFinite && ( window.history && window.history.pushState ) ? 4.2/* & 4.3 */ : // ここに 4.1, 4.0 も入ってくる...\r
+ Number.isFinite ? 4.1 : 4;\r
+ // 534 - 3.x~4.x , 534.13=3.x\r
+ // 534.30 = 4.0-4.1\r
+ // 535.19 = 4.1\r
+ // 537.36 = 4.4.2-5.x\r
+ };\r
+\r
+ if( v ){\r
+ // PC版で見る、にチェックが付いている場合、ユーザーエージェント文字列にも platform にも Android の文字列が存在しない(標準ブラウザ&Chrome)\r
+ // Audio でタッチが必要か?の判定にとても困る...\r
+ // ua には Linux x86_64 になっている\r
+ X_UA[ 'Android' ] = v;\r
+ };\r
+ };\r