/**
 * @file    js/global.js
 *
 * copyright (c) 2006-2009 Frank Hellenkamp [jonas@depagecms.net]
 *
 * @author    Frank Hellenkamp [jonas@depagecms.net]
 */

// global helpers
// {{{ Modernizr()
window.Modernizr = function (a, b, c) {
    function z(a, b) {
        var c = a.charAt(0).toUpperCase() + a.substr(1),
            d = (a + " " + m.join(c + " ") + c).split(" ");
        return y(d, b)
    }
    function y(a, b) {
        for (var d in a) if (j[a[d]] !== c) return b == "pfx" ? a[d] : !0;
        return !1
    }
    function x(a, b) {
        return !!~ ("" + a).indexOf(b)
    }
    function w(a, b) {
        return typeof a === b
    }
    function v(a, b) {
        return u(prefixes.join(a + ";") + (b || ""))
    }
    function u(a) {
        j.cssText = a
    }
    var d = "2.0.6",
        e = {},
        f = b.documentElement,
        g = b.head || b.getElementsByTagName("head")[0],
        h = "modernizr",
        i = b.createElement(h),
        j = i.style,
        k, l = Object.prototype.toString,
        m = "Webkit Moz O ms Khtml".split(" "),
        n = {},
        o = {},
        p = {},
        q = [],
        r, s = {}.hasOwnProperty,
        t;
    !w(s, c) && !w(s.call, c) ? t = function (a, b) {
        return s.call(a, b)
    } : t = function (a, b) {
        return b in a && w(a.constructor.prototype[b], c)
    }, n.backgroundsize = function () {
        return z("backgroundSize")
    };
    for (var A in n) t(n, A) && (r = A.toLowerCase(), e[r] = n[A](), q.push((e[r] ? "" : "no-") + r));
    u(""), i = k = null, e._version = d, e._domPrefixes = m, e.testProp = function (a) {
        return y([a])
    }, e.testAllProps = z;
    return e
}(this, this.document);
// }}}

// replace content, depending on reader capabilities
// {{{ replaceEmailChars()
function replaceEmailChars(mail) {
    mail = unescape(mail);
    mail = mail.replace(/ \*at\* /g, "@");
    mail = mail.replace(/ \*dot\* /g, ".");
    mail = mail.replace(/ \*punkt\* /g, ".");
    mail = mail.replace(/ \*underscore\* /g, "_");
    mail = mail.replace(/ \*unterstrich\* /g, "_");
    mail = mail.replace(/ \*minus\* /g, "-");
    mail = mail.replace(/mailto: /, "mailto:");

    return mail;
}
// }}}
// {{{ replaceEmailRefs()
function replaceEmailRefs() {
    $("a[href*='mailto:']").each(function() {
        // replace attribute
        $(this).attr("href", replaceEmailChars($(this).attr("href")));
        
        //replace content if necessary
        if ($(this).text().indexOf(" *at* ") > 0) {
            $(this).text(replaceEmailChars($(this).text()));
        }
    });
}
// }}}
// {{{ replaceInteractiveContent()
function replaceInteractiveContent() {
    // {{{ get language from content tag in header
    var lang = $("html").attr("lang");
    // }}}
    // {{{ add click event for teaser
    $(".teaser").click( function() {
        document.location = $("a", this)[0].href;
    });
    // }}}
     
    if (!Modernizr.backgroundsize) {
        if ($.browser.msie && parseInt($.browser.version, 10) < 7) {
            // don't add for ie6 and lower
            return;
        }
        // no support - add background image as element
        var $back = $("#background");
        if ($back.length > 0) {
            var src = $back.css("backgroundImage").match(/(https?:\/\/.*\.(jpg|png|gif))/)[0].toString();

            $back.css({
                backgroundImage : "none"
            });

            var $img = $("<img src=\"" + src + "\">").appendTo($back);

            $(window).resize( resizeFullscreenImgs );
            $("#backgound img").load( resizeFullscreenImgs );
            resizeFullscreenImgs();
        }
    } else {
        $("html").addClass("HD");
    }
}
// }}}
// {{{ resizeFullscreenImgs()
function resizeFullscreenImgs() {
    var defaultW = 1600;
    var defaultH = 1200;

    var view = $(window);

    var areaH = view.height();
    var areaW = view.width();

    if (areaW / areaH < defaultW / defaultH) {
        var newH = areaH;
        var newW = Math.ceil(defaultW / defaultH * areaH);
    } else {
        var newH = Math.ceil(areaW * defaultH / defaultW);
        var newW = areaW;
    }
    
    var newML = (areaW - newW) / 2;
    var newMT = (areaH - newH) / 2;
    
    $("#background").css({
        height: areaH,
        width: areaW
    });
    $("#background img").css({
        left: newML,
        top: newMT,
        height: newH,
        width: newW
    });
}
// }}}

// {{{ register events
$(document).ready(function() {
    // replace content
    replaceEmailRefs();
    replaceInteractiveContent();

});
// }}}
    
/* vim:set ft=javascript sw=4 sts=4 fdm=marker : */

