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

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

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

      var date = new Date();

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

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

      //
      div.append('<input type="button" value="キャプチャー" id="capture_button"></div>');
      div.find('#capture_button').click(
        function() {
          namespace.block.capture(session_code);
        }
      );
    }

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

    // controller -> screen

    //
    function addBlock(i, j, k, c) {
      namespace.block.addBlock(i, j, k, c);
    }

    //
    function removeBlock(i, j, k) {
      namespace.block.removeBlock(i, j, k);
    }

    //
    function blockList(str) {
      namespace.block.blockList(str);
    }

    // screen -> controller

    //
    function sendAddBlock(i, j, k, c) {
      namespace.dispatcher.sendAddBlock(i, j, k, c);
    }

    //
    function sendRemoveBlock(i, j, k) {
      namespace.dispatcher.sendRemoveBlock(i, j, k);
    }

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

    //
    namespace.addBlock        = addBlock;
    namespace.removeBlock     = removeBlock;
    namespace.blockList       = blockList;
    namespace.sendAddBlock    = sendAddBlock;
    namespace.sendRemoveBlock = sendRemoveBlock;
  }) (namespace);
}
