// management box buttons properties
var managementButtons = new Array();

function initManagementBox()
{

  var i;
  var fieldId;
  var id;

  // edit ===============================
  i = 0;
  id = "managementButtonForm" + i;
  createFormDescription
  ( 
    id, 
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_DOCUMENT_EDIT,
    PARAM_EDIT_DOCUMENT_TITLE, 
    "Изменить название и&nbsp;краткое описание текущего документа.", 
    function() { return confirm( "Изменить параметры документа?" ) }, 
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос" 
  );
  managementButtons[i] = new Object;
  managementButtons[i] = createFormDescription
  ( 
    id, 
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_DOCUMENT_EDIT,
    PARAM_EDIT_DOCUMENT_TITLE, 
    "Изменить название и краткое описание текущего документа.", 
    function() { return confirm( "Изменить параметры документа?" ) }, 
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос" 
  );
  managementButtons[i]['imageUrl'] = THEME_PATH + "icons/edit.gif";
  managementButtons[i]['displayIfTrue'] = "USER_RIGHTS_ADD";

    fieldId = PARAM_PREVIOUS_DOCUMENT_URL;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_URL 
    );
    
    fieldId = PARAM_DOCUMENT_PATH_STRING;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_PATH_STRING 
    );
    
    fieldId = PARAM_EDIT_DOCUMENT_TITLE;
    managementButtons[i].textControlAdd
    ( 
      fieldId, 
      DOCUMENT_TITLE,
      'Заголовок документа:',
      MAX_DOCUMENT_TITLE_LENGTH
    );
    
    fieldId = PARAM_EDIT_DOCUMENT_SUMMARY;
    managementButtons[i].textareaControlAdd
    ( 
      fieldId, 
      DOCUMENT_SUMMARY,
      'Краткое содержание документа:',
      MAX_DOCUMENT_SUMMARY_LENGTH
    );

    fieldId = PARAM_EDIT_DOCUMENT_KEYWORDS;
    managementButtons[i].textareaControlAdd
    ( 
      fieldId, 
      DOCUMENT_KEYWORDS,
      'Ключевые слова документа:',
      MAX_DOCUMENT_KEYWORDS_LENGTH
    );
    
    
    
    
    
  // add new document ===============================
  i++;
  id = "managementButtonForm" + i;
  managementButtons[i] = createFormDescription
  ( 
    id, 
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_DOCUMENT_ADD,
    PARAM_NEW_DOCUMENT_TITLE, 
    "Добавить новый документ (он&nbsp;будет доступен в&nbsp;списке документов текущего документа).", 
    function() { return confirm( 'Создать вложенный документ?' ) }, 
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос" 
  );
  managementButtons[i]['imageUrl'] = THEME_PATH + "icons/adddocument.gif";
  managementButtons[i]['displayIfTrue'] = "USER_RIGHTS_ADD";

    fieldId = PARAM_PREVIOUS_DOCUMENT_URL;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_URL 
    );
    
    fieldId = PARAM_DOCUMENT_PATH_STRING;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_PATH_STRING 
    );

    fieldId = PARAM_NEW_DOCUMENT_TYPE;
    var item = 0;
    var itemsValues = new Array();
    var itemsCaptions = new Array();
    for ( var index in MODULES_SCREEN_NAMES )
    {
      itemsValues[item] = index;
      itemsCaptions[item] = MODULES_SCREEN_NAMES[index];
      item++;
    };
    managementButtons[i].radioControlAdd
    ( 
      fieldId, 
      DOCUMENT_TYPE,
      'Тип создаваемого документа:',
      itemsValues,
      itemsCaptions
    );
    
    fieldId = PARAM_NEW_DOCUMENT_TITLE;
    managementButtons[i].textControlAdd
    ( 
      fieldId, 
      '',
      'Заголовок документа:',
      MAX_DOCUMENT_TITLE_LENGTH
    );
    
    fieldId = PARAM_NEW_DOCUMENT_SUMMARY;
    managementButtons[i].textareaControlAdd
    ( 
      fieldId, 
      '',
      'Краткое содержание документа:',
      MAX_DOCUMENT_SUMMARY_LENGTH
    );
    
    fieldId = PARAM_NEW_DOCUMENT_KEYWORDS;
    managementButtons[i].textareaControlAdd
    ( 
      fieldId, 
      '',
      'Ключевые слова документа:',
      MAX_DOCUMENT_KEYWORDS_LENGTH
    );
     
    fieldId = PARAM_NEW_DOCUMENT_NAME;
    managementButtons[i].textControlAdd
    ( 
      fieldId, 
      '',
      'Имя документа на сервере (коротко, ясно, на&nbsp;английском языке, без&nbsp;пробелов):',
      MAX_DOCUMENT_FOLDER_NAME_LENGTH
    );
    
    fieldId = PARAM_NEW_DOCUMENT_LANGUAGE;
    managementButtons[i].textControlAdd
    ( 
      fieldId, 
      LANGUAGE,
      'Код&nbsp;языка документа по&nbsp;стандарту RFC&nbsp;1766 (например: ru-RU или&nbsp;en-US):',
      MAX_LANGUAGE_LENGTH
    );
    
    
    
    
    

  // add localization ===============================
  i++;
  id = "managementButtonForm" + i;
  managementButtons[i] = createFormDescription
  ( 
    id, 
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_DOCUMENT_ADD,
    PARAM_NEW_DOCUMENT_TITLE, 
    "Добавить перевод текущего документа (он&nbsp;будет доступен в&nbsp;списке языков текущего документа).", 
    function() { return confirm( 'Создать перевод?' ) }, 
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос" 
  );
  managementButtons[i]['imageUrl'] = THEME_PATH + "icons/addlocalization.gif";
  managementButtons[i]['displayIfTrue'] = "USER_RIGHTS_ADD";

    fieldId = PARAM_PREVIOUS_DOCUMENT_URL;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_URL 
    );
    
    fieldId = PARAM_DOCUMENT_PATH_STRING;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_PATH_STRING 
    );
    

    fieldId = PARAM_NEW_DOCUMENT_TYPE;
    var item = 0;
    var itemsValues = new Array();
    var itemsCaptions = new Array();
    for ( var index in MODULES_SCREEN_NAMES )
    {
      itemsValues[item] = index;
      itemsCaptions[item] = MODULES_SCREEN_NAMES[index];
      item++;
    };
    managementButtons[i].radioControlAdd
    ( 
      fieldId, 
      DOCUMENT_TYPE,
      'Тип создаваемого документа:',
      itemsValues,
      itemsCaptions
    );
    
    fieldId = PARAM_NEW_DOCUMENT_TITLE;
    managementButtons[i].textControlAdd
    ( 
      fieldId, 
      '',
      'Заголовок документа:',
      MAX_DOCUMENT_TITLE_LENGTH
    );
    
    fieldId = PARAM_NEW_DOCUMENT_SUMMARY;
    managementButtons[i].textareaControlAdd
    ( 
      fieldId, 
      '',
      'Краткое содержание документа:',
      MAX_DOCUMENT_SUMMARY_LENGTH
    );

    fieldId = PARAM_NEW_DOCUMENT_KEYWORDS;
    managementButtons[i].textareaControlAdd
    ( 
      fieldId, 
      '',
      'Ключевые слова документа:',
      MAX_DOCUMENT_KEYWORDS_LENGTH
    );
    
    fieldId = PARAM_NEW_DOCUMENT_NAME;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      ''
    );
    
    fieldId = PARAM_NEW_DOCUMENT_LANGUAGE;
    managementButtons[i].textControlAdd
    ( 
      fieldId, 
      '',
      'Код&nbsp;языка документа по&nbsp;стандарту RFC&nbsp;1766 (например: ru-RU или&nbsp;en-US):',
      MAX_LANGUAGE_LENGTH
    );
      
      
      
      
      
  // delete localization ===============================
  i++;
  id = "managementButtonForm" + i;
  managementButtons[i] = createFormDescription
  ( 
    id, 
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_DOCUMENT_REMOVE,
    PARAM_EDIT_DOCUMENT_TITLE, 
    "Удалить текущую локализацию этого документа.", 
    function() { return confirm( 'Удалить текущую локализацию документа?' ) }, 
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос" 
  );
  managementButtons[i]['imageUrl'] = THEME_PATH + "icons/deletelocalization.gif";
  managementButtons[i]['displayIfTrue'] = "USER_RIGHTS_DELETE";

    fieldId = PARAM_PREVIOUS_DOCUMENT_URL;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_URL 
    );
    
    fieldId = PARAM_DOCUMENT_PATH_STRING;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_PATH_STRING 
    );
    
    

    
  /*  
    
  // edit links ===============================
  i++;
  id = "managementButtonForm" + i;
  managementButtons[i] = createFormDescription
  ( 
    id, 
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_LINKS_EDIT,
    PARAM_EDIT_DOCUMENT_TITLE, 
    "Редактировать связи документа.", 
    function() { return confirm( 'Сохранить отредактированные связи?' ) }, 
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос" 
  );
  managementButtons[i]['imageUrl'] = THEME_PATH + "icons/editlinks.gif";
  managementButtons[i]['displayIfTrue'] = "USER_RIGHTS_ADD";

    fieldId = PARAM_PREVIOUS_DOCUMENT_URL;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_URL 
    );
    
    fieldId = PARAM_DOCUMENT_PATH_STRING;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_PATH_STRING 
    );
    
  // optimize document ===============================
  i++;
  id = "managementButtonForm" + i;
  managementButtons[i] = createFormDescription
  ( 
    id, 
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_DOCUMENT_OPTIMIZE,
    PARAM_EDIT_DOCUMENT_TITLE, 
    "Оптимизировать текущую локализацию документа.", 
    function() { return confirm( 'Выполнить оптимизацию?' ) }, 
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос" 
  );
  managementButtons[i]['imageUrl'] = THEME_PATH + "icons/optimizedocument.gif";
  managementButtons[i]['displayIfTrue'] = "USER_RIGHTS_SETUP";

    fieldId = PARAM_PREVIOUS_DOCUMENT_URL;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_URL 
    );
    
    fieldId = PARAM_DOCUMENT_PATH_STRING;
    managementButtons[i].hiddenControlAdd
    ( 
      fieldId, 
      DOCUMENT_PATH_STRING 
    );
    
    
    
    */


  // setup database document ===============================
  DOCUMENT_MODULE_SETTINGSlength = 0;
  DOCUMENT_MODULE_SETTINGSfirst = 0;
  for ( var dmsl in DOCUMENT_MODULE_SETTINGS )
  {
    if ( DOCUMENT_MODULE_SETTINGSfirst == 0 )
    {
      DOCUMENT_MODULE_SETTINGSfirst = dmsl;
    }
    DOCUMENT_MODULE_SETTINGSlength++;
  }
  if ( DOCUMENT_MODULE_SETTINGSlength > 0 )
  {
  i++;
  id = "managementButtonForm" + i;
  managementButtons[i] = createFormDescription
  (
    id,
    DOCUMENT_MANAGEMENT_REQUEST_BASE + PARAM_FUNCTION_DOCUMENT_SET_DOCUMENT_MODULE_SETTINGS,
    DOCUMENT_MODULE_SETTINGSfirst,
    "Настроить документ.",
    function() { return confirm( 'Сохранить изменения?' ) },
    managementBoxFormResponseCallbackFunction,
    "Отправить запрос"
  );
  managementButtons[i]['imageUrl'] = THEME_PATH + "icons/setupdocument.gif";
  managementButtons[i]['displayIfTrue'] = "USER_RIGHTS_SETUP";

    fieldId = PARAM_PREVIOUS_DOCUMENT_URL;
    managementButtons[i].hiddenControlAdd
    (
      fieldId,
      DOCUMENT_URL
    );

    fieldId = PARAM_DOCUMENT_PATH_STRING;
    managementButtons[i].hiddenControlAdd
    (
      fieldId,
      DOCUMENT_PATH_STRING
    );
    
    for ( var fieldIdDms in DOCUMENT_MODULE_SETTINGS )
    {
      if ( DOCUMENT_MODULE_SETTINGS[fieldIdDms]['type'] == 'text' )
      {
        managementButtons[i].textControlAdd
        ( 
          fieldIdDms, 
          DOCUMENT_MODULE_SETTINGS[fieldIdDms]['default'],
          DOCUMENT_MODULE_SETTINGS[fieldIdDms]['title'],
          DOCUMENT_MODULE_SETTINGS[fieldIdDms]['limit']
        );
      }
      else if ( DOCUMENT_MODULE_SETTINGS[fieldIdDms]['type'] == 'textarea' )
      {
        managementButtons[i].textareaControlAdd
        ( 
          fieldIdDms, 
          DOCUMENT_MODULE_SETTINGS[fieldIdDms]['default'],
          DOCUMENT_MODULE_SETTINGS[fieldIdDms]['title'],
          DOCUMENT_MODULE_SETTINGS[fieldIdDms]['limit']
        );
      }
    }
  }

  // preinitialization is performed in the login box
  //updateManagementBoxButtons( "managementbox" );


  // dependency is loaded
  dependencyLoaded('management');

}

    
// form submit response callback function
function managementBoxFormResponseCallbackFunction( response )
{
  if ( isValidUrl( response ) || ( typeof(response) == "string" && response.length > 0 && response.charAt(0) == "/" ) )
  {
    if ( confirm( "Операция выполнена успешно. Перейти к документу?" ) )
    {
      if ( window.location.href != response )
        window.location.href = response;
      else
        window.location.reload( true );
    };
  }
  else if ( response == RESPONSE_REQUEST_PROCEEDED_SUCCESSFULLY )
    alert( "Операция выполнена успешно." );
  else
    alert( response );
}

// generates the document management buttons and fills the
// element with given id with them
function updateManagementBoxButtons( managementBoxId )
{
  managementBox = obtainElementById( managementBoxId );
  if ( !managementBox )
    return;
  
  // generating buttons
  var output = "";
  
  for ( var i = 0; i < managementButtons.length; i++ )
  {
    // skipping if there's not enough rights for this
    var allowed = false;
    eval( "allowed = " + managementButtons[i]['displayIfTrue'] );
    if ( !allowed )
      continue;
  
    // the hint form content
    // this value is stored in management buttons
    try
    {
      forms.add( managementButtons[i] );
      managementButtons[i]['html'] = forms[managementButtons[i]['id']].generateHtml();
    }
    catch (e)
    {
      alert( e.message );
    };

    // the button itself
    output += "<td>\n";
      
    output += "<div id='"+managementButtons[i]['id']+"' class='buttoninputicon' style='background-image:url(\""+managementButtons[i]['imageUrl']+"\");'>\n";
    output += "<input type='button' value=''\n";
    output += "  onmouseover='javascript: if ( siteHelperPanelOpened ) { placeElementWithContentOnTopFromMe( this, \"hintconstrain\", \"hintcontent\", managementButtons["+i+"][\"html\"], 0, 0, hintHidingDelay ); populateFormControls(\""+managementButtons[i]['id']+"\"); focusFormPreferredControl(\""+managementButtons[i]['id']+"\"); };'\n";
    output += "  onmouseout='javascript: startHidingLastElement(\"hintconstrain\");'"
    output += "  onclick='javascript: submitForm(\""+managementButtons[i]['id']+"\")'"
    output += " />";
    output += "</div>";
    
    output += "</td>\n";
  };
  
  // updating the management box content
  if ( output != "" )
    managementBox.innerHTML = "<table class='buttonspanel'>\n<tr>\n" + output + "</tr>\n</table>\n";
  else
    managementBox.innerHTML = "";
    
}

// INIT
addDependentCallback( function() {
  initManagementBox();
}, 'ajax,forms,constants,settings,helperFunctions');


