]> git.wh0rd.org Git - tt-rss.git/blob - lib/dojo/_base/sniff.js.uncompressed.js
update dojo to 1.7.3
[tt-rss.git] / lib / dojo / _base / sniff.js.uncompressed.js
1 define("dojo/_base/sniff", ["./kernel", "../has"], function(dojo, has){
2         // module:
3         //              dojo/sniff
4         // summary:
5         //              This module populates the dojo browser version sniffing properties.
6
7         if(!1){
8                 return has;
9         }
10
11         dojo.isBrowser = true,
12         dojo._name = "browser";
13
14         var hasAdd = has.add,
15                 n = navigator,
16                 dua = n.userAgent,
17                 dav = n.appVersion,
18                 tv = parseFloat(dav),
19                 isOpera,
20                 isAIR,
21                 isKhtml,
22                 isWebKit,
23                 isChrome,
24                 isMac,
25                 isSafari,
26                 isMozilla ,
27                 isMoz,
28                 isIE,
29                 isFF,
30                 isQuirks,
31                 isIos,
32                 isAndroid,
33                 isWii;
34
35         /*=====
36         dojo.isBrowser = {
37                 //      example:
38                 //      | if(dojo.isBrowser){ ... }
39         };
40
41         dojo.isFF = {
42                 //      example:
43                 //      | if(dojo.isFF > 1){ ... }
44         };
45
46         dojo.isIE = {
47                 // example:
48                 //      | if(dojo.isIE > 6){
49                 //      |               // we are IE7
50                 //      | }
51         };
52
53         dojo.isSafari = {
54                 //      example:
55                 //      | if(dojo.isSafari){ ... }
56                 //      example:
57                 //              Detect iPhone:
58                 //      | if(dojo.isSafari && navigator.userAgent.indexOf("iPhone") != -1){
59                 //      |               // we are iPhone. Note, iPod touch reports "iPod" above and fails this test.
60                 //      | }
61         };
62
63         dojo.mixin(dojo, {
64                 // isBrowser: Boolean
65                 //              True if the client is a web-browser
66                 isBrowser: true,
67                 //      isFF: Number | undefined
68                 //              Version as a Number if client is FireFox. undefined otherwise. Corresponds to
69                 //              major detected FireFox version (1.5, 2, 3, etc.)
70                 isFF: 2,
71                 //      isIE: Number | undefined
72                 //              Version as a Number if client is MSIE(PC). undefined otherwise. Corresponds to
73                 //              major detected IE version (6, 7, 8, etc.)
74                 isIE: 6,
75                 //      isKhtml: Number | undefined
76                 //              Version as a Number if client is a KHTML browser. undefined otherwise. Corresponds to major
77                 //              detected version.
78                 isKhtml: 0,
79                 //      isWebKit: Number | undefined
80                 //              Version as a Number if client is a WebKit-derived browser (Konqueror,
81                 //              Safari, Chrome, etc.). undefined otherwise.
82                 isWebKit: 0,
83                 //      isMozilla: Number | undefined
84                 //              Version as a Number if client is a Mozilla-based browser (Firefox,
85                 //              SeaMonkey). undefined otherwise. Corresponds to major detected version.
86                 isMozilla: 0,
87                 //      isOpera: Number | undefined
88                 //              Version as a Number if client is Opera. undefined otherwise. Corresponds to
89                 //              major detected version.
90                 isOpera: 0,
91                 //      isSafari: Number | undefined
92                 //              Version as a Number if client is Safari or iPhone. undefined otherwise.
93                 isSafari: 0,
94                 //      isChrome: Number | undefined
95                 //              Version as a Number if client is Chrome browser. undefined otherwise.
96                 isChrome: 0,
97                 //      isMac: Boolean
98                 //              True if the client runs on Mac
99                 isMac: 0,
100                 // isIos: Boolean
101                 //              True if client is iPhone, iPod, or iPad
102                 isIos: 0,
103                 // isAndroid: Number | undefined
104                 //              Version as a Number if client is android browser. undefined otherwise.
105                 isAndroid: 0,
106                 // isWii: Boolean
107                 //              True if client is Wii
108                 isWii: 0
109         });
110         =====*/
111
112         // fill in the rendering support information in dojo.render.*
113         if(dua.indexOf("AdobeAIR") >= 0){ isAIR = 1; }
114         isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : 0;
115         isWebKit = parseFloat(dua.split("WebKit/")[1]) || undefined;
116         isChrome = parseFloat(dua.split("Chrome/")[1]) || undefined;
117         isMac = dav.indexOf("Macintosh") >= 0;
118         isIos = /iPhone|iPod|iPad/.test(dua);
119         isAndroid = parseFloat(dua.split("Android ")[1]) || undefined;
120         isWii = typeof opera != "undefined" && opera.wiiremote;
121
122         // safari detection derived from:
123         //              http://developer.apple.com/internet/safari/faq.html#anchor2
124         //              http://developer.apple.com/internet/safari/uamatrix.html
125         var index = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);
126         if(index && !isChrome){
127                 // try to grab the explicit Safari version first. If we don't get
128                 // one, look for less than 419.3 as the indication that we're on something
129                 // "Safari 2-ish".
130                 isSafari = parseFloat(dav.split("Version/")[1]);
131                 if(!isSafari || parseFloat(dav.substr(index + 7)) <= 419.3){
132                         isSafari = 2;
133                 }
134         }
135
136         if (!has("dojo-webkit")) {
137                 if(dua.indexOf("Opera") >= 0){
138                         isOpera = tv;
139                         // see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/
140                         // 9.8 has both styles; <9.8, 9.9 only old style
141                         if(isOpera >= 9.8){
142                                 isOpera = parseFloat(dua.split("Version/")[1]) || tv;
143                         }
144                 }
145
146                 if(dua.indexOf("Gecko") >= 0 && !isKhtml && !isWebKit){
147                         isMozilla = isMoz = tv;
148                 }
149                 if(isMoz){
150                         //We really need to get away from this. Consider a sane isGecko approach for the future.
151                         isFF = parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined;
152                 }
153                 if(document.all && !isOpera){
154                         isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
155                         //In cases where the page has an HTTP header or META tag with
156                         //X-UA-Compatible, then it is in emulation mode.
157                         //Make sure isIE reflects the desired version.
158                         //document.documentMode of 5 means quirks mode.
159                         //Only switch the value if documentMode's major version
160                         //is different from isIE's major version.
161                         var mode = document.documentMode;
162                         if(mode && mode != 5 && Math.floor(isIE) != mode){
163                                 isIE = mode;
164                         }
165                 }
166         }
167
168         isQuirks = document.compatMode == "BackCompat";
169
170         hasAdd("opera", dojo.isOpera = isOpera);
171         hasAdd("air", dojo.isAIR = isAIR);
172         hasAdd("khtml", dojo.isKhtml = isKhtml);
173         hasAdd("webkit", dojo.isWebKit = isWebKit);
174         hasAdd("chrome", dojo.isChrome = isChrome);
175         hasAdd("mac", dojo.isMac = isMac );
176         hasAdd("safari", dojo.isSafari = isSafari);
177         hasAdd("mozilla", dojo.isMozilla = dojo.isMoz = isMozilla );
178         hasAdd("ie", dojo.isIE = isIE );
179         hasAdd("ff", dojo.isFF = isFF);
180         hasAdd("quirks", dojo.isQuirks = isQuirks);
181         hasAdd("ios", dojo.isIos = isIos);
182         hasAdd("android", dojo.isAndroid = isAndroid);
183
184         dojo.locale = dojo.locale || (isIE ? n.userLanguage : n.language).toLowerCase();
185
186         return has;
187 });