
function get_test_for_zoom_div() {
    var testdiv = document.getElementById("test_for_zoom_div");
    if (testdiv == undefined) {
        $('body').append('<div id="test_for_zoom_div"></div>');
        $('#test_for_zoom_div')
            .css('visibility','hidden')
            .css('z-index','-7')
            .css('position','absolute')
            .css('height','1000px')
            .css('width','1000px')
            .css('top','0px')
            .css('left','0px');
        }
    testdiv = document.getElementById("test_for_zoom_div");
    return testdiv;
}

function adjust_page_layout() {
    var h = document.getElementById('header');
    var l = document.getElementById('leftbar');
    var r = document.getElementById('rightbar');
    var f = document.getElementById('footer');
    var m = document.getElementById('main');
    var window_width = $(window).width();
    var window_height = $(window).height();
    var n;
    if ($.browser.msie || $.browser.opera) {
        var testdiv = get_test_for_zoom_div();
        var rect = testdiv.getBoundingClientRect();
        var rect_width = rect.right - rect.left;
        var rect_height = rect.bottom - rect.top;
        if (rect_width > 90 * 1000) return; // IE7 bug
        if (rect_width != testdiv.offsetWidth || rect_height != testdiv.offsetHeight) {
            var zoom_w = rect_width / testdiv.offsetWidth;
            var zoom_h = rect_height / testdiv.offsetHeight;
            window_width = parseInt(window_width / zoom_w);
            window_height = parseInt(window_height / zoom_h);
            } 
        }
    var left_width = 0;
    var middle_width = 0;
    var right_width = 0;
    var top_height = 0;
    var middle_height = 0;
    var bottom_height = 0;
    if (l != undefined && l.style.display != 'none')
        left_width = l.offsetWidth;
    if (r != undefined && r.style.display != 'none')
        right_width = r.offsetWidth;
    middle_width = window_width - left_width - right_width;
    if (h != undefined && h.style.display != 'none')
        top_height = h.offsetHeight;
    if (f != undefined && f.style.display != 'none')
        bottom_height = f.offsetHeight;
    middle_height = window_height - top_height - bottom_height;
    if (h != undefined) {
        h.style.width = window_width + 'px';
        }
    if (l != undefined) {
        l.style.height = middle_height + 'px';
        l.style.top = top_height + 'px';
        }
    if (r != undefined) {
        r.style.height = middle_height + 'px';
        r.style.top = top_height + 'px';
        r.style.left = (left_width + middle_width) + 'px';
        }
    if (f != undefined) {
        f.style.width = window_width + 'px';
        f.style.top = (top_height + middle_height) + 'px';
        }
    if (m != undefined) {
        m.style.width = middle_width + 'px';
        m.style.height = middle_height + 'px';
        m.style.left = left_width + 'px';
        m.style.top = top_height + 'px';
        }
    }

function print_version(content_width) {
    var h = document.getElementById('header');
    var l = document.getElementById('leftbar');
    var r = document.getElementById('rightbar');
    var f = document.getElementById('footer');
    var m = document.getElementById('main');
    var p = document.getElementById('print_version_dialog');
    if (h != undefined)
        h.style.display = 'none';
    if (l != undefined)
        l.style.display = 'none';
    if (r != undefined)
        r.style.display = 'none';
    if (f != undefined)
        f.style.display = 'none';
    if (m != undefined) {
        m.style.width = content_width;
        m.style.height = '';
        m.style.left = '0px';
        m.style.top = '0px';
        }
    p.style.display = 'block';
}

function back_from_print_version() {
    var h = document.getElementById('header');
    var l = document.getElementById('leftbar');
    var r = document.getElementById('rightbar');
    var f = document.getElementById('footer');
    var p = document.getElementById('print_version_dialog');
    if (h != undefined)
        h.style.display = 'block';
    if (l != undefined)
        l.style.display = 'block';
    if (r != undefined)
        r.style.display = 'block';
    if (f != undefined)
        f.style.display = 'block';
    p.style.display = 'none';
    adjust_page_layout();
}
    
function test_for_zoom() {
    var old_window_width = 0;
    var old_div_width = 0;
    if ($.browser.msie || $.browser.opera) {
        setInterval(function() {
            var rect = get_test_for_zoom_div().getBoundingClientRect();
            var new_window_width = $(window).width();
            var new_div_width = rect.right - rect.left;
            if (old_window_width != new_window_width || old_div_width != new_div_width) {
                old_window_width = new_window_width;
                old_div_width = new_div_width;
                adjust_page_layout(); } }, 500); 
                }
    }

var change_font_size_default = '';
function change_font_size(mode) {
    var zoom_factor = 1.1;
    if (mode == 'init') {
        change_font_size_default = $('body').css('font-size');
        var saved_size = $.cookie("body_font_size");
        if (saved_size != undefined && saved_size.length > 0) {
            $('body').css('font-size', saved_size);
            adjust_page_layout(); } }
    else if (mode == 'normal' && change_font_size_default.length > 0) {
        $('body').css('font-size', change_font_size_default);
        adjust_page_layout(); }
    else if (mode == 'save') {
        if ($('body').css('font-size') == change_font_size_default)
            $.cookie("body_font_size", null);
        else
            $.cookie("body_font_size", $('body').css('font-size')); }
    else {        
        var currentSize = $('body').css('font-size');
        var num = parseFloat(currentSize);
        var unit = currentSize.slice(-2);
        if (mode == 'smaller')
            num = num / zoom_factor;
        else if (mode == 'bigger') 
            num = num * zoom_factor;
        if (num > 9.9 && num < 99.0) {
            $('body').css('font-size', num + unit);
            adjust_page_layout(); } }
}        
function change_font_size_dialog(mode) {
    if (mode == 'open')
        $('#change_font_size_dialog').css('display', 'block');
    else
        $('#change_font_size_dialog').css('display', 'none'); }

$(window).load(adjust_page_layout);
$(window).load(function() { change_font_size('init'); });
$(window).resize(adjust_page_layout);
$(window).load(test_for_zoom);


// Menu
///////

function display_leftmenu(caller, force_onoff) {
    var menublock = $(caller).parent().find('div.leftmenublock');
    var showit;
    if (force_onoff)
        showit = (force_onoff == 'on');
    else 
        showit = (menublock.css('display') == 'none');
    $('div.leftmenublock').css('display', 'none');
    if (showit)
        menublock.css('display', 'block');
    adjust_page_layout();
}

