// JavaScript Document
// STCMS Player JS Packet
// Copyright (C) http://www.phpstcms.com
// Author: Dahongy@gmail.com
var Player = {
	player_win:'STCMS_Player',
	win_obj:Object(),
	win_param:'scrollbars=no,menubar=no,statusbar=no,locationbar=no,resizable=no,width=600,height=480',
	// 添加歌曲到播放列表
	// @param mid 字符串 id_id_id形式
	add:function(mid) {
		return Player.list(mid, 'add');
	},
	// 添加歌曲到播放列表并播放
	// @param mid 字符串 id_id_id形式
	play:function(mid) {
		return Player.list(mid, 'play');
	},
	// 添加一个url地址到播放列表
	// @param url 字符串 歌曲地址
	// @param name 字符串 歌曲名称
	play_url:function(url, name) {
		if(typeof url == 'undefined') {return false;}
		if(typeof name == 'undefined') {name = url.match(/\/([^\/]+)$/)[1]}
		if(Player.get_setting('opened')!='1') {Player.openwin();}
		Player.set_setting('list_changed', '1');
		Player.set_setting('new_list', encodeURIComponent(url)+'|'+encodeURIComponent(name));
		Player.set_setting('changed_type', 'url');
	},
	// 播放列表操作
	// @param mid 字符串 id_id_id形式
	// @param type 字符串，取值为add或者play，即添加到播放列表后是否播放，add表示仅追加列表，play表示追加列表后播放
	list:function(mid, type) {
		mid = mid.toString();
		if(mid.match(/^[\d_]+$/)) {
			if(Player.get_setting('opened')!='1') {Player.openwin();}
			var play_list = Player.get_setting('play_list');
			if(play_list) {
				play_list = play_list.split('_');
			}
			var tmp_mid_array = new Array();
			tmp_mid_array = mid.split('_');
			var new_list = new Array();
			for(var index=0; index<tmp_mid_array.length; index++) {
				if(play_list) {
					if(!in_array(tmp_mid_array[index], play_list)) {
						new_list.push(tmp_mid_array[index]);
					}
				} else {
					new_list.push(tmp_mid_array[index]);
				}
			}
			if(new_list.length>0) {
				Player.set_setting('new_list', new_list.join('_'));
				Player.set_setting('list_changed', '1');
				Player.set_setting('changed_type', type);
			} else {
				SU.tip('您选择的歌曲已经在列表中！');
			}
		} else {
			SU.tip('请选择列表中的歌曲！');
			return false;
		}
		// 检测浏览器窗口打开情况
		var elapsed_time = 0;
		var listen_cookies_change = function() {
				if(Player.get_setting('list_changed')=='1') {
					elapsed_time++;
					if(elapsed_time>20) {
						Player.openwin();
					} else {
						setTimeout(listen_cookies_change, 100);
					}
				}
		}
		listen_cookies_change();
	},
	// 添加整个专辑的歌曲到播放列表
	// @param aid 数值 专辑id
	add_album:function(aid) {
		if(Player.get_setting('opened')!='1') {
			Player.openwin();
		}
		$.ajax({
			url:u('player','get_album_muisc', $.param(AUTH_DATA)),
			data:{'aid':aid},
			type:'POST',
			success:function(data){Player.add(data);}
		});
	},
	// 添加整个专辑的歌曲到播放列表并播放
	// @param aid 数值 专辑id
	play_album:function(aid) {
		if(Player.get_setting('opened')!='1') {
			Player.openwin();
		}
		$.ajax({
			url:u('player','get_album_muisc', $.param(AUTH_DATA)),
			data:{'aid':aid},
			type:'POST',
			success:function(data){Player.add(data);}
		});
	},
	// 打开播放窗口
	openwin:function() {
		Player.win_obj = window.open(u('player','index'), Player.player_win, Player.win_param);
		if(Player.win_obj) {
			Player.set_setting('opened', '1');
		} else {
			alert('打开播放窗口失败，请设置浏览器临时允许弹出窗口！');
			Player.set_setting('opened', '');
		}
	},
	// 取得播放器设置，支持opened（播放窗口是否打开）、list_changed（播放列表已变更）、new_list（临时列表，可以是mid列表也可以是url数据）、change_type（列表变化类型，add、play或url）
	get_setting:function(name) {
		if(typeof COOKIE_PREFIX == 'undefined') {
			var COOKIE_PREFIX = 'stcms_';
		}
		return get_cookie(COOKIE_PREFIX+'_Player_'+name);
	},
	// 设置播放器，支持opened（播放窗口是否打开）、list_changed（播放列表已变更）、new_list（临时列表）、change_type（列表变化类型，add或者play）
	set_setting:function(name, value) {
		if(typeof COOKIE_PREFIX == 'undefined') {
			var COOKIE_PREFIX = 'stcms_';
		}
		return set_cookie(COOKIE_PREFIX+'_Player_'+name, value);
	},
	// 删除数组中重复的值
	unique:function(array) {
		var result = new Array();
		if(typeof array != 'object') {
			return false;
		}
		for(i in array) {
			if(!in_array(array[i], result) && array[i]) {
				result.push(array[i]);
			}
		}
		return result;
	},
	// 向播放器窗口发送命令
	cmd:function(callback) {
		if(Player.get_setting('opened') && Player.win_obj) {
			if(Player.win_obj.document.readyState!='complete' || Player.win_obj.location.href=='about:blank') {
				setTimeout(function(){return Player.cmd(callback)}, 50);
			} else {
				return new callback();
			}
		}
	}
}
