package {

	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.text.*;
	import flash.system.*;

	public class ApiExample extends MovieClip {
		//cmp的api接口引用
		private var api:Object;

		private var tw:Number;
		private var th:Number;
		
		private var msg:TextField;
		public function ApiExample() {
			msg = new TextField();
			msg.background = true;
			msg.multiline = true;
			msg.wordWrap = true;
			msg.backgroundColor = 0xffffff;
			msg.alpha = 0.5;
			msg.width = 400;
			msg.height = 300;
			addChild(msg);
			
			Security.allowDomain("*");
			root.loaderInfo.sharedEvents.addEventListener('api', apiHandler);
			root.loaderInfo.sharedEvents.addEventListener('api_remove',removeHandler);
		}
		
		//用于忽略非预期的宽高调整,要调整宽高,请侦听resize或video_resize事件
		override public function set width(v:Number):void {
		}
		override public function set height(v:Number):void {
		}
		private function removeHandler(e):void {
			//用于回收内存
		}

		private function apiHandler(e):void {
			//取得cmp的api对象和侦听key,包含2个属性{api,key}
			var apikey:Object = e.data;
			//如果没有取到则直接返回
			if (! apikey) {
				return;
			}
			api = apikey.api;
			//模块状态改变
			api.addEventListener(apikey.key, "model_state", stateHandler);
			//模块开始播放
			api.addEventListener(apikey.key, "model_start", startHandler);
			//播放器大小改变时
			api.addEventListener(apikey.key, 'resize', resizeHandler);
			
			
			//初始化调用
			stateHandler();
			resizeHandler();
			
			
			//cookie
			//api.cookie("mycookie_name", "123");
			//var str:String = api.cookie("mycookie_name");
			//output(str);
			
			
			
			//5个窗口引用
			/*
			api.win_list["console"]
			api.win_list["media"]
			api.win_list["list"]
			api.win_list["lrc"]
			api.win_list["option"]
			*/
			
			//列表树引用
			//api.win_list["list"].tree
			
			//列表搜索引用
			//api.win_list["list"].search
			
			//视频和频谱对象引用
			//api.win_list["media"].video

			
			output("api example loaded");
		}

		private function resizeHandler(e:Event = null):void {
			//获取cmp的宽高
			tw = api.config.width;
			th = api.config.height;
		}
		private function stateHandler(e:Event = null):void {
			var state:String = api.config.state;
			//output("model state change: " + state);
			switch (api.config.state) {
				case "undefined" :
				
					break;
				case "connecting" :
				
					break;
				case "buffering" :
				
					break;
				case "playing" :
				
					break;
				case "paused" :

				case "stopped" :
					break;

				case "completed" :
				
					break;
				default :

			}




		}

		private function startHandler(e:Event = null):void {
			output("model start:" + api.item.label);
		}



		private function output(... rest):void {
			var str:String = rest.join(", ");
			api.tools.output(str);
			str +=  "\n";
			msg.appendText(str);
			msg.scrollV = msg.maxScrollV;
		}

	}

}