<?xml version="1.0" encoding="utf-8"?>
<s:Group 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:screens="screens.*"
    
    horizontalCenter="0"
    verticalCenter="0"
    
    creationComplete="_creationCompleteHandler(event)"
    >
    
    
    <s:states>
        
        <s:State name="editVote"        enterState="editVote_enterStateHandler(event)"/>
        <s:State name="voteInProgress"  stateGroups="_voting"/>
        <s:State name="voteStopped"     stateGroups="_voting"/>
    </s:states>
    
    <fx:Script>
        <![CDATA[
            import controllers.VoteController;
            import events.VoteEvent;
            import models.VoteDefinition;
            
            import mx.events.FlexEvent;
            
            [Bindable]protected var enabledEdit:Boolean = true;
            
            protected function _creationCompleteHandler(event:FlexEvent):void
            {
                var voteCtrl:VoteController = VoteController.instance;
                voteCtrl.addEventListener(VoteEvent.START_VOTE, onVoteStarted, false,0,true);
                voteCtrl.addEventListener(VoteEvent.ANSWERS_RECEIVED, onVoteUpdated, false,0,true);
                voteCtrl.addEventListener(VoteEvent.STOP_VOTE, onVoteStopped, false,0,true);
                
            }

            protected function btnSubmitVote_clickHandler():void
            {
                enabledEdit = false; // We cannot modify the text while the vote is in progress
                
                // We collect all the informations and ask for a broadcast
                var def:VoteDefinition = new VoteDefinition();
                def.question = labelVote0.text; 
                if (labelVote1.text != '') def.answer1 = labelVote1.text; 
                if (labelVote2.text != '') def.answer2 = labelVote2.text; 
                if (labelVote3.text != '') def.answer3 = labelVote3.text; 
                if (labelVote4.text != '') def.answer4 = labelVote4.text; 
                if (labelVote5.text != '') def.answer5 = labelVote5.text; 
                    
                // def.timeLimit = parseInt(inputMaxDuration.text);
                
                VoteController.instance.submitVote(def);
                
            }
            
            
            
            
            protected function onVoteStarted(event:VoteEvent):void
            {
                currentState = 'voteInProgress';
                // We make sure the initial feedback is reset
                onVoteUpdated();
            }
            
            
            protected function onVoteUpdated(event:VoteEvent=null):void
            {
                var ctrl:VoteController = VoteController.instance;
                
                // Update the number of answer received
                btnSubmitVote.label = 'vote in progress... ' + ctrl.currentVoteUsers +'/'+ctrl.totalVoteClients;
                var ar:Array = ctrl.currentVoteAnswers;
                results1.setProgress(ar[1], ctrl.totalVoteClients);
                results2.setProgress(ar[2], ctrl.totalVoteClients);
                results3.setProgress(ar[3], ctrl.totalVoteClients);
                results4.setProgress(ar[4], ctrl.totalVoteClients);
                results5.setProgress(ar[5], ctrl.totalVoteClients);
            }
            
            
            protected function onVoteStopped(event:Event=null):void
            {
                currentState = 'voteStopped';
                VoteController.instance.parseResultsForBroadcast();
            }
            
            
            protected function editVote_enterStateHandler(event:FlexEvent):void
            {
                enabledEdit = true;
            }



        ]]>
    </fx:Script>
    
    <fx:Declarations />
    
    <s:Group 
        horizontalCenter="0" verticalCenter="0"
        >
        <s:layout>
            <s:VerticalLayout />
        </s:layout>
        
        <s:TextInput id="labelVote0" editable="{enabledEdit}"
                     text="Enter your question here" styleName="question" width="100%"/>
        
        
        <s:TextInput id="labelVote1" editable="{enabledEdit}"
                     text="Choice 1" styleName="answer" width="100%"/>
        <screens:Jauge id="results1" 
                       visible="false" visible._voting="true" />
        
        <s:TextInput id="labelVote2" editable="{enabledEdit}"
                     text="Choice 2" styleName="answer" width="100%"/>
        <screens:Jauge id="results2" 
                       visible="false" visible._voting="true" />
        
        <s:TextInput id="labelVote3" editable="{enabledEdit}"
                     text="Choice 3" styleName="answer" width="100%"/>
        <screens:Jauge id="results3" 
                       visible="false" visible._voting="true" />
        
        <s:TextInput id="labelVote4" editable="{enabledEdit}"
                     text="Choice 4" styleName="answer" width="100%"/>
        <screens:Jauge id="results4" 
                       visible="false" visible._voting="true" />
        
        <s:TextInput id="labelVote5" editable="{enabledEdit}"
                     text="Choice 5" styleName="answer" width="100%"/>
        <screens:Jauge id="results5" 
                       visible="false" visible._voting="true" />
        
        
        
        <s:Label text="tip : remove text from the field to hide it from the clients" />
        
        <!--
        <s:Label text="options :" fontWeight="bold"/>
        <s:CheckBox id="chkMultiple" 
                    label="allow multiple answers" enabled="{enabledEdit}"/>
        
        <s:HGroup>
            <s:TextInput id="inputMaxDuration" text="0"
                         restrict="0123456789" maxChars="2" 
                         editable="{enabledEdit}"/>
            <s:Label text="maximum vote duration (in seconds). 0 = no limit"/>
        </s:HGroup>
        -->
        
        <s:HGroup>
            
            
            <s:Button id="btnSubmitVote"
                      label.editVote="Start Vote" 
                      label.voteInProgress="vote in progress..."
                      label.voteStopped="vote finished"
                      width="200"
                      enabled="{this.currentState == 'editVote'}"
                      click="btnSubmitVote_clickHandler()"
                      />
            <s:Button id="btnStopVote" 
                      label="Stop vote"
                      includeIn="voteInProgress"
                      click="onVoteStopped()"/>
            <s:Button id="btnNewVote" 
                      label="New vote"
                      includeIn="voteStopped"
                      click="currentState = 'editVote';"/>
        </s:HGroup>
    </s:Group>
    
    
</s:Group>