
$(() => {
	/* Система избранных уроков */
    const user_id = accountUserId;

    $('body').append(`<span id="fav_msg" style="display:none;"><i aria-hidden="true"></i><span class="fav_msg_text"></span></span>`);

    //Значек избранного в уроке
    if ($('.lesson-header-block').length > 0) {
        let lesson_id = new URLSearchParams(new URL(location.href).search).get('id');
        let lesson_title = $('.lesson-title-value').text().replaceAll('"','\'');
        let lesson_module = $('.breadcrumb li:last-child a').text();

        $.get(`/chtm/favorite~check?user_id=${user_id}&lesson_id=${lesson_id}`, function(data) {
            $('.lesson-header-block').append(`
    <a class="favIcon" onClick="add_toFavorite(${user_id}, ${lesson_id}, '${lesson_title}', '${lesson_module}');">
    ${loadIcon(data)}
    </a>
    `);

            if (data) {
                $('.lesson-header-block .favIcon').addClass('active');
            }
        });
    }

    //Значек избранного в списке уроков
    if ($('.lesson-list:not(.fast-edit)').length > 0) {
        load_listFavorite(user_id);
    }

    //Добавить пункт в боковую панель
	setTimeout(function() {
      $('.gc-account-user-menu').append(`
          <li class="menu-item menu-item-favorite">
              <a title="Избранное" class="with-label">
              		<img class="menu-item-icon" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='23' height='27' viewBox='0 0 23 27' fill='none'%3E%3Cpath d='M10.3218 20.8381L4.14876 25.5956C3.8562 25.8211 3.50848 25.9584 3.14448 25.9919C2.78047 26.0255 2.41459 25.9541 2.08777 25.7858C1.76096 25.6174 1.48611 25.3586 1.29398 25.0386C1.10186 24.7185 1.00005 24.3498 1 23.9735V5.05375C1 3.97874 1.41476 2.94774 2.15309 2.18751C2.89143 1.42729 3.89283 1.00014 4.93709 1H18.0629C19.1071 1.00014 20.1086 1.42729 20.8469 2.18751C21.5852 2.94774 22 3.97874 22 5.05375V23.973C22 24.3493 21.8981 24.718 21.706 25.0381C21.5138 25.3581 21.2391 25.6168 20.9122 25.7851C20.5854 25.9536 20.2195 26.025 19.8555 25.9914C19.4915 25.9578 19.1438 25.8206 18.8513 25.5951L12.6817 20.8381C12.3411 20.5756 11.9272 20.4338 11.5018 20.4338C11.0763 20.4338 10.6623 20.5756 10.3218 20.8381Z' fill='%23ECF0F1' fill-opacity='0.79' stroke='%23ECF0F1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E">
                  <span class="notify-count with-label" style="display: none;"></span>
                  <span class="menu-item-label">Избранное</span>
              </a>
          </li>
      `);
      
        $('.menu-item-favorite').on('click', function() {
            $('.gc-account-user-submenu-bar').addClass('gc-account-user-submenu-bar-favorite');
            $('.gc-account-user-submenu-bar, .gc-fade-wrapper').show();
            load_menuFavorite(user_id);
        });

        count_favorite(user_id);
    }, 500);
})

//Функция показа сообщения добавления/исключения из избранного
function showAndHideFavMsg() {
  const $favMsg = $('#fav_msg');
  
  if ($favMsg.length) {
    $favMsg.css({ opacity: 0, display: 'inline-block' })
           .animate({ opacity: 1 }, 1000);
    setTimeout(function() {
        $favMsg.animate({ opacity: 0 }, 1000, function() {
            $favMsg.css('display', 'none');
        });
    }, 3000);
  }
}

//Функция добавления/исключения урока из избранного
function add_toFavorite(user_id, lesson_id, lesson_title, lesson_module, load_type) {
	$.get(`/chtm/favorite~add?user_id=${user_id}&lesson_id=${lesson_id}&lesson_title=${lesson_title}&lesson_module=${lesson_module}`, function(data) {
			
			if (data != 'overlimit') {
				if (load_type != 'list') {
					$('.favIcon').html(loadIcon(data));
				} else {
					$('.lesson-list li[data-lesson-id="'+lesson_id+'"] .favIcon').html(loadIcon(data));
				}
				
				switch (data) {
					case true:
						$('#fav_msg').attr('class','plus');
						$('#fav_msg i').attr('class', 'fa fa-plus-circle');
						$('.fav_msg_text').text('Урок добавлен в избранное');
						$('.lesson-header-block .favIcon, .lesson-list li[data-lesson-id="'+lesson_id+'"] .favIcon').addClass('active');
						break;
					
					case false: 
						$('#fav_msg').attr('class','minus');
						$('#fav_msg i').attr('class', 'fa fa-minus-circle');
						
						$('.fav_msg_text').text('Урок убран из избранного');
						$('.lesson-header-block .favIcon, .lesson-list li[data-lesson-id="'+lesson_id+'"] .favIcon').removeClass('active');
						break;
					default:
						// code
				}

				count_favorite(user_id);
			
				
			} else {
				$('#fav_msg').attr('class','overlimit');
				$('#fav_msg i').attr('class', 'fa fa-stop-circle');
				
				$('.fav_msg_text').text('Превышен лимит записей в избранном');
			}
			
			showAndHideFavMsg();
			
	});
}

//Функция загрузки содержимого подменю в боковой панели
function load_menuFavorite(user_id) {
	
	$.get(`/chtm/favorite~load?user_id=${user_id}`, function(data) {
		let all_fav = '';
		if (data.length > 0) {
			data.forEach((item) => {
				
				all_fav += `
					<li class="menu-item-${item['lesson_id']}">
	  				<a class="subitem-link" target="_self" href="/pl/teach/control/lesson/view?id=${item['lesson_id']}">
	  						<span class="favTitle">${item['lesson_title']}</span>
	  						<span class="favModule">${item['lesson_module']}</span>
	  					</a>
	  			</li>
				`;
			});
		} else {
			all_fav = '<li class="fav_empty">У вас нет избранных уроков</li>';
		}

		$('.gc-account-user-submenu-bar').html(`
  		<div><h3>Избранное</h3></div>
  
  		<ul class="gc-account-user-submenu">
  			${all_fav}
  		</ul>
  	`);
	});
}

//Функция добавления значка избранного в список уроков
function load_listFavorite(user_id) {
	$.get(`/chtm/favorite~load?user_id=${user_id}`, function(data) {
		allFavorite = data;
		
		$('.lesson-list li').each((i, lesson) => {
			let findFav = false;
			let curLessonID = $(lesson).attr('data-lesson-id');
            
            if ($(lesson).hasClass('lesson-is-hidden')) return;
			
			allFavorite.forEach(item => {
				let favLessonID = item['lesson_id'];
				
				if (curLessonID == favLessonID) {
					findFav = true;
				}
			});
			
            let lsTitle = $(lesson).find('.title').html().split('<')[0].replaceAll('"','\\\'').replace(/[\n\t]+/g, '');
            
            
			$(lesson).find('a').append(`
				<a class="favIcon" onClick="add_toFavorite(${user_id}, ${$(lesson).attr('data-lesson-id')}, '${lsTitle}', '${$('h1').text()}','list');">
					${loadIcon(findFav)}
				</a>
			`);
			
			if (findFav) {
				$(lesson).find('.favIcon').addClass('active');
			}
			
			$(lesson).find('a.favIcon').on('click', function() {
				event.preventDefault()
			});
		});
	});
}

//Функция подсчета избранных уроков
function count_favorite(user_id) {
		$.get(`/chtm/favorite~load?user_id=${user_id}`, function(data) {
			allFavorite = data;
			if (allFavorite.length > 0)
				$('.menu-item-favorite .notify-count').text(allFavorite.length).show();
			else
				$('.menu-item-favorite .notify-count').hide();
		})
}

//Фунция стилизации иконки избранного
function loadIcon(val) {
	let strokeColor = '#4C4C4C';
	let fillColor = '#4C4C4C';
	
	if (val) {
		fillColor = '#DD141F';
		strokeColor = '#DD141F';
	} else {
		fillColor = 'none';
		strokeColor = '#000000';
	}
	
	return `
		<svg xmlns="http://www.w3.org/2000/svg" width="20" height="22" viewBox="0 0 20 22" fill="none">
		  <path d="M8.67749 16.8705L3.59333 20.6765C3.35238 20.8569 3.066 20.9667 2.7662 20.9935C2.4664 21.0204 2.16506 20.9633 1.89589 20.8286C1.62673 20.6939 1.40036 20.4869 1.24212 20.2309C1.08389 19.9748 1.00004 19.6798 1 19.3788V4.243C1 3.38299 1.3416 2.55819 1.94969 1.95001C2.55779 1.34183 3.38255 1.00011 4.24261 1H15.0531C15.9131 1.00011 16.7379 1.34183 17.346 1.95001C17.9541 2.55819 18.2957 3.38299 18.2957 4.243V19.3784C18.2957 19.6794 18.2118 19.9744 18.0536 20.2305C17.8953 20.4865 17.669 20.6934 17.3998 20.8281C17.1306 20.9629 16.8293 21.02 16.5295 20.9931C16.2297 20.9662 15.9433 20.8565 15.7024 20.6761L10.6211 16.8705C10.3406 16.6605 9.9997 16.547 9.64931 16.547C9.29892 16.547 8.95795 16.6605 8.67749 16.8705Z" fill="${fillColor}" stroke="${strokeColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
		</svg>
	`;
}