// ------- program to play random midi after each midi ends
// ------- Copyright &copy; SiLlYDuMb. All right reserved.

// create array to store midi path and time
var songName = new Array();
var songPath = new Array();
var songTime = new Array();
var repeatNo = 10;		  // set number of songs before reuse any midi
var played = new Array(repeatNo); // create array to store played songs
var nextSound;
var current = -1;

// call method to add midi and time
newSound("5566_-_Wo_Nan_Guo", 257);
newSound("Alex_Toh_-_Tian_Zhen", 190);
newSound("Andy_Lau_-_Mei_You_Ren_Ke_Yi_Xiang_Ni", 269);
newSound("Angela_Zhang_Shao_Han_-_Yi_Shi_De_Mei_Hao",275);
newSound("Che_Ren_Biao_-_Meng",64);
newSound("Chen_Yi_Xun_-_Shi_Nian", 194);
newSound("Chen_Yi_Xun_-_Xiang_Ku", 157);
newSound("Cyndi_Wang_-_Chi_Pang", 196);
newSound("Cyndi_Wang_-_Dang_Ni", 198);
newSound("Dai_Pei_Ni_-_Ni_Yao_De_Ai", 254);
newSound("Daniel_Chan_-_Bi_Wo_Xing_Fu", 268);
newSound("Daniel_Chan_-_Cai_Cai_Cai", 261);
newSound("Daniel_Chan_-_Gu_Dan_De_Ye_Li_Wo_Bu_Gu_Dan", 298);
newSound("Daniel_Chan_-_Mei_Yi_Tian_Dou_Xiang_Nian", 288);
newSound("Daniel_Chan_-_Xin_Shang_Xin_Tong_Bu_Tong", 260);
newSound("Daniel_Chan_-_Yao_Zhi_Dao_Ni_De_Gan_Jue", 232);
newSound("Fan_Yi_Chen_-_I_Believe", 283);
newSound("Gu_Ju_Ji_-_Hao_Xiang_Hao_Xiang", 215);
newSound("Gu_Ju_Ji_-_Tian_Cai_Yu_Bai_Chi", 250);
newSound("Guang_Liang_-_Di_Yi_Chi", 270);
newSound("Guang_Liang_-_Tong_Hua", 242);
newSound("Guang_Liang_-_Yong_Bao_Wo", 248);
newSound("Guang_Liang_-_Yue_Ding", 229);
newSound("Harlem_Lim_-_Qing_Fei_De_Yi", 274);
newSound("Harlem_Lim_-_Rang_Wo_Yi_Ci_Ai_Dao_Guo", 227);
newSound("Jacky_-_Qing_Shu", 277);
newSound("Jacky_-_Xiang_He_Ni_Zai_Qu_Chui_Chui_Feng", 282);
newSound("Jacky_-_Xing_Ru_Dao_Ge", 295);
newSound("Jacky_-_Zhen_Ai", 205);
newSound("Jacky_Wu_Zhong_Xian_-_Ni_Bi_Chong_Qian_Kuai_Le", 150);
newSound("Jacky_Wu_Zhong_Xian_-_Shi_Bu_Shi_Zhe_Yang_De_Ye_Wan_Ni_Cai_Hui_Zhe_Yang_Xiang_Qi_Wo", 216);
newSound("Jeff_-_Ai_Ru_Chao_Shui", 288);
newSound("Jeff_-_Bie_Pa_Wo_Shang_Xin", 306);
newSound("Jeff_-_Bu_Yao_Dui_Ta_Shuo", 271);
newSound("Jeff_-_Duo_Xiang", 286);
newSound("Jeff_-_Kuang_Rong", 307);
newSound("Jeff_-_Tai_Xiang_Ai_Ni", 147);
newSound("Jeff_-_Wang_Qing_Wang_Ai", 339);
newSound("Jeff_-_Wo_Shi_Zhen_De", 281);
newSound("Jordan_Chan_-_Mei_Na_Zhong_Ming", 278);
newSound("Jolin_Tsai_-_Ni_Hai_Ai_Wo_Ma", 223);
newSound("Jolin_Tsai_-_Tian_Kong", 251);
newSound("Karen_Mok_-_Ta_Bu_Ai_Wo", 249);
newSound("Liang_Jing_Ru_-_Ru_Guo_You_Yi_Tian", 282);
newSound("Liang_Jing_Ru_-_Yong_Qi", 241);
newSound("Liu_Ruo_Ying_-_Cheng_Quan", 266);
newSound("Liu_Ruo_Ying_-_Heng_Ai_Heng_Ai_Ni", 276);
newSound("Lin_Jun_Jie_-_Dou_Jiang_You_Tiao", 246);
newSound("Lin_Jun_Jie_-_Jian_Jian_Dan_Dan", 216);
newSound("Ocean_Ou_De_Yang_-_Gu_Dan_Bei_Ban_Qiu", 234);
newSound("Power_Station_-_Na_Jiu_Zhe_Yang_Ba", 278);
newSound("Qiu_Zhe_-_Ni_Zhi_Dao_Wo_Ai_Ni", 276);
newSound("Ren_Xian_Qi_-_Lan_Hua_Yi_Duo_Duo", 209);
newSound("Sam_Lee_Sheng_Jie_-_Chi_Xin_Jue_Dui", 243);
newSound("Sam_Lee_Sheng_Jie_-_Shou_Fang_Kai", 255);
newSound("Sky_Wu_-_Ai_Yu_Chou", 347);
newSound("Sky_Wu_-_Ni_Ai_Sui", 301);
newSound("Sky_Wu_-_Xin_Dong_Le", 333);
newSound("Sun_Yan_Zi_-_Wo_Yao_De_Xing_Fu", 208);
newSound("Sun_Yan_Zi_-_Wo_Ye_Hen_Xiang_Ta", 254);
newSound("Sun_Yan_Zi_-_Yu_Jian", 200);
newSound("Su_You_Peng_-_Ni_Kuai_Bu_Kuai_Le", 245);
newSound("Tai_Zheng_Xiao_-_Xiang_Ni_Xiang_De_Hao_Gu_Ji", 266);
newSound("Tony_Leung_-_Wei_Qing_Suo_Kun", 292);
newSound("Tony_Leung_-_Yi_Tian_Yi_Dian_Ai_Nian", 212);
newSound("Twins_-_Xia_Yi_Zhan_Tian_Hou",199);
newSound("Utada_Hikaru_-_First_Love", 260);
newSound("Wang_Li_Hong_-_Forever_Love", 282);
newSound("Wang_Li_Hong_-_Kiss_Goodbye", 221);
newSound("Wang_Li_Hong_-_Ni_Bu_Zai", 245);
newSound("Wang_Li_Hong_-_Wei_Yi", 236);
newSound("Wang_Li_Hong_-_Yi_Shou_Jian_Dan_De_Ge", 225);
newSound("William_So_-_Wo_Bu_Shi_Yi_Ge_Ai_Guo_Jiu_Suan_De_Ren", 208);
newSound("William_So_-_Wo_Wei_Ni_Shan_Xin", 236);
newSound("Wu_Qi_Xian_-_Wo_Zhi_Xiang_Ai_Ni_Yi_Ge_Ren", 305);
newSound("Wu_Yin_Liang_Ping_-_Hu_Si_Luan_Xiang", 243);
newSound("Wu_Yin_Liang_Ping_-_Wo_Zhao_Ni_Zhao_Le_Hao_Jiu", 287);
newSound("Yong_Bang_-_Ni_Shi_Wo_Zui_Shen_Ai_De_Ren", 264);
newSound("Zhang_Dong_Liang_-_Ji_Mo_Bian_Jie", 266);
newSound("Zhang_Dong_Liang_-_Tong_Che_Xin_Fei", 245);
newSound("Zhang_Jin_Xuan_-_Duan_Dian", 266);
newSound("Zhang_Ke_Fan_-_Hai_Ji_De_Wo_Ma", 278);
newSound("Zhang_Shan_Wei_-_Liu_Ge_Yue_Hou_Na_Nian_Xia_Tian", 252);
newSound("Zhang_Shan_Wei_-_Shi_Xin_Feng", 276);
newSound("Zheng_Shao_Qiu_-_Tian_Di_Nan_Er", 261);
newSound("Zheng_Shao_Qiu_-_Xiao_Kan_Feng_Yun", 102);
newSound("Zhang_Zhi_Chen_-_Mo_Ri_Zhi_Lian", 265);
newSound("Zhou_Chuan_Xiong_-_Huang_Hun", 340);
newSound("Zhou_Jie_Lun_-_An_Jing", 337);
newSound("Zhou_Jie_Lun_-_Bu_Neng_Shuo_De_Mi_Mi", 306);
newSound("Zhou_Jie_Lun_-_Feng", 273);
newSound("Zhou_Jie_Lun_-_Hei_Se_Mao_Yi", 249);
newSound("Zhou_Jie_Lun_-_Hei_Se_You_Mo", 140);
newSound("Zhou_Jie_Lun_-_Hui_Dao_Guo_Qu", 228);
newSound("Zhou_Jie_Lun_-_Kai_Bu_Liao_Kou", 286);
newSound("Zhou_Jie_Lun_-_Lang_Man_Shou_Ji", 229);
newSound("Zhou_Jie_Lun_-_Qi_Li_Xiang", 263);
newSound("Zhou_Jie_Lun_-_Qing_Tian", 269);
newSound("Zhou_Jie_Lun_-_Secret_Xiao_Yu", 94);
newSound("Zhou_Jie_Lun_-_Wu_Ding", 316);
newSound("Zhou_Jie_Lun_-_Xing_Qing", 128);
newSound("Zhou_Jie_Lun_-_Yi_Lu_Xiang_Bei", 260);



// method to store midi path and time
function newSound(name, time) {
	songName[songName.length] = name;
	while (songName[songName.length-1].indexOf("_",1) > 0) {
		songName[songName.length-1] = songName[songName.length-1].replace("_"," ");
	}

	songPath[songPath.length] = "midis/" + name + ".mid";
	songTime[songTime.length] = time * 1000;
}

// method to check for repeated number
// return true if number is found
function chkRepeat(no) {
	for (var i = 0; i < repeatNo; i++) if (no == played[i]) return true;
	return false;
}

// method to add number to list
function addToPlayed(no) {
	for (var i = 1; i < repeatNo; i++) played[i-1] = played[i];
	played[repeatNo-1] = no;
}

// method to play random sound
function playSound() {
	do {
		var i = Math.floor(songPath.length*Math.random());	// get a random number
	} while (chkRepeat(i));
	playThis(i);
}

// method to play selected sound
function playThis(no) {
	clearTimeout(nextSound);
	addToPlayed(no); 						// add number to played list
	document.getElementById("id_song").innerHTML = "<embed src=" + songPath[no] + " autostart=true width=0 height=0 id='songplayer'></embed>";
	current = no;
	nextSound = setTimeout("playSound()", songTime[no]);		// set timer to call method again
}

// method to stop sound
function stopSound() {
	document.getElementById("id_song").innerHTML = "";
	current = -1;
	clearTimeout(nextSound);
}
