var mc={};mc.style={fontSize:10,fontName:"sans-serif",shadowColor:"#888888",borderColor:"#999999",buttonDownColor:"#bbbbbb",buttonOverColor:"#cccccc",buttonUpColor:"#ffffff",highlightColor:"#eeeeee",labelColor:"#333333",inputTextBGColor:"#eeeeee"};mc.drawRect=function(d,a,f,b,e,c){d.fillStyle=c;d.fillRect(a,f,b,e)};mc.initComp=function(c,b,a,d){c.canvas=$("<canvas id='innerCanvas' width='100' height='100'/>").get(0);c.context=c.canvas.getContext("2d");$(c.canvas).css("position","absolute");$(b).append(c.canvas);c.move(a,d)};mc.initCompClass=function(a){a.prototype.drawLabel=function(c,b,d){this.context.font=mc.style.fontSize+"px "+mc.style.fontName;this.context.textBaseline="top";this.context.fillStyle=mc.style.labelColor;this.context.fillText(c,b,d)};a.prototype.measureText=function(b){this.context.font=mc.style.fontSize+"px "+mc.style.fontName;return this.context.measureText(b).width};a.prototype.move=function(b,c){this._x=b;this._y=c;$(this.canvas).css("top",this._y).css("left",this._x);return this};a.prototype.setSize=function(b,c){this.canvas.width=this._width=b;this.canvas.height=this._height=c;this.draw();return this};a.prototype.getWidth=function(){return this._width};a.prototype.setWidth=function(b){this.canvas.width=this._width=b;this.draw();return this};a.prototype.getHeight=function(){return this._height};a.prototype.setHeight=function(b){this.canvas.height=this._height=b;this.draw();return this};a.prototype.getX=function(){return this._x};a.prototype.setX=function(b){this._x=b;$(this.canvas).css("left",this._x);return this};a.prototype.getY=function(){return this._y};a.prototype.setY=function(b){$(this.canvas).css("top",this._y);return this};a.prototype.drawRect=function(b,f,c,e,d){this.context.fillStyle=d;this.context.fillRect(b,f,c,e)};a.prototype.drawCircle=function(b,e,d,c){this.context.fillStyle=c;this.context.beginPath();this.context.arc(b,e,d,0,Math.PI*2,false);this.context.fill()};a.prototype.getPagePosition=function(){var b=0,d=0,c=this.canvas;do{b+=c.offsetLeft;d+=c.offsetTop;c=c.offsetParent}while(c!=undefined);return{x:b,y:d}}};mc.HSlider=function(b,a,d,c){mc.initComp(this,b,a,d);this.handler=c;this.mouseIsOver=false;this._minimum=0;this._maximum=100;this._value=0;this.setSize(this._width=110,this._height=10);this.calculateHandle();this.draw();this._continuous=true;$(this.canvas).css("cursor","pointer");$(this.canvas).mouseover($.proxy(this.onMouseOver,this));$(this.canvas).mouseout($.proxy(this.onMouseOut,this));$(this.canvas).mousedown($.proxy(this.onMouseDown,this))};mc.initCompClass(mc.HSlider);mc.HSlider.prototype.draw=function(){this.drawBack();this.drawHandle()};mc.HSlider.prototype.drawBack=function(){this.drawRect(0,0,this._width,this._height,mc.style.shadowColor);this.drawRect(1.5,1.5,this._width-1.5,this._height-1.5,"#d0d0d0")};mc.HSlider.prototype.drawHandle=function(){this.drawRect(this.handleX+1,1,this._height-2,this._height-2,mc.style.highlightColor);this.drawRect(this.handleX+2,2,this._height-2,this._height-2,mc.style.shadowColor);this.drawRect(this.handleX+2,2,this._height-3,this._height-3,mc.style.buttonDownColor)};mc.HSlider.prototype.calculateHandle=function(){var c=this._maximum-this._minimum;var b=(this._value-this._minimum)/c;var a=this._width-this._height;this.handleX=a*b};mc.HSlider.prototype.onMouseOver=function(a){this.mouseIsOver=true};mc.HSlider.prototype.onMouseOut=function(a){this.mouseIsDown=false;this.mouseIsOver=false};mc.HSlider.prototype.onMouseDown=function(b){this.mouseIsDown=true;var a=b.pageX-this.getPagePosition().x;if(a>=this.handleX&&a<=this.handleX+this._height){this.dragging=true;this.dragOffset=a-this.handleX;$(document).bind("mouseup",$.proxy(this.onMouseUp,this));$(document).bind("mousemove",$.proxy(this.onMouseMove,this))}else{this.handleX=Math.max(0,a-this._height/2);this.handleX=Math.min(this._width-this._height,this.handleX);this.calculateValue();this.draw();if(this.handler){this.handler(this)}this.updateLabel()}};mc.HSlider.prototype.onMouseUp=function(a){if(this.dragging){if(this.handler){this.handler(this)}this.updateLabel()}this.mouseIsDown=false;this.dragging=false;$(document).unbind("mouseup",$.proxy(this.onMouseUp,this));$(document).unbind("mousemove",$.proxy(this.onMouseMove,this))};mc.HSlider.prototype.onMouseMove=function(b){if(this.dragging){var a=b.pageX-this.getPagePosition().x;this.handleX=a-this.dragOffset;this.handleX=Math.min(this.handleX,this._width-this._height);this.handleX=Math.max(this.handleX,0);this.calculateValue();if(this._continuous&&this.handler){this.handler(this)}this.updateLabel();this.draw()}};mc.HSlider.prototype.updateLabel=function(){if(this.label){this.label.setText(this.getValue(this.labelPrecision))}};mc.HSlider.prototype.calculateValue=function(){var b=this._maximum-this._minimum;var a=this._width-this._height;this._value=this._minimum+this.handleX/a*b;this._value=Math.min(this._value,this._maximum);this._value=Math.max(this._value,this._minimum);this.draw()};mc.HSlider.prototype.setSliderParams=function(b,a,c){this._minimum=b;this._maximum=a;this._value=c;this.calculateHandle();this.draw();return this};mc.HSlider.prototype.setValue=function(a){this._value=a;this.calculateHandle();this.draw();return this};mc.HSlider.prototype.getValue=function(a){if(a==undefined){return this._value}var b=Math.pow(10,a);return Math.round(this._value*b)/b};mc.HSlider.prototype.setMaximum=function(a){this._maximum=a;this.calculateHandle();this.draw();return this};mc.HSlider.prototype.getMaximum=function(){return this._maximum};mc.HSlider.prototype.setMinimum=function(a){this._minimum=a;this.calculateHandle();this.draw();return this};mc.HSlider.prototype.getMinimum=function(){return this._minimum};mc.HSlider.prototype.bindLabel=function(a,b){this.label=a;this.labelPrecision=b;this.updateLabel();return this};mc.HSlider.prototype.setContinuous=function(a){this._continuous=a;return this};mc.HSlider.prototype.getContinuous=function(){return this._continuous};mc.Pushbutton=function(b,a,e,c,d){mc.initComp(this,b,a,e);this._label=c;this.handler=d;this.mouseIsOver=false;this.mouseIsDown=false;this.setSize(100,mc.style.fontSize+8);$(this.canvas).css("cursor","pointer");$(this.canvas).mouseover($.proxy(this.onMouseOver,this));$(this.canvas).mouseout($.proxy(this.onMouseOut,this));$(this.canvas).mousedown($.proxy(this.onMouseDown,this));$(this.canvas).mouseup($.proxy(this.onMouseUp,this))};mc.initCompClass(mc.Pushbutton);mc.Pushbutton.prototype.onMouseOver=function(a){this.mouseIsOver=true;this.draw()};mc.Pushbutton.prototype.onMouseOut=function(a){this.mouseIsDown=false;this.mouseIsOver=false;this.draw()};mc.Pushbutton.prototype.onMouseDown=function(a){this.mouseIsDown=true;this.draw()};mc.Pushbutton.prototype.onMouseUp=function(a){if(this.mouseIsOver&&this.mouseIsDown&&this.handler!=null){this.handler(this)}this.mouseIsDown=false;this.draw()};mc.Pushbutton.prototype.draw=function(){this.drawBorder();this.drawFace();this.drawText()};mc.Pushbutton.prototype.drawBorder=function(){if(this.mouseIsDown){this.drawRect(0,0,this._width,this._height,mc.style.shadowColor)}else{this.drawRect(0,0,this._width,this._height,mc.style.borderColor)}};mc.Pushbutton.prototype.drawFace=function(){if(this.mouseIsDown){this.drawRect(1.5,1.5,this._width-1.5,this._height-1.5,mc.style.buttonDownColor)}else{if(this.mouseIsOver){this.drawRect(1,1,this._width-2,this._height-2,mc.style.buttonOverColor)}else{this.drawRect(1,1,this._width-2,this._height-2,mc.style.buttonUpColor)}}};mc.Pushbutton.prototype.drawText=function(){var a=this.measureText(this._label);this.drawLabel(this._label,(this._width-a)/2,(this._height-mc.style.fontSize)/2)};mc.Pushbutton.prototype.setLabel=function(a){this._label=a;this.draw();return this};mc.Pushbutton.prototype.getLabel=function(){return this._label};mc.InputText=function(b,a,e,d,c){this.handler=c;this._text=d;this.input=$("<input type='text'/>").css("position","absolute").css("left",a).css("top",e).css("font-family",mc.style.fontName).css("font-size",mc.style.fontSize).css("color",mc.style.fontColor).css("border-style","solid").css("border-width","1px").css("outline-style","none").css("border-left-color",mc.style.shadowColor).css("border-top-color",mc.style.shadowColor).css("border-right-color",mc.style.highlightColor).css("border-bottom-color",mc.style.highlightColor).css("background-color",mc.style.inputTextBGColor);this.input.attr("value",d);this.input.keyup($.proxy(this.onTextChange,this));$(b).append(this.input);this.move(a,e);this._width=this.input.attr("width");this._height=this.input.attr("height")};mc.InputText.prototype.onTextChange=function(){var a=this._text;this._text=this.input.attr("value");if(this.handler&&a!=this._text){this.handler()}};mc.InputText.prototype.setText=function(a){this._text=a;this.input.attr("value",a);this.draw();return this};mc.InputText.prototype.getText=function(){return this._text};mc.InputText.prototype.move=function(a,b){this._x=a;this._y=b;this.input.css("top",this._y).css("left",this._x);return this};mc.InputText.prototype.setSize=function(a,b){this._width=a;this._height=b;this.input.css("width",this._width).css("height",this._height);return this};mc.InputText.prototype.getWidth=function(){return this._width};mc.InputText.prototype.setWidth=function(a){this._width=a;this.input.css("width",this._width);return this};mc.InputText.prototype.getHeight=function(){return this._height};mc.InputText.prototype.setHeight=function(a){this._height=a;this.input.css("height",this._height);return this};mc.InputText.prototype.getX=function(){return this._x};mc.InputText.prototype.setX=function(a){this._x=a;$(this.input).css("left",this._x);return this};mc.InputText.prototype.getY=function(){return this._y};mc.InputText.prototype.setY=function(a){$(this.input).css("top",this._y);return this};mc.RadioButton=function(b,a,f,c,e,d){mc.initComp(this,b,a,f);this._label=c;this.handler=d;this._selected=e;if(this._selected){mc.RadioButton.selectedButton=this}mc.RadioButton.group.push(this);this.mouseIsOver=false;this.mouseIsDown=false;this.draw();$(this.canvas).css("cursor","pointer");$(this.canvas).mouseover($.proxy(this.onMouseOver,this));$(this.canvas).mouseout($.proxy(this.onMouseOut,this));$(this.canvas).mousedown($.proxy(this.onMouseDown,this));$(this.canvas).mouseup($.proxy(this.onMouseUp,this))};mc.initCompClass(mc.RadioButton);mc.RadioButton.group=[];mc.RadioButton.clearAll=function(){for(var a=0;a<mc.RadioButton.group.length;a+=1){var b=mc.RadioButton.group[a];b.setSelected(false)}};mc.RadioButton.prototype.onMouseOver=function(a){this.mouseIsOver=true};mc.RadioButton.prototype.onMouseOut=function(a){this.mouseIsOver=false;this.mouseIsDown=false};mc.RadioButton.prototype.onMouseDown=function(a){this.mouseIsDown=true};mc.RadioButton.prototype.onMouseUp=function(a){if(this.mouseIsOver&&this.mouseIsDown){mc.RadioButton.clearAll();mc.RadioButton.selectedButton=this;this._selected=true;this.drawRadio();if(this.handler!=undefined){this.handler(this)}}this.mouseIsDown=false};mc.RadioButton.prototype.draw=function(){this.canvas.width=this._width=this.measureText(this._label)+mc.style.fontSize+3;this.canvas.height=this._height=mc.style.fontSize+1;this.drawRadio();this.drawLabel(this._label,mc.style.fontSize+3,0)};mc.RadioButton.prototype.drawRadio=function(){var a=mc.style.fontSize/2;this.drawCircle(a,a,a,mc.style.borderColor);this.drawCircle(a,a,a-1,mc.style.buttonUpColor);if(this._selected){this.drawCircle(a,a,a-3,mc.style.shadowColor)}};mc.RadioButton.prototype.setSelected=function(a){this._selected=a;if(this._selected){mc.RadioButton.selectedButton=this}this.drawRadio();return this};mc.RadioButton.prototype.getSelected=function(){return this._selected};mc.RadioButton.prototype.setLabel=function(a){this._label=a;this.drawRadio();return this};mc.RadioButton.prototype.getLabel=function(){return this._label};mc.Label=function(b,a,d,c){mc.initComp(this,b,a,d);this._text=c||"";this._align="left";this.draw()};mc.initCompClass(mc.Label);mc.Label.prototype.setText=function(a){this._text=a;this.draw();return this};mc.Label.prototype.getText=function(){return this._text};mc.Label.prototype.draw=function(){this.canvas.width=this._width=this.measureText(this._text);this.canvas.height=this._height=mc.style.fontSize+1;this.drawLabel(this._text,0,0);if(this._align=="right"){$(this.canvas).css("left",this._x-this.canvas.width)}else{if(this._align=="center"){$(this.canvas).css("left",this._x-this.canvas.width/2)}else{$(this.canvas).css("left",this._x)}}};mc.Label.prototype.setAlign=function(a){this._align=a;this.draw();return this};mc.Label.prototype.getAlign=function(){return this._align};mc.VSlider=function(b,a,e,d,c){mc.initComp(this,b,a,e);this.handler=c;this.mouseIsOver=false;this._minimum=0;this._maximum=100;this._value=d;this.canvas.width=this._width=10;this.canvas.height=this._height=110;this.calculateHandle();this.draw();this._continuous=true;$(this.canvas).css("cursor","pointer");$(this.canvas).mouseover($.proxy(this.onMouseOver,this));$(this.canvas).mouseout($.proxy(this.onMouseOut,this));$(this.canvas).mousedown($.proxy(this.onMouseDown,this))};mc.initCompClass(mc.VSlider);mc.VSlider.prototype.draw=function(){this.drawBack();this.drawVol();this.drawHandle()};mc.VSlider.prototype.drawBack=function(){this.drawRect(0,0,this._width,this._height,mc.style.shadowColor);this.drawRect(1.5,1.5,this._width-1.5,this._height-1.5,"#000000")};mc.VSlider.prototype.drawHandle=function(){this.drawRect(1,this.handleY+1,this._width-2,this._width-2,mc.style.highlightColor);this.drawRect(2,this.handleY+2,this._width-2,this._width-2,mc.style.shadowColor);this.drawRect(2,this.handleY+2,this._width-3,this._width-3,mc.style.buttonDownColor)};mc.VSlider.prototype.drawVol=function(){this.drawRect(1,this.handleY+2,this._width,this._height-this.handleY+2,"#1188ff")};mc.VSlider.prototype.calculateHandle=function(){var b=this._maximum-this._minimum;var a=(this._value-this._minimum)/b;var c=this._height-this._width;this.handleY=c-c*a};mc.VSlider.prototype.onMouseOver=function(a){this.mouseIsOver=true};mc.VSlider.prototype.onMouseOut=function(a){this.mouseIsDown=false;this.mouseIsOver=false};mc.VSlider.prototype.onMouseDown=function(a){this.mouseIsDown=true;var b=a.pageY-this.getPagePosition().y;if(b>=this.handleY&&b<=this.handleY+this._width){this.dragging=true;this.dragOffset=b-this.handleY;$(document).bind("mouseup",$.proxy(this.onMouseUp,this));$(document).bind("mousemove",$.proxy(this.onMouseMove,this))}else{this.handleY=Math.max(0,b-this._width/2);this.handleY=Math.min(this._height-this._width,this.handleY);this.calculateValue();this.draw();if(this.handler){this.handler(this)}this.updateLabel()}};mc.VSlider.prototype.onMouseUp=function(a){if(this.dragging){if(this.handler){this.handler(this)}this.updateLabel()}this.mouseIsDown=false;this.dragging=false;$(document).unbind("mouseup",$.proxy(this.onMouseUp,this));$(document).unbind("mousemove",$.proxy(this.onMouseMove,this))};mc.VSlider.prototype.onMouseMove=function(a){if(this.dragging){var b=a.pageY-this.getPagePosition().y;this.handleY=b-this.dragOffset;this.handleY=Math.min(this.handleY,this._height-this._width);this.handleY=Math.max(this.handleY,0);this.calculateValue();if(this._continuous&&this.handler){this.handler(this)}this.updateLabel();this.draw()}};mc.VSlider.prototype.updateLabel=function(){if(this.label){this.label.setText(this.getValue(this.labelPrecision))}};mc.VSlider.prototype.calculateValue=function(){var a=this._maximum-this._minimum;var b=this._height-this._width;this._value=this._minimum+(b-this.handleY)/b*a;this._value=Math.min(this._value,this._maximum);this._value=Math.max(this._value,this._minimum);this.draw()};mc.VSlider.prototype.setSliderParams=function(b,a,c){this._minimum=b;this._maximum=a;this._value=c;this.calculateHandle();this.draw();return this};mc.VSlider.prototype.setValue=function(a){this._value=a;this.calculateHandle();this.draw();return this};mc.VSlider.prototype.getValue=function(a){if(a==undefined){return this._value}var b=Math.pow(10,a);return Math.round(this._value*b)/b};mc.VSlider.prototype.setMaximum=function(a){this._maximum=a;this.calculateHandle();this.draw();return this};mc.VSlider.prototype.getMaximum=function(){return this._maximum};mc.VSlider.prototype.setMinimum=function(a){this._minimum=a;this.calculateHandle();this.draw();return this};mc.VSlider.prototype.getMinimum=function(){return this._minimum};mc.VSlider.prototype.bindLabel=function(a,b){this.label=a;this.labelPrecision=b;this.updateLabel();return this};mc.VSlider.prototype.setContinuous=function(a){this._continuous=a;return this};mc.VSlider.prototype.getContinuous=function(){return this._continuous};mc.CheckBox=function(b,a,f,c,e,d){mc.initComp(this,b,a,f);this._label=c;this.handler=d;this._selected=e;this.mouseIsOver=false;this.mouseIsDown=false;this.draw();$(this.canvas).css("cursor","pointer");$(this.canvas).mouseover($.proxy(this.onMouseOver,this));$(this.canvas).mouseout($.proxy(this.onMouseOut,this));$(this.canvas).mousedown($.proxy(this.onMouseDown,this));$(this.canvas).mouseup($.proxy(this.onMouseUp,this))};mc.initCompClass(mc.CheckBox);mc.CheckBox.prototype.onMouseOver=function(a){this.mouseIsOver=true};mc.CheckBox.prototype.onMouseOut=function(a){this.mouseIsOver=false;this.mouseIsDown=false};mc.CheckBox.prototype.onMouseDown=function(a){this.mouseIsDown=true};mc.CheckBox.prototype.onMouseUp=function(a){if(this.mouseIsOver&&this.mouseIsDown){this._selected=!this._selected;if(this.handler!=undefined){this.handler(this)}}this.mouseIsDown=false;this.drawCheck()};mc.CheckBox.prototype.draw=function(){this.canvas.width=this._width=this.measureText(this._label)+mc.style.fontSize+3;this.canvas.height=this._height=mc.style.fontSize+1;this.drawCheck();this.drawLabel(this._label,mc.style.fontSize+3,0)};mc.CheckBox.prototype.drawCheck=function(){this.drawRect(0,0,mc.style.fontSize,mc.style.fontSize,mc.style.shadowColor);this.drawRect(1.5,1.5,mc.style.fontSize-1.5,mc.style.fontSize-1.5,mc.style.buttonUpColor);if(this._selected){this.drawRect(2,2,mc.style.fontSize-4,mc.style.fontSize-4,mc.style.highlightColor);this.drawRect(3,3,mc.style.fontSize-5,mc.style.fontSize-5,mc.style.shadowColor);this.drawRect(3,3,mc.style.fontSize-6,mc.style.fontSize-6,mc.style.buttonDownColor)}};mc.CheckBox.prototype.setLabel=function(a){this._label=a;this.draw();return this};mc.CheckBox.prototype.getLabel=function(){return this._label};mc.CheckBox.prototype.setSelected=function(a){this._selected=a;this.drawCheck();return this};mc.CheckBox.prototype.getSelected=function(){return this._selected};
