<?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.
  
-->

<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - SWF testing">
	
	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
	
<view layout="axis:x;spacing:2">
	<button name="_btn">
		<handler name="onclick">
			canvas._swfview.setAttribute('frame',canvas._swfview.frame+1);
			//var mc = canvas._swfview.getDisplayObject();
			//Debug.write(canvas._swfview);
			//Debug.write(mc);
			//mc._frame = 4;
			//mc.play();
		</handler>
	</button>
</view>
	
<view name="_swfview" y="20">
	<handler name="oninit">
		<![CDATA[
			this.setSource("test.swf");
		]]>
	</handler>
</view>
  
    
</canvas>
