/*
  © 2002 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 showFehler = true;
var showWarteFenster = true;
var warteFensterHoehe = 100;
var warteFensterBreite = 250;
var warteText = "<center><b>loading...!</b></center>";
var rahmenX = 10;
var rahmenY = 25;
var hinterGrundFarbe = '';

/////////////////////////////////////////////////////////////////////
// showBild(href, name) - die Hauptfunktion.
function showBild(href, name)
{
    // Das Fenster öffnen
    var name = href.target;

    if(!name) name = "bildFenster";
    if(!showFenster || showFenster.closed == true)
    if(showWarteFenster) showFenster = popUp("about:blank", name, warteFensterBreite, warteFensterHoehe);

    with(showFenster)
    {
        resizeTo(warteFensterBreite, warteFensterHoehe);
        with(document)
        {
            open();
            write(warteText);
            close();
        }
        focus();
    }

    // Das Bild laden
    var img = new Image();

    img.onload = openPopUp;
    if(showFehler) img.onerror = FEHLER;
    img.alt = name ? name : "Bild";
    img.src = href.href;
    img.target = name;
    return false;
}

/////////////////////////////////////////////////////////////////////
// Nach dem onload
function openPopUp()
{

    var w = this.width + rahmenX + 20;
    var h = this.height + rahmenY + 40;
    if(w < 100) w = 100;
    if(h < 100) h = 100;

    if(!showFenster || showFenster.closed == true)
    {
        showFenster = popUp("about:blank", this.target, w, h);
    }
    var NL = "\n";
    var text =
    '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">' + NL +
    '<html><head><title>' + this.alt  + '</title></head>' + NL +
    '<body style="padding:0; margin:0px;" bgcolor="'+ hinterGrundFarbe + '">' + NL +
    '<center><img src="' + this.src + '" alt="' + this.alt +'" border=0 vspace=10 ></center>' +
    '</body></html>';
  

    if(typeof showFenster.resizeTo != 'undefined')
    {
        showFenster.resizeTo(w, h);
    }
    else
    {
        showFenster.close();
        showFenster = popUp("about:blank", this.target, w, h);
    }
    showFenster.focus();
    with( showFenster.document)
    {
        open('text/html');
        write(text);
        close();
    }
}

/////////////////////////////////////////////////////////////////////
// Ein popup öffnen
function popUp(url, name, w, h)
{
    var tmp = new Array();
    if(w) tmp[tmp.length] = "width=" + w;
    if(h) tmp[tmp.length] = "height=" + h;    
    
    tmp[tmp.length] = 'resizable=yes';
    
    return window.open(url, name, tmp.join(','));
}
/////////////////////////////////////////////////////////////////////
// FEHLER handling
function FEHLER()
{
    var text = "Fehler !!!\n\n" +
    "Das Bild mit der URL:\n" + this.src + ".\n" +
    "konnte nicht geladen werden.";
    alert(text);
    closeAll();
}
/////////////////////////////////////////////////////////////////////
// Alle Fenster schliessen
function closeAll()
{
    if(showFenster && !showFenster.closed) showFenster.close();
    showFenster = null;
}
/////////////////////////////////////////////////////////////////////
// globale, nicht veränderbare Werte
var showFenster = null;

/////////////////////////////////////////////////////////////////////
// ... und am schluss alle Fenster schliessen.
window.onunload = closeAll;