/*
 © 2001 Struppi
 Mail: jstruebig@web.de
 URL: http://home.nexgo.de/struebig/js/popup.htm

 Beschreibung:
 -------------
 Ein Skript um ein Fenster in der Größe eines Bildes öffnen.

 Einbinden:
 ----------
 <script src="popup.js"></script>
 <A
    HREF="url_des_bildes"
    target="bild"
    onclick="return showBild(this, 'name_des_Bildes');"
 > <IMG SRC="url_des_kleinen_bildes"></A>

*/

///////////////////////////////////////////////////////////
// Globale Definitionen
var default_bgColor = 'white';
var default_width = 400;
var default_height = 200;
var rahmen_w = 0;
var rahmen_h = 0;

///////////////////////////////////////////////////////////
// showBild(a, name) - die Hauptfunktion.
function showBild(a)
{
    if(!a.target) a.target = "BildFenster";

    // Das Fenster öffnen
    isLoad = false;

    //if(showFenster && !showFenster.closed) showFenster.close();

    if(!showFenster || showFenster.closed) showFenster = popUp("", a.target, default_width, default_height);

    showFenster.document.open();
    showFenster.document.write( getHTML(a.href, a.title || a.alt) );
    showFenster.document.close();
    showFenster.focus();
    return false;
}
///////////////////////////////////////////////////////////
// fitWin(Image, window) - wird aus dem Popup aufgerufen.
var isLoad = false;

function fitWin(i, win)
{
    if(isLoad == true) return;
    isLoad = true;

    var w = i.width;
    var h = i.height;

    if(w < 100) w = 100;
    if(h < 100) h = 100;

    var size = getWinSize(win);

    win.resizeBy((w - size.w + rahmen_w), (h - size.h + rahmen_h) );
    win.focus();
}

/////////////////////////////////////////////////////////////////////
// getHTML(bild, titel, farbe)

function getHTML(src, title, bgcolor)
{
    var body = (window.opera || document.layers) ? false : true;

    if(!title) title = 'kein Titel';
    if(!bgcolor) bgcolor = default_bgColor;

    var text = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">\n'
    + '<HTML>\n<HEAD>\n'
    + '<TITLE>' + title + '</TITLE>\n'
    + '<STYLE type="text/css">\n'
     + 'body{margin:0;padding:0;overflow:hidden;\n' + 'background-color:' + bgcolor + ';}\n'
    + '#img{\nposition:absolute;top:0;left:0;margin:0;padding:0;overflow:hidden;\n}\n'
    + '</STYLE>\n'
    + '<script type="text/javascript">\n'
    + 'var img = new Image();\n'
    + 'img.onload = function(){opener.fitWin(this, window);};\n'
    + 'img.src = "' + src + '";\n'
    + '</script>\n'
    + '</HEAD>\n'
    + '<body>\n'
    + '<div id="img"><img src="' + src + '" alt="' + title + '"' + '></div>'
    + '\n</body>\n</html>\n'
    ;
    return text;
}
/////////////////////////////////////////////////////////////////////
// Ein popup öffnen
function popUp(url, fname, w, h)
{
    var tmp = new Array();
    tmp[tmp.length] = 'resizable=yes';
    tmp[tmp.length] = 'scrollbars=no';
    if(w) tmp[tmp.length] = 'width=' + w;
    if(h) tmp[tmp.length] = 'height=' + h;

    return window.open(url, fname, tmp.join(','));
}
////////////////////////////////////////////////////////////
// getWinSize(window)
function getWinSize(win)
{
    if(!win) win = window;
    var pos = {w:0,h:0};
    if(typeof win.innerWidth != 'undefined')
    {
        pos = { w: win.innerWidth, h: win.innerHeight};
    }
    else
    {
         var obj = checkIE(win);

         pos.w = parseInt(obj.clientWidth);
         pos.h = parseInt(obj.clientHeight);
    }
    return pos;
}
function checkIE(win)
{
    if(!win) win = window;
    return (win.document.compatMode && win.document.compatMode == "CSS1Compat") ?
    win.document.documentElement : win.document.body;
}
var showFenster = null;

/////////////////////////////////////////////////////////////////////
// ... und am schluss alle Fenster schliessen.
window.onunload = function ()
{
    if(showFenster && !showFenster.closed) showFenster.close();
}

