<?xml version="1.0" encoding="utf-8"?>
<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" title="Configure Google Docs" width="266" height="140">
    <mx:Script>
        <![CDATA[
        
            import mx.controls.Alert;
            import mx.core.Application;
            import mx.managers.PopUpManager;
            import mx.events.CloseEvent;
                        
            public static function open():void {
                var window:configure = new configure();
                   window.open();
            }
            
            private function apply():void{
                var e:String = email.text;
                var p:String = password.text;
                this.enabled = false;
                authenticateWithGoogle(e, p);
            }
            
            public function authenticateWithGoogle(email:String, pass:String):void{
                var loader:URLLoader = new URLLoader();
                var request:URLRequest = new URLRequest("https://www.google.com/accounts/ClientLogin");
                request.method = URLRequestMethod.POST;
                var params:URLVariables = new URLVariables();
                params.accountType = 'HOSTED_OR_GOOGLE';
                params.Email = email;
                params.Passwd = pass;
                params.service = 'writely';
                params.source = 'vure-gdoc-v1';
                request.data = params;
                loader.addEventListener(Event.COMPLETE, completeHandler);
                loader.addEventListener(IOErrorEvent.IO_ERROR, errorhandler);
                loader.load(request);
            }
            
            private function completeHandler(e:Event):void{
                var data:String = e.target.data;
                var pars:Array = data.split("\n");
                for(var i:int = 0; i < pars.length; i++ ){
                    var a:Number = pars[i].indexOf('Auth=');
                    if (a != -1){
                        Application.application.so.data.auth = pars[i].substr(5, pars[i].length);
                    }
                }
                Application.application.so.flush();
                this.close();
                this.exit()    
            }
            
            private function errorhandler(e:IOErrorEvent):void{
                Alert.show('Invalid credentials', 'Error', 4, this);
                this.enabled = true;
            }
            
            private function exit():void{
                NativeApplication.nativeApplication.exit();
            }
        ]]>
    </mx:Script>
    <mx:Form id="form">
        <mx:FormItem label="Email">
            <mx:TextInput id="email"/>
        </mx:FormItem>
        <mx:FormItem label="Password">
            <mx:TextInput id="password" displayAsPassword="true"/>
        </mx:FormItem>
    </mx:Form>
    <mx:HBox width="100%" paddingLeft="10" paddingRight="10">
        <mx:Button label="Cancel" click="exit()" /><mx:Spacer width="100%"/><mx:Button label="Apply" click="apply()"/>
    </mx:HBox>
</mx:Window>