// Инициализация глобальной переменной в объекте window
window.globalTransferResult2 = null;
function waitForElementContent(selector, timeout = 10000) {
  return new Promise((resolve, reject) => {
    const checkContent = () => {
      const elements = document.querySelectorAll(selector);
      if (elements.length > 0 && elements[0].children && elements[0].children.length > 0) {
        return resolve(elements);
      }
    };
    if (checkContent()) return;
    const observer = new MutationObserver(() => {
      if (checkContent()) {
        observer.disconnect();
      }
    });
    observer.observe(document.body, {
      childList: true,
      subtree: true
    });
    setTimeout(() => {
      observer.disconnect();
      reject(new Error(`Контент в элементе ${selector} не появился в течение ${timeout}ms`));
    }, timeout);
  });
}
function findAndClickTransferButton() {
  const transferDiv = document.querySelector('div[class^="Calendar-plan-buttons--transfer__"]');
  if (transferDiv) {
    console.log('Найден div для переноса:', transferDiv);
    const button = transferDiv.querySelector('button');
    if (button) {
      console.log('Найдена кнопка для переноса:', button);
      button.click();
      console.log('Выполнен клик по кнопке переноса');
      return true;
    } else {
      console.log('Кнопка для переноса не найдена');
    }
  } else {
    console.log('Div для переноса не найден');
  }
  return false;
}
function findTargetDateCell(tbody, targetDate) {
  console.log('Ищем ячейку с датой:', targetDate);
  const cells = tbody.querySelectorAll('td[class^="Calendar-cell__"]');
  console.log('Найдено ячеек:', cells.length);
  for (const cell of cells) {
    console.log('Проверяем ячейку:', cell.outerHTML);
    
    const dateContainer = cell.querySelector('div[class^="Calendar-cell__date-container__"]');
    if (dateContainer) {
      const dateSpan = dateContainer.querySelector('span[class*="Text--body-m-bold__"]');
      if (dateSpan) {
        const cellText = dateSpan.textContent.trim();
        console.log('Текст даты в ячейке:', cellText);
        
        const datePart = cellText.split(',')[0].trim();
        console.log('Извлеченная часть даты:', datePart);
        if (datePart === targetDate) {
          console.log('Найдена подходящая ячейка:', cell.outerHTML);
          return cell;
        }
      }
    }
  }
  console.log('Ячейка с целевой датой не найдена');
  return null;
}
async function findClickAndWait(targetDate, palletCount) {
  console.log('Начало выполнения findClickAndWait с датой:', targetDate, 'и количеством паллет:', palletCount);
  const elements = document.querySelectorAll('div[class^="Supply-detail-options__buttons__"]');
  if (!elements || elements.length === 0) {
    console.log('Элементы не найдены');
    return false;
  }
  console.log('Найдены элементы:', elements);
 
  for (const element of elements) {
    console.log('Текущий элемент:', element.outerHTML);
    const buttons = element.querySelectorAll('button');
    if (!buttons || buttons.length !== 2) {
      console.log(`Найдено ${buttons ? buttons.length : 0} кнопок вместо 2, пропускаем этот элемент`);
      continue;
    }
    
    const safeButtons = Array.from(buttons).filter(button => !button.classList.contains('danger'));
    if (safeButtons.length > 0) {
      const safeButton = safeButtons[0];
      console.log('Найдена подходящая кнопка:', safeButton.outerHTML);
      
      safeButton.click();
      console.log('Выполнен клик по кнопке');
      
      try {
        const tbodyElements = await waitForElementContent('tbody[class^="Calendar-plan-table-view__calendar-tbody"]');
        console.log('Контент в блоке tbody появился:', tbodyElements);
        
        if (tbodyElements && tbodyElements.length > 0) {
          console.log('Блок найден в документе:', tbodyElements[0].outerHTML);
          const amountPalletInputs = document.querySelectorAll('#amountPallet');
          console.log(amountPalletInputs);
          
          if (amountPalletInputs.length > 0) {
            amountPalletInputs.forEach(input => {
              if (!input) {
                console.log('Элемент input является undefined');
                return;
              }
          
              const reactKey = Object.keys(input).find(key => key.startsWith('__reactProps$'));
              
              if (reactKey) {
                const reactProps = input[reactKey];
                console.log('React props:', reactProps);
                
                // Симулируем изменение значения через React
                if (reactProps.onChange && typeof reactProps.onChange === 'function') {
                  console.log('Вызываем onChange');
                  try {
                    const syntheticEvent = {
                      target: input,
                      currentTarget: input,
                      preventDefault: () => {},
                      stopPropagation: () => {},
                      persist: () => {}
                    };
                    input.value = palletCount.toString(); // Устанавливаем значение перед вызовом onChange
                    reactProps.onChange(syntheticEvent);
                  } catch (error) {
                    console.error('Ошибка при вызове onChange:', error);
                  }
                } else {
                  // Если onChange не найден, просто устанавливаем значение
                  input.value = palletCount.toString();
                }
                
                // Вызываем onMouseEnter, если он существует
                if (reactProps.onMouseEnter && typeof reactProps.onMouseEnter === 'function') {
                  console.log('Вызываем onMouseEnter');
                  try {
                    reactProps.onMouseEnter();
                  } catch (error) {
                    console.error('Ошибка при вызове onMouseEnter:', error);
                  }
                }
              } else {
                console.log('React props не найдены для этого элемента');
                // Если React props не найдены, устанавливаем значение напрямую
                input.value = palletCount.toString();
              }
              
              // Генерируем события для DOM
              try {
                // Вызываем событие input для DOM
                const inputEvent = new Event('input', { bubbles: true });
                input.dispatchEvent(inputEvent);
                
                // Вызываем событие change для DOM
                const changeEvent = new Event('change', { bubbles: true });
                input.dispatchEvent(changeEvent);
                
                console.log(`Установлено значение ${palletCount} для инпута amountPallet и вызваны события`);
              } catch (error) {
                console.error('Ошибка при вызове событий:', error);
              }
            });
          } else {
            console.log('Инпуты с id amountPallet не найдены');
          }
          //Остальная логика
          const targetCell = findTargetDateCell(tbodyElements[0], targetDate);
          if (targetCell) {
            console.log('Найдена ячейка с целевой датой:', targetCell.outerHTML);
            
            const reactKey = Object.keys(targetCell).find(key => key.startsWith('__reactProps$'));
            if (reactKey) {
              const reactProps = targetCell[reactKey];
              console.log('React props:', reactProps);
              
              if (reactProps.onMouseEnter && typeof reactProps.onMouseEnter === 'function') {
                console.log('Вызываем onMouseEnter');
                reactProps.onMouseEnter();
                
                await new Promise(resolve => setTimeout(resolve, 500));
                
                const button = targetCell.querySelector('button');
                if (button) {
                  console.log('Найдена кнопка в ячейке:', button.outerHTML);
                  button.click();
                  console.log('Выполнен клик по кнопке в ячейке');
                  
                  // Ждем появления кнопки переноса
                  await new Promise(resolve => setTimeout(resolve, 1000));
                  
                  // Вызываем функцию для поиска и клика по кнопке переноса
                  if (findAndClickTransferButton()) {
                    console.log('Клик по кнопке переноса выполнен успешно');
                    
                    try {
                      // Ждем появления контента в блоке с уведомлениями
                      const notificationElements = await waitForElementContent('div[class^="Notifications-modals-container"]', 15000);
                      if (notificationElements.length > 0) {
                        const notificationText = notificationElements[0].textContent.trim();
                        console.log('Получено уведомление:', notificationText);
                        return notificationText;
                      } else {
                        console.log('Блок с уведомлениями не найден');
                        return false;
                      }
                    } catch (error) {
                      console.error('Ошибка при ожидании уведомления:', error.message);
                      return false;
                    }
                  } else {
                    console.log('Не удалось выполнить клик по кнопке переноса');
                    return false;
                  }
                } else {
                  console.log('Кнопка в ячейке не найдена');
                  return false;
                }
              } else {
                console.log('onMouseEnter не найден или не является функцией');
                return false;
              }
            } else {
              console.log('React props не найдены');
              return false;
            }
          } else {
            console.log('Ячейка с целевой датой не найдена');
            return false;
          }
          
        } else {
          console.log('Блок tbody не найден в документе');
          return false;
        }
      } catch (error) {
        console.error('Произошла ошибка:', error.message);
        return false;
      }
    } else {
      console.log('Не найдена кнопка без класса danger, пропускаем этот элемент');
    }
  }
  console.log('Подходящая кнопка не найдена во всех проверенных элементах');
  return false;
}
async function executeTransfer(date, palletCount) {
  const result = await findClickAndWait(date, palletCount);
  window.globalTransferResult2 = result;  // Сохраняем результат в глобальную переменную window
  console.log('Результат выполнения:', result);
  return result;
}
// Обновленная функция для запуска процесса переноса
function startTransfer(date, palletCount) {
  executeTransfer(date, palletCount).then(() => {
    console.log('Перенос завершен. Глобальный результат:', window.globalTransferResult2);
    // Здесь можно добавить дополнительную логику или вызовы функций,
    // которые должны выполниться после завершения переноса
  }).catch(error => {
    console.error('Произошла ошибка при выполнении переноса:', error);
    window.globalTransferResult2 = false;
  });
}
// Использование:
//ПОДСТАВИТЬ ПЕРЕМЕННЫЕ
startTransfer('{-Variable.dateText-}');