<?xml version="1.0" encoding="iso-8859-1"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.

-->
<mx:VBox  width="100%" height="100%"  xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
	<![CDATA[

	import mx.containers.* 
 	import mx.controls.*

	public function updateResults():void
	{

		trace("change event")
	}

 
 
 
	]]>
	</mx:Script>
 <mx:TabNavigator id="tabn"  width="90%" height="90%"   change="updateResults()"  creationPolicy="all"   >
             <mx:VBox label="Panel 1" id="vbox1">
                <mx:Label text="TabNavigator container panel 1"/>
            </mx:VBox>

            <mx:VBox label="Panel 2" id="vbox2">
                <mx:Label text="TabNavigator container panel 2"/>
            </mx:VBox>
            <mx:VBox label="Panel 3" id="mvbox">
                <mx:Label text="TabNavigator container panel 3"/>
            </mx:VBox>
        </mx:TabNavigator>
  </mx:VBox>