/**
 * @author hooriza (ajaxUI team)
 */

(function(className) {

  SPS[className] = $Class({

    _o : null,
    _url : '',
    _vocabID : '',

    _getSelectedList : function() {

      var o = this._o;
      var aRet = [];

      $A(o.checkboxes).forEach(function(oCheckbox) {
        if (oCheckbox == o.selectall) return;

        if (oCheckbox.checked)
          aRet.push(oCheckbox.value);
      });

      return aRet;

    },

    _checkSelected : function(sKey) {
      var bSelected = this._getSelectedList().length > 0;
      if (!bSelected) alert(SPS.text(sKey));

      return bSelected;
    },

    $init : function(sEl) {

      var o = this._o = {};

      var oEl = $(sEl);

      o.selectall = $$('#selectall', oEl)[0];
      o.checkboxes = $$('input[name=vocabEntryID]', oEl);

      o.sort = $$('.option.u', oEl)[0];

      o.layerListen = $$('.layer_p.ulisten', oEl)[0];
      o.layerGrab = $$('.layer_p.ugrab', oEl)[0];
      o.layerSort = $$('.layer_p.usort', oEl)[0];

      $Element(o.layerListen).hide();
      $Element(o.layerGrab).hide();
      $Element(o.layerSort).hide();

      //SPS.selectbox.touchAll('select_d', oEl);

      this._repositionLayers();
      this._bindEvents();

    },

    _grab : function(srcVocabID) {
        
      var o = this._o;
      var aSelected = this._getSelectedList();
      var oTarget = $$('[name=target]', o.layerGrab)[0];
      var sTargetVocabID = SPS.getFormValue(oTarget);
      if (sTargetVocabID === null) {
        alert(SPS.text('SELECT_FOLDER'));
        oTarget.focus();
        return;
      }

      var oData = [];

      $A(aSelected).forEach(function(nID) {
        oData.push({ 'vocabEntryID' : nID });
      });

      var sUrl = this._url;
      var oAjax = $Ajax(sUrl, {

        onload : function(res) {
          var sRes = res.text();
          if (sRes == 'success') {
            location.reload();
            return;
          }
          location.reload();
        }

      });

     // document.getElementById('show_progress').style.display='block';document.getElementById('hide_progress').style.display='none';

      oAjax.request({
        'targetVocabID' : sTargetVocabID,
        'srcVocabID' : this._vocabID,
        'vocabEntryIDs' : $Json(oData).toString()
      });
    },
  
    _repositionLayers : function() {

      var o = this._o;

      document.body.insertBefore(o.layerListen, document.body.firstChild);
      document.body.insertBefore(o.layerGrab, document.body.firstChild);
      document.body.insertBefore(o.layerSort, document.body.firstChild);

    },

    _showListen : function(oEl, bTop) {

      var o = this._o;
      if (!this._checkSelected('SELECT_LISTEN_ITEM')) return;

      SPS.layer.show(o.layerListen);
      SPS.autoPosition(oEl, o.layerListen, [ 0, 5 ], bTop);

    },

    _doListen : function() {

      var o = this._o;
      var aSwf = [];

      $A(o.checkboxes).forEach(function(oCheckbox) {
        if (oCheckbox == o.selectall) return;

        if (oCheckbox.checked) {
          var sSwfFile = oCheckbox.className.match(/swf\(([^)]*)\)/);
          sSwfFile = sSwfFile && sSwfFile[1];
          if (sSwfFile) aSwf.push(sSwfFile);
        }
      });

      var oValues = SPS.data.getValue('.listen_', o.layerListen, [ 'loop', 'interval', 'type' ]);

      try {
        StudyNotesPlayer(aSwf.join('|'), oValues.loop, oValues.interval, oValues.type);
      } catch(e) { }
    },

    _showGrab : function(oEl, bTop, url, vocabID,all) {

      var o = this._o;
      if(all) {
        if (!this._checkSelected('SELECT_GRAB_ITEM')) return;
      }

      this._url = url;
      this._vocabID = vocabID;
      SPS.layer.show(o.layerGrab);
      SPS.autoPosition(oEl, o.layerGrab, [ 0, 5 ], bTop);

    },

    _bindEvents : function() {

      var self = this;
      var o = this._o;

      // selectAll 클릭했을때
      $Fn(function(oEvent) {

        var bFlag = this.checked;

        $A(o.checkboxes).forEach(function(oCheckbox) {
          if (oCheckbox == o.selectall) return;
          oCheckbox.checked = bFlag;
        });

      }).owner(o.selectall).attach(o.selectall, 'click');

      // Sort Options 클릭했을때
      $Fn(function(oEvent) {

        SPS.layer.show(o.layerSort);
        SPS.autoPosition(o.sort, o.layerSort, [ -o.layerSort.offsetWidth - 5, -o.sort.offsetHeight ]);

        oEvent.stop();

      }).attach(o.sort, 'click');

    }

  });

})('ct_58_02');
