/**
 * Copyright 2007 Luke Pillow
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
package com.orsomethinglikethat.flex.filemaker
{
    import mx.utils.Base64Encoder;
    import flash.net.URLRequest;
    import com.orsomethinglikethat.flex.filemaker.command.FindAnyCommand;
    import flash.net.URLRequestHeader;
    import flash.net.URLRequestMethod;
    import mx.controls.Alert;
    import com.orsomethinglikethat.flex.filemaker.command.FindAllCommand;
    import com.orsomethinglikethat.flex.filemaker.command.FindCommand;
    
    /**
     * Base FileMaker class
     */
    public class FileMaker
    {
        public var serverUrl:String;
        public var database:String;
        public var credentials:String;
        
        public function FileMaker( serverUrl:String, database:String, username:String, password:String )
        {
            super();
            
            this.serverUrl = serverUrl;
            this.database = database;
            this.credentials = this.buildCredentials( username, password );
        }
        
        private function buildCredentials( username:String, password:String ):String
        {
            var encoder:Base64Encoder = new Base64Encoder();
            encoder.encode( username + ":" + password );
            
            return encoder.flush();
        }
        
        public function newFindCommand( layout:String ):FindCommand
        {
            return new FindCommand( this, layout );
        }
        
        public function newFindAnyCommand( layout:String ):FindAnyCommand
        {
            return new FindAnyCommand( this, layout );
        }
        
        public function newFindAllCommand( layout:String ):FindAllCommand
        {
            return new FindAllCommand( this, layout );
        }
    }
}