﻿//////////////////////////////////////////////////////////////////////////////////
//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 :
			top.frames['bgm'].document.all.stitle.style.visibility = "hidden";
			top.frames['bgm'].document.all.stitle.size = 1;
			break;
		case 1 :
			top.frames['bgm'].document.all.stitle.style.visibility = "visible";
			break;
		case 2 :
			top.frames['bgm'].document.all.stitle.style.visibility = "hidden";
			top.frames['bgm'].document.all.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( file_name, title, time ) { // bgm 추가
  var url = "/bgm/files/" + file_name
	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("이미 재생중입니다!!!");
	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() { //  음악 멈추기
	top.frames['bgm'].document.all.Music.Stop() // 윈도우 미디어 컨트롤을 위한 옵션
	if (songPlaying) { // 재생중이라면...
	clearTimeout(songtime1); // 타임아웃을 해제한다.
	}
	else { alert("이미 멈추셨습니다."); 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("알 수 없는 명령입니다!!\n\n메인 스크립트를 확인하신후, 재실행하십시오");
				stopTrack();
		}
	}
}

function chooseSong(aaa) { // 트랙으로 직접 건너뛰기
	if (songPlaying) { // 재생중이라면..
	  clearTimeout(songtime1); // 타임아웃을 해제한다.
	}
	track = aaa; 
	// 사용자가 멋모르고 트랙 번호를 입력하면...
	if(track > songNum.length - 1 || track < 0) { alert("존재하지 않는 트랙번호입니다!!!"); return false;} // 에러 메시지를 보낸다.
		var nowtrack1 = songNum[track];
		top.frames['bgm'].document.all.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.all.stitle.value = "♬ " + track_idx + ". " + songName[track];     // input text를 이용할 경우 사용
			top.frames['bgm'].document.all.stitle.innerHTML = "♬ " + track_idx + ". " + songName[track];
			//top.frames['z_main'].document.all.s_title.innerHTML = "♬ " + 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 = (' ◆ 주원닷컴 BGM ♬'); return true;
			break;
		case 1 :
			//document.all.stitle.value = " ◆ 주원닷컴 BGM ♬";     // input text를 이용할 경우 사용
			top.frames['bgm'].document.all.stitle.innerHTML = " ◆ 주원닷컴 BGM ♬";
			//top.frames['z_main'].document.all.s_title.innerHTML = " ◆ 주원닷컴 BGM ♬";
			break;
		case 2 :
			window.status = (' ◆ 주원닷컴 BGM ♬'); return true;
			break;
		default :
			window.status = (' ◆ 주원닷컴 BGM ♬'); return true;
		}
	}
}

function m_list() { // 새창으로 BGM 선택창 띄우기
	window.open('../bgm/bgm_list.html','LinksRemote','width=450,height=480,scrollbars=1,resizable=0');
}