//
// チャットログ
//

//
// チャットログを表示する
//
function showChatlog(divid, width, height, effect_button) {
  var date = new Date();

  var attributes = {
     id   : "ExternalArea",
     name : "ExternalArea"
  };

  var params = {
    allowScriptAccess : 'sameDomain',
    allowFullScreen   : 'true',
    quality           : 'high',
    bgcolor           : '#f5f5f0'
  };

  var flashvars = {
    width  : width,
    height : height
  };

  if (effect_button == true) {
    flashvars['show_effect_button'] = 'true';
  }

  var swfpath = "/chatlog/Area.swf?" + date.getTime();

  swfobject.embedSWF(swfpath, divid, width, height, "8", false, flashvars, params, attributes);

  // メニュー用の ID を作る。
  $("#" + divid).after("<div id=\"chatmenu\"></div>");
  $("#" + divid).after("<div id=\"friendmenu\"></div>");
}

//
// 効果音ボタンを表示する
//
function addEffectButton() {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.addEffectButton();
  }
}

//
// チャットログ -> 通信 Flash
// area         -> controller
// client       -> server
//

// 発言を送信する
function sendChat(text) {
  var swf = swfobject.getObjectById('ExternalMain');
  if (swf) {
    swf.sendChat(text);
  }
}

// tell を送信する
function sendTellChat(userid, text) {
  var swf = swfobject.getObjectById('ExternalMain');
  if (swf) {
    swf.sendTellChat(userid, text);
  }
}

// コマンドを送信する
function sendCommand(command) {
  var swf = swfobject.getObjectById('ExternalMain');
  if (swf) {
    swf.sendCommand(command);
  }
}

// ドローを送信する
function sendDraw(draw) {
  var swf = swfobject.getObjectById('ExternalMain');
  if (swf) {
    swf.sendDraw(draw);
  }
}

//
// 通信 Flash -> チャットログ
// controller -> area
// server     -> client
//

// テキストをチャットログに追加する
function addText(text, color) {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.addText(text, color);
  }
}

// ドローをチャットログに追加する
function addDraw(userid, nickname, draw) {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.addDraw(userid, nickname, draw);
  }
}

// YouTube をチャットログに追加する
function addYouTube(userid, nickname, videoid) {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.addYouTube(userid, nickname, videoid);
  }
}

// vimeo をチャットログに追加する
function addVimeo(userid, nickname, videoid) {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.addVimeo(userid, nickname, videoid);
  }
}

// チャット音を鳴らす
function playChatSound() {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.playChatSound();
  }
}

// 入室音を鳴らす
function playKnockSound() {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.playKnockSound();
  }
}

// ベルを鳴らす
function ringBell() {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.ringBell();
  }
}

// MML を演奏する
function playMML(mml) {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.playMML(mml);
  }
}

var userlist = new Array();
var selectedUserSessionCode = null;

//
//
//
function selectUserIcon(sessionCode) {
  if (sessionCode == null) {
    return;
  }

  var swf = swfobject.getObjectById('ExternalArea');
  if (!swf) {
    return;
  }

  if (selectedUserSessionCode == sessionCode) {
    selectedUserSessionCode = null;
    swf.unselectUser();
    swf.setRoomMode();
  } else {
    selectedUserSessionCode = sessionCode;
    swf.selectUser(sessionCode);
    setTellMode();
  }

  showUserIconList();
}

//
// ユーザーアイコン一覧を表示する
//
function showUserIconList() {
  var tmp = '<table><tr>';
  for (var i = 0; i < userlist.length; i++) {
    var bgcolor = '#f0f0f0';
    if (userlist[i].session_code == selectedUserSessionCode) {
      bgcolor = '#ffb080';
    }
    tmp += '<td width="70">';
    tmp += '<div style="width: 60px; height: 60px; background-color: ' + bgcolor + ';" onClick="selectUserIcon(' + "'" + userlist[i].session_code + "'" + ');"></div>';
    tmp += '<div style="width: 60px; height: 14px; overflow: hidden; font-size: 10px;" onClick="selectUserIcon(' + "'" + userlist[i].session_code + "'" + ');">' + userlist[i].nickname + '</div>';
    tmp += '</td>'
    if (i % 3 == 2) {
      tmp += '</tr><tr>';
    }
  }
  tmp += '</tr></table>';

  $('#user_icon_list').html(tmp);
}

// ユーザーリストにユーザーを追加する
function addUser(session_code, userid, nickname) {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.addUser(session_code, userid, nickname);
  }

  var userdata = {
    session_code: session_code,
    userid:       userid,
    nickname:     nickname
  };
  userlist.push(userdata);

  showUserIconList();
}

// ユーザーリストからユーザーを削除する
function removeUser(session_code) {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.removeUser(session_code);
  }

  if (selectedUserSessionCode == session_code) {
    selectedUserSessionCode = null;
  }

  var t = -1;
  for (var i = 0; i < userlist.length; i++) {
    if (userlist[i].session_code == session_code) {
      t = i;
      break;
    }
  }
  if (t >= 0) {
    userlist.splice(t, 1);
  }

  showUserIconList();
}

//
// ユーザーが選択された場合に表示するメニュー
//

// メニューを表示する
function showMenu() {
  $('#chatmenu').empty();
  $('#chatmenu').append('<input type="button" value="テル" onClick="setTellMode();">');
  $('#chatmenu').append('<input type="button" value="プロフィール" onClick="openMyPage();">');
  $('#chatmenu').append('<input type="button" value="フレンド登録" onClick="offerFriend();">');
  $('#chatmenu').append('<input type="button" value="閉じる" onClick="closeMenu();">');
}

// メニューを非表示にする
function closeMenu() {
  $('#chatmenu').empty();

  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.clearSelection();
    swf.setRoomMode();
  }
}

/*
// フレンドメニューを表示する
function showFriendMenu() {
  $('#chatmenu').empty();
  $('#chatmenu').append('<input type="button" value="Fテル" onClick="setFriendTellMode();">');
  $('#chatmenu').append('<input type="button" value="プロフィール" onClick="openFriendMyPage();">');
  $('#chatmenu').append('<input type="button" value="閉じる" onClick="closeFriendMenu();">');
}

// メニューを非表示にする
function closeFriendMenu() {
  $('#chatmenu').empty();

  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
//  swf.clearFriendSelection();
    swf.setRoomMode();
  }
}
*/

// tell モードへ
function setTellMode() {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.setTellMode();
  }
}

// マイページを開く
function openMyPage() {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.openMyPage();
  }
}

// フレンド登録
function offerFriend() {
  var swf = swfobject.getObjectById('ExternalArea');
  if (swf) {
    swf.offerFriend();
  }
}
