/** * Browser detection. */ var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || null; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || null; this.OS = this.searchString(this.dataOS) || null; }, searchString: function (data) { for (var i = 0; i < data.length; i++) { var dataString = data[i].string; var dataProp = data[i].prop; this.versionSearchString = data[i].versionSearch || data[i].identity; if (dataString) { if (dataString.indexOf(data[i].subString) != -1) return data[i].identity; } else if (dataProp) return data[i].identity; } }, searchVersion: function (dataString) { var index = dataString.indexOf(this.versionSearchString); if (index == -1) return; return parseFloat(dataString.substring(index + this.versionSearchString.length + 1)); }, dataBrowser: [ { string: navigator.userAgent, subString: "OmniWeb", versionSearch: "OmniWeb/", identity: "OmniWeb" }, { string: navigator.vendor, subString: "Apple", identity: "Safari" }, { prop: window.opera, identity: "Opera" }, { string: navigator.vendor, subString: "iCab", identity: "iCab" }, { string: navigator.vendor, subString: "KDE", identity: "Konqueror" }, { string: navigator.userAgent, subString: "Firefox", identity: "Firefox" }, { string: navigator.vendor, subString: "Camino", identity: "Camino" }, { // for newer Netscapes (6+) string: navigator.userAgent, subString: "Netscape", identity: "Netscape" }, { string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE" }, { string: navigator.userAgent, subString: "Gecko", identity: "Mozilla", versionSearch: "rv" }, { // for older Netscapes (4-) string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla" } ], dataOS : [ { string: navigator.platform, subString: "Win", identity: "Windows" }, { string: navigator.platform, subString: "Mac", identity: "Mac" }, { string: navigator.platform, subString: "Linux", identity: "Linux" } ] }; BrowserDetect.init(); // Legacy... IS_SAFARI = BrowserDetect.browser == 'Safari'; IS_OPERA = BrowserDetect.browser == 'Opera'; IS_GECKO = BrowserDetect.browser == 'Mozilla'; IS_IE = BrowserDetect.browser == 'Explorer'; function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (typeof element == 'string') element = document.getElementById(element); return element; } function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); else { var results = []; for (var i = 0, length = iterable.length; i < length; i++) results.push(iterable[i]); return results; } } function $F(element) { element = $(element); switch (element.tagName.toLowerCase()) { case 'input': switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return element.checked ? element.value : null; default: return element.value; } case 'textarea': return element.value; case 'select': if (element.multiple) { for (var i = 0, values = [], length = element.options.length; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(opt.value); } return values; } else { return element.options[element.selectedIndex].value; } default: return null; } } function $w(string) { return string ? string.replace(/^\s+|\s+$/g, '').split(/\s+/) : []; }