/* ====================== 参数设置 ===================*/
var ERROR_1 = "操作失败，请重新尝试，如给您带来不便敬请谅解";
var ERROR_2 = "不能删除当前播放的歌曲";
var ERROR_3 = "网络连接失败0，请重试";

var MSG_1 = "添加歌曲成功";
var MSG_2 = "列表已清空";

var alert_msg = 1;   // 屏蔽弹出消息

var AJAX_URL = "http://music.xunlei.com/music_list.php";
var PLAY_TYPE = 1;   // 1 顺序播放  2 随机播放 3 单曲播放
var COOKIE_NAME = "_xlmusiclist";
var COOKIE_PLAYMODE = "_xlmusicpm";
var WINNAME = "xPlayer";   // 有直接使用xPlayer的地方，更改需搜索

var newwindow = null;
var last_status = 0;
var jump_times = 0;


/* ====================== 对外操作接口 ===================*/
function play_one(ttrackid) {
	listPlayOneTrack(ttrackid);
}

function add_one(ttrackid) {
	listAddOneTrack(ttrackid);
}

function play_album(albumid) {
	var url = "http://music.xunlei.com/play_album.php?type=play&albumid="+albumid;
	open_window(url);
}

function add_album(albumid) {
	if (checkWindowIsOpen()) {
		createXMLHttpRequest();
		var ctrackids = listGet();
		var args = "type=getalbum&albumid="+albumid+"&"+rand(999999);
		xmlHttp.open("GET", AJAX_URL+"?"+args, true);
		xmlHttp.onreadystatechange = function(){handleStateChange4('add')};
		xmlHttp.send(null);  
	} else {
		var url = "http://music.xunlei.com/play_album.php?type=add&albumid="+albumid;
		open_window(url);
	}
}

function play_album_list(theform) {
	var trackids = "";
	elm=theform.elements;
	var dot = "" ;
	var j = 0 ;
  	for(i=0;i<elm.length;i++) {
   		if(elm[i].type=="checkbox" && elm[i].checked==true && elm[i].value>0) {
			trackids += dot + elm[i].value;
			j ++ ;
		}
		if (j > 0)
			dot = "," ;
	}	
	if (trackids == '') {
		alert('未选中任何要播放的专辑!');
		return;
	}
	play_album(trackids);
}

function add_album_list(theform) {
	var trackids = "";
	elm=theform.elements;
	var dot = "" ;
	var j = 0 ;
  	for(i=0;i<elm.length;i++) {
   		if(elm[i].type=="checkbox" && elm[i].checked==true && elm[i].value>0) {
			trackids += dot + elm[i].value;
			j ++ ;
		}
		if (j > 0)
			dot = "," ;
	}	
	if (trackids == '') {
		alert('未选中任何要加入列表的专辑!');
		return;
	}
	add_album(trackids);
}


function play_list(theform) {
	var trackids = "";
	elm=theform.elements;
	var dot = "" ;
	var j = 0 ;
  	for(i=0;i<elm.length;i++) {
   		if(elm[i].type=="checkbox" && elm[i].checked==true && elm[i].value>0) {
			trackids += dot + elm[i].value;
			j ++ ;
		}
		if (j > 0)
			dot = "," ;
	}	
	if (trackids == '') {
		alert('未选中任何要播放的歌曲!');
		return;
	}
	listPlaySomeTrack(trackids);
}

function add_list(theform) {
	var trackids = "";
	elm=theform.elements;
	var dot = "" ;
	var j = 0 ;
  	for(i=0;i<elm.length;i++) {
   		if(elm[i].type=="checkbox" && elm[i].checked==true && elm[i].value>0) {
			trackids += dot + elm[i].value;
			j ++ ;
		}
		if (j > 0)
			dot = "," ;
	}	
	if (trackids == '') {
		alert('未选中任何要加入列表的歌曲!');
		return;
	}
	listAddSomeTrack(trackids);
}

function only_add_list(theform) {
	var trackids = "";
	elm=theform.elements;
	var dot = "" ;
	var j = 0 ;
  	for(i=0;i<elm.length;i++) {
   		if(elm[i].type=="checkbox" && elm[i].checked==true && elm[i].value>0) {
			trackids += dot + elm[i].value;
			j ++ ;
		}
		if (j > 0)
			dot = "," ;
	}	
	if (trackids == '') {
		alert('未选中任何要播放的歌曲!');
		return;
	}
	var set_trackids = listAdd(trackids);
	listSet(set_trackids);
}

/* ====================== 播放列表操作 ===================*/
function listAddOneTrack(a_trackid) {
	var set_trackids = listAdd(a_trackid);
	listSet(set_trackids);
	addPage();
}

function listPlayOneTrack(a_trackid) {
	//listEmpty();
	var play_trackid = listGetFirst2(a_trackid);
	var set_trackids = listAdd(a_trackid);
	listSet(set_trackids);
	playPage(play_trackid);
}

function listAddSomeTrack(a_trackids) {
	var set_trackids = listAdd(a_trackids);
	listSet(set_trackids);
	addPage();
}

function listPlaySomeTrack(a_trackids) {
	//listEmpty();
	var play_trackid = listGetFirst2(a_trackids);
	var set_trackids = listAdd(a_trackids);
	listSet(set_trackids);
	playPage(play_trackid);
}

/* 列表添加id串 */
function listAdd(a_trackids) {
	var ctrackids = listGet();
	var c_tmmp = ctrackids.split(",");
	var tmp=a_trackids.toString().split(",");
	if (c_tmmp.length+tmp.length>100) {
		alert('播放列表只能添加100首歌曲');
		alert_msg = 0;
		return ctrackids;
	}
	for (i=0; i<tmp.length; i++) {
		if (ctrackids != "" && ctrackids.indexOf(parseInt(tmp[i])) != -1) {
		} else if (i==0 && ctrackids == '') {
			ctrackids = parseInt(tmp[i]).toString();
		} else {
			ctrackids += ","+parseInt(tmp[i]);
		}
	}
	
	return ctrackids;
	
}

/* 删除列表中某一id */
function listDel(a_trackid) {
	var ctrackids = listGet();
	if (ctrackids == '') {
		return "";
	}
	var tmp=ctrackids.split(",");
	var out = '';
	for (i=0; i<tmp.length; i++) {
		if (a_trackid == parseInt(tmp[i])) {
		} else if (out == '') {
			out = parseInt(tmp[i]).toString();
		} else {
			out += ","+parseInt(tmp[i]);
		}
	}
	return out;
}

/* 列表头一id */
function listGetFirst() {
	var ctrackids = listGet();
	if (ctrackids == '') {
		return "";
	}
	var tmp=ctrackids.split(",");  
	return parseInt(tmp[0]);
}

function listGetFirst2(ctrackids) {
	if (ctrackids == '') {
		return "";
	}
	try {
		var tmp=ctrackids.split(",");  
		return parseInt(tmp[0]);
	} catch (e) {
		return ctrackids;
	}
	
}

function listGetPre2(tmp,s_trackid, tmp_length) {   // 指定列表和s_trackid
	try {
		if (PLAY_TYPE == 1) {
			for(var i=0; i<tmp_length; i++) {
				if (tmp[i].trackid == s_trackid) {	
					if (i == 0) {
						return tmp[tmp_length-1].trackid;
					} else {
						return tmp[i-1].trackid;
					}
				}
			}
			return tmp[0];
		} else if (PLAY_TYPE == 2) {
			var index = rand(tmp_length)-1;
			if (index<0) index=0;
			return tmp[index].trackid;
		} else {
			return s_trackid;
		}
	} catch (e) {
		return s_trackid;
	}
}

function listGetNext2(tmp,s_trackid, tmp_length) {   // 指定列表和s_trackid
	try {
		if (PLAY_TYPE == 1) {
			for(var i=0; i<tmp_length; i++) {
				if (tmp[i].trackid == s_trackid) {	
					if (i+1 == tmp_length) {
						return tmp[0].trackid;
					} else {
						return tmp[i+1].trackid;
					}
				}
			}
			return tmp[0];
		} else if (PLAY_TYPE == 2) {
			var index = rand(tmp_length)-1;
			if (index<0) index=0;
			return tmp[index].trackid;
		} else {
			return s_trackid;
		}
	} catch (e) {
		return s_trackid;
	}
}

/* 列表上一id */
function listGetNext() {
	var ctrackids = listGet();
	
	if (ctrackids == '') {
		return "";
	}
	var tmp=ctrackids.split(",");  
	if (PLAY_TYPE == 1) {
		for(var i=0; i<tmp.length; i++) {
			if (tmp[i] == trackid) {	
				if (i+1 == tmp.length) {
					return tmp[0];
				} else {
					return tmp[i+1];
				}
			}
		}
		return tmp[0];
	} else if (PLAY_TYPE == 2) {
		var index = rand(tmp.length)-1;
		if (index<0) index=0;
		return tmp[index];
	} else {
		return trackid;
	}
	
}

/* 列表上一id */
function listGetPre() {
	var ctrackids = listGet();
	if (ctrackids == '') {
		return "";
	}
	var tmp=ctrackids.split(",");  
	if (PLAY_TYPE == 1) {
		for(var i=0; i<tmp.length; i++) {
			if (tmp[i] == trackid) {	
				if (i == 0) {
					return tmp[tmp.length-1];
				} else {
					return tmp[i-1];
				}
			}
		}
		return tmp[0];
	} else if (PLAY_TYPE == 2) {
		var index = rand(tmp.length)-1;
		if (index<0) index=0;
		return tmp[index];
	} else {
		return trackid;
	}
}

function listEmpty() {
	listSet("");
}

function listGet() {
	return getCookie(COOKIE_NAME);
}

function listSet(value){
	setCookie(value, COOKIE_NAME)
}

function getCookie(name){
	var search = name + "=";
	var offset = document.cookie.indexOf(search);
	if (offset != -1) {
		offset += search.length;
		var end = document.cookie.indexOf(";", offset);
		if (end == -1)
			end = document.cookie.length;
		return unescape(document.cookie.substring(offset, end));
	}
	else return "";
}

function setCookie(value, name){
	var hours = 24*365;
	var expireDate=new Date(new Date().getTime()+hours*3600000);
	document.cookie = name + "=" + escape(value) + "; path=/; domain=xunlei.com; expires=" + expireDate.toGMTString() ;
}


/* ====================== 窗口操作 ===================*/
function addPage() {
	// 检查播放页面是否存在，如果存在，刷新播放列表，如果不存在
	trackid = listGetFirst();
	player_window(trackid, 0);
	my_alert(MSG_1);
}

function playPage(trackid) {
	player_window(trackid, 1);
}

function player_window(trackid, f) {
	if (checkWindowIsOpen() && !f) {
	} else {
		var url = "http://music.xunlei.com/play/"+trackid+".html";
		open_window(url);
	}
}

function open_window(url) {
	//newwindow=window.open(url,WINNAME,'scrollbars=yes,resizable=yes,width=824,height=660,toolbar=yes, menubar=yes, resizable=yes, location=yes, status=yes');
	newwindow=window.open(url,WINNAME);
	//newwindow.focus();

}

/* ====================== 歌曲信息操作 ===================*/
function createXMLHttpRequest() {
	xmlHttp = null;
	if (window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	}
}

function getList() {
	createXMLHttpRequest();
	var ctrackids = listGet();
	
	var args = "type=get&trackids="+ctrackids+"&trackid="+trackid+"&"+rand(999999);
	xmlHttp.open("GET", AJAX_URL+"?"+args, true);
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.send(null);  
}

function getTrackInfo(trackid, albumid) {
	createXMLHttpRequest();
	var args = "type=gettrackinfo&albumid="+albumid+"&trackid="+trackid;
	xmlHttp.open("GET", AJAX_URL+"?"+args, true);
	xmlHttp.onreadystatechange = function(){handleStateChange2(trackid)};
	xmlHttp.send(null);  
}

function playShowDetails(trackid) {
	if (document.getElementById('detail_'+trackid).innerHTML == '' || document.getElementById('detail_'+trackid).innerHTML == '<div></div>') { 
		createXMLHttpRequest();
		if (trackid.toString().indexOf('_')!=-1){
			var ttmp = trackid.split("_");
			var ttrackid = ttmp[1];
		} else {
			var ttrackid = trackid;
		}
		var args = "type=show_detail&trackids="+ttrackid;
		xmlHttp.open("GET", AJAX_URL+"?"+args, true);
		xmlHttp.onreadystatechange = function(){handleStateChange3(trackid)};
		xmlHttp.send(null);
	} else {
		document.getElementById('td_'+trackid).className="nodetail" ;
		document.getElementById('detail_'+trackid).innerHTML = "";
	}
}

function handleStateChange3(trackid) {
	if(xmlHttp.readyState == 4) {
		if(xmlHttp.status == 200) {
			document.getElementById('td_'+trackid).className="showdetail" ;
			document.getElementById('detail_'+trackid).innerHTML = xmlHttp.responseText;
		} else {
			document.getElementById('detail_'+trackid).innerHTML = '<center>网络连接失败，请<a href="javascript:void(0)" onclick="showDetail('+trackid+')">点击</a>重试</center>';
		}
	}
}

function handleStateChange4(type) {
	var error_flag = false;
	if(xmlHttp.readyState == 4) {
		if(xmlHttp.status == 200) {
			if (type == 'add') {
				var set_trackids = listAdd(xmlHttp.responseText);
				listSet(set_trackids);
				my_alert(MSG_1);
			}
		} else {
			if (!error_flag) {
				alert(ERROR_3);
				error_flag = true;
			}			
		}
	}
}

function handleStateChange2(trackid) {
	if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
		__url = xmlHttp.responseText;
		musicInit();
		if (list_tab>1)	{
			var set_trackids = listAdd(trackid);
			listSet(set_trackids);
		}		
		getList();
	} else {
		//document.getElementById('playList').innerHTML = '<center>网络连接失败2，请<a href="javascript:void(0)" onclick="window.location.reload()">点击</a>重试</center>';
	}
}

function handleStateChange() {
	if(xmlHttp.readyState == 4) {
		if(xmlHttp.status == 200) {
			__data = eval(xmlHttp.responseText);
			showList(__data);
			last_cookie = listGet();
		} else {
			//document.getElementById('playList').innerHTML = '<center>网络连接失败，请<a href="javascript:void(0)" onclick="getList()">点击</a>重试</center>';
		}
	}
}

function playListDel(a_trackid) {
	var set_trackids = listDel(a_trackid);
	listSet(set_trackids);
	getList();
}

function playListEmpty(a_trackid) {
	if (confirm("确定要清空播放列表？")) {
		listEmpty();
		getList();
		//alert(MSG_2);
	}
}

function showList2(a) {
	var str = '';
	for(var i=0; i<a.length; i++) {
		str += "<div>\
				<span style='width:120px' class='myListSong'><a href='http://music.xunlei.com/play/"+a[i].trackid+".html'>"+ (i+1) +"."+a[i].title+"</a></span>\
				<span style='width:60px'>"+a[i].artist+"</span>\
				<span style='width:31px'><a style='cursor:hand;' onclick='playShowDetails("+a[i].trackid+")'><img src=\"http://images.music.xunlei.com/images/geci.gif\" alt=\"有歌词\" /</a></span>\
				<span style='width:31px'><a style='cursor:hand;' onclick='playListDel("+a[i].trackid+")'><img src=\"http://images.music.xunlei.com/images/del.gif\" alt=\"删除\" /></a></span>\
				</div><div id='detail_"+a[i].trackid+"'></div>\
				";
	}
	document.getElementById('playList').innerHTML = str;
}

function showList(a) {
	
	var str = '';
	if (a == 0) {
		str = '<tr><td colspan=\"4\">尚未添加任何歌曲，<a style="cursor:hand" title="添加歌曲" onclick="openTrackSearch()">点击</a>添加</td></tr>';
	} else {
		var scroll_num = 0;
		for(var i=0; i<a.length; i++) {
			if (list_tab == 1 && a[i].trackid == trackid) {
				var no_show = ' <img src="http://images.music.xunlei.com/images/now_play.gif" alt="当前播放歌曲" />';
				var tr_class = ' class="now_play"';
				var tr_class2 = ' now_play';
				scroll_num = i;
			} else {
				var no_show = ' '+ (i+1) +'.';
				var tr_class = '';
				var tr_class2 = '';
			}
			str += "<tr onMouseOver='trOn(this)' onMouseOut='trOut(this)'>\
					<td class='myListSong'><div class='list_title'><a"+tr_class+" href='http://music.xunlei.com/play/"+a[i].trackid+".html' title='"+a[i].title+"'>"+ no_show +" "+a[i].title+"</a></div></td>\
					<td style=\"width:60px\"><div class='list_artist"+tr_class2+"'>"+a[i].artist+"</div></td>\
					<td><a style='cursor:hand;' onclick='playShowDetails("+a[i].trackid+")'><img src=\"http://images.music.xunlei.com/images/geci.gif\" alt=\""+a[i].title+" 相关信息\" /></a></td>\
					<td><a style='cursor:hand;' onclick='playListDel("+a[i].trackid+")'><img src=\"http://images.music.xunlei.com/images/del.gif\" alt=\"删除\" /></a></td>\
					</tr><tr><td colspan=\"4\" class=\"nodetail\" id='td_"+a[i].trackid+"'><div id='detail_"+a[i].trackid+"'></div></td></tr>\
					";
					//alert(str);
		}
	}
	document.getElementById('playList').innerHTML = "<table>" + str + "</table>";
	document.getElementById('myList').scrollTop = scroll_num*28;
}

function showOtherList(div_no, hot_tab, num) {
	var str = '';
	if (div_no == 2) {
		var a = list_hot[hot_tab];
	} else if (div_no == 3) {
		var a = list_random;
	} else {
		return;
	}

	if (a == 0) {
		str = '<tr><td colspan=\"4\" class=\"nodetail\">尚未添加任何歌曲，点击添加</td></tr>';
	} else {
		var scroll_num = 0;
		var a_length = a.length>num ? num : a.length;
		if (div_no == 2) {
			var url_add = "#hot_"+hot_tab;
		} else if (div_no == 3) {
			var url_add = "#random";
		}
		//alert(list_tab);alert(div_no);
		if (list_tab == div_no) {
			__next_url = "http://music.xunlei.com/play/"+listGetNext2(a,trackid, a_length)+".html"+url_add;
			__pre_url = "http://music.xunlei.com/play/"+listGetPre2(a,trackid, a_length)+".html"+url_add;
		}
		for(var i=0; i<a_length; i++) {
			if (list_tab == div_no && a[i].trackid == trackid) {
				var no_show = ' <img src="http://images.music.xunlei.com/images/now_play.gif" alt="当前播放歌曲" />';
				var tr_class = ' class="now_play"';
				var tr_class2 = ' now_play';
				scroll_num = i;
			} else {
				var no_show = ' '+ (i+1) +'.';
				var tr_class = '';
				var tr_class2 = '';
			}	
			str += "<tr onMouseOver='trOn(this)' onMouseOut='trOut(this)'>\
					<td class='myListSong'><div class='list_title'><a"+tr_class+" href='http://music.xunlei.com/play/"+a[i].trackid+".html"+url_add+"' title='"+a[i].title+"'>"+ no_show +" "+a[i].title+"</a></div></td>\
					<td style='width:65px'><div class='list_artist'>"+a[i].artist+"</div></td>\
					<td style='width:56px'><a style='cursor:hand;' onclick='playShowDetails(\""+div_no+"_"+a[i].trackid+"\")'><img src=\"http://images.music.xunlei.com/images/geci.gif\" alt=\""+a[i].title+" 相关信息\" /></a></td>\
					</tr><tr><td colspan=\"3\" class=\"nodetail\" id='td_"+div_no+"_"+a[i].trackid+"'><div id='detail_"+div_no+"_"+a[i].trackid+"'></div></td></tr>\
					";
					//alert(str);
		}
	}
	document.getElementById('playList'+div_no).innerHTML = "<table>" + str + "</table>";
	document.getElementById('myList'+div_no).scrollTop = scroll_num*28;
}

function changeMusic(r) {
	//alert(r);
	if (r == 8) {
		//alert(r);
		playNext();
	}
}

function openMusic(r) {
	if (r==10 && last_status == 9){
		last_status = r;
		//jump_times++;
		//playNext();
	} else {
		last_status = r;
	}
}

function playNext() {
	try {
		if (list_tab == 1) {
			var id = listGetNext();
			if (id>0 && typeof(id)!='undefined') {
				window.location.href="http://music.xunlei.com/play/"+id+".html";
			}
		} else {
			if (__next_url!='') {
				window.location.href=__next_url;
			}
		}
	} catch (e) { }
}

function playPre() {
	try {
		if (list_tab == 1) {
			var id = listGetPre();
			if (id>0 && typeof(id)!='undefined') {
				window.location.href="http://music.xunlei.com/play/"+id+".html";
			}
		} else {
			if (__pre_url!='') {
				window.location.href=__pre_url;
			}
		}
	} catch (e) { }
}

/* ====================== 其他 ===================*/
function rand(num){
	return Math.floor(Math.random()*num)+1; 
}

function randomsort(a, b) {
        return Math.random()>0.5 ? -1 : 1;
}

function musicInit() {
	try {
		if (__url == 0 && jump_times<=3) {
			playNext();
			jump_times++;
		} else {
			mplayer.url=__url;
			mplayer.controls.play();
			jump_times = 0;
		}
	} catch (e) {}
}

function setPlayWindow() {
	var tmp = new Date().getTime();
	setCookie(tmp, 'play_window_date');
}

function checkWindowIsOpen() {
	var last_date = getCookie('play_window_date');
	var now_date = new Date().getTime();
	//if (newwindow==null || newwindow.closed) {
	if (now_date-last_date>2000) {
		return false;
	}
	return true;
}

function checkListIsChange() {
	var new_cookie = listGet();
	if (new_cookie != last_cookie) {
		last_cookie = new_cookie;
		getList();
	}
	return false;
}

function my_alert(msg) {
	if (alert_msg) {
		alert(msg);
	} else {
		alert_msg = 1;
	}
}

var last_cookie = listGet();