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

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

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

      var date = new Date();

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

      // UI Flash を表示する
      div.append('<div id="igo' + contentsIndex + '"></div>');
      showContentsFlash(contentsIndex, '/igo/IgoScreen.swf', 'igo' + contentsIndex , 'UI', '480', '480', namespace, 'igo');

      div.append('<table><tr><td><div style="font-size: 14px;">先手</div></td><td><div id="player0" style="font-size: 14px;"></div></td><td id="score0"	 style="font-size: 14px;" width="30"></td><td width="50"></td><td><div style="font-size: 14px;">後手</div></td><td><div id="player1" style="font-size: 14px;"></div></td><td id="score1" style="font-size: 14px;"></td><td width="50"></td><td><input type="button" id="pass" value="パス"></td></tr></table>');

      div.find('#pass').click(
        function() {        
          sendPass();
        }
      );
    }

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

    // controller -> screen

    //
    function setMode(mode) {
      namespace.igo.setMode(mode);
    }

    //
    function setBoard(str) {
      namespace.igo.setBoard(str);
    }

    //
    function clearStones() {
      namespace.igo.clearStones();
    }

    //
    function setStone(x, y, stone) {
      namespace.igo.setStone(x, y, stone);
    }

    //
    function setLastHand(x, y) {
      namespace.igo.setLastHand(x, y);
    }

    //
    function setJoinUsername(idx, username) {
      namespace.igo.setJoinUsername(idx, username);
    }

    //
    function setReadyState(idx, state) {
      namespace.igo.setReadyState(idx, state);
    }

    //
    function setPlayerData(idx, conn, userid, nickname) {
      if (idx == 0) {
        baseDiv.find('#player0').html(nickname);
      }
      if (idx == 1) {
        baseDiv.find('#player1').html(nickname);
      }
    }

    //
    function setPlayerScore(idx, score) {
      if (idx == 0) {
        baseDiv.find('#score0').html(score);
      }
      if (idx == 1) {
        baseDiv.find('#score1').html(score);
      }
    }

    //
    function setCurrentPlayer(idx) {
      if (idx == 1) {
        baseDiv.find('#player0').css({'color' : '#4040ff'});
        baseDiv.find('#player1').css({'color' : '#808080'});
      }
      if (idx == 2) {
        baseDiv.find('#player0').css({'color' : '#808080'});
        baseDiv.find('#player1').css({'color' : '#4040ff'});
      }
    }

    // screen -> controller

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

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

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

    //
    function sendPoint(ix, iy) {
      namespace.dispatcher.sendPoint(ix, iy);
    }

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

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

    //
    namespace.setMode          = setMode;
    namespace.setBoard         = setBoard;
    namespace.clearStones      = clearStones;
    namespace.setStone         = setStone;
    namespace.setLastHand      = setLastHand;
    namespace.setJoinUsername  = setJoinUsername;
    namespace.setReadyState    = setReadyState;
    namespace.setPlayerData    = setPlayerData;
    namespace.setPlayerScore   = setPlayerScore;
    namespace.setCurrentPlayer = setCurrentPlayer;

    //
    namespace.sendJoin  = sendJoin;
    namespace.sendReady = sendReady;
    namespace.sendLeave = sendLeave;
    namespace.sendPoint = sendPoint;
    namespace.sendPass  = sendPass;
  }) (namespace);
}
