let vh = window.innerHeight * 0.01;
document.documentElement.style.setProperty('--vh', `${vh}px`);

function check_webp_feature(feature, callback) {
    var kTestImages = {
        lossy: "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",
        lossless: "UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==",
        alpha: "UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==",
        animation: "UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"
    };
    var img = new Image();
    img.onload = function () {
        var result = (img.width > 0) && (img.height > 0);
        callback(feature, result);
    };
    img.onerror = function () {
        callback(feature, false);
    };
    img.src = "data:image/webp;base64," + kTestImages[feature];
}

function getScreen(webp = true){
let reload = false;
let root = document.getElementsByTagName('html');
let s = window.location.search;
let url;
    if ((root[0].clientWidth>=1024)&&(root[0].className.indexOf('touch', 0)>-1)) {
        if(s===''){
            url = window.location.href +'?screen=wide';
        } else {
            url = window.location.href.replace(s,s+'&screen=wide');
        }
        reload = true;
    }
    
    if ((root[0].clientWidth<1024)&&(root[0].className.indexOf('noTouch', 0)>-1)) {
        if(s===''){
            url = window.location.href +'?screen=mobile';
        } else {
            url = window.location.href.replace(s,s+'&screen=mobile');
        }
        reload=true;
    }
    
    if(webp&&(root[0].className.indexOf('noWebp', 0)>-1)){
        if(s===''){
            url = window.location.href +'?webp=yes';
        } else {
            url = window.location.href.replace(s,s+'&webp=yes');
        }
        reload=true;        
    }
    
    if(!webp&&(root[0].className.indexOf('noWebp', 0)==-1)){
        if(s===''){
            url = window.location.href +'?webp=no';
        } else {
            url = window.location.href.replace(s,s+'&webp=no');
        }
        reload=true;        
    }
    
    if(reload) {
        window.location.href = url;
    }
}

function insertCSS(sname){
    if (document.createStyleSheet){
        document.createStyleSheet(sname);
    } else {
        $("head").append($('<link rel="stylesheet" href="'+sname+'" type="text/css" media="screen">'));
    }
}

function insertScript(sname, path,callback){
	path = path || false;
	var d = document,
		w = window,
		n = d.getElementsByTagName("script")[0],
		s = d.createElement("script"),
		f = function () { n.parentNode.insertBefore(s, n); };
	s.type = "text/javascript";
	s.async = true;
	s.onload = callback;
	if(path){s.src = (d.location.protocol == "https:" ? "https:" : "http:") + sname;}
	else {s.src=sname;}
	if (w.opera == "[object Opera]") {
    d.addEventListener("DOMContentLoaded", f, false);
    } else { f(); }
}

var rem = function rem() {
     let html = document.getElementsByTagName('html')[0];

     return function () {
         return parseInt(window.getComputedStyle(html)['fontSize']);
     }
 }();

// This function will convert pixel to rem
function toRem(length) {
    return (parseInt(length) / rem());
}

check_webp_feature('lossy',function (feature, isSupported) {
        getScreen(isSupported);
    }
);

function loadPicker(){
    if($('#calendar').length>0){
        $.datepicker.regional.ru = {
        	closeText: 'Закрыть',
        	prevText: 'Предыдущий',
        	nextText: 'Следующий',
        	currentText: 'Сегодня',
        	monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
        	monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'],
        	dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
        	dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
        	dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
        	weekHeader: 'Не',
        	dateFormat: 'dd.mm.yy',
        	firstDay: 1,
        	isRTL: false,
        	showMonthAfterYear: false,
        	yearSuffix: ''
        };
        $.datepicker.setDefaults($.datepicker.regional.ru);
        
        $(function(){
        	$("#datepicker").datepicker({
        	    onChangeMonthYear: function(year,month){
        	        $.ajax({
        	            url: window.location.href,
        	            data:'year='+year+'&month='+month,
        	            success:(res)=>{
        	               let div = $('<div/>');
                            div.html(res);
                            $('#programList').replaceWith(div.find('#programList'));
        	            }
        	        });
                    //console.log(year,month);
                },
        		onSelect: function(date){
        			$('#datepicker_value').val(date);
        		}
        	});
        	$("#datepicker").datepicker("setDate", $('#datepicker_value').val());
        });
    }    
}

$(document).ready(function(){

$('html').removeClass('noJS');
$('a[rel~="external"], a.jpg, a.pdf, a.docx').attr('target','_blank');

$(window).resize(()=>{check_webp_feature('lossy',function (feature, isSupported) {
        getScreen(isSupported);
    }
);});

loadPicker();

$(window).on('scroll',function(){
    var top = $('html, body').scrollTop()||$(window).scrollTop();
    var method = top>10?'addClass':'removeClass';
    $('#mainHeader')[method]('scroll');
    if($('.noTouch #catalog').length>0){
        if(top>$('#catalog').position().top){
            var margin = $('#mainHeader').height() + top - $('#catalog').position().top+30;
            if((margin+$('#catalog #leftMenu').height())<=$('#catalog .right, #catalog .data').height()){
                $('#catalog #leftMenu').css('margin-top',margin);
            } else {
                $('#catalog #leftMenu').css('margin-top','auto');
            }
        } else {
            $('#catalog #leftMenu').css('margin-top','0');
        }
    }
});

$(document).on('click','.detailed',function(){
    $(this).removeClass('closed');
});

$(document).on('click','.undetailed',function(){
    $(this).siblings('.detailed').addClass('closed');
});

$(document).on('click','.menuOpen',function(){
    $(this).toggleClass('active');
});

$(document).on('click','.subscribe span',function(){
    $(this).parent().addClass('active');
});

$(document).on('click','.subscribe',function(e){
    e.stopPropagation();
});

$(document).on('click',function(e){
    $('.subscribe').removeClass('active');
});

$(document).on('click','.programMenu a',function(e){
    e.preventDefault();
    e.stopPropagation();
    $('body').append('<div id="waiter"></div>');
    $(this).siblings().removeClass('active');
    $(this).addClass('active');
    $.ajax({
        url:$(this).attr('href'),
        method:'post',
        success:(res)=>{
            history.pushState({}, '', $(this).attr('href'));
            let div = $('<div/>');
            div.html(res);
            $('main').replaceWith(div.find('main'));
            
            
            $('title').html(div.find('title').html());
            loadPicker();
            $('#waiter').remove();
        }
    });
});

$(document).on('click','.nextPage .btn-more',function(e){
    e.preventDefault();
    e.stopPropagation();
    $('body').append('<div id="waiter"></div>');
    $.ajax({
        url:$(this).attr('href'),
        method:'post',
        success:(res)=>{
            let div = $('<div/>');
            div.html(res);
            $('.nextPage').replaceWith(div.find('.nextPage'));
            $('#pdopage .rows').append(div.find('#pdopage .rows').html());
            $('#waiter').remove();
        }
    });
});

$(document).on('click','.filters a',function(e){
    e.preventDefault();
    e.stopPropagation();
    $('body').append('<div id="waiter"></div>');
    let sl = $('main .filters').scrollLeft();
    $.ajax({
        url:$(this).attr('href'),
        method:'post',
        success:(res)=>{
            history.pushState({}, '', $(this).attr('href'));
            let div = $('<div/>');
            div.html(res);
            $('#pdopage').html(div.find('#pdopage').html());
            $('main .filters').html(div.find('main .filters').html());
            $('main .filters').scrollLeft(sl);
            $('#waiter').remove();
        }
    });
});


$(document).on('click','a',function(e){
    if(!$(this) || !$(this).attr('href')){return true;}
    var hash = $(this).attr('href').split("#")[1];
    if(hash!='' && ($("#"+hash).length>0)){
        $([document.documentElement, document.body]).animate({
            scrollTop: $("#"+hash).offset().top-3*rem()
        }, 500);
        e.preventDefault();
    }
});



$(document).on('click','#mainSlider .lister .point',function(){
    $(this).siblings('.point').removeClass('active');
    $(this).addClass('active');
});
/*
$(document).on('click','.count .down',function(){
    let i = $(this).siblings('input').val();
    if(!i || i<=1){
        i = 0;
        $(this).closest('.count').removeClass('filled');
    } else {
        i--;
    }
    $(this).siblings('input').val(i);
    if($('#mainForm .filled').length>=6){
        $('#mainForm button').attr('disabled',null);
    } else {
        $('#mainForm button').attr('disabled','disabled');
    }
});

$(document).on('click','.count .up',function(){
    let i = $(this).siblings('input').val();
    if(!i){
        i = 1;
        $(this).closest('.count').addClass('filled');
    } else {
        i++;
        $(this).closest('.count').addClass('filled');
    }
    $(this).siblings('input').val(i);
    if($('#mainForm .filled').length>=6){
        $('#mainForm button').attr('disabled',null);
    } else {
        $('#mainForm button').attr('disabled','disabled');
    }
});

$(document).on('change','select[name="program"]',function(){
    let i = $(this).val();
    if(!i || i === 0){return false;}
    $.ajax({
        url: $(this).closest('form').attr('action'),
        data:'action=getForms&parent='+i,
        success:(res)=>{
            $('select[name="form"]').html('<option value="0">Форма обучения</option>');
            res.res.forEach((e,i)=>{
                $('select[name="form"]').append('<option value="'+e.id+'">'+e.pagetitle+'</option>');
            });
        }
    });
});
*/

$(document).on('click','.formWrapper form',function(e){
    e.stopPropagation();
});

$(document).on('click','.formWrapper',function(){
    $(this).addClass('hided');
});

$(document).on('click','a[href="#mainForm"]',function(){
    window.app.setData($(this).data('program'), $(this).data('form'), $(this).data('id'));
    if($('#wrapper1').length>0){
        $('#wrapper1.hided').removeClass('hided');
    }
});

$(document).on('click','a[href="#subscribeForm"]',function(){
    if($('#wrapper2').length>0){
        $('#wrapper2.hided').removeClass('hided');
    }
});
/*
$(document).on('change input','input[name="name"],input[type="tel"],input[type="email"], select',function(){
    if(!$(this).val() || $(this).val()==0){
        $(this).removeClass('filled');
    } else {
        $(this).addClass('filled');
    }
    
    if($('#mainForm .filled').length>=6){
        $('#mainForm button').attr('disabled',null);
    } else {
        $('#mainForm button').attr('disabled','disabled');
    }
});

$(document).on('change','#mainForm [type="radio"]',function(){
    if($('#mainForm [type="radio"]:checked').val()=='Юридическое лицо'){
        $('#mainForm [name="name"]').attr('placeholder','Полное наименование организации');
    } else {
        $('#mainForm [name="name"]').attr('placeholder','ФИО');
    }
});

$(document).on('change','.count input',function(){
    if(!$(this).val() || $(this).val()==0){
        $(this).closest('.count').removeClass('filled');
    } else {
        $(this).closest('.count').addClass('filled');
    }
    
    if($('#mainForm .filled').length>=6){
        $('#mainForm button').attr('disabled',null);
    } else {
        $('#mainForm button').attr('disabled','disabled');
    }
});
*/
function ajaxWrapper(obj, res){
    switch(res.type){
        case 'text': alert(res.message);
            break;
        case 'popup':
            $('#popUpWrapper').remove();
            $('body').append('<div id="popUpWrapper" class="'+obj.data('pwc')+'"></div>');
            $('#popUpWrapper').html(res.content);
            break;
        case 'replace':
            $(obj.data('replace')).replaceWith(res.content);
            break;
        case 'add':
            if(obj.parent().hasClass('viewable')){
                obj.parent().addClass('view');
            }
            obj.parent().append(res.content);
        break;
        case 'values':
            for (let key in res.values){
                if(res.values[key].data){
                    $(res.values[key].selector).data(res.values[key].data.key,res.values[key].data.value);
                }
                if(res.values[key].value){
                    $(res.values[key].selector).html(res.values[key].value);
                }
                if(res.values[key].class){
                    $(res.values[key].selector).addClass(res.values[key].class);
                }
                if(res.values[key].remClass){
                    $(res.values[key].selector).removeClass(res.values[key].remClass);
                }
            }
            if(res.popup){
                $('#popUpWrapper').remove();
                $('body').append('<div id="popUpWrapper" class="'+res.popupClass+'"></div>');
                $('#popUpWrapper').html(res.popup);
            }
            break;
        case 'reload':
            window.location.reload();
        break;
        case 'load':
            window.location.href = res.url;
        break;
    }    
}

$(document).on('click','.ajax',function(e){
    e.preventDefault();
    e.stopPropagation();
    let data=[];
    if($(this).data('value')){
        data.push('value='+$(this).data('value'));
    }
    $.ajax({
        url:$(this).attr('href'),
        type:'post',
        data:data.join('&'),
        success:(res)=>{ajaxWrapper($(this),res)}
    });
});

$(document).on('submit','.ajaxForm',function(e){
    e.preventDefault();
    e.stopPropagation();
    $('body').append('<div id="waiter"></div>');
    $.ajax({
        url:$(this).attr('action'),
        data:$(this).serialize(),
        type:'post',
        success:(res)=>{ajaxWrapper($(this),res);$('#waiter').remove();}
    });
});

$('.cookie .close').on('click',function(){
    $('.cookie').remove();
    var expires = new Date();
    expires.setTime(expires.getTime() + (30 * 24 * 60 * 60 * 1000));
    document.cookie = 'unshowBanner=1;Version=1;SameSite=Lax;path=/' + ';expires=' + expires.toUTCString();
});

$(document).on('click','#popUpWrapper, #popUpWrapper .close',(e) => {$('#popUpWrapper').remove();$('#addToCart button').html('Добавить в корзину')});
$(document).on('click','#popUpWrapper > *',(e) => {e.stopPropagation()});

$(window).on('load',function(){
    setInterval(function(){
        let i = $('#mainSlider .lister .point.active').index('#mainSlider .lister .point');
        i++;
        if(i>=$('#mainSlider .lister .point').length){
            i=0;
        }
        let obj = $('#mainSlider .lister .point').eq(i);
        obj.siblings('#mainSlider .lister .point').removeClass('active');
        obj.addClass('active');
    },10000);
});

$(document).on('click','.regions .show',(e) => {
    $('.regions .show.main').toggleClass('active');
});

});

