/** * Browser detection. */ IS_SAFARI = navigator.userAgent.toLowerCase().indexOf("safari") != -1 || navigator.userAgent.toLowerCase().indexOf("konqueror") != -1; IS_SAFARI_OLD = false; if (IS_SAFARI) { var matches = navigator.userAgent.match(/AppleWebKit\/(\d+)/); if(matches) IS_SAFARI_OLD = parseInt(matches[1]) < 420; } IS_OPERA = navigator.userAgent.toLowerCase().indexOf("opera") != -1; IS_GECKO = !IS_SAFARI && navigator.userAgent.toLowerCase().indexOf("gecko") != -1; IS_IE = document.all && !IS_OPERA; /** * 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); }