/* mediaplayer类定义*/
function mediaplayer(){
	this.dom= null;
	this.url= '';
	this.volume= 50;
	this.mode= 'full';
	
	this.state= 0;
	this.status= '';
	this.position= 0;
	this.positionstring= '00:00';
	
	var thisobj= this;
	
	this.$= function(element) {
		return (typeof element== 'object')?element:document.getElementById(element);
	};
	//在指定ID的标签中创建mediaplayer控件，大小由该标签决定
	this.init= function(containerid) {
		var container= thisobj.$(containerid);
		container.innerHTML= '<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject" width="100%" height="100%"><param name="volume" value="0" /><param name="url" value="" /></object>';
		thisobj.dom= container.childNodes[0];
		thisobj.dom.url= thisobj.url;
		thisobj.dom.settings.volume= thisobj.volume;
		thisobj.dom.uiMode= thisobj.mode;
		//注册事件
		thisobj.dom.attachEvent("PlayStateChange",
			function(newState){
				thisobj.state= thisobj.dom.playState;
				thisobj.onstatechange(newState);
			}
		);
		//this.dom.attachEvent("Buffering",function(bStart){thisobj.onbuffering(bStart)});
		thisobj.dom.attachEvent("Error",
			function(){
				thisobj.onerror();
			}
		);
		thisobj.dom.attachEvent("PositionChange",
			function(oldPos,newPos){
				thisobj.onPositionChange(oldPos,newPos)
			}
		);
		thisobj.dom.attachEvent("StatusChange",
			function(){
				thisobj.status= thisobj.dom.status;
				thisobj.onstatuschange();
			}
		);
		//设置缓冲信息
		setInterval(function(){
			if(thisobj.dom.playState==3) {
				thisobj.onpositionchange(thisobj.dom.controls.currentPosition,thisobj.dom.controls.currentPositionString);
			}
			if(thisobj.dom.playState==6) {
				thisobj.onbuffering(thisobj.dom.network.bufferingProgress);
			}
		},1000);
	};
	//绑定一个已存在的Object标签，该标签应该为一个mediaplayer控件
	this.bind= function(id) {
		thisobj.dom= thisobj.$(id);
		thisobj.init();
	};
	//操作
	this.play= function(){
		if(thisobj.dom){
			thisobj.dom.controls.play();
		}else {
			playaudio();
		}
	};
	this.pause= function(){
		thisobj.dom.controls.pause();
	};
	this.stop= function(){
		thisobj.dom.controls.stop();
	};
	this.setvolume= function(val) {
		thisobj.dom.settings.volume= val;
	}
	this.mute= function(val) {
		thisobj.dom.settings.mute= !thisobj.dom.settings.mute;
		this.onmute(thisobj.dom.settings.mute);
	}
	//播放状态事件
	// 0(未定义) 1(已停止播放) 2(已暂停播放) 3(正在播放中) 4(向前搜索) 5(向后搜索)
	// 6(缓冲处理中) 7(等待中) 8(已播放完毕) 9(转换曲目中) 10(就绪状态)
	this.onstatechange= function(newState) {
		switch(newState) {
		case 1: //wmppsStopped
			this.onstop();
			break;
		case 2:  //wmppsPaused
			this.onpaused();
			break;
		case 3:  //wmppsPlaying
			this.onplay();
			break;
		case 4:  //wmppsScanForward
			break;
		case 5:  //wmppsScanReverse
			break;
		case 6:  //wmppsBuffering
			this.onbuffering(thisobj.dom.network.bufferingProgress);
			break;
		case 7:  //wmppsWaiting
			break;
		case 8:  //wmppsMediaEnded
			this.onmediaended();
			break;
		case 9:  //wmppsTransitioning
			this.ontransitioning();
			break;
		case 10:  //wmppsReady
			break;
		case 11:  //wmppsReconnecting
			break;
		case 12:  //wmppsLast
			break;
		case 0:  //wmppsUndefined
			break;
		default:
			break;
		}
	};
	this.onpositionchange= function(posint,posstr) {
		thisobj.position= posint;
		thisobj.positionstring= posstr;
	};

}
//mediaplayer.uiMode={
//	Full:"full",
//	Mini:"mini",
//	None:"none",
//	Invisible:"invisible"
//}
mediaplayer.prototype= {
	// 事件列表
	onstop:function(){},
	onpaused:function(){},
	onplay:function(){},
	ontransitioning:function(){},
	onmediaended:function(){},
	onerror:function(){},
	onmute:function(){},
	onstatuschange:function(){},
	onbuffering:function(bStart){},
	
	// 各种属性
	getMediaName:function()
	{
		var media=this.dom.currentMedia;
		if(media)
		{
			return media.name;
		}
		return "";
	},
	getMediaDuration:function()
	{
		var media=this.dom.currentMedia;
		if(media)
		{
			return media.duration;
		}
		return "";
	},
	getMediaDurationString:function()
	{
		var media=this.dom.currentMedia;
		if(media)


		{
			return media.durationString;
		}
		return "";
	}
}
<!--
//对象未创建完成之前，不能在函数之中用this
var playlab= null;
var playerobj= null;
var trackbar= function() {
    this.panel= null;
    this.slider= null; //还未创建
    
    this.orientation= 'h';
    this.state= 'none';
	this.offsetx= 0;
	this.offsety= 0;
    this.max= 100;
    this.value= 0;
	
    var nowpos= 0;
	var sliderwidth= 0;
	var sliderheight= 0;

	var thisobj= this;
	
	this.$= function(element) {
		return (typeof element== 'object')?element:document.getElementById(element);
	};

	this.create= function(sliderclass,tiptext,func) {
		thisobj.panel.innerHTML= '<div style="position:relative;" class="'+sliderclass+'" title="'+tiptext+'"></div>';
		thisobj.slider= thisobj.panel.childNodes[0];
		thisobj.slider.style.cursor= (thisobj.orientation=="h")?"e-resize":"n-resize";
		var _size= thisobj.$size(thisobj.slider);
		sliderwidth= parseInt((_size.w)/2);
		sliderheight= parseInt((_size.h)/2);
		
		thisobj.bindevent(thisobj.slider,'mousedown',function(ent){
			thisobj.dragstart(ent,func);
		});
		thisobj.bindevent(thisobj.slider,'mouseup',function(){
			thisobj.dragdone();
		});
		thisobj.setvalue(thisobj.value);
	};
	
	//准备拖拽
	this.dragstart= function(evt,callfunc) {
		if(evt== null)evt= window.event;
		if(evt.button!=0&&evt.button!=1)return;
		thisobj.state= 'draging';
		var _pos_bar= thisobj.$pos(thisobj.panel);
		var _pos_sld= thisobj.$pos(thisobj.slider);
		if (thisobj.orientation== 'h') {
			nowpos= evt.clientX-_pos_sld.x+_pos_bar.x;
		}else {
			nowpos= evt.clientY-_pos_sld.y+_pos_bar.y;
		}
		thisobj.bindevent(document.body,'mousemove',function(ent){
			thisobj.draging(ent,callfunc);
		});
		thisobj.bindevent(document.body,'mouseup',function(ent){
			thisobj.dragdone();
		});
		thisobj.bindevent(document,'mousemove',function(ent){
			thisobj.draging(ent,callfunc);
		});
		thisobj.bindevent(document,'mouseup',function(ent){
			thisobj.dragdone();
		});
	};
	
	//拖拽中
	this.draging= function(evt,callfunc) {
		if(evt== null)evt= window.event;
		if(!thisobj.slider || thisobj.state!= 'draging')return;
		evt.returnValue= false;
	
		var dragpos= 0;
		if(thisobj.orientation== 'h') {
			dragpos= evt.clientX-nowpos;
			if(dragpos<= (thisobj.offsetx-sliderwidth)) {
				dragpos= thisobj.offsetx-sliderwidth;
			}else if(dragpos>= (thisobj.max+thisobj.offsetx-sliderwidth)) {
				dragpos= thisobj.max+thisobj.offsetx-sliderwidth;
			}
			thisobj.slider.style.left= dragpos+'px';
			thisobj.slider.style.pixelLeft= dragpos;
			thisobj.value= parseInt((100/thisobj.max)*(dragpos-thisobj.offsetx+sliderwidth));
		}else {
			dragpos= evt.clientY-nowpos;
			if(dragpos<= (thisobj.offsety-sliderheight)) {
				dragpos= thisobj.offsety-sliderheight;
			}else if(dragpos>= (thisobj.max+thisobj.offsety-sliderheight)) {
				dragpos= thisobj.max+thisobj.offsety-sliderheight;
			}
			thisobj.slider.style.top= dragpos+'px';
			thisobj.slider.style.pixelTop= dragpos;
			thisobj.value= parseInt((100/thisobj.max)*(dragpos-thisobj.offsety+sliderheight));
		}
		callfunc(thisobj.value);
	};
	
	this.setvalue= function(val,callfunc) {
		if(val>=0&&val<=100) {
			if(thisobj.orientation== 'h') {
				thisobj.slider.style.pixelLeft= val*(thisobj.max/100)+thisobj.offsetx-sliderwidth;
				thisobj.slider.style.pixelTop= thisobj.offsety;
				thisobj.slider.style.left= thisobj.slider.style.pixelLeft+'px';
				thisobj.slider.style.top= thisobj.offsety+'px';
				thisobj.value= val;
			}else {
				thisobj.slider.style.pixelTop= val*(thisobj.max/100)+thisobj.offsety-sliderheight;
				thisobj.slider.style.pixelLeft= thisobj.offsetx;
				thisobj.slider.style.top= thisobj.slider.style.pixelTop+'px';
				thisobj.slider.style.left= thisobj.offsetx+'px';
				thisobj.value= val;
			}
			if(callfunc)callfunc(thisobj.value);
		}
	}
	
	//结束拖拽
	this.dragdone= function() {
		if(!thisobj.slider)return;
		thisobj.state= 'done';
	};

	//绑定事件
	this.bindevent= function(elementId,entname,entevent) {
		var el= thisobj.$(elementId);
		if(el.attachEvent) {
			el.attachEvent('on'+entname,entevent);
		}else if(el.addEventListener) {
			el.addEventListener(entname,entevent,false);
		}else {
			el['on'+entname]= entevent;
		}
	};

	this.$size= function(elementId) {
		var el= thisobj.$(elementId);
		if(!el)return{'w':0,'h':0};
		var elw,elh;
		if(el.clip!=null){
			elw= el.clip.right-el.clip.left;
			elh= el.clip.bottom-el.clip.top;
		}else if(el.scrollWidth!=null){
			elw= el.scrollWidth;
			elh= el.scrollHeight;
		}else if(el.offsetWidth!=null){
			elw= el.offsetWidth;
			elh= el.offsetHeight;
		}else if(el.style.pixelWidth!=null){
			elw= el.style.pixelWidth;
			elh= el.style.pixelHeight;
		}
		return{'w':elw,'h':elh};
	};

	this.$pos= function(elementId) {
		var el= thisobj.$(elementId);
		if(!el)return{'x':0,'y':0};
		var elx= el.offsetLeft;
		var ely= el.offsetTop;
		while((el= el.offsetParent)!= null) {
			elx+= el.offsetLeft;
			ely+= el.offsetTop;
		}
		return{'x':elx,'y':ely};
	}
//设置Cookie(名称)
	this.setcookie= function(name,value) {
		var Days= 30;
		var exp= new Date();
		exp.setTime(exp.getTime() + Days*24*60*60*1000);
		document.cookie= name + "="+ escape(value) + ";expires=" + exp.toGMTString();
	};
	//获取Cookie(名称)
	this.getcookie= function(name) {
		var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
		if(arr=document.cookie.match(reg)) return unescape(arr[2]);
		else return null;
	};

}
//创建播放器
var player,barh;
//广播列表
var radio= new Array('1061','1037','984','747');
var radioname= new Array('新闻广播','都市广播','交通广播','经济广播');
var nowradio= 0;
//页面初始化
function initradio(_pid) {
	player= new mediaplayer(); 
	barh= new trackbar();
	var _html= '';
	_html+= '<div id="playerpanel" style="display:none;"></div>';
	_html+= '<div id="player">';
	_html+= '    <img src="http://gd.nxtv.cn/fm/radio/images/fleft.jpg" width="10" height="37" border="0" class="fleft" />';
	_html+= '    <img src="http://gd.nxtv.cn/fm/radio/images/fright.jpg" width="10" height="37" border="0" class="fright" />';
	_html+= '    <div id="radioinfo">';
	_html+= '      <table width="100%" border="0" cellpadding="0" cellspacing="0">';
	_html+= '        <tr>';
	_html+= '          <td width="7%" height="24" align="center"><a href="javascript:" onclick="this.blur();playradio(\'prev\');" title="上一广播频率"><img src="http://gd.nxtv.cn/fm/radio/images/prev.gif" width="9" height="11" border="0" /></a></td>';
	_html+= '          <td width="86%" height="24" id="player_panel">';
	_html+= '          <div class="radio_text"><span id="labradio_name">新闻广播 FM106.1</span></div>';
	_html+= '          <div class="radio_text" style="display:none;">【播放状态】<span id="player_info"></span></div></td>';
	_html+= '          <td width="7%" height="24" align="center"><a href="javascript:" onclick="this.blur();playradio(\'next\');" title="下一广播频率"><img src="http://gd.nxtv.cn/fm/radio/images/next.gif" width="9" height="11" border="0" /></a></td>';
	_html+= '        </tr>';
	_html+= '      </table>';
	_html+= '    </div>';
	_html+= '    <div id="control">';
	_html+= '      <table width="57" border="0" cellpadding="0" cellspacing="0">';
	_html+= '        <tr>';
	_html+= '          <td width="25" height="24" align="right"><a href="javascript:" id="radio_play_pause" class="play" onClick="this.blur();player.play();"><!--播放/暂停--></a></td>';
	_html+= '          <td width="32" height="24" align="center"><a href="javascript:" id="radio_stop" onClick="this.blur();player.stop();"><!--停止--></a></td>';
	_html+= '        </tr>';
	_html+= '      </table>';
	_html+= '    </div>';
	_html+= '    <div id="volume">';
	_html+= '      <table width="100%" border="0" cellpadding="0" cellspacing="0">';
	_html+= '        <tr>';
	_html+= '          <td width="23%" height="24"><a href="javascript:" id="radio_mute" class="dismute" onClick="this.blur();player.mute();"><!--静音--></a></td>';
	_html+= '          <td width="77%" height="24"><div id="volumebar"></div></td>';
	_html+= '        </tr>';
	_html+= '      </table>';
	_html+= '    </div>';
	_html+= '</div>';
	document.getElementById(_pid).innerHTML= _html;
	
	var volume= barh.getcookie('volume');
	if(volume== null)volume= 50;
	barh.value= volume;
	barh.panel= document.getElementById('volumebar');
	barh.offsetx= 5;
	barh.offsety= 1;
	barh.max= 35;
	barh.orientation= 'h';
	barh.create("volume_slider",'音量调节',changevolum);
	player.volume= barh.value;
//	playaudio();
//	var _mqtxt= new marquee();
//	_mqtxt.delay= 5000;
//	_mqtxt.scrline= 1;
//	_mqtxt.html= getobj('player_panel').innerHTML;
//	_mqtxt.init('player_panel');
}
function playradio(state) {
	if(state== 'prev') {
		(nowradio== 0)?nowradio= radio.length-1:nowradio-= 1;
	}else {
		(nowradio== radio.length-1)?nowradio= 0:nowradio+= 1;
	}
	playaudio();
	document.getElementById('labradio_name').innerHTML= '【当前频率】'+radioname[nowradio];
}
//音量设置
function changevolum(value) {
	setinfo("音量:"+value+"%");
	barh.setcookie('volume',value);
	player.setvolume(value);
}
//初始播放
function playaudio() {
	player.url= 'mms://gd.nxtv.cn:6666/'+radio[nowradio];
	player.init('playerpanel');
	player.onplay= function() {
		player.$('radio_play_pause').className= 'pause';
		setinfo('正在打开...');
	};
	player.onstop= function() {
		player.$('radio_play_pause').className= 'play';
		setinfo(radioname[nowradio]+' FM'+radio[nowradio]);
	};
	player.onpositionchange= function(posint,posstr) {
		setinfo('['+radioname[nowradio]+']'+posstr);
	};
	player.onerror= function(){
//		player.Error.clearErrorQueue();
		player.stop();
		player.play();
		setinfo('尝试重新联机...');
	};
	player.onbuffering= function(str){
		if(str!=true)setinfo('缓冲...('+str+'%)');
	};
	player.onmute= function(state) {
		if(state) {
			player.$('radio_mute').className= 'mute';
			setinfo('已静音');
		}else {
			player.$('radio_mute').className= 'dismute';
			setinfo('静音恢复');
		}
	};
}
function setinfo(str) {
	var playlab= document.getElementById('labradio_name');
	playlab.innerHTML= str;
}
