1// JavaScript Document 2 3//************** (*****DO NOT MAKE ANY CHANGES HERE*****) ************** // 4 5//***** DETECT DEVICE CLIENT *****// 6(function() { 7 8 var BrowserDetect = { 9 init: function () { 10 this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; 11 this.version = this.searchVersion(navigator.userAgent) 12 || this.searchVersion(navigator.appVersion) 13 || "an unknown version"; 14 this.OS = this.searchString(this.dataOS) || "an unknown OS"; 15 }, 16 searchString: function (data) { 17 for (var i=0;i<data.length;i++) { 18 var dataString = data[i].string; 19 var dataProp = data[i].prop; 20 this.versionSearchString = data[i].versionSearch || data[i].identity; 21 if (dataString) { 22 if (dataString.indexOf(data[i].subString) != -1) 23 return data[i].identity; 24 } 25 else if (dataProp) 26 return data[i].identity; 27 } 28 }, 29 searchVersion: function (dataString) { 30 var index = dataString.indexOf(this.versionSearchString); 31 if (index == -1) return; 32 return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); 33 }, 34 dataBrowser: [ 35 { 36 string: navigator.userAgent, 37 subString: "Chrome", 38 identity: "Chrome" 39 }, 40 { string: navigator.userAgent, 41 subString: "OmniWeb", 42 versionSearch: "OmniWeb/", 43 identity: "OmniWeb" 44 }, 45 { 46 string: navigator.vendor, 47 subString: "Apple", 48 identity: "Safari", 49 versionSearch: "Version" 50 }, 51 { 52 prop: window.opera, 53 identity: "Opera" 54 }, 55 { 56 string: navigator.vendor, 57 subString: "iCab", 58 identity: "iCab" 59 }, 60 { 61 string: navigator.vendor, 62 subString: "KDE", 63 identity: "Konqueror" 64 }, 65 { 66 string: navigator.userAgent, 67 subString: "Firefox", 68 identity: "Firefox" 69 }, 70 { 71 string: navigator.vendor, 72 subString: "Camino", 73 identity: "Camino" 74 }, 75 { // for newer Netscapes (6+)
76 string: navigator.userAgent, 77 subString: "Netscape", 78 identity: "Netscape" 79 }, 80 { 81 string: navigator.userAgent, 82 subString: "MSIE", 83 identity: "Explorer", 84 versionSearch: "MSIE" 85 }, 86 { 87 string: navigator.userAgent, 88 subString: "Gecko", 89 identity: "Mozilla", 90 versionSearch: "rv" 91 }, 92 { // for older Netscapes (4-) 93 string: navigator.userAgent, 94 subString: "Mozilla", 95 identity: "Netscape", 96 versionSearch: "Mozilla" 97 } 98 ], 99 dataOS : [ 100 { 101 string: navigator.platform, 102 subString: "Win", 103 identity: "Windows" 104 }, 105 { 106 string: navigator.platform, 107 subString: "Mac", 108 identity: "Mac" 109 }, 110 { 111 string: navigator.userAgent, 112 subString: "iPhone", 113 identity: "iPhone/iPod" 114 }, 115 { 116 string: navigator.platform, 117 subString: "Linux", 118 identity: "Linux" 119 } 120 ] 121 122 }; 123 124 BrowserDetect.init(); 125 126 window.$.client = { os : BrowserDetect.OS, browser : BrowserDetect.browser, version : BrowserDetect.version }; 127 128})(); 129 130$("html").addClass($.client.os + " " + $.client.browser + " " + $.client.browser + parseInt($.client.version)); 131 132//********************************************************************************************//
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.