summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/platform.js
blob: 108c1620618880eb9086f93abcad7fef3d9d4039 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/* Inspired by mozillas platform detection:
  https://github.com/mozilla/bedrock/tree/master/media/js/base
*/
 (function () {
   'use strict';
   function getPlatform() {
     var ua = navigator.userAgent,
         pf = navigator.platform;
     if (/Win(16|9[x58]|NT( [1234]| 5\.0| [^0-9]|[^ -]|$))/.test(ua) ||
       /Windows ([MC]E|9[x58]|3\.1|4\.10|NT( [1234]| 5\.0| [^0-9]|[^ ]|$))/.test(ua) ||
       /Windows_95/.test(ua)) {
       /**
        * Officially unsupported platforms are Windows 95, 98, ME, NT 4.x, 2000
        * These regular expressions match:
        *  - Win16
        *  - Win9x
        *  - Win95
        *  - Win98
        *  - WinNT (not followed by version or followed by version <= 5)
        *  - Windows ME
        *  - Windows CE
        *  - Windows 9x
        *  - Windows 95
        *  - Windows 98
        *  - Windows 3.1
        *  - Windows 4.10
        *  - Windows NT (not followed by version or followed by version <= 5)
        *  - Windows_95
        */
       return 'oldwin';
     }
     if (ua.indexOf("MSIE 6.0") !== -1 &&
       ua.indexOf("Windows NT 5.1") !== -1 &&
       ua.indexOf("SV1") === -1) {
       // Windows XP SP1
       return 'oldwin';
     }
     if (pf.indexOf("Win32") !== -1 ||
       pf.indexOf("Win64") !== -1) {
       return 'windows';
     }
     if (/android/i.test(ua)) {
       return 'android';
     }
     if (/armv[6-7]l/.test(pf)) {
       return 'android';
     }
     if (pf.indexOf("Linux") !== -1) {
       return 'linux';
       //if (pf.indexOf("64") !== -1) {
       //  return 'linux64';
       //} else {
       //  return 'linux32';
       //}
     }
     if (pf.indexOf("MacPPC") !== -1) {
       return 'oldmac';
     }
     if (/Mac OS X 10.[0-5]/.test(ua)) {
       return 'oldmac';
     }
     if (pf.indexOf('iPhone') !== -1 ||
       pf.indexOf('iPad') !== -1 ||
       pf.indexOf('iPod') !== -1 ) {
       return 'ios';
     }
     if (ua.indexOf("Mac OS X") !== -1) {
       return 'osx';
     }
     if (ua.indexOf("MSIE 5.2") !== -1) {
       return 'oldmac';
     }
     if (pf.indexOf("Mac") !== -1) {
       return 'oldmac';
     }
     if (navigator.platform === '' &&
       navigator.userAgent.indexOf("Firefox") !== -1 &&
       navigator.userAgent.indexOf("Mobile") !== -1) {
       return 'fxos';
     }

     return 'other';
   }
   (function () {
     // Immediately set the platform classname on the html-element
     // to avoid lots of flickering
     var h = document.documentElement;
     window.site = {
       platform : getPlatform()
     };
     h.className = window.site.platform;
   })();
 })();