<?xml version="1.0" encoding="utf-8"?>
<!--

  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:Application layout="vertical" backgroundGradientColors="[0x000000,0x323232]" verticalAlign="middle" horizontalAlign="center"
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:sides="view.sides.*" 
	xmlns:controls="com.adobe.ac.controls.*">
	
	<mx:HSlider 
		id="widthSlider" 
		minimum="0" maximum="100" value="40" 
		liveDragging="true" change="viewStack.tilt( widthSlider.value );"/>

	<controls:ViewStack3D id="viewStack" creationPolicy="all">
	
		<sides:Login 
			id="login" />	
		<sides:QuickSearch 
			id="quickSearch" />		
		<sides:Search 
			id="search" />
		<sides:ProductList 
			id="productList" />
		<sides:Registration 
			id="registration" />
		<sides:Calendar 
			id="calendar" />

	</controls:ViewStack3D>

</mx:Application>
