// ------------------------------------------------------------------------------------------ Config
var config = {
	'player_title'				: 'Gi\xE1o l\xFD \x42\xECnh \x41n - www.GiaoLyBinhAn.com',
	'player_width'				: 700,
	'player_height'				: 334,
	'player_minimize'			: false,
	'player_autoStart'		: true,
	'player_contextMenu'	: false,
	'player_selectText'		: false,
	'player_autoScroll'		: false,
	'player_next_onError'	: true,
	'playlist_autoScroll'	: true,
	'playlist_control'		: 'DblClick',									// Click, DblClick
	'list_title_length'		: 265,
	'list_opt_width'			: 16,
	'list_prefix_name'		: 'Track',
	'favour_enable'				: true,
	'download_enable'			: true,
	'timer_autoStart'			: 500,
	'timer_status'				: 200,
	'timer_new'						: 500,
	'opt_random'					: 'on',												// on, off
	'opt_repeat'					: 'off',											// all, track, off
	'home_URL'						: [false, 'giaolybinhan.com', 'giaolybinhan.com'],
	'media_URL'						: 'http://localhost/null.php',
	'clear_URL'						: 'images/bbCode/clear.png',
	'media_Volume'				: 100,												// 0 ~> 100
	'media_contextMenu'		: false,
	'media_stretchToFit'	: true,
	'embed_width'					: 300,
	'embed_height'				: 42,
	'embed_loop'					: 1,
	'embed_autoStart'			: true,
	'embed_contextMenu'		: true,
	'embed_default_str'		: 'No media loaded',
	'bbCode_Name'					: 'MEDIA',
	'bbCode_Forum'				: 'MUSIC',
	'download_support'		: ['Giáo lý Bình An', 'http://giaolybinhan.com'],	// Không sửa mục này
	'main_tabs'				: ['Danh m&#7909;c','Ti&#7879;n &#237;ch'],
	'main_tabs_control'		: 'Click'	// Click, MouseOver
}
// ---------------------------------------------------------------------------- Javascript Functions
var curMedia = -1;
var mediaList = new Array();
var errorList = new Array();
var favourList = new Array();
var sRandom = new Array();
var sRepeat = new Array();
var sMinimize = new Array();

function echo(str) {
	return document.writeln(str);
}
function obj(id) {
	return document.getElementById(id);
}
function randomNum(min, max) {
	if (!max) { var max = min; var min = 0 }
	if (max < min) { var temp = min; var max = min; var min = temp }
	var ranNum = Math.random() * (max-min);
	return (Math.round(ranNum) + min);
}
function objW(id) {
	if (obj(id)) return obj(id).offsetWidth;
	else return false;
}
function objH(id) {
	if (obj(id)) return obj(id).offsetHeight;
	else return false;
}
function number(str) {
	return parseFloat(str);
}
function isNumber(str) {
	if (str.constructor.toString().indexOf('Number') == -1) return false;
	else return true;
}
function trim(str) {
	return str.replace(/^s*(S*(s+S+)*)s*$/, '');
}
function urlDecode(url) {
	return url.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"').replace(/&amp;/g, '&');
}
document.writeln('<div id="transporter" style="position: absolute; top: -9511px"></div>');
function stringCut(string, width, font, size) {
	if (font) obj('transporter').style.fontFamily = font;
	if (size) obj('transporter').style.fontSize = size;

	obj('transporter').innerHTML = string;
	if (obj('transporter').offsetWidth > width) {
		while (obj('transporter').offsetWidth > width) {
			var wSpace = string.lastIndexOf(' ');
			if (wSpace > 0) {
				string = string.substr(0, wSpace);
				if (string.lastIndexOf('..') < string.length - 2) string += '...';
				obj('transporter').innerHTML = string;
			} else {
				break;
			}
		}
	}
	return string;
}
// -------------------------------------------------------------------------- Prefix Array Functions
if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(elt) {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0) ? Math.ceil(from) : Math.floor(from);
    if (from < 0) from += len;

    for (; from < len; from++) {
      if (from in this && this[from] === elt) return from;
    }
    return -1;
  }
}
// -------------------------------------------------------------------------- Media Player Functions
function mediaRandom(randID) {
	var value = sRandom[randID]; var title;
	switch (value) {
		case 'on' : sRandom[randID] = 'off'; title = 'Random: Off'; break;
		case 'off' : sRandom[randID] = 'on'; title = 'Random: On'; break;
	}
	optHLight('random-' + randID, randID, 'up', 'random');
	obj('random-' + randID).title = title;
}
function mediaRepeat(randID) {
	var value = sRepeat[randID]; var title;
	switch (value) {
		case 'all' : sRepeat[randID] = 'track'; title = 'Repeat: Track'; break;
		case 'track' : sRepeat[randID] = 'off'; title = 'Repeat: Off'; break;
		case 'off' : sRepeat[randID] = 'all'; title = 'Repeat: All'; break;
	}
	optHLight('repeat-' + randID, randID, 'up', 'repeat');
	obj('repeat-' + randID).title = title;
}
function mediaPlay(songID, scroll) {
	if (errorList.indexOf(songID) != -1) {
		if (config.player_next_onError && scroll && errorList.length < mediaList.length) setTimeout(mediaNext, 50);
		return;
	}
	var randID = mediaList[songID][1];
	var title = mediaList[songID][2];
	
	if (curMedia != songID && curMedia != -1) mediaClear(curMedia);
	mediaLoad(songID);
	if (config.playlist_autoScroll) mediaScroll(songID);
	if (config.player_autoScroll && scroll) {
		var curURL = window.location.toString().split('#');
		window.location = curURL[0] + '#main-player-' + randID;
	}
	curMedia = songID;
	timer_status = setInterval('mediaTime(' + songID + ')', config.timer_status);
}
function mediaLoad(songID) {
	var randID = mediaList[songID][1];
	var fileURL = urlDecode(mediaList[songID][3]);

	obj('song-' + songID + '-' + randID + '-status').className = 'playlist-status-playing';
	obj('song-' + songID + '-' + randID + '-string').className = 'playlist-string-playing';
	obj('embed-page-' + randID).value = window.location;
	obj('embed-file-' + randID).value = fileURL;
	obj('embed-forum-' + randID).value = '[' + config.bbCode_Forum + ']' + fileURL + '[/' + config.bbCode_Forum + ']';
	obj('embed-blog-' + randID).value = getTemplate('media-embed').replace('{url}', fileURL);
	obj('media-player-' + randID).URL = fileURL;
}
function mediaClear(songID) {
	clearInterval(timer_status);
	var randID = mediaList[songID][1];
	if (obj('song-' + songID + '-' + randID + '-status').className == 'playlist-status-playing') obj('song-' + songID + '-' + randID + '-status').className = '';
	if (obj('song-' + songID + '-' + randID + '-string').className == 'playlist-string-playing') obj('song-' + songID + '-' + randID + '-string').className = 'playlist-string';
	obj('status-content-' + randID).innerHTML = 'Ready';
	obj('status-content-' + randID).style.backgroundPosition = '4px 0px';
	obj('embed-page-' + randID).value = config.embed_default_str;
	obj('embed-file-' + randID).value = config.embed_default_str;
	obj('embed-forum-' + randID).value = config.embed_default_str;
	obj('embed-blog-' + randID).value = config.embed_default_str;
	obj('media-player-' + randID).URL = config.media_URL;
}
function mediaNext() {
	if (curMedia == -1) var randID = 0;
	else var randID = mediaList[curMedia][1];

	var tMedia = mediaList.length - 1;
	var newMedia = curMedia; var getRandID;
	if (sRepeat[randID] == 'track') {
		newMedia = curMedia;
	} else if (favourList.length > 0) {
		newMedia = favourList.shift();
		getRandID = mediaList[newMedia][1];
		var display = obj('main-player-' + getRandID).style.display;
		obj('playlist-favour-' + newMedia).title = ' Add to favour list ';
		obj('playlist-favour-' + newMedia).className = 'playlist-favour';
		while ((sMinimize[getRandID] || display == 'none') && favourList.length > 0) {
			newMedia = favourList.shift();
			getRandID = mediaList[newMedia][1];
			var display = obj('main-player-' + getRandID).style.display;
			obj('playlist-favour-' + newMedia).title = ' Add to favour list ';
			obj('playlist-favour-' + newMedia).className = 'playlist-favour';
		}
		if (favourList.length == 0 && (sMinimize[getRandID] || display == 'none')) { setTimeout(mediaNext, 10); return; }
	} else if (sRepeat[randID] == 'all') {
		if (sRandom[randID] == 'on') {
			newMedia = randomNum(0, tMedia);
			getRandID = mediaList[newMedia][1];
			var display = obj('main-player-' + getRandID).style.display;
			while (sMinimize[getRandID] || display == 'none') {
				newMedia = randomNum(0, tMedia);
				getRandID = mediaList[newMedia][1];
				var display = obj('main-player-' + getRandID).style.display;
			}
		} else if (sRandom[randID] == 'off') {
			newMedia++;
			if (newMedia > tMedia) newMedia = 0;
			getRandID = mediaList[newMedia][1];
			var display = obj('main-player-' + getRandID).style.display;
			while (sMinimize[getRandID] || display == 'none') {
				newMedia++;
				if (newMedia > tMedia) newMedia = 0;
				getRandID = mediaList[newMedia][1];
				var display = obj('main-player-' + getRandID).style.display;
			}
		}
	} else if (sRepeat[randID] == 'off') {
		if (sRandom[randID] == 'on') {
			newMedia = randomNum(0, tMedia);
			getRandID = mediaList[newMedia][1];
			while (randID != getRandID) {
				newMedia = randomNum(0, tMedia);
				getRandID = mediaList[newMedia][1];
			}
		} else if (sRandom[randID] == 'off') {
			newMedia++;
			if (newMedia > tMedia) newMedia = 0;
			getRandID = mediaList[newMedia][1];
			while (randID != getRandID) {
				newMedia++;
				if (newMedia > tMedia) newMedia = 0;
				getRandID = mediaList[newMedia][1];
			}
		}
	}
	mediaPlay(newMedia, true);
}
function mediaDownload(songID) {
	window.open(urlDecode(mediaList[songID][3]));
}
function mediaTime(songID) {
	var randID = mediaList[songID][1];
	var pState = obj('media-player-' + randID).playState;
	var cTime = obj('media-player-' + randID).controls.currentPositionString;
	var tTime = obj('media-player-' + randID).currentMedia.durationString;
	var nTime = obj('media-player-' + randID).controls.currentPosition;
	var aTime = obj('media-player-' + randID).currentMedia.duration;
	var song_info = obj('media-player-' + randID).status;
	var posX = '-20px';
	if (song_info == '') song_info = '&nbsp;'

	switch (pState) {
		case 1 : posX = '-20px'; break;
		case 2 : posX = '-10px'; break;
		case 3 : posX = '0px'; if (nTime >= 4) song_info = mediaList[songID][2] + ' (' + cTime + ' / ' + tTime + ')'; break;
		case 4 : posX = '-30px'; break;
		case 9 : posX = '-40px'; break;
		case 10 : posX = '-50px'; clearInterval(timer_status); errorList.push(songID); obj('song-' + songID + '-' + randID + '-status').className = 'playlist-status-error'; obj('song-' + songID + '-' + randID + '-string').className = 'playlist-string-error'; if (config.player_next_onError) mediaNext(); break;
	}
	var getStatus = stringCut(song_info, objW('status-content-' + randID) - 3, 'Arial', '11px');
	if (getStatus != song_info) obj('status-content-' + randID).title = song_info;
	else obj('status-content-' + randID).title = '';

	obj('status-content-' + randID).innerHTML = getStatus;
	obj('status-icon-' + randID).style.backgroundPosition = posX + ' -16px';

	if (nTime > aTime - (config.timer_new / 1000) && nTime != 0) {
		clearInterval(timer_status);
		if (window.timer_next) clearTimeout(timer_next);
		timer_next = setTimeout(mediaNext, config.timer_new);
	}
}
function mediaScroll(songID) {
	var itemID = mediaList[songID][0];
	var randID = mediaList[songID][1];
	var iHeight = objH('song-' + songID + '-' + randID + '-string');
	var lHeight = objH('content-0-' + randID);
	var curScroll = obj('content-0-' + randID).scrollTop;
	var newScroll = itemID * iHeight;

	if (newScroll > curScroll && newScroll < curScroll + (lHeight - iHeight)) return;
	if (newScroll > curScroll) newScroll -= lHeight - iHeight;
	if (newScroll < 0) newScroll = 0;
	obj('content-0-' + randID).scrollTop = newScroll;
}
// ------------------------------------------------------------------------------- Operate Functions
function changeTab(tabID, randID) {
	for (var i = 0; i < config.main_tabs.length; i++) {
		if (i == tabID) {
			var className = 'current';
			var display = 'block';
		} else {
			var className = '';
			var display = 'none';
		}
		obj('tab-' + i + '-' + randID).className = className;
		obj('content-' + i + '-' + randID).style.display = display;
	}
}
function addFavour(songID) {
	var className; var title;
	var added = favourList.indexOf(songID);
	if (added > -1) {
		className = 'playlist-favour';
		title = ' Add to favour list ';
		favourList.splice(added, 1);
	} else {
		className = 'playlist-favoured';
		title = ' Remove from favour list ';
		favourList.push(songID);
	}
	obj('playlist-favour-' + songID).title = title;
	obj('playlist-favour-' + songID).className = className;
}
function btnHLight(btnID, state, posX) {
	var posY = 0;
	switch (state) {
		case 'over' : posY = -13; break;
		case 'out'	: posY = 0; break;
		case 'down'	: posY = -26; break;
		case 'up'		: posY = -13; break;
	}
	obj(btnID).style.backgroundPosition = posX + 'px ' + posY + 'px';
}
function optHLight(btnID, randID, state, opt) {
	var posX; var posY;
	if (opt == 'random') var value = sRandom[randID];
	else if (opt == 'repeat') var value = sRepeat[randID];
	switch (value) {
		case 'all' : posX = '-102px'; break;
		case 'track' : posX = '-132px'; break;
		case 'on' : posX = '-36px'; break;
		case 'off' : if (opt == 'repeat') posX = '-72px'; else posX = '0px'; break;
	}
	switch (state) {
		case 'over' : posY = '-14px'; break;
		case 'out' : posY = '0px'; break;
		case 'down' : posY = '-28px'; break;
		case 'up' : posY = '-14px'; break;
	}
	obj(btnID).style.backgroundPosition = posX + ' ' + posY;
}
function _minimize(randID) {
	sMinimize[randID] = !sMinimize[randID];
	if (sMinimize[randID]) {
		var title = 'Restore';
		var display = 'none';
	} else {
		var title = 'Minimize';
		var display = 'block';
	}

	if (curMedia != -1) {
		var getRandID = mediaList[curMedia][1];
		if (randID == getRandID) mediaClear(curMedia);
	}
	obj('main-center-content-' + randID).style.display = display;
	obj('minimize-' + randID).title = title;
}
function _close(randID) {
	if (curMedia != -1) {
		var getRandID = mediaList[curMedia][1];
		if (randID == getRandID) {
			clearInterval(timer_status);
			mediaClear(curMedia);
		}
	}
	obj('main-player-' + randID).style.display = 'none';
//	document.getElementsByTagName('body')[0].removeChild(obj('main-player-' + randID));
}
// ----------------------------------------------------------------------------- Templates Functions
function getTemplate(tplName, randID) {
	if (!tplName) return;
	var html = '';
	switch (tplName) {
		case 'tpl-hacking' : html += '<div class="hacking-content" onClick="window.open(\'http://\' + config.home_URL[1])">Hacking attempt!</div>';
		case 'media-player' :
						if (document.all)	var mCode = 'classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"';
						else var mCode = 'type="application/x-ms-wmp"';
						html +=
						 '<object id="media-player-' + randID + '" class="media-player" ' + mCode + '>'
						+'	<param name="url" value="' + config.media_URL + '">'
						+'	<param name="autoStart" value="true">'
						+'	<param name="Volume" value="' + config.media_Volume + '">'
						+'	<param name="stretchToFit" value="' + config.media_stretchToFit + '">'
						+'	<param name="EnableContextMenu" value="' + config.media_contextMenu + '">'
						+'</object>'; break;
		case 'media-embed' : html +=
						 '<embed loop="' + config.embed_loop + '" width="' + config.embed_width + '" height="' + config.embed_height + '" src="{url}" volume="-1" autostart="' + config.embed_autoStart + '" enablecontextmenu="' + config.embed_contextMenu + '" />'; break;
		case 'main-layout' : html +=
						 '<table id="main-player-' + randID + '" class="winamp" cellpadding="0" cellspacing="0" onContextMenu="return ' + config.player_contextMenu + '" onSelectStart="return ' + config.player_selectText + '" onDragStart="return false">'
						+'	<tr>'
						+'		<td class="main-top-left"></td>'
						+'		<td class="main-top-center">'
						+'			<table class="main-top-content" cellpadding="0" cellspacing="0">'
						+'				<tr>'
						+'					<td class="player-icon"></td>'
						+'					<td class="player-title">' + config.player_title + '</td>'
						+'					<td><img id="minimize-' + randID + '" src="' + config.clear_URL + '" class="minimize" onMouseOver="btnHLight(this.id, \'over\', 0)" onMouseOut="btnHLight(this.id, \'out\', 0)" onMouseDown="btnHLight(this.id, \'down\', 0); return false" onMouseUp="btnHLight(this.id, \'up\', 0)" onClick="_minimize(' + randID + ')" /></td>'
						+'					<td><img id="exit-' + randID + '" src="' + config.clear_URL + '" title=" Close " class="exit" onMouseOver="btnHLight(this.id, \'over\', -17)" onMouseOut="btnHLight(this.id, \'out\', -17)" onMouseDown="btnHLight(this.id, \'down\', -17); return false" onMouseUp="btnHLight(this.id, \'up\', -17)" onClick="_close(' + randID + ')" /></td>'
						+'				</tr>'
						+'			</table>'
						+'		</td>'
						+'		<td class="main-top-right"></td>'
						+'	</tr>'
						+'	<tr>'
						+'		<td class="main-left"></td>'
						+'		<td class="main-center">'
						+'			<table id="main-center-content-' + randID + '" width="100%" cellpadding="0" cellspacing="0">'
						+'				<tr>'
						+'					<td class="left-content">'
						+'						<table width="100%" height="100%" cellpadding="0" cellspacing="0">'
						+'							<tr>'
						+'								<td id="player-content-' + randID + '" colspan="3" class="player-content">' + getTemplate('media-player', randID) + '</td>'
						+'							</tr>'
						+'							<tr><td colspan="3" class="separator_"></td></tr>'
						+'							<tr>'
						+'								<td class="icon-content"><img id="status-icon-' + randID + '" src="' + config.clear_URL + '" /></td>'
						+'								<td id="status-content-' + randID + '" class="status-content">Ready</td>'
						+'								<td class="controls-content" nowrap><image id="random-' + randID + '" src="' + config.clear_URL + '" class="random" onMouseOver="optHLight(this.id, ' + randID + ', \'over\', \'random\')" onMouseOut="optHLight(this.id, ' + randID + ', \'out\', \'random\')" onMouseDown="optHLight(this.id, ' + randID + ', \'down\', \'random\')" onClick="mediaRandom(' + randID + ')" /><image id="repeat-' + randID + '" src="' + config.clear_URL + '" class="repeat" onMouseOver="optHLight(this.id, ' + randID + ', \'over\', \'repeat\')" onMouseOut="optHLight(this.id, ' + randID + ', \'out\', \'repeat\')" onMouseDown="optHLight(this.id, ' + randID + ', \'down\', \'repeat\')" onClick="mediaRepeat(' + randID + ')" /></td>'
						+'							</tr>'
						+'						</table>'
						+'					</td>'
						+'					<td class="separator"></td>'
						+'					<td class="right-content">'
						+'						<table width="100%" height="100%" cellpadding="0" cellspacing="0">'
						+'							<tr>'
						+'								<td class="playlist-tabs">'
						+'									<ul>';
					for (var i = 0; i < config.main_tabs.length; i++) {
						html += '										<li id="tab-' + i + '-' + randID + '"><a href="javascript: void(0)" on' + trim(config.main_tabs_control) + '="changeTab(' + i + ', ' + randID + ')" onMouseDown="return false"><span>' + config.main_tabs[i] + '</span></a></li>';
					}
					html +=
						 '									</ul>'
						+'								</td>'
						+'							</tr>'
						+'							<tr>'
						+'								<td height="100%">';
					for (var i = 0; i < config.main_tabs.length; i++) {
						html += '									<div id="content-' + i + '-' + randID + '" class="playlist-content">';
						switch(i) {
							case 1 : html += getTemplate('tpl-embed', randID); break;
							case 2 : html += getTemplate('tpl-help', randID); break;
							case 3 : html += getTemplate('tpl-about', randID); break;
						}
						html += '</div>';
					}
					html += '								</td>'
						+'							</tr>'
						+'						</table>'
						+'					</td>'
						+'				</tr>'
						+'			</table>'
						+'		</td>'
						+'		<td class="main-right"></td>'
						+'	</tr>'
						+'	<tr>'
						+'		<td class="main-bottom-left"></td>'
						+'		<td class="main-bottom-center"></td>'
						+'		<td class="main-bottom-right"></td>'
						+'	</tr>'
						+'</table>'; break;
		case 'tpl-embed' : html +=
						 '<div class="embed-content">'
						+'	<span class="embed-left"></span><span class="embed-icon"><img src="' + config.clear_URL + '" class="icon-page" /></span><span class="embed-string">G&#7917;i trang n&#224;y</span>'
						+'	<input id="embed-page-' + randID + '" class="embed-input" value="' + config.embed_default_str + '" onClick="this.select()" />'
						+'	<span class="embed-left"></span><span class="embed-icon"><img src="' + config.clear_URL + '" class="icon-file" /></span><span class="embed-string">G&#7917;i File g&#7889;c</span>'
						+'	<input id="embed-file-' + randID + '" class="embed-input" value="' + config.embed_default_str + '" onClick="this.select()" />'
						+'	<span class="embed-left"></span><span class="embed-icon"><img src="' + config.clear_URL + '" class="icon-forum" /></span><span class="embed-string">&#272;&#259;ng tr&#234;n Di&#7877;n &#273;&#224;n</span>'
						+'	<input id="embed-forum-' + randID + '" class="embed-input" value="' + config.embed_default_str + '" onClick="this.select()" />'
						+'	<span class="embed-left"></span><span class="embed-icon"><img src="' + config.clear_URL + '" class="icon-blog" /></span><span class="embed-string">&#272;&#259;ng tr&#234;n Blog</span>'
						+'	<textarea id="embed-blog-' + randID + '" rows="4" class="embed-textarea" onClick="this.select()">' + config.embed_default_str + '</textarea>'
						+'</div>'; break;
	}
	return html;
}
function createPlayer(mList, playerW, playerH) {
document.writeln('<meta http-equiv="content-type" content="text/html; charset=UTF-8">');
	if (!playerW) var playerW = config.player_width;
	if (!playerH) var playerH = number(config.player_height);
	if (config.home_URL[0]) {
		var curLocation = window.location.toString();
		curLocation = curLocation.split('?');
		curLocation = curLocation[0].split('#');
		curLocation = curLocation[0];
		for (var i = 1; i < config.home_URL.length; i++) {
			var getURL = config.home_URL[i];
			if (curLocation.indexOf(getURL) == -1) { var trueLocation = false; } else { var trueLocation = true; break; }
		}
		if (!trueLocation) { return echo(getTemplate('tpl-hacking'));}
	}

	var randID = 0; var trackNum = 0; itemID = 0;
	while (obj('main-player-' + randID)) randID++;
	while (mList.lastIndexOf('|') == mList.length - 1) mList = mList.substr(0, mList.length - 1);
	echo(getTemplate('main-layout', randID));

	if (config.opt_random == 'on') obj('random-' + randID).title = 'Random: On';
	else obj('random-' + randID).title = 'Random: Off';
	if (config.opt_repeat == 'all') obj('repeat-' + randID).title = 'Repeat: All';
	else if (config.opt_repeat == 'track') obj('repeat-' + randID).title = 'Repeat: Track';
	else obj('repeat-' + randID).title = 'Repeat: Off';

	var tplPlaylist = '';
	mList = mList.split('||');
	if (config.favour_enable) config.list_title_length -= config.list_opt_width;
	if (config.download_enable) config.list_title_length -= config.list_opt_width;

	for (var i = 0; i < mList.length; i++) {
		var getMedia = mList[i].split('|');
		if (!getMedia[0]) continue;
		itemID++;
		if (!getMedia[1]) {
			trackNum++;
			if (trackNum < 10) trackNum = '0' + trackNum;
			getMedia[1] = getMedia[0];
			getMedia[0] = trim(config.list_prefix_name) + ' ' + trackNum;
		}
		mediaList.push([itemID - 1, randID, getMedia[0], getMedia[1]]);
		var songID = mediaList.length - 1;
		var titleCut = stringCut(itemID + '. ' + getMedia[0], config.list_title_length, 'Arial', '12px');
		if (titleCut != itemID + '. ' + getMedia[0]) var title = ' title="' + getMedia[0] + '"';
		else var title = '';
		tplPlaylist +=
			 '<a href="javascript: void(0)" onMouseDown="return false"' + title + '>'
			+'<table cellpadding="0" cellspacing="0">'
			+'	<tr>'
			+'		<td><img id="song-' + songID + '-' + randID + '-status" src="' + config.clear_URL + '" width="0" height="0" /></td>'
			+'		<td id="song-' + songID + '-' + randID + '-string" class="playlist-string" on' + trim(config.playlist_control) + '="mediaPlay(' + songID + ', ' + randID + ')">' + titleCut + '</td>';
		if (config.favour_enable) tplPlaylist += '		<td onClick="addFavour(' + songID + ')" style="cursor: pointer;"><img title=" Add to favour list " src="' + config.clear_URL + '" id="playlist-favour-' + songID + '" class="playlist-favour" /></td>';
		if (config.download_enable) tplPlaylist += '		<td title=" Download song: ' + getMedia[0] + ' " onClick="mediaDownload(' + songID + ')" style="cursor: pointer;"><img src="' + config.clear_URL + '" class="playlist-download" /></td>';
		tplPlaylist += '	</tr>'
			+'</table>'
			+'</a>';
	}

	var mediaH = playerH - 57 + 'px';
	var listH = playerH - 68 + 'px';
	if (isNumber(playerW)) playerW += 'px';
	else if (playerW.indexOf('%') == -1) playerW = number(playerW) + 'px';
	obj('main-player-' + randID).style.width = playerW;
	obj('player-content-' + randID).style.height = mediaH;
	for (var i = 0; i < config.main_tabs.length; i++) { obj('content-' + i + '-' + randID).style.height = listH; }

	obj('content-0-' + randID).innerHTML = tplPlaylist;
	changeTab(0, randID);
	sRandom[randID] = config.opt_random;
	sRepeat[randID] = config.opt_repeat;
	optHLight('random-' + randID, randID, 'out', 'random');
	optHLight('repeat-' + randID, randID, 'out', 'repeat');
	sMinimize[randID] = !config.player_minimize;
	_minimize(randID);
	if (config.player_autoStart && !config.player_minimize && randID == 0) setTimeout(mediaNext, config.timer_autoStart);
}