var gTextResizer = {
    factor: 1.1, 
    minFontSize: 10, 
    maxFontSize: 16, 
    fontSize: 0, 
    currentFontSize: 0, 
    unit: '', 
    height: 0, 
    currentHeight: 0
};

function textResizer()
{
    var sAction = '';
    var dSize = 0;
    if (arguments.length > 1) {
        sAction = arguments[0];
        dSize = arguments[1];
    } else {
        sAction = this.id;
    }
    
    var height = 0;
    var $mainText = $('#contentPage');
    if (gTextResizer.currentFontSize == 0) {
        var currentSize = $mainText.css('font-size');
        gTextResizer.fontSize = parseFloat(currentSize, 10);
        gTextResizer.unit = currentSize.slice(-2);
        gTextResizer.currentFontSize = gTextResizer.fontSize; 
    }
    
    if (gTextResizer.height == 0) {
        var aContent = new Array('content', 'content_2cols', 'content_home');
        for (var i = 0; i < aContent.length; i++) {
            var $content = $('#' + aContent[i]);
            if ($content.length) {
                break;
            }
        }
        var h = 0;
        if ($content.length) {
            h = $content.height();
        }
        gTextResizer.height = Math.max($mainText.height(), h, $('#leftcol').height(), $('#rightcol').height());
        gTextResizer.currentHeight = gTextResizer.height;
    }
    
    var fDoSetCookie = true;
    switch (sAction) {
        case 'tsNormal':
            gTextResizer.currentFontSize = gTextResizer.fontSize;
            if (gTextResizer.currentHeight > gTextResizer.height) {
                $('#page').height(gTextResizer.height);
            }
            gTextResizer.currentHeight = gTextResizer.height;
            var sCtrl = 'tsBigger';
            var $ctrl = $('#' + sCtrl);
            if ($ctrl.hasClass(sCtrl + 'Off')) {
                $ctrl.bind('click', textResizer).css;
                $ctrl.toggleClass(sCtrl + 'On');
                $ctrl.toggleClass(sCtrl + 'Off');
            }
            sCtrl = 'tsSmaller';
            $ctrl = $('#' + sCtrl);
            if ($ctrl.hasClass(sCtrl + 'Off')) {
                $ctrl.bind('click', textResizer).css;
                $ctrl.toggleClass(sCtrl + 'On');
                $ctrl.toggleClass(sCtrl + 'Off');
            }
            break;
        case 'tsBigger':
            if (dSize) {
                gTextResizer.currentFontSize = dSize;
                fDoSetCookie = false;
            } else {
                gTextResizer.currentFontSize *= gTextResizer.factor;
            }
            if (gTextResizer.currentFontSize > gTextResizer.maxFontSize) {
                var $ctrl = $('#' + sAction);
                $ctrl.unbind('click', textResizer).css;
                $ctrl.toggleClass(sAction + 'On');
                $ctrl.toggleClass(sAction + 'Off');
            } else {
                if (gTextResizer.currentFontSize >= gTextResizer.minFontSize) {
                    var sCtrl = 'tsSmaller';
                    var $ctrl = $('#' + sCtrl);
                    if ($ctrl.hasClass(sCtrl + 'Off')) {
                        $ctrl.bind('click', textResizer).css;
                        $ctrl.toggleClass(sCtrl + 'On');
                        $ctrl.toggleClass(sCtrl + 'Off');
                    }
                }
            }
            break;
        case 'tsSmaller':
            if (dSize) {
                gTextResizer.currentFontSize = dSize;
                fDoSetCookie = false;
            } else {
                gTextResizer.currentFontSize /= gTextResizer.factor;
            }
            if (gTextResizer.currentFontSize < gTextResizer.minFontSize) {
                var $ctrl = $('#' + sAction);
                $ctrl.unbind('click', textResizer).css;
                $ctrl.toggleClass(sAction + 'On');
                $ctrl.toggleClass(sAction + 'Off');
            } else {
                if (gTextResizer.currentFontSize <= gTextResizer.maxFontSize) {
                    var sCtrl = 'tsBigger';
                    var $ctrl = $('#' + sCtrl);
                    if ($ctrl.hasClass(sCtrl + 'Off')) {
                        $ctrl.bind('click', textResizer).css;
                        $ctrl.toggleClass(sCtrl + 'On');
                        $ctrl.toggleClass(sCtrl + 'Off');
                    }
                }
            }
            break;
    }
    
    // set cookie if needed
    if (fDoSetCookie) {
        switch (sAction) {
            case 'tsNormal':
                oDate = 0;
                sCookieValue = null;
                break;
            default:
		        var oDate = new Date();
		        oDate.setTime(oDate.getTime() + (60 * 60 * 24 * 365 * 3 * 1000));
		        sCookieValue = sAction + ',' + gTextResizer.currentFontSize
                break;
        }
		$.cookie('ts', sCookieValue, { path: '/', expires: oDate });
    }
    
    
    // resize text
    $mainText.children().each( function (i, item) {
        var $item = $(item);
        $item.css('font-size', gTextResizer.currentFontSize + gTextResizer.unit);
        var $table = $item.children('table');
        if ($table.length) {
            $table.css('font-size', gTextResizer.currentFontSize + gTextResizer.unit);
        }
        var $h2 = $mainText.find('h2');
        if ($h2.length) {
            if (gTextResizer.currentFontSize == gTextResizer.fontSize) {
                $h2.css('font-size', (gTextResizer.currentFontSize + 1) + gTextResizer.unit);
            } else {
                $h2.css('font-size', gTextResizer.currentFontSize + gTextResizer.unit);
            }
        }
        height += $item.height();
    });
    height *= 1.1;
    if ((height > gTextResizer.currentHeight) || gTextResizer.currentHeight > gTextResizer.height) {
        $('#page').height(height);
        gTextResizer.currentHeight = height; 
    }
    return false;
}

function setTextResizer(resize)
{
    if (! resize) {
        var sNormal = 'Taille normale';
        var sSmaller = 'Réduire la taille du texte';
        var sBigger = 'Augmenter la taille du texte';
        switch ($('html').attr('lang')) {
            case 'de':
                sNormal = 'Schriftgrösse standard';
                sSmaller = 'Schriftgrösse verkleinern';
                sBigger = 'Schriftgrösse vergrössern';
                break;
        }
        $('#container').after('\
            <div id="textResizer">\
                <a id="tsNormal" class="textSize tsNormalOn" title="' + sNormal + '"><\/a>\
                <a id="tsSmaller" class="textSize tsSmallerOn" title="' + sSmaller + '"><\/a>\
                <a id="tsBigger" class="textSize tsBiggerOn" title="' + sBigger + '"><\/a>\
            <\/div>');
    }
    
    var $textResizer = $('#textResizer');
    if ($textResizer.length == 0) {
        return;
    }
    
    if (! resize) {
        $textResizer.children('a').click(textResizer);
    }
    var offsetX = -210 - 35;
    var $page = $('#page');
    if ($page.length == 0) {
        $page = $('#page_2cols');
        offsetX = 0;
    }
    var w1 = $page.parent().width();
    var w2 = $page.width();
    if (w1 && w2) {
        offsetX += (w1 - w2);
    }
    var p = $page.position();
    var x = p.left + $page.width() - 35 - $textResizer.width() + offsetX;
    var y = p.top - $textResizer.height() + $textResizer.height();
    $textResizer.css('left', x + 'px');
    $textResizer.css('top', y + 'px');
    
    if (arguments.length == 3) {
        textResizer(arguments[1], arguments[2]);
    }
}

function init()
{
    // IE6 fix
    if ($.browser.msie && parseInt($.browser.version) == 6) {
        $("#top").css('overflow', 'hidden');
    }
    
    $('a.zz').nospam({ replaceText: true });
};

