var Class = { create: function() { return function() { this.initialize.apply(this, arguments);}
}
}
Object.extend = function(destination, source) { for (property in source) destination[property] = source[property]; return destination;}
Function.prototype.bind = function(object) { var __method = this; return function() { return __method.apply(object, arguments);}
}
Function.prototype.bindAsEventListener = function(object) { var __method = this; return function(event) { __method.call(object, event || window.event);}
}
function $() { if (arguments.length == 1) return get$(arguments[0]); var elements = []; $c(arguments).each(function(el){ elements.push(get$(el));}); return elements; function get$(el){ if (typeof el == 'string') el = document.getElementById(el); return el;}
}
if (!window.Element) var Element = new Object(); Object.extend(Element, { remove: function(element) { element = $(element); element.parentNode.removeChild(element);}, hasClassName: function(element, className) { element = $(element); if (!element) return; var hasClass = false; element.className.split(' ').each(function(cn){ if (cn == className) hasClass = true;}); return hasClass;}, addClassName: function(element, className) { element = $(element); Element.removeClassName(element, className); element.className += ' ' + className;}, removeClassName: function(element, className) { element = $(element); if (!element) return; var newClassName = ''; element.className.split(' ').each(function(cn, i){ if (cn != className){ if (i > 0) newClassName += ' '; newClassName += cn;}
}); element.className = newClassName;}, cleanWhitespace: function(element) { element = $(element); $c(element.childNodes).each(function(node){ if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node);});}, find: function(element, what) { element = $(element)[what]; while (element.nodeType != 1) element = element[what]; return element;}
}); var Position = { cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent;} while (element); return [valueL, valueT];}
}; document.getElementsByClassName = function(className) { var children = document.getElementsByTagName('*') || document.all; var elements = []; $c(children).each(function(child){ if (Element.hasClassName(child, className)) elements.push(child);}); return elements;}
Array.prototype.iterate = function(func){ for(var i=0;i<this.length;i++) func(this[i], i);}
if (!Array.prototype.each) Array.prototype.each = Array.prototype.iterate; function $c(array){ var nArray = []; for (var i=0;i<array.length;i++) nArray.push(array[i]); return nArray;}
