<?xml version="1.0" encoding="utf-8" ?>
<objects
	xmlns:util="http://www.springactionscript.org/schema/util">

  <!-- elements -->

  <object 
		id="flowCfg"
		class="ru.mobw.coreas3.app.config.FlowConfig">
		<property name="bindingsRootPackage" value="${utility.path}"/>
	</object>

  <object
		id="flow"
		class="ru.mobw.coreas3.app.flow.mcflow.MCFlowBase"
		depends-on="flowCfg">
    <constructor-arg ref="flowCfg">
    </constructor-arg>
    <property name="routeData" ref="route"/>
    <property name="elementsMap">
      <dictionary>
        <entry>
          <key>start</key>
          <value>
            <ref>start</ref>
          </value>
        </entry>
        <entry>
          <key>howToPay</key>
          <value>
            <ref>howToPay</ref>
          </value>
        </entry>
        <entry>
          <key>selectPayType</key>
          <value>
            <ref>selectPayType</ref>
          </value>
        </entry>
        <entry>
          <key>enterAccount</key>
          <value>
            <ref>enterAccount</ref>
          </value>
        </entry>
         <entry>
          <key>changePeriod</key>
          <value>
            <ref>changePeriod</ref>
          </value>
        </entry>
        <entry>
          <key>enterSumm</key>
          <value>
            <ref>enterSumm</ref>
          </value>
        </entry>
        <entry>
          <key>enterSmallCode</key>
          <value>
            <ref>enterSmallCode</ref>
          </value>
        </entry>
         <entry>
          <key>enterCounter</key>
          <value>
            <ref>enterCounter</ref>
          </value>
        </entry>
        <entry>
          <key>enterTelephone</key>
          <value>
            <ref>enterTelephone</ref>
          </value>
        </entry>
        <entry>
          <key>changeTypeSelect</key>
          <value>
            <ref>changeTypeSelect</ref>
          </value>
        </entry>
        <entry>
          <key>changeToWallet</key>
          <value>
            <ref>changeToWallet</ref>
          </value>
        </entry>
        <entry>
          <key>changeToMobile</key>
          <value>
            <ref>changeToMobile</ref>
          </value>
        </entry>  
        <entry>
          <key>toQuickPay</key>
          <value>
            <ref>toQuickPay</ref>
          </value>
        </entry>        
        <entry>
          <key>paymentEnd</key>
          <value>
            <ref>paymentEnd</ref>
          </value>
        </entry>
         <entry>
          <key>exit</key>
          <value>
            <ref>exit</ref>
          </value>
        </entry>    
      </dictionary>
    </property>
  </object>

  <object
		id="start"
		class="elements.mosenergo.StartElement"
		>
	<property name="id" value="1"/>	
	<constructor-arg value="start"/>
	<constructor-arg ref="mainInstance"/> 
	<property name="mosComm" value="${payment.mosComm}"/>
	<property name="moComm" value="${payment.moComm}"/> 
	<property name="mosDetails" value="${payment.mosDetails}"/>
	<property name="moDetails" value="${payment.moDetails}"/>  
  </object>
  
  <object
		id="howToPay"
		class="ru.mobw.coreas3.app.flow.mcflow.CommonFlowElement"
		>
	<property name="id" value="2"/>	
	<constructor-arg value="howToPay"/>
	<constructor-arg ref="mainInstance"/> 
  </object>
  
  <object
		id="selectPayType"
		class="elements.mosenergo.SelectPayTypeElement"
		>
	<property name="id" value="3"/>	
	<constructor-arg value="selectPayType"/>
	<constructor-arg ref="mainInstance"/>
	<property name="registrationCandidates">
			<array>
				<value>viewMC.quickTypeButton,click,A:quickType</value>
				<value>viewMC.longTypeButton,click,A:longType</value>
			</array>
		</property>
  </object>
  
  <object
		id="enterAccount"
		class="elements.mosenergo.EnterAccountElement"
		>
	<property name="id" value="4"/>	
    <constructor-arg value="enterAccount"/>
    <constructor-arg ref="mainInstance"/> 
    <property name="maxTextLength" value="10"/>
    <property name="lattersLimits" value="5,3,2"/>
    <property name="timeout" value="400000"/>
    <property name="bindings">
    	<array>
    		<value>binder.text=$account</value>
    	</array>
    </property>
	<property name="registrationCandidates">
			<array>
				<value>onlineAccountCheckService,AccountExists,S:onlineAccountCheckService</value>
				<value>onlineAccountCheckService,AccountNoExists,E:onlineAccountCheckServiceNotExist</value>
				<value>onlineAccountCheckService,OnlineError,E:onlineAccountCheckServiceFail</value>
			</array>
		</property>
  </object>
  
  <object
	  	id="changePeriod"
	  	class="elements.mosenergo.ChangePeriodElement"
	  	>
	<property name="id" value="5"/>	
    <constructor-arg value="changePeriod"/>
    <constructor-arg ref="mainInstance"/>
    <property name="timeout" value="150000"/>
	
	
  </object>
  
  <object
		id="enterSumm"
		class="elements.mosenergo.EnterSummElement"
		>
	<property name="id" value="6"/>	
	<constructor-arg value="enterSumm"/>
	<constructor-arg ref="mainInstance"/>
	<property name="maxTextLength" value="8"/>
	<property name="minCash" value="${config.minCashLimit}"/>
	<property name="maxCash" value="${num.maxCash}"/>
	<property name="alert" value="${err.cashRange}"/>
	<property name="bindings">
    	<array>
    		<value>binder.text=$summ</value>
    	</array>
    </property>
  </object>
  
  <object
		id="enterSmallCode"
		class="elements.mosenergo.EnterSmallCodeElement"
		>
	<property name="id" value="7"/>	
	<constructor-arg value="enterSmallCode"/>
	<constructor-arg ref="mainInstance"/>
	<property name="maxTextLength" value="2"/>
	<property name="bindings">
    	<array>
    		<value>binder.text=$smallCode</value>
    	</array>
    </property>
  </object>
  
  <object
		id="enterCounter"
		class="elements.mosenergo.EnterCounterElement"
		>
	<property name="id" value="8"/>	
	<constructor-arg value="enterCounter"/>
	<constructor-arg ref="mainInstance"/>
	<property name="maxTextLength" value="5"/>
  </object>
  
  <object
		id="changeTypeSelect"
		class="elements.ChangeTypeSelectionElement"
		>
	<property name="id" value="9"/>	
    <constructor-arg value="changeTypeSelect"/>
    <constructor-arg ref="mainInstance"/>
  </object>
  
  <object
		id="enterTelephone"
		class="elements.EnterTelephoneElement"
		>
		<property name="id" value="10"/>
		<constructor-arg value="enterTelephone"/>
		<constructor-arg ref="mainInstance"/>
		<property name="bindings">
			<array>
				<value>binder.text=$phone</value>
			</array>
		</property>
		<property name="formatter" ref="phoneFormatter" />
		<property name="maxTextLength" value="${config.phoneLength}"/>
		<property name="validationAlert" value="${err.phoneError}"/>
		<property name="validator" ref="phoneValidator" />
	</object>  
  
  <object
		id="changeToWallet"
		class="elements.mosenergo.WalletChangePaymentElement"
		>
		<property name="id" value="11"/>
		<constructor-arg value="changeToWallet"/>
		<constructor-arg ref="mainInstance"/>
		<property name="timeout" value="240000"/>
	</object>
	
	<object
		id="changeToMobile"
		class="elements.mosenergo.MobileChangePaymentElement"
		>
		<property name="id" value="12"/>
		<constructor-arg value="changeToMobile"/>
		<constructor-arg ref="mainInstance"/>
		<property name="timeout" value="240000"/>
	</object>
	
	<object
		id="toQuickPay"
		class="elements.mosenergo.QuickPaymentElement"
		>
		<property name="id" value="13"/>
		<constructor-arg value="toQuickPay"/>
		<constructor-arg ref="mainInstance"/>
		<property name="timeout" value="240000"/>
	</object>
	
	<object
	  	id="paymentEnd"
	  	class="elements.EndPaymentElement"
	  	>
		<property name="id" value="14"/>
      <constructor-arg value="paymentEnd"/>
      <constructor-arg ref="mainInstance"/>
  </object>
  
   
  <object
		id="exit"
		class="elements.ZKUExitElement"
		>
		<constructor-arg value="exit"/>
  </object>

	 <!-- end elements -->
	
	
	
	
  
	<!-- validators -->
	
	<object 
		id="phoneValidator"
		class="com.leetwin.flow.validation.Validator">
		<property name="constraintsMap">
			<dictionary>
				<entry>
					<key>value</key>
					<value>
						<array>
							<object class="com.leetwin.flow.validation.constraints.NotNull"/>
							<object class="com.leetwin.flow.validation.constraints.InRange">
								<property name="min" value="10"/>
								<property name="max" value="10"/>
							</object>
							<object class="ru.mobw.coreas3.app.validation.constraints.HasPhoneCapacity"/>
						</array>
					</value>
				</entry>
			</dictionary>
		</property>
	</object>
	
	<!-- end validators -->
		
		
		
		
  
	<!-- helpers -->
	<object id="phoneFormatter" class="ru.mobw.coreas3.formatters.PhoneFormatter" />
	<!-- end_helpers -->
  
</objects>