<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Script>
        <![CDATA[
            private var savedNumber:Number = 0;
            private var currentNumber:Number = 0;
            private var lastAction:String;
            private var clearAfterAction:Boolean = false;
            private function clearInput():void{
                calcInputText.text = "0";
                currentNumber = savedNumber = 0;
                lastAction = "";
            }
            
            private function inputNumber(num:String):void{
                if(clearAfterAction == true){
                    calcInputText.text = "";
                    clearAfterAction = false;
                }
                if(calcInputText.text == "0" || calcInputText.text == ""){
                    calcInputText.text = num;
                }else{
                    calcInputText.text += num;
                }
            }
            
            private function setAction(action:String):void{
                clearAfterAction = true;
                if(action == "sum"){
                    calculate();
                    //lastAction == "";
                }else{
                    lastAction = action;
                    calculate();
                    
                }
            }
            
            private function calculate():void{
                //in all actions, grab the number that is in the input text
                savedNumber = new Number(calcInputText.text);
                if(lastAction == "add"){
                    currentNumber = currentNumber + savedNumber;
                    calcInputText.text = currentNumber.toString();
                }else if(lastAction == "subtract"){
                    currentNumber = currentNumber - savedNumber;
                    calcInputText.text = currentNumber.toString();
                }else if(lastAction == "divide"){
                    if(currentNumber != 0){
                        currentNumber = currentNumber / savedNumber;
                        calcInputText.text = currentNumber.toString();
                    }else{
                        currentNumber = savedNumber;
                        calcInputText.text = currentNumber.toString();
                    }
                }else if(lastAction == "multiply"){
                    if(currentNumber != 0){
                        currentNumber = currentNumber * savedNumber;
                        calcInputText.text = currentNumber.toString();
                    }else{
                        currentNumber = savedNumber;
                        calcInputText.text = currentNumber.toString();
                    }
                }
            }
            
        ]]>
    </mx:Script>
    <mx:Panel width="250" height="240" layout="absolute" title="Flex Calculator">
        <mx:TextInput right="10" left="10" top="10" text="0" textAlign="right" id="calcInputText" editable="false"/>
        <mx:Button y="40" label="/" width="40" right="15" id="divideButton" click="setAction('divide')"/>
        <mx:Button y="40" label="C" width="30" left="15" id="clearButton" click="clearInput()"/>
        <mx:Button y="70" label="CE" width="30" left="15" id="ceButton" click="clearInput()"/>
        <mx:Button y="70" label="*" width="40" right="15" id="multiplyButton" click="setAction('multiply')"/>
        <mx:Button y="100" label="+" width="40" right="15" id="addButton" click="setAction('add')"/>
        <mx:Button y="128" label="-" width="40" right="15" id="subtractButton" click="setAction('subtract')"/>
        <mx:Button y="158" label="=" width="100" right="15" id="equalsButton" click="setAction('sum')"/>
        <mx:Button y="40" label="3" width="30" x="135" id="threeButton" click="inputNumber('3')"/>
        <mx:Button y="70" label="6" width="30" x="135" id="sixButton" click="inputNumber('6')"/>
        <mx:Button y="100" label="9" width="30" x="135" id="nineButton" click="inputNumber('9')"/>
        <mx:Button y="40" label="2" width="30" x="95" id="twoButton" click="inputNumber('2')"/>
        <mx:Button y="70" label="5" width="30" x="95" id="fiveButton" click="inputNumber('5')"/>
        <mx:Button y="100" label="8" width="30" x="95" id="eightButton" click="inputNumber('8')"/>
        <mx:Button y="128" label="." width="30" x="95" id="decimalButton" click="inputNumber('.')"/>
        <mx:Button y="128" width="30" x="135"/>
        <mx:Button y="40" label="1" width="30" x="55" id="oneButton" click="inputNumber('1')"/>
        <mx:Button y="70" label="4" width="30" x="55" id="fourButton" click="inputNumber('4')"/>
        <mx:Button y="100" label="7" width="30" x="55" id="sevenButton" click="inputNumber('7')"/>
        <mx:Button y="128" label="0" width="30" x="55" id="zeroButton" click="inputNumber('0')"/>
        <mx:Label x="10" y="182" text="Flex Calculator by Graeme Bull" color="#c0c0c0"/>
    </mx:Panel>
    
</mx:Application>