var sounds = [];
var soundIndex = 0;

/*******************************************************************************
 * sound manager
 ******************************************************************************/

// useHighPerformaceをtrueにすると, Firefoxでスクロールの範囲外にある場合にswfがロードされない
soundManager.useHighPerformance = false;
soundManager.url = "swf/";
soundManager.waitForWindowLoad = true;
soundManager.debugMode = false;
soundManager.onload = function() {
	sounds.push(soundManager.createSound({
		id : 'soundPublic',
		url : 'sounds/pui.mp3'
	}));
	sounds.push(soundManager.createSound({
		id : 'soundOwner',
		url : 'sounds/hyupa.mp3'
	}));
	sounds.push(soundManager.createSound({
		id : 'soundSelf',
		url : 'sounds/pon.mp3'
	}));
	$("btnSound").disabled = false;
}

/*******************************************************************************
 * event handler
 ******************************************************************************/

var skypeIdLast = "";
var userNameLast = "";
var titleLast = null;
var noteLast = null;

function startInit() {
	$("div_contents").style.display = "block";

	noteChanged();
	titleChanged();
	userNameChanged();
	skypeIdChanged();

	typePublicChanged();
	displayUrlChanged();
	customizeCssCheckChanged();
	customizeJsExtChanged();
	displayCallChanged();
	if (!$("chkDisplayCall").checked) {
		$("txtDisplayCallNote").value = "上のボタンを押すと、" + getUserNameStr()
				+ "を召喚することができます。";
	}
	displayCallNoteChanged();

	securityPasswordCheckChanged();
}

function getUserNameStr() {
	if (userNameLast == "") {
		return "チャット作成者";
	} else {
		return userNameLast;
	}
}

function skypeIdChanged() {
	var skypeId = $("skypeId").value;
	if (skypeId == skypeIdLast) {
		return;
	}
	if (skypeIdLast == userNameLast) {
		setUserName(skypeId);
	}
	skypeIdLast = skypeId;
}

function setUserName(userName) {
	var elmUserName = $("txtUserName");
	elmUserName.value = userName;
	userNameChanged(userName);
}

function userNameChanged(userName) {
	userName = userName || $("txtUserName").value;
	if (userName == userNameLast) {
		return;
	}
	if (userName == "") {
		userName = $("skypeId").value;
	}

	var elmSkypeState = $("img_header_state");
	var str = Kf.Lib.Basic.escapeHtmlString(userName);
	if (str != "") {
		str += "の";
	}
	str += "スカイプ状態（緑：オンライン、黄：退席中、灰：オフライン or 状態非公開）";
	elmSkypeState.alt = str;
	elmSkypeState.title = str;

	if ($("txtDisplayCallNote").value == "上のボタンを押すと、" + getUserNameStr()
			+ "を召喚することができます。") {
		$("txtDisplayCallNote").value = "上のボタンを押すと、" + userName
				+ "を召喚することができます。"
		displayCallNoteChanged();
	}

	var defaultTitleLast = getDefaultTitle(userNameLast);
	if (titleLast == defaultTitleLast) {
		var title = getDefaultTitle(userName);
		setTitle(title);
	}
	userNameLast = userName;
}

function setTitle(title) {
	var elmTitle = $("txtTitle");
	elmTitle.value = title;
	titleChanged(title);
}

function titleChanged(title) {
	title = title || $("txtTitle").value;
	if (title == titleLast) {
		return;
	}
	var elmSkypeTitle = $("span_header_title");
	elmSkypeTitle.innerHTML = Kf.Lib.Basic.escapeHtmlString(title);

	if (titleLast == $("txtMobileTitle").value) {
		$("txtMobileTitle").value = title;
	}

	titleLast = title;
}

function setNote(note) {
	var elmNote = $("txtNote");
	elmNote.value = note;
	noteChanged(note);
}

function noteChanged(note) {
	note = note || $("txtNote").value;
	if (note == noteLast) {
		return;
	}

	if (noteLast == $("txtMobileNote").value) {
		$("txtMobileNote").value = note;
	}

	noteLast = note;

	var elmSkypeNote = $("div_header_note");
	note = Kf.Lib.Basic.escapeHtmlString(note);
	note = Kf.Lib.Basic.replaceLinkString(note, "_blank");
	elmSkypeNote.innerHTML = note;
	if (note == "") {
		elmSkypeNote.style.display = "none";
	} else {
		elmSkypeNote.style.display = "block";
	}
}

function checkInput(event) {
	var skypeId = $("skypeId").value;
	if (skypeId.length == 0) {
		alert("スカイプIDが入力されていません。");
		return false;
	}
	var userName = $("txtUserName").value;
	if (40 < userName.length) {
		alert("ユーザ名は40文字以内にしてください。（現在" + userName.length + "文字）");
		return false;
	}
	var title = $("txtTitle").value;
	if (60 < title.length) {
		alert("チャットタイトルは60文字以内にしてください。（現在" + title.length + "文字）");
		return false;
	}
	var note = $("txtNote").value;
	if (120 < note.length) {
		alert("チャット説明は120文字以内にしてください。（現在" + note.length + "文字）");
		return false;
	}

	if ($("chkCustomizeCssExt").checked && $("txtCustomizeCss").value == "") {
		alert("外部スタイルシートが入力されていません。");
		return false;
	}
	if ($("chkCustomizeJsExt").checked && $("txtCustomizeJsExt").value == "") {
		alert("外部スクリプトが入力されていません。");
		return false;
	}

	if ($("chkSecurityPassword").checked
			&& $("txtSecurityPassword").value == "") {
		alert("パスワードが入力されていません。");
		return false;
	}

	return true;
}

function playSound() {
	if (sounds.length == 0) {
		return;
	}
	var sound = sounds[soundIndex];
	sound.play({
		volume : 50
	});
	soundIndex = (soundIndex + 1) % sounds.length;
}

/*******************************************************************************
 * private
 ******************************************************************************/

function getDefaultTitle(userName) {
	if (userName == "") {
		return "";
	} else {
		return userName + "のチャット";
	}
}

/*******************************************************************************
 * detail
 ******************************************************************************/

function showDetail() {
	$("div_detail_area").style.visibility = "visible";
}

function onMouseOverDetailButton() {
	$("span_detail_button").style.backgroundColor = "#eee";
}

function onMouseOutDetailButton() {
	$("span_detail_button").style.backgroundColor = "#fff";
}

function typePublicChanged() {
	var target = $("selectTypePublic");
	var divPublic = $("div_logarea_public");
	if (target.value == "both") {
		$("div_tabheader").style.display = "block";
		$("div_inputarea").style.display = "block";
		$("div_logarea_public").style.height = "280px";
		$("div_logarea_public").style.display = "block";
		$("div_logarea_private").style.display = "none";
	} else if (target.value == "public") {
		$("div_tabheader").style.display = "none";
		$("div_inputarea").style.display = "block";
		$("div_logarea_public").style.height = "296px";
		$("div_logarea_public").style.display = "block";
		$("div_logarea_private").style.display = "none";
	} else if (target.value == "private") {
		$("div_tabheader").style.display = "none";
		$("div_inputarea").style.display = "block";
		$("div_logarea_private").style.height = "296px";
		$("div_logarea_public").style.display = "none";
		$("div_logarea_private").style.display = "block";
	} else {
		$("div_tabheader").style.display = "none";
		$("div_inputarea").style.display = "none";
		$("div_logarea_public").style.height = "398px";
		$("div_logarea_public").style.display = "block";
		$("div_logarea_private").style.display = "none";
	}
}

function displayUrlChanged() {
	var target = $("chkDisplayUrl");
	if (target.checked) {
		$("log_message_url").innerHTML = "<a href='http://skwebchat.net/' target='_blank'>http://skwebchat.net/</a>";
	} else {
		$("log_message_url").innerHTML = "http://skwebchat.net/";
	}
}

function displayCallChanged() {
	var target = $("chkDisplayCall");
	var txtCallNote = $("txtDisplayCallNote");
	var callArea = $("div_callarea");
	if (target.checked) {
		txtCallNote.disabled = false;
		txtCallNote.style.backgroundColor = "#ffffff";
		callArea.style.display = "block";
		callArea.style.width = ($("div_inputarea").offsetWidth - 2) + "px";
		callArea.style.height = ($("div_inputarea").offsetHeight - 2) + "px";
	} else {
		txtCallNote.disabled = true;
		txtCallNote.style.backgroundColor = "#cccccc";
		callArea.style.display = "none";
	}
}

function displayCallNoteChanged() {
	var txtCallNote = $("txtDisplayCallNote");
	var callNote = $("div_call_note");
	var note = txtCallNote.value;
	note = Kf.Lib.Basic.escapeHtmlString(note);
	note = Kf.Lib.Basic.replaceLinkString(note, "_blank");
	callNote.innerHTML = note;
}

function customizeCssCheckChanged() {
	var target = $("chkCustomizeCss");
	var txtElm = $("txtCustomizeCss");
	if (target.checked) {
		txtElm.disabled = false;
		txtElm.style.backgroundColor = "#ffffff";
	} else {
		txtElm.disabled = true;
		txtElm.style.backgroundColor = "#cccccc";
	}
}

function customizeCssChanged() {
}

function customizeJsExtChanged() {
	var target = $("chkCustomizeJsExt");
	var txtElm = $("txtCustomizeJsExt");
	if (target.checked) {
		txtElm.disabled = false;
		txtElm.style.backgroundColor = "#ffffff";
	} else {
		txtElm.disabled = true;
		txtElm.style.backgroundColor = "#cccccc";
	}
}

function securityPasswordCheckChanged() {
	var target = $("chkSecurityPassword");
	var txtElm = $("txtSecurityPassword");
	if (target.checked) {
		txtElm.disabled = false;
		txtElm.style.backgroundColor = "#ffffff";
	} else {
		txtElm.disabled = true;
		txtElm.style.backgroundColor = "#cccccc";
	}
}
