//
//
//
function loadJinroFunctions(namespace, ci) {
  (function() {
    var contentsIndex = ci;
    var baseDiv;

    // div 要素
    var dispatcher; // ディスパッチャー (swf)
    var jinro;     // プレイヤー (swf)

    //
    //
    //
    function makeHtml(aBaseDiv) {
      //
      baseDiv = aBaseDiv;
      var div = baseDiv;

      // Dispatcher Flash を表示する
      div.append('<div id="dispatcher' + contentsIndex + '"></div>');
      showDispatcherFlash(contentsIndex, '/jinro/JinroSub.swf', "dispatcher" + contentsIndex, namespace);

      // UI Flash を表示する
      div.append('<div id="jinro' + contentsIndex + '"></div>');
      showContentsFlash(contentsIndex, '/jinro/JinroScreen.swf', 'jinro' + contentsIndex , 'UI', '600', '500', namespace, 'jinro');
    }

    //
    var loadCount = 0;
    function loaded(t) {
      loadCount++;
      if (loadCount >= 2) {
        namespace.dispatcher.sendLoaded();
      }
    }

    // タイトル画面 TODO
    function resize1() {
      var swf = swfobject.getObjectById('ExternalArea');
      if (swf) {
        swf.className = "resizeEntranceChat";
      }
      swf = swfobject.getObjectById('External' + ci + 'UI');
      if (swf) {
        swf.className = "resizeEntranceGame";
      }
    }

    // ゲーム画面 TODO
    function resize2() {
      var swf = swfobject.getObjectById('ExternalArea');
      if (swf) {
        swf.className = "resizePlayChat";
      }
      swf = swfobject.getObjectById('External' + ci + 'UI');
      if (swf) {
        swf.className = "resizePlayGame";
      }
    }

    //
    // Controller to Game
    //

    //
    // ゲームの画面を切り替える。
    //
    function changeScreen(scr) {
      namespace.jinro.changeScreen(scr);
/*
      if (scr == "entry") {
        resize1();
      } else {
        resize2();
      }
*/
    }

    //
    function noVillage() {
      namespace.jinro.noVillage();
    }

    //
    function looking() {
      namespace.jinro.looking();
    }

    //
    function playing() {
      namespace.jinro.playing();
    }

    //
    function selectChara(chara, role) {
      namespace.jinro.selectChara(chara, role);
    }

    //
    function clearPlayerList() {
      namespace.jinro.clearPlayerList();
    }

    //
    function clearPlay() {
      namespace.jinro.clearPlay();
    }

    //
    function setNum(n) {
      namespace.jinro.setNum(n);
    }

    //
    function yourChara(chara, role) {
      namespace.jinro.yourChara(chara, role);
    }

    //
    function setChara(idx, chara, role, alive) {
      namespace.jinro.setChara(idx, chara, role, alive);
    }

    //
    function setMode(m) {
      namespace.jinro.setMode(m);
    }

    //
    function setSubMode(sm) {
      namespace.jinro.setSubMode(sm);
    }

    //
    function setDate(nth, zone) {
      namespace.jinro.setDate(nth, zone);
    }

    //
    function jchat(chara, chat) {
      namespace.jinro.jchat(chara, chat);
    }

    //
    function howl(chara, chat) {
      namespace.jinro.howl(chara, chat);
    }

    //
    function groan(chara, chat) {
      namespace.jinro.groan(chara, chat);
    }

    //
    function msg(m) {
      namespace.jinro.msg(m);
    }

    //
    function vote(chara) {
      namespace.jinro.vote(chara);
    }

    //
    function hunt(chara) {
      namespace.jinro.hunt(chara);
    }

    //
    function divine(chara) {
      namespace.jinro.divine(chara);
    }

    //
    function protect(chara) {
      namespace.jinro.protect(chara);
    }

    //
    function timerStart(sec, keika) {
      namespace.jinro.timerStart(sec, keika);
    }

    //
    function skipInfo(skips, alives) {
      namespace.jinro.skipInfo(skips, alives);
    }

    //
    // Game to Controller
    //
  
    //
    function join() {
      namespace.dispatcher.join();
    }

    //
    function select_chara(a, b) {
      namespace.dispatcher.selectChara(a, b);
    }

    //
    function make_village(window_time, day_sec, night_sec, min, a, nickname_flag) {
      namespace.dispatcher.makeVillage(window_time, day_sec, night_sec, min, a, nickname_flag);
    }

    //
    function sendJchat(chat) {
      namespace.dispatcher.sendJchat(chat);
    }

    //
    function sendHowl(chat) {
      namespace.dispatcher.sendHowl(chat);
    }

    //
    function sendGroan(chat) {
      namespace.dispatcher.sendGroan(chat);
    }

    //
    function sendSkip() {
      namespace.dispatcher.sendSkip();
    }

    //
    function sendVote(chara) {
      namespace.dispatcher.sendVote(chara);
    }

    //
    function sendHunt(chara) {
      namespace.dispatcher.sendHunt(chara);
    }

    //
    function sendDivine(chara) {
      namespace.dispatcher.sendDivine(chara);
    }

    //
    function sendProtect(chara) {
      namespace.dispatcher.sendProtect(chara);
    }

    //
    namespace.makeHtml = makeHtml;
    namespace.loaded   = loaded;

    namespace.resize1 = resize1;
    namespace.resize2 = resize2;
    namespace.changeScreen = changeScreen;
    namespace.noVillage = noVillage;
    namespace.looking = looking;
    namespace.playing = playing;
    namespace.selectChara = selectChara;
    namespace.clearPlayerList = clearPlayerList;
    namespace.clearPlay = clearPlay;
    namespace.setNum = setNum;
    namespace.yourChara = yourChara;
    namespace.setChara = setChara;
    namespace.setMode = setMode;
    namespace.setSubMode = setSubMode;
    namespace.setDate = setDate;
    namespace.jchat = jchat;
    namespace.howl = howl;
    namespace.groan = groan;
    namespace.msg = msg;
    namespace.vote = vote;
    namespace.hunt = hunt;
    namespace.divine = divine;
    namespace.protect = protect;
    namespace.timerStart = timerStart;
    namespace.skipInfo = skipInfo;
    namespace.join = join;
    namespace.select_chara = select_chara;
    namespace.make_village = make_village;
    namespace.sendJchat = sendJchat;
    namespace.sendHowl = sendHowl;
    namespace.sendGroan = sendGroan;
    namespace.sendSkip = sendSkip;
    namespace.sendVote = sendVote;
    namespace.sendHunt = sendHunt;
    namespace.sendDivine = sendDivine;
    namespace.sendProtect = sendProtect;
  }) (namespace);
}
