/* ########## eConsent (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    
});
</script>
*/

$.eConsent = function( lang ){

    if (typeof localStorage.getItem('eConsent') !== 'undefined' && localStorage.getItem('eConsent') == 'true'){

    } else {
        var text = 'This platform uses cookies. If you continue to use it, you agree to the use of cookies.';
        var btn  = 'close';

        if(lang === 'tr'){
            var text = 'Bu platform çerez kullanır. Kullanmaya devam ederseniz, çerez kullanılmasını kabul etmiş olursunuz.';
            var btn  = 'schließen';
        } else if(lang === 'de'){
            var text = 'Diese Plattform verwendet Cookies. Wenn du Sie weiterhin nutzt, stimmst Du der Verwendung von Cookies zu.';
            var btn  = 'schließen';
        }

        var $consent  = $('<div id="e-consent"><div>'+ text +'</div><a href="#cookie">'+ btn +'</a></div>');

        $consent.find('a').on('click', function(){
            localStorage.setItem('eConsent', 'true');
            $(this).closest('#e-consent').remove();
            return false;
        });

        $('body').append($consent);
    }
}




/* ########## Tell (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    
});
</script>
*/

$.fn.tell_connect = function(){

    var thisOb = this;


    if (thisOb.is('[data-tell-name]')){
        var mainElem  = thisOb,
            name      = mainElem.attr('data-tell-name'),
            container = mainElem.closest('form');

        if (container.length != 1){
            var container = $('body');
        }

        if (mainElem.is('[data-tell-value]')){
            // setze value ins form element
            var value    = mainElem.attr('data-tell-value'),
                nameArr  = name.split('|'),
                valueArr = value.split('|');

            $.each(nameArr, function(i, iName){

                var targetElemList = container.find('input[name="'+iName+'"], select[name="'+iName+'"]');

                mainElem.on('click.tell', function(){
                    var clickedElemValue = '';
                    if (i in valueArr){
                        clickedElemValue = valueArr[i];
                    }
                    targetElemList.each(function(){
                        if ($(this).is('select')){
                            var rightOption = $(this).find('option[value="'+clickedElemValue+'"]');
                            if (rightOption.length == 1){
                                $(this).val( clickedElemValue );
                                $(this).trigger('change');
                                $(this).trigger('tell.set');
                            }
                        } else if ($(this).is('input[type="checkbox"], input[type="radio"]')){
                            if ($(this).val() == clickedElemValue){
                                $(this).prop('checked', true);
                                $(this).trigger('change');
                                $(this).trigger('tell.set');
                            }
                        } else {
                            $(this).val( clickedElemValue );
                            $(this).trigger('change');
                            $(this).trigger('tell.set');
                        }
                    });
                });
            });

        } else {

            mainElem.attr('data-tell-content', 'clear');

            //setze formvalue ins textelement
            var targetElemList = container.find('input[name="'+name+'"], select[name="'+name+'"]');

            setTimeout(function(){
                /* damit document ready die später kommen hören könenn*/
                targetElemList.eq(-1).tell_initText(mainElem, container); /*nur letzte sehr wichtig für vorschau, wegen array postnamen*/
            }, 20);


            targetElemList.each(function(){

                if ($(this).is('select')){
                    $(this).on('change.tell', function(){
                        $(this).tell_initText(mainElem, container);
                    });
                } else if ($(this).is('input[type="checkbox"], input[type="radio"]')){
                    $(this).on('change.tell', function(){
                        $(this).tell_initText(mainElem, container);
                    });
                } else {
                    $(this).on('change.tell', function(){
                        $(this).tell_initText(mainElem, container);
                    });
                }
            });
        }
    }


}
$.fn.tell_initText = function(textElem, container){


    var txt          = '';
    var formElem     = $(this);
    var formElemName = formElem.attr('name');
    var previewBox   = container.find('.tell').filter('[data-tell-preview="'+ formElemName +'"]');

    if (previewBox.length > 0){
        previewBox.empty();
    }

    if (formElem.is('[name$="[]"]')){
        // name ist ein array element, nimm alle
        formElemList = container.find('input,select,textarea').filter('[name="'+formElemName+'"]');
    } else {
        formElemList = formElem;
    }
    var arrTxt             = [];
    var arrFileCount       = [];
    var arrFileSize        = [];
    var arrFileList        = [];
    var arrFileBase64List  = [];

    formElemList.each(function(){
            var txt = false;
            if ($(this).is('select')){

                var el = $(this).find('option[value="'+ $(this).val() +'"]').eq(0);
                if (el.is('[data-tell]')){
                    txt = el.attr('data-tell');
                } else {
                    txt = el.text();
                }
                if (txt != false){
                    arrTxt.push(txt);
                }

            } else if ($(this).is('input[type="checkbox"], input[type="radio"]')){

                if ($(this).is(':checked')){

                    if ($(this).is('[data-tell]')){
                        txt = $(this).attr('data-tell');
                    }else if ($(this).parent('label').length == 1){
                        txt = $(this).parent('label').text();
                    }

                }

                if (txt != false){
                    arrTxt.push(txt);
                }

            } else if ($(this).is('input[type="range"]')){


                if ($(this).val() != ''){
                    txt = $(this).val();
                } else {
                    txt = 'drg';
                }

                arrTxt.push(txt);


            } else if ($(this).is('input[type="file"]')){

                var txt = '';
                if ($(this).is('[data-tell]')){

                    txt = $(this).attr('data-tell');
                } else {

                    var allCount = 0;

                    if ($(this)[0].files.length > 0){

                        arrFileCount.push($(this)[0].files.length);

                        $.each($(this)[0].files, function(key, fl){
                            // wenn meherer datein im input vorhanden

                            if (fl) {


                                arrFileSize.push(fl.size);
                                arrFileList.push(fl.name);

                                if (previewBox.length > 0){
                                    /*#########################################################*/
                                    var $thmb = $('<span class="tell-loading" title="'+ fl.name +'" data-tell-type="'+ fl.type +'"></span>');

                                    if (fl.type.match('image.*')) {
                                        // wenn bild
                                        var reader = new FileReader();
                                        reader.readAsDataURL(fl);

                                        $thmb.appendTo(previewBox);

                                        reader.addEventListener('load', function(){
                                            $thmb.removeClass('tell-loading').css('background-image', 'url('+reader.result+')');
                                        }, false);

                                    } else {
                                        //wenn kein bild
                                        $thmb.removeClass('tell-loading').html(fl.name).appendTo(previewBox);

                                    }

                                }

                            }
                        });

                    }

                }

            } else {

                if ($(this).val() != ''){
                    txt = $(this).val();
                }
                if (txt != false){
                    arrTxt.push(txt);
                }
            }
    });


    if (formElem.is('[type="file"]')){


        var completeCount = 0;
        for (var i = 0; i < arrFileCount.length; i++) {
            completeCount = completeCount + arrFileCount[i];
        }

        var completeSize = 0;
        for (var i = 0; i < arrFileSize.length; i++) {
            completeSize = completeSize + arrFileSize[i];
        }

        if (completeSize > 1000000000){
            var sizeText = (completeSize / 1000000000).toFixed(2) + ' GB';
        } else if (completeSize > 1000000){
            var sizeText = (completeSize / 1000000).toFixed(2) + ' MB';
        } else{
            var sizeText = (completeSize / 1000).toFixed(2) + ' KB';
        }
        var endText = 'en';
        if (completeCount == 1){
            endText = '';
        }

        if (completeCount == 0){
            textElem.attr('data-tell-content', 'clear');
            textElem.text('');
            textElem.trigger('tell.clear');
        } else {
            textElem.attr('data-tell-content', 'set');
            textElem.text(completeCount+' Datei'+endText+' / '+sizeText);
            textElem.trigger('tell.set', {
                                text:          completeCount+' Datei'+endText+' / '+sizeText,
                                count:         completeCount,
                                size:          completeSize,
                                fileList:      arrFileList,
                                fileBase64List:arrFileBase64List,
                                });

        }


    } else {

        var completeTxt = arrTxt.join(', ');
        textElem.text(completeTxt);

        if (completeTxt == ''){
            textElem.attr('data-tell-content', 'clear');
            textElem.trigger('tell.clear');
        } else {
            textElem.attr('data-tell-content', 'set');
            textElem.trigger('tell.set', {
                                text:      completeTxt,
                                textList:  arrTxt
                                });
        }


    }


}




/* ########## eSnowFlake (copyright e2see.de) ##########
<script>
$(document).ready(function () {
    $.eSnowFlake({
        count  : 10,
        zIndex : 190
        });
});
</script>
*/

$.eSnowFlake = function (options) {

    $('body').append('<div id="e-snow-flakes"></div>');

    eSnowFlakeObs = {
        self: $('#e-snow-flakes')
    };


    eSnowFlakeFunc = {
        init: function (options) {
            elem = this;
            var settings = $.extend({
                count: 25,
                zIndex: 400
            }, options);



            eSnowFlakeObs.self.css('z-index', settings.zIndex);
            var i = 0
            do {
                var wh = ((parseInt($(document).height()) / settings.count) / 4) + 6;
                var mxSec = wh;
                var duration = Math.floor(Math.random() * (mxSec - 0 + 1) + 0);

                setTimeout(function () {
                    eSnowFlakeFunc.addFlake();
                }, duration * 1000);

                i++;
            }
            while (i < settings.count);

        },
        addFlake: function (initElem) {

            var size = Math.floor(Math.random() * 10);
            var from = 1;
            var to = 99;
            var speed = 5.5;
            var dh = parseInt($(window).height());

            if (typeof initElem != 'undefined') {
                var $flake = initElem;
                $flake.attr('data-size', size);
            } else {
                var $flake = $('<div class="e-snow-flake" data-size="' + size + '" data-status="init">');
                eSnowFlakeObs.self.append($flake);

                $flake.on('init', function () {
                    eSnowFlakeFunc.addFlake($(this));
                });

            }

            var fHeight = parseInt($flake.css('height'));
            var additionalH = parseInt(fHeight);
            var duration = ((dh + additionalH) * speed) * ((size + 2) / 2);
            var leftPosRandom = Math.floor(Math.random() * to) + from;

            $flake.css({
                top: '-' + fHeight + 'px',
                marginLeft: '-' + fHeight + 'px'
            });

            setTimeout(function () {

                $flake.css({
                    top: '',
                    left: leftPosRandom + '%',
                    transition: 'top ' + (duration) + 'ms linear'
                }).attr('data-status', 'run');

                setTimeout(function () {
                    $flake.attr('data-status', 'init').trigger('init');
                }, duration);

            }, 150);

            return this;
        }



    }


    eSnowFlakeFunc.init(options);


}




/* ########## landscapeTable (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    $('table.landscape-table').each(function(){
        $(this).landscapeTable_connect();
    });
});
</script>
*/

$.fn.landscapeTable_connect = function(){

    var table = this;
    if(table.find(' > * > tr:first-child > th').length != 0){
        var firstTr = table.find(' > * > tr:first-child');
        var uniqueId = parseInt(Math.random() * 100000000) * parseInt(Math.random() * 100000000);
        table.attr('data-landscape-table-id', uniqueId );
        var CSS =  '';
        var i =  1;
        firstTr.children('*').each(function(){
            var text = $(this).text();
            CSS =  CSS + '\ntable[data-landscape-table-id="'+uniqueId+'"] > * > tr > *:nth-child('+i+')::before { content: "'+text+'"; }';
            i = i +1;
        });
        table.before('<style type="text/css">'+ CSS+'</style>');
    }
    return this;
}




/* ########## autoSubmit (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    $('form, select').each(function(){
        $(this).autoSubmit_connect();
    });
});
</script>
*/

$.fn.autoSubmit_connect = function(){

    var timer       = false;
    var thisOb      = this;
    var autoObjects = false;
    var autoForm    = false;

    if(thisOb.is('form')){
        var autoObjects = thisOb.find('select, input, textarea').not('input[type="hidden"]');

    }else if(thisOb.is('select, input, textarea') && thisOb.is('input[type="hidden"]') == false){
        var autoObjects = thisOb;
    }


    if(autoObjects){
        if(autoObjects.closest('form').length == 1){
            autoForm = autoObjects.closest('form');

        } else if(thisOb.attr('form').length > 0 && $('#' + thisOb.attr('form') ).filter('form').length == 1 ){
            autoForm = $('#' + thisOb.attr('form') ).filter('form');
        }
    }


    if(autoObjects && autoForm){
        autoObjects.each(function(){

            var thisAutoObject = $(this);

            if(thisAutoObject.is('select')){

                if(autoObjects.length == 1){
                    var duration = 20;
                } else {
                    var duration = 40;
                }

                thisAutoObject.on('change', function(){
                    clearTimeout(timer);
                    timer = setTimeout(function(){
                        autoForm.trigger('submit');
                    }, duration);
                });

            } else if(thisAutoObject.is('input[type="checkbox"], input[type="radio"]')){

                if(autoObjects.length == 1){
                    var duration = 20;
                } else {
                    var duration = 800;
                }

                thisAutoObject.on('change', function(event){
                        clearTimeout(timer);
                        timer = setTimeout(function(){
                            autoForm.trigger('submit');
                        }, duration);
                });

            } else if(thisAutoObject.is('input, textarea')){
                thisAutoObject.on('input', function(event){
                    clearTimeout(timer);
                    timer = setTimeout(function(){
                        autoForm.trigger('submit');
                    }, 1200);

                });
            }


        });
    }

    return thisOb;

}




/* ########## radioCheckbox (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    $('.checkbox > input[type="checkbox"]').each(function(){
        $(this).styledCheckbox_connect();
    });

    $('.radio > input[type="radio"]').each(function(){
        $(this).styledRadio_connect();
    });
});
</script>
*/

$.fn.styledCheckbox_connect = function(){

    var thisOb = this;
    if(thisOb.parent().is('.checkbox')){
        var par = thisOb.parent();

        if($(this).is(':checked')){
            par.addClass('checked');
        }else {
            par.removeClass('checked');
        }

        thisOb.on('change', function(){
            if($(this).is(':checked')){
                $(this).parent().addClass('checked');
            }else {
                $(this).parent().removeClass('checked');
            }
        });
    }
    return thisOb;
}

$.fn.styledRadio_connect = function(){

    var thisOb = this;
    if(thisOb.parent().is('.radio')){
        var par = thisOb.parent();

        if($(this).is(':checked')){
            par.addClass('checked');
        }else {
            par.removeClass('checked');
        }

        thisOb.on('change', function(){

            if($(this).is(':checked')){
                $(this).parent().addClass('checked');
            }else {
                $(this).parent().removeClass('checked');
            }
            if($(this).closest('form').length == 1){
                // falls andere im gleichen form sind
                $(this).closest('form').find('input[type="radio"][name="'+ $(this).attr('name') +'"]').each(function(){
                    if($(this).is(':checked')){
                        $(this).parent().addClass('checked');
                    }else {
                        $(this).parent().removeClass('checked');
                    }
                });
            }

        });
    }
    return thisOb;
}




/* ########## touchAttr (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    $.touchAttr_connect();
});
</script>
*/

$.touchAttr_connect = function(){
    // $.touchAttr_connect();

    var bodyOB = $('body');

    var bindTouchHandler = true;

    try {
        if (typeof localStorage !== 'undefined') {
            if (typeof localStorage.getItem('e2_touchDevice') !== 'undefined' && localStorage.getItem('e2_touchDevice') == 'true'){
                bodyOB.attr('data-touch', 'on');
                bindTouchHandler = false;
            }
        }
    } catch(e) {
        // fehlerfall..
    }

    if(bindTouchHandler){

        $(window).one('touchstart MSPointerDown', function(){
            bodyOB.attr('data-touch', 'on');

            try {
                if (typeof localStorage !== 'undefined') {
                    localStorage.setItem('e2_touchDevice', 'true');
                }
            } catch(e) {
                // fehlerfall..
            }

            document.cookie = 'e2_touchDevice=true;path=/';

        });
    }

    return this;
}




/* ########## elayer (copyright e2see.de) ##########
<script>
    $(document).ready(function(){
        $.elayer({
                closeText : 'schließen',
                prevText  : 'zurück',
                nextText  : 'vor',
                selector  : 'ul a',
                });


        $('ul.elayer li a').each(function(){
            elayerFunc.addElem($(this));
        });
    


    });




</script>
*/

$.elayer = function(options){


    var elayerSettings = $.extend({
        imageMimes:   'webp,png,jpg,jpeg,gif,bmp,ogg,xvid,avi',
        videoMimes:   'mp4,xvid,avi',
        audioMimes:   'mp3,wav,ogg',
        excludeMimes: 'ini,woff,otf,ttf,zip,7z,rar,iso,lnk',
        prevText:     'prev',
        nextText:     'next',
        zoomText:     'Zum Vergrößern doppelklicken',
        closeText:    'close',
        zoomFactor:   2.5,
        selector:     'a.elayer, .elayer a',
    }, options );

    $('body').children('#elayer').remove();

    $('body').attr('data-elayer','closed').append('<div id="elayer">\
    <div id="elayer_control-container">\
        <div id="elayer_control">\
            <a href="#prev">'+elayerSettings.prevText+'</a><a href="#next">'+elayerSettings.nextText+'</a><a href="#close">'+elayerSettings.closeText+'</a>\
        </div>\
        <div id="elayer_progress" style="width: 70%;height: 70%;"></div>\
    </div>\
    <div id="elayer_main">\
        <div id="elayer_content_close"></div>\
        <div id="elayer_content">\
            <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="elayer image" />\
        </div>\
    </div>\
    </div>').addClass('elayer-desc-on');

    elayerOBs = {
        body: $('body'),
        self: $('#elayer')
    };
    elayerOBs.prev     = elayerOBs.self.find('a[href="#prev"]');
    elayerOBs.next     = elayerOBs.self.find('a[href="#next"]');
    elayerOBs.info     = elayerOBs.self.find('a[href="#info"]');
    elayerOBs.download = elayerOBs.self.find('a[href="#download"]');
    elayerOBs.close    = elayerOBs.self.find('a[href="#close"]');
    elayerOBs.progress = elayerOBs.self.find('#elayer_progress');

    elayerOBs.main     = elayerOBs.self.find('#elayer_main');
    elayerOBs.content  = elayerOBs.main.find('#elayer_content');
    elayerOBs.contentClose  = elayerOBs.main.find('#elayer_content_close');

    elayerOBs.acItem     = false;
    elayerOBs.prevItem   = false;
    elayerOBs.nextItem   = false;
    elayerOBs.targetItem = false;
    elayerOBs.timerDT    = false;


    elayerFunc = {
        savePlayed: function(){


                if(elayerOBs.targetItem && elayerOBs.targetItem.is('video, audio') && elayerOBs.acItem){

                    var time = elayerOBs.targetItem[0].currentTime;
                    if(time < 4){
                        time = 0;
                    }

                    elayerOBs.acItem.attr('data-elayer-played', parseFloat(time).toFixed(1));
                }
            },
        readPlayed: function(){
                if(elayerOBs.targetItem && elayerOBs.targetItem.is('video, audio') && elayerOBs.acItem.is('[data-elayer-played]')){
                    elayerOBs.targetItem[0].currentTime = parseFloat(elayerOBs.acItem.attr('data-elayer-played')) - 2;
                }

            },


        close: function(time){


                elayerFunc.savePlayed();
                elayerOBs.body.attr('data-elayer', 'closed').attr('data-elayer-zoom', '');
                elayerOBs.body.removeAttr('data-elayer-media-type');

                var cacheItm = elayerOBs.acItem;
                elayerOBs.acItem = false;
                setTimeout(function(){
                    if(!cacheItm.is(elayerOBs.acItem)){
                        cacheItm.attr('data-elayer', '');
                    }
                },400);

                elayerOBs.targetItem.remove();
                elayerOBs.targetItem = false;


            },
        zoomIn: function(){


                var boxW  = parseInt(elayerOBs.content[0].clientWidth) - ( parseInt(elayerOBs.content.css('padding-left')) +  parseInt(elayerOBs.content.css('padding-right')));
                var boxH  = parseInt(elayerOBs.content[0].clientHeight) - ( parseInt(elayerOBs.content.css('padding-top')) +  parseInt(elayerOBs.content.css('padding-bottom')));
                var elemW = parseInt(elayerOBs.targetItem[0].offsetWidth) * elayerSettings.zoomFactor;
                var elemH = parseInt(elayerOBs.targetItem[0].offsetHeight) * elayerSettings.zoomFactor;

                elayerOBs.body.attr('data-elayer-zoom', 'loading');

                elayerOBs.targetItem.attr('style', 'height:' + elemH + 'px; width:' + elemW +'px; max-height: none; max-width: none;' );
                setTimeout(function(){
                    elayerOBs.content.scrollLeft( (elemW - boxW) / 2);
                    elayerOBs.content.scrollTop( (elemH - boxH) / 2);
                    elayerOBs.body.attr('data-elayer-zoom', 'in');
                },5);
                setTimeout(function(){
                    elayerOBs.content.scrollLeft( (elemW - boxW) / 2);
                    elayerOBs.content.scrollTop( (elemH - boxH) / 2);

                },20);


            },
        zoomOut: function(){

                elayerOBs.body.attr('data-elayer-zoom', 'loading');
                elayerOBs.targetItem.removeAttr('style');
                setTimeout(function(){
                    elayerOBs.body.attr('data-elayer-zoom', 'out');
                },5);

            },
        showZoominfo: function(){

                if (typeof localStorage !== 'undefined') {
                    // zoom info fenster
                    var d = new Date();
                    var nowTime  = d.getTime();
                    var lastTime = false;
                    if (typeof localStorage.getItem('elayer_zoominfotime') !== 'undefined'){
                        lastTime = localStorage.getItem('elayer_zoominfotime');
                    }
                    if(lastTime == false || nowTime - lastTime > (5 * 60 * 1000)){
                        elayerOBs.main.prepend('<div id="elayer_zoom-info">'+elayerSettings.zoomText+'</div>');
                        var infoLayer = elayerOBs.main.children('#elayer_zoom-info').eq(0);
                        setTimeout(function(){
                            infoLayer.remove();
                        }, 3000);
                        localStorage.setItem('elayer_zoominfotime', nowTime);
                    }
                }
            },
        generateSelector: function(seperatet){

                        var ret = false;

                        var prefix  = '[href*=".';
                        var suffix = '"]';
                        var res  = seperatet.toLowerCase().split(',');
                        var resU = seperatet.toUpperCase().split(',');

                        if (res.length > 0){
                            ret = prefix + res.join(suffix +','+ prefix) + suffix;
                            ret = ret + ',' +prefix + resU.join(suffix +','+ prefix) + suffix;
                        }

                        return ret;


            },
        openItem: function(itm){

                        elayerFunc.savePlayed();

                        if(elayerOBs.targetItem){
                            // war offen;
                            elayerOBs.targetItem.remove();
                            elayerOBs.targetItem = false;

                        }

                        elayerOBs.acItem = itm;
                        elayerOBs.acItem.attr('data-elayer', 'loading');
                        elayerOBs.body.attr('data-elayer', 'loading').removeAttr('data-elayer-zoom');

                        var mediaType = 'data';
                        var isInline  = false;
                        if (elayerOBs.acItem.is('[href^="data:image"]')){
                            mediaType = 'image';
                            isInline  = true;
                        } else {
                            var selector = elayerFunc.generateSelector(elayerSettings.imageMimes);
                            if (selector && elayerOBs.acItem.is(selector)){
                                mediaType = 'image';
                            } else {
                                var selector = elayerFunc.generateSelector(elayerSettings.audioMimes);
                                if (selector && elayerOBs.acItem.is(selector)){
                                    mediaType = 'audio';
                                } else {
                                    var selector = elayerFunc.generateSelector(elayerSettings.videoMimes);
                                    if (selector && elayerOBs.acItem.is(selector)){
                                        mediaType = 'video';
                                    }
                                }
                            }
                        }

                        elayerOBs.body.attr('data-elayer-media-type', mediaType);

                        var clickedMediaUrl = elayerOBs.acItem.attr('href');
                        var t_start = Date.now();


                        elayerOBs.prevItem    = false;
                        elayerOBs.nextItem    = false;
                        stopPrev        = false;
                        startNext       = false;

                        if (elayerOBs.acItem.is('[data-elayer-group]')){
                            var groupName = elayerOBs.acItem.attr('data-elayer-group');
                            var itms = elayerOBs.body[0].querySelectorAll('a[data-elayer-group="'+groupName+'"]');

                        } else if (elayerOBs.acItem.closest('[data-elayer-group=""]').length == 1){
                            var $cont = elayerOBs.acItem.closest('[data-elayer-group=""]');
                            var itms  = $cont[0].querySelectorAll('a[data-elayer]');

                        }


                        if(itms !== undefined && itms.length > 1){

                             var index = 0;
                             for( index = 0; index < itms.length; index++ ) {
                                var $el = $(itms[index]);

                                $el.attr('data-elayer', '');
                                if (elayerOBs.acItem.is($el)){
                                    stopPrev = true;
                                    startNext = true;
                                    myI = index;
                                } else if (stopPrev == false && elayerOBs.acItem.is($el) == false){
                                    elayerOBs.prevItem = $el;
                                } else if (startNext == true && elayerOBs.acItem.is($el) == false){
                                    elayerOBs.nextItem = $el;
                                    startNext = false;
                                }
                             }
                             var perc = (myI + 1) / itms.length * 100;

                             elayerOBs.progress.show().css('width', perc+'%').css('height', perc+'%');

                        } else {
                            elayerOBs.progress.hide();
                        }


                        if (elayerOBs.prevItem == false){
                            elayerOBs.prev.attr('data-elayer-status', 'inactive');
                        } else {
                            elayerOBs.prev.attr('data-elayer-status', 'loading');
                        }

                        if (elayerOBs.nextItem == false){
                            elayerOBs.next.attr('data-elayer-status', 'inactive');
                        } else {
                            elayerOBs.next.attr('data-elayer-status', 'loading');
                        }


                        setTimeout(function(){
                            if (elayerOBs.prevItem != false){
                                elayerOBs.prev.attr('data-elayer-status', '');
                            }
                            if (elayerOBs.nextItem != false){
                                elayerOBs.next.attr('data-elayer-status', '');
                            }
                        }, 100);


                        if (mediaType == 'audio'){
                            elayerOBs.content.html('<audio src="'+ clickedMediaUrl +'" controls autoplay></audio>');

                        } else if (mediaType == 'video'){
                            elayerOBs.content.html('<video src="'+ clickedMediaUrl +'" controls autoplay></video>');

                        } else if(mediaType == 'image') {
                            elayerOBs.content.html('<img src="'+ clickedMediaUrl +'">');

                            elayerFunc.showZoominfo();


                        } else {

                            var isYt = clickedMediaUrl.includes('youtube.com/watch?v=');

                            if(isYt){
                                elayerOBs.content.html('<iframe width="560px" height="315px" src="'+ clickedMediaUrl.replace('youtube.com/watch?v=', 'youtube.com/embed/') +'" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>');
                            } else {
                                elayerOBs.content.html('<iframe src="'+ clickedMediaUrl +'"></iframe>');
                            }

                        }

                        var minimumWait = 250;


                        elayerOBs.targetItem = elayerOBs.content.children('*').eq(0);

                        if (mediaType == 'video' || mediaType == 'audio'){

                            elayerFunc.fadeInItem( minimumWait );

                            elayerOBs.targetItem.off('ended.elayer').on('ended.elayer', function(){
                                $(this)[0].currentTime = 0;
                            });


                        } else if(mediaType == 'image') {


                            elayerOBs.targetItem.off('load.elayer').on('load.elayer', function(){

                                    var t_end       = Date.now();
                                    var t_duration  = parseInt(t_end  - t_start);

                                    if (t_duration < minimumWait){
                                        var time = minimumWait - t_duration;
                                    } else {
                                        var time = 20;
                                    }

                                    elayerFunc.fadeInItem(time);

                            });
                        } else {
                            elayerFunc.fadeInItem( minimumWait );
                        }
                        return false;
            },
        fadeInItem: function(time){

                    // kommt nur rein wenn das lement auch geladen wurde

                    setTimeout(function(){

                        elayerFunc.readPlayed();

                        elayerOBs.body.attr('data-elayer', 'show');
                        elayerOBs.acItem.attr('data-elayer', 'show');

                        /*downloadlink*/
                        var li = elayerOBs.acItem.closest('li');
                        if (li.length == 1){
                            var aDown = li.find('a[download]');
                            if (aDown.length == 1){
                                elayerOBs.download.attr('href', aDown.attr('href')).attr('download', aDown.attr('download')).attr('data-elayer-status', '');
                            }
                        }
                    },time);

            },
        addElem: function($el){

                    if ($el.is('a[href]') && !$el.is('[download]')){
                        $el.attr('data-elayer', '').off('click.elayer').on('click.elayer',function(){
                                elayerFunc.openItem($(this));
                                return false;
                        });
                    }

            }


    };

    elayerOBs.content.on('click.elayer touchend.elayer', function(){

        if(elayerOBs.body.is('[data-elayer-zoom="loading"]')){

        } else {

            var dt  = false;
            var now = new Date().getTime();
            var timesince = now - elayerOBs.timerDT;
            if((timesince < 440) && (timesince > 4)){
                dt = true;
            }

            elayerOBs.timerDT = new Date().getTime();

            if(dt && elayerOBs.body.is('[data-elayer-zoom="in"]')){
                elayerFunc.zoomOut();
                elayerOBs.timerDT = false;
            } else if(dt) {
                elayerFunc.zoomIn();
                elayerOBs.timerDT = false;
            }
        }
        return false;
    });

    elayerOBs.prev.on('click.elayer', function(){
        if (elayerOBs.prevItem != false && elayerOBs.prev.is('[data-elayer-status=""]')){
            elayerOBs.prevItem.trigger('click');
        }
        return false;
    });

    elayerOBs.next.on('click.elayer', function(){
        if (elayerOBs.nextItem != false && elayerOBs.next.is('[data-elayer-status=""]')){
            elayerOBs.nextItem.trigger('click');
        }
        return false;
    });

    elayerOBs.close.on('click.elayer', function(){
        elayerFunc.close();
        return false;
    });

    elayerOBs.contentClose.on('click.elayer', function(){
         elayerFunc.close();
         return false;
    });

    $(document).off('keydown.elayer').on('keydown.elayer', function(event){
        if (elayerOBs.body.is('[data-elayer="show"], [data-elayer="loading"]')){
            if (event.keyCode == 37) {
                elayerOBs.prev.trigger('click');
                return false;
            } else if (event.keyCode == 8) {
                elayerOBs.prev.trigger('click');
                return false;
            }else if (event.keyCode == 39 || event.keyCode == 32) {
                elayerOBs.next.trigger('click');
                return false;
            }else if (event.keyCode == 27) {
                elayerOBs.close.trigger('click');
                return false;
            }
        }
    });


    var selectorExcl = elayerFunc.generateSelector(elayerSettings.excludeMimes);


    var itms = elayerOBs.body[0].querySelectorAll(elayerSettings.selector);
    var index = 0;

    for( index = 0; index < itms.length; index++ ) {
        var $el = $(itms[index]);
        if (selectorExcl == false || !$el.is(selectorExcl)){
            if ($el.is('a[href]') && !$el.is('[download]')){
                elayerFunc.addElem($el);
            }
        }
    }


}




/* ########## countinput (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    $('input').countinput_connect();
});
</script>

<input type="text" value="" maxlength="16" maxlength-soft="10" />
*/

$.fn.countinput_connect = function(){
    var OB = this;

    OB.on('input', function(){
            if($('body').children("#count-input_container").length == 0){
                $('body').append('<div id="count-input_container"></div>');
            }

            var position_x = parseInt($(this).offset().left + 3);
            var position_y = parseInt($(this).offset().top -14);
            $('body').children('#count-input_container').css({
                        top: position_y +'px',
                        left: position_x +'px',
                        }).show();

            var value = $(this).val();
            var text = value.length;

            if($(this).is('[maxlength]')){
                max_length = parseInt($(this).attr('maxlength'));
                if(text > max_length){
                    text = max_length;
                    $(this).val(value.substring(0, max_length));
                }
                text = text + ' / ' + max_length;
            } else if($(this).is('[maxlength-soft]')){
                max_length = parseInt($(this).attr('maxlength-soft'));
                /*
                if(text > max_length){
                    text = max_length;
                    $(this).val(value.substring(0, max_length));
                }
                */
                text = text + ' / ' + max_length;
            }
            $('body').children('#count-input_container').text(text);
    });

    OB.on('blur', function(){
            $('body').children("#count-input_container").remove();
    });

}




/* ########## scrollToElem (copyright e2see.de) ##########
<script>
$(document).ready(function(){
    $('div').scrollToElem({
                duration   :200,
                topOffset  :20,
                afterScroll: function(){ alert('scrolled'); },
                });
});
</script>
*/

$.fn.scrollToElem = function(options) {
    /*
    $('div').scrollToElem({
                contextSelector :'#sidebar',
                duration   :200,
                topOffset  :70,
                afterScroll: function(){ myname() },
                });
                */

    elem = this;

    var settings = $.extend({
                        contextSelector :'html, body',
                        delay       :0,
                        duration    :400,
                        topOffset   :68,
                        ifNeeded    :false,
                        afterScroll :function(){}
                        }, options);


    settings.topOffset = parseInt(settings.topOffset);
    settings.duration  = parseInt(settings.duration);

    if (isNaN(settings.duration) || settings.duration < 0 || settings.duration > 999999){
        settings.duration = 400;
    }
    if (isNaN(settings.topOffset) || settings.topOffset < 0 || settings.topOffset > 999999){
        settings.topOffset = 68;
    }

    //zielpixel höher anvisieren;
    setTimeout(function(){


        if(settings.contextSelector !== 'html, body'){
            var container = $(settings.contextSelector);
            var elemPos   = elem[0].offsetTop;
        } else {
            var container = $(window);
            var elemPos   = elem.offset().top;
        }

        var needed    = true;
        var scrollPos = container.scrollTop();
        var targetPos = elemPos - settings.topOffset;


        // aber nicht höher als 0 ;)
        if (targetPos < 0){
            targetPos = 0;
        }

        if (settings.ifNeeded){
            var elemHeight      = elem.outerHeight();
            var containerHeight = container.height();

            if (
                (elemHeight + elemPos) > (scrollPos + containerHeight - 20)
                ||
                ((scrollPos + settings.topOffset) > targetPos)
            ){
                needed = true;
            } else {
                needed = false;
            }

        }


       // console.log('elemPos: '+ elemPos +' scrollPos '+ scrollPos +' targetPos: '+ targetPos);

        if (needed){

            if (targetPos == scrollPos){
                // wenn nix zum scrollen
                settings.duration = 0;

            } else if (
                (targetPos >= scrollPos && targetPos <= (scrollPos + 10))
                ||
                (targetPos <= scrollPos && targetPos >= (scrollPos - 10))
                && settings.duration > 50
            ){
                // wenn zu wenig zum scrollen
                settings.duration = 50
            }



                container.trigger('scrollToElem.beforeScroll', {
                                                                pos:     targetPos
                                                                });
                $(settings.contextSelector).animate({
                                    scrollTop:  targetPos,
                                },
                                parseInt(settings.duration)
                                ).promise().then(function(){

                                    container.trigger('scrollToElem.afterScroll', {
                                                                pos:     targetPos
                                                                });

                                    settings.afterScroll.call();
                                });

        }

    }, settings.delay);

    return this;
}





/* cdn 9ms */