/**
* Hinzufügen
* <script type="text/javascript" src="plugins/autolayer/autolayer.js"></script>
*
* Laden einer externen Seite:
* <a href="http://www.google.de" class="autolayer">click mich (Google outside)</a>
*
* ### Bei externen Seiten wird (falls gewünscht) die Breite und Höhe dem Link selbst mitgegeben, diese Werte werden später durch JS ausgeschnitten und dem Iframe gegeben, ansonsten ist es AUTO-Fenstergröße.
*
*
* Laden von internen Elementen
* <a href="#lightbox_one" class="autolayer">click mich (inside)</a><br/>
* <div id="lightbox_one" style="width: 60%">...</div>
*
* ### Die interne Box besteht aus einem Anker (#) die auf den DIV mit der selben id verweist.
* ### Bei internen Boxen wird die Breite und Höhe (falls gewünscht) der Box der Box selbst gegeben, ansonsten ist es AUTO-Fenstergröße.
*
*
*
*/
function getWindowDims() {
    var erg = {'x':600, 'y': 600};
    if (window.innerHeight) {
        erg.y=window.innerHeight;
        erg.x=window.innerWidth;
    } else if (document.compatMode && document.compatMode == "CSS1Compat") {
        erg.y=document.documentElement.clientHeight;
        erg.x=document.documentElement.clientWidth;
    } else if (document.body.clientHeight) {
        erg.y=document.body.clientHeight;
        erg.x=document.body.clientWidth;
    }
    return erg;
}



$('document').ready( function () {

    // Hinzufügen der CSS
    window.setTimeout(function () {
        var add_autoLayerLink = true;
        $('script').each(function() {
            var src = $(this).attr('src');
            if (src !== undefined && src !== undefined) {
                src = src.split('/');
                if (src[src.length-1] == 'autolayer.js') {
                    src.pop();
                    src.push('autolayer.css');
                    src = src.join('/');

                    $('link').each(function() {
                        if ($(this).attr('href') == src)
                            // 'plugins_i12/autolayer.css'
                            add_autoLayerLink = false;
                    });
                    if (add_autoLayerLink) {
                        $('head').append('<link rel="stylesheet" href="' + src + '" type="text/css" media="all" />');
                    }
                }
            }
        });
    }, 10);




    $('body').append('<div id="autolayer_alpha"></div>');
    $('a.autolayer').each(function ()  {
        var trigger = $(this);
        var href = trigger.attr('href');
        var regex = "^#([\\wäöüÄÖÜ\\-]*)$";
        var reg = new RegExp(regex);
        var erg = reg.exec(href);
        if (erg !== null) {
            ///////////////////////////////////////////////
            /////////////////////////////////////////////// DIV VERRSION

            var target = $("#" + erg[1]);

        //// DIMENSION AUSLESEN & CONTAINERBOX ERSTELLEN & VERSTECKEN
            $('body').append(target);

            $(target).addClass('autolayer_box');
            $(target).wrapInner('<div class="autolayer_box-inner" />');
            $(target).prepend('<div class="autolayer_box-close">schließen</div>');
            var div1 = target;
            var div2 = target.find(".autolayer_box-close");
            $(div1).hide();

            var d = getWindowDims();


            var xdim = 0.6 * d.x; // 60% breit als standard
            var w = target.width();
            if (w / d.x < 0.9) {
                xdim = w;
            }


            var ydim = target.css('height');



        //// BOX WIEDER "NORMALISIEREN" BZW ALLE ANDEREN STYLES LÖSCHEN
            target.attr('style','');

        //// LAYER SCHLIEßFUNKTION
            $("#autolayer_alpha").add(div2).click(function() {
                $(div1).stop().hide();
                $('#autolayer_alpha').stop().hide();;
            });



            $(div1).css('width', xdim + 'px');

            trigger.bind('click', function() {


                var diffpadh = parseInt($('.autolayer_box-inner').css('padding-top')) + parseInt($('.autolayer_box-inner').css('padding-bottom'));
                var diffpadw = parseInt($('.autolayer_box-inner').css('padding-right')) + parseInt($('.autolayer_box-inner').css('padding-left'));
                var diffborh = (parseInt(div1.css('border-top-width'))) + (parseInt(div1.css('border-bottom-width')));


                if (ydim != undefined && ydim != '' && 0 < parseInt(ydim)) {
                    $(div1).css('height', parseInt(ydim) + 'px');
                    $(div1).find('.autolayer_box-inner').css('height', $(div1).height() - diffpadh + 'px');
                }



                var w = $(div1).outerWidth();
                var h_outer = $(div1).outerHeight();
                var h_inner = $(div1).innerHeight();
                if (h_outer > d.y - 100 ) {
                    var in_out_diff = h_outer - h_inner;
                    var h_outer = d.y - 100;

                    $(div1).css('height', (h_outer - in_out_diff)  + 'px');
                    $(div1).find('.autolayer_box-inner').css('height', h_outer - in_out_diff - diffpadh + 'px');
                }

            //// ZENTRIERTE AUSRICHTUNG
                var top = (h_outer) / 2;
                var left = (w) / 2;
                $(div1).css('margin-top', -top +'px').css('margin-left', -left +'px');

            //// EINBLENDEN
                $(div1).show(1000);
                $('#autolayer_alpha').show();
                return false;
            });

        } else {
            ///////////////////////////////////////////////
            /////////////////////////////////////////////// IFRAME

            // FF FIX da sonst width and height gefälscht wird
            $(trigger).children('img').css({
                'position': 'absolute',
                'left': '0',
                'top': '0'
                });

            //// DIMENSION AUSLESEN
            var w_aref = trigger.css('width');
            var h_aref = trigger.css('height');

           /*
            var arefStyle = trigger.attr('style');
            var arefStyleReg = /height\s*:\s*(\d+)/gi;
            var gto = arefStyleReg.exec(arefStyle);
            if (gto != null) {
                h_aref = parseInt(gto[1]);
            }
            var arefStyleReg = /width\s*:\s*(\d+)/gi;
            var gto = arefStyleReg.exec(arefStyle);
            if (gto != null) {
                w_aref = parseInt(gto[1]);
            }
             */

            trigger.bind('click', function() {
            //// CONTAINERBOX ERSTELLEN
                var d = getWindowDims();
                var div1 = document.createElement("div");
                var class1 = document.createAttribute("class");
                class1.nodeValue = 'autolayer_box';
                div1.setAttributeNode(class1);
                document.getElementsByTagName('body')[0].appendChild(div1);

            //// CLOSE BUTTON ERSTELLEN
                var div2 = document.createElement("div");
                var class2 = document.createAttribute("class");
                class2.nodeValue = 'autolayer_box-close';
                div2.setAttributeNode(class2);
                div1.appendChild(div2);

            //// LINK WIEDER "NORMALISIEREN"
                trigger.css('width','auto');
                trigger.css('height','auto');



            //// CONTAINER BREITE FESTLEGEN
                var w = 0.8 * d.x + 'px';
                if (w_aref != undefined && w_aref != '' && 40 < parseInt(w_aref)) {
                    w = w_aref;
                }
                $(div1).css('width', w);


                var h = 0.8 * d.y +  'px';
                if (h_aref != undefined && h_aref != '' && 40 < parseInt(h_aref)) {
                    h = h_aref;
                }
                $(div1).css('height', h);

            //// LAYER SCHLIEßFUNKTION
                $("#autolayer_alpha").add(div2).click(function() {
                    $(div1).stop().hide();
                    $('#autolayer_alpha').stop().hide();
                });

            //// FRAME ERSTELLEN
                var iFrame = document.createElement("iframe");
                var frameBorder = document.createAttribute("frameborder");
                frameBorder.nodeValue = '0';
                iFrame.setAttributeNode(frameBorder);

                div1.appendChild(iFrame);

                var iDocument;
                if (iFrame.document !== undefined) {
                    iDocument = iFrame.document;
                }
                if (iFrame.contentDocument !== undefined) {
                    iDocument = iFrame.contentDocument;
                }
                if (iFrame.contentWindow !== undefined) {
                    iDocument = iFrame.contentWindow;
                }

                iDocument.document.location.href = href;

                $(div2).append('close');
                $(div2).bind('click', function() {
                    $(div1).remove();
                });

            //// ZENTRIERTE AUSRICHTUNG
                var w = $(div1).outerWidth();
                var h = $(div1).outerHeight();
                var top = (h) / 2;
                var left = (w) / 2;
                $(div1).css('margin-top', -top + 'px').css('margin-left', -left + 'px');

            //// EINBLENDEN
                $(div1).show(1000);
                $('#autolayer_alpha').show();

                return false;
            });
        }
    })
});


