/** * 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(); /** * Get one or more nodes based on string id. */ 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; } /** * Convert a collection into an array. */ 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; } } /** * Get the value of a form element. */ 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; } } /** * Get the words in a string as an array. */ function $w(string) { return string ? string.replace(/^\s+|\s+$/g, '').split(/\s+/) : []; } /** * Get all elements with the given class name(s). */ function getElementsByClassName(classNames, tag, element){ var testClass = new RegExp('\\b' + $w(classNames.replace(/\-/, '\\-')).join('\\b|\\b') + '\\b'); tag = tag || '*'; element = element || document; var elements = (tag == '*' && element.all) ? element.all : element.getElementsByTagName(tag); var returnElements = []; for (var i = 0; i < elements.length; i++){ if(testClass.test(elements[i].className)){ returnElements.push(elements[i]); } } return returnElements; } function noSubmit(event) { if ((event.keyCode || event.charCode) == 13) { return false; } else { return true; } } /** * Redraw the visual area. */ document.redraw = function () { document.body.style.position = 'relative'; setTimeout(function () { document.body.style.position = ''; }, 0); }