<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="450" height="350" title="Nouveau contact">

    <mx:Script>
        <![CDATA[
            import DB.Database;
            import mx.controls.Alert;
            import mx.managers.DragManager;
            import mx.graphics.codec.JPEGEncoder;
            import mx.validators.Validator;
            import mx.managers.PopUpManager;
            
            import BO.Contact;
            
            private var editedContact:Contact;
            
            public function closeWindow():void
            {
                PopUpManager.removePopUp(this);
            }
            
            public function validateForm():void
            {
                var validators:Array = Validator.validateAll([validMail, validPseudo, validDate]);
    
                if(!validators.length)
                {
                    // Formulaire valide
                    
                    var Edition:Boolean = editedContact != null;
                    
                    if(editedContact == null)
                    {
                        editedContact = new Contact();
                    }
                    
                    editedContact.Pseudo = inputPseudo.text;
                    editedContact.Mail = inputMail.text;
                    editedContact.DateNaissance = inputDate.selectedDate;
                    editedContact.Avatar = imageToByteArray(inputAvatar);
                    
                    var result:Boolean = false;
                    
                    if(!Edition)
                    {
                        result = Database.Instance.insertContact(editedContact);
                    }
                    else
                    {
                        result = Database.Instance.updateContact(editedContact);
                    }
                    
                    if(result)
                    {
                        closeWindow();
                    }
                    else
                    {
                        Alert.show("Erreur lors de l'enregistrement\n\n" + Database.Instance.LastErrorMessage, "Tutoriel SQLite developpez");
                    }

                }
            }
            
            private function imageToByteArray(img:Image):ByteArray
            {
                var bmd:BitmapData = new BitmapData(img.width, img.height, true);
                bmd.draw(img, new Matrix());
                var bm:Bitmap = new Bitmap(bmd);
                var jpg:JPEGEncoder = new JPEGEncoder();
                return jpg.encode(bmd);
            }
            
            private function selectImage():void
            {
                var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png;*.swf;");
                var imageFile:File = new File();
                imageFile.browseForOpen("Selectionnez une image", [imagesFilter]);
                imageFile.addEventListener(Event.SELECT, imageSelected);
               }
               
               private function imageSelected(pEvent:Event):void
               {
                   inputAvatar.source = (pEvent.currentTarget as File).url;
               }
               
            public function initEdition(pContact:Contact):void
            {
                editedContact = pContact;
                
                inputPseudo.text = pContact.Pseudo;
                inputMail.text = pContact.Mail;
                inputDate.selectedDate = pContact.DateNaissance;
                inputAvatar.source = pContact.Avatar;
                
                this.title = "Modification d'un contact";
            }
        ]]>
    </mx:Script>
    
    <mx:StringValidator id="validPseudo" source="{inputPseudo}" property="text" trigger="{btnValidate}" triggerEvent="click" minLength="2" maxLength="20"
                        tooShortError="2 caractères minimum !" tooLongError="Pseudonyme trop long !" requiredFieldError="Veuillez indiquer un Pseudonyme." />
    
    <mx:EmailValidator id="validMail" source="{inputMail}" property="text" trigger="{btnValidate}" triggerEvent="click" 
                        requiredFieldError="Veuillez indiquer une adresse mail."
                        missingAtSignError="Le charactere @ est manquant dans votre adresse email."
                        missingPeriodInDomainError="Le domaine est manquant dans votre adresse email."
                        missingUsernameError="Le nom d'utilisateur est manquant dans votre adresse email." />
    
    <mx:DateValidator id="validDate" source="{inputDate}" property="text" trigger="{btnValidate}" triggerEvent="click" allowedFormatChars="/" inputFormat="DD/MM/YYYY" requiredFieldError="Entrez la date de naissance" />
    
    <mx:Form width="100%">
    
        <mx:FormItem label="Pseudo">
            <mx:TextInput id="inputPseudo" />
        </mx:FormItem>
    
        <mx:FormItem label="Adresse mail">
            <mx:TextInput id="inputMail" />
        </mx:FormItem>
    
        <mx:FormItem label="Date de naissance">
            <mx:DateField id="inputDate" editable="true" formatString="DD/MM/YYYY" />
        </mx:FormItem>

        <mx:FormItem label="Avatar">
            <mx:HBox id="boxAvatar">
                <mx:Canvas borderThickness="2" borderStyle="solid">
                    <mx:Image id="inputAvatar" scaleContent="{ckScale.selected}" maintainAspectRatio="true" width="170" height="130" />
                </mx:Canvas>
                <mx:VBox>
                    <mx:Button label="Parcourir" click="selectImage()" />
                    <mx:CheckBox id="ckScale" selected="true" label="Ajuster" />
                </mx:VBox>
            </mx:HBox>
        </mx:FormItem>
        
    </mx:Form>
        
        <mx:HBox width="100%" horizontalAlign="center">
            
            <mx:Spacer width="100%" />
            <mx:Button label="Annuler" click="closeWindow()" />
            
            <mx:Spacer width="30%" />
            
            <mx:Button id="btnValidate" label="Valider" click="validateForm()" />
            <mx:Spacer width="100%" />

        </mx:HBox>
    
</mx:TitleWindow>