/**
 * FlvPlayer 播放flv的音频内容
 * @param id 
 * @param obj_id
 * @param ui_id
 * @return
 */
var FlvPlayer = function(id, obj_id, ui_id) {
	//播放器ID
	this.id = "Player";
	if(id)
		this.id = id;
	
	//播放器ActiveX的ID
	this.obj_id = this.id + "_obj";
	if(obj_id) 
		this.obj_id = obj_id;
	
	//播放器界面的ID,PlayerUI的div
	this.ui_id = this.id + "_ui";
	if(ui_id) 
		this.ui_id = ui_id;
	
	this.obj = null;
	
	/**
	 * 初始化FlvPlayer
	 */
	this.init = function(div) {		
		this.obj = document.getElementById(this.obj_id);
		
		r = true;
		try { 
			this.obj.flvGetVol(); 
		} catch(e) { 
			r = false; 
		}

		return r;
	};
	
	this.ui = null;
	
	/**
	 * 将页面中的Div和PlayerUI类的实例绑定
	 */
	this.bind = function(ui_id) {
		if(ui_id) 
			this.ui_id = ui_id;
		
		this.ui = new PlayerUI(this.ui_id);
		
		if(this.ui && this.obj.flvGetVol()) {
			this.ui.volume(this.obj.flvGetVol() / 100.0);
		}
		
	};
	
	this.unbind = function() {
		this.ui = null;
	};
	
	this.playList = null;
	/**
	 * 设置播放内容的Url地址
	 */
	this.url = function(url) {
		if(url) 
			this.obj.URL = url;
		
		return this.obj.URL;
	};
	
	this.timer = null;
	this.isPlaying = false;
	
	/**
	 * 播放Flv文件
	 */
	this.play = function(url) {	
		if(url)  
			this.obj.flvSetUrl(url);
		
		//alert("url=" + this.obj.flvGetUrl());	
		//this.obj.flvSetUrl("http://audio.t8.rbc.cn/--k-3adf05fecc9a-1272441786/2010/04/20/114517.flv");
		
		this.obj.flvPlay();
		
		this.isPlaying = true;
		this.timer = window.setTimeout(this.id + ".playing()", 2000);

		return true;
	};
	
	/**
	 * 暂停播放
	 */
	this.pause = function() {
		this.obj.flvPause();
		return false;
	};
	
	/**
	 * 停止播放
	 */
	this.stop = function() {
		this.obj.flvStop();
		return false;
	};
	
	/**
	 * 静音
	 */
	this.mute = function(b) {
		this.obj.flvSetVol(0);
		if(this.ui) {
			this.ui.mute(b);
		}
		return false;
	};
	
	/**
	 * 循环播放,没有实现
	 */
	this.loop = function(b) {		
		return false;
	};
	
	this.onPlayStateChange = function(n) {
		switch(parseInt(n)) {			
			case 103: //start
				if(this.ui) { 
					this.ui.status("状态：播放");
					this.ui.play(false);
					this.ui.pause(true);
					this.ui.stop(true);
					this.ui.current(Math.ceil(this.obj.flvCurrentTime() / 1000));
					this.ui.duration(Math.ceil(this.obj.flvTime() / 1000));
					this.ui.progress(this.obj.flvCurrentTime() / this.obj.flvTime());
				}
				break;
			case 104: //stop
				if(this.ui) {
					this.ui.status("状态：停止");
					this.ui.play(true);
					this.ui.pause(false);
					this.ui.stop(false);
					this.ui.current(0);
					this.ui.progress(0);
				}
				if(this.isPlaying && this.playList) {
					this.timer = window.setTimeout(this.id + ".playList.next()", 1000);
				}
				this.isPlaying = false;
				break;
			case 108:				
				if(this.ui) {
					this.ui.status("状态：暂停");
					this.ui.play(true);
					this.ui.pause(false);
					this.ui.stop(true);
				}
			  	break;
			case 102:
			  	if(this.ui) 
			  		this.ui.status("状态：缓冲中");
			  	break;
	    }
	};
	
	/**
	 * 更新播放状态
	 */
	this.playing = function() {
		try{
			this.onPlayStateChange(this.obj.flvPlayStatus());
			
			if(this.obj.flvPlayStatus() == 103 && this.ui) {
				this.ui.status("状态：播放");
				this.ui.play(false);
				this.ui.pause(true);
				this.ui.stop(true);
				this.ui.current(Math.ceil(this.obj.flvCurrentTime()));
				this.ui.duration(Math.ceil(this.obj.flvTime()));
				this.ui.progress(this.obj.flvCurrentTime() / this.obj.flvTime());
			}
			
			if(this.isPlaying) {
		    	this.timer = window.setTimeout(this.id + ".playing()", 1000);
			}
		}catch(e){}
	};
	
	this.setVolume = function(f) {
		this.obj.flvSetVol(Math.round(f * 100));
		if(this.ui) {
			this.ui.volume(this.obj.flvGetVol() > 0 ? this.obj.flvGetVol() / 100.0 : 0);
		}
	};
	
	this.decreaseVolume = function(e) {
		if(!e) e = window.event;
		if(e && this.ui) {
			this.setVolume(this.ui.decreaseVolume(e));
		}
		return false;
	};
	
	this.increaseVolume = function(e) {
		if(!e) e = window.event;
		if(e && this.ui) {
			this.setVolume(this.ui.increaseVolume(e));
		}
		return false;
	};
	
	this.slideVolume = function() {
		document.onmousedown = new Function(this.id + ".captureVolume();");
	};
	
	this.captureVolume = function(e) {
		document.onmousemove = new Function("e", this.id + ".moveVolume(e);return false;");
		document.onmouseup = new Function(this.id + ".releaseVolume();");
	};
	
	this.moveVolume = function(e) {
		if(!e) e = window.event;
		if(e && this.ui) {
			this.setVolume(this.ui.moveVolume(e));
		}
	};
	
	this.releaseVolume = function(e) {
		document.onmousemove = null;
		document.onmouseup = null;
	};
	
	this.setProgress = function(f) {
		//alert(this.obj.flvTime());
		this.obj.flvSeek(Math.round(f * this.obj.flvTime()));
		if(this.ui) {
			this.ui.progress(this.obj.flvCurrentTime() / this.obj.flvTime());
		}
	};
	
	this.decreaseProgress = function(e) {
		if(!e) e = window.event;
		if(e && this.ui) {
			this.setProgress(this.ui.decreaseProgress(e));
		}
		return false;
	};
	
	this.increaseProgress = function(e) {
		if(!e) e = window.event;
		if(e && this.ui) {
			this.setProgress(this.ui.increaseProgress(e));
		}
		return false;
	};
	
	this.slideProgress = function() {
		document.onmousedown = new Function(this.id + ".captureProgress();");
	};
	
	this.captureProgress = function(e) {
		document.onmousemove = new Function("e", this.id + ".moveProgress(e);return false;");
		document.onmouseup = new Function(this.id + ".releaseProgress();");
	};
	
	this.moveProgress = function(e) {
		if(!e) 
			e = window.event;
		
		if(e && this.ui) {
			this.setProgress(this.ui.moveProgress(e));
		}
	};
	
	this.releaseProgress = function(e) {
		document.onmousemove = null;
		document.onmouseup = null;
	};
	
	//初始化播放器
	if(this.init())	
		this.bind();
	else 
		alert("对不起，您没有安装FlvPlayer播放器，部分音视频将无法播放。");
}