var messageTimeout = null;
var CLOSE_TXT = 'X';

/* delete messages on load */
if (!messageTimeout) { 
  if ($('messages')) $('messages').hide(); 
  if ($('popupmessages')) $('popupmessages').hide();
  if ($('overlay')) $('overlay').hide();
}

/**
 * deletes the messege box after some timeout
 */
function eraseMessageBox(timeout) {
  if (messageTimeout) return;
  if (!timeout) {
    timeout = 3500;
  }
  if ($('depot_error')) {
    messageTimeout = window.setTimeout("eraseMessageBoxCallback('error')", timeout);    
  }
  if ($('depot_message')) {
    messageTimeout = window.setTimeout("eraseMessageBoxCallback('message')", timeout);
  }
}

/**
 * callspan function for erase message box
 * @access private
 */
function eraseMessageBoxCallback(type) {
  Element.update('depot_'+type, '');
  $('depot_'+type).removeClassName('cover');
  if ($('messages')) {
    window.setTimeout("$('messages').hide()", 10);
    window.setTimeout("$('overlay').hide()", 20);
  }
  if ($('popupmessages')) window.setTimeout("$('popupmessages').hide()", 10);
  
}

/**
 * show the messege box and close it after defined timeout
 */
function showMessageBox(message, type, timeout, cover) {  
  if ($('messages')) {
    $('messages').hide();
    $('overlay').hide();
  }
  if ($('popupmessages')) $('popupmessages').hide();
  
  if (message == '') {
    return false;
  }
  messageTimeout = null;
  if (!cover) {
    cover = false;
  }
  if (!type) {
    type = 'message';
  }
  if (!timeout) {
    timeout = 3500;
  }
  if ($('messages')) {
    $('messages').show();
  } else {
    $('popupmessages').show();
  }
  $('depot_'+type).update(message);
  if (cover) {
    $('depot_'+type).update('<span class="messagebox_close" onClick="eraseMessageBoxCallback(\'' + type + '\')" style="float:right;">' + CLOSE_TXT + '</span>' + $('depot_'+type).innerHTML);
    $('depot_'+type).addClassName('cover');
    $('overlay').show();
  }
  eraseMessageBox(timeout);
}

/**
 * toggle table columns visible/invisible with class
 */
function toggleViewable(module, category, field, countFields) {
  var class_visible = 'visible';
  var class_invisible = 'invisible';
  var fieldName = field.substring(5).replace('-','');
  var allCookie = document.cookie.split(/;/);
  if(allCookie instanceof Array) {
    for (var i=0; i< allCookie.length; i++) {
      tmpCookie = allCookie[i].split(/=/);
      if (tmpCookie[0].strip() == 'BGO_Sortorder_'+module+'_'+category) {
        var cookie = tmpCookie[1].split('%7C');
        break;
      }
    }
  } 
  if (!(cookie instanceof Array)) {
    obj = Sortable.serialize(category+'_list').toQueryParams();
    cookie = Object.values(obj)[0];
  }
  
  cookie = cookie.uniq();
   
  if ($(field).hasClassName(class_invisible) && cookie.length == countFields) {
    //set visible
    var visible = 0;
    var addIndex = -1;
    for (var i = 0; i < cookie.length; i++) {
      if (cookie[i].match(/-$/)) {
        visible++;
      }
      if (cookie[i] == fieldName+'-') {
        addIndex = i;
      }
    }
    if ((cookie.length - visible) > 7) {
      showMessageBox($(field).innerHTML + ' kann nicht eingeblendet werden, maximale Anzahl felder erreicht. <br>Bitte blenden Sie einer der anderen Felder aus, um dieses Feld zu sehen.','error',3500);
      return;
    }
    if (addIndex > -1) {
      showMessageBox($(field).innerHTML + ' wird eingeblendet','message',3500);
      cookie[addIndex] = fieldName;
    }
    $(field).addClassName(class_visible);
  } else {
    //set invisible
    for (var i = 0; i < cookie.length; i++) {
      if (cookie[i] == fieldName) {
        showMessageBox($(field).innerHTML + ' wird ausgeblendet','message',3500);
        cookie[i]=fieldName + '-';
      }
    }
    $(field).addClassName(class_invisible);
  }
  cookie = cookie.uniq();
  if (cookie.length == countFields) {
    document.cookie = "BGO_Sortorder_"+ module + '_' + category + "=" + escape(cookie.join('|')) + "; expires=31 Dec 2999 23:59:59 UTC;";
  }
  showTable(category);
  //location.reload();
  return true;
}
