/*******************************************************************************
	JUKEBOX script
*******************************************************************************/
var state = 0;						// 0:stop, 1:pause, 2:play
var random = 1;						// 0:sequently, 1:random
var repeat = 0;						// 0:play once, 1:repeat
var interval = 2;					// interval betwenn music
var timer = 0;						// timer (0:total time, 1:left time, 3:playing time)

var idx_list = new Array();			// index list
var music_list = new Array();		// music list
var title_list = new Array();		// title list
var cnt_music = 0;					// count of music

function add_music(idx, url, title) {
	idx_list[cnt_music] = idx;
	music_list[cnt_music] = url;
	title_list[cnt_music] = title;

	return cnt_music++;
}

function play(file) {
	// play music
	if(state == 2) stop();

	state = 2;
	set_timer();
	jukebox.open(file);
}

function pause() {
	if(state == 2) {
		state = 1;
		jukebox.pause();
	} else if(state == 1) {
		state = 2;
		jukebox.play();
	}
}

function stop() {
	if(typeof(timeoutID) == "number") clearTimeout(timeoutID);

	state = 0;
	jukebox.stop();
}

function next_music(bResult) {
	if(bResult == 0 && jukebox.PlayCount == 1) {
		timeoutID = setTimeout("jukebox_next();", interval*1000);
	}
}

function set_timer() {

	if(!document.all.jukebox_timer) return;
	if(state != 0) {
		var running_time = jukebox.Duration;
		var playing_time = jukebox.currentPosition;
		var left_time = running_time - playing_time;
		var min, sec;

		switch(timer) {
			case 0:
				min = Math.floor(running_time/60);
				sec = (running_time%60 < 10) ? "0"+Math.floor(running_time%60) : Math.floor(running_time%60);
				break;
			case 1:
				min = "- "+Math.floor(left_time/60);
				sec = (left_time%60 < 10) ? "0"+Math.floor(left_time%60) : Math.floor(left_time%60);
				break;
			case 2:
				min = "+ "+Math.floor(playing_time/60);
				sec = (playing_time%60 < 10) ? "0"+Math.floor(playing_time%60) : Math.floor(playing_time%60);
				break;
			default:
		}

		document.all["jukebox_timer"].value = min + " : " + sec;
	} else {
		document.all["jukebox_timer"].value = "00 : 00";
	}

	setTimeout("set_timer();", 500);
}

function change_timer() {
	if(state != 0) {
		timer = (timer == 2) ? 0 : timer + 1;
	}
}

/*******************************************************************************
	JUKEBOX PLAY script
*******************************************************************************/
var jukebox_list = new Array();		// pointer to music_list
var cnt_jukebox = 0;
var cur_jidx = 0;		// current jukebox index (point music index)
var next_jidx = 0;		// next jukebox index (point music index)

// get index list to be checked and re-index.
function make_jukebox() {
	var idx;
	cnt_jukebox = 0, cur_jidx = 0, next_jidx = 0;

	for(var i = 1; i <= ARTICLE_ROWS; i++) {
		if(!document.all["article"+i+"_idx"]) continue;

		idx = document.all["article"+i+"_idx"].value;
		if(document.all["check"+i].value == idx)
			reidx_jukebox(idx);
	}
	
	if (random == 1) cur_jidx = Math.floor(Math.random()*cnt_jukebox);
}

// add jukebox index that matched by index.
function reidx_jukebox(idx) {
	for(var i = 0; i < cnt_music; i++) {

		if(idx == idx_list[i]) {
			jukebox_list[cnt_jukebox++] = i;
		}
	}
}

function reset_button() {
	// reset jukebox button
	document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play.gif";
	document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause.gif";
	// reset list buttton

	for(i = 1; i <= ARTICLE_ROWS; i++) {
		if(!document.all["article"+i+"_idx"]) continue;
		article_idx = document.all["article"+i+"_idx"].value;
	}
}

function jukebox_play(mode) {
	var cur_midx, next_midx;		// music index
	var cur_idx, next_idx;			// article index

	if(mode == 0) {
		make_jukebox();
		if(cnt_jukebox == 0) return;
	}

	if(random == 0) {
		// sequently
		next_jidx = cur_jidx + 1;
		if(next_jidx > cnt_jukebox-1) next_jidx = 0;
	} else {
		// randomly
		if(cnt_jukebox < 3) {
		  next_jidx = cur_jidx + 1;
  		if(next_jidx > cnt_jukebox-1) next_jidx = 0;
		} else {
  		do {
  		  next_jidx = Math.floor(Math.random()*cnt_jukebox);
  		} while ( next_jidx==cur_jidx);
  	}
	}
	// get music, article index
	cur_midx = jukebox_list[cur_jidx];
	next_midx = jukebox_list[next_jidx];
	cur_idx = idx_list[cur_midx];
	next_idx = idx_list[next_midx];

	// change button
	reset_button();
	document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play_on.gif";
	document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause.gif";

	// change title
	document.all["cur_title"].innerHTML = title_list[cur_midx];
	top.window.status = title_list[cur_midx];

	// play music
	play(music_list[cur_midx]);

	prev_idx = cur_idx;
	cur_idx = idx;
}

function jukebox_pause() {

	// change button
	if(state == 2) {
		document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play.gif";
		document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause_on.gif";
	} else if(state == 1) {
		document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play_on.gif";
		document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause.gif";
	}

	// pause music
	pause();
}

function jukebox_next() {
	cur_jidx = next_jidx;
	if(state == 2) stop();
	jukebox_play(1);
}

function jukebox_stop() {

	// change button
	document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play.gif";
	document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause.gif";
	// pause music
	stop();
}

function jukebox_repeat() {
	if(repeat) {
		repeat = 0;
		document.all["repeat"].src = PATH_SKIN + "images/jbtn_repeat.gif";
	} else {
		repeat = 1;
		document.all["repeat"].src = PATH_SKIN + "images/jbtn_repeat_on.gif";
	}
}

function jukebox_random() {
	if(random) {
		random = 0;
		document.all["random"].src = PATH_SKIN + "images/jbtn_random.gif";
	} else {
		random = 1;
		document.all["random"].src = PATH_SKIN + "images/jbtn_random_on.gif";
	}
}

function Mute_Music(){
	var mute_stat = document.jukebox.mute;
	if(mute_stat==false) {
		document.all["btn_mute"].src = PATH_SKIN + "images/jbtn_mute_on.gif";
		document.all["btn_mute"].title = "家府难扁";
		document.jukebox.mute = 1;
	} else {
		document.all["btn_mute"].src = PATH_SKIN + "images/jbtn_mute.gif";
		document.all["btn_mute"].title = "家府掺扁";
		document.jukebox.mute = 0;
	}
}

/*******************************************************************************
	LIST PLAY script
*******************************************************************************/
var prev_idx = 0;			// previous article index
var cur_idx = 0;			// current article index
var cur_midx = 0;			// current music index
var next_midx = 0;			// next music index
var next_music = 0;			// next music

function set_music_idx(idx) {
	var begin_midx = document.all["music"+idx+"_midx"].value;		// begin index
	var cur_music = document.all["music"+idx+"_cur"].value;			// music count
	var total_music = document.all["music"+idx+"_total"].value;		// total count of music

	// check index
	if(begin_midx == "" || cur_music == "" || total_music == "") return -1;
	if(parseInt(cur_music) == 0) return -1;

	begin_midx = parseInt(begin_midx);
	cur_music = parseInt(cur_music);
	total_music = parseInt(total_music);

	// get music index
	if(cur_music > total_music) {
		cur_music = 1;
		document.all["music"+idx+"_cur"].value = cur_music;
	}

	// current music index
	cur_midx = begin_midx + cur_music - 1;
	// next music index
	if(random == 0) {
		// sequently
		if(cur_music == total_music) next_music = 1;
		else next_music = cur_music + 1;
	} else {
		// randomly
		next_music = Math.ceil(Math.random()*total_music);
	}
	next_midx = begin_midx + next_music - 1;
}

function l_play(idx) {
	var article_idx;
	player = "LIST";
	set_music_idx(idx);

	// change play button
	reset_button();
	document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play_on.gif";
	document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause.gif";

	// change title
	document.all["cur_title"].innerHTML = title_list[cur_midx];

	// play music
	prev_idx = cur_idx;
	cur_idx = idx;
	play(music_list[cur_midx]);
}

function l_pause(idx) {
	if(cur_idx == 0 || cur_idx != idx) return;

	// change button
	document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play.gif";
	document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause.gif";
	if(state == 2) {
		document.all["lbtn_play" + idx].src = PATH_SKIN + "images/lbtn_play.gif";
		document.all["lbtn_pause" + idx].src = PATH_SKIN + "images/lbtn_pause_on.gif";
	} else if(state == 1) {
		document.all["lbtn_play" + idx].src = PATH_SKIN + "images/lbtn_play_on.gif";
		document.all["lbtn_pause" + idx].src = PATH_SKIN + "images/lbtn_pause.gif";
	}

	// pause music
	pause();
}

function l_next(idx) {
	if(cur_idx == 0 || cur_idx != idx) return;

	// next music
	if(state == 2) stop();
	document.all["music"+idx+"_cur"].value = next_music;
	l_play(idx);
}

function l_stop(idx) {
	if(cur_idx == 0 || cur_idx != idx) return;

	// change button
	document.all["jbtn_play"].src = PATH_SKIN + "images/jbtn_play.gif";
	document.all["jbtn_pause"].src = PATH_SKIN + "images/jbtn_pause.gif";
	document.all["lbtn_play" + idx].src = PATH_SKIN + "images/lbtn_play.gif";
	document.all["lbtn_pause" + idx].src = PATH_SKIN + "images/lbtn_pause.gif";

	// stop music
	stop();
}


