TextSizer = Object.extend({
    target_id   :    'content',
    size_diff   :    0,
    resize      :   
        function(inc){
            if((inc < 0 && TextSizer.size_diff < -4) || (inc > 0 && TextSizer.size_diff > 8))
                return;
            TextSizer.size_diff += inc;
            TextSizer.setCookie("textSize", TextSizer.size_diff, 10);
            if(!TextSizer.size_diff)
                window.location.reload(true);

            var target = $(TextSizer.target_id);
            var old_size = parseInt(target.getStyle('fontSize'));
            var old_height = parseInt(target.getStyle('lineHeight'));

            var element_sizes = {};
            var element_heights = {};
            target.descendants().each(
                function(obj){
                    element_sizes[obj] = parseInt(obj.getStyle('fontSize'));
                    element_heights[obj] = parseInt(obj.getStyle('lineHeight'));
                }
            );

            var new_size = old_size + inc + 'px';
            var new_height = old_height + inc + 'px';
            target.setStyle({ fontSize: new_size, lineHeight: new_height });

            target.descendants().each(
                function(obj){
                    var new_obj_size = element_sizes[obj] + inc;
                    var new_obj_height = element_heights[obj] + inc;
                    // obj.style.fontSize = new_obj_size + 'px';
                    // obj.style.font = new_obj_size + 'px';
                    // obj.style.lineHeight = new_obj_height + 'px';
                    obj.setStyle({ fontSize : new_obj_size + 'px', lineHeight: new_obj_height + 'px'});
                }
            );
            target.hide();
            target.show();
        },
    normalize   :
        function(){
            TextSizer.resize(-TextSizer.size_diff);
        },
    setCookie   :
        function(name, value, days){
            if (typeof days!="undefined")
            { //if set persistent cookie
                var expireDate = new Date();
                var expstring=expireDate.setDate(expireDate.getDate()+days);
                document.cookie = name+"="+value+"; path=/; expires="+expireDate.toGMTString();
            }
            else //else if this is a session only cookie
                document.cookie = name+"="+value;
        },
    getCookie   :
        function(Name){ 
            var re=new RegExp(Name+"=[^;]+", "i");
            if (document.cookie.match(re))
                return document.cookie.match(re)[0].split("=")[1];
            return null;
        },
    init    :
        function(){
            if(inc = parseInt(TextSizer.getCookie("textSize")))
                TextSizer.resize(inc);
        }

}, {});

Event.observe(window, 'load', TextSizer.init);
