Type.registerNamespace("Custom");
Custom.Calculator = function(element) {
Custom.Calculator.initializeBase(this, [element]);
this._designer = new designerCalc();
this._value1 = "";
this._operator = "=";
this._recentOperator = true;
}
Custom.Calculator.prototype = {
_events: null,
onPluginLoaded : function(args) {
Custom.Calculator.callBaseMethod(this, 'onPluginLoaded', new Array(args));
// Call on the component initialized to get the specific component's XAML element fields.
this._designer.initializeComponent(this.get_element());
// Hookup event handlers as required in this custom type.
var f = Function.createDelegate(this, this._numClick);
this.addEventListener(this._designer.n0, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n1, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n2, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n3, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n4, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n5, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n6, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n7, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n8, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.n9, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.fplus, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.fminus, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.fmultiply, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.fequals, "mouseLeftButtonUp", f);
this.addEventListener(this._designer.fdivide, "mouseLeftButtonUp", f);
// Set initial value
this._designer.result.Text = "0";
},
_numClick : function(sender, e) {
var s = sender.children.getItem(2).Text;
if ("=-+/*".indexOf(s) !== -1) {
if (!this._recentOperator) {
if (this._operator === "=") {
this._value1 = this._designer.result.Text;
}
else {
if ((this._operator === "/") && (parseFloat(this._designer.result.Text) === 0)) {
this._designer.result.Text = "Error";
this._value1 = "0";
s = "=";
}
else {
var value = eval("parseFloat(this._value1) " + this._operator + " parseFloat(this._designer.result.Text);");
value = String(value).substr(0, 12);
this._value1 = value;
this._designer.result.Text = this._value1;
}
}
}
this._operator = s;
this._recentOperator = true;
return;
}
if (this._recentOperator) {
this._designer.result.Text = s;
this._recentOperator = false;
}
else {
this._designer.result.Text += s;
}
}
}
Custom.Calculator.registerClass('Custom.Calculator', Sys.UI.Silverlight.Control);