
var timer;  
var lrc0; 
var lrc1; 
var min;
var lrcobj ; 
function golrcoll(s) 
{ 
var lrcoll=document.getElementById("lrcoll");
lrcoll.style.top = -(s++)*2; 
if(s<=9) 
lrc0 = setTimeout("golrcoll("+s+")",min*10); 
} 


window.onerror = function() 
{return true;} 



function pre(){
	if(index==0){
		alert("已是第一首");
	}else{
		index--;
		play(index);
	}
	
}

function next(){
	if(index>=mp3s.length-1){
		alert("已是最后一首");
		index=mp3s.length-1;
	}else{
		index++;
		play(index);
	}
	
}


function change(number){
	var title;
	if(navigator.appName.indexOf("Explorer") > -1){      	     
	   title= document.getElementById("tit"+number).innerText;   	     
	} else{      	     
	    title=document.getElementById("tit"+number).textContent;      	     
	}     
	document.getElementById("title").innerHTML=title;
	document.getElementById("introduce").innerHTML=document.getElementById("intr"+number).innerHTML;
	for(var i=0;i<mp3s.length;i++){
		if(i==number){
			$("#li"+number).addClass("playingNow");		
		}else{
			$("#li"+i).removeClass();				
		}
	}

}



function play(number,type){

	index=number;
	change(number);
	
	lrcdata=document.getElementById("lrcdata"+index);
	
	lrcobj = new lrcClass(lrcdata.innerHTML.slice(4,-3)); 
	
	
	try{
		var temp=document.getElementById("aboutplayer").controls.isAvailable('Play');
		document.getElementById("aboutplayer").URL=audio_domain+mp3s[index]; 
		
	}catch(err)  { 
		document.getElementById("ffplayer").SetSource(audio_domain+mp3s[index]);	
	}
	if(type==1){
		ucoursebo.updateViewcount(cids[index],function(data){});
	
	}else if(type==2){
		uitembo.updateViewcount(cids[index],function(data){});
	}
	
	control(2);
	lrcrun(); 
	
	
}

function control(flag,type){
	
  switch (flag)
  {
    case 1 :  //暂停
      try  {  
		  	var temp=document.getElementById("aboutplayer").controls.isAvailable('Play');
      		document.getElementById("aboutplayer").controls.pause();
       } catch(err)  {    
	  	
	      document.getElementById("ffplayer").DoPause();
	  }  
      break;
      
    case 2 : //播放
   
    try  {  
    		if(lrcobj==null){
    		
    			 lrcdata=document.getElementById("lrcdata"+index).innerHTML;
    			
    			 lrcobj = new lrcClass(lrcdata.slice(4,-3)); 
    			
    			if(type==1){
					ucoursebo.updateViewcount(cids[index],function(data){});				
				}else if(type==2){
					uitembo.updateViewcount(cids[index],function(data){});
				}
    		}
    		
		  	var temp=document.getElementById("aboutplayer").controls.isAvailable('Play');
		  	if(document.getElementById("aboutplayer").URL==""){
		  	   
		      	document.getElementById("aboutplayer").URL=audio_domain+mp3s[index];
		          	 
	      }
	     
	      document.getElementById("aboutplayer").controls.play();
	      
	  } catch(err)  {    
	  	
	  		if(document.getElementById("ffplayer").GetSource().indexOf(".mp3")==-1){
	      	   document.getElementById("ffplayer").SetSource(audio_domain+mp3s[index]);
	      	   
	      	 }
	     
	      document.getElementById("ffplayer").DoPlay();
	  }  
      
      lrcrun();
      
      break;    
    case 0 : //停止
     try  {  
		  	var temp=document.getElementById("aboutplayer").controls.isAvailable('Play');
     		document.getElementById("aboutplayer").controls.stop();
     	}	catch(err)  {    	  	
	      document.getElementById("acrealplayer").DoStop();
	  }  
     		
      break;    
  }
}  


function lrcClass(tt) {
	
var lrcbox=document.getElementById("lrcbox");
var lrcbc=lrcbox;
var lrcwt1=document.getElementById("lrcwt1");
var lrcwt2=document.getElementById("lrcwt2");
var lrcwt3=document.getElementById("lrcwt3");
var lrcwt4=document.getElementById("lrcwt4");
var lrcwt5=document.getElementById("lrcwt5");
var lrcwt6=document.getElementById("lrcwt6");



var lrcoll=document.getElementById("lrcoll");

this.inr = []; 
this.min = []; 

this.oTime = 0; 

this.dts = -1; 
this.dte = -1; 
this.dlt = -1; 
this.ddh; 
this.fjh; 


if(/\[offset\:(\-?\d+)\]/i.test(tt)) 
this.oTime = RegExp.$1/1000; 

tt = tt.replace(/\[\:\][^$\n]*(\n|$)/g,"$1"); 
tt = tt.replace(/\[[^\[\]\:]*\]/g,""); 
tt = tt.replace(/\[[^\[\]]*[^\[\]\d]+[^\[\]]*\:[^\[\]]*\]/g,""); 
tt = tt.replace(/\[[^\[\]]*\:[^\[\]]*[^\[\]\d\.]+[^\[\]]*\]/g,""); 
tt = tt.replace(/<[^<>]*[^<>\d]+[^<>]*\:[^<>]*>/g,""); 
tt = tt.replace(/<[^<>]*\:[^<>]*[^<>\d\.]+[^<>]*>/g,""); 

while(/\[[^\[\]]+\:[^\[\]]+\]/.test(tt)) 
{ 
tt = tt.replace(/((\[[^\[\]]+\:[^\[\]]+\])+[^\[\r\n]*)[^\[]*/,"\n"); 
var zzzt = RegExp.$1; 
/^(.+\])([^\]]*)$/.exec(zzzt); 
var ltxt = RegExp.$2; 
var eft = RegExp.$1.slice(1,-1).split("]["); 
for(var ii=0; ii<eft.length; ii++) 
{ 
var sf = eft[ii].split(":"); 
var tse = parseInt(sf[0],10) * 60 + parseFloat(sf[1]); 
var sso = { t:[] , w:[] , n:ltxt } 
sso.t[0] = tse-this.oTime; 
this.inr[this.inr.length] = sso; 
} 
} 
this.inr = this.inr.sort( function(a,b){return a.t[0]-b.t[0];} ); 

for(var ii=0; ii<this.inr.length; ii++) 
{ 
while(/<[^<>]+\:[^<>]+>/.test(this.inr[ii].n)) 
{ 
this.inr[ii].n = this.inr[ii].n.replace(/<(\d+)\:([\d\.]+)>/,"%=%"); 
var tse = parseInt(RegExp.$1,10) * 60 + parseFloat(RegExp.$2); 
this.inr[ii].t[this.inr[ii].t.length] = tse-this.oTime; 
} 

lrcbc.innerHTML = this.inr[ii].n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/%=%/g,"</font><font>");
var fall = lrcbc.getElementsByTagName("font"); 
for(var wi=0; wi<fall.length; wi++) 
this.inr[ii].w[this.inr[ii].w.length] = fall[wi].offsetWidth; 
this.inr[ii].n = lrcbc.innerHTML; 
} 

for(var ii=0; ii<this.inr.length-1; ii++) 
this.min[ii] = Math.floor((this.inr[ii+1].t[0]-this.inr[ii].t[0])*10); 
this.min.sort(function(a,b){return a-b}); 
min = this.min[0]/2; 

this.run = function(tme){ 
	if(tme<this.dts || tme>=this.dte) 
	{ 
		var ii; 
		for(ii=this.inr.length-1; ii>=0 && this.inr[ii].t[0]>tme; ii--){} 
		if(ii<0) return; 
		this.ddh = this.inr[ii].t; 
		this.fjh = this.inr[ii].w; 
		this.dts = this.inr[ii].t[0]; 
	
		
		this.dte = (ii<this.inr.length-1)?this.inr[ii+1].t[0]:document.getElementById("aboutplayer").currentMedia.duration; 
			
		lrcwt1.innerHTML = this.retxt(ii-3); 
		lrcwt2.innerHTML = this.retxt(ii-2); 
		lrcwt3.innerHTML = this.retxt(ii-1); 
		lrcwt4.innerHTML = this.retxt(ii+1); 
		lrcwt5.innerHTML = this.retxt(ii+2); 
		lrcwt6.innerHTML = this.retxt(ii+3); 
		
		
		this.print(this.retxt(ii)); 
		if(this.dlt==ii-1) 
		{ 
			clearTimeout(lrc0); 
			
			if(parseInt(lrcoll.style.top)!=0) lrcoll.style.top = 0; 
			golrcoll(0); 
			clearTimeout(lrc1); 
		} 
		else if(parseInt(lrcoll.style.top)!=-20) 
		{ 
			clearTimeout(lrc0); 
			lrcoll.style.top = -20; 
			clearTimeout(lrc1); 
		} 
		
		this.dlt = ii; 
	} 
	
	var bbw = 0; 
	var ki; 
	for(ki=0; ki<this.ddh.length && this.ddh[ki]<=tme; ki++) 
		bbw += this.fjh[ki];
		 
	var kt = ki-1; 
	var sc = ((ki<this.ddh.length)?this.ddh[ki]:this.dte) - this.ddh[kt]; 
	var tc = tme - this.ddh[kt]; 
	bbw -= this.fjh[kt] - tc / sc * this.fjh[kt]; 
	
	if(bbw>lrcbox.offsetWidth) 
		bbw = lrcbox.offsetWidth; 

} 


this.retxt = function(i) 
{ 
	return (i<0 || i>=this.inr.length)?"":this.inr[i].n; 
} 

//输出当前的字幕
this.print = function(txt){		
	lrcbox.innerHTML = txt; 	
} 
 
lrcwt1.innerHTML = ""; 
lrcwt2.innerHTML = ""; 
lrcwt3.innerHTML = ""; 
lrcwt4.innerHTML = ""; 
lrcwt5.innerHTML = ""; 
lrcwt6.innerHTML = ""; 



} 

function lrcrun(){
	var musicplayer;
	try{
		musicplayer=document.getElementById("aboutplayer");
		with(musicplayer) 
		{ 
		    
			if(lrcdata!=""){
				lrcobj.run(controls.currentPosition); 
			}else{
				document.getElementById("lrcbox").innerHTML="未找到lrc文件";
			}
			
			
			if(currentMedia.duration>0){					
				$('#slider').slider('value',controls.currentPosition*100/currentMedia.duration);
				document.getElementById("playtime").innerHTML=controls.currentPositionString+"/"+currentMedia.durationString;
			}
		} 

	}catch(err)  {
		
			musicplayer=document.getElementById("aboutplayer");
			//lrcobj.run(musicplayer.GetPosition()); 			
			if(musicplayer.GetLength()>0){
				var ttime=parseInt(musicplayer.GetLength()/60000)+":"+parseInt(musicplayer.GetLength()%60000/1000);
				var ctime=parseInt(musicplayer.GetPosition()/60000)+":"+parseInt(musicplayer.GetPosition()%60000/1000);
				document.getElementById("playtime").innerHTML=ctime+"/"+ttime;
			}
			
	}
	
	timer=setTimeout("lrcrun()",500); 
} 




function chkStatus(){
    var arg=arguments;
    switch(arg[0]){
        case 1:{
            switch(arg[1]){
                case 6:{
                    document.getElementById("lrcbox").innerHTML=" 断开连接";
                    break;
                };
                case 8:{
                    document.getElementById("lrcbox").innerHTML=" 同步读取出错";
                    break;
                };
                case 9:{
                    document.getElementById("lrcbox").innerHTML=" 正在定位媒体";
                    break;
                };
                case 10:{
                    document.getElementById("lrcbox").innerHTML=" 正在打开媒体";
                    break;
                };
                case 12:{
                    document.getElementById("lrcbox").innerHTML=" 正在打开媒体";
                    break;
                };
                case 13:{
                    document.getElementById("lrcbox").innerHTML=" 持续连接中";
                    break;
                };
                case 21:{
                    document.getElementById("lrcbox").innerHTML=" 打开未知地址";
                    break;
                };
                default:{
                    Play_state.innerText=arg[0]+":"+arg[1];
                    break;
                };
            };
            break;
        };
        case 2:{
            switch(arg[1]){
                case 1:{
                    document.getElementById("lrcbox").innerHTML=" 已停止";
                    break;
                };
                case 2:{
                    var state=" 已暂停";
                    break;
                };
                case 3:{
                    var state=" 正在播放";
                  
                    break;
                };
                case 6:{
                    document.getElementById("lrcbox").innerHTML=" 开始缓冲";
                    break;
                };
                case 8:{
                    document.getElementById("lrcbox").innerHTML=" 跳到下一首";
                    break;
                };
                case 9:{
                    document.getElementById("lrcbox").innerHTML="正在连接到媒体";
                    break;
                };
                case 10:{
                    document.getElementById("lrcbox").innerHTML=" 准备就绪 等待中";
                    var max = document.getElementById("aboutplayer").error.errorCount - 1 ;                   
					// Store the most recent error in an error item object.
					var errItem = document.getElementById("aboutplayer").error.item(max);
					// Use the error item object to store the error info.
					errDesc = errItem.errorDescription;
					 if(errItem.errorCode==-1072885353){
                    		document.getElementById("lrcbox").innerHTML="文件打不开";
                    }else{
                    	document.getElementById("lrcbox").innerHTML=errDesc;
                    }
                  	document.getElementById("aboutplayer").error=null;
                  
                  	
                    break;
                };
                default:{
                    break;
                };
                
            };
            break;
            
        };
        case 3:{
            switch(arg[1].toString ().toLowerCase()){
                case "true":{
                    document.getElementById("lrcbox").innerHTML=" 缓冲中";
                    break;
                };
                case "false":{
                    document.getElementById("lrcbox").innerHTML="缓冲完成<br>字幕加载中...";
                    break;
                };
                default:{
                   
                    break;
                };
            };
            break;
        };
    };
}; 
