var debugMode = false;

function openMusicUrl(sUrl){
//alert("显示菜单");
}
//--------------------------qusic.js-----------
//All Rights Reserved By Micoz.Zhong 
//Tencent.Crop.Limited
var S_UNDEFINE= 0;
var S_STOP = 1;
var S_PAUSE = 2;
var S_PLAYING = 3;
var S_FORWORD = 4;
var S_RESERVSE = 5;
var S_BUFFERING = 6;
var S_WAITING = 7;
var S_MEDIAEND = 8;
var S_TRANSITION = 9;
var S_READY = 10;
var S_RECONNECTION = 11;

//播放列表最大个数
var MAX_PLAYLIST_NUM = 200;
var BRANDOMPLAY=false;

//当前播放器版本
var CURRENT_WMP_VERSION = "7.0.0.0";
var CURRENT_PLAYER_VERSION = "1.3.0.0";

function PlayerListManager()
{	
	this.mFull  = false;
	this.mPosition = -1;
	this.mpList = new Array();
	
	//获取播放列表的长度
	this.getCount = function()
	{
			return this.mpList.length;
	}
	
	//获取指定下标的播放列表信息
	this.getObject = function(n)
	{
		return this.mpList[n];
	}
	
	//根据播放url查找播放列表的下标
	this.getPos = function(strURL)
	{
		for(var i=0; i<this.getCount(); i++)
		{
			if(this.getObject(i).mPlayURL==strURL) 
				return i ;
		}
		return -1 ;
	}
	
	//根据播放id查找播放列表的下标
	this.getPosById = function(Id)
	{
		for(var i=0; i<this.getCount(); i++)
		{
			if(this.getObject(i).mId==Id) 
				return i ;
		}
		return -1 ;
	}	
	

	//根据播放id查找对应播放列表内容
	this.findObjectById = function(iId)
	{
		var i = this.getPosById(iId) ;
		if(i!=-1)
			return this.getObject(i) ;
		return null;	
	}	
	
	//根据播放url查找对应播放列表
	this.findObject = function(strURL)
	{	
		var i = this.getPos(strURL) ;
		if(i!=-1)
			return this.getObject(i) ;
		return null;
	}
	
	//添加指定内容到播放列表
	this.addObject = function(iId, strURL, strTorrentURL, iDuration, strSongName, strSingerName, strQzoneKey)
	{	
		if (strURL=="")
			return;
		
		var obj, pos;
		if (iId>0)
			pos = this.getPosById(iId);
		else if (strURL!="")
			pos = this.getPos(strURL);

		if(pos!=-1)
		{

		}
		else if (this.getCount()>=MAX_PLAYLIST_NUM)
		{
			this.mFull  = true;
			this.mPosition+=1;
			if (this.mPosition>=MAX_PLAYLIST_NUM)
				this.mPosition = 0;
			
			obj = this.getObject(this.mPosition);
			obj.mId = iId;
			obj.mPlayURL = strURL;
			obj.mTorrentURL = strTorrentURL;
			obj.mDuration = iDuration;
			obj.mSongName = strSongName;
			obj.mSingerName = strSingerName;
			obj.mQzoneKey = strQzoneKey;
		}	
		else
		{	
				obj = new Object() ;
				obj.mId = iId;
				obj.mPlayURL = strURL;
				obj.mTorrentURL = strTorrentURL;
				obj.mDuration = iDuration;
				obj.mSongName = strSongName;
				obj.mSingerName = strSingerName;
				obj.mQzoneKey = strQzoneKey;
				this.mpList[this.getCount()] = obj ;
		}
		return;			
	}
	
	//根据播放url更新播放列表
	this.updateObject = function(iId, strURL, strTorrentURL, iDuration, strSongName, strSingerName, strQzoneKey)
	{	
		var n = this.getPos(strURL) ;
		if(n != -1)
		{
			this.mpList[n].mId = iId;
			this.mpList[n].mDuration = iDuration ;
			this.mpList[n].mTorrentURL = strTorrentURL;
			this.mpList[n].mSongName = strSongName;
			this.mpList[n].mSingerName = strSingerName;
			this.mpList[n].mQzoneKey = strQzoneKey;
			return true;
		}
		return false;
	}
	
	//根据id更新播放列表
	this.updateObjectById = function(iId, strURL, strTorrentURL, iDuration, strSongName, strSingerName, strQzoneKey)
	{	
		var n = this.getPosById(iId) ;
		if(n != -1)
		{
			this.mpList[n].mPlayURL = strURL;
			this.mpList[n].mTorrentURL = strTorrentURL;
			this.mpList[n].mDuration = iDuration ;
			this.mpList[n].mSongName = strSongName;
			this.mpList[n].mSingerName = strSingerName;
			this.mpList[n].mQzoneKey = strQzoneKey;
			return true;
		}
		return false;
	}
	
	//根据播放url从播放列表中删除指定内容
	this.deleteObject = function(strURL)
	{	
		var n = this.getPos(strURL) ;
		if(n!=-1)
		{	
			delete this.mpList[n];
			this.mpList.length-- ;
			return true;
		}
		return false;
	}

	//根据播放id从播放列表中删除指定内容
	this.deleteObjectById = function(iId)
	{	
		var n = this.getPosById(iId) ;
		if(n!=-1)
		{	
			delete this.mpList[n];
			this.mpList.length-- ;
			return true;
		}
		return false;
	}
	
	//清空播放列表
	this.clearObject = function()
	{	
		for(var i=0; i<this.getCount(); i++)
			delete this.mpList[i];
		this.mpList.length = 0;
	}
}

function WMPlayer()
{
	this.mPlayerName = "";
	this.mInitializeStatus = false;
	this.mMute = false;
	this.mPlayList = new PlayerListManager();
	this.mPlayingPos = -1;
	this.mVisible = true;
	this.mInstall = true;
	this.mDLLink = "";	
	
	this.checkPlayer = function(strDLLink)
	{
		var objPlayer = document.all(this.mPlayerName);
		if (!objPlayer) 
			return false;

		if (!objPlayer.Controls) 
			return false;

		return true;
	}
	
	this.createActiveX = function(bVisible, bInstall, objName, objWidth, objHeight, strUinCookieName, strKeyCookieName, strDLLink)
	{
		if (objName=="")
			objName = "wmplayer";
			
		this.mPlayerName = objName;
		var objStr = "<OBJECT id=\"" + objName + "\" width=\""+ objWidth + "\" height=\"" + objHeight + "\" CLASSID=\"CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6\">";
		objStr = objStr + "<PARAM Name=\"autoStart\" value=\"true\">";
		if (!bVisible)
			objStr = objStr + "<PARAM Name=\"uiMode\" value=\"invisible\">";
		objStr = objStr + "</OBJECT>";
		
		this.mVisible = bVisible;
		this.mInstall = bInstall;
		this.mDLLink = strDLLink;
		return objStr;
	}

	this.initialize = function()
	{
		if (!this.checkPlayer())
		{
			if (this.mInstall)
			{
				alert("对不起，您现在的媒体播放器版本太低，请升级媒体播放器。");
				//window.location = this.mDLLink;
			}
			return false;
		}
		

		this.mInitializeStatus = true;
		return true;
	}	
	
	this.isInitialize = function()
	{
		return this.mInitializeStatus;
	}	
	
	this.getStatus = function()
	{
		if (!this.mInitializeStatus)
			return -1;

		return document.all(this.mPlayerName).playState;
	}	

	this.getCurrentMusic = function()
	{
		if (this.mPlayingPos<0)
			return null;
		return this.mPlayList.getObject(this.mPlayingPos);
	}	
	
	this.runPlayer = function(strPlayURL)
	{
		if (!this.mInitializeStatus)
			return;
		if (this.isPause())
		{

		}	
		else	if ( (strPlayURL!=null) && (strPlayURL!="") )
		{	
			document.all(this.mPlayerName).URL = strPlayURL;
			this.mPlayList.addObject(-1, strPlayURL, "", 0, "", "");
			this.mPlayingPos = this.mPlayList.getPos(strPlayURL);
		}
		
		if ( (this.mPlayingPos<0) && (this.mPlayList.getCount()>0	) )
		{
			this.mPlayingPos = 0;
			document.all(this.mPlayerName).URL = this.mPlayList.getObject(0).mPlayURL;
		}


		try
		{
		if (document.all(this.mPlayerName).Controls.isAvailable('play')) 
			document.all(this.mPlayerName).Controls.Play();
		}
		catch(e)
		{
			if(debugMode) status = ("error 2 "+e.message)
		}	

		

		return;		
	}	
	
	this.stopPlayer = function()
	{
		if (!this.mInitializeStatus)
			return false;
		
		if ( (!this.isPlaying()) && (!this.isPause()) )
			return false;
		
		try
		{	
		if (document.all(this.mPlayerName).Controls.isAvailable('stop')) 
			document.all(this.mPlayerName).Controls.Stop();
		}
		catch(e)
		{
			if(debugMode) status = ("error 3 "+e.message)
		}		
		return true;
	}		
	
	this.pausePlayer = function()
	{
		if (!this.mInitializeStatus)
			return false;
		
		if (!this.isPlaying())
			return false;
		
		try
		{	
		if (document.all(this.mPlayerName).Controls.isAvailable('pause')) 
			document.all(this.mPlayerName).Controls.Pause();
		}
		catch(e)
		{
			if(debugMode) status = ("error 4 "+e.message)
		}			
		return true;
	}	
	
	this.isPlaying = function()
	{
		if (!this.mInitializeStatus)
			return false;

		var _status = this.getStatus();
		return ((_status==S_PLAYING) || (_status==S_BUFFERING));
	}
	
	this.isPause = function()
	{
		if (!this.mInitializeStatus)
			return false;

		var _status = this.getStatus();
		return (_status==S_PAUSE);		
	}
	
	this.isStop = function()
	{
		if (!this.mInitializeStatus)
			return false;
		
		var _status = this.getStatus();
		return 	((_status==S_STOP) || (_status==S_MEDIAEND) || (_status==S_UNDEFINE));
	}	

	this.setMute = function()
	{
		if (!this.mInitializeStatus)
			return false;

		if (document.all(this.mPlayerName).settings.mute)
			document.all(this.mPlayerName).settings.mute = false;
		else
			document.all(this.mPlayerName).settings.mute = true;		
		
		return true;
	}
		
	this.setVolumn = function(type)
	{
		if (!this.mInitializeStatus)
			return false;
	
		if (document.all(this.mPlayerName).settings.mute)
			return false;
		
		switch(type)
		{
			case "up":
				if (document.all(this.mPlayerName).settings.volume+10<100)
					document.all(this.mPlayerName).settings.volume+=10;
				break;
			case "down":
				if (document.all(this.mPlayerName).settings.volume-10>0)
					document.all(this.mPlayerName).settings.volume-=10;
				break;
			default:
				break;
		}			
		return true;	
	}	
	this.quickPlayer = function(pos)
	{
		if (!this.mInitializeStatus)
			return false;
		if (!this.isPlaying())
			return false;
		if ((document.all(this.mPlayerName).Controls.currentPosition+pos)>=document.all(this.mPlayerName).currentMedia.duration)
			return false;
		if ((document.all(this.mPlayerName).Controls.currentPosition+pos)<=0)
			return false;
			document.all(this.mPlayerName).Controls.currentPosition+=pos;
		return true;
	}
	
	this.lastPlayer = function()
	{
		if (this.mPlayList.getCount()==0)
			return;
		
		this.mPlayingPos = this.mPlayingPos - 1;
		if ( (this.mPlayingPos<0) || (this.mPlayingPos>=this.mPlayList.getCount()) )
			this.mPlayingPos = this.mPlayList.getCount()-1;
		
		this.runPlayer(this.mPlayList.getObject(this.mPlayingPos).mPlayURL);
		return this.mPlayingPos;
	}
	
	this.nextPlayer = function()
	{
		if (this.mPlayList.getCount()==0)
			return -1;
		this.mPlayingPos = this.mPlayingPos + 1;
		if ( (this.mPlayingPos>=this.mPlayList.getCount()) || (this.mPlayingPos<0) )
			this.mPlayingPos = 0;
			this.runPlayer(this.mPlayList.getObject(this.mPlayingPos).mPlayURL);
		return this.mPlayingPos;	
	}
			
	this.setBalance = function()
	{
		document.all(this.mPlayerName).settings.balance = document.all(this.mPlayerName).settings.balance=='100'?'-100':'100';
		return (document.all(this.mPlayerName).settings.balance=='100'?'右声道':'左声道');
	}
	
	this.getErrorMsg = function()
	{
		var errorDesc = document.all(this.mPlayerName).error.item(0).errorDescription;
		return errorDesc;
	}	

	this.autoRandomPlay = function(objName, bAutoPlay, bRandom)
	{
		var mCurrentPos;
		if (!this.isInitialize())
			return;
			
		if (this.mPlayList.getCount()==0)
		{
		}	
		else if (bAutoPlay)
		{
			if (bRandom)
			{
				//随机播放
				try
				{
				if ( this.isStop())
				{
					mCurrentPos = this.mPlayingPos;
					do {
						this.mPlayingPos = Math.floor(Math.random()*this.mPlayList.getCount());
					}while(mCurrentPos == this.mPlayingPos&&this.mPlayList.getCount()>1);
					this.runPlayer(this.mPlayList.getObject(this.mPlayingPos).mPlayURL);
				}
				}
				catch(e)
				{
					if(debugMode) status = ("error 5 "+e.message)
				}			
			}
			else
			{	
				//顺序播放
				try
				{
					if ( this.isStop())
						this.nextPlayer();
					if (this.mPlayingPos==0)
					{
						this.runPlayer();
					}
				}
				catch(e)
				{
					if(debugMode) status = ("error 6 "+e.message);
				}				
			}
		}
		return;
	}	

	this.printPlayList = function()
	{
		var list = "";
		for (var i=this.mPlayList.getCount(); i>0; i--)
		{
			list = list + "第[" + i + "]" + "播放记录:" + this.mPlayList.getObject(i-1).mPlayURL + "\n";  
		}	
		return list;
	}	
}	


function runPlayer(){
	if((!MediaPlayer)) return;
	MediaPlayer.runPlayer('');
	bRandomPlay = BRANDOMPLAY;	
	setAutoPlay(true, bRandomPlay);
}
function pausePlayer(){
MediaPlayer.pausePlayer();
}	
function stopPlayer(){
MediaPlayer.stopPlayer();
}	
function lastPlayer()	{
MediaPlayer.lastPlayer();
}	
function nextPlayer()	{
MediaPlayer.nextPlayer();
}
	
function setAutoPlay(bAutoPlay, bRandomPlay){
if(MediaPlayer && !MediaPlayer.isPause())
	MediaPlayer.autoRandomPlay(MediaPlayer, bAutoPlay, bRandomPlay);
	window.idAutoPlay = setTimeout("setAutoPlay("+bAutoPlay+","+bRandomPlay+")", 5000);
}

function sendName(){
if(MediaPlayer){
	var obj=MediaPlayer.getCurrentMusic();
	if ( !obj || (obj.mSongName=="") ){return;}
	if(!document.musicSwf) return;
	if(document.musicSwf.length>1){
	for(var i=0;i<document.musicSwf.length;i++)
		document.musicSwf[i].SetVariable("musicName", obj.mSongName);
	}else{
		document.musicSwf.SetVariable("musicName", obj.mSongName);
	}
  }
}
function musicSwf_DoFSCommand(command,args){
	if (command=="Play"){Qplay();}
	if (command=="Stop"){Qstop();}
	if (command=="Pause"){Qpause();}
	if (command=="next"){Qnext();}
	if (command=="previous"){Qprevious();}
	if (command=="gotoMusic") {top.openMusicUrl("playlist");}
}

function Qplay(){runPlayer();}
function Qstop(){clearTimeout(window.idAutoPlay); stopPlayer();}   
function Qpause(){clearTimeout(window.idAutoPlay); pausePlayer();}
function Qnext(){nextPlayer();}
function Qprevious(){lastPlayer();}
function clearPlayList(){MediaPlayer.mPlayList.clearObject();}
function writeMusicControl(){
	document.write('<div id="musicPlayer" style="PADDING-RIGHT:0px; PADDING-LEFT:0px; PADDING-BOTTOM:0px; OVERFLOW:hidden; PADDING-TOP:0px; position:absolute; left:'+swfx+';top:'+swfy+'"  onmouseover="LayerOnMouseOver()" onmouseout="LayerOnMouseOut()" onmousedown="LayerStartOperate()" onmouseup="LayerEndOperate()"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="210" height="120" id="musicSwf" wmode=transparent ><param name="movie" value="'+swfurl+'"><param name="quality" value="high"><param name="wmode" value="transparent"><param name="allowScriptAccess" value="always"></object></div>');
	document.write('<script language="VBScript" type="text/vbscript">\nsub musicSwf_FSCommand(ByVal command, ByVal args)\n	call musicSwf_DOFSCommand(command, args)\nend sub\n</script>');
}
function URLencode(srcString){
	if(srcString=="http://" ||(srcString.substring(0,7)!="http://"&&srcString.substring(0,6)!="mms://"))
		srcString="";
	var regstr = new RegExp("<", "g");
    srcString=srcString.replace(regstr, "&lt;");
    regstr = new RegExp(">", "g");
    srcString=srcString.replace(regstr, "&gt;");
    regstr = new RegExp("\'", "g");
    srcString=srcString.replace(regstr, "&apos;");
    regstr = new RegExp("\"", "g");
    srcString=srcString.replace(regstr, "&quot;");
    regstr = new RegExp("&", "g");
    srcString=srcString.replace(regstr, "%26");
	regstr = new RegExp("\r", "g");
	srcString=srcString.replace(regstr, "%0A");																
	regstr = new RegExp("\n", "g");
	srcString=srcString.replace(regstr, "%0D");																		
	regstr = new RegExp(",", "g");
	srcString=srcString.replace(regstr, "%27");																				
	return srcString;
}
var listen_select_img=new Image();
listen_select_img.src="listen_select.gif";
var listen_imgsrc=new Image();
listen_imgsrc.src="listen.gif";
var listen_oldimg=null;
function Trim(str) 
{ 
str = str.replace(/^\s*/g,""); 
str = str.replace(/\s*$/g,""); 
return str; 
} 
function playOneSong(name, url,obj) {
var regstr = new RegExp("&apos;", "g");
url=Trim(URLencode(url));
name=name.replace(regstr, "\'");
if(listen_oldimg)listen_oldimg.src=listen_imgsrc.src;
obj.src=listen_select_img.src;
listen_oldimg=obj;
if(!url){myalert(URLERROR);return;}
MediaPlayer.mPlayList.clearObject();
MediaPlayer.runPlayer(url);	
musicSwf.SetVariable("musicName", name);

}
writeMusicControl();
