var Class={create:function(){return function(){this.initialize.apply(this,arguments)}}};Object.extend=function(a,b){for(property in b){a[property]=b[property]}return a};Function.prototype.bind=function(b){var a=this;return function(){return a.apply(b,arguments)}};function $(){var c=new Array();for(var b=0;b<arguments.length;b++){var a=arguments[b];if(typeof a=="string"){a=document.getElementById(a)}if(arguments.length==1){return a}c.push(a)}return c}document.getElementsByClassName=function(d){var c=document.getElementsByTagName("*")||document.all;var e=new Array();for(var b=0;b<c.length;b++){var g=c[b];var f=g.className.split(" ");for(var a=0;a<f.length;a++){if(f[a]==d){e.push(g);break}}}return e};if(!window.Element){var Element=new Object()}Object.extend(Element,{remove:function(a){a=$(a);a.parentNode.removeChild(a)},hasClassName:function(d,e){d=$(d);if(!d){return}var b=d.className.split(" ");for(var c=0;c<b.length;c++){if(b[c]==e){return true}}return false},addClassName:function(a,b){a=$(a);Element.removeClassName(a,b);a.className+=" "+b},removeClassName:function(e,f){e=$(e);if(!e){return}var c="";var b=e.className.split(" ");for(var d=0;d<b.length;d++){if(b[d]!=f){if(d>0){c+=" "}c+=b[d]}}e.className=c},cleanWhitespace:function(b){b=$(b);for(var a=0;a<b.childNodes.length;a++){var c=b.childNodes[a];if(c.nodeType==3&&!/\S/.test(c.nodeValue)){Element.remove(c)}}}});var fx=new Object();fx.Base=function(){};fx.Base.prototype={setOptions:function(a){this.options={duration:500,onComplete:""};Object.extend(this.options,a||{})},go:function(){this.duration=this.options.duration;this.startTime=(new Date).getTime();this.timer=setInterval(this.step.bind(this),13)},step:function(){var b=(new Date).getTime();var a=(b-this.startTime)/(this.duration);if(b>=this.duration+this.startTime){this.now=this.to;clearInterval(this.timer);this.timer=null;if(this.options.onComplete){setTimeout(this.options.onComplete.bind(this),10)}}else{this.now=((-Math.cos(a*Math.PI)/2)+0.5)*(this.to-this.from)+this.from}this.increase()},custom:function(b,a){if(this.timer!=null){return}this.from=b;this.to=a;this.go()},hide:function(){this.now=0;this.increase()},clearTimer:function(){clearInterval(this.timer);this.timer=null}};fx.Layout=Class.create();fx.Layout.prototype=Object.extend(new fx.Base(),{initialize:function(b,a){this.el=$(b);this.el.style.overflow="hidden";this.el.iniWidth=this.el.offsetWidth;this.el.iniHeight=this.el.offsetHeight;this.setOptions(a)}});fx.Height=Class.create();Object.extend(Object.extend(fx.Height.prototype,fx.Layout.prototype),{increase:function(){this.el.style.height=this.now+"px"},toggle:function(){if(this.el.offsetHeight>0){this.custom(this.el.offsetHeight,0)}else{this.custom(0,this.el.scrollHeight)}}});fx.Width=Class.create();Object.extend(Object.extend(fx.Width.prototype,fx.Layout.prototype),{increase:function(){this.el.style.width=this.now+"px"},toggle:function(){if(this.el.offsetWidth>0){this.custom(this.el.offsetWidth,0)}else{this.custom(0,this.el.iniWidth)}}});fx.Opacity=Class.create();fx.Opacity.prototype=Object.extend(new fx.Base(),{initialize:function(b,a){this.el=$(b);this.now=1;this.increase();this.setOptions(a)},increase:function(){if(this.now==1){this.now=0.9999}if(this.now>0&&this.el.style.visibility=="hidden"){this.el.style.visibility="visible"}if(this.now==0){this.el.style.visibility="hidden"}if(window.ActiveXObject){this.el.style.filter="alpha(opacity="+this.now*100+")"}this.el.style.opacity=this.now},toggle:function(){if(this.now>0){this.custom(1,0)}else{this.custom(0,1)}}});

myJ = new fx.Height('ec_jumper', {duration: 400});
myJ.hide();

function a_el(p, el, id) {
 var e = document.createElement(el);
 e.id = id;
 document.getElementById(p).appendChild(e);
}

function a_but(p, dc, c, n, v) {
 var d = document.createElement('div');
 d.className = 'ec_button ' + dc;
 
 var e = document.createElement('input');
 e.className = c;
 e.type = 'button';
 e.id = n;
 e.name = n;
 e.value = v;
 
 d.appendChild(e);
 
 document.getElementById(p).appendChild(d);
}

a_el('ec', 'form', 'ec_form');
a_el('ec_form', 'div', 'ec_display');
a_el('ec_display', 'p', 'ec_hint');
a_el('ec_display', 'input', 'ec_screen');

a_el('ec_form', 'div', 'ec_keyboard');
a_el('ec_keyboard', 'div', 'ec_memory');
a_but('ec_memory', 'ec_end', 'ec_number', 'bmr', 'MR');
a_but('ec_memory', 'ec_end', 'ec_number', 'bms', 'MS');
a_but('ec_memory', 'ec_end', 'ec_number', 'bm+', 'M+');
a_but('ec_memory', 'ec_end', 'ec_number', 'bm-', 'M-');

a_el('ec_keyboard', 'div', 'ec_numbers');
a_but('ec_numbers', '', 'ec_number', 'b7', '7');
a_but('ec_numbers', '', 'ec_number', 'b8', '8');
a_but('ec_numbers', 'ec_end', 'ec_number', 'b9', '9');
a_but('ec_numbers', '', 'ec_number', 'b4', '4');
a_but('ec_numbers', '', 'ec_number', 'b5', '5');
a_but('ec_numbers', 'ec_end', 'ec_number', 'b6', '6');
a_but('ec_numbers', '', 'ec_number', 'b1', '1');
a_but('ec_numbers', '', 'ec_number', 'b2', '2');
a_but('ec_numbers', 'ec_end', 'ec_number', 'b3', '3');
a_but('ec_numbers', '', 'ec_number', 'b0', '0');
a_but('ec_numbers', '', 'ec_number', 'b+-', '±');
a_but('ec_numbers', 'ec_end', 'ec_number', 'bd', '.');

a_el('ec_keyboard', 'div', 'ec_operators');
a_but('ec_operators', '', 'ec_number', 'bksp', '←');
a_but('ec_operators', '', 'ec_number', 'bmc', 'MC');
a_but('ec_operators', 'ec_end', 'ec_number', 'bc', 'C');
a_but('ec_operators', '', 'ec_number', 'bperc', '%');
a_but('ec_operators', '', 'ec_number', 'bdivx', '1/x');
a_but('ec_operators', 'ec_end', 'ec_number', 'bsqrt', '√x');
a_but('ec_operators', '', 'ec_number', 'bsub', '-');
a_but('ec_operators', '', 'ec_number', 'bmul', '×');
a_but('ec_operators', 'ec_end', 'ec_number', 'bdiv', '÷');
a_but('ec_operators', '', 'ec_number', 'badd', '+');
a_but('ec_operators', 'ec_end', 'ec_calculate', 'b=', '=');

var ec;
window.onload = function() {
  var j=document.getElementById("ec_toggle");
  j.style.width = '80px';
  j.style.height = '80px';
  var ja=document.getElementById("ec_togglea");
  ja.style.width = '48px';
  ja.style.height = '68px';
  ja.style.display = 'block';
  ec=new ABCalc(document.getElementById("ec_form"));ec.init(ec);
}

function Jtoggle() {
  myJ.toggle();
  ec.onoff();
  document.getElementById("ec_togglea").blur();
}

