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;}