//////////////////////////////////////////////////////////////////////////////////
//Shinobu BGM Player 1.0a (Full Function Version)				//
//Copyleft (c) 2000 - 2001 Shinobu (shinobu@empal.com),All Rights Unreversed.	//
//Shinobu's Script Support Page : http://javascript.new21.org			//
//////////////////////////////////////////////////////////////////////////////////
//안녕하세요? 소스 공개자 시노부라고 합니다.					//
//부담없이 사용하시고, 의문점은 위의 서포트 페이지를 방문하십시오.		//
//////////////////////////////////////////////////////////////////////////////////
//참  고 : 이 스크립트는 공개 스크립트입니다.
//수정하실 경우, 발생하는 모든 문제에 대한 책임은 수정 배포자에게 있으며,
//반드시 원작자의 정보를 밝혀야 합니다.
//따라서,위의 카피레프트 부분은 삭제할 수 없습니다.
//////////////////////////////////////////////////////////////////////////////////

//메인 루틴 시작.
//실제로 음악을 재생하고 컨트롤하는 부분으로서, 매우 중요하니
//수정을 하시지 않는 것이 좋습니다.

//변수의 초기화
var songtime1 = null;
var doFirstPlay = null;
var songPlaying = false;
var track = 0;
var songNum = null;
var songName = null;
var songTime = null;
var showTitle = null;
var count = 0;
var loop = false;
var playMode = null;
var restLength = null;

function init_bgm() { //bgm Player 초기화
	//환경 변수를 체크하여 정의되지 않았으면 넣어준다.
	if (showTitle == null) { showTitle = 1; }
	switch (showTitle) {
		case 0 :
			document.form_bgm.stitle.style.visibility = "hidden";
			document.form_bgm.stitle.size = 1;
			break;
		case 1 :
			document.form_bgm.stitle.style.visibility = "visible";
			break;
		case 2 :
			document.form_bgm.stitle.style.visibility = "hidden";
			document.form_bgm.stitle.size = 1;
			break;
		default :
			showTitle = 1;
	}
	if (playMode == null) { playMode = 0; }
	if (restLength == null) { restLength = 5; }
	if (doFirstPlay == null) { doFirstPlay = 1; }
	if (doFirstPlay == 1) { play(); }
}

function addbgm( url, title, time ) { //bgm 추가
	if (songNum == null) { songNum = new Array(); count = 0;} else { count = songNum.length; }
	if (songName == null) { songName = new Array(); }
	if (songTime == null) { songTime = new Array(); }
	songNum[count] = url;
	if (title == null || title == '' ) { title1 = 'Track ' + (count + 1); } else { title1 = title; }
	songName[count] = title1;
	songTime[count] = time;
}

function chgLoop() { //반복 여부 설정
	if (loop == false) {loop = true;}
	else {loop = false;}
}

//재생 함수.
function play() {
	if (songPlaying) { //재생중이라면...
		alert("Playing!!!");
		return;
	}
	//재생 모드에 따른 초기 트랙번호 설정.
	switch (playMode) {
		case 0 :
			track = 0;
			break;
		case 1 : 
			track = Math.floor(Math.random() * songNum.length);
			break;
		default : 
			track = 0;
	}
	chooseSong(track);
}

function stopTrack() { // 음악 멈추기
	document.Music.Stop() //윈도우 미디어 컨트롤을 위한 옵션
	if (songPlaying) { //재생중이라면...
		clearTimeout(songtime1); //타임아웃을 해제한다.
	}
	else { 
		alert("Stopped."); 
		return false;
	}
	songPlaying = false; //재생하지 않음으로 설정.
	updateTrack(); //제목 업데이트(기본 제목으로)
}

function checkloop( action ) { //반복 여부 체크
	if ( loop == true ) { chooseSong(track); }
	else {
		switch (action) {
			case "next" : //다음 트랙으로 명령을 주면
				nextTrack();
				break;
			case "pre" : //이전 트랙으로 명령을 주면(예비용)
				preTrack();
				break;
			default :  //알 수 없는 명령을 주었을 때에는 에러를 내보낸다
				alert("???");
				stopTrack();
		}
	}
}

function chooseSong(aaa) { // 트랙으로 직접 건너뛰기
	if (songPlaying) { //재생중이라면..
		clearTimeout(songtime1); //타임아웃을 해제한다.
	}
	track = aaa; 
	//사용자가 멋모르고 트랙 번호를 입력하면...
	if(track > songNum.length - 1 || track < 0) { 
		alert("존재하지 않는 트랙번호입니다!!!"); 
		return false;
	} //에러 메시지를 보낸다.
	var nowtrack1 = songNum[track];
	document.Music.Open(nowtrack1); //배경음악 URL 변경 <- 윈도우 미디어 플레이어 컨트롤을 위한 옵션
	//만약에 Beta 1.x처럼 <bgsound> 태그를 쓸때에는 아래와 같이 해준다
	//document.all.<bgsound> 태그의 ID.src = nowtrack1;
	songPlaying = true; //재생중..
	updateTrack(); //제목 업데이트
	var t_time1 = songTime[track] + restLength;
	var t_time = t_time1 * 1000;
	songtime1 = setTimeout("checkloop('next')",t_time); //곡이 끝나면 자동으로 다음 트랙으로..(타임아웃 이용)
}

function nextTrack() { //다음 트랙으로 건너뛰기
	if (playMode == 1) { var num = Math.floor(Math.random() * songNum.length); } //랜덤 재생일때 처리
	else {
		if(track == songNum.length - 1) { var num = 0; } //맨 끝 트랙을 재생하고 있다면 자동으로 처음으로 온다.
		else { var num = track + 1; }
	}
	chooseSong(num);
}

function preTrack() { //이전 트랙으로 건너뛰기
	if (playMode == 1) { var num = Math.floor(Math.random() * songNum.length); } //랜덤 재생일때의 처리
	else {
		if(track == 0) { var num = songNum.length - 1; } //처음 트랙을 재생하고 있다면 자동으로 맨 끝으로 온다.
		else { var num = track - 1; }
	}
	chooseSong(num);
}

function updateTrack() { //노래 제목 업데이트
	if (songPlaying) { //노래 재생중의 제목은..
	track_idx = track + 1; //노래 번호..
	switch (showTitle) {
		case 0 :
			window.status = ('제목 표시 기능을 사용하고 있지 않습니다!!'); return true;
			break;
		case 1 :
			document.form_bgm.stitle.value = "♬ " + track_idx + ". " + songName[track];
			break;
		case 2 :
			window.status = ('♬ ' + track_idx + '. ' + songName[track]); return true;
			break;
		default :
			window.status = ('제목 표시 기능을 사용하고 있지 않습니다!!'); return true;
		}
	}
	else { //노래를 재생하고 있지 않다면...
		switch (showTitle) {
		case 0 :
			window.status = ('Shinobu BGM Player 1.5 [stopped]'); return true;
			break;
		case 1 :
			document.form_bgm.stitle.value = "Shinobu BGM Player 1.5 [stopped]";
			break;
		case 2 :
			window.status = ('Shinobu BGM Player 1.5 [stopped]'); return true;
			break;
		default :
			window.status = ('Shinobu BGM Player 1.5 [stopped]'); return true;
		}
	}
}

function m_list() { //새창으로 BGM 선택창 띄우기
	window.open('bgm_sele.html','LinksRemote','width=450,height=500,scrollbars=1,resizable=1');
}
