/*  Functions used by the filebrowser
 *  (c) Softwaredesign AB
 *--------------------------------------------------------------------------*/

_fadd = function(url) {
  new Ajax.Updater('filecontainer', url, {evalScripts: true});
}

_nfile = function(url, fromFilepicker) {
  if(fromFilepicker) {
    updateFilecontainer(url, new Form.serialize('chosenfilesform', true));
  } else {
    updateFilecontainer(url, null);
  }
}

_efile = function(url) {
  updateFilecontainer(url, null);
}

updateFilecontainer = function(url, params) {
  new Ajax.Updater('filecontainer', url, {method:'post', parameters:params, evalScripts:true});
}
 
changeFolder = function(el, fid, url, params) {
  var folders = $$('td.foldername_cells');
  for(i = 0; i < folders.length; i++) {
    Element.removeClassName(folders[i], 'selectedMenu');
  }
  Element.addClassName(el, 'selectedMenu');
  Element.toggle('folder_' + fid + '_children');
  $('currentFolderId').value = fid;
  updateFilecontainer(url, params);
}

openpopup = function(url, name) {
  window.open(url, name,
              "status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=0,height=420,width=600,location=0,scrollbars=1"); 
}

addFolderPopup = function(url) {
  var parentId = $('currentFolderId').value;
  var popupUrl = url + '/' + parentId + '&c=_fadd';
  openpopup(popupUrl, 'addfolderpopup');
}

addFilePopup = function(url, optionalParams) {
  if(optionalParams === undefined) {
    optionalParams = '';
  }
  
  var parentId = $('currentFolderId').value;
  var get = 'c=_nfile' + optionalParams;
  var popupUrl = url + '/' + parentId + '?' + get;
  openpopup(popupUrl, 'uploadfilepopup');
}

editFilePopup = function(url) {
  var get = 'c=_efile';
  openpopup(url + '/?' + get, 'editfilepopup');
}

removeFolder = function(url, fid) {
  new Ajax.Request(url);
}

var browserCallbacks = {
  onClose: function(data) { return data; },
  onOpen: function() { }
};

filterElement = function(pattern) {
  var el = document.createElement('input');
  el.name = 'filter';
  el.value = pattern;
  return el;
}

multiSelectElement = function(allow) {
  var el = document.createElement('input');
  el.name = 'multiselect';
  el.value = allow;
  return el;
}

clearChoosenFiles = function() {
  var prefix = '_choosen';
  Element.select('chosenfiles', 'li').each(function(i) {
    var elementID = i.id.substr(0, (i.id.length - prefix.length));
    if($(elementID)) {
      Element.show(elementID);
    }
    Element.remove(i);
  });
}

hideChoosenFiles = function() {
  Element.select('filelist', 'li').each(function(i) {
    var elementID = i.id + '_choosen';
    if($(elementID)) {
      Element.hide(i);
    }
  });
}

closingFilePicker = function(callback) {
  return Form.serialize('chosenfilesform', true);
}

openFilePicker = function(browserUrl, paramData) {
  Dialog.confirm(
    {url: browserUrl, options: {method: 'post', parameters: paramData.onOpen()}}, {
      className: "alphacube",
      top: 10,
      width: 700,
      okLabel: 'Ok',
      cancelLabel: 'Avbryt',
      showEffect: Element.show,
      hideEffect: Element.hide,
      onOk: function(win) {
        paramData.onClose(closingFilePicker());
        return true;
      },
      destroyOnClose: true,
      recenterAuto:false,
      draggable: true,
      buttonClass: 'browserButton'
    }
  );
}

