Event.observe(window, 'load', function() {

  /*
   *
   */
  var pm = ProgressManager.getInstance();

  pm.load(1);

  /*
   *
   */
  var today = new Date();

  pm.setCalendar(today, today.shift(14));

  /*
   *
   */
  document.getElementsByClassName('tag_prototype').each(function(tp) {
    new Draggable(tp, {
      revert: true
    });
  });

  /*
   *
   */
  var temporaryTagId = 10000;

  Droppables.add('tag_deployer', {
    accept: 'tag_prototype',

    onDrop: function(dragElement, dropElement, event) {
      var pm = ProgressManager.getInstance();
      var tagDeployer = $('tag_deployer');
      var realOffset = Position.realOffset(tagDeployer);
      var offset = Position.cumulativeOffset(tagDeployer);
      var left = Event.pointerX(event) - offset[0] + realOffset[0];
      var top = Event.pointerY(event) - offset[1] + realOffset[1];

      //
      var startDate = pm.getCalendarStartDate().shift(Math.floor(left / 40));

      //
      var order = Math.floor(top / 40) + 1;
      var traders = pm.traders;
      var traderId = null;

      for (var id in traders) {
        if (traders[id].order == order) {
          traderId = id;
          break;
        }
      }

      var tagOption = {
        tagId: temporaryTagId++,
        startDate: {year: startDate.getFullYear(), month: startDate.getMonth() + 1, day: startDate.getDate()},
        period: 2,
        traderId: traderId,
        comment: 'ここにコメントが表示されます。'
      };

      switch (dragElement.id) {
        case 'drawing_prototype':
          Object.extend(tagOption, {
            tagName: '図面',
            tagType: 1
          });
          break;
        case 'parts_prototype':
          Object.extend(tagOption, {
            tagName: '部品',
            tagType: 2
          });
          break;
        case 'mounting_prototype':
          Object.extend(tagOption, {
            tagName: '実装',
            tagType: 3
          });
          break;
      }

      pm.addTag(new Tag(tagOption, true));
      pm.clearLinker();
      pm.deployTag(false);
      pm.drawLinker();
    }
  });

});

