var baseComponents = {};

var percentTime;
var tick;
var time = 1;
var progressBarIndex = 0;

function startProgressbar() {
    resetProgressbar();
    percentTime = 0;
    tick = setInterval(interval, 10);
}

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}
function Encrypt(str) {
    if (!str) str = "";
    str = (str == "undefined" || str == "null") ? "" : str;
    try {
        var key = 146;
        var pos = 0;
        ostr = '';
        while (pos < str.length) {
            ostr = ostr + String.fromCharCode(str.charCodeAt(pos) ^ key);
            pos += 1;
        }

        return ostr;
    } catch (ex) {
        return '';
    }
}

function Decrypt(str) {
    if (!str) str = "";
    str = (str == "undefined" || str == "null") ? "" : str;
    try {
        var key = 146;
        var pos = 0;
        ostr = '';
        while (pos < str.length) {
            ostr = ostr + String.fromCharCode(key ^ str.charCodeAt(pos));
            pos += 1;
        }

        return ostr;
    } catch (ex) {
        return '';
    }
}

function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? ";path=" + path : "") +
            ((domain) ? ";domain=" + domain : "") +
            ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
    }
}

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function onloadCaptchaCallback() {
    window.setTimeout(function() {
        if (!commonComponentMethods.FtmIsEnabled('somfy-feature')) {
            //apply the google captcha
            if (typeof window.login_captcha != 'undefined') {
                grecaptcha.reset(window.login_captcha);
            } else {
                window.login_captcha = grecaptcha.render('google_recaptcha_login', { 'sitekey': $("#forgot_password").data('google_captcha_key') });
            }
        }

    }, 1000);
}

function interval() {
    if (($('.slider .slick-track div[data-slick-index="' + progressBarIndex + '"]').attr("aria-hidden")) === "true") {
        progressBarIndex = $('.slider .slick-track div[aria-hidden="false"]').data("slickIndex");
        startProgressbar();
    } else {
        percentTime += 1 / (time + 5);
        $('.inProgress' + progressBarIndex).css({
            width: percentTime + "%"
        });
        if (percentTime >= 100) {
            $('.single-item').slick('slickNext');
            progressBarIndex++;
            if (progressBarIndex > 2) {
                progressBarIndex = 0;
            }
            startProgressbar();
        }
    }
}

function resetProgressbar() {
    $('.inProgress').css({
        width: 0 + '%'
    });
    clearInterval(tick);
}

function setRedirectAndLoadLogin(redirect_url) {
    var url = (typeof redirect_url == 'string') ? redirect_url : window.location.href;
    $.post(getBaseUrl() + 'Base/setAfterLoginRedirect', {
        'redirect_url': url
    }, function(data) {
        window.location.href = '/login';
    });
}

function checkPassword(str) {
    if (str != '') {
        // at least one number, one lowercase and one uppercase letter
        // at least six characters that are letters, numbers or the underscore
        var re = new RegExp("^(?=(.*[\\d]){" + passwordSettings.password_total_digit + "})(?=(.*[A-Z]){" + passwordSettings.password_upper_charater + "})(?=(.*[!@#$%^&_*]){" + passwordSettings.password_total_symbol + "})[\\w!@#$%^&_*]{" + passwordSettings.password_length + ",}");
        console.log(re);
        return re.test(str);
    }
}
//function added to check the password validation dynamically by rohit parchani on 19-03-2024
function checkPasswordValidation(password,passwordSettingsCheck){
    if(password != ''){
        var minimum_digit_required1 = passwordSettingsCheck.minimum_digit_required > 1 ? passwordSettingsCheck.minimum_digit_required : 1;
        var minimum_char_required1 = passwordSettingsCheck.minimum_char_required > 1 ? passwordSettingsCheck.minimum_char_required : 1;
        var minimum_symbol_required1 = passwordSettingsCheck.minimum_symbol_required > 1 ? passwordSettingsCheck.minimum_symbol_required : 1;
        var minimum_password_length1 = passwordSettingsCheck.minimum_password_length > 1 ? passwordSettingsCheck.minimum_password_length : 8;

        var val = new RegExp("^(?=(.*[\\d]){" + minimum_digit_required1 + "})(?=(.*[A-Z]){" + minimum_char_required1 + "})(?=(.*[!@#$%^&_*]){" + minimum_symbol_required1 + "})[\\w!@#$%^&_*]{" + minimum_password_length1 + ",}");
        console.log(val);
        return val.test(password);
    }
}

function resetTab() {
    appData.filterVars = {};
    appData.filterVars.search_text = '';
    appData.filterVars.page = 1;
    appData.filterVars.limit = 10;
}

baseComponents.resetPassword = {
    name: 'resetPassword',
    template: '#resetPasswordTemplate',
    data: function data() {
        var message = getSearchParams('message');
        if (message) {
            notify('info', decodeURI(message));
        }
        return {
            appData: appData,
            loaded: false,
            password: '',
            confirm_password: '',
            passwordClass: '',
            password_total_digit: '',
            password_upper_charater: '',
            password_total_symbol: '',
            password_length: '',
            registration_type: 'person',
            token: '',
            message: '',
            passwordSettingData:{}
        };
    },
    mounted: function mounted() {
        this.onLoad();

        var _this = this;
        
        $.get(getBaseUrl() + 'Base/search&model=Settings&method=getSecuritySettings', function (data) {
            _this.passwordSettingData = data;

            console.log('passwordData',data);
            console.log("passwordSettingData",_this.passwordSettingData);
            _this.password_length = _this.passwordSettingData.minimum_password_length ? _this.passwordSettingData.minimum_password_length : 8;
            _this.password_upper_charater = _this.passwordSettingData.minimum_char_required ? _this.passwordSettingData.minimum_char_required : 1;
            _this.password_total_digit = _this.passwordSettingData.minimum_digit_required ? _this.passwordSettingData.minimum_digit_required : 1;
            _this.password_total_symbol = _this.passwordSettingData.minimum_symbol_required ? _this.passwordSettingData.minimum_symbol_required : 1;

            _this.message = _this.$tr('cms.password_needsto_have') + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' +_this.password_length + ' ' + _this.$tr('cms.tooltip_pwd_hint_charcter') + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' + _this.password_upper_charater + ' ' + _this.$tr('cms.tooltip_pwd_hint_upper_charcter') + ', ' + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_digit + ' ' + _this.$tr('cms.tooltip_pwd_hint_digit_charcter') + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_symbol + ' ' + _this.$tr('cms.tooltip_pwd_hint_symbol_charcter') + '\n';
            _this.message += _this.password_total_symbol > 1 ? _this.$tr('cms.tooltip_pwd_hint_which_charcter') : _this.$tr('cms.tooltip_pwd_hint_which_charcter');
        });
    },
    methods: {
        resetPassword: function resetPassword() {

            var _this = this;
            // console.log("password", _this.passwordSettingData);
            // return false;
            /*
            $.get(getBaseUrl() + 'Base/ResetpasswordByToken', params, function(data) {
            if (!checkPassword(this.password)) {
                $.get(getBaseUrl() + 'Base/search&model=Settings&method=getSecuritySettings', function (data) {
                    _this.passwordSettingData = data;

                    console.log('passwordData',data);
                    console.log("passwordSettingData",_this.passwordSettingData);
                    _this.password_length = _this.passwordSettingData.minimum_password_length;
                    _this.password_upper_charater = _this.passwordSettingData.minimum_char_required;
                    _this.password_total_digit = _this.passwordSettingData.minimum_digit_required;
                    _this.password_total_symbol = _this.passwordSettingData.minimum_symbol_required;


                    var message = _this.$tr('cms.password_needsto_have') + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_length + ' ' + _this.$tr('cms.tooltip_pwd_hint_charcter') + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_upper_charater + ' ' + _this.$tr('cms.tooltip_pwd_hint_upper_charcter') + ', ' + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_digit + ' ' + _this.$tr('cms.tooltip_pwd_hint_digit_charcter') + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_symbol + ' ' + _this.$tr('cms.tooltip_pwd_hint_symbol_charcter') + '\n';
                    message += _this.password_total_symbol > 1 ? _this.$tr('cms.tooltip_pwd_hint_which_charcter') : _this.$tr('cms.tooltip_pwd_hint_which_charcter');
                    notify('error', message);
                    return false;

                });
            }
        });
        */
       
            if (this.password != this.confirm_password) {
                notify('error', this.$tr('cms.passwords_does_not_match'));
                return false;
            }
            if(!checkPasswordValidation(_this.password,  _this.passwordSettingData)){
                valid=false;
                        _this.password_length = _this.passwordSettingData.minimum_password_length ? _this.passwordSettingData.minimum_password_length : 8;
                        _this.password_upper_charater = _this.passwordSettingData.minimum_char_required ? _this.passwordSettingData.minimum_char_required : 1;
                        _this.password_total_digit = _this.passwordSettingData.minimum_digit_required ? _this.passwordSettingData.minimum_digit_required : 1;
                        _this.password_total_symbol = _this.passwordSettingData.minimum_symbol_required ? _this.passwordSettingData.minimum_symbol_required : 1;
    
    
                        var message = _this.$tr('cms.password_needsto_have') + '\n';
                        message += _this.$tr('cms.atleaset') + ' ' + _this.password_length + ' ' + _this.$tr('cms.tooltip_pwd_hint_charcter') + '\n';
                        message += _this.$tr('cms.atleaset') + ' ' + _this.password_upper_charater + ' ' + _this.$tr('cms.tooltip_pwd_hint_upper_charcter') + ', ' + '\n';
                        message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_digit + ' ' + _this.$tr('cms.tooltip_pwd_hint_digit_charcter') + '\n';
                        message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_symbol + ' ' + _this.$tr('cms.tooltip_pwd_hint_symbol_charcter') + '\n';
                        message += _this.password_total_symbol > 1 ? _this.$tr('cms.tooltip_pwd_hint_which_charcter') : _this.$tr('cms.tooltip_pwd_hint_which_charcter');
    
                        
                          if(valid == false){
                                notify('error', message);
                                return false;
                            }
            }
            blockUI('.container');
            var params = {
                token: this.token,
                password: this.password,
            };
            $.get(getBaseUrl() + 'Base/ResetpasswordByToken', params, function(data) {
                unblockUI('.container');
                notify(data.type, data.message);
                if (data.type == 'success') {
                    window.setTimeout(function() {
                        window.location.href = '/login';
                    }, 2000);
                } else {
                    window.setTimeout(function() {
                        window.location.href = '/home';
                    }, 2000);
                }
            });

        },
        onLoad: function onLoad() {
            blockUI('.container');
            var _this = this;
            var params = {};
            var param_array = window.location.href.split('?');
            for (var i in param_array) {
                x = param_array[i].split('=');
                params[x[0]] = x[1];
            }
            window.setTimeout(function() {
                if (typeof params.token == 'undefined') {
                        window.location.href = '/home';
                    return false;
                }
            }, 2000);
            this.token = params.token;
            $.get(getBaseUrl() + 'Base/checkResetpasswordToken', params, function(data) {
                unblockUI('.container');
                if (data.type == 'success') {
                    _this.person_id = data.person_id;
                    _this.loaded = true;
                    setTimeout(function() {
                        $('[data-toggle="tooltip"]').tooltip();
                    }, 450);
                } else {
                    notify(data.type, data.message);
                    window.setTimeout(function() {
                        window.location.href = '/home';
                    }, 2000);
                }
            });

        }
    }
}

baseComponents.login = {
    name: 'login',
    template: '#loginTemplate',
    data: function data() {
        var message = getSearchParams('message');
        var type = getSearchParams('type');
        if (message) {
            if (typeof type == 'undefined') type = 'info';
            notify(type, decodeURI(message));
        }

        var redirect = getSearchParams('redirect');
        var isGuestCheckout = false;
        console.log('guest setting', guestCheckoutSettings.guest_checkout_toggle);
        console.log('guest cart count', window.cartCount);
        if (guestCheckoutSettings.guest_checkout_toggle == 1 && window.cartCount > 0) {
            isGuestCheckout = true;
        }
        
        return {
            appData: appData,
            loaded: false,
            username: '',
            password: '',
            captcha: '',
            captchaClass: '',
            captchaClassforget: '',
            user_email: '',
            remember: false,
            usernameClass: "",
            usernameEmailClass: "",
            passwordClass: "",
            password_total_digit: '',
            password_upper_charater: '',
            password_total_symbol: '',
            password_length: '',
            linkedInLogin: '<script type="in/Login"></script>',
            xingLoginButton: '<script type="xing/login">{"consumer_key": "[YOUR_CONSUMER_KEY]"}</script>',
            registration_type: 'person',
            personReg: true,
            businessReg: false,
            registrationData: {},
            ssoSetting: {},
            isGuestCheckout: isGuestCheckout,
            cartResponse:false,
            showGuesCheckoutForm: false,
        };
    },
    watch: {
        personReg: function personReg() {
            this.businessReg = !this.personReg;
            this.registration_type = this.personReg ? 'person' : 'business';
        },
        businessReg: function businessReg() {
            this.personReg = !this.businessReg;
            this.registration_type = this.personReg ? 'person' : 'business';
        }
    },
    created: function created() {
        var _this = this;
        console.log("before",this.cartResponse);
        // Check cart if it is expired or not
        var urlDetail = getBaseUrl() + 'Base/get_cart&refresh=yes';
        // var urlParams = new URLSearchParams(window.location.href);
        // var cart_id = urlParams.get('cart_id');
        // if(typeof cart_id != 'undefined' && cart_id != '' && cart_id != null){
        //     urlDetail += '&cart_id=' + cart_id; 
        // }
        var cartResponse = function () {
            var returnAjaxData = {};
            $.ajax({
                method: "GET",
                url: urlDetail,
                async: false,
                global: false,
                success: function (data) {
                    returnAjaxData = data;
                },
                error: function (request, errordata, errorObject) {
                }
            });

            return returnAjaxData;
        }();
        this.cartResponse = cartResponse;
        if(this.cartResponse){
            // this.isGuestCheckout = true; 
            if (guestCheckoutSettings.guest_checkout_toggle == 1){
                this.isGuestCheckout = true; 
            }
            
        }
        console.log("after",this.cartResponse );

    },
    mounted: function mounted() {

        var _this = this;

        let UserNameCookie = getCookie('username');
        let PasswordCookie = getCookie('password');
        if(UserNameCookie)
        {
           this.username = $.trim(UserNameCookie);
        } 
        if(PasswordCookie)
        {
            this.password = $.trim(Decrypt(PasswordCookie));
        }

        window.setTimeout(function() {
            _this.loaded = true;
            if (window.isCaptchaOn && window.captchaType == 'google_captcha') {
                if (!commonComponentMethods.FtmIsEnabled('somfy-feature')) {
                    // apply the google captcha
                    if(typeof window.login_captcha != 'undefined'){
                        grecaptcha.reset(window.login_captcha);
                    } else {
                        window.login_captcha = grecaptcha.render('google_recaptcha_login', { 'sitekey': $("#forgot_password").data('google_captcha_key') });
                    }
                }
            }
        }, 1000);
        var _this = this;
        $.get(getBaseUrl() + 'Base/search&model=Settings&method=getSecuritySettings', function (data) {
            console.log('passwordData', data);
            _this.passwordSettingData = data;
            console.log("passwordSettingData", _this.passwordSettingData);
            _this.password_length = _this.passwordSettingData.minimum_password_length ? _this.passwordSettingData.minimum_password_length : 8;
            _this.password_upper_charater = _this.passwordSettingData.minimum_char_required ? _this.passwordSettingData.minimum_char_required : 1;
            _this.password_total_digit = _this.passwordSettingData.minimum_digit_required ? _this.passwordSettingData.minimum_digit_required : 1;
            _this.password_total_symbol = _this.passwordSettingData.minimum_symbol_required ? _this.passwordSettingData.minimum_symbol_required : 1;
            passwordSettings.password_message = _this.$tr('cms.password_needsto_have') + '\n';
            passwordSettings.password_message += _this.$tr('cms.length_atleaset') + _this.password_length + '\n';
            passwordSettings.password_message += _this.password_length > 1 ? _this.$tr('cms.number_of_uppercase_s') + _this.password_upper_charater + '\n' : _this.$tr('cms.number_of_uppercase') + _this.password_upper_charater + '\n';
            passwordSettings.password_message += _this.password_upper_charater > 1 ? _this.$tr('cms.number_of_digits_s') + _this.password_total_digit + '\n' : _this.$tr('cms.number_of_digits') + _this.password_total_digit + '\n';
            passwordSettings.password_message += _this.password_total_digit > 1 ? _this.$tr('cms.number_of_symbols_s') + _this.password_total_symbol + '\n' : _this.$tr('cms.number_of_symbols') + _this.password_total_symbol + '\n';
            passwordSettings.password_message += _this.password_total_symbol > 1 ? _this.$tr('cms.special_characters_symbols_s') : _this.$tr('cms.special_characters_symbols');

        });

        if (window.isCaptchaOn && window.captchaType == 'google_captcha') {
            if (!commonComponentMethods.FtmIsEnabled('somfy-feature')) {
                // load the captch script on mount
                this.loadCaptchaScript();
            }
        }
        else if (window.isCaptchaOn) {
            refreshPureCaptcha('captchaLogin');
        }

        $.get(getBaseUrl() + 'Base/search&model=Settings&method=getSsoSetting', function (data) {
            _this.ssoSetting = data;
            console.log('data', _this.ssoSetting);
        });

        this.stripeCallbackProcess();
    },
    updated() {
        var pageType = getSearchParams('pageType');
        if (pageType == 'register') {
            this.$nextTick(function () {
                $('#register_btn').trigger('click');
            });
        }
    },
    methods: {
        stripeCallbackProcess() {
            var _this = this;
            // setTimeout(function() {
                // Stripe redirect callback process - START
                let currentPage = getSearchParams('currentPage');
                let order_number = getSearchParams('order_number');
                let stage = getSearchParams('stage');
                let stripe_eror_msg = getSearchParams('stripe_eror_msg');
                console.log('stripe_eror_msg', stripe_eror_msg);
            
                if (typeof currentPage != 'undefined' && typeof order_number != 'undefined') {
                    _this.showGuesCheckoutForm = true;
                }
                else if (typeof stripe_eror_msg != 'undefined') {
                    _this.showGuesCheckoutForm = true;
                }
            // }, 1000);
            // Stripe redirect callback process - END
        },

        //this is to load captcha script
      
        
        loadCaptchaScript: function loadCaptchaScript() {
            var url = 'https://www.google.com/recaptcha/api.js?onload=onloadCaptchaCallback&render=explicit&hl=' + this.$root.lang;
            var jsElm = document.createElement("script");
            // set the type attribute
            jsElm.type = "application/javascript";
            // make the script element load file
            jsElm.src = url;
            // finally insert the element to the body element in order to load the script
            document.body.appendChild(jsElm);
        },
        loginWithGoogle: function loginWithGoogle() {
            var _this = this;

            gapi.auth2.getAuthInstance().signIn().then(function(success) {
                // Login API call is successful
                console.log(success);

                blockUI();
                gapi.client.request({
                    path: 'https://www.googleapis.com/plus/v1/people/me'
                }).then(function(success) {
                    // API call is successful
                    var user_info = JSON.parse(success.body);
                    $.post(getBaseUrl() + 'Google/success', {
                        user_info: user_info
                    }, function(data) {

                        if (data.type == 'success') {
                            if (typeof data.result.SalutationID == 'undefined' || data.result.SalutationID == null) {
                                window.location.href = '/editprofile?message=' + _this.$tr('cms.please_complete_profile');
                            } else {
                                redirectAfterLogin(data);
                            }
                            //
                        } else {
                            unblockUI();
                            notify(data.type, data.message);
                        }
                    });
                    // user profile information
                    console.log(user_info);
                }, function(error) {
                    // Error occurred
                    // console.log(error) to find the reason
                    unblockUI();
                    notify('error', $tr('cms.something_went_wrong'));
                });
            }, function(error) {
                // Error occurred
                notify('error', $tr('cms.something_went_wrong'));
                // console.log(error) to find the reason
            });
        },
        loginWithLinkedin: function loginWithLinkedin() {
            var _this = this;
            IN.User.authorize(function() {

                var fields = ['first-name', 'last-name', 'email-address'];

                IN.API.Profile("me").fields(fields).result(function(data) {
                    if (typeof data.values == 'undefined' || data.values.length < 1) {
                        notify('error', $tr('cms.something_went_wrong'));
                        return false;
                    }
                    blockUI();
                    $.post(getBaseUrl() + 'Linkedin/success', {
                        user_info: data.values[0]
                    }, function(data) {
                        unblockUI();
                        if (data.type == 'success') {
                            if (typeof data.result.SalutationID == 'undefined' || data.result.SalutationID == null) {
                                window.location.href = '/editprofile?message=' + _this.$tr('cms.please_complete_profile');
                            } else {
                                redirectAfterLogin(data);
                            }
                            //
                        } else {
                            unblockUI();
                            notify(data.type, data.message);
                        }
                    });
                }).error(function(data) {
                    console.log(data);
                });
            });
        },
        
        login: function login() {
            if (this.username == '') {
                this.usernameClass = "has-error";
                return false;
            } else {
                this.usernameClass = "";
            }

            if (this.password == '') {
                this.passwordClass = "has-error";
                return false;
            } else {
                this.passwordClass = "";
            }

            var params = {
                username: this.username,
                password: this.password,
                remember: this.remember,
                captcha:  this.captcha
            };

            var domainName = window.location.hostname;
            var checkLocal = domainName.includes("local");

            if (window.isCaptchaOn && window.captchaType == 'google_captcha') {
                if (checkLocal === false){
                    if (typeof grecaptcha != 'undefined') {
                        var captchaRes = grecaptcha.getResponse();
                        if (!captchaRes && captchaRes == '') {
                            notify('error', this.$tr('cms.please_complete_robot_check'));
                            return false;
                        }
                    }
                }
            }
            else if (window.isCaptchaOn) {
                if (this.captcha == '') {
                    this.captchaClass = "has-error";
                    return false;
                }
                else {
                    this.captchaClass = "";
                }
            }
            
            blockUI('.container');
            var _this = this;
            $.post(getBaseUrl() + 'Base/login', params, function(data) {
                unblockUI();
                if (data.type == 'success') {
                    if (_this.remember) {
                        let sessionID = getCookie('PHPSESSID');
                        setCookie('PHPSESSID', sessionID, 1);
                        document.cookie = "username="+_this.username;
                       // document.cookie = "password="+_this.password;
                        document.cookie = "password="+Encrypt(_this.password);

                    } else {
                        let sessionID = getCookie('PHPSESSID');
                        setCookie('PHPSESSID', sessionID);
                        document.cookie ='username=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
                        document.cookie ='password=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
                    }

                    var redirect = getHandler('Login', 'redirect');
                    redirect(data);

                }
                else {
                    if (window.isCaptchaOn && window.captchaType == 'pure_captcha') {
                        refreshPureCaptcha('captchaLogin');
                    }

                    if (typeof data.captcha_error != 'undefined' && typeof data.message != 'undefined' && data.message == "captcha_not_set" ) {
                        notify('error', _this.$tr('cms.captcha_not_set'));
                    }
                    else if (typeof data.captcha_error != 'undefined' && typeof data.message != 'undefined' && data.message == "real_captcha_not_inserted" ) {
                        notify('error', _this.$tr('cms.original_captcha') +" : "+data.original + _this.$tr('cms.requested_captcha')+ " : " + data.requested);
                    }
                    else if (typeof data.captcha_error != 'undefined') {
                        notify('error', _this.$tr('cms.captcha_not_valid'));
                    }
                    else if (typeof data.message != 'undefined') {
                        notify('error', data.message);
                    } else {
                        notify('error', _this.$tr(data.error));
                    }
                }
            }).error(function(data) {
                unblockUI();
            });
        },
        reportChange: function reportChange(field, value) {
            this.registrationData[field.name] = value;
            console.log(this.registrationData);
        },
        register: function register() {

            var valid = this.$refs.registrationFrom.isValid();
            if (valid == false) {
                notify('error', this.$tr('cms.fillout_all_required_fields'));
                return false;
            }
            //var registrationData = JSON.parse(JSON.stringify(this.registrationData));
            var registrationData = this.$refs.registrationFrom.getData();
            if (registrationData.password != registrationData.confirm_password) {
                notify('error', this.$tr('cms.passwords_do_not_match'));
                return false;
            }
            if (!checkPassword(registrationData.password)) {
                var message = this.$tr('cms.password_needsto_have') + '\n';
                message += this.$tr('cms.atleaset') + ' ' + passwordSettings.password_length + ' ' + this.$tr('cms.tooltip_pwd_hint_charcter') + '\n';
                message += this.$tr('cms.atleaset') + ' ' + passwordSettings.password_upper_charater + ' ' + this.$tr('cms.tooltip_pwd_hint_upper_charcter') + ', ' + '\n';
                message += this.$tr('cms.atleaset') + ' ' + passwordSettings.password_total_digit + ' ' + this.$tr('cms.tooltip_pwd_hint_digit_charcter') + '\n';
                message += this.$tr('cms.atleaset') + ' ' + passwordSettings.password_total_symbol + ' ' + this.$tr('cms.tooltip_pwd_hint_symbol_charcter') + '\n';
                message += passwordSettings.password_total_symbol > 1 ? this.$tr('cms.tooltip_pwd_hint_which_charcter') : this.$tr('cms.tooltip_pwd_hint_which_charcter');
                notify('error', message);
                return false;
            }
            if ($('#terms_conditions:checked').length < 1) {
                notify('error', this.$tr('cms.please_accept_terms_and_conditions'));
                return false;
            }
            if ($('#newsletter:checked').length > 0) {
                registrationData.newsletter = true;
            } else {
                registrationData.newsletter = false;
            }
            /*registrationData['CountryID'] = [ registrationData['CountryID'],registrationData['CountryID'] ];
             registrationData['Street'] = [ registrationData['Street'],registrationData['Street'] ];
             registrationData['ZIP'] = [ registrationData['ZIP'],registrationData['ZIP']];
             registrationData['City'] = [ registrationData['City'],registrationData['City'] ];
             registrationData['from_cms'] = 'yes';
             registrationData = JSON.stringify(registrationData);
             /*$.post(getBaseUrl()+'Base/register',{registartion_data : registrationData},function(){
             console.log(data);
             })*/
            blockUI();
            $.post(getBaseUrl() + 'Base/register', {
                registrationData: JSON.stringify(registrationData)
            }, function(data) {
                notify(data.type, data.message);
                unblockUI();
                if (data.type == 'success') {
                    setTimeout(function() {
                        window.location.href = '/login?message=' + encodeURI(data.message);
                    }, 1000);
                }
                if (typeof data.action != 'undefined' && data.action == 'login') {
                    setTimeout(function() {
                        $("#register_form_wrapper").hide();
                        $("#login_form_wrapper").hide();
                        $("#change_password_form_wrapper").show();
                    }, 1000);
                }
            });
        },
        getNewPassword: function getNewPassword() {
            var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            var validEmail = re.test(this.user_email);
            
            if (window.isCaptchaOn && window.captchaType == 'google_captcha') {
                if (typeof grecaptcha != 'undefined') {
                    var captchaRes = grecaptcha.getResponse(window.capID);
                    if (!captchaRes && captchaRes == '') {
                        notify('error', this.$tr('cms.please_complete_robot_check'));
                        return false;
                    }
                }
            }
            else if (window.isCaptchaOn) {
                if (this.captcha == '') {
                    this.captchaClassforget = "has-error";
                    refreshPureCaptcha('captchaForgetPwd');
                    return false;
                }
                else {
                    this.captchaClassforget = "";
                }
            }

            if (this.user_email == '' || !validEmail) {
                this.usernameEmailClass = "has-error";
                notify('error', this.$tr('cms.please_enter_valid_email'));
                return false;
            } else {
                this.usernameEmailClass = "";
            }
            var params = {
                username: this.user_email,
                captcha:this.captcha
            };
            blockUI('.container');
            var _this = this;
            $.post(getBaseUrl() + 'Base/forgot_password', params, function(data) {
                unblockUI();
                if (typeof data.captcha_error != 'undefined') {
                    notify('error', _this.$tr('cms.captcha_not_valid'));
                }
                else {
                    notify(data.type, data.message);
                }
                
                if (data.type == 'success') {
                    setTimeout(function() {
                        $('#signin_btn').trigger('click');
                    }, 3000);
                }
            });
        },
        toggleLoginPassword: function() {
            $("#toggleLoginPassword").toggleClass("fa-eye fa-eye-slash");
            var input = $($("#toggleLoginPassword").attr("toggle"));
            if (input.attr("type") == "password") {
                input.attr("type", "text");
            } else {
                input.attr("type", "password");
            }
        },
        loginWithSsoOauth: function () {
            // window.location.href = appData.settings.simplyOrgUrl + app.lang + '/redirect-to-authorize-url?portal=1';
            window.location.href = getBaseUrl() + 'Base/ssoLogin';
        },

        // Function to redirect for guest checkout
        guestCheckout: function() {
            var _this = this;

            // Check cart if it is expired or not
            blockUI();
            var cartResponse = function () {
                var returnAjaxData = {};
                $.ajax({
                    method: "GET",
                    url: getBaseUrl() + 'Base/get_cart&refresh=yes',
                    async: false,
                    global: false,
                    success: function (data) {
                        returnAjaxData = data;
                        unblockUI('.container');
                    },
                    error: function (request, errordata, errorObject) {
                        unblockUI('.container');
                    }
                });

                return returnAjaxData;
            }();

            if ($.isEmptyObject(cartResponse) || (!$.isEmptyObject(cartResponse) && cartResponse.lines.length <= 0)) {
                notify('error', this.$tr('cms.cart_expired'));
                return false;
            }

            bootbox.dialog({
                message: _this.$tr('cms.bootbox_confirm_guest_checkout'),
                buttons: {
                    'register_now': {
                        label: _this.$tr('cms.register_now'),
                        className: 'btn-default pull-right',
                        callback: function(response) {
                            $('#register_btn').trigger('click');
                        }
                    },
                    'continue_as_guest': {
                        label: _this.$tr('cms.continue_as_guest'),
                        className: 'btn-primary pull-right',
                        callback: function(response) {
                            $("#register_form_wrapper").hide();
                            $("#login_form_wrapper").hide();
                            $("#change_password_form_wrapper").hide();
                            $("#guest_checkout_wrapper").show();
                        }
                    }
                },
                callback: function(response) {
                    
                }
            });
        }

    }

};

baseComponents.Cart = {
    name: 'Cart',
    template: '#CartTemplate',
    data: function data() {
        var userRoles = [];

        var send_mail_to_participant = false;
        send_mail_to_participant = getHandler('CheckoutEvents', 'SendParticipantEmail');
        return {
            appData: appData,
            cart: {},
            userRoles: userRoles,
            loaded: false,
            cartCount: 0,
            checkOutResult: false,
            selectedSemList: {},
            cartSubTotal: 0,
            cartCurrencySymbol: '',
            currentPage: 'cart',
            order_number: '',
            stage: "",
            deduct_from_available_info: false,
            send_mail_to_participant: send_mail_to_participant,
            // customerCards: {},
            appliedWithoutTaxes:0,
            skipCount: 0,
            showBackBtn:false,
            // FirstName: '',
            // FirstNameErrorClass: '',
            // LastName: '',
            // LastNameErrorClass: '',
            // Email: '',
            // EmailErrorClass: '',
            // policy: false,
            // PolicyErrorClass: '',
            // company_name:'',
            // agb_link_tag: '',
            // is_guest_booking: false,
            // isGuestCheckout: isGuestCheckout,
            // hybridRegistrationType: 'onsite',
            widget_url: ''
        }
    },
    
    created() {

        // Stripe redirect callback process - START
        let currentPage = getSearchParams('currentPage');
        let order_number = getSearchParams('order_number');
        let stage = getSearchParams('stage');
        let stripe_eror_msg = getSearchParams('stripe_eror_msg');

        var widget_url = localStorage.getItem("widget_url");
        if (typeof widget_url != 'undefined' && widget_url != null) {
            this.widget_url = widget_url;
        }else{
            widget_url = urlParams.get('widget_url')
            if (typeof widget_url != 'undefined' && widget_url != null) {
                this.widget_url = widget_url;
            }
        }

        if (typeof currentPage != 'undefined' && typeof order_number != 'undefined') {
            this.currentPage = currentPage;
            this.order_number = order_number;
            this.stage = stage;

            let uri = window.location.href.toString();
            if (uri.indexOf("?") > 0) {
                let clean_uri = uri.substring(0, uri.indexOf("?"));
                window.history.replaceState({}, document.title, clean_uri);
            }
        }
        else if (typeof stripe_eror_msg != 'undefined') {
            this.currentPage = 'confirmOrder';

            let uri = window.location.href.toString();
            if (uri.indexOf("?") > 0) {
                let clean_uri = uri.substring(0, uri.indexOf("?"));
                window.history.replaceState({}, document.title, clean_uri);
            }

            notify('error', stripe_eror_msg);
        }
        // Stripe redirect callback process - END
        
    },
    mounted: function mounted() {

        var urlParams = new URLSearchParams(window.location.search);
        // alert(urlParams);
        var cart_details = urlParams.get('cart_details');
        //widget_url params added to store the redirect url when need to redirect from the cart page by rohit parchani on 03-01-2023
        if(urlParams.get('widget_url') != "undefined"){
            var widget_url = urlParams.get('widget_url');
        }
        if(widget_url != null){
            this.showBackBtn = true;
            this.widget_url = widget_url;
        }
        if(cart_details != null){
            blockUI('.container');
            var _this = this;
            cart_details = JSON.parse(cart_details);
            $(cart_details).each(function(key,value){
                _this.addItemToCart(value);
            });
            setTimeout(() => {
                unblockUI();
                var cartPageUrl = "/cart?widget_url="+widget_url; //pass widget_url to cart page 
                window.location.href = cartPageUrl;
            }, 5000);
        }else{
            this.load();
        }
    },
    methods: {
        load: function load() {
            blockUI('.container');
            cartManager.refreshTheCart(this);
            console.log('cart', cart);
            window.is_removed_from_cart = cart.is_removed_from_cart;
            var _this = this;
            cart.lines?.forEach(item => {
                if (typeof item.tax != 'undefined') {
                    var taxDetail = JSON.parse(item.tax);
                    console.log("taxdetail is: ", taxDetail);
                    if (taxDetail.percent > 0) {
                        _this.appliedWithoutTaxes = 1;
                    }
                }
            });
        },
        addItemToCart: function addItemToCart(value){
            // payload set for seminar & webinar
            if(value.type == 'seminar' || value.type == 'webinar'){
                var model = 'planned-event';
                var params = {
                    id: value.id,
                    event_startdate: value.start_date,
                    event_enddate: value.end_date,
                    event_name: value.event_name
                };

                var obj = {
                    id: value.id,
                    item:params,
                    quantity: 1,
                    model: model,
                    model_id: null,
                    seminar_status: 'confirmed',
                    params: []
                }
            }
            
            // payload set for elearning
            if(value.type == 'e-learning'){
                var model = 'e-learning';
                var params = {
                    id: value.id,
                    title: value.event_name
                };

                var obj = {
                    id: value.id,
                    item:params,
                    quantity: 1,
                    model: model,
                    model_id: null,
                    seminar_status: 'confirmed',
                    params: []
                }
            }

            // payload set for Qualification
            if(value.type == 'seminar-series'){
                var model = 'planned-qualifications';
                var seminars = value.seminar_names.split(',');
                var seminars_ids = value.seminar_ids.split(',');
                var params = {
                    id: value.series_id,
                    qualification_id: value.series_id,
                    selectedEvents: value.seminar_ids.split(','),
                    seminar_status: 'confirmed',
                    item_type: 'qualification',
                    name: value.event_name,
                    start_date: value.start_date,
                    end_date: value.end_date,
                    all_seminars:[],
                };
                $(seminars).each(function(key,val){
                    params.all_seminars[key] = {
                        id: seminars_ids[key],
                        name: val,
                        type: 'events',
                        plannedSeminars:[]
                    };
                    params.all_seminars[key].plannedSeminars[0] = {
                        id: seminars_ids[key],
                        event_name: val,
                        type: 'events'
                    };
                });

                var obj = {
                    id: value.series_id,
                    item:params,
                    quantity: 1,
                    model: model,
                    model_id: null,
                    seminar_status: 'confirmed',
                    selectedEvents: value.seminar_ids.split(','),
                    params: []
                }
            }
            setTimeout(function() {
                $.post(getBaseUrl() + 'Base/add_to_cart', {
                    cartItem: obj
                }, function(data) {});
            },200);
        },
        removeFromCart: function removeFromCart(item_id) {
            var _this = this;
            blockUI('.container');
            console.log("hello inside remove")
            $.post(getBaseUrl() + 'Base/remove_from_cart', {
                item_id: item_id
            }, function(data) {
                window.cart = data;
                _this.cart = window.cart;
                // alert('cart remove');
                window.cartCount = cartManager.cartCount();
                _this.cartCount = window.cartCount;
                unblockUI('.container');
                console.log(_this.cart);

                //menu.cartCount = window.cartCount;
            });
        },
        confirmOrder: function() {
            if (typeof window.user.user.PersonID == 'undefined') {
                var cartUrlParams = new URL(window.location.href).searchParams;
                var cartId = cartUrlParams.get('cart_id');
                var widgetUrl = cartUrlParams.get('widget_url');
                
                // Base login URL
                var loginUrl = "/login?redirect=cart";
                
                // Append cart_id if it is not empty or null
                if (cartId) {
                    loginUrl += '&cart_id=' + encodeURIComponent(cartId);
                }
                
                // Append widget_url if it is not empty or null
                // if (widgetUrl) {
                //     loginUrl += '&widget_url=' + encodeURIComponent(widgetUrl);
                // }
                
                // Redirect to the constructed login URL
                window.location.href = loginUrl;
                return false;
            }
            var lines = this.cart.lines;
            var valid = true;
            if (window.user && window.user.user && window.user.user.roles) {
                this.userRoles = window.user.user.roles;
            }
            if (window.toggles && typeof window.toggles['somfy-feature'] != 'undefined' && window.toggles['somfy-feature'].enabled == true) {
                for (var i in lines) {
                    if (lines[i].attendee_person_ids == null || lines[i].attendee_person_ids == "") {
                        valid = false;
                    }
                }
            } else {
                if (this.userRoles.indexOf('manager') != -1 || this.userRoles.indexOf('portal_user') != -1 || this.userRoles.indexOf('participant') != -1) {
                    if(lines.length > 0){
                        for (var i in lines) {
                            if (lines[i].model != 'article' && (lines[i].attendee_person_ids == null || lines[i].attendee_person_ids == "")) {
                                console.log("CCC");
                                valid = false;
                            }
                        }
                    }else{
                        notify('error', this.$tr('cms.please_select_seminar'));
                        return;
                    }
                    
                }else{
                    if(lines.length > 0){
                        for (var i in lines) {
                            if (lines[i].model != 'article' && (lines[i].attendee_person_ids == null || lines[i].attendee_person_ids == "")) {
                                valid = false;
                            }
                        }
                    }
                }
            }
            if (!valid) {
                notify('error', this.$tr('cms.please_select_participants'));
                return;
            }
            
            this.cart = function () {
                var returnAjaxData = {};
                $.ajax({
                    method: "GET",
                    url: getBaseUrl() + 'Base/get_cart&refresh=yes',
                    async: false,
                    global: false,
                    success: function (data) {
                        returnAjaxData = data;
                        unblockUI('.container');
                    },
                    error: function (request, errordata, errorObject) {
                        unblockUI('.container');
                    }
                });

                return returnAjaxData;
            }();

            var checkout_text = $('#checkout_text').val();
            var attendeesString = this.cart.lines[0].attendee_person_ids;
            var elements = attendeesString.split(',').filter(Boolean); // Filter out empty elements
            var elementCount = elements.length;

            if(checkout_text == 0 && this.cart.lines.length == 1 && this.cart.lines[0].application_form_id > 0 && this.cart.lines[0].form_applicable == 1 && this.userRoles.indexOf('manager') == -1 && this.cart.lines[0].application_form_json == null && elementCount == 1){
            var _this = this;

                $.post(getBaseUrl() + 'Checkout/getApplicationForm', {
                    line_id: this.cart.lines[0].id,person_id:this.cart.lines[0].attendee_person_ids
                }, function (data) {

                    $('#survey_form_id').html('');
                    $('#view_form_modal').modal('show');
                    $('#survey_form_id').html('');

                    $('#survey_form_id').surveyBuilder({displayOption:'front',data:data.data.jdata});
                    $('#view_form_modal .feedbacksubmitbutton').html(_this.$tr('cms.submit'));
                    $('#view_form_modal .close_btn').html(_this.$tr('cms.close'));
                    $('#view_form_modal #allownumericwithdecimal').attr("placeholder", _this.$tr('cms.add_number'));
                    $('#view_form_modal .select_any_one').html(_this.$tr('cms.select_any_one'));
                    if(data.data.header_image != '' && data.data.header_image != null){
                        $('#surveyTitle').after('<div class="tqdetails img_div"><img src="'+data.data.header_image+'">'+data.data.headerContent+'</div>');
                    }else{
                        $('#surveyTitle').after('<div class="tqdetails img_div">'+data.data.headerContent+'</div>');
                    }
                    if(data.data.footer_image != '' && data.data.footer_image != null){
                        $('#questionsContainer').after('<div class="tfooter img_div"><img src="'+data.data.footer_image+'">'+data.data.footerContent+'</div>');
                    }else{
                         $('#questionsContainer').after('<div class="tfooter img_div">'+data.data.footerContent+'</div>');
                    }

                    $('#surveyTitle p').remove('');
                    $('#survey_form_id li').css('list-style', 'none');

                    let question = data.data.jdata.questions;
                    let answer = data.data.values;
                    var input_string = '';
                    for(let ii = 0; ii < question.length; ii++)
                    {
                        let qid = question[ii].id;
                        let qtype = question[ii].type;
                        let qChecked = question[ii].multipleChk;

                        if(qtype == "file_upload" && qChecked == 'checked')
                        {
                            $('#'+qid).find('.file_upload').attr('multiple','multiple');
                        }
                    }

                    for(let ii = 0; ii < question.length; ii++)
                    {
                        let qid = question[ii].id;
                        let qtype = question[ii].type;
                        let qChecked = question[ii].multipleChk;
                        let qmandatory = question[ii].mandatory;

                        if(qtype == "file_upload" && qChecked == 'checked')
                        {
                            $('#'+qid).find('.file_upload').attr('multiple','multiple');
                        }

                        if(qtype == "file_upload" && answer[qid] != '' && typeof answer[qid] != 'undefined')
                        {
                            let image_list = answer[qid];
                            answer[qid] = '';
                            if (typeof image_list === "string") {

                                let image_list_arr = image_list.split(',');
                                let image_html = '';

                                for(var kk=0; kk < image_list_arr.length; kk++)
                                {   
                                    var image_ext = image_list_arr[kk].split('.');
                                    if(image_ext[1] == 'jpg' || image_ext[1] == 'png' || image_ext[1] == 'jpeg' || image_ext[1] == 'gif')
                                    {
                                        var tenant_name = window.user.tenant_settings.tenant_name;
                                        var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                        var src =  simplyOrgUrl+'/app/tenancy/tenants/'+tenant_name+'/upload_form_doc/'+image_list_arr[kk];

                                    }else{
                                        var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                        var src = simplyOrgUrl+'images/file-icon.png';
                                    }
                                    image_html += '<div class="img_upload_div" data-name="'+image_list_arr[kk]+'">';
                                    image_html += '<img height="150px" width="150px" src="'+src+'" /><br/><i style="cursor:pointer" class="fa fa-trash img_delete" id="img_'+qid+'" data-name="'+image_list_arr[kk]+'"></i>';
                                    image_html += '</div>';
                                }
                                $(".file_upload_class_"+qid).append(""+image_html+"");
                                input_string += "<input type='hidden' id='input_"+qid+"' name='input_"+qid+"' value='"+image_list+"'>";
                            }
                        }
                    }
                    SBManager.fillValues(data.data.values);
                    $('.file_extention, .multiple_file, .file_action, #start_value, #end_value').css('display','none');

                    $( '#questionsContainer > li' ).each(function() {
                        var li_id = $(this).attr('id');
                        $('#'+li_id).find('.tooltipclass').hide();
                        $('#'+li_id).find('.questionclass').css('width','100%');
                        $('input[name=file_upload]').css('width','100%');
                        var tooltip_info = $('#'+li_id).find('.tooltipclass .editable').html();

                        if($('#'+li_id).attr('data-ismandatory') == "checked"){
                            $('#'+li_id).find('.questionclass .editable').prepend('<label class="required-field" style="color:red">* </label>');
                        }
                        $('#'+li_id).find('.answerDiv .form-md-line-input').css('margin-right','180px');
                        if(tooltip_info != '' && tooltip_info != undefined && $('#'+li_id).find('.questionclass .tool_tip').length == 0){
                            $('#'+li_id).find('.questionclass .editable').append('<i class="fa fa-info-circle tool_tip" aria-hidden="true" style="cursor:pointer" title="'+tooltip_info+'"></i>');
                        }
                        if($('#'+li_id).hasClass('optionalClass')){
                            $('#'+li_id).find('.optionTitle span').html('');
                            var input_val = $('#'+li_id).find('input').val();
                            if(input_val == ''){
                                $('#'+li_id).css('display','none');
                            }
                            $('#'+li_id).find('.questionIndex').remove();
                        }
                        var start_value = $('#'+li_id+' #start_value').val();
                        var end_value = $('#'+li_id+' #end_value').val();
                        var range_value = $('#'+li_id+' #slider_value').val();
                        if(start_value != '' && end_value != ''){
                            $('#'+li_id+' #myRange').attr('min',start_value);
                            $('#'+li_id+' #myRange').attr('max',end_value);
                            $('#'+li_id+' .slider_min').html(start_value);
                            $('#'+li_id+' .slider_max').html(end_value);
                            $('#slider_value').attr('min',start_value);
                            $('#slider_value').attr('max',end_value);
                        }
                        $( '#'+li_id+' #myRange').animate({ value: range_value }, 1000);
                    });

                    $('#survey_form_id').find('form .feedbacksubmitbutton').parent('div').css('visibility','visible');
                    $('#survey_form_id').find('form').attr('method','post');
                    $('#survey_form_id').find('form').attr('enctype','multipart/form-data');
                    $('#survey_form_id form').append('<input name="line_id" id="line_id" value="'+_this.cart.lines[0].id+'" type="hidden">');
                    $('#survey_form_id form').append('<input name="person_id" id="person_id" value="'+_this.cart.lines[0].attendee_person_ids+'" type="hidden">');
                    $('#survey_form_id form').append('<input name="application_module" id="application_module" value="checkout_page" type="hidden">');
                    $('#survey_form_id form').append(input_string);
                    if (_this.cart.lines[0].is_mandatory == 0) {
                        $('#survey_form_id form').find('.submit_div').append('<button type="button" class="btn btn-flat checkout_skip">'+_this.$tr('cms.skip_register')+'</button>');
                        //_this.skipCount = 1;
                    }

                    for(let ii = 0; ii < question.length; ii++)
                    {
                        let qid = question[ii].id;
                        let is_child = (question[ii].copy_id == '') ? 0 : 1;
                        if(is_child === 1)
                        {
                            let is_child_answered = 0;
                            if(answer[qid] !== undefined && answer[qid] != '')
                            {
                                is_child_answered = 1;
                            }
                            if(is_child_answered == 0)
                            {
                                $('#'+qid).hide();
                            }
                        }
                    }
                    $( ".select_date" ).datepicker({
                        autoclose: true,
                        orientation: "left",
                        format: window.app_date_format_js,
                        language: app_language
                    });
                    $(".select_time_date").datetimepicker({
                        format: window.app_date_format_js+" hh:ii",
                        orientation: "left",
                        autoclose: true,
                        language: app_language
                    });
                    setTimeout(function(){
                        $("#view_form_modal").scroll(function () {
                            $( ".select_date" ).datepicker('hide');
                            $( ".select_date" ).blur(); 
                            $( ".select_time_date" ).datetimepicker('hide');
                            $( ".select_time_date" ).blur();            
                        });
                    },2000);
                });
                return false;
                /*------------------------------------------------------*/
            }
            
            window.dataLayer = window.dataLayer || [];
            window.dataLayer.push({
              event: 'checkout',
              cart: {
                'CartID': this.cart.id,
                'CartTotalPrice': this.cartSubTotal,
                'CartNoOfItems': this.cart.lines.length,
                'PersonID': window.user.user.PersonID
              }
            });
            this.currentPage = 'confirmOrder';
        },
        checkOut: function() {
            
            var _this = this;
           

           
            if (window.cartCount < 1) {
                notify('error', _this.$tr('cms.no_tems_in_cart'));
                return false;
            }

            var terms_and_conditionEle = $("#agree_terms_and_condition");

            if (!terms_and_conditionEle.is(":checked")) {
                terms_and_conditionEle.parent('.form-check').addClass('invalid')
                $('.message').html(this.$tr('cms.please_accept_terms_and_conditions'))
                $('.error').addClass('visible')
                return false;
            } else {
                terms_and_conditionEle.parent('.form-check').removeClass('invalid')
            }
            $('.error').removeClass('visible');

            var params = {
                deduct_from_available_info: this.deduct_from_available_info ? 1 : 0,
                send_mail_to_participant: this.send_mail_to_participant ? 1 : 0,
            };

            var billingAddressRef = ''
            if (typeof this.$refs.BillingAddress != 'undefined') {
                billingAddressRef = this.$refs.BillingAddress
            } else {
                billingAddressRef = this.$refs.Payment.$refs.BillingAddress
            }

            if (billingAddressRef.isValid()) {
                params.address_id = billingAddressRef.selected_address;
                params.invoice_recipient = billingAddressRef.invoice_recipient
                params.recipient_organization = billingAddressRef.recipient_organization
                params.invoice_to = billingAddressRef.address_of;
            } else {
                // notify('error',this.$tr('cms.please_fill_required_fields'));
                return false;
            }

            try{
                if(this.$refs.Payment.invoice_other_email != ''){
                    params.invoice_other_email = this.$refs.Payment.invoice_other_email;
                }
                
                if(this.$refs.Payment.purchase_order_no != ''){
                    params.purchase_order_no = this.$refs.Payment.purchase_order_no;
                }
            }catch(e){
                console.warn(e);
            }

            /*Check application form is filled or not*/

            var userRoles = window.user.user.roles;

            if (userRoles.indexOf('manager') == -1 && userRoles.indexOf('participant') == -1 && userRoles.indexOf('portal_user') == -1 ) {
                var status = 0;
                var arr_status = [];
                if($(".appliation_form_id").length > 0){

                    $( ".appliation_form_id" ).each(function( index ) {
                      if($( this ).attr('data-mandatory') == 1 ){
                        arr_status.push($( this ).attr('data-status'));
                      }
                    });
                }

                if( $.inArray("0", arr_status) !== -1 ) {
                    notify('error', 'Please fill application form for seminar(s)');
                    return false;
                }
            }

            /*Complete application form is filled or not*/

            blockUI('.container');
            this.currentReqest = $.post(getBaseUrl() + 'Base/checkoutProcess', params, function(data) {
                if (typeof data.type == 'undefined') {
                    notify('error', _this.$tr('cms.something_went_wrong'));
                    return false;
                }
                if (data.type == 'success') {
                    _this.currentPage = 'thankyou';
                    _this.order_number = data.order_number;
                    _this.stage = data.stage;
                    _this.checkOutResult = data;
                    window.cartCount = 0;
                    _this.cartCount = 0;
                    window.menu.cartCount = window.cartCount;

                    var lines = [];
                    $.each(_this.cart.lines, function(index, lineObj) {
                        var line = {};
                        line.amount = lineObj.amount;
                        line.event_type = lineObj.model;
                        line.event_id = lineObj.model_id;
                        if(lineObj.model == 'planned-event' || lineObj.model == 'planned-events'){
                            line.event_name = lineObj.cartItem?.item?.event_name;
                        }else if(lineObj.model == 'planned-qualifications' || lineObj.model == 'planned-qualification'){
                            line.event_name = lineObj.cartItem?.item?.name;
                        }else{
                            line.event_name = lineObj.cartItem?.item?.title;
                        }
                        lines.push(line);
                    });

                    var today = new Date();                          
                    var todayDate = moment(today).format("DD.MM.YYYY HH:mm");

                    window.dataLayer = window.dataLayer || [];
                    window.dataLayer.push({
                      event: 'ConfirmOrder',
                      order: {
                        'order_number':data.order_number,
                        'stage':data.stage,
                        'PaymentMethod': 'Invoice',
                        'CartID': data.cart.id,
                        'CartTotalPrice': _this.cartSubTotal,
                        'CartNoOfItems': _this.cart.lines.length,
                        'PersonID': window.user.user.PersonID,
                        'DateTime': todayDate,
                        items: lines
                      }
                    });

                    $.get(getBaseUrl() + 'Base/getProfile', function(data) {
                        window.user.user = data;
                    });

                } else {
                    if (data.message == 'need_login') {
                        var cartUrlParams = new URL(window.location.href).searchParams;
                        var cartId = cartUrlParams.get('cart_id');
                        var widgetUrl = cartUrlParams.get('widget_url');
                        
                        // Base login URL
                        var loginUrl = "/login?redirect=cart";
                        
                        // Append cart_id if it is not empty or null
                        if (cartId) {
                            loginUrl += '&cart_id=' + encodeURIComponent(cartId);
                        }
                        
                        // Append widget_url if it is not empty or null
                        // if (widgetUrl) {
                        //     loginUrl += '&widget_url=' + encodeURIComponent(widgetUrl);
                        // }
                        
                        // Redirect to the constructed login URL
                        window.location.href = loginUrl;
                    } else {
                        notify('error', data.message);
                        unblockUI('.container');
                    }
                }
                unblockUI('.container');
            }).error(function() {
                notify('error', _this.$tr('cms.something_went_wrong'));
                unblockUI('.container');
            });
            console.log("In checkout");
        },
        calcChekoutSubTotal: function calcChekoutSubTotal() {
            var subTotal = 0;
            console.log(this.checkOutResult.result);
            if (this.checkOutResult != false && typeof this.checkOutResult.result != 'undefined' && this.checkOutResult.result.length > 0) {
                var r = [];
                for (var i in this.checkOutResult.result) {
                    r = this.checkOutResult.result[i];
                    if (r.type == 'success') {
                        if (typeof r.result.discount != 'undefined' && typeof r.result.discount.original_price != 'undefined' && typeof r.result.discount.discount != 'undefined') {
                            subTotal += parseFloat(r.result.discount.original_price) - parseFloat(r.result.discount.discount);
                        } else {
                            subTotal += parseFloat(r.seminarDetails.event_price);
                        }
                    }
                }
            }
            return subTotal.toFixed(2);
        },
        calcCheckoutTax: function calcCheckoutTax() {
            var tax = 0;
            if (this.checkOutResult != false && typeof this.checkOutResult.result != 'undefined' && this.checkOutResult.result.length > 0 != 0) {
                var subTotal = parseFloat(this.calcChekoutSubTotal());
                tax = subTotal * parseFloat(this.checkOutResult.result[0].tax_percentage) / 100;
            }
            return tax.toFixed(2);
        },
        calcCheckoutTotal: function calcCheckoutTotal() {
            var total = 0;
            total = parseFloat(this.calcChekoutSubTotal()) + parseFloat(this.calcCheckoutTax());
            return total.toFixed(2);
        },
        getCurLang: function getCurLang() {
            return app.lang;
        },
        getSelectedSemsInQual: function getSelectedSemsInQual(item) {
            var res = [];

            if (typeof this.selectedSemList[item.id] != 'undefined') {
                return this.selectedSemList[item.id];
            }
            console.log(item.selectedEvents, 'selectedEvents');
            console.log(item.selectedElearnings, 'selectedElearnings');

            if(typeof item.selectedEvents != 'undefined' && item.selectedEvents.length > 0){
                for (var i in item.selectedEvents) {
                    var id = item.selectedEvents[i];
                    for (var j in item.all_seminars) {
                        var t = item.all_seminars[j];
                        for (var k in t.plannedSeminars) {
                            var sem = t.plannedSeminars[k];
                            var type = sem.type ? sem.type : 'events';
                            if (sem.id == id) {
                                if (type == 'events') {
                                    res.push(sem);
                                }
                            }
                        }
                    }
                }
            }else{
                for (var j in item.all_seminars) {
                    var t = item.all_seminars[j];
                    for (var k in t.plannedSeminars) {
                        var sem = t.plannedSeminars[k];
                        var type = sem.type ? sem.type : 'events';
                        if (type == 'events') {
                            res.push(sem);
                        }
                    }
                    console.log(item.selectedEvents, 'selectedEvents2');
                    
                }
            }
            if(typeof item.selectedElearnings != 'undefined' && item.selectedElearnings.length > 0){
                for (var i in item.selectedElearnings) {
                    var id = item.selectedElearnings[i];
                    for (var j in item.all_seminars) {
                        var t = item.all_seminars[j];
                        for (var k in t.plannedSeminars) {
                            var sem = t.plannedSeminars[k];
                            var type = sem.type ? sem.type : 'events';
                            if (sem.id == id) {
                                if (type == 'e-learning') {
                                    sem.event_name = sem.name;
                                    res.push(sem);
                                }
                            }
                        }
                    }
                }
            }else{
                for (var j in item.all_seminars) {
                    var t = item.all_seminars[j];
                    for (var k in t.plannedSeminars) {
                        var sem = t.plannedSeminars[k];
                        var type = sem.type ? sem.type : 'events';                        
                        if (type == 'e-learning') {
                            sem.event_name = sem.name;
                            res.push(sem);
                        }
                    }
                    console.log(item.selectedElearnings, 'selectedElearnings2');
                }   
            }

            this.selectedSemList[item.id] = res;
            return res;
        },  
        updateDirectDebit: function() {
            var params = JSON.stringify({
                id: this.cart.id,
                deduct_from_available_info: this.deduct_from_available_info,
                send_mail_to_participant: this.send_mail_to_participant,
            });
            var _this = this;
            blockUI();
            $.get(getBaseUrl() + 'Base/search&model=Cart&method=updateDirectDebit&params=' + params, function(data) {
                _this.load();
            });
        },
    },
    computed: {
        total: function() {
            return 0;
            /*if (this.loaded) {
             var a = 1;
             }
             var total = 0;
             for (var i in this.cart) {
             if (this.cart[i].item.item_type && this.cart[i].item.item_type == 'qualification') {
             if (this.cart[i].item.qualification_price && this.cart[i].item.qualification_price.trim() != '') total += parseFloat(this.cart[i].item.qualification_price);
             } else {
             if (this.cart[i].item.event_price && this.cart[i].item.event_price != '') total += parseFloat(this.cart[i].item.event_price);
             }
             }
             return total.toFixed(2);
             */
        },

    },
    watch: {
        cartCount: function cartCount() {
            if (this.loaded) {
                var a = 1;
            }
            window.menu.cartCount = window.cartCount;
        },
        cart: function cart() {
            if (this.cart) {
                var a = 1;
            }
        },
        deduct_from_available_info: function deduct_from_available_info() {
            if (this.deduct_from_available_info) {
                $('#bankDetailsModal').modal({
                    backdrop: 'static',
                    keyboard: false
                });
            } else {
                this.updateDirectDebit();
            }
            return false;

        },

    },
} 


baseComponents.EventDetails = {
    name: 'EventDetails',
    template: '#EventDetailsTemplate',
    props: ['app_loaded'],
    data: function data() {
        var isGuestCheckout = false;
        if (guestCheckoutSettings.guest_checkout_toggle == 1) {
            isGuestCheckout = true;
        }

        return {
            appData: appData,
            details: false,
            trainers: [],
            trainer_settings: [],
            resolvers: false,
            currentReqest: false,
            blueprint_id: false,
            cartCount: window.cartCount,
            cart: {},
            is_in_cart: false,
            OSLength: 0,
            add_to_cart_str: this.$tr('cms.book_seminar'),
            registered: false,
            event_id: getSearchParams('event_id'),
            loaded: false,
            do_not_show_cart_buttons: false,
            user: false,
            showAddParticipants: false,
            show_other_schedules: false,
            is_trainer: false,
            mailTo_subject: (commonComponentMethods.FtmIsEnabled('bvb-feature') ? 'BVB-Seminar' : 'SVG-Seminar'),
            show_addToCart_to_manager: false,
            img_alt: '',
            widget_url:'',
            lang: app.lang,
            hybridRegistrationType: 'onsite'
        };
    },
    mounted: function mounted() {
        if (typeof window.user.settings != 'undefined') {
            if (typeof window.user.settings.agb_link != 'undefined' && window.user.settings.agb_link != '') {
                this.agb_link_tag = window.user.settings.agb_link;
            }
            if (typeof window.user.settings.company_name != 'undefined' && window.user.settings.company_name != '') {
                this.company_name = window.user.settings.company_name;
            }
        }
        this.load();
        var _this = this;
        var urlParams = new URLSearchParams(window.location.href);

        var add_to_cart = urlParams.get('add_to_cart');        
        if(typeof urlParams.get('widget_url') != "undefined"){
            var widget_url = urlParams.get('widget_url');
        }
        
        var lang = urlParams.get('lang');
        var addCartMessage = lang == 'de' ? 'Ihre Buchung wird bearbeitet, bitte warten Sie.' : 'Your booking is under process, please wait.';
        if(add_to_cart != null && add_to_cart == 1){
            $("body").css("height", "100% !important");
            // var overlay = jQuery('<div class="overlay" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 99999;text-align: center; background: #999;display: table;"><p style="display: table-cell;vertical-align:middle;">'+ this.$tr('cms.add_to_cart_waiting') +'</p></div>');
            var overlay = jQuery('<div class="overlay" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 99999;text-align: center; background: #999;display: table;"><p style="display: table-cell;vertical-align:middle;">'+ addCartMessage +'</p></div>');
            overlay.appendTo(document.body);
            blockUI();           
            setTimeout(() => {
                if(_this.details.taken_seats < _this.details.max_registration){
                    // return false;
                    _this.addToCart();
                    unblockUI();
                    // alert("in");
                    // window.location.href = "/cart";
                    var baseUrlRedirect = "Base/changeLang&redirect=/cart";
                    if(typeof lang != 'undefined' && lang != null){
                        baseUrlRedirect += "?lang="+lang;
                    }
                    if(typeof widget_url != 'undefined' && widget_url != null){
                        localStorage.setItem("widget_url", widget_url);
                        baseUrlRedirect += '&widget_url='+ widget_url
                    }

                    var baseUrlRedirect = "Base/changeLang&redirect=/cart";

                    if(typeof lang != 'undefined' && lang != null){
                        baseUrlRedirect += "?lang="+lang;
                    }

                    if(typeof lang != 'undefined' && lang != null &&typeof widget_url != 'undefined' && widget_url != null){
                        baseUrlRedirect += '&widget_url='+ widget_url
                    }else if(typeof widget_url != 'undefined' && widget_url != null){
                        baseUrlRedirect += '?widget_url='+ widget_url
                    }

                    window.location.href = getBaseUrl() + baseUrlRedirect;

                    // window.location.href = getBaseUrl() + "Base/changeLang&redirect=/cart&lang="+lang;
                }else{
                    document.body.remove(overlay);
                    localStorage.setItem("widget_url", widget_url);
                    // return false;
                    // alert("out");
                    window.location.href = "/event-details?event_id="+_this.details.id;
                    window.location.href = getBaseUrl() + "Base/changeLang&redirect=/event-details?event_id="+_this.details.id+"&lang="+lang+'&widget_url='+ widget_url;
                }
            }, 2000);               
        }else{
            localStorage.removeItem("widget_url", widget_url);
        }
    },
    created: function created() {},
    methods: {
        load: function load() {
             //console.log("here",user.user.roles);

            var event_id = getSearchParams('event_id');
            var isInhouse = getSearchParams('is_inhouse');
            // alert(event_id);
            var only_details = getSearchParams('only_details');
            if (only_details == 'y') {
                this.do_not_show_cart_buttons = true;
            }
            if (!event_id) {
                notify('error', this.$tr('cms.event_id_is_missing'));
                return false;
            }
            var params = {
                id: event_id,
                cms:true,
                is_inhouse:isInhouse
            };
            if (this.app_loaded == false) {
                var _this = this;
                setTimeout(function() {
                    _this.load();
                }, 100);
                return false;
            }
            if (typeof user != 'undefined' && typeof user.user != 'undefined') {
                this.setShow_addToCart_to_manager(user.user)
                params.PersonID = user.user.PersonID;
            }
            params = JSON.stringify(params);
            var _this = this;
            blockUI();
            this.currentReqest = $.get(getBaseUrl() + 'Base/details&model=planned-event&params=' + params, function(data) {
                if(window.user?.seo_settings?.seo_enable_seminar == '1'){
                    if(typeof data.data.meta_description != 'undefined' && data.data.meta_description != '' && data.data.meta_description != null){
                      document.querySelector('meta[name="description"]').setAttribute("content", data.data.meta_description);
                    }
                    if(typeof data.data.meta_keywords != 'undefined' && data.data.meta_keywords != '' && data.data.meta_keywords != null){
                      document.querySelector('meta[name="keywords"]').setAttribute("content", data.data.meta_keywords);
                    }
                    if(typeof data.data.meta_title != 'undefined' && data.data.meta_title != '' && data.data.meta_title != null){
                      document.title = data.data.meta_title;
                      _this.img_alt = data.data.meta_title;
                    }else{
                        document.title = data.data.event_name;
                    }
                    if(typeof data.data.image_alt_tag != 'undefined' && data.data.image_alt_tag != '' && data.data.image_alt_tag != null){
                      _this.img_alt = data.data.image_alt_tag;
                    }
                }
                _this.details = data.data;
                console.log("_this.details",_this.details);
                var today = new Date();                          
                var todayDate = moment(today).format("YYYY-MM-DD");
                if(_this.details.is_inhouse ==1){
                    if(_this.details.length <= 0 || _this.details.lengtn == "" || _this.details.is_encrypted_key == false){
                        alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                        window.location.href = '/home';
                    }
                }
                 if (_this.details.is_deploy_internet == false && _this.details.is_inhouse != 1) {
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                } else if (_this.details.length === 0) {
                   
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                } else if (_this.details.event_status != 'confirm') {
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                }
                else if (_this.details.event_startdate < todayDate && _this.details.event_enddate < todayDate) {
                    
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                }
                else {
                    _this.blueprint_id = _this.details.blueprint_id;
                    _this.trainers = _this.details.trainers;
                    // $.each( _this.trainers , function(index, trainners) {
                    //     console.log("_this.trainers ",trainners.PersonID);
                    //      trainners.PersonID = btoa(trainners.PersonID);
                    //      console.log("_this.trainers ",trainners.PersonID);
                    // });

                   
                    _this.trainers_PersonID = _this.details.trainers_PersonID;

                    $.each( _this.trainers , function(index, trainners) {
                        console.log('indexs',_this.trainers_PersonID[index]);
                        trainners.trainers_PersonID = _this.trainers_PersonID[index];
                       // trainners.trainers_PersonID = this.trainers_PersonID;
                    });
                    _this.trainer_settings = _this.details.trainer_settings;

                   
                    _this.resolvers = data.resolvers;
                    _this.cart = window.cart;

                    if (_this.details.taken_seats >= _this.details.max_registration && _this.details.event_type == 'webinar') {
                        _this.do_not_show_cart_buttons = true;
                    }
                    if (_this.details.taken_seats >= _this.details.max_registration) {
                        _this.add_to_cart_str = _this.$tr('cms.book_seminar_waiting_list');
                        _this.details.seminar_status = 'waitinglist';
                    }
                    else {
                        if (_this.details.need_approval) {
                            _this.add_to_cart_str = _this.$tr('cms.request_for_seminar');
                            _this.details.seminar_status = 'waiting_for_approval';
                        }
                        else {
                            if (_this.details.allow_direct_registration == 1) {
                                _this.add_to_cart_str = _this.$tr('cms.btn_direct_registration');
                                _this.details.seminar_status = 'confirmed';
                            }
                            else {
                                if(window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true && typeof user.user.roles != 'undefined' && user.user.roles.indexOf("manager") != 1 && (user.user.roles.indexOf('portal_user') != -1 || user.user.roles.indexOf('participant') != -1) && _this.details.registered == true){
                                    _this.add_to_cart_str = _this.$tr('cms.btn_register_other_participant');
                                    _this.details.seminar_status = 'confirmed';

                                }else{
                                    _this.add_to_cart_str = _this.$tr('cms.book_seminar');
                                    _this.details.seminar_status = 'confirmed';
                                }
                            }
                        }
                    }
                    _this.registered = _this.details.registered;
                    _this.is_in_cart = cartManager.isInCart('planned-event', _this.details.id);
                    _this.loaded = true;
                    _this.user = $.isEmptyObject(window.user.user) ? false : window.user.user;
                    var SocialMetaPropertyUpdate = getHandler('EventDetails', 'SocialMetaPropertyUpdate');
                    SocialMetaPropertyUpdate(_this.details);
                    setTimeout(function() {
                        var openMapStreet = getHandler('EventDetails', 'openMapStreet');
                        openMapStreet(_this, _this.details);
                    }, 500);

                    $.each(_this.trainers, function(index, trainer) {
                        if (trainer.PersonID == _this.user.PersonID) {
                            _this.is_trainer = true;
                        }
                    });

                    if (user.user.roles.indexOf("manager") != -1 && user.user.OrganizationID) {
                        _this.registered= false;
                    }

                    if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                        if (user.user.roles.indexOf("portal_user") != -1) {
                            _this.is_portal_user= true;
                        }
                    }

                    if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                        if (user.user.roles.indexOf("participant") != -1) {
                            _this.is_participant= true;
                        }
                    }
                }

                window.dataLayer = window.dataLayer || [];
                window.dataLayer.push({
                  event: 'home',
                  click: {
                    'SeminarID': _this.details.id,
                    'SeminarTitle': _this.details.event_name,
                    'SeminarCategory': (_this.details.event_category && _this.details.event_category.event_category_name_de) || '',
                    'type': 'planned-event',
                  }
                });
                //console.log(_this.details);
                //_this.traffic = calcTraffic(_this.details.taken_seats,_this.details.max_registration);
                //unblockUI('.container');
            }).error(function() {
                unblockUI('.container');
            });
            Requests.push(_this.currentReqest);
        },
        shouldShowContent(content) {
            // Check if content is null, undefined, an empty string, or just an empty paragraph
            // return content && content.trim() !== '<p></p>' && content.trim() !== '<p> </p>';
            if (typeof content === 'string' && content.trim() !== '') {
                // Remove leading/trailing whitespace and empty <p> tags
                content = content.trim().replace(/^<p>\s*<\/p>$/gm, '');
                // Wrap remaining content with <p> tags if it doesn't start with a <p> tag
               
              } else {
                // If the content is falsy or not a string, return an empty string
                content = '';
              }
              console.log("content",content);
          
              return content;
        },
        addToCart: function addToCart() {
            var userRoles = window.user.user.roles;

            var _this = this;

            // if (typeof window.user.user != 'undefined' &&  userRoles.indexOf('manager') !== -1) {
                if (typeof window.user.user != 'undefined'  && typeof userRoles != 'undefined') {
                // console.log("details",_this.details);
                // console.log("details",_this.details);
                // return false;
                console.log("_this.details.seminar_status",);
                if(_this.details.seminar_status =="waitinglist" && userRoles.indexOf('manager') !== -1){
                    if(_this.details.max_registration == _this.details.taken_seats){
                        notify('error',  _this.$tr('cms.no_seats_available'));
                        return false;
                    }
                }
                
            }
            var _this = this;
            console.log('cart',this);
            var addToCart = getHandler('EventDetails', 'addToCart');
            addToCart(_this, []);
            
        },
        isInCart: function isInCart() {
            if (this.cart) {
                var a = 1;
            }
            return typeof window.cart[this.details.id] == 'undefined' ? false : true;
        },
        removeFromCart: function removeFromCart() {
            var _this = this;
            var lineId = cartManager.getLineId('planned-event', this.details.id);
            if (lineId) {
                blockUI('.container');
                $.post(getBaseUrl() + 'Checkout/removeFromCart', {
                    line_id: lineId
                }, function(data) {
                    if (data.type == 'success') {
                        _this.cart = window.cart;
                        window.cart = data.cart;
                        window.cartCount = cartManager.cartCount();
                        _this.cartCount = window.cartCount;
                        _this.is_in_cart = false;

                    } else {
                        notify(data.type, data.message);
                    }
                    unblockUI('.container');
                    //menu.cartCount = window.cartCount;
                });
            }
        },
        extractLoc: function extractLoc(opt, locationStr) {
            var res = '';
            if (typeof locationStr == 'string') {
                var locs = locationStr.split(' ### ');
                var loc = locs[0];
                loc = loc.split(' --- ');
                console.log("locationStr", locationStr);
                console.log("loc", loc);
                switch (opt) {
                    case "City":
                        res = typeof loc[4] == 'undefined' ? '' : loc[4];
                        break;
                    case "LocationName":
                        res = typeof loc[1] == 'undefined' ? '' : loc[1];
                        break;
                    case "Street":
                        res = typeof loc[2] == 'undefined' ? '' : loc[2];
                        break;
                    case "Zip":
                        res = typeof loc[3] == 'undefined' ? '' : loc[3];
                        break;
                    default:
                        res = '';
                }
            }
            return res;
        },
        setShow_addToCart_to_manager: function(user) {
            if (typeof user.roles != 'undefined' && user.roles.indexOf('manager') != -1 ) {
                // if (commonComponentMethods.FtmIsEnabled('bvb-feature') || commonComponentMethods.FtmIsEnabled('zeit-feature')) {
                    setTimeout(() => {
                        if(this.details.allow_direct_registration != 1){
                            this.show_addToCart_to_manager = true
                        }                    
                    }, 500);
                 //}
            }
        },
        closeTrainerDetailsModal: function(){
            $('#trainerDetailsModal').modal('hide');
        },
        openTrainerDetailsModal: function(trainer){
            var html = "";
            if(trainer.is_show_description_portal == 1 || trainer.is_show_description_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_description')+"</b></label>";
                html += "<p>"+trainer.description+"</p>";
            }
            if(trainer.is_show_personal_background_portal == 1 || trainer.is_show_personal_background_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_personal_background')+"</b></label>";
                html += "<p>"+trainer.personal_background+"</p>";
            }
            if(trainer.is_show_center_of_life_portal == 1 || trainer.is_show_center_of_life_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_center_of_life')+"</b></label>";
                html += "<p>"+trainer.center_of_life+"</p>";
            }
            if(trainer.is_show_qualification_portal == 1 || trainer.is_show_qualification_portal == "1"){
                html +="<label><b>"+this.$tr('cms.trainer_qualification')+"</b></label>";
                html += "<p>"+trainer.qualification+"</p>";
            }
            if(trainer.is_show_experience_portal == 1 || trainer.is_show_experience_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_experience')+"</b></label>";
                html += "<p>"+trainer.experience+"</p>";
            }
            if(trainer.is_show_awards_portal == 1 || trainer.is_show_awards_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_awards')+"</b></label>";
                html += "<p>"+trainer.awards+"</p>";
            }
            if(html == ""){
                html += "<p><div class='alert alert-info'>"+this.$tr('cms.no_info')+"</div>";
            }
            $("#trainerDetailsModal .modal-body").html(html);
            $('#trainerDetailsModal').modal('show');
        },

        openGuestPopup: function() {
            var _this = this;

            bootbox.dialog({
                message: _this.$tr('cms.bootbox_confirm_guest_checkout'),
                buttons: {
                    'register_now': {
                        label: _this.$tr('cms.register_now'),
                        className: 'btn-default pull-right',
                        callback: function(response) {
                            window.location.href = '/login?pageType=register';
                        }
                    },
                    'continue_as_guest': {
                        label: _this.$tr('cms.continue_as_guest'),
                        className: 'btn-primary pull-right',
                        callback: function(response) {
                            $("#guestBookingForm").modal({backdrop: 'static', keyboard: false}, "show");
                            $('#guestBookingForm').css('z-index', 99999);
                        }
                    }
                },
                callback: function(response) {
                    
                }
            });
        },

        submitGuestBooking: function(){
            var _this = this;

            isValid = true;

            if (this.FirstName == '') {
                this.FirstNameErrorClass = "has-error";
                isValid = false;
            }
            else {
                this.FirstNameErrorClass = "";
            }

            if (this.LastName == '') {
                this.LastNameErrorClass = "has-error";
                isValid = false;
            }
            else {
                this.LastNameErrorClass = "";
            }

            if (this.Email == '') {
                this.EmailErrorClass = "has-error";
                isValid = false;
            }
            else {
                var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                if (!regex.test(this.Email)) {
                    this.EmailErrorClass = "has-error";
                    isValid = false;
                }
                else {
                    this.EmailErrorClass = "";
                }
            }

            if (!this.policy) {
                if (this.FirstNameErrorClass == '' && this.LastNameErrorClass == '' && this.EmailErrorClass == '') {
                    notify('error', this.$tr('cms.please_accept_terms_and_conditions'));
                }
                this.PolicyErrorClass = "has-error";
                isValid = false;
            }
            else {
                this.PolicyErrorClass = "";
            }

            if (!isValid) {
                if (this.FirstNameErrorClass != '' || this.LastNameErrorClass != '' || this.EmailErrorClass != '') {
                    notify('error', this.$tr('cms.fillout_all_required_fields'));
                }
                return false;
            }

            _this.is_guest_booking = true;
            _this.addToCart();
        },

        closeGuestBookingForm() {
            var _this = this;
            this.$nextTick(() => {
                _this.policy = false;
                _this.PolicyErrorClass = '';
                _this.FirstName = '';
                _this.FirstNameErrorClass = '';
                _this.LastName = '';
                _this.LastNameErrorClass = '';
                _this.Email = '';
                _this.EmailErrorClass = '';
                _this.is_guest_booking = false;
                $("#guestBookingForm").modal('hide');
            });          
        },

        openApplicationForm: function(person_id,application_form_id,form_mandatory) {
            var _this = this;
            var answer_data = $('#id_'+application_form_id+'_'+person_id).attr('data-answer');
            if(answer_data == undefined){
                answer_data = [];
            }else{
                answer_data = $.parseJSON(answer_data);
            }

            $.post(getBaseUrl() + 'Checkout/getApplicationFormForFreeBooking', {
                application_form_id: application_form_id,person_id:person_id
            }, function (data) {

                $('#survey_form_id').html('');
                $('#view_form_modal').modal('show');
                $('#survey_form_id').html('');

                $('#survey_form_id').surveyBuilder({displayOption:'front',data:data.data.jdata});
                $('#view_form_modal .feedbacksubmitbutton').html(_this.$tr('cms.submit'));
                $('#view_form_modal .close_btn').html(_this.$tr('cms.close'));
                $('#view_form_modal #allownumericwithdecimal').attr("placeholder", _this.$tr('cms.add_number'));
                $('#view_form_modal .select_any_one').html(_this.$tr('cms.select_any_one'));
                if(data.data.header_image != '' && data.data.header_image != null){
                    $('#surveyTitle').after('<div class="tqdetails img_div"><img src="'+data.data.header_image+'">'+data.data.headerContent+'</div>');
                }else{
                    $('#surveyTitle').after('<div class="tqdetails img_div">'+data.data.headerContent+'</div>');
                }
                if(data.data.footer_image != '' && data.data.footer_image != null){
                    $('#questionsContainer').after('<div class="tfooter img_div"><img src="'+data.data.footer_image+'">'+data.data.footerContent+'</div>');
                }else{
                     $('#questionsContainer').after('<div class="tfooter img_div">'+data.data.footerContent+'</div>');
                }

                $('#surveyTitle p').remove('');
                $('#survey_form_id li').css('list-style', 'none');

                let question = data.data.jdata.questions;
                let answer = answer_data;
                var input_string = '';

                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let qtype = question[ii].type;
                    let qChecked = question[ii].multipleChk;

                    if(qtype == "file_upload" && qChecked == 'checked')
                    {
                        $('#'+qid).find('.file_upload').attr('multiple','multiple');
                    }
                }
                
                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let qtype = question[ii].type;
                    let qChecked = question[ii].multipleChk;
                    let qmandatory = question[ii].mandatory;

                    if(qtype == "file_upload" && qChecked == 'checked')
                    {
                        $('#'+qid).find('.file_upload').attr('multiple','multiple');
                    }

                    if(qtype == "file_upload" && answer[qid] != '' && typeof answer[qid] != 'undefined')
                    {
                        let image_list = answer[qid];
                        answer[qid] = '';

                        if (typeof image_list === "string") {

                            let image_list_arr = image_list.split(',');
                            let image_html = '';

                            for(var kk=0; kk < image_list_arr.length; kk++)
                            {   

                                var image_ext = image_list_arr[kk].split('.');
                                if(image_ext[1] == 'jpg' || image_ext[1] == 'png' || image_ext[1] == 'jpeg' || image_ext[1] == 'gif')
                                {
                                    var tenant_name = window.user.tenant_settings.tenant_name;
                                    var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                    var src =  simplyOrgUrl+'app/tenancy/tenants/'+tenant_name+'/upload_form_doc/'+image_list_arr[kk];

                                }else{
                                    var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                    var src = simplyOrgUrl+'images/file-icon.png';
                                }
                                image_html += '<div class="img_upload_div" data-name="'+image_list_arr[kk]+'">';
                                image_html += '<img height="150px" width="150px" src="'+src+'" /><br/><i style="cursor:pointer" class="fa fa-trash img_delete" id="img_'+qid+'" data-name="'+image_list_arr[kk]+'"></i>';
                                image_html += '</div>';
                            }
                            $(".file_upload_class_"+qid).append(""+image_html+"");
                            input_string += "<input type='hidden' id='input_"+qid+"' name='input_"+qid+"' value='"+image_list+"'>";
                        }
                    }
                }
                
                SBManager.fillValues(answer_data);

                $('.file_extention, .multiple_file, .file_action, #start_value, #end_value').css('display','none');

                $( '#questionsContainer > li' ).each(function() {
                    var li_id = $(this).attr('id');

                    $('#'+li_id).find('.tooltipclass').hide();
                    $('#'+li_id).find('.questionclass').css('width','100%');
                    $('input[name=file_upload]').css('width','100%');
                    var tooltip_info = $('#'+li_id).find('.tooltipclass .editable').html();

                    if($('#'+li_id).attr('data-ismandatory') == "checked"){
                        $('#'+li_id).find('.questionclass .editable').prepend('<label class="required-field" style="color:red">* </label>');
                    }

                    $('#'+li_id).find('.answerDiv .form-md-line-input').css('margin-right','180px');

                    if(tooltip_info != '' && tooltip_info != 'undefined' && $('#'+li_id).find('.questionclass .tool_tip').length == 0){
                        $('#'+li_id).find('.questionclass .editable').append('<i class="fa fa-info-circle tool_tip" aria-hidden="true" style="cursor:pointer" title="'+tooltip_info+'"></i>');
                    }

                    if($('#'+li_id).hasClass('optionalClass')){
                        $('#'+li_id).find('.optionTitle span').html('');
                        var input_val = $('#'+li_id).find('input').val();
                        if(input_val == ''){
                            $('#'+li_id).css('display','none');
                        }

                        $('#'+li_id).find('.questionIndex').remove();
                    }

                    var start_value = $('#'+li_id+' #start_value').val();
                    var end_value = $('#'+li_id+' #end_value').val();
                    var range_value = $('#'+li_id+' #slider_value').val();

                    if(start_value != '' && end_value != ''){
                        $('#'+li_id+' #myRange').attr('min',start_value);
                        $('#'+li_id+' #myRange').attr('max',end_value);
                        $('#'+li_id+' .slider_min').html(start_value);
                        $('#'+li_id+' .slider_max').html(end_value);
                        $('#slider_value').attr('min',start_value);
                        $('#slider_value').attr('max',end_value);
                    }
                    $( '#'+li_id+' #myRange').animate({ value: range_value }, 1000);

                });

                $('#survey_form_id').find('form .feedbacksubmitbutton').parent('div').css('visibility','visible');
                $('#survey_form_id').find('form').attr('method','post');
                $('#survey_form_id').find('form').attr('enctype','multipart/form-data');
                $('#survey_form_id form').append('<input name="application_module" id="application_module" value="free_booking" type="hidden">');
                $('#survey_form_id form').append('<input name="person_id" id="person_id" value="'+person_id+'" type="hidden">');
                $('#survey_form_id form').append('<input name="application_form_id" id="application_form_id" value="'+application_form_id+'" type="hidden">');
                $('#survey_form_id form').append(input_string);
                var userRoles = window.user.user.roles;
                if (userRoles.indexOf('manager') != -1 || form_mandatory == 0) {
                    $('#survey_form_id form').find('.submit_div').append('<button type="button" class="btn btn-flat" data-dismiss="modal">'+_this.$tr('cms.skip_register')+'</button>');
                }

                
                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let is_child = (question[ii].copy_id == '') ? 0 : 1;

                    if(is_child === 1)
                    {
                        let is_child_answered = 0;

                        if(answer[qid] !== undefined && answer[qid] != '')
                        {
                            is_child_answered = 1;
                        }

                        if(is_child_answered == 0)
                        {
                            $('#'+qid).hide();
                        }
                    }
                }

                $( ".select_date" ).datepicker({
                    autoclose: true,
                    orientation: "left",
                    format: window.app_date_format_js,
                    language: app_language
                });

                $(".select_time_date").datetimepicker({
                    format: window.app_date_format_js+" hh:ii",
                    orientation: "left",
                    autoclose: true,
                    language: app_language
                });

                setTimeout(function(){
                    $("#view_form_modal").scroll(function () {
                        $( ".select_date" ).datepicker('hide');
                        $( ".select_date" ).blur(); 
                        $( ".select_time_date" ).datetimepicker('hide');
                        $( ".select_time_date" ).blur();            
                    });
                },2000);

            });
            /*------------------------------------------------------*/
        },

        openRegistrationTypeModal: function openRegistrationTypeModal() {
            $('#registration_type_modal').modal('show');
        },

        closeRegistrationTypeModal: function openRegistrationTypeModal() {
            $('#registration_type_modal').modal('hide');
        }

    },
    watch: {
        cartCount: function cartCount() {
            window.menu.cartCount = window.cartCount;
        },
        FirstName: function(newVal, oldVal) {
            if (newVal != '') {
                this.FirstNameErrorClass = '';
            }
        },
        LastName: function(newVal, oldVal) {
            if (newVal != '') {
                this.LastNameErrorClass = '';
            }
        },
        Email: function(newVal, oldVal) {
            if (newVal != '') {
                this.EmailErrorClass = '';
            }
        },
    }
};

baseComponents.CourseDetails = {
    name: 'CourseDetails',
    template: '#CourseDetailsTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: appData,
            details: false,
            resolvers: false,
            currentReqest: false,
            event_id: getSearchParams('event_id'),
            loaded: false,
            course_file: '',
            img_alt:''

        };
    },
    mounted: function mounted() {
        console.log("hello");
        this.load();
    },
    methods: {

        load: function load() {
            var course_id = getSearchParams('course_id');
            var params = {
                id: course_id,
                is_active: 1
            };
            if (this.app_loaded == false) {
                var _this = this;
                setTimeout(function() {
                    _this.load();
                }, 100);
                return false;
            }
            if (typeof user != 'undefined' && typeof user.user != 'undefined') {
                params.PersonID = user.user.PersonID;
            }

            params = JSON.stringify(params);
            var _this = this;
            blockUI();
            console.log("adasdas");
            this.currentReqest = $.get(getBaseUrl() + 'ELearning/details&model=e-learning&params=' + params, function(data) {
                console.log(data);
                if(window.user?.seo_settings?.seo_enable_seminar == '1'){
                    if(typeof data.data.meta_description != 'undefined' && data.data.meta_description != '' && data.data.meta_description != null){
                      document.querySelector('meta[name="description"]').setAttribute("content", data.data.meta_description);
                    }
                    if(typeof data.data.meta_keywords != 'undefined' && data.data.meta_keywords != '' && data.data.meta_keywords != null){
                      document.querySelector('meta[name="keywords"]').setAttribute("content", data.data.meta_keywords);
                    }
                    if(typeof data.data.meta_title != 'undefined' && data.data.meta_title != '' && data.data.meta_title != null){
                      document.title = data.data.meta_title;
                      _this.img_alt = data.data.meta_title;
                    }else{
                        document.title = data.data.title;
                    }
                    if(typeof data.data.image_alt_tag != 'undefined' && data.data.image_alt_tag != '' && data.data.image_alt_tag != null){
                      _this.img_alt = data.data.image_alt_tag;
                    }
                }
                _this.details = data.data;
                _this.resolvers = data.resolvers;
                _this.loaded = true;
                _this.app_loaded = true;
                _this.course_file = data.file_path;
                unblockUI('.container');
            }).error(function() {
                unblockUI('.container');
            });
            Requests.push(_this.currentReqest);
        }

    },
    watch: {}
};


baseComponents.ElearningDetails = {
    name: 'ElearningDetails',
    template: '#ElearningDetailsTemplate',
    props: ['app_loaded'],
    data: function data() {
        var isGuestCheckout = false;
        if (guestCheckoutSettings.guest_checkout_toggle == 1) {
            isGuestCheckout = true;
        }

        return {
            appData: appData,
            trainers: [],
            details: false,
            resolvers: false,
            currentReqest: false,
            id: getSearchParams('id'),
            add_to_cart_str: this.$tr('cms.book_e_learning'),
            loaded: false,
            course_file: '',
            do_not_show_cart_buttons: false,
            registered: false,
            is_in_cart: false,
            show_other_schedules: false,
            playing: false,
            user: false,
            img_alt:'',
            FirstName: '',
            FirstNameErrorClass: '',
            LastName: '',
            LastNameErrorClass: '',
            Email: '',
            EmailErrorClass: '',
            policy: false,
            PolicyErrorClass: '',
            company_name:'',
            agb_link_tag: '',
            is_guest_booking: false,
            isGuestCheckout: isGuestCheckout,
            is_portal_user:false,
            is_participant:false,
        };
    },
    mounted: function mounted() {
        if (typeof window.user.settings != 'undefined') {
            if (typeof window.user.settings.agb_link != 'undefined' && window.user.settings.agb_link != '') {
                this.agb_link_tag = window.user.settings.agb_link;
            }
            if (typeof window.user.settings.company_name != 'undefined' && window.user.settings.company_name != '') {
                this.company_name = window.user.settings.company_name;
            }
        }
        this.load();
        var _this = this;
        var urlParams = new URLSearchParams(window.location.href);
        var add_to_cart = urlParams.get('add_to_cart');  
        if(urlParams.get('widget_url') != "undefined"){
            var widget_url = urlParams.get('widget_url');
        }
        if(urlParams.get('widgetUrl') != "undefined"){
            var widget_url = urlParams.get('widgetUrl');
        }  

        var lang = urlParams.get('lang');     
        var addCartMessage = lang == 'de' ? 'Ihre Buchung wird bearbeitet, bitte warten Sie.' : 'Your booking is under process, please wait.';
        if(add_to_cart != null && add_to_cart == 1){
            $("body").css("height", "100% !important");
            // var overlay = jQuery('<div class="overlay" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 99999;text-align: center; background: #999;display: table;"><p style="display: table-cell;vertical-align:middle;">'+ this.$tr('cms.add_to_cart_waiting') +'</p></div>');
            var overlay = jQuery('<div class="overlay" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 99999;text-align: center; background: #999;display: table;"><p style="display: table-cell;vertical-align:middle;">'+ addCartMessage +'</p></div>');
            overlay.appendTo(document.body);
            blockUI();           
            setTimeout(() => {
                _this.addToCart();
                unblockUI();
                // window.location.href = "/cart";
                var baseUrlRedirect = "Base/changeLang&redirect=/cart";
                if(typeof lang != 'undefined' && lang != null){
                    baseUrlRedirect += "?lang="+lang;
                }
                if(typeof widget_url != 'undefined' && widget_url != null){
                    localStorage.setItem("widget_url", widget_url);
                    baseUrlRedirect += '&widget_url='+ widget_url
                }

                var baseUrlRedirect = "Base/changeLang&redirect=/cart";

                if(typeof lang != 'undefined' && lang != null){
                    baseUrlRedirect += "?lang="+lang;
                }

                if(typeof lang != 'undefined' && lang != null &&typeof widget_url != 'undefined' && widget_url != null){
                    baseUrlRedirect += '&widget_url='+ widget_url
                }else if(typeof widget_url != 'undefined' && widget_url != null){
                    baseUrlRedirect += '?widget_url='+ widget_url
                }
                
                window.location.href = getBaseUrl() + baseUrlRedirect;
            }, 2000);             
        }else{
            localStorage.removeItem("widget_url", widget_url);
        }
    },
    methods: {
        load: function load() {
            var course_id = getSearchParams('course_id');
            var params = {
                id: course_id,
                is_active: 1
            };
            if (this.app_loaded == false) {
                var _this = this;
                setTimeout(function() {
                    _this.load();
                }, 100);
                return false;
            }
            if (typeof user != 'undefined' && typeof user.user != 'undefined') {
                params.PersonID = user.user.PersonID;
            }

            params = JSON.stringify(params);
            var _this = this;
            blockUI();
            console.log("adasdas");
            this.currentReqest = $.get(getBaseUrl() + 'ELearning/details&model=e-learning&params=' + params, function(data) {
                if(window.user?.seo_settings?.seo_enable_seminar == '1'){
                    if(typeof data.data.meta_description != 'undefined' && data.data.meta_description != '' && data.data.meta_description != null){
                      document.querySelector('meta[name="description"]').setAttribute("content", data.data.meta_description);
                    }
                    if(typeof data.data.meta_keywords != 'undefined' && data.data.meta_keywords != '' && data.data.meta_keywords != null){
                      document.querySelector('meta[name="keywords"]').setAttribute("content", data.data.meta_keywords);
                    }
                    if(typeof data.data.meta_title != 'undefined' && data.data.meta_title != '' && data.data.meta_title != null){
                      document.title = data.data.meta_title;
                      _this.img_alt = data.data.meta_title;
                    }else{
                        document.title = data.data.title;
                    }
                    if(typeof data.data.image_alt_tag != 'undefined' && data.data.image_alt_tag != '' && data.data.image_alt_tag != null){
                      _this.img_alt = data.data.image_alt_tag;
                    }
                }
                console.log(data);
                _this.details = data.data;
                _this.resolvers = data.resolvers;
                _this.trainers = _this.details.trainers;

                if (_this.details.allow_direct_registration == 1) {
                    _this.add_to_cart_str = _this.$tr('cms.btn_direct_registration');
                    _this.details.seminar_status = 'confirmed';
                }
                else {
                    if(typeof user.user.roles != 'undefined' && (user.user.roles.indexOf('portal_user') != -1 || user.user.roles.indexOf('participant') != -1) && _this.details.registered == true){
                        if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                            _this.add_to_cart_str = _this.$tr('cms.btn_register_other_participant');
                            _this.details.seminar_status = 'confirmed';
                        }
                    }
                }

                if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                    if (user.user.roles.indexOf("portal_user") != -1) {
                        _this.is_portal_user= true;
                    }
                }

                if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                    if (user.user.roles.indexOf("participant") != -1) {
                        _this.is_participant= true;
                    }
                }


                if(_this.details.is_active == 0)
                {
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                }

                if(typeof window.user.user.roles != 'undefined' && user.user.roles.indexOf("manager") !== -1)
                {
                        _this.registered= false;
                }
                else{
                    _this.registered = _this.details.registered;
                }  
                
                _this.loaded = true;
                _this.app_loaded = true;
                _this.course_file = data.file_path;
                _this.user = $.isEmptyObject(window.user.user) ? false : window.user.user;
                _this.is_in_cart = cartManager.isInCart('e-learning', _this.details.id);
                
                _this.$nextTick(function () {
                    $('[data-toggle="tooltip"]').tooltip()
                });
                unblockUI('.container');

                window.dataLayer = window.dataLayer || [];
                window.dataLayer.push({
                  event: 'home',
                  click: {
                    'SeminarID': _this.details.id,
                    'SeminarTitle': _this.details.title,
                    'SeminarCategory': _this.details.event_category.event_category_name_de,
                    'type': 'e-learning',
                  }
                });
            });
            unblockUI('.container');
            Requests.push(_this.currentReqest);
        },
        addToCart: function() {
            var _this = this;
            if (window.toggles && typeof window.toggles['somfy-feature'] != 'undefined' && window.toggles['somfy-feature'].enabled == true) {
                if (_this.user && typeof _this.user.PersonID != 'undefined') {} else {
                    $.get(getBaseUrl() + 'Base/getProfile', function(data) {
                        if (typeof data.PersonID == 'undefined') {
                            setRedirectAndLoadLogin()
                        }
                        if (typeof window.user != 'undefined' && typeof window.user.user != 'undefined') {
                            _this.user = window.user.user;
                        }
                    }).error(setRedirectAndLoadLogin);
                    return;
                }
            }

            blockUI('.container');

            // Direct Registration
            if (_this.details.allow_direct_registration == 1) {
                /*
                    Check if login is there
                */
                var params = {
                    id: this.token
                };

                if (_this.is_guest_booking) {
                    params.FirstName = _this.FirstName;
                    params.LastName = _this.LastName;
                    params.Email = _this.Email;
                    params.policy = _this.policy;
                    params.is_guest_booking = _this.is_guest_booking;
                }
                else {
                    if (typeof window.user.user.PersonID == "undefined") {
                        // setRedirectAndLoadLogin();
                        setTimeout(function () {
                            let returnBack = 'elearning-details?course_id=' + _this.details.id;
                            window.location.href = "/login?redirect=" + returnBack;
                        }, 1000)
                        return false;
                    }
                    else {
                        params.PersonID = window.user.user.PersonID;
                        params.drPersonIds = (typeof appData.attendee_person_ids != 'undefined' && appData.attendee_person_ids.length > 0) ? appData.attendee_person_ids.join(',') : '';
                    }
                }
                
                if (typeof window.user.user.roles != 'undefined' && window.user.user.roles.indexOf('manager') != -1 && window.user.user.OrganizationID) {
                    if (typeof appData.attendee_person_ids == 'undefined' || appData.attendee_person_ids.length <= 0) {
                        unblockUI('.container');
                        notify('error', _this.$tr('cms.please_select_participants'));
                        return false;
                    }
                }

                params.portal_registration = 1;
                params.model = 'e-learning';
                params.model_id = _this.details.id; 
                params.seminar_status = _this.details.seminar_status;
                params.status = _this.details.seminar_status;
                params.send_mail_to_participant = 1;
                params.lang = app.lang;
                // params.send_email = 1;
                params = JSON.stringify(params);

                this.currentReqest = $.post(getBaseUrl() + 'Base/search&model=attendee&method=register-person&params=' + params, function (data) {
                    unblockUI('.container');
                    if (data.type == 'success') {
                        // _this.registered = true;
                        if (_this.is_guest_booking) {
                            _this.closeGuestBookingForm();
                        }
                        else {
                            if (typeof user.user.roles != 'undefined' && user.user.roles.indexOf("manager") != -1 && user.user.OrganizationID) {}
                            else {
                                _this.registered = true;
                            }

                            $("#drAddedParticipantsDiv").load(window.location + " #drAddedParticipantsDiv");
                            appData.attendee_person_ids = '';

                            if (_this.$refs.DirectRegistrationParticipants) {
                                _this.$refs.DirectRegistrationParticipants.attendee_person_list = [];
                            }
                        }
                    }
                    notify(data.type, data.message);
                    return false;
                }).error(function () {
                    unblockUI('.container');
                });
                Requests.push(_this.currentReqest);
                return false;
            }

            $.post(getBaseUrl() + 'Base/add_to_cart', {
                cartItem: {
                    id: _this.details.id,
                    item: _this.details,
                    quantity: 1,
                    model: 'e-learning',
                    seminar_status: 'confirmed',
                    params: []
                }
            }, function(data) {
                window.cart = data.cart;
                _this.cart = window.cart;
                window.cartCount = cartManager.cartCount(); // gives wrong count => Object.size(window.cart);
                _this.cartCount = window.cartCount;
                menu.cartCount = window.cartCount;
                _this.is_in_cart = true;
                unblockUI('.container');

                window.dataLayer = window.dataLayer || [];
                window.dataLayer.push({
                  event: 'details',
                  addToCart: {
                    'SeminarID': _this.details.id,
                    'SeminarTitle': _this.details.title,
                    'SeminarPrice': _this.details.price,
                    'SeminarCategory': _this.details.event_category.event_category_name_de,
                    'type': 'e-learning',
                    'CartID': data.cart.id,
                  }
                });
            });
        },
        removeFromCart: function() {
            var _this = this;
            var lineId = cartManager.getLineId('e-learning', this.details.id);
            if (lineId) {
                blockUI('.container');
                $.post(getBaseUrl() + 'Checkout/removeFromCart', {
                    line_id: lineId
                }, function(data) {
                    if (data.type == 'success') {
                        _this.cart = window.cart;
                        window.cart = data.cart;
                        window.cartCount = cartManager.cartCount();
                        menu.cartCount = window.cartCount;
                        _this.cartCount = window.cartCount;
                        _this.is_in_cart = false;

                    } else {
                        notify(data.type, data.message);
                    }
                    unblockUI('.container');
                    //menu.cartCount = window.cartCount;
                });
            }
        },
        playVideo: function() {
            this.playing = true;
            $('#video_player').modal('show');
        },

        closeTrainerDetailsModal: function(){
            $('#trainerDetailsModal').modal('hide');
        },
        openTrainerDetailsModal: function(trainer){
            var html = "";
            if(trainer.is_show_description_portal == 1 || trainer.is_show_description_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_description')+"</b></label>";
                html += "<p>"+trainer.description+"</p>";
            }
            if(trainer.is_show_personal_background_portal == 1 || trainer.is_show_personal_background_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_personal_background')+"</b></label>";
                html += "<p>"+trainer.personal_background+"</p>";
            }
            if(trainer.is_show_center_of_life_portal == 1 || trainer.is_show_center_of_life_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_center_of_life')+"</b></label>";
                html += "<p>"+trainer.center_of_life+"</p>";
            }
            if(trainer.is_show_qualification_portal == 1 || trainer.is_show_qualification_portal == "1"){
                html +="<label><b>"+this.$tr('cms.trainer_qualification')+"</b></label>";
                html += "<p>"+trainer.qualification+"</p>";
            }
            if(trainer.is_show_experience_portal == 1 || trainer.is_show_experience_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_experience')+"</b></label>";
                html += "<p>"+trainer.experience+"</p>";
            }
            if(trainer.is_show_awards_portal == 1 || trainer.is_show_awards_portal == "1"){
                html += "<label><b>"+this.$tr('cms.trainer_awards')+"</b></label>";
                html += "<p>"+trainer.awards+"</p>";
            }
            if(html == ""){
                html += "<p><div class='alert alert-info'>"+this.$tr('cms.no_info')+"</div>";
            }
            $("#trainerDetailsModal .modal-body").html(html);
            $('#trainerDetailsModal').modal('show');
        },

        openGuestPopup: function() {
            var _this = this;

            bootbox.dialog({
                message: _this.$tr('cms.bootbox_confirm_guest_checkout'),
                buttons: {
                    'register_now': {
                        label: _this.$tr('cms.register_now'),
                        className: 'btn-default pull-right',
                        callback: function(response) {
                            window.location.href = '/login?pageType=register';
                        }
                    },
                    'continue_as_guest': {
                        label: _this.$tr('cms.continue_as_guest'),
                        className: 'btn-primary pull-right',
                        callback: function(response) {
                            $("#guestBookingForm").modal({backdrop: 'static', keyboard: false}, "show");
                            $('#guestBookingForm').css('z-index', 99999);
                        }
                    }
                },
                callback: function(response) {
                    
                }
            });
        },

        submitGuestBooking: function(){
            var _this = this;

            isValid = true;

            if (this.FirstName == '') {
                this.FirstNameErrorClass = "has-error";
                isValid = false;
            }
            else {
                this.FirstNameErrorClass = "";
            }

            if (this.LastName == '') {
                this.LastNameErrorClass = "has-error";
                isValid = false;
            }
            else {
                this.LastNameErrorClass = "";
            }

            if (this.Email == '') {
                this.EmailErrorClass = "has-error";
                isValid = false;
            }
            else {
                var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                if (!regex.test(this.Email)) {
                    this.EmailErrorClass = "has-error";
                    isValid = false;
                }
                else {
                    this.EmailErrorClass = "";
                }
            }

            if (!this.policy) {
                if (this.FirstNameErrorClass == '' && this.LastNameErrorClass == '' && this.EmailErrorClass == '') {
                    notify('error', this.$tr('cms.please_accept_terms_and_conditions'));
                }
                this.PolicyErrorClass = "has-error";
                isValid = false;
            }
            else {
                this.PolicyErrorClass = "";
            }

            if (!isValid) {
                if (this.FirstNameErrorClass != '' || this.LastNameErrorClass != '' || this.EmailErrorClass != '') {
                    notify('error', this.$tr('cms.fillout_all_required_fields'));
                }
                return false;
            }

            _this.is_guest_booking = true;
            _this.addToCart();
        },

        closeGuestBookingForm() {
            var _this = this;
            this.$nextTick(() => {
                _this.policy = false;
                _this.PolicyErrorClass = '';
                _this.FirstName = '';
                _this.FirstNameErrorClass = '';
                _this.LastName = '';
                _this.LastNameErrorClass = '';
                _this.Email = '';
                _this.EmailErrorClass = '';
                _this.is_guest_booking = false;
                $("#guestBookingForm").modal('hide');
            });          
        },

    },
    watch: {
        FirstName: function(newVal, oldVal) {
            if (newVal != '') {
                this.FirstNameErrorClass = '';
            }
        },
        LastName: function(newVal, oldVal) {
            if (newVal != '') {
                this.LastNameErrorClass = '';
            }
        },
        Email: function(newVal, oldVal) {
            if (newVal != '') {
                this.EmailErrorClass = '';
            }
        },
    }
};


baseComponents.Profile = {
    name: 'Profile',
    template: '#ProfileTemplate',
    mounted: function mounted() {
        this.load();

        app.addChildVue(modalTrainerCalendar);
        app.addChildVue(nestedModalTrainerCalendar);

        window.setTimeout(function () {
            window.modalTrainerCalendarVue = app.$refs.rootChilds[1];
            window.nestedModalTrainerCalendarVue = app.$refs.rootChilds[2];

        }, 100);
    },
    props: ['pageData'],
    data: function data() {

        return {
            appData: appData,
            loaded: false,
            profile: {},
            myCoursesFilters: {
                person_id: '',
                pr_type: "my_courses"
            },
            documentFilters: {
                person_id: '',
                pr_type: "my_documents"
            },
            trainerReqFilters: {
                person_id: '',
                with: "RequestedTrainersDates,token,TrainerRequest",
                status: 'new'
            },
            checklistFilters: {
                person_id: ''
            },
            currentTab: false,
            cTab: false,
            toggles: window.toggles,
            user: false
        };
    },
    methods: {
        load: function load() {
            var _this = this;
            var message = getSearchParams('message');
            if (message) {
                notify('info', decodeURI(message));
            }
            blockUI();
            setTimeout(() => {
                $.get(getBaseUrl() + 'Base/getProfile', function(data) {
                    if (typeof data.PersonID == 'undefined') {
                        setRedirectAndLoadLogin()
                    }
                    _this.profile = data;
                    _this.myCoursesFilters.person_id = _this.profile.PersonID;
                    _this.documentFilters.person_id = _this.profile.PersonID;
                    if (_this.profile.person_address.length == 0) {
                        _this.profile.person_address = [{
                            address: {}
                        }];
                    }
                    _this.loaded = true;
                    unblockUI();
                    var tab = _this.currentTab;
    
                    _this.$nextTick(function() {
                        var cTab = getSearchParams('tab');
                        var firtTab = $('#home_tab').find('li a').attr('id')
                        cTab = typeof cTab == 'undefined' ? firtTab : cTab;
                        _this.cTab = cTab;
    
                        _this.changeTab(_this.cTab);
                    });
                    if (typeof window.user != 'undefined' && typeof window.user.user != 'undefined') {
                        _this.user = window.user.user;
                    }
    
                    //alert('#'+_this.currentTab+'-tab');
                    //$('#'+_this.currentTab+'-tab').trigger('click');
                }).error(setRedirectAndLoadLogin);
            }, 2000);
        },
        changeTab: function changeTab(tab) {
            this.resetTab();
            this.currentTab = tab;
            $('#' + tab).click();
        },
        resetTab: resetTab

    },
    watch: {
        currentTab: function currentTab() {
            
        }
    }
};

baseComponents.MySkills = {
    name: 'MySkills',
    template: '#MySkillsTemplate',
    mounted: function mounted() {
        this.load();
    },
    data: function data() {
        return {
            appData: appData,
            loaded: false,
            profile: {},
            myCoursesFilters: {
                person_id: '',
                pr_type: "my_courses"
            },
            documentFilters: {
                person_id: '',
                pr_type: "my_documents"
            },
            currentTab: 'professional_experience-tab'

        };
    },
    methods: {
        load: function load() {
            var _this = this;
            blockUI();
            $.get(getBaseUrl() + 'Base/getProfile', function(data) {
                if (typeof data.PersonID == 'undefined') {
                    setRedirectAndLoadLogin()
                }
                _this.profile = data;
                _this.myCoursesFilters.person_id = _this.profile.PersonID;
                _this.documentFilters.person_id = _this.profile.PersonID;
                if (_this.profile.person_address.length == 0) {
                    _this.profile.person_address = [{
                        address: {}
                    }];
                }
                _this.loaded = true;
                unblockUI();
            }).error(setRedirectAndLoadLogin);
        },
        resetTab: resetTab

    }
};

baseComponents.MySeminars = {
    name: 'MySeminars',
    template: '#MySeminarsTemplate',
    props:['app_loaded'],
    data: function data() {
        return {
            appData: appData,
            loaded: false,
             model: 'planned-qual-event',
             method: 'search',
            profile: false,
            user: false,
        };
    },
    mounted: function(){
        this.load();
    },
    methods: {
        load: function load() {
            var _this = this;
            var message = getSearchParams('message');
            if (message) {
                notify('info', decodeURI(message));
            }
            blockUI();
            $.get(getBaseUrl() + 'Base/getProfile', function (data) {
                
                if(data.PersonID){
                    _this.profile = data;
                   
                    if (_this.profile.person_address.length == 0) {
                        _this.profile.person_address = [{
                            address: {}
                        }];
                    }
                    _this.loaded = true;
                    unblockUI();
                    if (typeof window.user != 'undefined' && typeof window.user.user != 'undefined') {
                        _this.user = window.user.user;
                    }
                } else {
                    setRedirectAndLoadLogin();
                }
                //alert('#'+_this.currentTab+'-tab');
                //$('#'+_this.currentTab+'-tab').trigger('click');
            });
        }
    }
};

baseComponents.MyDocuments = {
    name: 'MyDocuments',
    template: '#MyDocumentsTemplate',
    props:['app_loaded'],
    data: function () {
        return {
            appData: appData,
            search_text: '',
            currentTab:false,
            completed: 0,
            loaded: false,
            filters:{},
            formatedDate:{},
            // urlModel: 'person-role-document',
            // urlMethod: 'search',
            currentReqest: false,
            resRecords: [],
            seminar_filter:true,
            general_filter:false,
            form: {
                fields: {
                    id: {
                        vue: "textBox",
                        name: "id",
                        initial_value: '',
                        type: 'hidden',
                    },
                    item_name: {
                        vue: "textBox",
                        name: "item_name",
                        initial_value: '',
                        label_key: 'cms.title',
                        required: true,
                    },
                    category_id: {
                        vue: "selectBox",
                        name: 'category_id',
                        modelName: 'checklist-category',
                        multiple: false,
                        placeholder: 'cms.category',
                        label_key: 'cms.category',
                        preLoad: true,
                    },
                    duedate_constrain: {
                        vue: "dueDateBox",
                        name: "duedate_constrain",
                        label_key: 'cms.due_date',
                        initial_value: '',
                        required: true,
                        offset_from_text: this.$tr('cms.of_parent_task_start_date'),
                    },
                    note: {
                        vue: "textAreaBox",
                        name: "note",
                        initial_value: '',
                        label_key: 'cms.note',
                    }
                }
            },
        }
    },
    created: function () {
        eventHub.$on('changeInFilter', this.changeInFilter);
        eventHub.$on('changeInPagination', this.changePage);
    },
    beforeDestroy: function () {
        eventHub.$off('changeInFilter', this.changeInFilter);
        eventHub.$off('changeInPagination', this.changePage);
    },
    mounted: function () {
        var _this = this;
        window.jqxhr_getuser.done(function () {
            console.log('personid', window.user.user.PersonID);
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            appData.filterVars['completed'] = 0;
            _this.load();
        });
        
    },
    watch: {
        completed: function () {
            appData.filterVars['completed'] = this.completed;
            this.changeInFilter();
        }
    },
    methods: {
        changeInFilter: function () {
            this.filters.page = 1;
            // this.load();
        },
        changePage: function (paginationVue) {
            this.filters.page = paginationVue.current_page;
            this.filters.limit = paginationVue.per_page;
            this.load();
        },
        downloadCertificate: function(certificateUrl){

            var url = certificateUrl;
        window.open(url);    
        },
        
        load: function () {
            if (typeof this.preLoaded != 'undefined') {
                this.results = this.preLoaded.data;
                this.loaded = true;
                return false;
            }

            var _this = this; 
            if (_this.busy) {
                return false;
            }
            if (_this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            _this.busy = true;
            _this.loaded = true;
            blockUI('.container');
            var otherParams = {
                'PersonID' : window.user.user.PersonID,
                'RoleID' : window.user.user.RoleID,
                'seminar_filter' : _this.seminar_filter,
                'general_filter' : _this.general_filter,
                'study' : 1
            }
            var params = simplyOrg.mergeObjs([
                otherParams,
                this.filters
            ]);
            blockUI();
            
            _this.currentReqest = $.post(getBaseUrl() + 'Base/search&model=document&method=getTrainerDocuments', {
                params: params
            }, function (data) {
                _this.resRecords = data.data;

                updatePagination(data);
                unblockUI('.container');
                _this.busy = false;

            });
            Requests.push(_this.currentReqest);
        },

        listview: function listview () {
            $(function () {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customdocumentdiv').show();
                        } 
                    }
                )
            });
            $(".document_list_view").show();
            $(".document_grid_view").hide();
            $("#documentslist-tab i").addClass('active');
            $("#documentsgrid-tab i").removeClass('active');
            
        },

        gridview: function gridview () {
            $(".document_list_view").hide();
            $(".document_grid_view").show();
            $("#documentsgrid-tab i").addClass('active');
            $("#documentslist-tab i").removeClass('active');
        },

        seminarDocuments: function seminarDocuments() {
            
                
            this.seminar_filter = true;
            this.general_filter = false;
            $(".seminar_documents_filter").addClass('active');
            $(".general_documents_filter").removeClass('active');
            $(".seminar-documents").show();
            $(".general-documents").hide();
            
            // appData.filterVars.seminar_filter = this.seminar_filter;
            // appData.filterVars.general_filter = this.general_filter;
            this.filters.page = 1;
            this.load();
        },

        general_documents: function general_documents() {
            this.general_filter = true;
            this.seminar_filter = false;
            $(".general_documents_filter").addClass('active');
            $(".seminar_documents_filter").removeClass('active');
            $(".seminar-documents").hide();
            $(".general-documents").show();
            
            // appData.filterVars.general_filter = this.general_filter;
            // appData.filterVars.seminar_filter = this.seminar_filter;
            this.filters.page = 1;
            this.load();
        },

        deleteDocument: function deleteDocument(id){

            var _this = this;
            bootbox.confirm({
                message: _this.$tr('cms.are_you_sure_you_want_to_delete_note'),
                buttons: {
                    'cancel': {
                        label: _this.$tr('cms.cancel'),
                        className: 'btn-default pull-right'
                    },
                    'confirm': {
                        label: _this.$tr('cms.ok'),
                        className: 'btn-primary pull-right'
                    }
                },
                callback: function(response) {
                    if (response) {
                            var params = {
                            'model':'document',
                            'model_id':id
                            };

                        $.get(getBaseUrl() + 'Base/deleteRecord',params, function(data) {
                        if(data){
                            var documentdeletemsg = _this.$tr('cms.document_deleted');
                        swal({
                            title: "Success",
                            text: documentdeletemsg,
                            icon: "success",
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                        _this.load();
                    }
                });

                    }

                }
            });
        },
        changeTab: function changeTab(tab) {
            this.resetTab();
            this.currentTab = tab;
            $('#' + tab).click();
        },
        resetTab: resetTab
    }
    
};

baseComponents.TrainerDocumentList = {
    name: 'TrainerDocumentList',
    template: '#TrainerDocumentListTemplate',
    props:['app_loaded'],
     data: function () {
                    return {
                        appData: appData,
                        search_text: '',
                        completed: 0,
                        loaded: false,
                        urlModel: 'person-role-document',
                        urlMethod: 'search',
                        currentReqest: false,
                        resRecords: [],
                        form: {
                            fields: {
                                id: {
                                    vue: "textBox",
                                    name: "id",
                                    initial_value: '',
                                    type: 'hidden',
                                },
                                item_name: {
                                    vue: "textBox",
                                    name: "item_name",
                                    initial_value: '',
                                    label_key: 'cms.title',
                                    required: true,
                                },
                                category_id: {
                                    vue: "selectBox",
                                    name: 'category_id',
                                    modelName: 'checklist-category',
                                    multiple: false,
                                    placeholder: 'cms.category',
                                    label_key: 'cms.category',
                                    preLoad: true,
                                },
                                duedate_constrain: {
                                    vue: "dueDateBox",
                                    name: "duedate_constrain",
                                    label_key: 'cms.due_date',
                                    initial_value: '',
                                    required: true,
                                    offset_from_text: this.$tr('cms.of_parent_task_start_date'),
                                },
                                note: {
                                    vue: "textAreaBox",
                                    name: "note",
                                    initial_value: '',
                                    label_key: 'cms.note',
                                }
                            }
                        },
                    }
                },
                mounted: function () {
                    var _this = this;
                    setTimeout(function () {
                        _this.listen_for_changes = true;
                    }, 2000);
                    appData.filterVars['completed'] = 0;
                    this.load();
                },
                watch: {
                    completed: function () {
                        appData.filterVars['completed'] = this.completed;
                        this.changeInFilter();
                    }
                },
                methods: {
                    changeInFilter: function () {
                        this.load();
                    },

                    load: function () {
                        if (typeof this.preLoaded != 'undefined') {
                            this.results = this.preLoaded.data;
                            this.loaded = true;
                            return false;
                        }

                        var _this = this;
                        if (_this.busy) {
                            return false;
                        }
                        if (_this.currentReqest != false) {
                            _this.currentReqest.abort();
                        }
                        _this.busy = true;
                        _this.loaded = true;
                        blockUI('.container');
                        var params = typeof this.filters == 'undefined' ? {} : JSON.parse(JSON.stringify(this.filters));
                        params = Object.assign(params, _this.appData.filterVars);
                        var params = JSON.stringify(params);
                        blockUI();

                         _this.currentReqest = $.post(getBaseUrl() + 'Base/trainerDocuments', {
                                params: params
                            }, function (data) {
                                _this.resRecords = data.data;

                                updatePagination(data);
                                unblockUI('.container');
                                _this.busy = false;

                                //window.sR = _this;
                                _this.reRender();

                            })
                        Requests.push(_this.currentReqest);
                    }
                }
};

// baseComponents.DocumentGrid = {
//     name: 'DocumentGrid',
//     template: '#DocumentGridTemplate',
//     props:['app_loaded'],
//      data: function () {
//                     return {
//                         appData: appData,
//                         search_text: '',
//                         completed: 0,
//                         loaded: false,
//                         urlModel: 'person-role-document',
//                         urlMethod: 'search',
//                         currentReqest: false,
//                         resRecords: [],
//                         form: {
//                             fields: {
//                                 id: {
//                                     vue: "textBox",
//                                     name: "id",
//                                     initial_value: '',
//                                     type: 'hidden',
//                                 },
//                                 item_name: {
//                                     vue: "textBox",
//                                     name: "item_name",
//                                     initial_value: '',
//                                     label_key: 'cms.title',
//                                     required: true,
//                                 },
//                                 category_id: {
//                                     vue: "selectBox",
//                                     name: 'category_id',
//                                     modelName: 'checklist-category',
//                                     multiple: false,
//                                     placeholder: 'cms.category',
//                                     label_key: 'cms.category',
//                                     preLoad: true,
//                                 },
//                                 duedate_constrain: {
//                                     vue: "dueDateBox",
//                                     name: "duedate_constrain",
//                                     label_key: 'cms.due_date',
//                                     initial_value: '',
//                                     required: true,
//                                     offset_from_text: this.$tr('cms.of_parent_task_start_date'),
//                                 },
//                                 note: {
//                                     vue: "textAreaBox",
//                                     name: "note",
//                                     initial_value: '',
//                                     label_key: 'cms.note',
//                                 }
//                             }
//                         },
//                     }
//                 },
//                 mounted: function () {
//                     var _this = this;
//                     setTimeout(function () {
//                         _this.listen_for_changes = true;
//                     }, 2000);
//                     appData.filterVars['completed'] = 0;
//                     this.load();
//                 },
//                 watch: {
//                     completed: function () {
//                         appData.filterVars['completed'] = this.completed;
//                         this.changeInFilter();
//                     }
//                 },
//                 methods: {
//                     changeInFilter: function () {
//                         this.load();
//                     },

//                     load: function () {
//                         if (typeof this.preLoaded != 'undefined') {
//                             this.results = this.preLoaded.data;
//                             this.loaded = true;
//                             return false;
//                         }

//                         var _this = this;
//                         if (_this.busy) {
//                             return false;
//                         }
//                         if (_this.currentReqest != false) {
//                             _this.currentReqest.abort();
//                         }
//                         _this.busy = true;
//                         _this.loaded = true;
//                         blockUI('.container');
//                         var params = typeof this.filters == 'undefined' ? {} : JSON.parse(JSON.stringify(this.filters));
//                         params = Object.assign(params, _this.appData.filterVars);
//                         var params = JSON.stringify(params);
//                         blockUI();

//                          _this.currentReqest = $.post(getBaseUrl() + 'Base/trainerDocuments', {
//                                 params: params
//                             }, function (data) {
//                                 _this.resRecords = data.data;

//                                 updatePagination(data);
//                                 unblockUI('.container');
//                                 _this.busy = false;

//                                 //window.sR = _this;
//                                 _this.reRender();

//                             })
//                         Requests.push(_this.currentReqest);
//                     }
//                 }
// };

baseComponents.ManageSeminar = {
    name: 'ManageSeminar',
    template: '#ManageSeminar',
    data:function data(){
        return {
            appData: appData,
            loaded: false,
            selected_date:"",
            document_selected_date: "",
            seminarNotes:[],
            seminarAllNotes:[],
            seminarAllDocuments:[],
            NoteID:"",
            DocumentID:"",
            AddedByTrainer:"",
            seminarData:[],
            attendeeNotes:[],
            totalStoredAttendance:0,
            totalSeminarSchedules:0,
            totalAttendanceRemaining:0,
            preselect: "1",
            documentFile:"",
            documentTitle: "",
            currentComponent: false,
            assigned_to: "students",
            person_ids: [],
        };
    },
    mounted: function mounted() {
        var _this = this;
        var queryStringparams = new URL(window.location.href).searchParams;
        this.seminarId = queryStringparams.get("seminarid");
        

        window.jqxhr_getuser.done(function () {
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            $('.radio_button').checkradios({
                radio:{
                    iconClass:'fa fa-check radio-button-green-checked'
                }
            });
            _this.load();
        });
        
    },
    
    methods:{
        load: function load(){
            $('#exampleModal').modal('show');
            var _this = this;
            if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            var params = {
                seminarId : getQueryStringVaribale("seminarid")
            }
            _this.currentReqest = $.post(getBaseUrl() + 'Base/getSeminar',params, function(data) {

                var personId = typeof window.user.user.PersonID != 'undefined' ? String(window.user.user.PersonID) : '';                
                console.log("inarray", $.inArray(personId, data.trainerIds));
                console.log("trainerIds", data.trainerIds); 
                console.log("data",data);          
                if(typeof data.trainerIds != 'undefined' && $.inArray(personId, data.trainerIds) < 0){                
                    alert(_this.$tr('cms.not_accessible_attendee_list_page_error_msg'));
                    window.location.href = '/my-seminars';
                }
                _this.loaded = true;
                _this.seminarData = data;
                _this.totalSeminarSchedules = data.seminar_schedules.length;
                $(data.seminar_schedules).each(function(key,value){
                    if(value.is_attended_date == true){
                        _this.totalStoredAttendance++;
                    }
                });
                _this.seminarAllNotes = data.seminar_notes;
                _this.totalAttendanceRemaining = _this.totalSeminarSchedules - _this.totalStoredAttendance;
            });
            Requests.push(_this.currentReqest);
        },
        
        loadShowAttendeeList: function () {
            window.location.href = '/attendee-list?seminarid=' + this.seminarId;
        },

        loadFeedBackList: function () {
            window.location.href = '/seminar-feedback-details?event_id=' + this.seminarId;
        },
        seminarNoteList: function seminarNoteList(){          
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/seminar-note-list?seminarid='+seminarId);
        },
        seminarDocumentList: function seminarDocumentList(){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/seminar-document-list?seminarid='+seminarId);
        },

        openConfirmAttendance: function ManageSeminar(){
            var _this = this;
            if(_this.seminarData.seminar_attendees.length == 0){
                notify("error",_this.$tr('cms.attendees_not_found'));
                return false;
            }
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/confirm-attendance?seminarid='+seminarId);
        },
         goToSavedAttendanceReview: function goToSavedAttendanceReview(date){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/saved-attendance-review?seminarid='+seminarId+'&date='+date);
        },
        initJqueryPlugins: function initJqueryPlugins(){
            $('.styled_radio_button').checkradios({
                radio:{
                    iconClass:'fa fa-check radio-button-green-checked'
                },
                checkbox:{
                    iconClass:'fa fa-check radio-button-green-checked'
                }
            });
        },
        
    }
};

baseComponents.SeminarNoteList = {
    name: 'SeminarNoteList',
    template: '#SeminarNoteListTemplate',
    data:function data(){
        return {
            appData: appData,
            loaded: false,
            seminarData:[],
            seminarLocation:"",
            selected_date:"",
            editedDetails:"",
            seminarNotes:[],
            editedseminarNotes:"",
            filters: {},
            seminarAllNotes:[],
            NoteID:"",
            AddedByTrainer:"",
            seminarData:[],
            preselect: "1",
            assigned_to: "students",
            agentsData:[],
            person_ids: [],
            new_json : [],
            selected_person_ids : 'selected',
        };
    },
     created: function () {
        eventHub.$on('changeInFilter', this.changeInFilter);
        eventHub.$on('changeInPagination', this.changePage);
        this.loadAgentContacts()
       
    },
    beforeDestroy: function () {
        eventHub.$off('changeInFilter', this.changeInFilter);
        eventHub.$off('changeInPagination', this.changePage);
        
    },
    mounted: function mounted() {
        var _this = this;
        window.jqxhr_getuser.done(function () {
            console.log('personid', window.user.user.PersonID);
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            appData.filterVars['completed'] = 0;
            _this.load();
        });

        setTimeout(function () {
        $('.styled_radio_button').checkradios({
                radio:{
                    iconClass:'fa fa-check radio-button-green-checked'
                },
                checkbox:{
                    iconClass:'fa fa-check radio-button-green-checked'
                }
            });
        }, 4000);

        setTimeout(function () {
        $(function () {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customnotediv').show();
                        }, 
                    }
                )
            });

            $('body')
            .on('mousedown', '.popover', function(e) {
                console.log("clicked inside popover")
                e.preventDefault()
            });

             $('[data-toggle="popover"]').on('shown.bs.popover', function (e) {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customnotediv').show();
                        } 
                    }
                )
            }) ;

           $('[data-toggle="popover"]').on('hide.bs.popover', function (e) {
                $('body').append($('#customnotediv')) ;
                $('#customnotediv').hide();
            }) ;
        }, 2000);
    },
    methods: {
        changeInFilter: function () {
            this.filters.page = 1;
            this.load();
        },
        changePage: function (paginationVue) {
            this.filters.page = paginationVue.current_page;
            this.filters.limit = paginationVue.per_page;
            this.load();
        },
        
        load: function load(){
            setTimeout(function () {
            $(function () {
                    $('[data-toggle="popover"]').popover(
                        {
                            html:true,
                            content: function() {
                                return $('#customnotediv').show();
                            }, 
                        }
                    )
            });

            $('body').on('mousedown', '.popover', function(e) {
                    console.log("clicked inside popover")
                    e.preventDefault()
            });

            $('[data-toggle="popover"]').on('shown.bs.popover', function (e) {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customnotediv').show();
                        } 
                    }
                )
            }) ;

            $('[data-toggle="popover"]').on('hide.bs.popover', function (e) {
                    $('body').append($('#customnotediv')) ;
                    $('#customnotediv').hide();
                }) ;
            }, 2000);
           
            $('#exampleModal').modal('show');
            var _this = this;
            if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            var seminarId = getQueryStringVaribale("seminarid");
            var otherParams = {
                'PersonID' : window.user.user.PersonID,
                'seminarId':seminarId,
            }
            var params = simplyOrg.mergeObjs([
                otherParams,
                this.filters
            ]);
            _this.loaded = true;
            
            _this.currentReqest = $.post(getBaseUrl() + 'Base/getSeminar',params, function(data) {
                _this.seminarData = data;
                _this.totalSeminarSchedules = data.seminar_schedules.length;
                _this.seminarAllNotes = data.seminar_notes;
                _this.seminarAllDocuments = data.seminar_documents;
                _this.person_ids = data.seminar_attendees

                window.setTimeout(function () {
                    updatePagination(data.seminar_notes);
                }, 500);

                $(data.seminar_schedules).each(function(key,value){
                    if(value.is_attended_date == true){
                        _this.totalStoredAttendance++;
                    }
                });
               
            });
            Requests.push(_this.currentReqest);
        },
        loadAgentContacts: function() {
            $.get(getBaseUrl() +'Base/search&model=person&method=getAgentContact', function(result) {
                this.agentsData = result;
            }.bind(this))
        },
        assign_note: function assign_note() {
            var _this = this;
            var assigned_to = $('.note_section_one input[name="assigned_to"]:checked').val();
            var person_ids = $('.note_section_one select[name="person_ids"]').val();
            
            _this.assigned_to = assigned_to;
            _this.person_ids = person_ids;
            // $("#selectBox").val('1').trigger('change')
        },

        add_note_section: function add_note_section(){
            var _this = this;
            var selected_date = $('.note_section_one input[name="seminar_date"]:checked').val();
            _this.selected_date=selected_date;
             $(".note_header_one").hide();
            $(".note_header_two").show();
            $(".note_section_one").hide();
            $(".note_section_two").show();
        },

        edit_note_section: function edit_note_section(note_text){
            var _this = this;
            var selected_date = $('.edited_note_section_one input[name="edited_seminar_date"]:checked').val();
            _this.selected_date=selected_date;
            $('.edited_note_section_two textarea[name="edited_notes"]').val(note_text);
             $(".edited_note_header_one").hide();
            $(".edited_note_header_two").show();
            $(".edited_note_section_one").hide();
            $(".edited_note_section_two").show();
        },

        editNote: function editNote(id){
            var _this=this;
            $(".edited_note_header_one").show();
            $(".edited_note_header_two").hide();
            $(".edited_note_section_one").show();
            $(".edited_note_section_two").hide();
            
            var params = {
                noteID : id
            }
             _this.currentReqest = $.get(getBaseUrl() + 'Base/getNoteById',params, function(data) {
                 _this.editedDetails=data.note_details;
                 $("#edit_note_popup").modal('show');
            });
        },

        saveNotes: function saveNotes(){
            var _this = this;
            var seminardate = $('.note_section_one input[name="seminar_date"]:checked').val();
            var note = $('.note_section_two textarea[name="notes"]').val();
            _this.seminarNotes=note;
            if(_this.seminarNotes.length == 0){
                notify('error', this.$tr('cms.note_cannot_be_empty'));
                return false;
            }

            if(_this.assigned_to == 'students'){
                _this.person_ids.forEach(element => {
                    if(element.id && element.value){
                        this.new_json.push(element.id);
                    }
                    else{
                        _this.new_json.push(element);
                    }
                });
            }
            else {
                _this.new_json = _this.selected_person_ids;
            }
            
            var currentUrl = window.location.href;
            var queryStringparams = new URL(currentUrl).searchParams;
            var seminarId = queryStringparams.get("seminarid");
            var formData = new FormData();
            formData.append('seminar_date',_this.selected_date);
            formData.append('seminar_id',seminarId);
            formData.append('trainer_id',window.user.user.PersonID);
            formData.append('notes',_this.seminarNotes,);
            formData.append('assigned_to',_this.assigned_to);
            formData.append('person_ids',_this.new_json);
    
            $.ajax({
                url: getBaseUrl()+'Base/storeNote',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(resp){
                        
                        var saveNoteMsg = _this.$tr('cms.note_added');
                        
                        swal({
                            title: "",
                            text: saveNoteMsg,
                            type: "success",
                            showConfirmButton: false,
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        $("#add_note_popup").modal('hide');
                        // $('body').removeClass('modal-open');
                        // $('.modal-backdrop').remove();
                        _this.load();
                        
                        // var element = "<a href='"+currentUrl+"' class='btn btn-primary brb'>"+buttonText+"</a>";
                        // $('.swal-modal .swal-button-container button').remove();
                        // $('.swal-modal .swal-button-container').prepend(element);
                        // $('.swal-modal').css({'width':'366px;','border-radius':'10px;'});
                        // $('.swal-modal .swal-text').css({'font-weight':'bold'});
                    
                }
            });
            _this.assigned_to = 'students';
            _this.person_ids = [];
            _this.new_json = [];
        },

        updateNote: function updateNote(id){
            var _this = this;
            var edited_seminardate = $('input[name="edited_seminar_date"]:checked').val();
            var edited_note = $('.edited_note_section_two textarea[name="edited_notes"]').val();
            _this.editedseminarNotes=edited_note;
            if(_this.editedseminarNotes.length == 0){
                notify('error', this.$tr('cms.note_cannot_be_empty'));
                return false;
            }
            
            var currentUrl = window.location.href;
            var queryStringparams = new URL(currentUrl).searchParams;
            var seminarId = queryStringparams.get("seminarid");
            var formData = new FormData();
            formData.append('noteID',id);
            formData.append('edited_seminar_date',edited_seminardate);
            formData.append('seminar_id',seminarId);
            formData.append('trainer_id',window.user.user.PersonID);
            formData.append('edited_notes',_this.editedseminarNotes,);
    
            $.ajax({
                url: getBaseUrl()+'Base/updateNote',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(resp){
                        var updateNoteMsg = _this.$tr('cms.note_updated');
                        
                        swal({
                            title: "",
                            text: updateNoteMsg,
                            type: "success",
                            showConfirmButton: false,
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $("#edit_note_popup").modal('hide');
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                        _this.load();
                        
                        // var element = "<a href='"+currentUrl+"' class='btn btn-primary brb'>"+buttonText+"</a>";
                        // $('.swal-modal .swal-button-container button').remove();
                        // $('.swal-modal .swal-button-container').prepend(element);
                        // $('.swal-modal').css({'width':'366px;','border-radius':'10px;'});
                        // $('.swal-modal .swal-text').css({'font-weight':'bold'});
                    
                }
            });
        },

        getNoteID: function getNoteID(note_id){

            var _this = this;
            _this.NoteID = note_id;
        },

        

        deleteNote: function deleteNote(id){
            var _this = this;
            bootbox.confirm({
                message: _this.$tr('cms.are_you_sure_you_want_to_delete_note'),
                buttons: {
                    'cancel': {
                        label: _this.$tr('cms.cancel'),
                        className: 'btn-default pull-right'
                    },
                    'confirm': {
                        label: _this.$tr('cms.ok'),
                        className: 'btn-primary pull-right'
                    }
                },
                callback: function(response) {
                    if (response) {
                            var params = {
                            'model':'note',
                            'model_id':id,
                             params: JSON.stringify({'with':'token'}),
                        };

                        $.get(getBaseUrl() + 'Base/deleteNote',params, function(data) {
                        if(data){
                            var notedeletemsg = _this.$tr('cms.note_deleted');

                        swal({
                            title: "",
                            text: notedeletemsg,
                            type: "success",
                            showConfirmButton: false,
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                        $('.popover').remove();
                        _this.load();
                    }
                 });

                    }

                }
            });
            _this.assigned_to = 'students';
            _this.person_ids = [];
            _this.new_json = [];
        },
        
        goToManageSeminarPage: function ConfirmAttendanceTemplate(){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/manage-seminar?seminarid='+seminarId);
        },

        resetnotemodal: function resetnotemodal() {
            $('.note_section_two textarea[name="notes"]').val('');
            $(".note_header_one").show();
            $(".note_header_two").hide();
            $(".note_section_one").show();
            $(".note_section_two").hide();
        },
    }
};

baseComponents.MyNotes = {
    name: 'MyNotes',
    template: '#MyNotesTemplate',
    data:function data(){
        return {
            appData: appData,
            loaded: false,
            seminarData:[],
            schedules:"",
            editedDetails:"",
            seminarLocation:"",
            editedseminarNotes:"",
            filters: {},
            selectedseminarID:"",
            selected_date:"",
            seminarNotes:[],
            seminarAllNotes:[],
            NoteID:"",
            myseminarnotes:true,
            generalnotes:false,
            AddedByTrainer:"",
            preselect: "1",
            assigned_to: "students",
            person_ids: [],
        };
    },
     created: function () {
        eventHub.$on('changeInFilter', this.changeInFilter);
        eventHub.$on('changeInPagination', this.changePage);
        this.loadAgentContacts()
       
    },
    beforeDestroy: function () {
        eventHub.$off('changeInFilter', this.changeInFilter);
        eventHub.$off('changeInPagination', this.changePage);
        
    },
    mounted: function mounted() {

        var _this = this;
        window.jqxhr_getuser.done(function () {
            console.log('personid', window.user.user.PersonID);
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            appData.filterVars['completed'] = 0;

            _this.load();
            _this.loadpopover();
        });
    },
    methods:{
        dateTimeFormat: function dateTimeFormat(date) {
            var utc = moment.tz(date, system_timezone).utc().format();
            return moment(utc).tz(timezone).format(app_date_format_js.toUpperCase() + ' HH:mm');
        },
        changeInFilter: function () {
            this.filters.page = 1;
            this.load();
        },
        changePage: function (paginationVue) {
            this.filters.page = paginationVue.current_page;
            this.filters.limit = paginationVue.per_page;
            this.load();
        },

        load: function load(){
            this.loadpopover();
            var _this = this;
            if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            
            var otherParams = {
                seminarnotes : _this.myseminarnotes,
                generalnotes : _this.generalnotes,
                study: 1
            }
            var params = simplyOrg.mergeObjs([
                otherParams,
                this.filters
            ]);

            _this.loaded = true;

            _this.currentReqest = $.post(getBaseUrl() + 'Base/getNotes', params, function(data) {
                if (typeof data.notes.data != 'undefined') {
                    _this.seminarAllNotes = data.notes.data;
                    updatePagination(data.notes);
                }
                unblockUI();
            });
            
            
            Requests.push(_this.currentReqest);
        },

        loadpopover: function loadpopover(){
            setTimeout(function () {
            $(function () {
                    $('[data-toggle="popover"]').popover(
                        {
                            html:true,
                            content: function() {
                                return $('#customnotediv').show();
                            }, 
                        }
                    )
                });

                $('body')
                .on('mousedown', '.popover', function(e) {
                    console.log("clicked inside popover")
                    e.preventDefault()
                });

                $('[data-toggle="popover"]').on('shown.bs.popover', function (e) {
                     $('[data-toggle="popover"]').popover(
                        {
                             html:true,
                             content: function() {
                                 return $('#customnotediv').show();
                             } 
                         }
                     )
                }) ;

            $('[data-toggle="popover"]').on('hide.bs.popover', function (e) {
                     $('body').append($('#customnotediv')) ;
                     $('#customnotediv').hide();
                }) ;
            }, 3000);
        },
        
        seminarnotes: function seminarnotes() {
             blockUI();
            var _this=this;
            _this.myseminarnotes = true;
            _this.generalnotes = false;
            $(".seminar-notes").addClass('active');
            $(".seminar-notes").focus();
            $(".general-notes").removeClass('active');
             this.changeInFilter();
        },

        generalNotes: function generalNotes() {
            blockUI();
            var _this=this;
            _this.generalnotes = true;
            _this.myseminarnotes = false;
            $(".general-notes").addClass('active');
            $(".seminar-notes").removeClass('active');
            this.changeInFilter();
        },

        //  add_note_section: function add_note_section(){
        //     var _this = this;
        //     var selected_date = $('.note_section_one input[name="seminar_date"]:checked').val();
        //     _this.selected_date=selected_date;
        //     $(".note_section_one").hide();
        //     $(".note_section_two").show();
        // },

        edit_note_section: function edit_note_section(note_text){
            var _this = this;
            var selected_date = $('.edited_note_section_one input[name="edited_seminar_date"]:checked').val();
            _this.selected_date=selected_date;
            $('.edited_note_section_two textarea[name="edited_notes"]').val(note_text);
             $(".edited_note_header_one").hide();
            $(".edited_note_header_two").show();
            $(".edited_note_section_one").hide();
            $(".edited_note_section_two").show();

            // $('.edited_note_section_two textarea[name="edited_notes"]').val("");
        },

        editModal: function editModal(id,seminarId){
            
            var _this=this;
             $(".edited_note_header_one").show();
             $(".edited_note_header_two").hide();
             $(".edited_note_section_one").show();
             $(".edited_note_section_two").hide();
             var params = {
                 noteID : id,
                 seminarId:seminarId
             }
            
              _this.currentReqest = $.get(getBaseUrl() + 'Base/getNoteById',params, function(data) {
                  
                   _this.schedules = data.schedules;
                  _this.editedDetails=data.note_details;
                
                  $("#edit_popup").modal('show');
              });
        },

        updateNote: function updateNote(id){
            var _this = this;
            var edited_seminardate = _this.selected_date;
            var edited_note = $('.edited_note_section_two textarea[name="edited_notes"]').val();
            _this.editedseminarNotes=edited_note;
            if(_this.editedseminarNotes.length == 0){
                notify('error', this.$tr('cms.note_cannot_be_empty'));
                return false;
            }
            
            var currentUrl = window.location.href;
            var queryStringparams = new URL(currentUrl).searchParams;
            var seminarId = queryStringparams.get("seminarid");
            var formData = new FormData();
            formData.append('noteID',id);
            formData.append('edited_seminar_date',edited_seminardate);
            formData.append('seminar_id',seminarId);
            formData.append('trainer_id',window.user.user.PersonID);
            formData.append('edited_notes',_this.editedseminarNotes,);
    
            $.ajax({
                url: getBaseUrl()+'Base/updateNote',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(resp){
                        var updateNoteMsg = _this.$tr('cms.note_updated');
                        
                        swal({
                            title: "",
                            text: updateNoteMsg,
                            type: "success",
                            showConfirmButton: false,
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        $('.edited_note_section_two textarea[name="edited_notes"]').val("");
                        $("#edit_popup").modal('hide');
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                        _this.load();
                        
                        // var element = "<a href='"+currentUrl+"' class='btn btn-primary brb'>"+buttonText+"</a>";
                        // $('.swal-modal .swal-button-container button').remove();
                        // $('.swal-modal .swal-button-container').prepend(element);
                        // $('.swal-modal').css({'width':'366px;','border-radius':'10px;'});
                        // $('.swal-modal .swal-text').css({'font-weight':'bold'});
                    
                }
            });
        },


        getNoteID: function getNoteID(note_id,seminarId){
            var _this = this;
            _this.NoteID = note_id;
            _this.selectedseminarID = seminarId;
        },

        

        deleteNote: function deleteNote(id){
            var _this = this;
            bootbox.confirm({
                message: _this.$tr('cms.are_you_sure_you_want_to_delete_note'),
                buttons: {
                    'cancel': {
                        label: _this.$tr('cms.cancel'),
                        className: 'btn-default pull-right'
                    },
                    'confirm': {
                        label: _this.$tr('cms.ok'),
                        className: 'btn-primary pull-right'
                    }
                },
                callback: function(response) {
                    if (response) {
                            var params = {
                            'model':'note',
                            'model_id':id,
                             params: JSON.stringify({'with':'token'}),
                        };

                        $.get(getBaseUrl() + 'Base/deleteNote',params, function(data) {
                        if(data){
                            var notedeletemsg = _this.$tr('cms.note_deleted');
                        swal({
                            title: "",
                            text: notedeletemsg,
                            type: "success",
                            showConfirmButton: false,
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                        $('.popover').remove();
                        _this.load();
                    }
                 });

                    }

                }
            });
        },

        editNote: function editNote(){

        },
        
        goToManageSeminarPage: function ConfirmAttendanceTemplate(){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/manage-seminar?seminarid='+seminarId);
        },

    }
};

baseComponents.SeminarDocumentList = {
    name: 'SeminarDocumentList',
    template: '#SeminarDocumentListTemplate',
    data:function data(){
        var document_form = {
                        fields: {
                            document: {
                                label_key: 'cms.upload_document',
                                id: 'document',
                                name: 'document',
                                vue: 'dropzoneBox',
                                // name: "DocumentFileName",
                                // initial_value: 'file_DocumentFileName',
                                // vue: 'fileBox',
                                required: true,
                                maxFilesize:25,
                                no_lable: true,
                                
                                init: function() {
                                this.on("complete", function(file) { 
                                 this.removeAllFiles(true); 
                                })
                            }
                                // document_message: 'general.upload_attendee_document_msg'
                            },
                        }
                    };
                    return {
                        appData: appData,
                        loaded: false,
                        document_selected_date: "",
                        document_form: document_form,
                        seminarAllDocuments:[],
                        filters: {},
                        DocumentID:"",
                        AddedByTrainer:"",
                        seminarData:[],
                        preselect: "1",
                        documentFile:"",
                        documentTitle: "",
                        assigned_to: "students",
                        agentsData:[],
                        person_ids: [],
                        new_json : [],
                        selected_person_ids : 'selected',
                    };
    },
    created: function () {
        eventHub.$on('changeInFilter', this.changeInFilter);
        eventHub.$on('changeInPagination', this.changePage);
        this.loadAgentContacts();
    },
    beforeDestroy: function () {
        eventHub.$off('changeInFilter', this.changeInFilter);
        eventHub.$off('changeInPagination', this.changePage);
    },
    
    mounted: function mounted() {
        var _this = this;
        window.jqxhr_getuser.done(function () {
            console.log('personid', window.user.user.PersonID);
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            appData.filterVars['completed'] = 0;
            _this.load();
        });

        setTimeout(function () {
        $('.styled_radio_button').checkradios({
                radio:{
                    iconClass:'fa fa-check radio-button-green-checked'
                },
                checkbox:{
                    iconClass:'fa fa-check radio-button-green-checked'
                }
            });
        }, 4000);

        setTimeout(function () {
        $(function () {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customdocumentdiv').show();
                        }, 
                    }
                )
            });

            $('body')
            .on('mousedown', '.popover', function(e) {
                console.log("clicked inside popover")
                e.preventDefault()
            });

             $('[data-toggle="popover"]').on('shown.bs.popover', function (e) {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customdocumentdiv').show();
                        } 
                    }
                )
            }) ;

           $('[data-toggle="popover"]').on('hide.bs.popover', function (e) {
                $('body').append($('#customdocumentdiv')) ;
                $('#customdocumentdiv').hide();
            }) ;
        }, 3000);
    },
    methods:{
        resetnotemodal: function resetnotemodal() {
            $(".note_section_one").show();
            $(".note_section_two").hide();
        },
        changeInFilter: function () {
            this.filters.page = 1;
            this.load();
        },
        downloadCertificate: function(certificateUrl){

            var url = certificateUrl;
            window.open(url);    
        },
        changePage: function (paginationVue) {
            this.filters.page = paginationVue.current_page;
            this.filters.limit = paginationVue.per_page;
            this.load();
        },
        load: function load(){
           setTimeout(function () {
            $(function () {
                    $('[data-toggle="popover"]').popover(
                        {
                            html:true,
                            content: function() {
                                return $('#customdocumentdiv').show();
                            }, 
                        }
                    )
                });

            $('body')
            .on('mousedown', '.popover', function(e) {
                console.log("clicked inside popover")
                e.preventDefault()
            });

             $('[data-toggle="popover"]').on('shown.bs.popover', function (e) {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customdocumentdiv').show();
                        } 
                    }
                )
            }) ;

           $('[data-toggle="popover"]').on('hide.bs.popover', function (e) {
                $('body').append($('#customdocumentdiv')) ;
                $('#customdocumentdiv').hide();
            }) ;
         }, 3000);
            $('#exampleModal').modal('show');
            var _this = this;
            if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                _this.currentReqest.abort();
            }

            _this.loaded = true;
            
            var otherParams = {
                'PersonID' : window.user.user.PersonID,
                seminarId : getQueryStringVaribale("seminarid")
            }
            var params = simplyOrg.mergeObjs([
                otherParams,
                this.filters
            ]);
            
            _this.currentReqest = $.post(getBaseUrl() + 'Base/getSeminar', params, function (data) {

                if(data.type =="error")
               {
                    notify('error',data.message);
                    window.setTimeout(function () {
                    redirectTo('/my-seminars');
                     }, 1000);
                    return false;
               }
                _this.seminarData = data;
                _this.totalSeminarSchedules = data.seminar_schedules.length;
                _this.seminarAllNotes = data.seminar_notes;
                _this.seminarAllDocuments = data.seminar_documents;
                _this.person_ids = data.seminar_attendees
                
                window.setTimeout(function () {
                    updatePagination(data.seminar_documents);
                }, 500);

                $(data.seminar_schedules).each(function(key,value){
                    if(value.is_attended_date == true){
                        _this.totalStoredAttendance++;
                    }
                });
            });
            Requests.push(_this.currentReqest);
        },

        loadAgentContacts: function() {
            $.get(getBaseUrl() +'Base/search&model=person&method=getAgentContact', function(result) {
                this.agentsData = result;
            }.bind(this))
        },
        assign_document: function assign_document(){
            var _this = this;
            var assigned_to = $('.document_section_one input[name="assigned_to"]:checked').val();
            var person_ids = $('.document_section_one select[name="person_ids"]').val();
            
            _this.assigned_to = assigned_to;
            _this.person_ids = person_ids;
        },

         add_document_section: function add_document_section(){
            var _this = this;

            var document_selected_date = $('.document_section_one input[name="document_seminar_date"]:checked').val();
             _this.document_selected_date=document_selected_date;
             
             $(".document_header_one").hide();
            $(".document_header_two").show();
            $(".document_section_one").hide();
            $(".document_section_two").show();
        },

        uploadDocumentFile: function uploadDocumentFile(){
            var _this = this;
            _this.documentFile = this.$refs.documentfile.files[0];
        },
        uploadFileTrigger: function uploadFileTrigger(){
            var _this = this;
            _this.documentFile = this.$refs.documentfile.files[0];
        },

        saveDocuments: function saveDocuments(){
            var _this = this;
             var documentTitle = $('.document_section_two input[name="document_title"]').val();
            if(documentTitle.length == 0){
                notify('error', this.$tr('cms.select_document_title'));
                return false;
            }
          if (this.$refs.document_form.isValid()) {  
            if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            
            var currentUrl = window.location.href;
            var queryStringparams = new URL(currentUrl).searchParams;
            var seminarId = queryStringparams.get("seminarid");
            var seminardate = _this.document_selected_date;
           
            if(_this.assigned_to == 'students'){
                _this.person_ids.forEach(element => {
                    if(element.id && element.value){
                        this.new_json.push(element.id);
                    }
                    else{
                        _this.new_json.push(element);
                    }
                });
            }
            else {
                _this.new_json = _this.selected_person_ids;
            }
            // if(_this.documentFile.length == 0){
            //     notify('error', this.$tr('cms.select_document_file'));
            //     return false;
            // }

            // var formData = new FormData();
            var formData = new FormData($('#document')[0]);
            // formData.append('document_seminar_date',seminardate);
            // formData.append('seminar_id',seminarId);
            // formData.append('trainer_id',window.user.user.PersonID);
            // formData.append('Picture',_this.documentFile); 
            // formData.append('document_title',documentTitle); 
            // formData.append('model','appointent'); 
            // formData.append('model','appointent'); 

            formData.append('is_default_category', 1);
            formData.append('DocumentFile', appData.document);
            formData.append('DocumentSizeMB', (appData.document / (1024 * 1024)).toFixed(2));
            formData.append('DocumentTitle',documentTitle);
            formData.append('trainer_id',window.user.user.PersonID); 
            formData.append('document_seminar_date',seminardate);
            // formData.append('lastModified', appData.editObject.document.lastModified);
            formData.append("DocumentDescription", '');
            formData.append("model", 'appointment');
            formData.append("model_id", $('.document_section_one input[name="appointment_id"]').val());
            formData.append('assigned_to',_this.assigned_to);
            formData.append('person_ids',_this.new_json);

             $.ajax({
                url: getBaseUrl()+'Base/storeDocument',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(resp){

                    swal({
                            title: "",
                            text: resp.message,
                            type: "success",
                            showConfirmButton: false,
                        });
                    
                    setTimeout(function () {
                        swal.close()
                    }, 2000);
                    if(resp.type = "success"){ 
                            $("#add_document_popup").modal('hide');
                            // $('body').removeClass('modal-open');
                            // $('.modal-backdrop').remove();
                            _this.load();
                    }
                    _this.$refs.document_form.resetValue();

                }
            });
            _this.assigned_to = 'students';
            _this.person_ids = [];
            _this.new_json = [];
          }
        },

        getDocumentID: function getDocumentID(document_id){
             $(function () {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customdocumentdiv').show();
                        } 
                    }
                )
            });
            
            $('[data-toggle="popover"]').on('shown.bs.popover', function (e) {
                $('[data-toggle="popover"]').popover(
                    {
                        html:true,
                        content: function() {
                            return $('#customdocumentdiv').show();
                        } 
                    }
                )
            }) ;

           $('[data-toggle="popover"]').on('hide.bs.popover', function (e) {
                $('body').append($('#customdocumentdiv')) ;
                $('#customdocumentdiv').hide();
            }) ;
            var _this = this;
            _this.DocumentID = document_id;
        },

        deleteDocument: function deleteDocument(id){
            var _this = this;
            bootbox.confirm({
                message: _this.$tr('cms.are_you_sure_you_want_to_delete_document'),
                buttons: {
                    'cancel': {
                        label: _this.$tr('cms.cancel'),
                        className: 'btn-default pull-right'
                    },
                    'confirm': {
                        label: _this.$tr('cms.ok'),
                        className: 'btn-primary pull-right'
                    }
                },
                callback: function(response) {
                    if (response) {
                            var params = {
                            'model':'document',
                            'model_id':id,
                             params: JSON.stringify({'with':'token'}),
                        };

                        $.get(getBaseUrl() + 'Base/deleteDocument',params, function(data) {
                        if(data){
                            var documentdeletemsg = _this.$tr('cms.document_deleted');

                        swal({
                            title: "",
                            text: documentdeletemsg,
                            type: "success",
                            showConfirmButton: false,
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                         $('.popover').remove();
                        _this.load();
                    }
                 });

                    }

                }
            });
        },
        
        goToManageSeminarPage: function ConfirmAttendanceTemplate(){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/manage-seminar?seminarid='+seminarId);
        },
        resetdocumentmodal: function resetdocumentmodal() {

            $('.document_section_two input[name="document_title"]').val('');
            $(".document_header_one").show();
            $(".document_header_two").hide();
            $(".document_section_one").show();
            $(".document_section_two").hide();
        },
    }
};

baseComponents.ConfirmAttendance = {
    name: 'ConfirmAttendance',
    template: '#ConfirmAttendanceTemplate',
    data:function data(){
        return {
            appData: appData,
            loaded: false,
            seminarData:[],
            totalSeminarSchedules:0,
            totalStoredAttendance:0,
        };
    },
    mounted: function mounted() {
        this.load();
    },
    methods:{
        load: function load(){
            var _this = this;
            var seminarId = getQueryStringVaribale("seminarid");
            var params = {
                'seminarId':seminarId
            }
            $.post(getBaseUrl() + 'Base/getSeminar',params, function(data) {
               _this.loaded = true;
               _this.seminarData = data;
               _this.totalSeminarSchedules = data.seminar_schedules.length;
               $(data.seminar_schedules).each(function(key,value){
                    if(value.is_attended_date == true){
                        _this.totalStoredAttendance++;
                    }
               });
            });
            setTimeout(function(){
                $('.styled_radio_button').checkradios({
                    radio:{
                        iconClass:'fa fa-check radio-button-green-checked'
                    },
                    checkbox:{
                        iconClass:'fa fa-check radio-button-green-checked'
                    }
                });
            },2000);
            
        },
        openAttendeeList: function openAttendeeList(){
            var _this = this;
            var totalDateSelected = $('.page_confirm_attendance input[name="seminar_date"]:checked').length;
            if(totalDateSelected == 0){
                notify('error', this.$tr('cms.select_seminar_date'));
                return false;
            }
            if(_this.seminarData.seminar_attendees.length == 0){
                notify('error', this.$tr('cms.no_attendee_found'));
                return false;
            }
            var seminarId = getQueryStringVaribale("seminarid");
            var seminarDate = $('.page_confirm_attendance input[name="seminar_date"]:checked').val();
            var CurrentDate = new Date();
            var GivenDate = new Date(seminarDate);
            if(GivenDate > CurrentDate){
                notify('error', this.$tr('cms.attendance_future_date_not_allow'));
                return false;
            }
            redirectTo('/attendee-list-save-attendance?seminarid='+seminarId+"&date="+seminarDate);
        },

        initJqueryPlugins: function initJqueryPlugins(){
            $('.styled_radio_button').checkradios({
                radio:{
                    iconClass:'fa fa-check radio-button-green-checked'
                },
                checkbox:{
                    iconClass:'fa fa-check radio-button-green-checked'
                }
            });
            
            
        },
        goToManageSeminarPage: function ConfirmAttendanceTemplate(){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/manage-seminar?seminarid='+seminarId);
        },
        

        saveNotes: function saveNotes(){
            var _this = this;
            var seminardate = $('.note_section_one input[name="seminar_date"]:checked').val();
            var note = $('.note_section_two textarea[name="notes"]').val();
            _this.seminarNotes=note;
            if(_this.seminarNotes.length == 0){
                notify('error', this.$tr('cms.note_cannot_be_empty'));
                return false;
            }
            
            var currentUrl = window.location.href;
            var queryStringparams = new URL(currentUrl).searchParams;
            var seminarId = queryStringparams.get("seminarid");
            var formData = new FormData();
            formData.append('seminar_date',seminardate);
            formData.append('seminar_id',seminarId);
            formData.append('notes',_this.seminarNotes,);
    
            $.ajax({
                url: getBaseUrl()+'Base/storeNote',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(resp){
                        $("#add_note_popup").hide();
                        var saveNoteMsg = _this.$tr('cms.note_added');
                        
                        swal({
                            title: "Success",
                            text: saveNoteMsg,
                            icon: "success",
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                        _this.load();
                        
                        // var element = "<a href='"+currentUrl+"' class='btn btn-primary brb'>"+buttonText+"</a>";
                        // $('.swal-modal .swal-button-container button').remove();
                        // $('.swal-modal .swal-button-container').prepend(element);
                        // $('.swal-modal').css({'width':'366px;','border-radius':'10px;'});
                        // $('.swal-modal .swal-text').css({'font-weight':'bold'});
                    
                }
            });
        },

        getNoteID: function getNoteID(note_id){
            var _this = this;
            _this.NoteID = note_id;
        },
        deleteNote: function deleteNote(id){
            var _this = this;
            bootbox.confirm({
                message: _this.$tr('cms.are_you_sure_you_want_to_delete_note'),
                buttons: {
                    'cancel': {
                        label: _this.$tr('cms.cancel'),
                        className: 'btn-default pull-right'
                    },
                    'confirm': {
                        label: _this.$tr('cms.ok'),
                        className: 'btn-primary pull-right'
                    }
                },
                callback: function(response) {
                    if (response) {
                            var params = {
                            'model':'note',
                            'model_id':id,
                             params: JSON.stringify({'with':'token'}),
                        };

                        $.get(getBaseUrl() + 'Base/deleteNote',params, function(data) {
                        if(data){
                            var notedeletemsg = _this.$tr('cms.note_deleted');
                        swal({
                            title: "Success",
                            text: notedeletemsg,
                            icon: "success",
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                        $('.popover').remove();
                        _this.load();
                    }
                 });

                    }

                }
            });
        },
        saveDocuments: function saveDocuments(){
            var _this = this;
            if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            
            var currentUrl = window.location.href;
            var queryStringparams = new URL(currentUrl).searchParams;
            var seminarId = queryStringparams.get("seminarid");
            var seminardate = $('.document_section_one input[name="document_seminar_date"]:checked').val();
            var documentTitle = $('.document_section_two input[name="document_title"]').val();
            if(documentTitle.length == 0){
                notify('error', this.$tr('cms.select_document_title'));
                return false;
            }
            if(_this.documentFile.length == 0){
                notify('error', this.$tr('cms.select_document_file'));
                return false;
            }

            var formData = new FormData();
            
            var size =  _this.documentFile.size;
            formData.append('is_default_category', 1);
            formData.append('DocumentFile', _this.documentFile);
            formData.append('DocumentSizeMB', (size / (1024 * 1024)).toFixed(2));
            formData.append('DocumentTitle',documentTitle);
            formData.append('user_id',window.user.user.PersonID); 
            // formData.append('lastModified', appData.editObject.document.lastModified);
            formData.append("DocumentDescription", '');
            formData.append("model", 'appointment');
            formData.append("model_id", $('.document_section_one input[name="appointment_id"]').val());
    
             $.ajax({
                url: getBaseUrl()+'Base/storeDocument',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(resp){
                    swal({
                        title: resp.type,
                        text: resp.message,
                        icon: resp.type,
                    });
                    
                    setTimeout(function () {
                        swal.close()
                    }, 2000);
                    if(resp.type = "success"){ 
                        $("#add_document_popup").hide();
                            
                            
                            $('body').removeClass('modal-open');
                            $('.modal-backdrop').remove();
                            _this.load();
                    }

                }
            });
        },
        getDocumentID: function getDocumentID(document_id){
            var _this = this;
            _this.DocumentID = document_id;
        },

        deleteDocument: function deleteDocument(id){
            var _this = this;
            bootbox.confirm({
                message: _this.$tr('cms.are_you_sure_you_want_to_delete_document'),
                buttons: {
                    'cancel': {
                        label: _this.$tr('cms.cancel'),
                        className: 'btn-default pull-right'
                    },
                    'confirm': {
                        label: _this.$tr('cms.ok'),
                        className: 'btn-primary pull-right'
                    }
                },
                callback: function(response) {
                    if (response) {
                            var params = {
                            'model':'document',
                            'model_id':id,
                             params: JSON.stringify({'with':'token'}),
                        };

                        $.get(getBaseUrl() + 'Base/deleteDocument',params, function(data) {
                        if(data){
                            var documentdeletemsg = _this.$tr('cms.document_deleted');
                        swal({
                            title: "Success",
                            text: documentdeletemsg,
                            icon: "success",
                        });
                        
                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        
                        $('body').removeClass('modal-open');
                        $('.modal-backdrop').remove();
                         $('.popover').remove();
                        _this.load();
                    }
                 });

                    }

                }
            });
        },
        goToSavedAttendanceReview: function goToSavedAttendanceReview(date){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/saved-attendance-review?seminarid='+seminarId+'&date='+date);
        }
    }
};

baseComponents.SavedAttendanceReview = {
    name: 'SavedAttendanceReview',
    template: '#SavedAttendanceReviewTemplate',
    data:function data(){
        return {
            appData: appData,
            loaded: false,
            seminarData:[],
            seminarLocation:"",
            attendedAttendees:[],
            notAttendedAttendees:[],
            seminar_documents:[],
            seminarDate: getQueryStringVaribale("date")
        };
    },
    mounted: function mounted() {
        this.load();
    },
    methods:{
        load: function load(){
            var _this = this;
            var seminarId = getQueryStringVaribale("seminarid");
            var date =  getQueryStringVaribale("date");
            var params = {
                'seminarId':seminarId,
                'seminar_date':date
            }
           $.get(getBaseUrl() + 'Base/getStoredAttendanceData',params, function(data) {
                _this.seminarData = data.seminar;
                _this.seminarLocation = data.seminar_location;
                _this.attendedAttendees = data.attended_attendees;
                _this.notAttendedAttendees = data.not_attended_attendee;
                _this.seminar_documents = data.seminar_documents;
                _this.loaded = true;
           });
        },
        goToManageSeminarPage: function goToManageSeminarPage(){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/confirm-attendance?seminarid='+seminarId);
        },
        openConfirmedSection: function openConfirmedSection(){
            $('ul.nav li.confirm_li').addClass('active');
            $('ul.nav li.not_confirm_li').removeClass('active');
            $('ul.nav li.seminar_proof_li').removeClass('active');
            $('#not_confirmed').hide();
            $('#seminar_proof').hide();
            $('#confirmed').show();
        },
        openNotConfirmedSection: function openNotConfirmedSection(){
            $('ul.nav li.confirm_li').removeClass('active');
            $('ul.nav li.not_confirm_li').addClass('active');
            $('ul.nav li.seminar_proof_li').removeClass('active');
            $('#not_confirmed').show();
            $('#confirmed').hide();
            $('#seminar_proof').hide();
        },
        openNoteModal: function openNoteModal(data){
            var personId = data.person.PersonID;
            var fullName = data.person.FirstName+" "+data.person.LastName;
            var organizationName = "";
            if(data.person.organization !== null){
                organizationName += data.person.organization.CustomerName;
            }
            $('#uploadNoteModal #attendee_name').html(fullName);
            $('#uploadNoteModal #attendee_organization').html(organizationName);
            $('#uploadNoteModal input[name="attendee_id"]').val(personId);
            $('#uploadNoteModal textarea[name="note"]').val("");
        },
        saveNote: function saveNote(){
            var _this = this;
            var note = $('#uploadNoteModal textarea[name="note"]').val();
            var personId = $('#uploadNoteModal input[name="attendee_id"]').val();
            var seminarId = getQueryStringVaribale("seminarid");
            if(note == null || note == ""){
                notify('error', this.$tr('cms.note_validation_note_require'));
                return false;
            }
            if (!note.replace(/\s/g, '').length) {
                notify('error', this.$tr('cms.note_validation_note_require'));
                return false;
            }
            var params = {
                'personId': personId,
                'note': note,
                'seminar_id':seminarId,
                'seminarDate': this.seminarDate
            }
            blockUI();
            $.get(getBaseUrl() + 'Base/storeNoteFromSavedAttendance',params, function(resp) {
                unblockUI();
                _this.load();
                $('#uploadNoteModal').modal('hide');
            });
        },
        openNotSeminarProofSection: function openNotSeminarProofSection(){
            $('ul.nav li.seminar_proof_li').addClass('active');
            $('ul.nav li.not_confirm_li').removeClass('active');
            $('ul.nav li.confirm_li').removeClass('active');
            $('#not_confirmed').hide();
            $('#confirmed').hide();
            $('#seminar_proof').show();
        }
    }
};

baseComponents.AttendeeListSaveAttendance = {
    name: 'AttendeeListSaveAttendance',
    template: '#AttendeeListSaveAttendanceTemplate',
    data:function data(){
        var document_form = {
            fields: {
                document: {
                    label_key: 'cms.upload_document',
                    id: 'document',
                    name: 'document',
                    vue: 'dropzoneBox',
                    required: true,
                    maxFilesize:25,
                    no_lable: true,
                    init: function() {
                        this.on("complete", function(file) { 
                           
                        this.removeAllFiles(true); 
                        })
                }
                
                },
            }
        };
        return {
            appData: appData,
            loaded: false,
            seminarData:[],
            documentFile:"",
            documentTitle: "",
            attendeeNotes:[],
            seminarDate:"",
            document_form:document_form,
        };
    },
    mounted: function mounted() {
        var _this = this;
        window.jqxhr_getuser.done(function () {
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }
            _this.load();
        });
        
    },
    methods:{
        load: function load(){
            var _this = this;
            var seminarId = getQueryStringVaribale("seminarid");
            _this.seminarDate =  getQueryStringVaribale("date");
            d1 = "";
            if(_this.seminarDate != null && _this.seminarDate != '' &&  _this.seminarDate != 'undefined'){
                var d1 = _this.seminarDate;
              
                
            } 
            var params = {
                'seminarId':seminarId,
                'date':d1
            }
            $.post(getBaseUrl() + 'Base/getSeminar',params, function(data) {
               _this.loaded = true;
               _this.seminarData = data;
            });
            setTimeout(function(){
                $('.styled_radio_button').checkradios({
                    onChange: function(checked, $element, $realElement){
                        var length = $('input[name="attendees_id"]:checked').length;
                        $('#no_of_selected_attendees').html(length+" selected");
                    },
                    radio:{
                        iconClass:'fa fa-check radio-button-green-checked'
                    },
                    checkbox:{
                        iconClass:'fa fa-check radio-button-green-checked'
                    }
                });
            },2000);
        },
        openAddNoteModal: function openAddNoteModal(data){
            var personId = data.PersonID;
            var fullName = data.FirstName+" "+data.LastName;
            var organizationName = "";
            if(data.organization !== null){
                organizationName += data.organization.CustomerName;
            }
            $('#uploadNoteModal #attendee_name').html(fullName);
            $('#uploadNoteModal #attendee_organization').html(organizationName);
            $('#uploadNoteModal input[name="attendee_id"]').val(personId);
            $('#uploadNoteModal textarea[name="note"]').val("");
        },
        saveNote: function saveNote() {
            var _this = this;
            var note = $('#uploadNoteModal textarea[name="note"]').val();
            var personId = $('#uploadNoteModal input[name="attendee_id"]').val();
            if(note == ""){
                notify('error', this.$tr('cms.note_validation_note_require'));
                return false;
            }
            var pushData = {
                'personId': personId,
                'note': note
            }
            _this.attendeeNotes.push(pushData);
            $('#uploadNoteModal').modal('hide');
        },
        openUploadDocumentModal: function openUploadDocumentModal(){
            $('#uploadDocumentModal').modal('show');
        },
        saveDocument: function saveDocument(){
            var documentTitle = $('#uploadDocumentModal input[name="title"]').val();
            if(documentTitle == ""){
                notify('error', this.$tr('cms.document_title_validation_require'));
                return false;
            }
            this.documentTitle = documentTitle;
            $('#uploadDocumentModal').modal('hide');
        },
        submitAttendanceForm: function submitAttendanceForm(){
            var _this = this;
            var seminarId = getQueryStringVaribale("seminarid");
            var seminardate = getQueryStringVaribale("date");
            var attendeeIds = new Array();
            $('ul.attendeesList li input[name="attendees_id"]:checked').each(function(){
                attendeeIds.push($(this).val());
            });
            if(attendeeIds.length == 0){
                notify('error', this.$tr('cms.no_attendee_selected'));
                return false;
            }
            var formData = new FormData();
            formData.append('seminar_date',seminardate);
            formData.append('attendee_ids',attendeeIds);
            formData.append('seminar_id',seminarId);
            formData.append('notes',JSON.stringify(_this.attendeeNotes));
            formData.append('Picture',appData.document); 
            formData.append('document_title',_this.documentTitle);
            formData.append('user_backend_url',window.user.settings.simplyOrgUrl);
            $.ajax({
                url: getBaseUrl()+'Base/storeAttendance',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(data){
                    if(data.status){
                        var currentUrl = window.location.origin+"/manage-seminar?seminarid="+seminarId;
                        var saveAttendanceMsg = _this.$tr('cms.msg_save_attendance');
                        var buttonText = _this.$tr('cms.back_to_dashboard');
                        $('#portalSmallPopupOverlay #message').html(saveAttendanceMsg);
                        $('#portalSmallPopupOverlay .button_conatiner a').attr('href',currentUrl);
                        $('#portalSmallPopupOverlay .button_conatiner a').html(buttonText);
                        $('#portalSmallPopupOverlay').show();

                        $('#portalSmallPopupOverlay .popupContent').center();
                    }
                }
            });
        },
        goToSeminarDate: function goToSeminarDate(){
            var seminarId = getQueryStringVaribale("seminarid");
            redirectTo('/confirm-attendance?seminarid='+seminarId);
        },
        getSelectedAttendees: function getSelectedAttendees(){
            console.log("changed");
        }
    }
};

baseComponents.attendeeList = {
    name: 'attendeeList',
    template: '#attendeeListTemplate',
    data:function data(){
        var document_form = {
            fields: {
                attendee_id: {
                    label_key: 'cms.add_document_to',
                    name: 'attendee_id',
                    modelName: 'event-attendees',
                    method: 'search',
                    vue: 'selectBox',
                    multiple: true,
                    placeholder: 'cms.select_attendees',
                    required: false,
                    preLoad: false,
                    toggle: false,
                    preOptions: [
                        {
                            'label': 'cms.select_all',
                            'value': 'all'
                        }
                    ],
                },
                DocumentTitle: {
                    label_key: 'cms.DocumentTitle',
                    name: 'DocumentTitle',
                    vue: 'textBox',
                    required: true
                },
                document: {
                    label_key: 'cms.upload_document',
                    id: 'document',
                    name: 'document',
                    vue: 'dropzoneBox',
                    // name: "DocumentFileName",
                    // initial_value: 'file_DocumentFileName',
                    // vue: 'fileBox',
                    required: true,
                    maxFilesize: '25',
                    no_lable: true,
                    // document_message: 'general.upload_attendee_document_msg'
                },
            }
        };

        var note_form = {
            fields: {
                attendee_id: {
                    label_key: 'cms.add_note_to',
                    name: 'attendee_id',
                    modelName: 'event-attendees',
                    method: 'search',
                    vue: 'selectBox',
                    multiple: true,
                    placeholder: 'cms.select_attendees',
                    required: false,
                    preLoad: false,
                    toggle: false,
                    preOptions: [
                        {
                            'label': 'cms.select_all',
                            'value': 'all'
                        }
                    ],
                },
                text: {
                    label_key: 'cms.label_note',
                    name: 'text',
                    vue: 'textAreaBox',
                    required: true,
                    placeholder: 'cms.write_here',
                },
            }
        };

        return {
            appData: appData,
            loaded: false,
            document_form: document_form,
            note_form: note_form,
            seminarId: 0,
            seminarData: {},
            currentAttendee: false,
        }
    },
    mounted: function mounted() {
        var _this = this;
        var queryStringparams = new URL(window.location.href).searchParams;
        this.seminarId = queryStringparams.get("seminarid");
        window.jqxhr_getuser.done(function () {
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }
            _this.load();
        });
    },
    methods: {
        load: function () {
            var _this = this;
            var params = {
                seminarId: this.seminarId,
            };
            $.post(getBaseUrl() + 'Base/getSeminar', params, function(data) {}).done(function (data) {
                var personId = typeof window.user.user.PersonID != 'undefined' ? String(window.user.user.PersonID) : '';                
                console.log("inarray", $.inArray(personId, data.trainerIds));
                console.log("trainerIds", data.trainerIds);           
                if(typeof data.trainerIds != 'undefined' && $.inArray(personId, data.trainerIds) < 0){                
                    alert(_this.$tr('cms.not_accessible_attendee_list_page_error_msg'));
                    window.location.href = '/my-seminars';
                }

               
                _this.loaded = true;
                _this.seminarData = data;
            });
        },
        goBack: function () {
            if (this.currentAttendee) {
                $('#manage_seminar_title').html(this.seminarData.seminar.event_name);
                this.currentAttendee = false;
            }
            else {
                window.history.back();
            }
        },
        openAttendeeUploadDocumentModal: function openAttendeeUploadDocumentModal() {
            var _this = this;
            this.document_form.fields.attendee_id.conditions = {
                planned_event_id: this.seminarData.seminar.id
            }
            this.document_form.fields.attendee_id.required = true;
            this.document_form.fields.attendee_id.preLoad = true;
            this.document_form.fields.attendee_id.toggle = true;

            this.$refs.document_form.$refs['formFields_attendee_id'][0].required = true;
            this.$refs.document_form.$refs['formFields_attendee_id'][0].preLoad = true;
            this.$refs.document_form.$refs['formFields_attendee_id'][0].toggle = true;
            this.$refs.document_form.$refs['formFields_attendee_id'][0].load();

            window.setTimeout(function () {
                var options = _this.$refs.document_form.$refs['formFields_attendee_id'][0].options;
                options = jQuery.grep(options, function (value) {
                    return value.value != 'all';
                });
                _this.$refs.document_form.$refs['formFields_attendee_id'][0].selected = options;
            }, 300);
            
            $('#attendeeUploadDocumentModal').modal('show');
        },
        saveAttendeeDocument: function saveAttendeeDocument() {
            var _this = this;

            if (this.$refs.document_form.isValid()) {
                if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                    _this.currentReqest.abort();
                }

                var attendeeIds = [];
                var selected = this.$refs.document_form.$refs['formFields_attendee_id'][0].selected;
                if (typeof selected != 'undefined' && selected.length > 0) {
                    $.each(selected, function (i, v) {
                        if (v.value != '') {
                            attendeeIds.push(v.value);
                        }
                    });
                }

                var formData = new FormData($('#document_form')[0]);
                formData.append('is_default_category', 1);
                formData.append('DocumentFile', appData.document);
                formData.append('DocumentSizeMB', (appData.document.size / (1024 * 1024)).toFixed(2));
                formData.append('lastModified', appData.document.lastModified);
                formData.append("DocumentDescription", '');
                formData.append("model", 'event-attendees');
                formData.append("model_id", attendeeIds);
                if (typeof attendeeIds == 'object') {
                    formData.append("is_generic", 1);
                }

                $.ajax({
                    url: getBaseUrl() + 'Base/storeDocument',
                    data: formData,
                    cache: false,
                    contentType: false,
                    processData: false,
                    method: 'POST',
                    success: function (resp) {
                        swal({
                            title: resp.type,
                            text: resp.message,
                            icon: resp.type,
                        });

                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        if (resp.type = "success") {
                            $('body').removeClass('modal-open');
                            $('.modal-backdrop').remove();
                            _this.load();
                        }

                        _this.$refs.document_form.resetValue();
                        window.setTimeout(function () {
                            $.each(_this.document_form.fields, function (index, value) {
                                _this.$refs.document_form.$refs['formFields_' + value.name][0].error = "";
                                _this.$refs.document_form.$refs['formFields_' + value.name][0].errorClass = "";
                            });
                        }, 200);
                        $('#attendeeUploadDocumentModal').modal('hide');
                    }
                });
            }
        },
        openAttendeeAddNoteModal: function openAttendeeAddNoteModal() {
            var _this = this;
            this.note_form.fields.attendee_id.conditions = {
                planned_event_id: this.seminarData.seminar.id
            }
            this.note_form.fields.attendee_id.required = true;
            this.note_form.fields.attendee_id.preLoad = true;
            this.note_form.fields.attendee_id.toggle = true;

            this.$refs.note_form.$refs['formFields_attendee_id'][0].required = true;
            this.$refs.note_form.$refs['formFields_attendee_id'][0].preLoad = true;
            this.$refs.note_form.$refs['formFields_attendee_id'][0].toggle = true;
            this.$refs.note_form.$refs['formFields_attendee_id'][0].load();
            
            window.setTimeout(function () {
                var options = _this.$refs.note_form.$refs['formFields_attendee_id'][0].options;
                options = jQuery.grep(options, function (value) {
                    return value.value != 'all';
                });
                _this.$refs.note_form.$refs['formFields_attendee_id'][0].selected = options;
            }, 300);

            $('#attendeeNoteModal').modal('show');
        },
        saveAttendeeNote: function () {
            var _this = this;

            if (this.$refs.note_form.isValid()) {
                if (typeof _this.currentReqest != 'undefined' && _this.currentReqest != false) {
                    _this.currentReqest.abort();
                }

                var attendeeIds = [];
                var selected = this.$refs.note_form.$refs['formFields_attendee_id'][0].selected;
                if (typeof selected != 'undefined' && selected.length > 0) {
                    $.each(selected, function (i, v) {
                        if (v.value != '') {
                            attendeeIds.push(v.value);
                        }
                    });
                }

                var formData = new FormData($('#note_form')[0]);
                formData.append("model", 'event-attendees');
                formData.append("model_id", attendeeIds);
                if (typeof attendeeIds == 'object') {
                    formData.append("is_generic", 1);
                    formData.append("attendeeIds", attendeeIds);
                }
                console.log("PARCHANI");
                console.log(formData);
                $.ajax({
                    url: getBaseUrl() + 'Base/storePortalNote',
                    data: formData,
                    cache: false,
                    contentType: false,
                    processData: false,
                    method: 'POST',
                    success: function (resp) {
                        swal({
                            title: resp.type,
                            text: resp.message,
                            icon: resp.type,
                        });

                        setTimeout(function () {
                            swal.close()
                        }, 2000);
                        if (resp.type = "success") {
                            $('body').removeClass('modal-open');
                            $('.modal-backdrop').remove();
                            _this.load();
                        }

                        _this.$refs.note_form.resetValue();
                        window.setTimeout(function () {
                            $.each(_this.note_form.fields, function (index, value) {
                                _this.$refs.note_form.$refs['formFields_' + value.name][0].error = "";
                                _this.$refs.note_form.$refs['formFields_' + value.name][0].errorClass = "";
                            });
                        }, 200);
                        $('#attendeeNoteModal').modal('hide');
                    }
                });
            }
        },
    },
    watch: {
        currentAttendee: function(){
            var _this = this;
            if(this.currentAttendee != false){
                eventHub.$emit('addHistory', { name: 'attendee_notes_docs' , url:"", back :function(){
                    _this.currentAttendee = false;
                } });
            }
           
        }
    }
};


baseComponents.ChangePassword = {
    name: 'ChangePassword',
    template: '#ChangePasswordTemplate',
    mounted: function mounted() {
        this.load();
        var _this = this;
        $.get(getBaseUrl() + 'Base/search&model=Settings&method=getSecuritySettings', function (data) {
            _this.passwordSettingData = data;

            console.log('passwordData',data);
            console.log("passwordSettingData",_this.passwordSettingData);
            _this.password_length = _this.passwordSettingData.minimum_password_length ? _this.passwordSettingData.minimum_password_length : 8;
            _this.password_upper_charater = _this.passwordSettingData.minimum_char_required ? _this.passwordSettingData.minimum_char_required : 1;
            _this.password_total_digit = _this.passwordSettingData.minimum_digit_required ? _this.passwordSettingData.minimum_digit_required : 1;
            _this.password_total_symbol = _this.passwordSettingData.minimum_symbol_required ? _this.passwordSettingData.minimum_symbol_required : 1;

            _this.message = _this.$tr('cms.password_needsto_have') + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' +_this.password_length + ' ' + _this.$tr('cms.tooltip_pwd_hint_charcter') + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' + _this.password_upper_charater + ' ' + _this.$tr('cms.tooltip_pwd_hint_upper_charcter') + ', ' + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_digit + ' ' + _this.$tr('cms.tooltip_pwd_hint_digit_charcter') + '\n';
            _this.message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_symbol + ' ' + _this.$tr('cms.tooltip_pwd_hint_symbol_charcter') + '\n';
            _this.message += _this.password_total_symbol > 1 ? _this.$tr('cms.tooltip_pwd_hint_which_charcter') : _this.$tr('cms.tooltip_pwd_hint_which_charcter');
        });


    },
    data: function data() {
        return {
            appData: appData,
            loaded: false,
            profile: {},
            registrationData: {},
            message: ''
        };
    },
    methods: {
        load: function load() {
            var _this = this;
            blockUI();
            $.get(getBaseUrl() + 'Base/getProfile', function(data) {
                if (typeof data.PersonID == 'undefined') {
                    setRedirectAndLoadLogin()
                }
                _this.loaded = true;
                _this.profile = data;
                unblockUI();
                setTimeout(function() {
                    $('[data-toggle="tooltip"]').tooltip();
                    $(".tooltips").tooltip();
                }, 850);
            });
        },
        reportChange: function reportChange(field, value) {
            this.registrationData[field.name] = value;
            console.log(this.registrationData);
        },
        save: function save() {
            valid = true;
            var _this=this;
            for (var i in this.$children) {
                if (typeof this.$children[i].isValid == 'function') {
                    var val = this.$children[i].isValid();
                    console.log(val);
                    if (val == false) {
                        valid = val;
                    }
                }
            }
            if (valid == false) {
                notify('error', this.$tr('cms.fillout_all_required_fields'));
                return false;
            }

            var registrationData = JSON.parse(JSON.stringify(this.registrationData));

            if (registrationData.password != registrationData.confirm_password) {
                notify('error', this.$tr('cms.passwords_do_not_match'));
                return false;
            }
            //check password setting data while change password by rohit parchani on 19-03-2024
            $.get(getBaseUrl() + 'Base/search&model=Settings&method=getSecuritySettings', function (data) {
                _this.passwordSettingData = data;

                if(!checkPasswordValidation(registrationData.password, data)){
                    console.log("this");
                    valid=false;
                    _this.password_length = _this.passwordSettingData.minimum_password_length ? _this.passwordSettingData.minimum_password_length : 8;
                    _this.password_upper_charater = _this.passwordSettingData.minimum_char_required ? _this.passwordSettingData.minimum_char_required : 1;
                    _this.password_total_digit = _this.passwordSettingData.minimum_digit_required ? _this.passwordSettingData.minimum_digit_required : 1;
                    _this.password_total_symbol = _this.passwordSettingData.minimum_symbol_required ? _this.passwordSettingData.minimum_symbol_required : 1;


                    var message = _this.$tr('cms.password_needsto_have') + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_length + ' ' + _this.$tr('cms.tooltip_pwd_hint_charcter') + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_upper_charater + ' ' + _this.$tr('cms.tooltip_pwd_hint_upper_charcter') + ', ' + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_digit + ' ' + _this.$tr('cms.tooltip_pwd_hint_digit_charcter') + '\n';
                    message += _this.$tr('cms.atleaset') + ' ' + _this.password_total_symbol + ' ' + _this.$tr('cms.tooltip_pwd_hint_symbol_charcter') + '\n';
                    message += _this.password_total_symbol > 1 ? _this.$tr('cms.tooltip_pwd_hint_which_charcter') : _this.$tr('cms.tooltip_pwd_hint_which_charcter');

                    
                      if(valid == false){
                            notify('error', message);
                            return false;
                        }
                    
                }
                else{

                    var rd = {
                            op: encodeURIComponent(registrationData.old_password),
                            np: encodeURIComponent(registrationData.password)
                        },
                        rd = JSON.stringify(rd);
                    blockUI('.container');
                    $.get(getBaseUrl() + 'Base/updatePassword&registartion_data=' + rd, function(data) {
                        notify(data.type, data.message);
                        unblockUI('.container');
                        if (data.type == 'success') {
                            setTimeout(function() {
                                window.location.href = '/profile?message=' + encodeURI(data.message);
                            }, 1000);
                        }
                    });
                }
            });
        },
        toggleOldPassword: function() {
            $("#toggleOldPassword").toggleClass("fa-eye fa-eye-slash");
            var input = $($("#toggleOldPassword").attr("toggle"));
            if (input.attr("type") == "password") {
                input.attr("type", "text");
            } else {
                input.attr("type", "password");
            }
        },
        togglenewPassword: function() {
            $("#togglenewPassword").toggleClass("fa-eye fa-eye-slash");
            var input = $($("#togglenewPassword").attr("toggle"));
            if (input.attr("type") == "password") {
                input.attr("type", "text");
            } else {
                input.attr("type", "password");
            }
        },
        toggleConfirmPassword: function() {
            $("#toggleConfirmPassword").toggleClass("fa-eye fa-eye-slash");
            var input = $($("#toggleConfirmPassword").attr("toggle"));
            if (input.attr("type") == "password") {
                input.attr("type", "text");
            } else {
                input.attr("type", "password");
            }
        },

    }
};

baseComponents.Dashboard = {
    name: 'Dashboard',
    template: '#DashboardTemplate',
    data: function data() {
        return {
            appData: appData,
            loaded: false,
            profile: {},
            seminars: [],
            open_requests: [],
            seminar_attendance: [],
            open_task:[],
        };
    },
    mounted: function mounted() {
        var _this = this;
        window.jqxhr_getuser.done(function () {
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            _this.loaded = true;
            _this.load();
        });
    },
    methods: {
        load: function load() {
            var _this = this;
            
            blockUI();
            
            $.post(getBaseUrl() + 'Base/upcomingSeminar',function(resp) {
                _this.seminars = resp.seminars;
            }).then(function(data2) {
                return $.post(getBaseUrl() + 'Base/getMyTrainerRequest',{"status":"1","limit":"3"},function(data){
                    _this.open_requests = data.trainer_request;
                });
            }).then(function(data2) {
                return $.post(getBaseUrl() + 'Base/getSeminarWithNoAttendance',{"limit":"2"},function(data){
                    _this.seminar_attendance = data.seminars;
                });
            }).then(function(data2) {
                var taskListParams = {
                    "model":"task-checklist-items",
                    "method":"search",
                    "params":JSON.stringify({"limit":"1","completed":"0","search_text":"","page":"1"}),
                }
                return $.get(getBaseUrl() + 'Base/search',taskListParams,function(resp){
                    var data = resp.data;
                    if(data.length > 0){
                        _this.open_task = data;
                    }

                    unblockUI();
                });
            });

            // $.post(getBaseUrl() + 'Base/getMyTrainerRequest',{"status":"1","limit":"3"},function(data){
            //     _this.open_requests = data.trainer_request;

            //     unblockUI();
            // });
            // $.post(getBaseUrl() + 'Base/getSeminarWithNoAttendance',{"limit":"2"},function(data){
            //     _this.seminar_attendance = data.seminars;

            //     unblockUI();
            // });
            // var taskListParams = {
            //     "model":"task-checklist-items",
            //     "method":"search",
            //     "params":JSON.stringify({"limit":"1","completed":"0","search_text":"","page":"1"}),
            // }
            // $.get(getBaseUrl() + 'Base/search',taskListParams,function(resp){
            //     var data = resp.data;
            //     if(data.length > 0){
            //         _this.open_task = data;
            //     }

            //     unblockUI();
            // });
            
        },
        getSeminarTitle: function(title){
            var titleArr = title.split("(")[0];
            return titleArr;
        },
        gotoManageSeminars: function gotoManageSeminars(seminarId){
            window.location.href = '/manage-seminar?seminarid='+seminarId;
        },
        goToCheckListpage: function gotoManageSeminars(){
             window.location.href = '/my-checklist';
        },
        goToTrainerRequest: function(){
            window.location.href = '/trainer-requests';
        }
    }
};

baseComponents.QualificationDetails = {
    name: 'QualificationDetails',
    template: '#QualificationDetailsTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: appData,
            details: false,
            trainers: [],
            resolvers: false,
            currentReqest: false,
            blueprint_id: false,
            cartCount: window.cartCount,
            cart: {},
            is_in_cart: false,
            OSLength: 0,
            add_to_cart_str: this.$tr('cms.book_qualification'),
            registered: false,
            event_id: getSearchParams('event_id'),
            loaded: false,
            qualificationEvents: [],
            qualification_id: false,
            errors: {
                mandatory: [],
                at_leasts: [],
                waitinglist: []
            },
            valid: false,
            status: 'confirmed',
            user: false,
            mailTo_subject: (commonComponentMethods.FtmIsEnabled('bvb-feature') ? 'BVB-Seminar' : 'SVG-Seminar'),
            show_addToCart_to_manager: false,
            img_alt: '',
            is_portal_user:false,
            is_participant:false,
        };
    },
    mounted: function mounted() {
        this.load();
    },
    methods: {

        load: function load() {

            var id = getSearchParams('qualification_id');
            this.qualification_id = id;
            if (!id) {
                notify('error', this.$tr('cms.qualification_id_is_missing'));
                return false;
            }

            var params = {
                id: id
            };
            if (this.app_loaded == false) {
                var _this = this;
                setTimeout(function() {
                    _this.load();
                }, 100);
                return false;
            }
            if (typeof user != 'undefined' && typeof user.user != 'undefined') {
                params.PersonID = user.user.PersonID;
                this.setShow_addToCart_to_manager(user.user)
            }
            params = JSON.stringify(params);
            var _this = this;
    
            blockUI();
            this.currentReqest = $.get(getBaseUrl() + 'Base/details&model=planned-qualifications&params=' + params, function(data) {
                if(window.user?.seo_settings?.seo_enable_seminar == '1'){
                    if(typeof data.data.meta_description != 'undefined' && data.data.meta_description != '' && data.data.meta_description != null){
                      document.querySelector('meta[name="description"]').setAttribute("content", data.data.meta_description);
                    }
                    if(typeof data.data.meta_keywords != 'undefined' && data.data.meta_keywords != '' && data.data.meta_keywords != null){
                      document.querySelector('meta[name="keywords"]').setAttribute("content", data.data.meta_keywords);
                    }
                    if(typeof data.data.meta_title != 'undefined' && data.data.meta_title != '' && data.data.meta_title != null){
                      document.title = data.data.meta_title;
                      _this.img_alt = data.data.meta_title;
                    }else{
                        document.title = data.data.name;
                    }
                    if(typeof data.data.image_alt_tag != 'undefined' && data.data.image_alt_tag != '' && data.data.image_alt_tag != null){
                      _this.img_alt = data.data.image_alt_tag;
                    }
                }
                _this.details = data.data;
                console.log("details",_this.details);
                console.log("details",_this.details.need_approval);
                // if (_this.details.need_approval) {
                //     _this.add_to_cart_str = _this.$tr('cms.request_for_seminar');
                //     _this.details.seminar_status = 'waiting_for_approval';
                // }
                _this.qualification_blueprint_id = _this.details.qualification_blueprint_id;
                //_this.trainers = _this.details.trainers;
                _this.resolvers = data.resolvers;
                _this.qualificationEvents = _this.details.seminars, _this.cart = window.cart;
                _this.loaded = true;
                _this.is_in_cart = cartManager.isInCart('planned-qualifications', _this.details.id);
                _this.user = $.isEmptyObject(window.user.user) ? false : window.user.user;
                unblockUI('.container');

                if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                    if (user.user.roles.indexOf("portal_user") != -1) {
                        _this.is_portal_user= true;
                    }
                }

                if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                    if (user.user.roles.indexOf("participant") != -1) {
                        _this.is_participant= true;
                    }
                }

                if(typeof user.user.roles != 'undefined' && (user.user.roles.indexOf('portal_user') != -1 || user.user.roles.indexOf('participant') != -1) && _this.details.registered == true){
                    if (window.toggles && typeof window.toggles['group-registration-creation-feature'] != 'undefined' && window.toggles['group-registration-creation-feature'].enabled == true) {
                        _this.add_to_cart_str = _this.$tr('cms.btn_register_other_participant');
                    }
                }

                window.dataLayer = window.dataLayer || [];
                window.dataLayer.push({
                  event: 'home',
                  click: {
                    'SeminarID': _this.details.id,
                    'SeminarTitle': _this.details.name,
                    'SeminarCategory': _this.details.event_category.event_category_name_de,
                    'type': 'planned-qualifications',
                  }
                });

                // Change add to cart function from plugin
                var urlParams = new URLSearchParams(window.location.href);
                var add_to_cart = urlParams.get('add_to_cart');
                
                _this.$nextTick(function() {
                    if(add_to_cart != null && add_to_cart == 1){    
                        if(typeof urlParams.get('widget_url') != "undefined" && urlParams.get('widget_url') != null){
                            var widget_url = urlParams.get('widget_url');
                        }else{
                            localStorage.removeItem("widget_url", widget_url);
                        }
                        if(typeof urlParams.get('widgetUrl') != "undefined" && urlParams.get('widgetUrl') != null){
                            var widget_url = urlParams.get('widgetUrl');
                        }else{
                            localStorage.removeItem("widget_url", widget_url);
                        }
                        var lang = urlParams.get('lang');
                        var addCartMessage = lang == 'de' ? 'Ihre Buchung wird bearbeitet, bitte warten Sie.' : 'Your booking is under process, please wait.';
                        
                        $("body").css("height", "100% !important");
                        
                        var overlay = jQuery('<div class="overlay" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 99999;text-align: center; background: #999;display: table;"><p style="display: table-cell;vertical-align:middle;">'+ addCartMessage +'</p></div>');
                        overlay.appendTo(document.body);
                        blockUI();                    
                        _this.addToCart();
                        unblockUI();
                    }else{
                        localStorage.removeItem("widget_url", widget_url);
                    }
                });
                // Code done for change add to cart function from plugin
            }).error(function() {
                unblockUI('.container');
            });
            Requests.push(_this.currentReqest);
        },
        addToCart: function addToCart() {
            var _this = this;
            if (window.toggles && typeof window.toggles['somfy-feature'] != 'undefined' && window.toggles['somfy-feature'].enabled == true) {
                if (_this.user && typeof _this.user.PersonID != 'undefined') {} else {
                    $.get(getBaseUrl() + 'Base/getProfile', function(data) {
                        if (typeof data.PersonID == 'undefined') {
                            setRedirectAndLoadLogin()
                        }
                        if (typeof window.user != 'undefined' && typeof window.user.user != 'undefined') {
                            _this.user = window.user.user;
                        }
                    }).error(setRedirectAndLoadLogin);
                    return
                }
            }
            var qualificationAddTocart = getHandler('Qualification', 'addToCart');
            qualificationAddTocart(_this);
        },
        continueAddToCart: function continueAddToCart() {
            blockUI();

            var urlParams = new URLSearchParams(window.location.href);
            var add_to_cart = urlParams.get('add_to_cart');
            if(typeof urlParams.get('widget_url') != "undefined" && urlParams.get('widget_url') != null){
                var widget_url = urlParams.get('widget_url');
            }else{
                localStorage.removeItem("widget_url", widget_url);
            }
            if(typeof urlParams.get('widgetUrl') != "undefined" && urlParams.get('widgetUrl') != null){
                var widget_url = urlParams.get('widgetUrl');
            }else{
                localStorage.removeItem("widget_url", widget_url);
            }
            var lang = urlParams.get('lang');

            var _this = this;
            //_this.details.id = 'qualification_'+_this.details.id;
            _this.details.qualification_id = _this.details.id;
            if(typeof add_to_cart != "undefined" && add_to_cart != null && add_to_cart != ''){
               _this.details.selectedEvents = [];
               _this.details.selectedElearnings = [];
               _this.details.seminar_status = 'confirmed'; 
               _this.details.add_to_cart = add_to_cart;
            }else{
                _this.details.selectedEvents = this.$refs.selectSeminars.selectedEvents;
    
                _this.details.selectedElearnings = this.$refs.selectSeminars.selectedElearnings;
    
                //_this.details.c_status = this.$refs.selectSeminars.status;
                _this.details.seminar_status = this.$refs.selectSeminars.status;
            }
            _this.details.item_type = 'qualification';

            var getParameters = getHandler('Qualification', 'getParameters');
            var params = getParameters(_this);
            console.log("params is:", params)
            $.post(getBaseUrl() + 'Base/add_to_cart', params, function(data) {

                if (data.type == 'success') {
                    _this.cart = window.cart;
                    window.cart = data.cart;
                    window.cartCount = cartManager.cartCount();
                    _this.cartCount = window.cartCount;
                    _this.is_in_cart = true;

                    window.dataLayer = window.dataLayer || [];
                    window.dataLayer.push({
                      event: 'details',
                      addToCart: {
                        'SeminarID': _this.details.id,
                        'SeminarTitle': _this.details.name,
                        'SeminarPrice': _this.details.qualification_price,
                        'SeminarCategory': _this.details.event_category.event_category_name_de,
                        'type': 'planned-qualifications',
                        'CartID': data.cart.id,
                      }
                    });

                    _this.$nextTick(function() {                        
                        var baseUrlRedirect = "Base/changeLang&redirect=";
                        var baseUrlRedirectTest = '/cart';
                        var hasParams = false;
                    
                        if (typeof lang != 'undefined' && lang != null) {
                            baseUrlRedirectTest += "?lang=" + lang;
                            hasParams = true;
                        }
                        
                        if (typeof add_to_cart != 'undefined' && add_to_cart != null) {
                            if (hasParams) {
                                baseUrlRedirectTest += "&add_to_cart=" + add_to_cart;
                            } else {
                                baseUrlRedirectTest += "?add_to_cart=" + add_to_cart;
                            }                            
                        }
                        
                        if (typeof widget_url != 'undefined' && widget_url != null) {
                            if (hasParams) {
                                baseUrlRedirectTest += "&widget_url=" + widget_url;
                            } else {
                                baseUrlRedirectTest += "?widget_url=" + widget_url;
                                hasParams = true;
                            }
                            localStorage.setItem("widget_url", widget_url);
                        }

                        baseUrlRedirect += encodeURIComponent(baseUrlRedirectTest);
                        window.location.href = getBaseUrl() + baseUrlRedirect;
                    });
                    
                } else {
                    notify(data.type, data.message);
                }
                unblockUI('.container');
            });
            $("#qualification_errors").modal('hide');

        },
        isInCart: function isInCart() {
            if (this.cart) {
                var a = 1;
            }
            return typeof window.cart['qualification_' + this.details.id] == 'undefined' ? false : true;
        },
        removeFromCart: function() {
            var _this = this;
            var lineId = cartManager.getLineId('planned-qualifications', this.details.id);
            if (lineId) {
                blockUI('.container');
                $.post(getBaseUrl() + 'Checkout/removeFromCart', {
                    line_id: lineId
                }, function(data) {
                    if (data.type == 'success') {
                        _this.cart = window.cart;
                        window.cart = data.cart;
                        window.cartCount = Object.keys(window.cart.lines).length;
                        _this.cartCount = window.cartCount;
                        _this.is_in_cart = false;

                    } else {
                        notify(data.type, data.message);
                    }
                    unblockUI('.container');
                    //menu.cartCount = window.cartCount;
                });
            }
        },
        setShow_addToCart_to_manager: function(user) {
              console.log("user",user);
            if (typeof user.roles != 'undefined' && user.roles.indexOf('manager') != -1) {
                // if (commonComponentMethods.FtmIsEnabled('bvb-feature') || commonComponentMethods.FtmIsEnabled('zeit-feature')) {
                    setTimeout(() => {
                        if(this.details.allow_direct_registration != 1){
                            this.show_addToCart_to_manager = true
                        }                    
                    }, 500);
                 //}
            }
        }
    },
    watch: {
        cartCount: function cartCount() {
            window.menu.cartCount = window.cartCount;
        }
    }
};

baseComponents.TrainerRequest = {
    name: 'TrainerRequest',
    template: '#TrainerRequestTemplate',
    props: ['pageData'],
    data:function data(){
         return {
            appData: appData,
            loaded: false,
            profile: {},
            myCoursesFilters: {
                person_id: '',
                pr_type: "my_courses"
            },
            documentFilters: {
                person_id: '',
                pr_type: "my_documents"
            },
            trainerReqFilters: {
                person_id: '',
                with: "RequestedTrainersDates,token,TrainerRequest",
                status: 'new'
            },
            checklistFilters: {
                person_id: ''
            },
            currentTab: false,
            cTab: false,
            toggles: window.toggles,
            user: false,
            status_filter:'new'
        };
    }
};



baseComponents.TrainerRequestDetails = {
    name: 'TrainerRequestDetails',
    template: '#TrainerRequestDetailsTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: appData,
            details: false,
            currentReqest: false,
            blueprint_id: false,
            token: getSearchParams('token'),
            loaded: false,
            submit_string: this.$tr('cms.can_not_attend'),
            submit_class: 'btn-gray',
            selectedDates: [],
            checkedDateIds: [],
            randId: false,
            dummyCalAttr: {
                highlight: {
                    backgroundColor: '#77B32B'
                },
                dates: [],
                contentStyle: {
                    color: '#fafafa'
                },
                popover: {
                    label: '',
                    labelItems: []
                }
            },
            calAttrs: []
        };
    },
    mounted: function mounted() {
        var date = new Date();
        this.updateCal({
            month: date.getMonth() + 1,
            year: date.getFullYear()
        });
    },
    methods: {
        updateCal: function updateCal(eventD) {
            var _this = this;
            $.get(getBaseUrl() + 'Base/getAppointments&year=' + eventD.year + '&month=' + eventD.month, function(data) {
                var attrs = {};
                for (var i in data.data) {
                    var d = data.data[i];
                    var sDate = new Date(d.start_date);
                    var eDate = new Date(d.end_date);
                    $i = 0;
                    if (eDate >= sDate) {
                        while (eDate >= sDate && i < 30) {
                            var dateStr = commonComponentMethods.dateToIso(sDate);
                            attrs[dateStr] = attrs[dateStr] ? attrs[dateStr] : JSON.parse(JSON.stringify(_this.dummyCalAttr));
                            attrs[dateStr].dates = new Date(dateStr);
                            attrs[dateStr].popover.labelItems.push(d.name);
                            sDate.setDate(sDate.getDate() + 1);
                            $i++;
                        }
                    }
                }
                var nAttrs = [];
                for (var k in attrs) {
                    attrs[k].popover.label = attrs[k].popover.labelItems.join(', ');
                    nAttrs.push(attrs[k]);
                }
                _this.calAttrs = nAttrs;
            });
        },
        popoverShown: function popoverShown(e) {
            // a dirty patch, need to find how to use slots
            if ($('.popover-origin').length > 0) {
                var _this = this;
                _this.randId = parseInt(Math.random() * 100000);
                $('.popover-origin').attr('id', _this.randId);
                $('.popover-origin .c-day-popover-indicator').remove();
                window.setTimeout(function() {
                    if ($('.popover-origin').length > 0) {
                        var html = $('.popover-origin .popover-label').html();
                        html = html.split(',').join('<br/>');
                        $('.popover-origin .popover-label').html(html);
                        $('.popover-origin').show();
                    }
                }, 700);
            }

            //console.log($('.popover-origin').length,e);
        },
        loadAfterUserLoaded: function loadAfterUserLoaded() {

            if (typeof window.user.user.PersonID == 'undefined') {
                $.post(getBaseUrl() + 'Base/setAfterLoginRedirect', {
                    'redirect_url': '/trainer-request-details?token=' + this.token
                }, function(data) {
                    window.location.href = '/login';
                });
            } else {
                var params = {
                    id: this.token,
                    by_token: "yes"
                };
                params.PersonID = window.user.user.PersonID;

                params = JSON.stringify(params);
                var _this = this;
                blockUI();
                this.currentReqest = $.get(getBaseUrl() + 'Base/details&model=requested-trainers&params=' + params, function(data) {
                    _this.details = data.data;

                    //_this.trainers = _this.details.trainers;
                    for (var i in _this.details.requested_trainers_dates) {
                        var selected = 'no';
                        if (_this.details.requested_trainers_dates[i].trainer_availability == 1 || _this.details.requested_trainers_dates[i].order_status == 1) {
                            _this.checkedDateIds.push(_this.details.requested_trainers_dates[i].id);
                            selected = 'yes';
                            _this.submit_string = _this.$tr('cms.send_intrest');
                            _this.submit_class = 'btn-primary';
                        }
                        _this.selectedDates.push({
                            id: _this.details.requested_trainers_dates[i].id,
                            selected: selected
                        });
                    }
                    _this.resolvers = data.resolvers;
                    _this.loaded = true;
                    unblockUI('.container');

                    _this.$nextTick(function() {
                        $('.large_tooltip').tooltip({
                            template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner large"></div></div>'
                        });
                        $('.tooltips').tooltip();
                        console.log(_this.$refs);
                        _this.$refs.vcal.paneWidth = 326;
                    });
                }).error(function() {
                    unblockUI('.container');
                });
                Requests.push(_this.currentReqest);
            }
        },
        dateClass: function dateClass(date) {
            var cls = '';
            if (date.trainer_availability == 1) {
                cls = 'trainer-available';
            }
            if (date.trainer_availability == 0) {
                cls = 'trainer-declined';
            }
            if (date.order_status == 1) {
                cls = 'trainer-order-confirmed';
            }
            if (date.order_status == 0) {
                cls = 'trainer-order-declined';
            }
            return cls;
        },
        getEventCat: function getEventCat(eCat) {
            if (eCat) {
                var lang = app.lang;
                var catName = lang != 'en' ? 'event_category_name_' + lang : 'event_category_name';
                return eCat[catName];
            } else {
                return "";
            }
        },
        checkDate: function checkDate() {
            this.selectedDates = [];
            var _this = this;
            var len = 0;
            $('.checked_dates').each(function() {
                var selected = 'no';
                if ($(this).is(":checked")) {
                    selected = 'yes';
                    len++;
                }
                _this.selectedDates.push({
                    id: parseInt($(this).val()),
                    selected: selected
                });
            });
            if (len > 0) {
                this.submit_string = this.$tr('cms.send_intrest');
                this.submit_class = 'btn-primary';
            } else {
                this.submit_string = this.$tr('cms.can_not_attend');
                this.submit_class = 'btn-gray';
            }
            console.log(this.selectedDates);
        },
        submit: function submit() {

            blockUI();
            $.post(getBaseUrl() + 'Base/trainerResponse', {
                selectedDates: this.selectedDates,
                notes: $('#trainer_note').val()
            }, function(data) {
                unblockUI();
                $('#TrainerRequestCheckout').modal('show');
                //notify(data.type,data.message);
                //window.location.href = window.location.href;
            });
        },
        closeCheckout: function closeCheckout() {
            window.location.href = window.location.href;
        },
        conflictTooltip: function conflictTooltip(date) {
            var res = '<div style="min-width:200px;">' + this.$tr('cms.this_date_is_booked_in_your_calender') + '<br/>';
            for (var i in date.conflicts) {
                var d = date.conflicts[i];
                res += d.name + ' ';
                if (d.start_date != d.end_date) {
                    res += '(' + this.dateFormat(d.start_date) + ' - ' + this.dateFormat(d.end_date) + ')';
                } else {
                    res += this.dateFormat(d.start_date);
                }
                res += '<br/>';
            }
            return res + '</div>';
        }

    },
    watch: {},
    computed: {
        isDisabled: function isDisabled() {
            var res = false;
            noti = typeof noti == 'undefined' ? false : noti;
            console.log(this.details.trainer_request.status, 'status');
            var expired = this.isExpired; // just to make sure it is called

            if (this.details.trainer_request.status !== 1 || expired) {
                res = true;
            }
            return res;
        },
        isEditable: function isEditable() {
            var res = false;
            $.each(this.details.requested_trainers_dates, function(index, date) {
                if (date.order_status == '1') {
                    res = true;
                }
            });
            return res;
        },
        isExpired: function isExpired() {
            var s = this.details.trainer_request.expiry_date + ' ' + this.details.trainer_request.expiry_time;
            var d = new Date(s);
            var n = new Date();
            console.log(d, 'expiry_date');
            console.log(n, 'now');
            return n > d ? true : false;
        }
    }
};

baseComponents.SeminarFeedback = {
    name: 'SeminarFeedback',
    template: '#SeminarFeedbackTemplate',
    data: function data(){
        return {
            appData: appData,
            loaded: false,
            seminarData:[],
        };
    },
    mounted: function mounted() {
        this.loadSeminarFeedback();
    },
    methods: {
        goToSeminarFeedbackDetails: function goToSeminarFeedbackDetails(seminarId){
            var url = window.location.origin+"/seminar-feedback-details?event_id="+seminarId;
            window.location.href = url;
        },
        loadSeminarFeedback: function loadSeminarFeedback(){
            var _this = this;
            _this.currentReqest = $.post(getBaseUrl() + 'Base/getFeedbackSeminars', function(data) {
                _this.loaded = true;
                _this.seminarData = data.seminars;
                if(data.seminars.length == 0){
                    notify("error",_this.$tr("cms.no_seminar_found"));
                }
            });
        },
        dateFormatSeminarFeedback: function dateFormatSeminarFeedback(date, format, force) {
            
            force = typeof force == 'undefined' ? false : force;
            highlight_expired = typeof highlight_expired == 'undefined' ? false : highlight_expired;
            format = typeof format == 'undefined' ? app_date_format_js.toUpperCase() : format;
    
            if((window.user.settings && typeof window.user.settings.simplyorg_settings != 'undefined' && window.user.settings.simplyorg_settings != null && window.user.settings.simplyorg_settings.portal_show_weekend == 1) || force){
                if (format == 'cust_format_1') {
                    format = 'dd. DD.MM.';
                } else if (format == 'cust_format_2') {
                    format = 'dd. DD.MM.YYYY';
                }
            } else {
                format = 'DD.MM.YYYY';
            }
    
            var utc = moment.tz(date, system_timezone).utc().format();
    
            return moment(utc).tz(timezone).format(format);
        },
    }
}
baseComponents.SeminarFeedbackDetails = {
    name: 'SeminarFeedbackDetails',
    template: '#SeminarFeedbackDetailsTemplate',
    data: function data(){
        return {
            appData: appData,
            loaded: false,
            seminarData:[],
            your_seminar_rating:0,
            total_avg_rating:0,
            have_analytics: false,
            language: window.app.lang == 'en' ? 'en' : 'de',
        };
    },
    mounted: function mounted() {
        this.loadSeminarFeedback();
    },
    
    computed: {
        profileImageUrl() {
          return this.appData.settings && this.appData.settings.simplyOrgUrl
            ? this.appData.settings.simplyOrgUrl + '/picture/event/' + this.seminarData.seminar.blueprint_id
            : '';
        },
        givenfeedbackWrapperClass(){
            return this.language === 'en' ? 'col-12  col-sm-12 col-md-12 col-lg-2 box text-center mr-3 given_feedback_wrapper' : 'col-12 col-sm-12 col-md-12 col-lg-2 box text-center mr-3';
        },
        participantsWrapperClass() {
            return this.language === 'en' ? 'col-12 col-sm-12 col-md-12 col-lg-2 box text-center mr-3 participants_wrapper' : 'col-12 col-sm-12 col-md-12 col-lg-2 box text-center mr-3';
          }
      },
    methods: {
        loadSeminarFeedback: function loadSeminarFeedback(){

            var _this = this;
            var currentUrl = window.location.href;
            var queryStringparams = new URL(currentUrl).searchParams;
            var seminarId = queryStringparams.get("event_id");
            $.get(getBaseUrl() + 'Base/getFeedbackFullDetails',{"event_id":seminarId}, function(data) {
                _this.loaded = true;
                _this.seminarData = data;
                _this.total_avg_rating = data.total_average_rating;
                if(app_language == "de"){
                    $('.page_feedback_details .given_feedback_wrapper .title').css({"margin-bottom":"1px !important"});
                    $('.page_feedback_details .participants_wrapper .title').css({"margin-bottom":"1px !important"});
                }
                if(_this.seminarData.status == true){
                    _this.renderAnalytics(_this.seminarData.analysis_data,seminarId);
                }
                
            });
        },
        renderAnalytics: function renderAnalytics(analysisData,seminarId){
            var _this = this;
            if(Object.keys(analysisData).length > 0){
                _this.have_analytics = true;
                _this.your_seminar_rating = parseInt(analysisData.ratings);
                $.each(analysisData.formData.questions,function(index,question){
                    question.index = index + 1;
                    question.event_id = seminarId;
                    question.form_id = _this.seminarData.seminar.form_id;
                    setTimeout(function(){
                        $('#tmplAnaQuestion').tmpl(question).appendTo('#accordion').on('shown.bs.collapse', function (e) {
                            var question_id = question.id;
                            var params = {
                                "event_id": seminarId,
                                "form_id":  _this.seminarData.seminar.form_id,
                                "question_id": question.id,
                            }
                            console.log(params);
                            var content_id = 'content_'+$(e.currentTarget).data('question_id');
                            if($('#'+content_id).data('loaded') != 'yes'){
                                $.get(getBaseUrl() + 'Base/getFeedbackQuestionFile',params, function(questionJson) {
                                    var questionJson = JSON.parse(questionJson);
                                    $('#content_'+questionJson.id).css('height','200px');
                                    if(questionJson.type == 'multiCheckbox' ||  questionJson.type == 'dropDown'){
                                        $('#content_'+questionJson.id).css('height','500px');
                                        $('#tmplOptionQuestionContent').tmpl({id:questionJson.id,avg_rating:questionJson.avg_rating,weight:questionJson.weight}).appendTo('#'+content_id);
                                        var dataProvider = questionJson.dataProvider;
                                        _this.makeChartForOptionalQuestion(questionJson.id,dataProvider);
                                        $('#table_body_'+questionJson.id).html('');
                                        $.each(dataProvider,function(index,val){
                                           $('#tmplCountTableRow').tmpl(val).appendTo('#table_body_'+questionJson.id); 
                                        });
                                    }
                                    if(questionJson.type == 'textArea' || questionJson.type == 'textBox'){
                                        $('#tmplTextQuestionContent').tmpl(questionJson).appendTo('#'+content_id);
                                        console.log(questionJson.values);
                                        for(let i in questionJson.values){
                                            $('#tmplTextValue').tmpl(questionJson.values[i]).appendTo('#list_group_'+questionJson.id)
                                        }
                                        _this.attachEventToSearchText(questionJson.id);
                                    }
                                    if(questionJson.type == 'ratings_1_to_5' || questionJson.type == 'ratings_1_to_10'){
                                        var percentRow = '<tr> <td><b>Percent</b></td>';
                                        var countsRow = '<tr> <td><b>Counts</b></td>';
                                        if (typeof questionJson.dataProvider.data != 'undefined' && questionJson.dataProvider.data.length > 0) {
                                            $.each(questionJson.dataProvider.data,function(ind,val){
                                                percentRow+='<td>'+val.percent+' %</td>';
                                                countsRow+='<td>'+val.counts+'</td>';
                                            });
                                        }
                                        percentRow+='</tr>';
                                        countsRow+='</tr>';
                                        var template = questionJson.type == 'ratings_1_to_5' ? 'tmplRatings_1_to_5_Question' : 'tmplRatings_1_to_10_Question';
                                        $('#'+template).tmpl({id: questionJson.id,avg_ratings:questionJson.dataProvider.avg_ratings,weight:questionJson.weight}).appendTo('#'+content_id);
                                        $('#table_body_'+questionJson.id).html(percentRow+countsRow);
                                    }
                                    $('#content_'+questionJson.id).css('height','auto');
                                    $('#'+content_id).data('loaded','yes');
                                });
                            }
                            window.setTimeout(function(){
                                $('.feedback_translations').each(function(){
                                    
                                    $(this).html(commonComponentMethods.$tr($(this).html()));
                                    $(this).addClass('translated');
                                })
                            },1000)
                        });
                        _this.makeChartForOptionalQuestion(question.id);
                        $('#accordion').trigger('change');
                       
                    },2000); 
                });
            }
           
            $('#accordion').collapse();
        },
        makeChartForOptionalQuestion: function makeChartForOptionalQuestion(question_id,dataProvider){
            AmCharts.translations[ "export" ][ "en" ][ "menu.label.save.image" ] ='Download As...';
            AmCharts.translations[ "export" ][ "en" ][ "menu.label.save.data" ] = 'Save as...';
            AmCharts.translations[ "export" ][ "en" ][ "menu.label.draw" ] = 'Annotate';
            AmCharts.translations[ "export" ][ "en" ][ "menu.label.print" ] = 'Print';
            var chart = AmCharts.makeChart('chart_'+question_id, {
                "theme": "light",
                "language":app_language,
                "type": "serial",
                "dataProvider": dataProvider,
                "graphs": [{
                    "balloonText": "Percent on [[category]]: [[value]]",
                    "fillAlphas": 1,
                    "lineAlpha": 0.2,
                    "title": "Percentile",
                    "type": "column",
                    "valueField": "percent"
                }],
                "depth3D": 20,
                "angle": 30,
                "rotate": true,
                "categoryField": "option",
                "categoryAxis": {
                    "gridPosition": "start",
                    "fillAlpha": 0.05,
                    "position": "left"
                },
                "export": {
                    "enabled": false
                 },
            });
            $("a[title='JavaScript charts']").remove();
        },
        attachEventToSearchText: function attachEventToSearchText(question_id){
            var content_id = 'content_'+question_id;
            $('#'+content_id+' .text_search_input').on('keyup',function(){
                var content_id = 'content_'+$(this).data('question_id');
                $('#'+content_id+' .list-group .list-group-item').hide();
                $('#'+content_id+" .list-group a:contains('"+$(this).val()+"'):lt(5)").show();
            });
            $('#'+content_id+' .list-group .list-group-item').hide();
            $('#'+content_id+' .list-group .list-group-item:lt(5)').show();
        },
        dateFormatSeminarFeedback: function dateFormatSeminarFeedback(date, format, force) {

            force = typeof force == 'undefined' ? false : force;
            highlight_expired = typeof highlight_expired == 'undefined' ? false : highlight_expired;
            format = typeof format == 'undefined' ? app_date_format_js.toUpperCase() : format;

            if((window.user.settings && typeof window.user.settings.simplyorg_settings != 'undefined' && window.user.settings.simplyorg_settings != null && window.user.settings.simplyorg_settings.portal_show_weekend == 1) || force){
                if (format == 'cust_format_1') {
                    format = 'dd. DD.MM.';
                } else if (format == 'cust_format_2') {
                    format = 'dd. DD.MM.YYYY';
                }
            } else {
                format = 'DD.MM.YYYY';
            }

            var utc = moment.tz(date, system_timezone).utc().format();

            return moment(utc).tz(timezone).format(format);
        },
        
    }
}

baseComponents.JoinWebinar = {
    name: 'JoinWebinar',
    template: '#JoinWebinarTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: appData,
            details: false,
            currentReqest: false,
            token: getSearchParams('token'),
            other_params: getSearchParams('other_params'),
            loaded: false,
            webinarStatus: 'not_started',
            isWebinarUrlExist: false,
            timer: ''
        };
    },
    mounted: function mounted() {
        this.loadData();

        this.timer = setInterval(function() {
            this.checkWebinarStarted();
        }.bind(this), 1000);
    },
    methods: {
        loadData: function() {
            this.loaded = true;

            if (typeof this.token == 'undefined' || this.token == '') {
                return false;
            }

            blockUI();

            console.log('other_params', this.other_params);

            var params = {
                id: this.token,
                by_token: "yes"
            };

            var _this = this;

            var model = 'event-attendees';
            if (typeof this.other_params != 'undefined') {
                model = 'person';
                params.other_params = this.other_params;
            }

            params = JSON.stringify(params);
            this.currentReqest = $.get(getBaseUrl() + 'Base/details&model=' + model + '&params=' + params, function(data) {
                if (data.data && data.data.length !== 0) {
                    _this.details = data.data;
                    _this.webinarStatus = _this.details.webinarStatus;

                    if (typeof _this.details.webinar_data != 'undefined' && _this.details.webinar_data != '') {
                        var webinarData = JSON.parse(_this.details.webinar_data);
                        if (_this.webinarStatus == 'started' && webinarData.joinUrl && webinarData.joinUrl != '') {
                            _this.isWebinarUrlExist = true;
                            window.open(webinarData.joinUrl, "_self");
                        }
                        else if (_this.webinarStatus == 'started' && webinarData.join_url && webinarData.join_url != '') {
                            _this.isWebinarUrlExist = true;
                            window.open(webinarData.join_url, "_self");
                        }
                    }

                    _this.resolvers = data.resolvers;
                    _this.loaded = true;
                }
                unblockUI('.container');
            }).error(function() {
                unblockUI('.container');
            });
        },
        checkWebinarStarted: function() {
            // var currDateTime = new Date();

            var utc = moment().tz(system_timezone).utc().format();
            var currDateTime = moment(utc).tz(timezone).format('YYYY-MM-DD H:mm:ss');
            console.log('currDateTime', currDateTime);

            console.log(moment(currDateTime).isBetween(this.details.webinarStartDateTime, this.details.webinarEndDateTime), 'is between');
            console.log(moment(currDateTime).isAfter(this.details.webinarEndDateTime), 'is greater')

            var webinarStartDateTime = new Date(this.details.webinarStartDateTime);
            var webinarEndDateTime = new Date(this.details.webinarEndDateTime);
            console.log('webinarStartDateTime', webinarStartDateTime);
            console.log('webinarEndDateTime', webinarEndDateTime);

            if (moment(currDateTime).isBetween(this.details.webinarStartDateTime, this.details.webinarEndDateTime)) {
                this.webinarStatus = 'started';

                if (typeof this.details.webinar_data != 'undefined' && this.details.webinar_data != '') {
                    var webinarData = JSON.parse(this.details.webinar_data);
                    if (webinarData.joinUrl && webinarData.joinUrl != '') {
                        this.isWebinarUrlExist = true;
                        clearInterval(this.timer);
                        window.open(webinarData.joinUrl, "_self");
                    }
                    else if (webinarData.join_url && webinarData.join_url != '') {
                        this.isWebinarUrlExist = true;
                        clearInterval(this.timer);
                        window.open(webinarData.join_url, "_self");
                    }
                }

                if (this.webinarStatus == 'started' && !this.isWebinarUrlExist) {
                    clearInterval(this.timer);
                }
            } else if (moment(currDateTime).isAfter(this.details.webinarEndDateTime)) {
                this.webinarStatus = 'ended';
            } else {
                this.webinarStatus = 'not_started';
            }
        }
    },
    beforeDestroy: function() {
        clearInterval(this.timer);
    },
    watch: {
        webinarStatus: function(val) {

        }
    },
    computed: {

    }
};

baseComponents.TrainerCalendar = {
    name: 'TrainerCalendar',
    template: '#TrainerCalendarTemplate',
    mounted: function mounted() {},
    data: function data() {
        return {
            appData: appData
        };
    }
};
baseComponents.DocumentCategory = {
    name: 'DocumentCategory',
    template: '#DocumentCategoryTemplate',
    mounted: function mounted() {},
    data: function data() {
        return {
            appData: appData,
            loaded: true
        };
    }
};
baseComponents.DocumentCategoryType = {
    name: 'DocumentCategoryType',
    template: '#DocumentCategoryTypeDetailsTemplate',
    mounted: function mounted() {

    },
    created: function() {

    },
    data: function data() {
        return {
            appData: appData,
            loaded: true
        };
    }
};
baseComponents.LandingPage = {
    name: 'LandingPage',
    template: '#LandingPageTemplate',
    mounted: function mounted() {
        $(".sliderContainer").closest('.container').removeClass('container main_wrapper')
        $(".slider").slick({
            infinite: true,
            arrows: false,
            dots: false,
            autoplay: false,
            speed: 1000,
            slidesToShow: 1,
            slidesToScroll: 1,
            fade: true,
            cssEase: 'linear'
        });

        //ticking machine
        $('.progressBarContainer .progressBar').each(function(index) {
            var progress = "<div class='inProgress inProgress" + index + "'></div>";
            $(this).html(progress);
        });

        let totalSlides = $('.progressBarContainer .progressBar').length
        let eachProgressDivWidth = (100 / totalSlides)
        $('.progressBarContainer div').css({
                width: 'calc((' + eachProgressDivWidth + '%) - (2%))'
            })
            // alert($('.progressBarContainer .progressBar').length)

        startProgressbar();
        // End ticking machine

        $('.progressBarContainer div').click(function() {
            clearInterval(tick);
            var goToThisIndex = $(this).find("span").data("slickIndex");
            $('.single-item').slick('slickGoTo', goToThisIndex, false);
            startProgressbar();
        });
        // $("#register_btn").click(function() {
        //     $(".login_form_wrapper").hide();
        //     $(".register_form_wrapper").show();
        // });
        // $("#signin_btn").click(function() {
        //     $(".register_form_wrapper").hide();
        //     $(".login_form_wrapper").show();
        // });
    },
    data: function data() {
        return {
            appData: appData,
            loaded: true,
            sliderUrl: ''
        };
    },
    methods: {
        userIpBasedRedirection: function(event, ele) {
            let _this = this
            if (_this.sliderUrl == '') {
                $.get(getBaseUrl() + 'Base/getCountryUrl', function(data) {
                    _this.sliderUrl = data.data
                        // _this.$nextTick(function() {
                    _this.openInNewTab(_this.sliderUrl)
                        // })
                })
            } else {
                _this.openInNewTab(_this.sliderUrl)
            }
        },
        openInNewTab: function(url) {
            var win = window.open(url, '_blank');
            win.focus();
        }
    }
};

baseComponents.SeminarCourseType = {
    name: 'SeminarCourseType',
    template: '#SeminarCourseTypeTemplate',
    mounted: function mounted() {},
    data: function data() {
        return {
            appData: appData,
            loaded: false,
            tabQueryString: '',
            allSeminarBtnText: this.$tr('cms.all_seminars')
        };
    },
    mounted: function() {
        this.load()
        let tab = getSearchParams('tab')
        this.tabQueryString = tab ? 'tab=' + tab : ''

        if (tab == 'Qualification') {
            this.allSeminarBtnText = this.$tr('cms.all_seminar_series')
        } else if (tab == 'Seminar') {
            this.allSeminarBtnText = this.$tr('cms.all_seminars')
        } else if (tab == 'ELearning') {
            this.allSeminarBtnText = this.$tr('cms.all_e_learning')
        }
    },
    methods: {
        load: function() {
            var _this = this;
            _this.loaded = true;
            // blockUI();
            // $.get(getBaseUrl() + 'Base/getProfile', function (data) {
            //     if (typeof data.PersonID == 'undefined') {
            //         setRedirectAndLoadLogin()
            //     }
            //     if (typeof window.user != 'undefined' && typeof window.user.user != 'undefined') {
            //         _this.user = window.user.user;
            //     }
            //     _this.loaded = true;
            //     unblockUI();
            // });
        }
    }
};

function addtoCart(_this, params) {
    blockUI('.container');

    if (_this.details.is_hybrid == 1 && _this.details.is_on_premise == 1 && _this.details.is_on_digital == 1) {
        _this.details.hybridRegistrationType = _this.hybridRegistrationType
        $('#registration_type_modal').modal('hide');
    }
    else if (_this.details.is_hybrid == 1 && _this.details.is_on_premise == 1 && _this.details.is_on_digital == 0) {
        _this.hybridRegistrationType = 'onsite'
        _this.details.hybridRegistrationType = _this.hybridRegistrationType;
    }
    else if (_this.details.is_hybrid == 1 && _this.details.is_on_premise == 0 && _this.details.is_on_digital == 1) {
        _this.hybridRegistrationType = 'digital'
        _this.details.hybridRegistrationType = _this.hybridRegistrationType;
    }
    else if (_this.details.event_type == 'event') {
        _this.hybridRegistrationType = 'onsite'
        _this.details.hybridRegistrationType = _this.hybridRegistrationType;
    }
    else if (_this.details.event_type == 'webinar') {
        _this.hybridRegistrationType = 'digital'
        _this.details.hybridRegistrationType = _this.hybridRegistrationType;
    }

    if (typeof gtag != 'undefined') {
        var label = _this.details.event_name ?
            _this.details.event_name :
            (_this.details.name ? _this.details.name : 'Seminar');

        gtag('event', 'added_to_cart', {
            'event_category': 'cart',
            'event_label': label,
            'value': _this.details.id
        });

    }

    // Waiting List Registration
    if (_this.details.seminar_status == 'waitinglist') {
        unblockUI('.container');
        /*
            Check if login is there
        */
        if (typeof window.user.user.PersonID == "undefined") {
            setRedirectAndLoadLogin();
            setTimeout(function() {
                window.location.href = "/login";
            }, 1000)
            return false;
        } else {

            var userRoles = window.user.user.roles;
            if (userRoles.indexOf('manager') == -1) {
                
                if($( ".appliation_form_id" ).attr('data-mandatory') == 1 ){
                    arr_status = $( '.appliation_form_id' ).attr('data-status');
                    if( arr_status == 0) {
                        unblockUI('.container');
                        notify('error', 'Please fill application form for seminar(s)');
                        return false;
                    }
                }
            }

            var arr_answer = [];
            var application_form_id = 0;
            if($(".appliation_form_id").length > 0){
                $( ".appliation_form_id" ).each(function( index ) {

                    application_form_id = $(this).attr('data-app_id');

                    if($( this ).attr('data-answer') != undefined && $( this ).attr('data-answer') != ''){
                        arr_answer.push({'person':$( this ).attr('data-person_id'), 'answer':$( this ).attr('data-answer'),'form_status': $( this ).attr('data-status') });
                    }
                });
            }

            bootbox.confirm({
                message: _this.$tr('cms.moreThenSpaceAvailableRegistrationWarning'),
                buttons: {
                    'cancel': {
                        label: _this.$tr('cms.cancel'),
                        className: 'btn-default pull-right'
                    },
                    'confirm': {
                        label: _this.$tr('cms.ok'),
                        className: 'btn-primary pull-right'
                    }
                },
                callback: function(response) {
                    if (response) {
                        blockUI('.container');
                        var params = {
                            id: this.token
                        };
                        params.PersonID = window.user.user.PersonID;
                        params.eventID = _this.details.id;
                        params.seminar_status = _this.details.seminar_status;
                        params.lang = app.lang;
                        params.application_answer = arr_answer;
                        params.application_form_id = application_form_id;
                        params.hybridRegistrationType = _this.hybridRegistrationType;
                        params.cms = true;
                        params = JSON.stringify(params);

                        this.currentReqest = $.post(getBaseUrl() + 'Base/search&model=event-attendees&method=register-participant&params=' + params, function(data) {
                            unblockUI('.container');
                            _this.registered = true;
                            notify(data.type, data.message);
                            return false;
                        }).error(function() {
                            unblockUI('.container');
                        });
                        Requests.push(_this.currentReqest);

                    }

                }
            });
            return false;
            //$('#waitingListFeatureMessage').modal('show');

        }
    }

    // Direct Registration
    if (_this.details.allow_direct_registration == 1) {

        /*
            Check if login is there
        */
        var params = {
            id: this.token
        };

        if (_this.is_guest_booking) {
            params.FirstName = _this.FirstName;
            params.LastName = _this.LastName;
            params.Email = _this.Email;
            params.policy = _this.policy;
            params.is_guest_booking = _this.is_guest_booking;
        }
        else {
            if (typeof window.user.user.PersonID == "undefined") {
                // setRedirectAndLoadLogin();
                setTimeout(function () {
                    let returnBack = 'event-details?event_id=' + _this.details.id;
                    window.location.href = "/login?redirect=" + returnBack;
                }, 1000)
                return false;
            }
            else {
                params.PersonID = window.user.user.PersonID;
                params.drPersonIds = (typeof appData.attendee_person_ids != 'undefined' && appData.attendee_person_ids.length > 0) ? appData.attendee_person_ids.join(',') : '';
            }
        }

        /*Check application form is filled or not*/

        var userRoles = window.user.user.roles;
        if (userRoles.indexOf('manager') == -1) {
                
            if($( ".appliation_form_id" ).attr('data-mandatory') == 1 ){
                arr_status = $( '.appliation_form_id' ).attr('data-status');
                if( arr_status == 0) {
                    unblockUI('.container');
                    notify('error', 'Please fill application form for seminar(s)');
                    return false;
                }
            }
        }

        var arr_answer = [];
        var application_form_id = 0;
        if($(".appliation_form_id").length > 0){
            $( ".appliation_form_id" ).each(function( index ) {

                application_form_id = $(this).attr('data-app_id');

                if($( this ).attr('data-answer') != undefined && $( this ).attr('data-answer') != ''){
                    arr_answer.push({'person':$( this ).attr('data-person_id'), 'answer':$( this ).attr('data-answer'),'form_status': $( this ).attr('data-status') });
                }
            });
        }

        /*Complete application form is filled or not*/
        
        if (typeof window.user.user.roles != 'undefined' && window.user.user.roles.indexOf('manager') != -1 && window.user.user.OrganizationID) {
            if (typeof appData.attendee_person_ids == 'undefined' || appData.attendee_person_ids.length <= 0) {
                unblockUI('.container');
                notify('error', _this.$tr('cms.please_select_participants'));
                return false;
            }
        }

        params.eventID = _this.details.id;
        params.seminar_status = _this.details.seminar_status;
        params.send_mail_to_participant = 1;
        params.lang = app.lang;
        params.application_answer = arr_answer;
        params.application_form_id = application_form_id;
        params.hybridRegistrationType = _this.hybridRegistrationType;
        params = JSON.stringify(params);
            
        $(".drparticipants").css("pointer-events", "none");
        this.currentReqest = $.post(getBaseUrl() + 'Base/search&model=event-attendees&method=register-participant&params=' + params, function (data) {
            // unblockUI('.container');
            setTimeout(function () {
                unblockUI('.container');
            }, 2000)
            notify(data.type, data.message);

            if (data.type == 'success') {
                appData.attendee_person_ids = '';
                // _this.registered = true;
                if (_this.is_guest_booking) {
                    _this.closeGuestBookingForm();
                }
                else {
                    if (typeof user.user.roles != 'undefined' && user.user.roles.indexOf("manager") != -1 && user.user.OrganizationID) {}
                    else {
                        _this.registered = true;
                    }

                    $("#drAddedParticipantsDiv").load(window.location + " #drAddedParticipantsDiv");
                    appData.attendee_person_ids = '';
                    
                    if (_this.$refs.DirectRegistrationParticipants) {
                        _this.$refs.DirectRegistrationParticipants.attendee_person_list = [];
                    }
                }
                
            }
            
            return false;
        }).error(function () {
            unblockUI('.container');
        });
        Requests.push(_this.currentReqest);
        return false;
    }
    
    $.post(getBaseUrl() + 'Base/add_to_cart', {
        cartItem: {
            id: _this.details.id,
            item: _this.details,
            quantity: 1,
            model: 'planned-event',
            seminar_status: _this.details.seminar_status,
            params: params
        }
    }, function(data) {
        if (data.type == 'success') {
            _this.cart = window.cart;
            window.cart = data.cart;
            window.cartCount = cartManager.cartCount();
            _this.cartCount = window.cartCount;

            _this.is_in_cart = true;

            window.dataLayer = window.dataLayer || [];
            window.dataLayer.push({
              event: 'details',
              addToCart: {
                'SeminarID': _this.details.id,
                'SeminarTitle': _this.details.event_name,
                'SeminarBeginDate': _this.details.event_startdate,
                'SeminarPrice': _this.details.event_price,
                'SeminarCategory': (_this.details.event_category && _this.details.event_category.event_category_name_de) || '',
                'type': 'planned-event',
                'CartID': data.cart.id,
              }
            });
        } else {
            notify(data.type, data.message);
        }
        unblockUI('.container');

    });
}

function qualificationAddTocart(_this) {
    var urlParams = new URLSearchParams(window.location.href);
    var add_to_cart = urlParams.get('add_to_cart');
        
    if((typeof add_to_cart == 'undefined' || add_to_cart == '' || add_to_cart == null)){
        if ((!_this.$refs.selectSeminars.isValid() || _this.$refs.selectSeminars.status == 'waitinglist')) {
    
            _this.valid = _this.$refs.selectSeminars.valid;
            _this.status = _this.$refs.selectSeminars.status;
            _this.errors = _this.$refs.selectSeminars.errors;
            $("#qualification_errors").modal('show');
            return false;
        } else {
            _this.continueAddToCart();
        }
    } else {
        _this.continueAddToCart();
    }
}

function redirectAfterLogin(data) {
    var redirect = getSearchParams('redirect');
    var calcUrl = '/';
    if (typeof redirect == 'undefined') {
        if (data.redirect_url) {
            calcUrl = data.redirect_url;
        } else {
            calcUrl = '/home';
        }
    } else {
        calcUrl = redirect;
    }
    if (isUrlAbsolute(calcUrl)) {
        if (!isOriginSameAsLocation(calcUrl)) {
            calcUrl = '/';
        }
    }
    window.location.href = calcUrl;
}

function getQualificationParameters(_this) {

    return {
        cartItem: {
            id: _this.details.id,
            item: _this.details,
            quantity: 1,
            model: 'planned-qualifications',
            seminar_status: _this.details.seminar_status,
            selectedEvents: _this.details.selectedEvents,
            selectedElearnings: _this.details.selectedElearnings,

        }
    }
}

function isOriginSameAsLocation(url) {
    var pageLocation = window.location;
    var URL_HOST_PATTERN = /(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/;
    var urlMatch = URL_HOST_PATTERN.exec(url) || [];
    var urlparts = {
        protocol: urlMatch[1] || '',
        host: urlMatch[2] || '',
        port: urlMatch[3] || ''
    };

    function defaultPort(protocol) {
        return { 'http:': 80, 'https:': 443 }[protocol];
    }

    function portOf(location) {
        return location.port || defaultPort(location.protocol || pageLocation.protocol);
    }

    return !!((urlparts.protocol && (urlparts.protocol == pageLocation.protocol)) &&
        (urlparts.host && (urlparts.host == pageLocation.host)) &&
        (urlparts.host && (portOf(urlparts) == portOf(pageLocation)))
    );
}

function isUrlAbsolute(url) {
    return (url.indexOf('://') > 0 || url.indexOf('//') === 0);
}

baseComponents.StudyDetails = {
    name: 'StudyDetails',
    template: '#StudyDetailsTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: appData,
            details: false,
            trainers: [],
            trainer_settings: [],
            resolvers: false,
            currentReqest: false,
            blueprint_id: false,
            cartCount: window.cartCount,
            cart: {},
            is_in_cart: false,
            OSLength: 0,
            add_to_cart_str: this.$tr('cms.book_seminar'),
            registered: false,
            event_id: getSearchParams('event_id'),
            loaded: false,
            do_not_show_cart_buttons: false,
            user: false,
            showAddParticipants: false,
            show_other_schedules: false,
            is_trainer: false,
            mailTo_subject: (commonComponentMethods.FtmIsEnabled('bvb-feature') ? 'BVB-Seminar' : 'SVG-Seminar'),
            show_addToCart_to_manager: false,
            trainer_settings: [],
            selected_payment_plan_id: 0,
            selected_payment_plan_price: 0,
            show_intro_video: true,
            selected_original_plan_price: 0,
            plan_discount_applicable: false,
            plan_discount_amount: 0,
            plan_discount_type: '',
            plan_discount_desc: '',
            show_form:'',
            syllabus: []
        };
    },
    mounted: function mounted() {
        this.load();
        this.directAddToCart();
    },

    created: function created() {},

    methods: {
        
        load: function load() {

            var study_id = getSearchParams('id');
            
            if (!study_id) 
            {
                notify('error', this.$tr('cms.study_id_is_missing'));
                return false;
            }
            
            var params = { id: study_id, lang: this.$root.lang };
            
            if (typeof user != 'undefined' && typeof user.user != 'undefined') {
                this.setShow_addToCart_to_manager(user.user)
                params.PersonID = user.user.PersonID;
            }

            params = JSON.stringify(params);
            
            var _this = this;

            this.loadSyllabus(study_id);
            
            blockUI();
            
            this.currentReqest = $.get(getBaseUrl() + 'Base/details&model=study-template&params=' + params, function(data) {

                if(data.data == null || data.data == '')
                {
                    notify('error', _this.$tr('cms.study_id_is_missing'));
                    unblockUI('.container');
                    setTimeout(function(){window.location.href = '/home';},2000);
                    return false;       
                }
                
                _this.details = data.data;

                var today = new Date();                          
                var todayDate = moment(today).format("YYYY-MM-DD");

                _this.trainer_settings = data.data.trainer_settings;
                
                if (_this.details.show_on_online_portal != 1) {
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                } else if (_this.details.length === 0) {
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                } else if (_this.details.status != 'Active') {
                    alert(_this.$tr('cms.unpublish_event_link_error_msg'));
                    window.location.href = '/home';
                } else {
                    _this.blueprint_id = _this.details.id;
                    _this.trainers = _this.details.trainers;
                    _this.trainer_settings = _this.details.trainer_list;
                    _this.resolvers = data.resolvers;
                    _this.cart = window.cart;

                    if(_this.details.is_registration_closed === true) {
                        _this.do_not_show_cart_buttons = true;
                    }
                    
                    if (_this.details.studyattendees_count >= _this.details.max_participant) {
                        _this.add_to_cart_str = _this.$tr('cms.book_seminar_waiting_list');
                        _this.details.seminar_status = 'waitinglist';
                        _this.show_form = 'waitinglist';

                    }
                    else {
                        if (_this.details.need_approval) {
                            _this.add_to_cart_str = _this.$tr('cms.request_for_study_approval');
                            _this.details.seminar_status = 'waiting_for_approval';
                        }
                        else {
                            if (_this.details.allow_direct_registration == 1) {
                                _this.add_to_cart_str = _this.$tr('cms.btn_direct_registration');
                                _this.details.seminar_status = 'confirmed';
                            }
                            else {
                                _this.add_to_cart_str = _this.$tr('cms.book_seminar');
                                _this.details.seminar_status = 'confirmed';
                            }
                        }
                    }

                    _this.registered = _this.details.user_registered;
                    _this.is_in_cart = cartManager.isInCart('study-registration', _this.details.id);
                    _this.loaded = true;
                    _this.user = $.isEmptyObject(window.user.user) ? false : window.user.user;
                    
                    /*
                    var SocialMetaPropertyUpdate = getHandler('EventDetails', 'SocialMetaPropertyUpdate');
                    SocialMetaPropertyUpdate(_this.details);
                    setTimeout(function() {
                        var openMapStreet = getHandler('EventDetails', 'openMapStreet');
                        openMapStreet(_this, _this.details);
                    }, 500);
                    */

                    $.each(_this.trainers, function(index, trainer) {
                        if (trainer.PersonID == _this.user.PersonID) {
                            _this.is_trainer = true;
                        }
                    });

                    if (typeof user != 'undefined' && typeof user.user != 'undefined' && 'roles' in user.user && user.user.roles.indexOf("manager") != -1 && user.user.OrganizationID) {
                        _this.registered = false;
                    }

                    _this.setPaymentDefaultSelection();
                    _this.addVideoEvents();
                    
                }

                if (typeof description != 'undefined') {
                    unblockUI('.container');
                    _this.details.event_description_type = description;
                    $('.main_wrapper').attr('class','');
                }

                unblockUI('.container');
               
            }).error(function() {
                unblockUI('.container');
            });

            Requests.push(_this.currentReqest);
        },

        setPaymentDefaultSelection: function() {
            var _this = this;

            if(_this.details.paymentplan != '') {
                
                _this.details.paymentplan.forEach(function(payment) {
                    if(payment.is_default_plan == 1) {
                        _this.selected_payment_plan_id = payment.id;
                    }
                });
            }
        },

        setPaymentPlanSelection: function() {

            var _this = this;

            if(_this.details.paymentplan != '') {
                
                _this.details.paymentplan.forEach(function(payment) {
                    if(_this.selected_payment_plan_id > 0 && _this.selected_payment_plan_id == payment.id) {
                        _this.selected_payment_plan_price = payment.degree_plan_fee;
                        _this.selected_original_plan_price = payment.original_price;
                        
                        _this.plan_discount_applicable = false;
                       
                        if(_this.details.price_rule != null){
                            _this.details.price_rule.forEach(function(rule) {
                                if(rule.payment_plan_id == _this.selected_payment_plan_id){
                                    _this.plan_discount_applicable = true;
                                    _this.plan_discount_amount = (rule.discount_type == 'percent') ? rule.amount : rule.discount;
                                    _this.plan_discount_type = rule.discount_type;
                                    _this.plan_discount_desc = rule.rule_name;
                                }
                            });
                        }
                    }
                })
            }
        },

        directAddToCart: function() {

            var _this = this;
            
            var urlParams = new URLSearchParams(window.location.href);
            
            var add_to_cart = urlParams.get('add_to_cart');    
            var widget_url = urlParams.get('widget_url')
            var lang = urlParams.get('lang');
            
            var addCartMessage = lang == 'de' ? 'Ihre Buchung wird bearbeitet, bitte warten Sie.' : 'Your booking is under process, please wait.';
            
            if(add_to_cart != null && add_to_cart == 1)
            {
                $("body").css("height", "100% !important");
                
                var overlay = jQuery('<div class="overlay" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 99999;text-align: center; background: #999;display: table;"><p style="display: table-cell;vertical-align:middle;">'+ addCartMessage +'</p></div>');
                
                overlay.appendTo(document.body);
                
                blockUI();           
                
                setTimeout(() => {
                    if(_this.details.studyattendees_count < _this.details.max_participant){
                        _this.addToCart();
                        unblockUI();
                        var baseUrlRedirect = "Base/changeLang&redirect=/cart";
                        if(typeof lang != 'undefined' && lang != null){
                            baseUrlRedirect += "?lang="+lang;
                        }
                        if(typeof lang != 'undefined' && lang != null &&typeof widget_url != 'undefined' && widget_url != null){
                            baseUrlRedirect += '&widget_url='+ widget_url
                        }else if(typeof widget_url != 'undefined' && widget_url != null){
                            baseUrlRedirect += '?widget_url='+ widget_url
                        }
                        window.location.href = getBaseUrl() + baseUrlRedirect;

                        // window.location.href = getBaseUrl() + "Base/changeLang&redirect=/cart&lang="+lang+'&widget_url='+ widget_url;
                    }else{

                        document.body.remove(overlay);
                        window.location.href = getBaseUrl() + "Base/changeLang&redirect=/studydetails?id="+_this.details.id+"&lang="+lang+'&widget_url='+ widget_url;

                    }
                }, 1000);               
            }

        },

        addToCart: function addToCart() {
            var _this = this;
            var addToCart = getHandler('Study', 'addToCart');
            addToCart(_this, []);
            setTimeout(() => {
                $(".blockOverlay").css("display", "none");
                $(".blockMsg").css("display", "none");
            }, 200);
        },
        isInCart: function isInCart() {
            if (this.cart) {
                var a = 1;
            }
            return typeof window.cart[this.details.id] == 'undefined' ? false : true;
        },
        removeFromCart: function removeFromCart() {
            var _this = this;
            var lineId = cartManager.getLineId('study-registration', this.details.id);
            if (lineId) {
                blockUI('.container');
                $.post(getBaseUrl() + 'Checkout/removeFromCart', {
                    line_id: lineId
                }, function(data) {
                    if (data.type == 'success') {
                        _this.cart = window.cart;
                        window.cart = data.cart;
                        window.cartCount = cartManager.cartCount();
                        _this.cartCount = window.cartCount;
                        _this.is_in_cart = false;

                    } else {
                        notify(data.type, data.message);
                    }
                    unblockUI('.container');
                    //menu.cartCount = window.cartCount;
                });
            }
        },
        extractLoc: function extractLoc(opt, locationStr) {
            var res = '';
            if (typeof locationStr == 'string') {
                var locs = locationStr.split(' ### ');
                var loc = locs[0];
                loc = loc.split(' --- ');
                console.log("locationStr", locationStr);
                console.log("loc", loc);
                switch (opt) {
                    case "City":
                        res = typeof loc[4] == 'undefined' ? '' : loc[4];
                        break;
                    case "LocationName":
                        res = typeof loc[1] == 'undefined' ? '' : loc[1];
                        break;
                    case "Street":
                        res = typeof loc[2] == 'undefined' ? '' : loc[2];
                        break;
                    case "Zip":
                        res = typeof loc[3] == 'undefined' ? '' : loc[3];
                        break;
                    default:
                        res = '';
                }
            }
            return res;
        },
        setShow_addToCart_to_manager: function(user) {
            if (typeof user.roles != 'undefined' && user.roles.indexOf('manager') != -1 && typeof user.OrganizationID != 'undefined' && user.OrganizationID > 0) {
                setTimeout(() => {
                    if(this.details.allow_direct_registration != 1){
                        this.show_addToCart_to_manager = true
                    }                    
                }, 500);
            }
        },
        closeTrainerDetailsModal: function(){
            $('#trainerDetailsModal').modal('hide');
        },
        openTrainerDetailsModal: function(trainer){
            var html = "";
            if(trainer.is_show_description_portal == 1 || trainer.is_show_description_portal == "1"){
                html += "<div><label><b>"+this.$tr('cms.trainer_description')+"</b></label>";
                html += "<div style='word-wrap: break-word; word-break: break-all;'>"+trainer.description+"</div></div>";
            }
            
            if(trainer.is_show_qualification_portal == 1 || trainer.is_show_qualification_portal == "1"){
                html +="<div><label><b>"+this.$tr('cms.trainer_qualification')+"</b></label>";
                html += "<div style='word-wrap: break-word; word-break: break-all;'>"+trainer.qualification+"</div></div>";
            }
            
            if(trainer.is_show_awards_portal == 1 || trainer.is_show_awards_portal == "1"){
                html += "<div><label><b>"+this.$tr('cms.trainer_awards')+"</b></label>";
                html += "<div style='word-wrap: break-word; word-break: break-all;'>"+trainer.awards+"</div></div>";
            }
            if(html == ""){
                html += "<p><div class='alert alert-info'>"+this.$tr('cms.study_no_info')+"</div>";
            }
            $("#trainerDetailsModal .modal-body").html(html);
            $('#trainerDetailsModal').modal('show');
        },
        openEnquiryModal: function() {
            if($("#study-enquiry-modal").length > 0) {
                $("#study-enquiry-modal").modal('show');
            }
        },
        manageCollapse: function(id) {
            let _this = this;
            setTimeout(function(){
                if(_this.selected_payment_plan_id == id) {
                    $("#collapse"+id).collapse('show');
                }
            },100);
        },
        openOtherPlans() {
          
          var target = $("#my-payment-plan");
          var body = $("html, body");
          
          body.stop().animate({ scrollTop: target.offset().top }, 500, 'swing', function() { 
            target.click();
          });

        },
        showVideoModal() {
            if($('#videoModal').length > 0){
                this.show_intro_video = true;
                $('#videoModal').modal('show');
            }
        },
        addVideoEvents() {
            this.$nextTick(() => {
                $('#videoModal').on('hidden.bs.modal',() => {
                    this.show_intro_video = false;
                });
            });
        },
        openApplicationForm: function(person_id,application_form_id,form_mandatory) {
            var _this = this;
            var answer_data = $('#id_'+application_form_id+'_'+person_id).attr('data-answer');

            if(answer_data == undefined){
                answer_data = [];
            }else{
                answer_data = $.parseJSON(answer_data);
            }
           
            $.post(getBaseUrl() + 'Checkout/getApplicationFormForFreeBooking', {
                application_form_id: application_form_id,person_id:person_id
            }, function (data) {

                $('#survey_form_id').html('');
                $('#view_form_modal').modal('show');
                $('#survey_form_id').html('');

                $('#survey_form_id').surveyBuilder({displayOption:'front',data:data.data.jdata});
                $('#view_form_modal .feedbacksubmitbutton').html(_this.$tr('cms.submit'));
                $('#view_form_modal .close_btn').html(_this.$tr('cms.close'));
                $('#view_form_modal #allownumericwithdecimal').attr("placeholder", _this.$tr('cms.add_number'));
                $('#view_form_modal .select_any_one').html(_this.$tr('cms.select_any_one'));
                if(data.data.header_image != '' && data.data.header_image != null){
                    $('#surveyTitle').after('<div class="tqdetails img_div"><img src="'+data.data.header_image+'">'+data.data.headerContent+'</div>');
                }else{
                    $('#surveyTitle').after('<div class="tqdetails img_div">'+data.data.headerContent+'</div>');
                }
                if(data.data.footer_image != '' && data.data.footer_image != null){
                    $('#questionsContainer').after('<div class="tfooter img_div"><img src="'+data.data.footer_image+'">'+data.data.footerContent+'</div>');
                }else{
                     $('#questionsContainer').after('<div class="tfooter img_div">'+data.data.footerContent+'</div>');
                }

                $('#surveyTitle p').remove('');
                $('#survey_form_id li').css('list-style', 'none');

                let question = data.data.jdata.questions;
                let answer = answer_data;
                var input_string = '';

                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let qtype = question[ii].type;
                    let qChecked = question[ii].multipleChk;

                    if(qtype == "file_upload" && qChecked == 'checked')
                    {
                        $('#'+qid).find('.file_upload').attr('multiple','multiple');
                    }
                }

                
                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let qtype = question[ii].type;
                    let qChecked = question[ii].multipleChk;
                    let qmandatory = question[ii].mandatory;

                    if(qtype == "file_upload" && qChecked == 'checked')
                    {
                        $('#'+qid).find('.file_upload').attr('multiple','multiple');
                    }

                    if(qtype == "file_upload" && answer[qid] != '' && typeof answer[qid] != 'undefined')
                    {
                        let image_list = answer[qid];
                        answer[qid] = '';

                        if (typeof image_list === "string") {

                            let image_list_arr = image_list.split(',');
                            let image_html = '';

                            for(var kk=0; kk < image_list_arr.length; kk++)
                            {   

                                var image_ext = image_list_arr[kk].split('.');
                                if(image_ext[1] == 'jpg' || image_ext[1] == 'png' || image_ext[1] == 'jpeg' || image_ext[1] == 'gif')
                                {
                                    var tenant_name = window.user.tenant_settings.tenant_name;
                                    var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                    var src =  simplyOrgUrl+'app/tenancy/tenants/'+tenant_name+'/upload_form_doc/'+image_list_arr[kk];

                                }else{
                                    var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                    var src = simplyOrgUrl+'images/file-icon.png';
                                }
                                image_html += '<div class="img_upload_div" data-name="'+image_list_arr[kk]+'">';
                                image_html += '<img height="150px" width="150px" src="'+src+'" /><br/><i style="cursor:pointer" class="fa fa-trash img_delete" id="img_'+qid+'" data-name="'+image_list_arr[kk]+'"></i>';
                                image_html += '</div>';
                            }
                            $(".file_upload_class_"+qid).append(""+image_html+"");
                            input_string += "<input type='hidden' id='input_"+qid+"' name='input_"+qid+"' value='"+image_list+"'>";
                        }

                    }
                }
                
                SBManager.fillValues(answer_data);

                $('.file_extention, .multiple_file, .file_action, #start_value, #end_value').css('display','none');

                $( '#questionsContainer > li' ).each(function() {
                    var li_id = $(this).attr('id');

                    $('#'+li_id).find('.tooltipclass').hide();
                    $('#'+li_id).find('.questionclass').css('width','100%');
                    $('input[name=file_upload]').css('width','100%');
                    var tooltip_info = $('#'+li_id).find('.tooltipclass .editable').html();

                    if($('#'+li_id).attr('data-ismandatory') == "checked"){
                        $('#'+li_id).find('.questionclass .editable').prepend('<label class="required-field" style="color:red">* </label>');
                    }

                    $('#'+li_id).find('.answerDiv .form-md-line-input').css('margin-right','180px');

                    if(tooltip_info != '' && tooltip_info != 'undefined' && $('#'+li_id).find('.questionclass .tool_tip').length == 0){
                        $('#'+li_id).find('.questionclass .editable').append('<i class="fa fa-info-circle tool_tip" aria-hidden="true" style="cursor:pointer" title="'+tooltip_info+'"></i>');
                    }

                    if($('#'+li_id).hasClass('optionalClass')){
                        $('#'+li_id).find('.optionTitle span').html('');
                        var input_val = $('#'+li_id).find('input').val();
                        if(input_val == ''){
                            $('#'+li_id).css('display','none');
                        }

                        $('#'+li_id).find('.questionIndex').remove();
                    }

                    var start_value = $('#'+li_id+' #start_value').val();
                    var end_value = $('#'+li_id+' #end_value').val();
                    var range_value = $('#'+li_id+' #slider_value').val();

                    if(start_value != '' && end_value != ''){
                        $('#'+li_id+' #myRange').attr('min',start_value);
                        $('#'+li_id+' #myRange').attr('max',end_value);
                        $('#'+li_id+' .slider_min').html(start_value);
                        $('#'+li_id+' .slider_max').html(end_value);
                        $('#slider_value').attr('min',start_value);
                        $('#slider_value').attr('max',end_value);
                    }
                    $( '#'+li_id+' #myRange').animate({ value: range_value }, 1000);
                });

                $('#survey_form_id').find('form .feedbacksubmitbutton').parent('div').css('visibility','visible');
                $('#survey_form_id').find('form').attr('method','post');
                $('#survey_form_id').find('form').attr('enctype','multipart/form-data');
                $('#survey_form_id form').append('<input name="application_module" id="application_module" value="free_booking" type="hidden">');
                $('#survey_form_id form').append('<input name="person_id" id="person_id" value="'+person_id+'" type="hidden">');
                $('#survey_form_id form').append('<input name="application_form_id" id="application_form_id" value="'+application_form_id+'" type="hidden">');
                $('#survey_form_id form').append(input_string);
                var userRoles = window.user.user.roles;
                if (userRoles.indexOf('manager') != -1 || form_mandatory == 0) {
                    $('#survey_form_id form').find('.submit_div').append('<button type="button" class="btn btn-flat" data-dismiss="modal">'+_this.$tr('cms.skip_register')+'</button>');
                }
                
                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let is_child = (question[ii].copy_id == '') ? 0 : 1;

                    if(is_child === 1)
                    {
                        let is_child_answered = 0;

                        if(answer[qid] !== undefined && answer[qid] != '')
                        {
                            is_child_answered = 1;
                        }

                        if(is_child_answered == 0)
                        {
                            $('#'+qid).hide();
                        }
                    }
                }

                $( ".select_date" ).datepicker({
                    autoclose: true,
                    orientation: "left",
                    format: window.app_date_format_js,
                    language: app_language
                });

                $(".select_time_date").datetimepicker({
                    format: window.app_date_format_js+" hh:ii",
                    orientation: "left",
                    autoclose: true,
                    language: app_language
                });

                setTimeout(function(){
                    $("#view_form_modal").scroll(function () {
                        $( ".select_date" ).datepicker('hide');
                        $( ".select_date" ).blur(); 
                        $( ".select_time_date" ).datetimepicker('hide');
                        $( ".select_time_date" ).blur();            
                    });
                },2000);

            });
            /*------------------------------------------------------*/
        },
        loadSyllabus(studyId) {
            let params = JSON.stringify({id: studyId});
            let url = `${getBaseUrl()}Base/search&model=study-template&method=fetchSyllabus&params=${params}`;
            let _this = this;
            $.get(url, function(response) {
                console.log(response);
                console.log('ravi')
                _this.syllabus = response?.data;
            });
        }
    },
    watch: {
        cartCount: function cartCount() {
            window.menu.cartCount = window.cartCount;
        },
        selected_payment_plan_id: function(val) {
            this.setPaymentPlanSelection();
        }
    }
};

function addStudyToCart(_this, params) {
    blockUI('.container');

    if (typeof gtag != 'undefined') {
        
        var label = _this.details.study_title ? _this.details.study_title : 'Study';

        gtag('event', 'added_to_cart', {
            'event_category': 'cart',
            'event_label': label,
            'value': _this.details.id
        });

    }

    // Waiting List Registration
    if (_this.details.seminar_status == 'waitinglist') {
        unblockUI('.container');
        if (typeof window.user.user.PersonID == "undefined") {
            setRedirectAndLoadLogin();
            setTimeout(function() {
                window.location.href = "/login";
            }, 1000)
            return false;
        } else {
            $('#waitiling-list-modal').modal('show');
            return false;
        }
    }

    // Direct Registration
    if (_this.details.allow_direct_registration == 1) {

        /*
            Check if login is there
        */
        if (typeof window.user.user.PersonID == "undefined") {
            setRedirectAndLoadLogin();
            setTimeout(function () {
                window.location.href = "/login";
            }, 1000)
            return false;
        }
        else {
            if (typeof window.user.user.roles != 'undefined' && window.user.user.roles.indexOf('manager') != -1 && window.user.user.OrganizationID) {
                if (typeof appData.attendee_person_ids == 'undefined' || appData.attendee_person_ids.length <= 0) {
                    unblockUI('.container');
                    notify('error', _this.$tr('cms.please_select_participants'));
                    return false;
                }
            }

            var params = {
                id: this.token
            };
            params.PersonID = window.user.user.PersonID;
            params.drPersonIds = (typeof appData.attendee_person_ids != 'undefined' && appData.attendee_person_ids.length > 0) ? appData.attendee_person_ids.join(',') : '';
            params.eventID = _this.details.id;
            params.seminar_status = _this.details.seminar_status;
            params.send_mail_to_participant = 1;
            params = JSON.stringify(params);

            this.currentReqest = $.post(getBaseUrl() + 'Base/search&model=event-attendees&method=register-participant&params=' + params, function (data) {
                unblockUI('.container');
                if (data.type == 'success') {
                    appData.attendee_person_ids = '';
                    
                    if (_this.$refs.DirectRegistrationParticipants) {
                        _this.$refs.DirectRegistrationParticipants.attendee_person_list = [];
                    }
                    // _this.registered = true;

                    if (user.user.roles.indexOf("manager") != -1 && user.user.OrganizationID) {}
                    else {
                        _this.registered = true;
                    }

                    $("#drAddedParticipantsDiv").load(window.location + " #drAddedParticipantsDiv");    
                }
                notify(data.type, data.message);
                return false;
            }).error(function () {
                unblockUI('.container');
            });
            Requests.push(_this.currentReqest);
            return false;
        }
    }


    if(typeof params == 'undefined')
    {
        params = {};
    }

    params.study_payment_plan_id = _this.selected_payment_plan_id;

    $.post(getBaseUrl() + 'Base/add_to_cart', {
        cartItem: {
            id: _this.details.id,
            item: _this.details,
            quantity: 1,
            model: 'study-registration',
            seminar_status: _this.details.seminar_status,
            params: params
        }
    }, function(data) {
        if (data.type == 'success') {
            _this.cart = window.cart;
            window.cart = data.cart;
            window.cartCount = cartManager.cartCount();
            _this.cartCount = window.cartCount;

            _this.is_in_cart = true;
        } else {
            notify(data.type, data.message);
        }
        unblockUI('.container');

    });
}

baseComponents.Complaints = {
    name: 'Complaints',
    template: '#ComplaintsTemplate',
    props:['app_loaded'],
    data: function () {
        // alert('ComplaintsTemplate');
        return {
            appData: appData,
            search_text: '',
            currentTab:false,
            completed: 0,
            loaded: false,
            filters:{},
            formatedDate:{},
            currentReqest: false,
            resRecords: [],
            new_filter:true,
            overdue:false,
            statement_requested :false,
            statement_received :false,
            resolved :false,
            complaint_view:{},
        }
    },
    created: function () {
        eventHub.$on('changeInFilter', this.changeInFilter);
        eventHub.$on('changeInPagination', this.changePage);
    },
    beforeDestroy: function () {
        eventHub.$off('changeInFilter', this.changeInFilter);
        eventHub.$off('changeInPagination', this.changePage);
    },
    mounted: function () {
        var _this = this;
        window.jqxhr_getuser.done(function () {
            console.log('personid', window.user.user.PersonID);
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            appData.filterVars['completed'] = 0;
            _this.load();
        });
        $(".new-complaints").show();
    },
    watch: {
        completed: function () {
            appData.filterVars['completed'] = this.completed;
            this.changeInFilter();
        }
    },
    methods: {
        changeInFilter: function () {
            this.filters.page = 1;
            // this.load();
        },
        changePage: function (paginationVue) {
            this.filters.page = paginationVue.current_page;
            this.filters.limit = paginationVue.per_page;
            this.load();
        },
        load: function () {
            if (typeof this.preLoaded != 'undefined') {
                this.results = this.preLoaded.data;
                this.loaded = true;
                return false;
            }

            var _this = this; 
            if (_this.busy) {
                return false;
            }
            if (_this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            _this.busy = true;
            _this.loaded = true;
            blockUI('.container');
            var otherParams = {
                'PersonID' : window.user.user.PersonID,
                'RoleID' : window.user.user.RoleID,
                'new_filter' : _this.new_filter,
                'overdue' : _this.overdue,
                'statement_requested' : _this.statement_requested,
                'statement_received' : _this.statement_received,
                'resolved' : _this.resolved,
            }
            var params = simplyOrg.mergeObjs([
                otherParams,
                this.filters
            ]);
            blockUI();
            
            _this.currentReqest = $.post(getBaseUrl() + 'Base/search&model=ComplaintManagement&method=getComplaintsList', {
                params: params
            }, function (data) {
                // alert('called api');
                _this.resRecords = data.data;
                updatePagination(data);
                unblockUI('.container');
                _this.busy = false;

            });
            Requests.push(_this.currentReqest);
        },

        newComplaints: function newComplaints() {

            this.new_filter = true;
            this.overdue = false;
            this.statement_requested = false;
            this.statement_received = false;
            this.resolved = false;

            $(".overdue_complaints_filter, .statement_requested_complaints_filter, .statement_received_complaints_filter, .resolved_complaints_filter").removeClass('active');
            $(".new_complaints_filter").addClass('active');

            // $(".statement-requested-complaints, .overdue-complaints, .statement-received-complaints, .resolved-complaints").hide();
            // $(".new-complaints").show();
            $(".new-complaints").show();

            this.filters.page = 1;
            this.load();
        },
        overdueComplaints: function overdueComplaints() {
            this.new_filter = false;
            this.overdue = true;
            this.statement_requested = false;
            this.statement_received = false;
            this.resolved = false;

            $(".new_complaints_filter, .statement_requested_complaints_filter, .statement_received_complaints_filter, .resolved_complaints_filter").removeClass('active');
            $(".overdue_complaints_filter").addClass('active');

            $(".new-complaints").show();

            this.filters.page = 1;
            this.load();
        },
        statementRequestedComplaints: function statementRequestedComplaints() {
            this.new_filter = false;
            this.overdue = false;
            this.statement_requested = true;
            this.statement_received = false;
            this.resolved = false;

            $(".new_complaints_filter, .overdue_complaints_filter, .statement_received_complaints_filter, .resolved_complaints_filter").removeClass('active');
            $(".statement_requested_complaints_filter").addClass('active');

            $(".new-complaints").show();

            this.filters.page = 1;
            this.load();
        },
        statementReceivedComplaints: function statementReceivedComplaints() {
            this.overdue = false;
            this.new_filter = false;
            this.statement_requested = false;
            this.statement_received = true;
            this.resolved = false;

            $(".new_complaints_filter, .overdue_complaints_filter, .statement_requested_complaints_filter, .resolved_complaints_filter").removeClass('active');
            $(".statement_received_complaints_filter").addClass('active');

            $(".new-complaints").show();

            this.filters.page = 1;
            this.load();
        },
        resolvedComplaints: function resolvedComplaints() {
            this.overdue = false;
            this.new_filter = false;
            this.statement_requested = false;
            this.statement_received = false;
            this.resolved = true;

            $(".new_complaints_filter, .overdue_complaints_filter, .statement_requested_complaints_filter, .statement_received_complaints_filter").removeClass('active');
            $(".resolved_complaints_filter").addClass('active');

            $(".new-complaints").show();

            this.filters.page = 1;
            this.load();
        },
        showConfirmPopup: function showConfirmPopup(complaintsId) {
            var id = complaintsId;
            var _this = this;
            var params = {
                id: id
            };
            params = JSON.stringify(params);

            _this.currentReqest = $.get(getBaseUrl() + `Base/search&model=ComplaintManagement&method=getComplaintData&params=${params}`, function(data) {
                _this.complaint_view = {}
                _this.complaint_view=data.data;

                var id = data.data.complaint_document;
                if(id != null){
                    var ext = id.split(".")[1];
                    if(ext == 'jpg' || ext == 'png' || ext == 'jpeg' || ext == 'gif'){
                        var tenant_name = window.user.tenant_settings.tenant_name;
                        var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                        _this.complaint_view.src = simplyOrgUrl+'/app/tenancy/tenants/'+tenant_name + '/complaint_download_document/'+id;
                    }else{
                        var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                        _this.complaint_view.src =  simplyOrgUrl+'/images/file-icon.png';
                    }
                }

                $("#complaintListModal").modal('show');
           });
        },
        downloadDocument(complaint_document){

            var id = complaint_document;
            if(id){
                var tenant_name = window.user.tenant_settings.tenant_name;
                var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                url = simplyOrgUrl+'/app/tenancy/tenants/'+tenant_name + '/complaint_download_document/'+id;
                if(url){
                    window.open(url);   
                }
            }
        },
        dmyFormatSlash: function dmyFormatSlash(date){
            return `${moment(date).format('DD.MM.YYYY')}`;
        },
        changeTab: function changeTab(tab) {
            this.resetTab();
            this.currentTab = tab;
            $('#' + tab).click();
        },
        resetTab: resetTab
    }
    
};

baseComponents.ComplaintsRespond = {
    name: 'ComplaintsRespond',
    template: '#ComplaintsRespondTemplate',
    props:['app_loaded'],
    data: function () {
        return {
            appData: appData,
            search_text: '',
            completed: 0,
            loaded: false,
            filters:{},
            formatedDate:{},
            currentReqest: false,
            resRecords: [],
            complaint_view:{},
            complaints_id : '',
            disabled : true,
            view_editor:false,
            disabled_editor : false,
            ckEditorConfig : { height: 200,
                removePlugins: 'toolbar',
                allowedContent: 'p h1 h2 strong em; a[!href]; img[!src,width,height];'
            }
        }
    },
    created: function () {
    },
    beforeDestroy: function () {
    },
    mounted: function () {

        var _this = this;
        /*var url = window.location.href;
        const parts = url.split('/');*/

        _this.complaint_id =  getSearchParams('complaint_id')
        //_this.complaint_id =  parts.at(-1)

        window.jqxhr_getuser.done(function () {
            console.log('personid', window.user.user.PersonID);
            if (typeof window.user.user.PersonID == "undefined") {
                setRedirectAndLoadLogin();
                setTimeout(function() {
                    window.location.href = "/login";
                }, 1000)
                return false;
            }

            appData.filterVars['completed'] = 0;
            _this.complaintsResponseLoad(_this.complaint_id);
        });
    },
    watch: {
        completed: function () {
            appData.filterVars['completed'] = this.completed;
            this.changeInFilter();
        }
    },
    methods: {
        complaintsResponseLoad: function (complaint_id) {
            if (typeof this.preLoaded != 'undefined') {
                this.results = this.preLoaded.data;
                this.loaded = true;
                return false;
            }

            var _this = this; 
            if (_this.busy) {
                return false;
            }
            if (_this.currentReqest != false) {
                _this.currentReqest.abort();
            }
            _this.busy = true;
            _this.loaded = true;
            blockUI('.container');
            blockUI();

            var params = {
                id: complaint_id
            };
            params = JSON.stringify(params);

            _this.currentReqest = $.get(getBaseUrl() + `Base/search&model=ComplaintManagement&method=getComplaintData&params=${params}`, function(data) {
                _this.complaint_view = {}
                _this.complaint_view=data.data;
                _this.disabled = false

                var ck_editor = CKEDITOR.replace('complaint_response_description', _this.ckEditorConfig);

                document.addEventListener('DOMContentLoaded', function() {
                  var editorElement = document.getElementById('editor');
                  editorElement.style.display = 'none';
                  ClassicEditor.create(editorElement, ckEditorConfig);
                });
                
                ck_editor.on( 'mode', function() {
                    $('#cke_1_top').hide();
                } );

                ck_editor.on( 'focus', function( evt ) {
                    $('#cke_1_top').show();
                });

                ck_editor.on( 'blur', function( evt ) {
                    $('#cke_1_top').hide();
                });

                
                if(data.data.complaint_response_description == ''){
                    _this.view_editor = true;
                }

                unblockUI('.container');
           });
            Requests.push(_this.currentReqest);
        },
        updateComplaintDetails() {
            var _this = this;

            var complaint_response_description_editor = CKEDITOR.instances.complaint_response_description.getData()

            if(complaint_response_description_editor == ''){
                notify('error',_this.$tr('cms.add_description'));
                return false;
            }

            var formData = new FormData;
            //var complaint_response_description = $('#complaint_response_description').html();
            var _this = this
            formData.append('params[id]', this.complaint_id);
            formData.append('params[complaint_response_description]', complaint_response_description_editor);

            $.ajax({
                url: getBaseUrl()+'Base/search&model=ComplaintManagement&method=updateComplaintDetails',
                data:formData,
                cache: false,
                contentType: false,
                processData: false,
                method:'POST',
                success:function(resp){
                    if(resp?.type === 'error'){
                        notify('error',resp.message);
                        return false;
                    } else  {

                        notify('success',_this.$tr('cms.description_add_successfully'));

                        _this.editor_content = resp.data.complaint_response_description;
                        _this.complaint_view.complaint_response_description = resp.data.complaint_response_description;
                        _this.view_editor = false;
                    }
                }
            });
        },
        dmyFormatSlash: function dmyFormatSlash(date){
            if(typeof date != 'undefined' && date != '') {
                return `${moment(date).format('DD.MM.YYYY')}`;
            } else {
                return '';
            }
        },
        complaintfilePreviewUrl: function complaintfilePreviewUrl(complaint_document) {
                    var id = complaint_document;
                    var ext = id.split(".")[1];
                    if(id){
                        if(ext == 'jpg' || ext == 'png' || ext == 'jpeg' || ext == 'gif'){
                            var tenant_name = window.user.tenant_settings.tenant_name;
                            var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                            return simplyOrgUrl+'/app/tenancy/tenants/'+tenant_name + '/complaint_download_document/'+id;
                        }else{
                            var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                            return simplyOrgUrl+'/images/file-icon.png';
                        }
                    }
        },
        downloadDocument(complaint_document){
                var id = complaint_document;
                if(id){
                    var tenant_name = window.user.tenant_settings.tenant_name;
                    var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                    url = simplyOrgUrl+'app/tenancy/tenants/'+tenant_name + '/complaint_download_document/'+id;
                    if(url){
                        window.open(url);   
                    }
                }
        },
    }
};

baseComponents.StudyLearning = {
    name: 'StudyLearning',
    template: '#StudyLearningTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: appData,
            loaded: true,
            csrf: null,
            loginUser: [],
            studyId: 0,
            studyDetails: [],
            seminar_enddate_toggle: 0
        };
    },
    created() {
        let _this = this;

        const url = new URL(window.location.href);
        const searchParams = new URLSearchParams(url.search);
        const value = searchParams.get('studyid');

        this.studyId = value;

        if(this.studyId <= 0) {
            window.location.href = "/my-learnings";
        }

        $.get(`${getBaseUrl()}eID=router&uri=Base/get_user`, function(response) {

            if(response.user.UserID == undefined){
                window.location.href = "/login";
            }

            _this.csrf = response.user.csrf;
            _this.loginUser = response.user;
            _this.loaded = true;
            _this.seminar_enddate_toggle = response?.settings?.simplyorg_settings?.seminar_endDate_toggle;
            _this.loadStudyDetails();

        });
    },
    methods: {

        loadStudyDetails() {

            var _this = this;
            const params = {}
            params.studyId = _this.studyId;
            params.PersonID = _this.loginUser.UserID;
            params.frontPage = 'mystudy';

            $.get(`${getBaseUrl()}eID=router&uri=Base/search&model=PersonCourses&method=searchRecords&params=${JSON.stringify(params)}`, function(response) {
                if('data' in response && response.data.length > 0){
                    _this.studyDetails = response.data[0];
                }
                $('#calendar-tooltip-icon').tooltip();
            });

        },
        showStudyPaymentPlanPopup: function(attended_id, study_id, type='plan', study_name) {
            this.$refs['selected-paymentplan-popup'].showModal(attended_id, study_id, type, study_name);
        },
        showSyllabusDocumentDownload: function(study_id, event_name) {
            this.$refs['syllabus-document-download'].showModal(study_id, event_name);
        },
        getStudyInvoiceNubmers: function(booking) {
            var no = [];
            var returnStr = '';
            
            if($.isArray(booking?.invoice_detail)){
                for (var i = 0; i < booking?.invoice_detail?.length; i++) {
                    if(booking?.invoice_detail[i].number != ''){
                        no[i] = booking?.invoice_detail[i].number;
                    }
                }
            }

            returnStr = no.join(',');

            if(returnStr == '') {
                returnStr = '-';
            }

            return returnStr;
        },
        getStudyInvoiceAmount: function(booking) {
            var sum = 0;

            if($.isArray(booking?.invoice_detail)){
                for (var i = 0; i < booking?.invoice_detail?.length; i++) {
                    sum += booking?.invoice_detail[i].total;
                }
            }

            return sum;
        },

        openEditApplicationForm: function(application_form_id,event_attendee_id,form_type,is_webinar,event_id,question_id = [],event_status,model) {
            var _this = this;
            var params = {
                application_form_id: application_form_id,id:event_attendee_id,type:is_webinar
            };
            params = JSON.stringify(params);

            if(model == 'studies'){
                url = getBaseUrl() + 'Base/search&model=study-attendees&method=getApplicationFormForMyseminar';
            }else{
                url = getBaseUrl() + 'Base/search&model=event-attendees&method=getApplicationFormForMyseminar'
            }

            $.post(url, {
                params:params
            }, function (data) {

                $('#survey_form_id').html('');
                $('#view_form_modal').modal('show');
                $('#survey_form_id').html('');
                $('#view_form_modal .modal-title').html('');

                $('#survey_form_id').surveyBuilder({displayOption:'front',data:data.data.jdata});
                $('#view_form_modal .feedbacksubmitbutton').html(_this.model?.translations?.submit);
                $('#view_form_modal .close_btn').html(_this.model?.translations?.close);
                $('#view_form_modal #allownumericwithdecimal').attr("placeholder", _this.model?.translations?.add_number);
                $('#view_form_modal .select_any_one').html(_this.model?.translations?.select_any_one);
                if(data.data.header_image != '' && data.data.header_image != null){
                    $('#surveyTitle').after('<div class="tqdetails img_div"><img src="'+data.data.header_image+'">'+data.data.headerContent+'</div>');
                }else{
                    $('#surveyTitle').after('<div class="tqdetails img_div">'+data.data.headerContent+'</div>');
                }
                if(data.data.footer_image != '' && data.data.footer_image != null){
                    $('#questionsContainer').after('<div class="tfooter img_div"><img src="'+data.data.footer_image+'">'+data.data.footerContent+'</div>');
                }else{
                    $('#questionsContainer').after('<div class="tfooter img_div">'+data.data.footerContent+'</div>');
                }

                if(event_status == 'cancelled'){
                    $('#view_form_modal .feedbacksubmitbutton').css('display','none');
                }

                $('#surveyTitle p').remove('');
                $('#survey_form_id li').css('list-style', 'none');

                let question = data.data.jdata.questions;
                let answer = data.data.values;
                let file_answer = [];
                let ratings_1_to_10_answer = [];
                let ratings_1_to_5_answer = [];

                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let qtype = question[ii].type;
                    let qChecked = question[ii].multipleChk;
                    let qmandatory = question[ii].mandatory;

                    if(qtype == "file_upload" && qChecked == 'checked')
                    {
                        $('#'+qid).find('.file_upload').attr('multiple','multiple');
                    }else{
                        if(qtype == "file_upload"){
                            setTimeout(function(){$('input[name="'+qid+'"]').removeAttr('multiple'); },10);
                        }
                    }

                    if(qtype == "file_upload" && answer[qid] != '' && typeof answer[qid] != 'undefined')
                    {
                        let image_list = answer[qid];
                        file_answer.push(qid);
                        answer[qid] = '';

                        if (typeof image_list === "string") {

                            let image_list_arr = image_list.split(',');
                            let image_html = '';

                            for(var kk=0; kk < image_list_arr.length; kk++)
                            {   

                                var image_ext = image_list_arr[kk].split('.');
                                if(image_ext[1] == 'jpg' || image_ext[1] == 'png' || image_ext[1] == 'jpeg' || image_ext[1] == 'gif')
                                {
                                    var tenant_name = window.user.tenant_settings.tenant_name;
                                    var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                    var src =  simplyOrgUrl+'/app/tenancy/tenants/'+tenant_name+'/upload_form_doc/'+image_list_arr[kk];

                                }else{
                                    var simplyOrgUrl = window.user.settings.simplyOrgUrl;
                                    var src = simplyOrgUrl+'images/file-icon.png';
                                }
                                image_html += '<div class="img_upload_div" data-name="'+image_list_arr[kk]+'">';
                                image_html += '<img height="150px" width="150px" src="'+src+'" />';
                                image_html += '<a target="_blank" class="view_document" href="'+simplyOrgUrl+'/app/tenancy/tenants/'+tenant_name+'/upload_form_doc/'+image_list_arr[kk]+'"><i class="fa fa-eye"></i></a></div>';
                            }
                            $(".file_upload_class_"+qid).append(""+image_html+" <input type='hidden' id='input_"+qid+"' name='input_"+qid+"' value='"+image_list+"'>");
                        }

                    }
                }

                SBManager.fillValues(answer);
                $('.file_extention, .multiple_file, .file_action, #start_value, #end_value').css('display','none');
                $('#questionsContainer > li').find('.file_upload').removeAttr('disabled');
                $('#survey_form_id').find('.tool_tip').remove();
                $( '#questionsContainer > li' ).each(function() {
                    var li_id = $(this).attr('id');

                    var index = $.inArray(li_id, question_id);

                    if (index !== -1) {
                        console.log();
                        $('#'+li_id).find('.questionclass .editable').css('color','red');
                    }

                    $('#'+li_id).find('.tooltipclass').hide();
                    $('#'+li_id).find('.questionclass').css('width','100%');

                    var check_input_val = $('#'+li_id).find("input[name='"+li_id+"']").val();
                    var check_select_val = $('#'+li_id).find("select[name='"+li_id+"']").val();
                    var check_textarea_val = $('#'+li_id).find("textarea[name='"+li_id+"']").val();
                    var check_radio_val = $('#'+li_id).find("input[type='radio']").is(':checked');
                    var check_checkbox_val = $('#'+li_id).find("input[type='checkbox']").is(':checked');

                    if(check_input_val != '' && check_input_val != undefined){
                        $('#'+li_id).find("input[name='"+li_id+"']").attr('disabled',true);
                        if($('#'+li_id).attr('data-type') == 'slider'){
                            $('#'+li_id).find('#myRange').attr('disabled',true);
                        }
                    }
                    if(check_select_val != '' && check_select_val != undefined){
                        $('#'+li_id).find("select[name='"+li_id+"']").attr('disabled',true);
                    }
                    if(check_radio_val == true){
                        $('#'+li_id).find("input[name='"+li_id+"[]']").attr('disabled',true);
                    }
                    if(check_checkbox_val == true){
                        $('#'+li_id).find("input[name='"+li_id+"[]']").attr('disabled',true);
                    }
                    if(check_textarea_val != '' && check_textarea_val != undefined){
                        $('#'+li_id).find("textarea[name='"+li_id+"']").attr('disabled',true);
                    }
                    if( $.inArray(li_id, file_answer) != -1 ) {
                        $('#'+li_id).find('.file_upload').attr('disabled',true);
                    }else{
                        setTimeout(function(){$('#'+li_id).find('.file_upload').removeAttr('disabled');},10);
                    }

                    $('input[name=file_upload]').css('width','100%');
                    var tooltip_info = $('#'+li_id).find('.tooltipclass .editable').html();

                    if($('#'+li_id).attr('data-ismandatory') == "checked"){
                        $('#'+li_id).find('.questionclass .editable').prepend('<label class="required-field" style="color:red">* </label>');
                    }

                    $('#'+li_id).find('.answerDiv .form-md-line-input').css('margin-right','180px');
                    $('#'+li_id).find('.tool_tip').remove();
                    if(tooltip_info != '' && tooltip_info != undefined && $('#'+li_id).find('.questionclass .tool_tip').length == 0){
                        $('#'+li_id).find('.questionclass .editable').append('<i class="fa fa-info-circle tool_tip" aria-hidden="true" style="cursor:pointer" title="'+tooltip_info+'"></i>');
                    }else{
                        setTimeout(function(){$('#'+li_id).find('.tool_tip').remove();},10);
                    }

                    if($('#'+li_id).hasClass('optionalClass')){
                        $('#'+li_id).find('.optionTitle span').html('');
                        var input_val = $('#'+li_id).find('input').val();
                        if(input_val == ''){
                            $('#'+li_id).css('display','none');
                        }

                        $('#'+li_id).find('.questionIndex').remove();
                    }

                    var start_value = $('#'+li_id+' #start_value').val();
                    var end_value = $('#'+li_id+' #end_value').val();
                    var range_value = $('#'+li_id+' #slider_value').val();

                    if(start_value != '' && end_value != ''){
                        $('#'+li_id+' #myRange').attr('min',start_value);
                        $('#'+li_id+' #myRange').attr('max',end_value);
                        $('#'+li_id+' .slider_min').html(start_value);
                        $('#'+li_id+' .slider_max').html(end_value);
                        $('#slider_value').attr('min',start_value);
                        $('#slider_value').attr('max',end_value);
                    }
                    $( '#'+li_id+' #myRange').animate({ value: range_value }, 1000);
                });

                $('#survey_form_id').find('form .feedbacksubmitbutton').parent('div').css('visibility','visible');
                $('#survey_form_id').find('form').attr('method','post');
                $('#survey_form_id').find('form').attr('enctype','multipart/form-data');
                $('#survey_form_id form').append('<input name="event_attendee_id" id="event_attendee_id" value="'+event_attendee_id+'" type="hidden">');
                $('#survey_form_id form').append('<input name="application_module" id="application_module" value="my_seminar" type="hidden">');
                $('#survey_form_id form').append('<input name="form_type" value="'+is_webinar+'" type="hidden">');
                $('#survey_form_id form').append('<input name="event_id" id="event_id" value="'+event_id+'" type="hidden">');
                if(model == 'studies'){
                    $('#survey_form_id form').append('<input name="form_for" id="form_for" value="cms_form" type="hidden">');
                }

                for(let ii = 0; ii < question.length; ii++)
                {
                    let qid = question[ii].id;
                    let is_child = (question[ii].copy_id == '') ? 0 : 1;

                    if(is_child === 1)
                    {
                        let is_child_answered = 0;

                        if(answer[qid] !== undefined && answer[qid] != '')
                        {
                            is_child_answered = 1;
                        }

                        if(is_child_answered == 0)
                        {
                            $('#'+qid).hide();
                        }
                    }
                }

                $( ".select_date" ).datepicker({
                    autoclose: true,
                    format: window.app_date_format_js,
                    language: window.app.lang == 'en' ? 'en' : 'de',
                    }).on("show", function() {
                        var inputRect = $('.select_date').offset();
                          var inputLeft = inputRect.left;
                          var inputTop = inputRect.top + $('.select_date').outerHeight();

                          // Set the position of the datepicker popup
                          $('.datepicker').css({
                            top: inputTop,
                            left: inputLeft
                          });
                });

                $(".select_time_date").datetimepicker({
                    format: window.app_date_format_js+" hh:ii",
                    orientation: "left",
                    autoclose: true,
                    language: window.app.lang == 'en' ? 'en' : 'de'
                });

                setTimeout(function(){
                    $("#view_form_modal").scroll(function () {
                        $( ".select_date" ).datepicker('hide');
                        $( ".select_date" ).blur(); 
                        $( ".select_time_date" ).datetimepicker('hide');
                        $( ".select_time_date" ).blur();            
                    });
                },2000);

            });
        }

    }, 
    watch: {}
};

baseComponents.StudySyllabusCalendar = {
    name: 'StudySyllabusCalendar',
    template: '#StudySyllabusCalendarTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: null,
            userData: {},
            isMobile: false,
            bread: false,
            loaded: false,
            studyId: 0,
            userId: 0
        };
    },
    created() {},
    mounted: function mounted() {

        const _this = this

        const url = new URL(window.location.href);
        const searchParams = new URLSearchParams(url.search);
        const value = searchParams.get('studyid');

        this.studyId = value;

        if(this.studyId <= 0){
            window.location.href = "/my-learnings";
        }

        $.get(`${getBaseUrl()}eID=router&uri=Base/get_user`, function(response) {

            if(response.user.UserID == undefined){
                window.location.href = "/login";
            }

            _this.csrf = response.user.csrf;
            _this.loginUser = response.user;
            _this.userId = response.user.PersonID;

            _this.initialLoad();
            _this.loadAppData();
        });

        app.addChildVue(modalTrainerCalendar);
        app.addChildVue(nestedModalTrainerCalendar);

        window.setTimeout(function () {
            window.modalTrainerCalendarVue = app.$refs.rootChilds[1];
			window.nestedModalTrainerCalendarVue = app.$refs.rootChilds[2];
        }, 100);
    },
    methods: {
        loadAppData: function() {
            var _this = this;

            var params = {
                cmsCalendarFilter: 1,
                studyId: _this.studyId,
                userId: _this.userId
            };
            var getParams = JSON.stringify(params);
            var url = getBaseUrl() + 'Base/search&model=studyTemplate&method=getCalendarAppData&params=' + getParams;

            $.blockUI({message: ''});
            $.get(url, function (result) {
                setTimeout(() => {
                    $.unblockUI();
                }, 3000);

                $.each(result, function(key, item){
                    appData[key] = item;
                });
                _this.loaded = true;
            }).error(function(){
                $.unblockUI();
            });
        },
        changeInFilters: function(params) {
            var _this = this;

            params = JSON.parse(JSON.stringify(params));

            params.studyId = _this.studyId;
            params.userId = _this.userId;

            var getParams = JSON.stringify(params);

            var url = getBaseUrl() + 'Base/search&model=studyTemplate&method=fetchStudyCalendarEvents&params=' + getParams;

            $.blockUI({message: ''});
            $.get(url, function (result) {
                $.unblockUI();
                _this.$refs.newCalender.loadEvents(result);
            });
        },
        initialLoad: function() {
            const _this = this;
            const params = {"cmsCalendarFilter" : 1};
            params.studyId = _this.studyId;
            params.userId = _this.userId;
            const url = `${ getBaseUrl() }/?eID=router&uri=Base/search&model=studyTemplate&method=getCalendarAppData&params=${JSON.stringify(params)}`;

            $.get(url, function (response) {
                _this.appData = response;
            });

            this.isMobile = window.innerWidth <= 800
        },
    }, 
    watch: {}
};
baseComponents.StudyTimeline = {
    name: 'StudyTimeline',
    template: '#StudyTimelineTemplate',
    props: ['app_loaded'],
    data: function data() {
        return {
            appData: null,
            loaded: false,
            csrf: null,
            loginUser: [],
            studyId: 0,
            studyDetails: [],
            isMobile: false
        };
    },
    created() {

        this.isMobile = window.innerWidth <= 1400

        window.addEventListener("resize", this.resizeHandler);
        
        let _this = this;
        
        const url = new URL(window.location.href);
        const searchParams = new URLSearchParams(url.search);
        const value = searchParams.get('studyid');

        this.studyId = value;

        if(this.studyId <= 0) {
            window.location.href = "/my-learnings";
        }

        $.get(`${getBaseUrl()}eID=router&uri=Base/get_user`, function(response) {
            
            if(response.user.UserID == undefined){
                window.location.href = "/login";
            }

            _this.csrf = response.user.csrf;
            _this.loginUser = response.user;
            _this.loaded = true;
            _this.loadStudyDetails();

        });
    },
    destroyed() {
        window.removeEventListener("resize", this.resizeHandler);
    },
    methods: {
        loadStudyDetails() {
            var _this = this;
            const params = {}
            params.studyId = _this.studyId;
            params.PersonID = _this.loginUser.UserID;

            
            
            const url = `${location.origin}/?eID=router&uri=Base/search&model=Section&method=fetchStudyTimeLine&params=${JSON.stringify(params)}`;
            
            $.get(url, function (response) {
                _this.studyDetails = response.data;
            });
        },
        resizeHandler() {
           this.isMobile = window.innerWidth <= 1400
        }
    },
};

baseComponents.MyEmployees = {
    name: 'MyEmployees',
    template: '#MyEmployeesTemplate',
    mounted: function mounted() {
        this.load();

        app.addChildVue(modalTrainerCalendar);
        app.addChildVue(nestedModalTrainerCalendar);

        window.setTimeout(function () {
            window.modalTrainerCalendarVue = app.$refs.rootChilds[1];
            window.nestedModalTrainerCalendarVue = app.$refs.rootChilds[2];

        }, 100);
    },
    props: ['pageData'],
    data: function data() {

        return {
            appData: appData,
            loaded: false,
            profile: {},
            myCoursesFilters: {
                person_id: '',
                pr_type: "my_courses"
            },
            documentFilters: {
                person_id: '',
                pr_type: "my_documents"
            },
            trainerReqFilters: {
                person_id: '',
                with: "RequestedTrainersDates,token,TrainerRequest",
                status: 'new'
            },
            checklistFilters: {
                person_id: ''
            },
            currentTab: false,
            cTab: false,
            toggles: window.toggles,
            user: false
        };
    },
    methods: {
        load: function load() {
            var _this = this;
            var message = getSearchParams('message');
            if (message) {
                notify('info', decodeURI(message));
            }
            blockUI();
            setTimeout(() => {
            $.get(getBaseUrl() + 'Base/getProfile', function(data) {
                if (typeof data.PersonID == 'undefined') {
                    setRedirectAndLoadLogin()
                }
                _this.profile = data;
                _this.myCoursesFilters.person_id = _this.profile.PersonID;
                _this.documentFilters.person_id = _this.profile.PersonID;
                if (_this.profile.person_address.length == 0) {
                    _this.profile.person_address = [{
                        address: {}
                    }];
                }
                _this.loaded = true;
                unblockUI();
                var tab = _this.currentTab;

                _this.$nextTick(function() {
                    var cTab = getSearchParams('tab');
                    var firtTab = $('#home_tab').find('li a').attr('id')
                    cTab = typeof cTab == 'undefined' ? firtTab : cTab;
                    _this.cTab = cTab;

                    _this.changeTab(_this.cTab);
                });
                if (typeof window.user != 'undefined' && typeof window.user.user != 'undefined') {
                    _this.user = window.user.user;
                }

                //alert('#'+_this.currentTab+'-tab');
                //$('#'+_this.currentTab+'-tab').trigger('click');
            }).error(setRedirectAndLoadLogin);
        }, 2000);
        },
        changeTab: function changeTab(tab) {
            this.resetTab();
            this.currentTab = tab;
            $('#' + tab).click();
        },
        resetTab: resetTab

    },
    watch: {
        currentTab: function currentTab() {
            
        }
    }
};