$(() => {
  /* Система избранных уроков */
    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 width='26' height='26' viewBox='0 0 26 26' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.9675 25C13.6288 25 14.0025 24.3651 15.0676 23.122C16.3991 21.5682 17.6829 20.1203 18.6149 19.0326C21.3672 15.8213 22.4493 14.6027 23.2172 13.652C25.258 11.1254 25.5228 7.61475 24.1388 4.9497C22.3937 1.58991 19.7915 1 18.3923 1C16.993 1 15.9923 1.58991 14.225 3.10844L12.9997 4.37008L11.8078 3.10844C9.89062 1.30586 8.50251 1 7.61116 1C6.86828 1 3.76517 1.00052 1.76549 4.9497C0.30641 7.83124 1.06888 11.3808 2.92777 13.652C3.26061 14.0586 4.63238 15.6398 7.01285 18.4864C7.97128 19.6326 9.32742 21.2088 10.3258 22.4058C10.8914 23.0841 12.3061 25 12.9675 25Z' fill='white' stroke='white' stroke-width='2' /%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);

	if ($('.favorite_links').length > 0) {
        load_blockFavorite(accountUserId);
    }
    
})

//Функция показа сообщения добавления/исключения из избранного
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 removeFromFavorite(user_id, lesson_id) {
    $.get(`/chtm/favorite~remove?user_id=${user_id}&lesson_id=${lesson_id}`, function(data) {
			
			if (data != 'overlimit') {
				count_favorite(user_id);
                $(`.menu-item-${lesson_id}`).remove();
			}
			
			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']}">
                	<span class="remove-link" data-lesson-id="${item['lesson_id']}" onClick="removeFromFavorite(${user_id}, ${item['lesson_id']})">X</span>
	  				<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 = '#535353';
		strokeColor = '#535353';
	} else {
		fillColor = 'none';
		strokeColor = '#535353';
	}
	
	return `
		<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path fill-rule="evenodd" clip-rule="evenodd" d="M10.4745 20C10.998 20 11.2938 19.4974 12.1371 18.5132C13.1911 17.2832 14.2075 16.1369 14.9454 15.2758C17.1242 12.7335 17.9809 11.7688 18.5888 11.0161C20.2045 9.01591 20.4141 6.23668 19.3184 4.12685C17.9369 1.46701 15.8768 1 14.7691 1C13.6613 1 12.8691 1.46701 11.47 2.66918L10.5 3.66798L9.55635 2.66918C8.0386 1.24214 6.93967 1 6.23402 1C5.64591 1 3.18928 1.00041 1.6062 4.12685C0.451099 6.40806 1.05472 9.21816 2.52634 11.0161C2.78984 11.3381 3.87582 12.5898 5.76036 14.8434C6.51912 15.7508 7.59273 16.9987 8.38311 17.9463C8.8309 18.4832 9.95086 20 10.4745 20Z" fill="${fillColor}" stroke="${strokeColor}" stroke-width="1.5" />
</svg>
	`;
}

//Функция загрузки содержимого в блок
function load_blockFavorite(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>
	  					</a>
	  			</li>
				`;
			});
		}

		$('.favorite_links').html(`
  		<ul class="">
  			${all_fav}
  		</ul>
  	`);
	});
}