<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:flextras="http://www.flextras.com/mxml"
     creationComplete="init()"  viewSourceURL="srcview/index.html" xmlns:shared="com.flextras.shared.*">

    <mx:Script>
        <![CDATA[
            import com.flextras.dbFilter.flex.SampleUserVO;

            import mx.collections.ArrayCollection;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;

            [Bindable]public var dataProvider1 : ArrayCollection = new ArrayCollection([
               {FirstName:"Clark", LastName:'Kent', Email:'clark@dailyplanet.com', data:0},
               {FirstName:"James", LastName:'Olsen', Email:'jolsen@dailyplanet.com', data:0},
               {FirstName:"Louis", LastName:'Lane', Email:'llane@dailyplanet.com', data:0},
               {FirstName:"Chloe", LastName:'Sullivan', Email:'chloe@isisfoundation.com', data:0},
               {FirstName:"Tess", LastName:'Mercer', Email:'tmercer@luthorcorp.com', data:0},
               {FirstName:"Lex", LastName:'Luthor', Email:'lluthor@luthorcorp.com', data:0},
               {FirstName:"Oliver", LastName:'Queen', Email:'oqueen@queenindustries.com', data:0},
               {FirstName:"Lionel", LastName:'Luther', Email:'lluther@luthorcorp.com', data:0},
              ]);
            
            
            [Bindable]public var dataProvider2 : ArrayCollection = new ArrayCollection([
               {FirstName:"Clark", LastName:'Kent', Email:'clark@dailyplanet.com', data:0},
               {FirstName:"James", LastName:'Olsen', Email:'jolsen@dailyplanet.com', data:0},
               {FirstName:"Louis", LastName:'Lane', Email:'llane@dailyplanet.com', data:0},
               {FirstName:"Chloe", LastName:'Sullivan', Email:'chloe@isisfoundation.com', data:0},
               {FirstName:"Tess", LastName:'Mercer', Email:'tmercer@luthorcorp.com', data:0},
               {FirstName:"Lex", LastName:'Luthor', Email:'lluthor@luthorcorp.com', data:0},
               {FirstName:"Oliver", LastName:'Queen', Email:'oqueen@queenindustries.com', data:0},
               {FirstName:"Lionel", LastName:'Luther', Email:'lluther@luthorcorp.com', data:0},
              ]);
            
            
            [Bindable]public var dataProvider3 : ArrayCollection = new ArrayCollection([
               {FirstName:"Clark", LastName:'Kent', Email:'clark@dailyplanet.com', data:0},
               {FirstName:"James", LastName:'Olsen', Email:'jolsen@dailyplanet.com', data:0},
               {FirstName:"Louis", LastName:'Lane', Email:'llane@dailyplanet.com', data:0},
               {FirstName:"Chloe", LastName:'Sullivan', Email:'chloe@isisfoundation.com', data:0},
               {FirstName:"Tess", LastName:'Mercer', Email:'tmercer@luthorcorp.com', data:0},
               {FirstName:"Lex", LastName:'Luthor', Email:'lluthor@luthorcorp.com', data:0},
               {FirstName:"Oliver", LastName:'Queen', Email:'oqueen@queenindustries.com', data:0},
               {FirstName:"Lionel", LastName:'Luther', Email:'lluther@luthorcorp.com', data:0},
              ]);
            
            [Bindable]public var dataProvider4 : ArrayCollection = new ArrayCollection([
               {FirstName:"Clark", LastName:'Kent', Email:'clark@dailyplanet.com', data:0},
               {FirstName:"James", LastName:'Olsen', Email:'jolsen@dailyplanet.com', data:0},
               {FirstName:"Louis", LastName:'Lane', Email:'llane@dailyplanet.com', data:0},
               {FirstName:"Chloe", LastName:'Sullivan', Email:'chloe@isisfoundation.com', data:0},
               {FirstName:"Tess", LastName:'Mercer', Email:'tmercer@luthorcorp.com', data:0},
               {FirstName:"Lex", LastName:'Luthor', Email:'lluthor@luthorcorp.com', data:0},
               {FirstName:"Oliver", LastName:'Queen', Email:'oqueen@queenindustries.com', data:0},
               {FirstName:"Lionel", LastName:'Luther', Email:'lluther@luthorcorp.com', data:0},
              ]);

            [Bindable]public var dataProvider5 : ArrayCollection = new ArrayCollection([
               {FirstName:"Clark", LastName:'Kent', Email:'clark@dailyplanet.com', data:0},
               {FirstName:"James", LastName:'Olsen', Email:'jolsen@dailyplanet.com', data:0},
               {FirstName:"Louis", LastName:'Lane', Email:'llane@dailyplanet.com', data:0},
               {FirstName:"Chloe", LastName:'Sullivan', Email:'chloe@isisfoundation.com', data:0},
               {FirstName:"Tess", LastName:'Mercer', Email:'tmercer@luthorcorp.com', data:0},
               {FirstName:"Lex", LastName:'Luthor', Email:'lluthor@luthorcorp.com', data:0},
               {FirstName:"Oliver", LastName:'Queen', Email:'oqueen@queenindustries.com', data:0},
               {FirstName:"Lionel", LastName:'Luther', Email:'lluther@luthorcorp.com', data:0},
              ]);

            [Bindable]public var dataProvider6 : ArrayCollection = new ArrayCollection([
               {FirstName:"Clark", LastName:'Kent', Email:'clark@dailyplanet.com', data:0},
               {FirstName:"James", LastName:'Olsen', Email:'jolsen@dailyplanet.com', data:0},
               {FirstName:"Louis", LastName:'Lane', Email:'llane@dailyplanet.com', data:0},
               {FirstName:"Chloe", LastName:'Sullivan', Email:'chloe@isisfoundation.com', data:0},
               {FirstName:"Tess", LastName:'Mercer', Email:'tmercer@luthorcorp.com', data:0},
               {FirstName:"Lex", LastName:'Luthor', Email:'lluthor@luthorcorp.com', data:0},
               {FirstName:"Oliver", LastName:'Queen', Email:'oqueen@queenindustries.com', data:0},
               {FirstName:"Lionel", LastName:'Luther', Email:'lluther@luthorcorp.com', data:0},
              ]);
    
            public function init():void{
                populateInstructions();
            }
    
            public function onResult(e:ResultEvent):void{
                dataProvider1 = new ArrayCollection(e.result as Array);
                dataProvider2 = new ArrayCollection(e.result as Array);
                dataProvider3 = new ArrayCollection(e.result as Array);
                trace(e);
            }
            
            public function onFault(e:FaultEvent):void{
                trace(e);
            }
            
            protected function fieldFilter1 ( item:Object):Boolean{
                
                var user : SampleUserVO = new SampleUserVO();
                user.FirstName = item['FirstName'];
                user.LastName = item['LastName'];
                user.Email = item['Email'];
                if((user.FirstName.toLowerCase().search(autoCompleteComboBox1.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.LastName.toLowerCase().search(autoCompleteComboBox1.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.Email.toLowerCase().search(autoCompleteComboBox1.typeAheadTextValue.toLowerCase()) >= 0)){
                    return true

                }

                return false;
            }
            
            public function labelFunction1(item:Object):String{
                var user : SampleUserVO = new SampleUserVO();
                user.FirstName = item['FirstName'];
                user.LastName = item['LastName'];
                user.Email = item['Email'];
                
                return user.toString() ;
                
            }

            protected function fieldFilter2 ( item:Object):Boolean{
                
                var user : SampleUserVO = new SampleUserVO();
                user.FirstName = item['FirstName'];
                user.LastName = item['LastName'];
                user.Email = item['Email'];
                if((user.FirstName.toLowerCase().search(autoCompleteComboBox2.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.LastName.toLowerCase().search(autoCompleteComboBox2.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.Email.toLowerCase().search(autoCompleteComboBox2.typeAheadTextValue.toLowerCase()) >= 0)){
                    return true
                }

                return false;
            }

            protected function fieldFilter3 ( item:Object):Boolean{
                
                var user : SampleUserVO = new SampleUserVO();
                user.FirstName = item['FirstName'];
                user.LastName = item['LastName'];
                user.Email = item['Email'];
                if((user.FirstName.toLowerCase().search(autoCompleteComboBox3.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.LastName.toLowerCase().search(autoCompleteComboBox3.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.Email.toLowerCase().search(autoCompleteComboBox3.typeAheadTextValue.toLowerCase()) >= 0)){
                    return true
                }

                return false;
            }

            protected function fieldFilter4 ( item:Object):Boolean{
                
                var user : SampleUserVO = new SampleUserVO();
                user.FirstName = item['FirstName'];
                user.LastName = item['LastName'];
                user.Email = item['Email'];
                if((user.FirstName.toLowerCase().search(autoCompleteComboBox4.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.LastName.toLowerCase().search(autoCompleteComboBox4.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.Email.toLowerCase().search(autoCompleteComboBox4.typeAheadTextValue.toLowerCase()) >= 0)){
                    return true
                }

                return false;
            }

            protected function fieldFilter5 ( item:Object):Boolean{
                
                var user : SampleUserVO = new SampleUserVO();
                user.FirstName = item['FirstName'];
                user.LastName = item['LastName'];
                user.Email = item['Email'];
                if((user.FirstName.toLowerCase().search(autoCompleteComboBox5.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.LastName.toLowerCase().search(autoCompleteComboBox5.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.Email.toLowerCase().search(autoCompleteComboBox5.typeAheadTextValue.toLowerCase()) >= 0)){
                    return true
                }

                return false;
            }

            protected function fieldFilter6 ( item:Object):Boolean{
                
                var user : SampleUserVO = new SampleUserVO();
                user.FirstName = item['FirstName'];
                user.LastName = item['LastName'];
                user.Email = item['Email'];
                if((user.FirstName.toLowerCase().search(autoCompleteComboBox6.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.LastName.toLowerCase().search(autoCompleteComboBox6.typeAheadTextValue.toLowerCase()) >= 0) || 
                    (user.Email.toLowerCase().search(autoCompleteComboBox6.typeAheadTextValue.toLowerCase()) >= 0)){
                    return true
                }

                return false;
            }
            public function populateInstructions():void{
                var instructionsText : String = '';
                instructionsText += 'This is a Sample AutoComplete Filter Function for the Flextra\'s AutoCompleteComboBox component.\r\n';
                instructionsText += 'The AutoCompleteComboBox is an advanced ComboBox that provides AutoComplete, or AutoSuggest, functionality.  ' ; 
                instructionsText += 'It also provides a selectedValue, multiple character type ahead, truncateToFit and will expand the drop down to fit all the content.  ' ; 
                instructionsText += 'It works on both Flex 3 and Flex 4.  ' ; 

                about.instructionText = instructionsText;
                
            }
        ]]>
    </mx:Script>

    <mx:RemoteObject id="getUsersService" destination="ColdFusion" result="onResult(event)" fault="onFault(event)" 
        source="ComponentDevelopment.code.AdvancedComboBox.Sample.trunk.src.com.flextras.dbFilter.cfc.SampleService" >
        
    </mx:RemoteObject>


    <mx:TabNavigator width="100%" height="100%">
        
        <!-- 
            About
        -->
        <shared:About width="100%" height="100%" label="About" verticalAlign="middle" horizontalAlign="center" id="about"
              nonInteractiveLink="http://experts.na3.acrobat.com/p72088946/" nonInteractiveLinkText="Connect Presentation About This Sample">
        </shared:About>
        <mx:Form label="Application">
            <mx:FormItem label="Custom Label">
                <flextras:AutoCompleteComboBox id="autoCompleteComboBox1" 
                    dataProvider="{dataProvider1}" 
                    autoCompleteEnabled="true" 
                    itemRenderer="com.flextras.itemRenderer.AutoCompleteItemRenderer"
                    width="200"
                     autoCompleteFilterFunction="fieldFilter1" labelFunction="labelFunction1"
                />
                
            </mx:FormItem>
            <mx:FormItem label="Bold and Underline">
                <flextras:AutoCompleteComboBox id="autoCompleteComboBox2" 
                    dataProvider="{dataProvider2}" 
                    autoCompleteEnabled="true" 
                    itemRenderer="com.flextras.itemRenderer.AutoCompleteItemRendererMod"
                    width="200"
                     autoCompleteFilterFunction="fieldFilter2" labelFunction="labelFunction1"
                />
                
            </mx:FormItem>
            <mx:FormItem label="Colored Purple and Underlined">
                <flextras:AutoCompleteComboBox id="autoCompleteComboBox3" 
                    dataProvider="{dataProvider3}" 
                    autoCompleteEnabled="true" 
                    itemRenderer="com.flextras.itemRenderer.AutoCompleteItemRendererMod2"
                    width="200"
                     autoCompleteFilterFunction="fieldFilter3" labelFunction="labelFunction1"
                />
            </mx:FormItem>
            <mx:FormItem label="Colored Green and Underlined">
                <flextras:AutoCompleteComboBox id="autoCompleteComboBox4" 
                    dataProvider="{dataProvider4}" 
                    autoCompleteEnabled="true" 
                    itemRenderer="com.flextras.itemRenderer.AutoCompleteItemRendererMod3"
                    width="200"
                     autoCompleteFilterFunction="fieldFilter4" labelFunction="labelFunction1"
                />
                
            </mx:FormItem>

        <mx:FormItem label="Highlight Multiple Instances">
            <flextras:AutoCompleteComboBox id="autoCompleteComboBox5" 
                dataProvider="{dataProvider5}" 
                autoCompleteEnabled="true" 
                itemRenderer="com.flextras.itemRenderer.AutoCompleteItemRendererMultipleHighlight"
                width="200"
                autoCompleteFilterFunction="fieldFilter5"
            />
            
        </mx:FormItem>
        <mx:FormItem label="Highlight Multiple and Underline">
            <flextras:AutoCompleteComboBox id="autoCompleteComboBox6" 
                dataProvider="{dataProvider6}" 
                autoCompleteEnabled="true" 
                itemRenderer="com.flextras.itemRenderer.AutoCompleteItemRendererMod4"
                width="200"
                autoCompleteFilterFunction="fieldFilter6"
            />
            
            
        </mx:FormItem>
    </mx:Form>

    </mx:TabNavigator>
</mx:Application>