﻿/* Ver 1.00 */


/* ------------------------------------------------------------- */
/* beliebige Zentrierung eines Bildes um ein umschließendes Element */
/* ------------------------------------------------------------- */
/* WICHTIG: bei dem umschleißenden Element muss im Style-Tag die Höhe und Breite vorgegeben werden */
function CenterImage(pImage) {

    var tParentElement = pImage.parentNode
    var tParentElementWidth = (getStyle(tParentElement, "width").split("px")[0]).split(" ")[0]
    var tParentElementHeight = (getStyle(tParentElement, "height").split("px")[0]).split(" ")[0]

    if ((tParentElementWidth > 0) && (tParentElementHeight > 0)  ) {

        var tmarginLeft = 0
        var tmarginTop = 0

        if (pImage.width > pImage.height) {

            pImage.width = tParentElementWidth


            /*berechnen des Abstandes vom Rand
            ACHTUNG: Höhe des Bildes ändert sich nach zuvoriger Breitenänderung mit!
            */

            tmarginTop = (tParentElementHeight - pImage.height) / 2

            /* abfangen des Fehlers dass das Bild höher ist als das umschließende Element*/
            if (pImage.height > tParentElementHeight) {
                var faktor = tParentElementHeight / pImage.height
                pImage.width = pImage.width * faktor
                pImage.height = tParentElementHeight
            }


            /* abfangen des Fehlers wenn Bild breiter ist als das umschließende Element*/
            if (tmarginTop < 0) {
                pImage.width = pImage.width + (tmarginTop * 2)
                tmarginTop = 0
                tmarginLeft = (tParentElementWidth - pImage.width) / 2
            }

        } else {
            pImage.height = tParentElementHeight

            /*berechnen des Abstandes vom Rand
            ACHTUNG: Breite des Bildes ändert sich nach zuvoriger Höhenänderung mit!
            */
            tmarginLeft = (tParentElementWidth - pImage.width) / 2

            /* abfangen des Fehlers dass das Bild breiter ist als das umschließende Element*/
            if (pImage.width > tParentElementWidth) {
                var faktor = tParentElementWidth / pImage.width
                pImage.height = pImage.height * faktor
                pImage.width = tParentElementWidth
            }

            /* abfangen des Fehlers wenn Bild breiter ist als das umschließende Element*/
            if (tmarginLeft < 0) {
                /* abfangen das die Höhe nicht 0 wird wenn das Element rechteckig ist */
                if (pImage.height != pImage.width) {
                    pImage.height = pImage.height + (tmarginLeft * 2)
                }
                tmarginLeft = 0
                tmarginTop = (tParentElementHeight - pImage.height) / 2
            }

        }
        /* setzen des Abstandes vom Rand des umschließendem elementes */
        pImage.style.marginTop = tmarginTop + "px"
        pImage.style.marginLeft = tmarginLeft + "px"
        pImage.style.visibility = "visible";
    }
}

/* ------------------------------------------------------------- */
/* gibt von einen HTML-Element eine Layout-Eigenschaft wieder    */
/* ------------------------------------------------------------- */
/*<param>oElem</param> HTML-Objekt */
/*<param>strCssRule</param> Eigenschaft die von dem der Wert zurückgegeben werden soll */

function getStyle(oElm, strCssRule) {
    var strValue = "";
    if (document.defaultView && document.defaultView.getComputedStyle) {
        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
    }
    else if (oElm.currentStyle) {
        strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) {
            return p1.toUpperCase();
        });
        strValue = oElm.currentStyle[strCssRule];
    }
    return strValue;
}

