<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
     layout="absolute"
     width="536"
     height="520"
     showCloseButton="true"
     title="COMPRAR"
     close="PopUpManager.removePopUp(this)"
     creationComplete="init()">
     <mx:states>
          <mx:State name="Final">
               <mx:SetProperty name="height" value="134"/>
               <mx:AddChild position="lastChild">
                    <mx:Label x="33.5" y="24" showEffect="{bodyDissolve}" text="Sua compra foi finalizada com sucesso." fontFamily="Verdana" fontSize="14" fontWeight="bold" fontStyle="italic"/>
               </mx:AddChild>
               <mx:AddChild position="lastChild">
                    <mx:Button x="281.5" y="62" label="Fechar" click="PopUpManager.removePopUp(this);"/>
               </mx:AddChild>
               <mx:RemoveChild target="{accordion1}"/>
          </mx:State>
     </mx:states>
     <mx:Script>
         <![CDATA[
             import mx.formatters.NumberFormatter;
             import mx.charts.chartClasses.NumericAxis;
             import mx.rpc.events.FaultEvent;
             import mx.managers.PopUpManager;
             import mx.controls.*;
            import mx.events.*;
            import mx.charts.CategoryAxis;
            import mx.events.DragEvent;
            import mx.collections.ArrayCollection;
            import mx.core.ScrollPolicy;
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;



        public const URLREMOTA:String="http://www.4e-commerce.com.br/caliopes/crex_read.php";
                    
        [Bindable]
        
            
        
            public var listaProdutos:ArrayCollection = new ArrayCollection();
            

            private var myCardMenu:Menu;
            private var mySizeMenu:Menu;
            private var produto:XML;
            
            private var action:String;
            
            private var valorTotal:String="0.00" ;
            
             private function finalizar():void {
                 
                 
                 this.currentState = "Final";
                //PopUpManager.removePopUp(this);
            }
            
            // inicializa o popupButton do cartao
            private function init():void{
                   Security.allowDomain("*");
                 Security.loadPolicyFile("http://www.4e-commerce.com.br/caliopes/crossdomain.xml");
                var requer:URLRequest = new URLRequest("http://www.4e-commerce.com.br/caliopes/crossdomain.xml");
                 var carregarCross:URLLoader = new URLLoader();
                carregarCross.load(requer);     
                
                PopUpManager.centerPopUp(this);
                
                getProductInfo.send();
                
                
                
                

            }
            
            private function initCard():void {
                
                
                myCardMenu = new Menu();
                var dp:Object = [{label: "Master"}, {label: "Visa"}, {label: "Amex"}, {label: "Boleto"}];        
                myCardMenu.dataProvider = dp;
                myCardMenu.selectedIndex = 0;       
                myCardMenu.addEventListener("itemClick", itemClickCard);
                popB.popUp = myCardMenu;
                popB.label = myCardMenu.dataProvider[myCardMenu.selectedIndex].label;
            }
            // event do popupButton do cartao
            private function itemClickCard(event:MenuEvent):void {
                var label:String = event.item.label;        
                popB.label = label;
                popB.close();
                myCardMenu.selectedIndex = event.index;
            }
            // inicializa o popupButton do tamanho
            private function initSize():void {
                mySizeMenu = new Menu();
                var dp:Object = [{label: "P"}, {label: "M"}, {label: "G"}, {label: "GG"}];        
                mySizeMenu.dataProvider = dp;
                mySizeMenu.selectedIndex = 0;       
                mySizeMenu.addEventListener("itemClick", itemClickSize);
                //popA.popUp = mySizeMenu;
                //popA.label = mySizeMenu.dataProvider[mySizeMenu.selectedIndex].label;
            }
            // event do popupButton do tamanho
            private function itemClickSize(event:MenuEvent):void {
                var label:String = event.item.label;        
                //popA.label = label;
                //popA.close();
                mySizeMenu.selectedIndex = event.index;
            }
            

            private function erroHTTPService(event:FaultEvent):void{
    
                Alert.show("ERRO: "+event.message);
    
            }
            

            private function adicionarProduto():void{
                if(listaProdutos.length>=5){
                    Alert.show("Numero máximo de 5 tipos de produtos por pedido.");
                }
                else{
                    listaProdutos.addItem(produto.copy());
                }
                recalcTotal();
            }
            
            
            private function carregarProdutoInfo(event:ResultEvent):void{
                var configuracaoProd:XML;
                configuracaoProd=XML(event.result);
                configuracaoProd.normalize();
                produto=configuracaoProd.data[0];
                var doc:XMLDocument = new XMLDocument();
                var size:XMLNode = doc.createElement("size");
                produto.appendChild(size);
                produto.products_quantity=1;
                listaProdutos.addItem(produto.copy());
                recalcTotal();
            }

            private function removerProduto():void{
                if(produtos.selectedIndex>=0){
                    if(listaProdutos.length<=1){
                        Alert.show("Numero minimo de 1 tipo de produtos por pedido.");
                    }
                    else{
                        listaProdutos.removeItemAt((listaProdutos.getItemIndex(produtos.selectedItem)));
                    }
                }
                recalcTotal();
            }
            
            private function recalcTotal():void{
                
                var total:uint = 0; 
                
                
                var produtoXML:XML =null;
                
                for(var i:int=0; i<listaProdutos.length;i++){
                    if(listaProdutos[i].products_quantity!=null
                    && listaProdutos[i].products_quantity!="" 
                    && listaProdutos[i].products_price!=null
                    && listaProdutos[i].products_price!=""){
                     
                     produtoXML=XML(listaProdutos[i]);
                     total = total+ ( uint(produtoXML.products_quantity) * uint(produtoXML.products_price));
                    }
                }
                var nf:NumberFormatter = new NumberFormatter();
                nf.precision=2;
                valorTotal = nf.format(total); 
                try{
                    total1.text="Total da compra: R$ " + valorTotal;
                    total2.text="Total da compra: R$ " + valorTotal;
                }
                catch(err:Error){}
                
            }
            private var gravadoImagens:Boolean=false;
            private function receverData(event:ResultEvent){
                var retorno:XML;
                var params:Object = new Object();
                var retornoHTML:String;
                accessRemote.url=URLREMOTA;
                if(action=="ignore"){
                }
                else if(action=="login" || action=="register"){
                    retorno=XML(event.result);
                    if(retorno.data[0].attribute("return")!="true"){
                        Alert.show(retorno.data[0].data[0].toString())
                    }
                    else{
                        action="ADDPRODUCT";
                        receverData(event);
                    }
                }
                else if(action=="ADDPRODUCT"){
                    retorno=XML(event.result);
                    if(listaProdutos.length>=1){

                        var produtoXML:XML=XML(listaProdutos[0]);
                        params.cmd='product_add_to_cart';
                        params.products_id='28';
                        params.qty=produtoXML.products_quantity.toString();
                        params.notify="";
                        
                        var colorComp:ColorPicker =CaliopesFinal(Object(parent).application).tshirtColorPicker;
                        var cores:ArrayCollection = CaliopesFinal(Object(parent).application).colorArrayCollection;
                        //params.attributes = new Array(2);
                        for(var i:int=0; i<cores.length;i++){
                            var option:XML = XML(cores[i]);
                            if(option.toString()==colorComp.value){
                                params.cor=option.attribute("value").toString();                                
                            }    
                        }
                        params.size=produtoXML.size.toString();
                        accessRemote.url="http://www.4e-commerce.com.br/caliopes/crex_read.php?cmd=product_add_to_cart&products_id=28&qty="+params.qty+"&attributes[1]="+params.cor+"&attributes[2]="+params.size;                    
                        accessRemote.send();
                        listaProdutos.removeItemAt(0);
                    }
                    else{
                         CaliopesFinal(Object(parent).application).pixArtBack.fileName="V.jpg";
                        CaliopesFinal(Object(parent).application).pixArtBack.fnFinalize();
                        
                         CaliopesFinal(Object(parent).application).pixArtFront.fileName="F.jpg";
                        CaliopesFinal(Object(parent).application).pixArtFront.fnFinalize();
                        params.cmd='checkout_confirmation';
                        action="SHIPPING";
                        accessRemote.send(params);
                      }
                }
                else if(action=="SHIPPING"){
                    accessRemoteNotHTML.url= "http://www.4e-commerce.com.br/caliopes/checkout_shipping.php";
                    params.shipping="flat_flat";
                    params.action="process";
                    params.comments="N/A"
                    action="PAYMENT";
                    accessRemoteNotHTML.send(params);                         
                }
                else if(action=="PAYMENT"){
                    retornoHTML= event.result.toString();
                    accessRemoteNotHTML.url= "http://www.4e-commerce.com.br/caliopes/checkout_confirmation.php";                    
                    params.payment="cod";
                    params.TipoFrete="EN";
                    action="CONFIRM";
                    accessRemoteNotHTML.send(params);                         
                }
                else if(action=="CONFIRM"){
                    retornoHTML = event.result.toString();
                    accessRemoteNotHTML.url= "http://www.4e-commerce.com.br/caliopes/checkout_process.php";
                    action="FINISH";
                    accessRemoteNotHTML.send();                  
                }
                else if(action=="FINISH"){
                    retornoHTML = event.result.toString();
                    accessRemoteNotHTML.url= "http://www.4e-commerce.com.br/caliopes/checkout_success.php";
                    action="logout";
                    accessRemoteNotHTML.send();                  
                }
                else if(action=="logout"){
                    retornoHTML = event.result.toString();
                    params.cmd='user_logout';
                    action="ignore";                        
                    accessRemote.send(params);
                    finalizar();
                }
                
            } 

            private function logar():void{
                var params:Object = new Object();
                params.cmd='user_login';
                params.action='process';
                params.email_address=email.text;
                params.password=senha.text;
                action="login";
                accessRemote.send(params);
            }
            
            private function cadastrar():void{

                if(senhaDesejada.text!=repetirSenha.text) {
                    Alert.show("As senhas digitadas não conferem.");
                }
                else{
                    var params:Object = new Object();
                    params.cmd='user_register';
                    params.action='process';
                    params.gender="m";
                    params.firstname=nome.text;
                    params.lastname=sobrenome.text;
                    params.dob=dataNascimento.text;
                    params.email_address=emailRegister.text;
                    params.company=""
                    params.street_address=endereco.text;
                    params.suburb="";
                    params.postcode=cep.text;
                    params.city=cidade.text;
                    params.state=uf.text;
                    params.zone_id="";
                    params.country="30"
                    params.telephone=telefone.text;
                    params.fax=telefone.text;
                    params.password=senhaDesejada.text;
                    params.confirmation=repetirSenha.text;                
    
                    action="register";
                    accessRemote.send(params);
                }
            }
            

         ]]>
     </mx:Script>
    <mx:HTTPService id="accessRemote" url="{URLREMOTA}" method="POST" showBusyCursor="true" resultFormat="e4x" fault="erroHTTPService(event)" result="receverData(event)"/>
    <mx:HTTPService id="accessRemoteNotHTML" url="{URLREMOTA}" method="POST" showBusyCursor="true" resultFormat="text" fault="erroHTTPService(event)" result="receverData(event)"/>
    <mx:HTTPService id="getProductInfo" url="{URLREMOTA}" method="POST" showBusyCursor="true" resultFormat="e4x"
        result="carregarProdutoInfo(event)" fault="erroHTTPService(event)" >
        <mx:request xmlns="">
            <cmd>get_product</cmd>
            <pid>28</pid>
        </mx:request>
    </mx:HTTPService> 
    

        
        
    
    
    <mx:Dissolve id="bodyDissolve" duration="2000"/>
    <mx:Accordion width="499" height="460" y="10" x="7" id="accordion1">
        <mx:Canvas label="Detalhes do produto" width="100%" height="100%">
            <mx:Label x="10" y="389" text="Total da compra: R$ {valorTotal}" id="total1"/>
            <mx:Button x="419" y="380" label="Finalizar" click="logar()" id="button0"/>
            <mx:HRule x="10" y="256" width="477"/>
            <mx:VBox x="10" y="287" width="477" id="vbox0">
                <mx:HBox x="10" y="96" width="100%" id="hbox5">
                    <mx:Label text="e-mail" width="100" id="label3"/>
                    <mx:TextInput width="100%" id="email"/>
                </mx:HBox>
                <mx:HBox width="100%">
                    <mx:Label text="senha" width="100"/>
                    <mx:TextInput width="100%" id="senha" displayAsPassword="true"/>
                </mx:HBox>
                <mx:HBox width="100%" horizontalAlign="right">
                    <mx:Label text="Selecione forma de pagamento" width="195"/>
                    <mx:PopUpButton enabled="true" id="popB" creationComplete="initCard();" width="121" labelPlacement="right"/>
                </mx:HBox>
            </mx:VBox>
            <mx:Label text="Se você já é usuário preencha seus dados para finalizar a compra" width="393" height="18" y="261" x="10" color="#FF0000"/>
            <mx:Label text="Ao clicar o botão &quot;Finalizar&quot; será redirecionado a aprovar pagamento" width="393" height="18" y="365" x="10" color="#FF0000"/>
            <mx:List x="10" y="10" width="477" height="208" dataProvider="{listaProdutos}" itemRenderer="components.itemProduto" id="produtos" selectable="true" variableRowHeight="false" showInAutomationHierarchy="true" showScrollTips="false" change="recalcTotal()" focusEnabled="true" creationComplete="recalcTotal()" focusIn="recalcTotal()" focusOut="recalcTotal()" itemFocusIn="recalcTotal()" itemFocusOut="recalcTotal()" itemEditEnd="recalcTotal()" itemEditBeginning="recalcTotal()" itemEditBegin="recalcTotal()" itemClick="recalcTotal()" itemRollOut="recalcTotal()"></mx:List>
            <mx:Button x="419" y="226" label="Mais um" click="adicionarProduto()"/>
            <mx:Button x="10" y="226" label="Remover produto" click="removerProduto()"/>
        </mx:Canvas>
        <mx:Canvas label="Novos usuários" width="100%" height="100%">
            <mx:VBox x="10" y="10" width="477" id="vbox1" height="321">
                <mx:HBox width="100%" id="hbox1">
                    <mx:Label text="Nome" width="107"/>
                    <mx:TextInput width="100%" id="nome"/>
                </mx:HBox>
                <mx:HBox width="100%" id="hbox0">
                    <mx:Label text="Sobrenome" width="107"/>
                    <mx:TextInput width="100%" id="sobrenome"/>
                </mx:HBox>
                <mx:HBox width="100%">
                    <mx:Label text="CPF" width="107"/>
                    <mx:TextInput width="100%" id="cpf"/>
                </mx:HBox>
                <mx:HBox width="100%" id="hbox2">
                    <mx:Label text="Datra nascimento" width="107"/>
                    <mx:TextInput width="100%" id="dataNascimento"/>
                </mx:HBox>
                <mx:HBox x="10" y="96" width="100%" id="hbox4">
                    <mx:Label text="e-mail" width="107" id="label1"/>
                    <mx:TextInput width="100%" id="emailRegister"/>
                </mx:HBox>
                <mx:HBox width="100%">
                    <mx:Label text="Telefone" width="107"/>
                    <mx:TextInput width="100%" id="telefone"/>
                </mx:HBox>
                <mx:HBox x="10" y="126" width="100%">
                    <mx:Label text="Endereco" width="107"/>
                    <mx:TextInput width="100%" id="endereco"/>
                </mx:HBox>
                <mx:HBox x="10" y="156" width="100%">
                    <mx:Label text="CEP" width="107"/>
                    <mx:TextInput width="100%" id="cep"/>
                </mx:HBox>
                
                <mx:HBox x="10" y="212" width="475">
                    <mx:Label text="Cidade" width="107"/>
                    <mx:TextInput width="50%" id="cidade"/>
                    <mx:Label text="UF" width="46"/>
                    <mx:TextInput width="15%" id="uf"/>
                </mx:HBox>
                <mx:HBox width="100%">
                    <mx:Label text="Senha desejada" width="107"/>
                    <mx:TextInput width="100%" displayAsPassword="true" id="senhaDesejada"/>
                </mx:HBox>
                <mx:HBox width="100%">
                    <mx:Label text="Repetir senha" width="107"/>
                    <mx:TextInput width="100%" displayAsPassword="true" id="repetirSenha"/>
                </mx:HBox>
            </mx:VBox>
            <mx:Label x="10" y="389" text="Total da compra: R$ {valorTotal}" id="total2"/>
            <mx:Button x="419" y="385" label="Finalizar" click="cadastrar()" id="button1"/>
            <mx:Label text="Ao clicar o botão &quot;Finalizar&quot; será redirecionado a aprovar pagamento" width="393" height="18" y="363" x="10" color="#FF0000"/>
            <mx:HBox width="477" horizontalAlign="right" y="339" x="10">
                <mx:Label text="Selecione forma de pagamento" width="195"/>
                <mx:PopUpButton enabled="true" id="popB0" creationComplete="initCard();" width="121" labelPlacement="right"/>
            </mx:HBox>
        </mx:Canvas>
    </mx:Accordion>
    
    <mx:transitions>
        <mx:Transition id="myTransition1"
            fromState="*" toState="*">
            <mx:WipeRight duration="500" target="{vbox1}"/>
        </mx:Transition>
    </mx:transitions>
</mx:TitleWindow>