var Portal = Class.create();
Portal.prototype = {
  initialize: function (options) {
    this.setOptions(options);

    //var sortables = $A($(this.options.portal).getElementsByClassName(this.options.column));
    var sortables = $A(document.getElementsByClassName(this.options.column));
    sortables.each(function (sortable) {
      Sortable.create(sortable, { 
        containment: sortables,
        constraint: false,
        tag: 'div',
        only: this.options.block,
        dropOnEmpty: true,
        handle: this.options.handle,
        hoverclass: this.options.hoverclass,
        scroll:window,
        onUpdate: function (container) {
          if (!this.options.saveurl) {
            return;
          }
          if (container.id == this.options.blocklist) {
            return;
          }
          var url = this.options.saveurl;
          var postBody = container.id + ':';
          var blocks = $A($(container).getElementsByClassName(this.options.block));
          postBody += blocks.pluck('id').join(',');
          postBody = 'value=' + postBody;

			url += '&'+postBody;
			advAJAX.get(
			{
				url: url,
				onLoading : loading,
				onSuccess : function(rspObj)
				{
					//alert(rspObj.responseText);
				},
				onComplete : complete
			});
        }.bind(this)
      });
    }.bind(this));

  },

  setOptions: function (options) {
    this.options = {
      portal: 'portal',
      column: 'portal-column',
      block: 'block',
      content: 'content',
      handle: 'handle',
      hoverclass: 'block-hover',
      toggle: 'block-toggle',
      blocklist: 'portal-column-block-list',
      blocklistlink: 'portal-block-list-link',
      blocklisthandle: 'block-list-handle',
      saveurl: '/'+MODULE_NAME+'/SaveUserDefineBlock/?'
    }
    Object.extend(this.options, options || {});
  },

  applySettings: function (settings) {
    for (var container in settings) {
      settings[container].each(function (block) {
        $(container).appendChild($(block));
      });
    }
  }
}

