1var Globals = Globals || {}; 2 3(function(){ 4 5 // ----------------------------------------------------------------------------------------- // 6 // !Exec detection IMMEDIATELY 7 // ----------------------------------------------------------------------------------------- // 8 var client = function(){ 9 10 //rendering engines 11 var engine = { 12 ie: 0, 13 gecko: 0, 14 webkit: 0, 15 khtml: 0, 16 opera: 0, 17 18 //complete version 19 ver: null 20 }; 21 22 //browsers 23 var browser = { 24 25 //browsers 26 ie: 0, 27 firefox: 0, 28 safari: 0, 29 konq: 0, 30 opera: 0, 31 chrome: 0, 32 safari: 0, 33 34 //specific version 35 ver: null 36 }; 37 38 39 //platform/device/OS 40 var system = { 41 win: false, 42 mac: false, 43 x11: false, 44 45 //mobile devices 46 iphone: false, 47 ipod: false, 48 ipad: false, 49 nokiaN: false, 50 winMobile: false, 51 macMobile: false, 52 53 //game systems 54 wii: false, 55 ps: false 56 }; 57 58 //detect rendering engines/browsers 59 var ua = navigator.userAgent; 60 if (window.opera){ 61 engine.ver = browser.ver = window.opera.version(); 62 engine.opera = browser.opera = parseFloat(engine.ver); 63 } else if (/AppleWebKit\/(\S+)/.test(ua)){ 64 engine.ver = RegExp["$1"]; 65 engine.webkit = parseFloat(engine.ver); 66 67 //figure out if it's Chrome or Safari 68 if (/Chrome\/(\S+)/.test(ua)){ 69 browser.ver = RegExp["$1"]; 70 browser.chrome = parseFloat(browser.ver); 71 } else if (/Version\/(\S+)/.test(ua)){ 72 browser.ver = RegExp["$1"]; 73 browser.safari = parseFloat(browser.ver); 74 } else { 75 //approximate version 76 var safariVersion = 1; 77 if (engine.webkit < 100){ 78 safariVersion = 1; 79 } else if (engine.webkit < 312){ 80 safariVersion = 1.2; 81 } else if (engine.webkit < 412){ 82 safariVersion = 1.3; 83 } else { 84 safariVersion = 2; 85 } 86 87 browser.safari = browser.ver = safariVersion; 88 } 89 } else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){ 90 engine.ver = browser.ver = RegExp["$1"]; 91 engine.khtml = browser.konq = parseFloat(engine.ver); 92 } else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){ 93 engine.ver = RegExp["$1"]; 94 engine.gecko = parseFloat(engine.ver); 95 96 //determine if it's Firefox 97 if (/Firefox\/(\S+)/.test(ua)){ 98 browser.ver = RegExp["$1"]; 99 browser.firefox = parseFloat(browser.ver); 100 } 101 } else if (/MSIE ([^;]+)/.test(ua)){ 102 engine.ver = browser.ver = RegExp["$1"]; 103 engine.ie = browser.ie = parseFloat(engine.ver); 104 } 105 106 //detect browsers 107 browser.ie = engine.ie; 108 browser.opera = engine.opera; 109 110 111 //detect platform 112 var p = navigator.platform; 113 system.win = p.indexOf("Win") == 0; 114 system.mac = p.indexOf("Mac") == 0; 115 system.x11 = (p == "X11") || (p.indexOf("Linux") == 0); 116 117 //detect windows operating systems 118 if (system.win){ 119 if (/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){ 120 if (RegExp["$1"] == "NT"){ 121 switch(RegExp["$2"]){ 122 case "5.0": 123 system.win = "2000"; 124 break; 125 case "5.1": 126 system.win = "XP"; 127 break; 128 case "6.0": 129 system.win = "Vista"; 130 break; 131 default: 132 system.win = "NT"; 133 break; 134 } 135 } else if (RegExp["$1"] == "9x"){ 136 system.win = "ME"; 137 } else { 138 system.win = RegExp["$1"]; 139 } 140 } 141 } 142 143 //mobile devices 144 system.iphone = ua.indexOf("iPhone") > -1; 145 system.ipod = ua.indexOf("iPod") > -1; 146 system.ipad = ua.indexOf("iPad") > -1; 147 system.nokiaN = ua.indexOf("NokiaN") > -1; 148 system.winMobile = (system.win == "CE"); 149 system.macMobile = (system.iphone || system.ipod); 150 151 //gaming systems 152 system.wii = ua.indexOf("Wii") > -1; 153 system.ps = /playstation/i.test(ua); 154 155 //return it 156 return { 157 engine: engine, 158 browser: browser, 159 system: system 160 }; 161 162 }(); 163 164 // ----------------------------------------------------------------------------------------- // 165 // !Register globals 166 // ----------------------------------------------------------------------------------------- // 167 168 Globals.clientDetection = client; 169 170 // ----------------------------------------------------------------------------------------- // 171 // !on doc ready -> register classes 172 // ----------------------------------------------------------------------------------------- // 173 174 $(document).ready(function() { 175 // regitser engine 176 var $html = $('html'); 177 178 $.each(Globals.clientDetection.browser,function(browserName,version){ 179 if(version > 0) { 180 $html.addClass(browserName); 181 return false;
182 } 183 }); 184 185 $.each(Globals.clientDetection.engine,function(engineName,version){ 186 if(version > 0) { 187 $html.addClass(engineName); 188 return false; 189 } 190 }); 191 192 $.each(Globals.clientDetection.system,function(systemName,hasSystem){ 193 if(hasSystem) { 194 $html.addClass(systemName); 195 return false; 196 } 197 }); 198 199 if(Globals.clientDetection.system.iphone || Globals.clientDetection.system.ipad || Globals.clientDetection.system.ipod) 200 { 201 $html.addClass('touch'); 202 $html.removeClass('notouch'); 203 } 204 else 205 { 206 $html.addClass('notouch'); 207 $html.removeClass('touch'); 208 209 } 210 211 if(typeof PageController !== 'undefined') PageController.registerController('browser-detection.apply-class-to-html',Globals.clientDetection); 212 }); 213 214})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.